55import subprocess
66import types
77from pathlib import Path
8+ from typing import Any
9+ from typing import Callable
810
911from pytask import depends_on
1012from pytask import has_mark
1315from pytask import parse_nodes
1416from pytask import produces
1517from pytask import remove_marks
18+ from pytask import Session
1619from pytask import Task
1720from pytask_julia .serialization import SERIALIZERS
1821from pytask_julia .shared import julia
@@ -33,12 +36,15 @@ def run_jl_script(
3336
3437
3538@hookimpl
36- def pytask_collect_task (session , path , name , obj ):
39+ def pytask_collect_task (
40+ session : Session , path : Path , name : str , obj : Any
41+ ) -> Task | None :
3742 """Collect a task which is a function.
3843
3944 There is some discussion on how to detect functions in this `thread
40- <https://stackoverflow.com/q/624926/7523785>`_. :class:`types.FunctionType` does not
41- detect built-ins which is not possible anyway.
45+
46+ <https://stackoverflow.com/q/624926/7523785>`_. :class:`types.FunctionType`
47+ does notdetect built-ins which is not possible anyway.
4248
4349 """
4450 __tracebackhide__ = True
@@ -76,7 +82,7 @@ def pytask_collect_task(session, path, name, obj):
7682 task = Task (
7783 base_name = name ,
7884 path = path ,
79- function = _copy_func (run_jl_script ),
85+ function = _copy_func (run_jl_script ), # type: ignore[arg-type]
8086 depends_on = dependencies ,
8187 produces = products ,
8288 markers = markers ,
@@ -104,30 +110,34 @@ def pytask_collect_task(session, path, name, obj):
104110 )
105111
106112 return task
113+ return None
107114
108115
109116def _parse_julia_mark (
110- mark , default_options , default_serializer , default_suffix , default_project
111- ):
117+ mark : Mark ,
118+ default_options : list [str ] | None ,
119+ default_serializer : Callable [..., str ] | str | None ,
120+ default_suffix : str | None ,
121+ default_project : str | None ,
122+ ) -> Mark :
112123 """Parse a Julia mark."""
113124 script , options , serializer , suffix , project = julia (** mark .kwargs )
114125
115126 parsed_kwargs = {}
116- for arg_name , value , default in [
127+ for arg_name , value , default in (
117128 ("script" , script , None ),
118129 ("options" , options , default_options ),
119130 ("serializer" , serializer , default_serializer ),
120- ] :
121- parsed_kwargs [arg_name ] = value if value else default
131+ ) :
132+ parsed_kwargs [arg_name ] = value or default
122133
123- if (
124- isinstance (parsed_kwargs ["serializer" ], str )
134+ proposed_suffix = (
135+ SERIALIZERS [parsed_kwargs ["serializer" ]]["suffix" ]
136+ if isinstance (parsed_kwargs ["serializer" ], str )
125137 and parsed_kwargs ["serializer" ] in SERIALIZERS
126- ):
127- proposed_suffix = SERIALIZERS [parsed_kwargs ["serializer" ]]["suffix" ]
128- else :
129- proposed_suffix = default_suffix
130- parsed_kwargs ["suffix" ] = suffix if suffix else proposed_suffix
138+ else default_suffix
139+ )
140+ parsed_kwargs ["suffix" ] = suffix or proposed_suffix # type: ignore[assignment]
131141
132142 if isinstance (project , (str , Path )):
133143 parsed_kwargs ["project" ] = project
0 commit comments