jobflow 0.1.19__tar.gz → 0.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. {jobflow-0.1.19/src/jobflow.egg-info → jobflow-0.2.0}/PKG-INFO +24 -22
  2. {jobflow-0.1.19 → jobflow-0.2.0}/pyproject.toml +20 -19
  3. {jobflow-0.1.19 → jobflow-0.2.0}/src/jobflow/core/flow.py +2 -2
  4. {jobflow-0.1.19 → jobflow-0.2.0}/src/jobflow/core/job.py +3 -3
  5. {jobflow-0.1.19 → jobflow-0.2.0}/src/jobflow/core/reference.py +1 -1
  6. {jobflow-0.1.19 → jobflow-0.2.0}/src/jobflow/utils/graph.py +1 -1
  7. {jobflow-0.1.19 → jobflow-0.2.0}/src/jobflow/utils/uuid.py +4 -1
  8. {jobflow-0.1.19 → jobflow-0.2.0/src/jobflow.egg-info}/PKG-INFO +24 -22
  9. {jobflow-0.1.19 → jobflow-0.2.0}/src/jobflow.egg-info/requires.txt +18 -18
  10. {jobflow-0.1.19 → jobflow-0.2.0}/LICENSE +0 -0
  11. {jobflow-0.1.19 → jobflow-0.2.0}/README.md +0 -0
  12. {jobflow-0.1.19 → jobflow-0.2.0}/setup.cfg +0 -0
  13. {jobflow-0.1.19 → jobflow-0.2.0}/src/jobflow/__init__.py +0 -0
  14. {jobflow-0.1.19 → jobflow-0.2.0}/src/jobflow/_version.py +0 -0
  15. {jobflow-0.1.19 → jobflow-0.2.0}/src/jobflow/core/__init__.py +0 -0
  16. {jobflow-0.1.19 → jobflow-0.2.0}/src/jobflow/core/maker.py +0 -0
  17. {jobflow-0.1.19 → jobflow-0.2.0}/src/jobflow/core/schemas.py +0 -0
  18. {jobflow-0.1.19 → jobflow-0.2.0}/src/jobflow/core/state.py +0 -0
  19. {jobflow-0.1.19 → jobflow-0.2.0}/src/jobflow/core/store.py +0 -0
  20. {jobflow-0.1.19 → jobflow-0.2.0}/src/jobflow/managers/__init__.py +0 -0
  21. {jobflow-0.1.19 → jobflow-0.2.0}/src/jobflow/managers/fireworks.py +0 -0
  22. {jobflow-0.1.19 → jobflow-0.2.0}/src/jobflow/managers/local.py +0 -0
  23. {jobflow-0.1.19 → jobflow-0.2.0}/src/jobflow/py.typed +0 -0
  24. {jobflow-0.1.19 → jobflow-0.2.0}/src/jobflow/settings.py +0 -0
  25. {jobflow-0.1.19 → jobflow-0.2.0}/src/jobflow/utils/__init__.py +0 -0
  26. {jobflow-0.1.19 → jobflow-0.2.0}/src/jobflow/utils/dict_mods.py +0 -0
  27. {jobflow-0.1.19 → jobflow-0.2.0}/src/jobflow/utils/enum.py +0 -0
  28. {jobflow-0.1.19 → jobflow-0.2.0}/src/jobflow/utils/find.py +0 -0
  29. {jobflow-0.1.19 → jobflow-0.2.0}/src/jobflow/utils/log.py +0 -0
  30. {jobflow-0.1.19 → jobflow-0.2.0}/src/jobflow/utils/uid.py +0 -0
  31. {jobflow-0.1.19 → jobflow-0.2.0}/src/jobflow.egg-info/SOURCES.txt +0 -0
  32. {jobflow-0.1.19 → jobflow-0.2.0}/src/jobflow.egg-info/dependency_links.txt +0 -0
  33. {jobflow-0.1.19 → jobflow-0.2.0}/src/jobflow.egg-info/top_level.txt +0 -0
  34. {jobflow-0.1.19 → jobflow-0.2.0}/tests/test_settings.py +0 -0
  35. {jobflow-0.1.19 → jobflow-0.2.0}/tests/test_version.py +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: jobflow
3
- Version: 0.1.19
3
+ Version: 0.2.0
4
4
  Summary: jobflow is a library for writing computational workflows
5
5
  Author-email: Alex Ganose <a.ganose@imperial.ac.uk>
6
6
  License: modified BSD
@@ -17,11 +17,12 @@ Classifier: Operating System :: OS Independent
17
17
  Classifier: Programming Language :: Python :: 3
18
18
  Classifier: Programming Language :: Python :: 3.10
19
19
  Classifier: Programming Language :: Python :: 3.11
20
- Classifier: Programming Language :: Python :: 3.9
20
+ Classifier: Programming Language :: Python :: 3.12
21
+ Classifier: Programming Language :: Python :: 3.13
21
22
  Classifier: Topic :: Database :: Front-Ends
22
23
  Classifier: Topic :: Other/Nonlisted Topic
23
24
  Classifier: Topic :: Scientific/Engineering
24
- Requires-Python: >=3.9
25
+ Requires-Python: >=3.10
25
26
  Description-Content-Type: text/markdown
26
27
  License-File: LICENSE
27
28
  Requires-Dist: PyYAML
@@ -34,39 +35,40 @@ Requires-Dist: pydash
34
35
  Provides-Extra: ulid
35
36
  Requires-Dist: python-ulid; extra == "ulid"
36
37
  Provides-Extra: docs
37
- Requires-Dist: autodoc_pydantic==2.1.0; extra == "docs"
38
+ Requires-Dist: autodoc_pydantic==2.2.0; extra == "docs"
38
39
  Requires-Dist: furo==2024.8.6; extra == "docs"
39
- Requires-Dist: ipython==8.29.0; extra == "docs"
40
- Requires-Dist: myst_parser==4.0.0; extra == "docs"
41
- Requires-Dist: nbsphinx==0.9.5; extra == "docs"
40
+ Requires-Dist: ipython==9.3.0; extra == "docs"
41
+ Requires-Dist: myst_parser==4.0.1; extra == "docs"
42
+ Requires-Dist: nbsphinx==0.9.7; extra == "docs"
42
43
  Requires-Dist: sphinx-copybutton==0.5.2; extra == "docs"
43
44
  Requires-Dist: sphinx==8.1.3; extra == "docs"
44
45
  Provides-Extra: dev
45
46
  Requires-Dist: pre-commit>=2.12.1; extra == "dev"
46
47
  Requires-Dist: typing_extensions; python_version < "3.11" and extra == "dev"
47
48
  Provides-Extra: tests
48
- Requires-Dist: moto==4.2.13; extra == "tests"
49
- Requires-Dist: pytest-cov==6.0.0; extra == "tests"
50
- Requires-Dist: pytest==8.3.3; extra == "tests"
49
+ Requires-Dist: moto==5.1.5; extra == "tests"
50
+ Requires-Dist: pytest-cov==6.1.1; extra == "tests"
51
+ Requires-Dist: pytest==8.4.0; extra == "tests"
51
52
  Provides-Extra: vis
52
53
  Requires-Dist: matplotlib; extra == "vis"
53
54
  Requires-Dist: pydot; extra == "vis"
54
55
  Provides-Extra: fireworks
55
56
  Requires-Dist: FireWorks; extra == "fireworks"
56
57
  Provides-Extra: strict
57
- Requires-Dist: FireWorks==2.0.3; extra == "strict"
58
+ Requires-Dist: FireWorks==2.0.4; extra == "strict"
58
59
  Requires-Dist: PyYAML==6.0.2; extra == "strict"
59
- Requires-Dist: maggma==0.70.0; extra == "strict"
60
- Requires-Dist: matplotlib==3.9.2; extra == "strict"
61
- Requires-Dist: monty==2024.10.21; extra == "strict"
62
- Requires-Dist: moto==4.2.13; extra == "strict"
63
- Requires-Dist: networkx==3.2.1; extra == "strict"
64
- Requires-Dist: pydantic-settings==2.6.1; extra == "strict"
65
- Requires-Dist: pydantic==2.9.2; extra == "strict"
66
- Requires-Dist: pydash==8.0.4; extra == "strict"
67
- Requires-Dist: pydot==2.0.0; extra == "strict"
60
+ Requires-Dist: maggma==0.71.5; extra == "strict"
61
+ Requires-Dist: matplotlib==3.10.3; extra == "strict"
62
+ Requires-Dist: monty==2025.3.3; extra == "strict"
63
+ Requires-Dist: moto==5.1.5; extra == "strict"
64
+ Requires-Dist: networkx==3.4.2; extra == "strict"
65
+ Requires-Dist: pydantic-settings==2.9.1; extra == "strict"
66
+ Requires-Dist: pydantic==2.11.5; extra == "strict"
67
+ Requires-Dist: pydash==8.0.5; extra == "strict"
68
+ Requires-Dist: pydot==4.0.0; extra == "strict"
68
69
  Requires-Dist: python-ulid==3.0.0; extra == "strict"
69
- Requires-Dist: typing-extensions==4.12.2; extra == "strict"
70
+ Requires-Dist: typing-extensions==4.13.2; extra == "strict"
71
+ Dynamic: license-file
70
72
 
71
73
  <div align="center">
72
74
 
@@ -19,12 +19,13 @@ classifiers = [
19
19
  "Programming Language :: Python :: 3",
20
20
  "Programming Language :: Python :: 3.10",
21
21
  "Programming Language :: Python :: 3.11",
22
- "Programming Language :: Python :: 3.9",
22
+ "Programming Language :: Python :: 3.12",
23
+ "Programming Language :: Python :: 3.13",
23
24
  "Topic :: Database :: Front-Ends",
24
25
  "Topic :: Other/Nonlisted Topic",
25
26
  "Topic :: Scientific/Engineering",
26
27
  ]
27
- requires-python = ">=3.9"
28
+ requires-python = ">=3.10"
28
29
  dependencies = [
29
30
  "PyYAML",
30
31
  "maggma>=0.57.0",
@@ -38,32 +39,32 @@ dependencies = [
38
39
  [project.optional-dependencies]
39
40
  ulid = ["python-ulid"]
40
41
  docs = [
41
- "autodoc_pydantic==2.1.0",
42
+ "autodoc_pydantic==2.2.0",
42
43
  "furo==2024.8.6",
43
- "ipython==8.29.0",
44
- "myst_parser==4.0.0",
45
- "nbsphinx==0.9.5",
44
+ "ipython==9.3.0",
45
+ "myst_parser==4.0.1",
46
+ "nbsphinx==0.9.7",
46
47
  "sphinx-copybutton==0.5.2",
47
48
  "sphinx==8.1.3",
48
49
  ]
49
50
  dev = ["pre-commit>=2.12.1", "typing_extensions; python_version < '3.11'"]
50
- tests = ["moto==4.2.13", "pytest-cov==6.0.0", "pytest==8.3.3"]
51
+ tests = ["moto==5.1.5", "pytest-cov==6.1.1", "pytest==8.4.0"]
51
52
  vis = ["matplotlib", "pydot"]
52
53
  fireworks = ["FireWorks"]
53
54
  strict = [
54
- "FireWorks==2.0.3",
55
+ "FireWorks==2.0.4",
55
56
  "PyYAML==6.0.2",
56
- "maggma==0.70.0",
57
- "matplotlib==3.9.2",
58
- "monty==2024.10.21",
59
- "moto==4.2.13",
60
- "networkx==3.2.1",
61
- "pydantic-settings==2.6.1",
62
- "pydantic==2.9.2",
63
- "pydash==8.0.4",
64
- "pydot==2.0.0",
57
+ "maggma==0.71.5",
58
+ "matplotlib==3.10.3",
59
+ "monty==2025.3.3",
60
+ "moto==5.1.5",
61
+ "networkx==3.4.2",
62
+ "pydantic-settings==2.9.1",
63
+ "pydantic==2.11.5",
64
+ "pydash==8.0.5",
65
+ "pydot==4.0.0",
65
66
  "python-ulid==3.0.0",
66
- "typing-extensions==4.12.2",
67
+ "typing-extensions==4.13.2",
67
68
  ]
68
69
 
69
70
  [project.urls]
@@ -84,7 +85,7 @@ max-line-length = 88
84
85
  max-doc-length = 88
85
86
  select = "C, E, F, W, B"
86
87
  extend-ignore = "E203, W503, E501, F401, RST21"
87
- min-python-version = "3.9.0"
88
+ min-python-version = "3.10.0"
88
89
  docstring-convention = "numpy"
89
90
  rst-roles = "class, func, ref, obj"
90
91
 
@@ -617,7 +617,7 @@ class Flow(MSONable):
617
617
  function_filter: Callable = None,
618
618
  dict_mod: bool = False,
619
619
  dynamic: bool = True,
620
- callback_filter: Callable[[Flow | Job], bool] = lambda _: True,
620
+ callback_filter: Callable[[Flow | Job], bool] | None = None,
621
621
  ):
622
622
  """
623
623
  Update the metadata of the Flow and/or its Jobs.
@@ -681,7 +681,7 @@ class Flow(MSONable):
681
681
  callback_filter=callback_filter,
682
682
  )
683
683
 
684
- if callback_filter(self) is False:
684
+ if callback_filter is not None and callback_filter(self) is False:
685
685
  return
686
686
 
687
687
  if dict_mod:
@@ -926,7 +926,7 @@ class Job(MSONable):
926
926
  function_filter: Callable = None,
927
927
  dict_mod: bool = False,
928
928
  dynamic: bool = True,
929
- callback_filter: Callable[[jobflow.Flow | Job], bool] = lambda _: True,
929
+ callback_filter: Callable[[jobflow.Flow | Job], bool] | None = None,
930
930
  ):
931
931
  """
932
932
  Update the metadata of the job.
@@ -1006,7 +1006,7 @@ class Job(MSONable):
1006
1006
  ):
1007
1007
  return
1008
1008
 
1009
- if callback_filter(self) is False:
1009
+ if callback_filter is not None and callback_filter(self) is False:
1010
1010
  return
1011
1011
 
1012
1012
  # if we get to here then we pass all the filters
@@ -1265,7 +1265,7 @@ class Response(typing.Generic[T]):
1265
1265
  job_returns.output = apply_schema(job_returns.output, output_schema)
1266
1266
 
1267
1267
  job_returns.job_dir = job_dir
1268
- return cast(Self, job_returns)
1268
+ return cast("Self", job_returns)
1269
1269
 
1270
1270
  if isinstance(job_returns, (list, tuple)):
1271
1271
  # check that a Response object is not given as one of many outputs
@@ -513,7 +513,7 @@ def validate_schema_access(
513
513
  the bool is ``True`` if the schema access was valid.
514
514
  The BaseModel class associated with the item, if any.
515
515
  """
516
- schema_dict = schema.schema()
516
+ schema_dict = schema.model_json_schema()
517
517
  if item not in schema_dict["properties"]:
518
518
  raise AttributeError(f"{schema.__name__} does not have attribute '{item}'.")
519
519
 
@@ -170,7 +170,7 @@ def to_pydot(flow: jobflow.Flow):
170
170
  if isinstance(job, Flow):
171
171
  add_cluster(job, cluster)
172
172
  else:
173
- cluster.add_node(pydot_graph.get_node(f'"{job.uuid}"')[0])
173
+ cluster.add_node(pydot_graph.get_node(f"{job.uuid}")[0])
174
174
 
175
175
  outer_graph.add_subgraph(cluster)
176
176
 
@@ -4,7 +4,10 @@ from monty.dev import deprecated
4
4
 
5
5
 
6
6
  @deprecated(
7
- message="The UUID system will be replace with UID that contains both UUID and ULID."
7
+ message=(
8
+ "The UUID system will be replaced with a UID that "
9
+ "contains both the UUID and ULID."
10
+ )
8
11
  )
9
12
  def suuid() -> str:
10
13
  """
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: jobflow
3
- Version: 0.1.19
3
+ Version: 0.2.0
4
4
  Summary: jobflow is a library for writing computational workflows
5
5
  Author-email: Alex Ganose <a.ganose@imperial.ac.uk>
6
6
  License: modified BSD
@@ -17,11 +17,12 @@ Classifier: Operating System :: OS Independent
17
17
  Classifier: Programming Language :: Python :: 3
18
18
  Classifier: Programming Language :: Python :: 3.10
19
19
  Classifier: Programming Language :: Python :: 3.11
20
- Classifier: Programming Language :: Python :: 3.9
20
+ Classifier: Programming Language :: Python :: 3.12
21
+ Classifier: Programming Language :: Python :: 3.13
21
22
  Classifier: Topic :: Database :: Front-Ends
22
23
  Classifier: Topic :: Other/Nonlisted Topic
23
24
  Classifier: Topic :: Scientific/Engineering
24
- Requires-Python: >=3.9
25
+ Requires-Python: >=3.10
25
26
  Description-Content-Type: text/markdown
26
27
  License-File: LICENSE
27
28
  Requires-Dist: PyYAML
@@ -34,39 +35,40 @@ Requires-Dist: pydash
34
35
  Provides-Extra: ulid
35
36
  Requires-Dist: python-ulid; extra == "ulid"
36
37
  Provides-Extra: docs
37
- Requires-Dist: autodoc_pydantic==2.1.0; extra == "docs"
38
+ Requires-Dist: autodoc_pydantic==2.2.0; extra == "docs"
38
39
  Requires-Dist: furo==2024.8.6; extra == "docs"
39
- Requires-Dist: ipython==8.29.0; extra == "docs"
40
- Requires-Dist: myst_parser==4.0.0; extra == "docs"
41
- Requires-Dist: nbsphinx==0.9.5; extra == "docs"
40
+ Requires-Dist: ipython==9.3.0; extra == "docs"
41
+ Requires-Dist: myst_parser==4.0.1; extra == "docs"
42
+ Requires-Dist: nbsphinx==0.9.7; extra == "docs"
42
43
  Requires-Dist: sphinx-copybutton==0.5.2; extra == "docs"
43
44
  Requires-Dist: sphinx==8.1.3; extra == "docs"
44
45
  Provides-Extra: dev
45
46
  Requires-Dist: pre-commit>=2.12.1; extra == "dev"
46
47
  Requires-Dist: typing_extensions; python_version < "3.11" and extra == "dev"
47
48
  Provides-Extra: tests
48
- Requires-Dist: moto==4.2.13; extra == "tests"
49
- Requires-Dist: pytest-cov==6.0.0; extra == "tests"
50
- Requires-Dist: pytest==8.3.3; extra == "tests"
49
+ Requires-Dist: moto==5.1.5; extra == "tests"
50
+ Requires-Dist: pytest-cov==6.1.1; extra == "tests"
51
+ Requires-Dist: pytest==8.4.0; extra == "tests"
51
52
  Provides-Extra: vis
52
53
  Requires-Dist: matplotlib; extra == "vis"
53
54
  Requires-Dist: pydot; extra == "vis"
54
55
  Provides-Extra: fireworks
55
56
  Requires-Dist: FireWorks; extra == "fireworks"
56
57
  Provides-Extra: strict
57
- Requires-Dist: FireWorks==2.0.3; extra == "strict"
58
+ Requires-Dist: FireWorks==2.0.4; extra == "strict"
58
59
  Requires-Dist: PyYAML==6.0.2; extra == "strict"
59
- Requires-Dist: maggma==0.70.0; extra == "strict"
60
- Requires-Dist: matplotlib==3.9.2; extra == "strict"
61
- Requires-Dist: monty==2024.10.21; extra == "strict"
62
- Requires-Dist: moto==4.2.13; extra == "strict"
63
- Requires-Dist: networkx==3.2.1; extra == "strict"
64
- Requires-Dist: pydantic-settings==2.6.1; extra == "strict"
65
- Requires-Dist: pydantic==2.9.2; extra == "strict"
66
- Requires-Dist: pydash==8.0.4; extra == "strict"
67
- Requires-Dist: pydot==2.0.0; extra == "strict"
60
+ Requires-Dist: maggma==0.71.5; extra == "strict"
61
+ Requires-Dist: matplotlib==3.10.3; extra == "strict"
62
+ Requires-Dist: monty==2025.3.3; extra == "strict"
63
+ Requires-Dist: moto==5.1.5; extra == "strict"
64
+ Requires-Dist: networkx==3.4.2; extra == "strict"
65
+ Requires-Dist: pydantic-settings==2.9.1; extra == "strict"
66
+ Requires-Dist: pydantic==2.11.5; extra == "strict"
67
+ Requires-Dist: pydash==8.0.5; extra == "strict"
68
+ Requires-Dist: pydot==4.0.0; extra == "strict"
68
69
  Requires-Dist: python-ulid==3.0.0; extra == "strict"
69
- Requires-Dist: typing-extensions==4.12.2; extra == "strict"
70
+ Requires-Dist: typing-extensions==4.13.2; extra == "strict"
71
+ Dynamic: license-file
70
72
 
71
73
  <div align="center">
72
74
 
@@ -13,11 +13,11 @@ pre-commit>=2.12.1
13
13
  typing_extensions
14
14
 
15
15
  [docs]
16
- autodoc_pydantic==2.1.0
16
+ autodoc_pydantic==2.2.0
17
17
  furo==2024.8.6
18
- ipython==8.29.0
19
- myst_parser==4.0.0
20
- nbsphinx==0.9.5
18
+ ipython==9.3.0
19
+ myst_parser==4.0.1
20
+ nbsphinx==0.9.7
21
21
  sphinx-copybutton==0.5.2
22
22
  sphinx==8.1.3
23
23
 
@@ -25,24 +25,24 @@ sphinx==8.1.3
25
25
  FireWorks
26
26
 
27
27
  [strict]
28
- FireWorks==2.0.3
28
+ FireWorks==2.0.4
29
29
  PyYAML==6.0.2
30
- maggma==0.70.0
31
- matplotlib==3.9.2
32
- monty==2024.10.21
33
- moto==4.2.13
34
- networkx==3.2.1
35
- pydantic-settings==2.6.1
36
- pydantic==2.9.2
37
- pydash==8.0.4
38
- pydot==2.0.0
30
+ maggma==0.71.5
31
+ matplotlib==3.10.3
32
+ monty==2025.3.3
33
+ moto==5.1.5
34
+ networkx==3.4.2
35
+ pydantic-settings==2.9.1
36
+ pydantic==2.11.5
37
+ pydash==8.0.5
38
+ pydot==4.0.0
39
39
  python-ulid==3.0.0
40
- typing-extensions==4.12.2
40
+ typing-extensions==4.13.2
41
41
 
42
42
  [tests]
43
- moto==4.2.13
44
- pytest-cov==6.0.0
45
- pytest==8.3.3
43
+ moto==5.1.5
44
+ pytest-cov==6.1.1
45
+ pytest==8.4.0
46
46
 
47
47
  [ulid]
48
48
  python-ulid
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes