55import subprocess
66from pathlib import Path
77from types import FunctionType
8+ from typing import Any
89
910from pytask import depends_on
1011from pytask import has_mark
1314from pytask import parse_nodes
1415from pytask import produces
1516from pytask import remove_marks
17+ from pytask import Session
1618from pytask import Task
1719from pytask_r .serialization import SERIALIZERS
1820from pytask_r .shared import r
@@ -26,7 +28,9 @@ def run_r_script(script: Path, options: list[str], serialized: Path) -> None:
2628
2729
2830@hookimpl
29- def pytask_collect_task (session , path , name , obj ):
31+ def pytask_collect_task (
32+ session : Session , path : Path , name : str , obj : Any
33+ ) -> Task | None :
3034 """Perform some checks."""
3135 __tracebackhide__ = True
3236
@@ -62,7 +66,7 @@ def pytask_collect_task(session, path, name, obj):
6266 task = Task (
6367 base_name = name ,
6468 path = path ,
65- function = _copy_func (run_r_script ),
69+ function = _copy_func (run_r_script ), # type: ignore[arg-type]
6670 depends_on = dependencies ,
6771 produces = products ,
6872 markers = markers ,
@@ -85,28 +89,33 @@ def pytask_collect_task(session, path, name, obj):
8589 )
8690
8791 return task
92+ return None
8893
8994
90- def _parse_r_mark (mark , default_options , default_serializer , default_suffix ):
95+ def _parse_r_mark (
96+ mark : Mark ,
97+ default_options : list [str ] | None ,
98+ default_serializer : str ,
99+ default_suffix : str ,
100+ ) -> Mark :
91101 """Parse a Julia mark."""
92102 script , options , serializer , suffix = r (** mark .kwargs )
93103
94104 parsed_kwargs = {}
95- for arg_name , value , default in [
105+ for arg_name , value , default in (
96106 ("script" , script , None ),
97107 ("options" , options , default_options ),
98108 ("serializer" , serializer , default_serializer ),
99- ] :
100- parsed_kwargs [arg_name ] = value if value else default
109+ ) :
110+ parsed_kwargs [arg_name ] = value or default
101111
102- if (
103- isinstance (parsed_kwargs ["serializer" ], str )
112+ proposed_suffix = (
113+ SERIALIZERS [parsed_kwargs ["serializer" ]]["suffix" ]
114+ if isinstance (parsed_kwargs ["serializer" ], str )
104115 and parsed_kwargs ["serializer" ] in SERIALIZERS
105- ):
106- proposed_suffix = SERIALIZERS [parsed_kwargs ["serializer" ]]["suffix" ]
107- else :
108- proposed_suffix = default_suffix
109- parsed_kwargs ["suffix" ] = suffix if suffix else proposed_suffix
116+ else default_suffix
117+ )
118+ parsed_kwargs ["suffix" ] = suffix or proposed_suffix # type: ignore[assignment]
110119
111120 mark = Mark ("r" , (), parsed_kwargs )
112121 return mark
0 commit comments