Skip to content

Commit 1573509

Browse files
authored
enable pickling of cwltool.workflow.Workflow (#1878)
1 parent f23d3e0 commit 1573509

File tree

2 files changed

+13
-0
lines changed

2 files changed

+13
-0
lines changed

cwltool/workflow.py

+2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
)
1818
from uuid import UUID
1919

20+
from mypy_extensions import mypyc_attr
2021
from ruamel.yaml.comments import CommentedMap
2122
from schema_salad.exceptions import ValidationException
2223
from schema_salad.sourceline import SourceLine, indent
@@ -66,6 +67,7 @@ def default_make_tool(toolpath_object: CommentedMap, loadingContext: LoadingCont
6667
context.default_make_tool = default_make_tool
6768

6869

70+
@mypyc_attr(serializable=True)
6971
class Workflow(Process):
7072
def __init__(
7173
self,

tests/test_subclass_mypyc.py

+11
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
from cwltool.context import LoadingContext, RuntimeContext
1616
from cwltool.stdfsaccess import StdFsAccess
1717
from cwltool.update import INTERNAL_VERSION
18+
from cwltool.workflow import Workflow
1819

1920
from .test_anon_types import snippet
2021

@@ -41,6 +42,16 @@ class TestExprTool(ExpressionTool):
4142
assert a.test is False
4243

4344

45+
@pytest.mark.parametrize("snippet", snippet)
46+
def test_pickle_unpickle_workflow(snippet: CommentedMap) -> None:
47+
"""We can pickle & unpickle a Workflow."""
48+
49+
a = Workflow(snippet, LoadingContext())
50+
stream = pickle.dumps(a)
51+
assert stream
52+
assert pickle.loads(stream)
53+
54+
4455
def test_serialize_builder() -> None:
4556
"""We can pickle Builder."""
4657
runtime_context = RuntimeContext()

0 commit comments

Comments
 (0)