1
1
"""Collect tasks."""
2
+
2
3
from __future__ import annotations
3
4
4
5
import subprocess
5
6
import warnings
6
7
from pathlib import Path
7
8
from typing import Any
8
9
9
- from pytask import has_mark
10
- from pytask import hookimpl
11
- from pytask import is_task_function
12
10
from pytask import Mark
13
11
from pytask import NodeInfo
14
- from pytask import parse_dependencies_from_task_function
15
- from pytask import parse_products_from_task_function
16
12
from pytask import PathNode
17
13
from pytask import PTask
18
14
from pytask import PythonNode
19
- from pytask import remove_marks
20
15
from pytask import Session
21
16
from pytask import Task
22
17
from pytask import TaskWithoutPath
23
- from pytask_r .serialization import create_path_to_serialized
18
+ from pytask import has_mark
19
+ from pytask import hookimpl
20
+ from pytask import is_task_function
21
+ from pytask import parse_dependencies_from_task_function
22
+ from pytask import parse_products_from_task_function
23
+ from pytask import remove_marks
24
+
24
25
from pytask_r .serialization import SERIALIZERS
26
+ from pytask_r .serialization import create_path_to_serialized
25
27
from pytask_r .shared import r
26
28
27
29
28
30
def run_r_script (
29
- _script : Path , _options : list [str ], _serialized : Path , ** kwargs : Any # noqa: ARG001
31
+ _script : Path ,
32
+ _options : list [str ],
33
+ _serialized : Path ,
34
+ ** kwargs : Any , # noqa: ARG001
30
35
) -> None :
31
36
"""Run an R script."""
32
37
cmd = ["Rscript" , _script .as_posix (), * _options , str (_serialized )]
@@ -49,10 +54,11 @@ def pytask_collect_task(
49
54
# Parse @pytask.mark.r decorator.
50
55
obj , marks = remove_marks (obj , "r" )
51
56
if len (marks ) > 1 :
52
- raise ValueError (
57
+ msg = (
53
58
f"Task { name !r} has multiple @pytask.mark.r marks, but only one is "
54
59
"allowed."
55
60
)
61
+ raise ValueError (msg )
56
62
57
63
mark = _parse_r_mark (
58
64
mark = marks [0 ],
@@ -88,10 +94,11 @@ def pytask_collect_task(
88
94
)
89
95
90
96
if not (isinstance (script_node , PathNode ) and script_node .path .suffix == ".r" ):
91
- raise ValueError (
97
+ msg = (
92
98
"The 'script' keyword of the @pytask.mark.r decorator must point "
93
99
f"to Julia file with the .r suffix, but it is { script_node } ."
94
100
)
101
+ raise ValueError (msg )
95
102
96
103
options_node = session .hook .pytask_collect_node (
97
104
session = session ,
@@ -181,5 +188,4 @@ def _parse_r_mark(
181
188
)
182
189
parsed_kwargs ["suffix" ] = suffix or proposed_suffix # type: ignore[assignment]
183
190
184
- mark = Mark ("r" , (), parsed_kwargs )
185
- return mark
191
+ return Mark ("r" , (), parsed_kwargs )
0 commit comments