@@ -60,22 +60,42 @@ def pytask_extend_command_line_interface(cli: click.Group) -> None:
6060 cli .commands ["build" ].params .extend (additional_parameters )
6161
6262
63+ def _parse_pdbcls (value : str ) -> tuple [str , str ]:
64+ """Parse and validate pdbcls string format."""
65+ split = value .split (":" )
66+ if len (split ) != 2 : # noqa: PLR2004
67+ msg = (
68+ f"Invalid 'pdbcls' format: { value !r} . "
69+ "Must be like 'IPython.terminal.debugger:TerminalPdb'"
70+ )
71+ raise ValueError (msg )
72+ return tuple (split ) # type: ignore[return-value]
73+
74+
6375def _pdbcls_callback (
6476 ctx : click .Context , # noqa: ARG001
6577 name : str , # noqa: ARG001
6678 value : str | None ,
6779) -> tuple [str , str ] | None :
6880 """Validate the debugger class string passed to pdbcls."""
69- message = "'pdbcls' must be like IPython.terminal.debugger:TerminalPdb"
70-
7181 if value is None :
7282 return None
73- if isinstance (value , str ):
74- split = value .split (":" )
75- if len (split ) != 2 : # noqa: PLR2004
76- raise click .BadParameter (message )
77- return tuple (split ) # type: ignore[return-value]
78- raise click .BadParameter (message )
83+ try :
84+ return _parse_pdbcls (value )
85+ except ValueError as exc :
86+ raise click .BadParameter (str (exc )) from exc
87+
88+
89+ @hookimpl
90+ def pytask_parse_config (config : dict [str , Any ]) -> None :
91+ """Parse the debugger configuration.
92+
93+ Convert pdbcls from string format to tuple if it comes from config file.
94+ When pdbcls comes from CLI, it's already converted by _pdbcls_callback.
95+ """
96+ pdbcls = config .get ("pdbcls" )
97+ if pdbcls and isinstance (pdbcls , str ):
98+ config ["pdbcls" ] = _parse_pdbcls (pdbcls )
7999
80100
81101@hookimpl (trylast = True )
0 commit comments