fractal-task-tools 0.0.12__tar.gz → 0.0.14__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.

Potentially problematic release.


This version of fractal-task-tools might be problematic. Click here for more details.

Files changed (36) hide show
  1. {fractal_task_tools-0.0.12/src/fractal_task_tools.egg-info → fractal_task_tools-0.0.14}/PKG-INFO +5 -3
  2. {fractal_task_tools-0.0.12 → fractal_task_tools-0.0.14}/pyproject.toml +6 -4
  3. {fractal_task_tools-0.0.12 → fractal_task_tools-0.0.14}/src/fractal_task_tools/__init__.py +1 -1
  4. {fractal_task_tools-0.0.12 → fractal_task_tools-0.0.14}/src/fractal_task_tools/_args_schemas.py +0 -2
  5. {fractal_task_tools-0.0.12 → fractal_task_tools-0.0.14}/src/fractal_task_tools/_create_manifest.py +6 -0
  6. {fractal_task_tools-0.0.12 → fractal_task_tools-0.0.14}/src/fractal_task_tools/_signature_constraints.py +0 -1
  7. {fractal_task_tools-0.0.12 → fractal_task_tools-0.0.14/src/fractal_task_tools.egg-info}/PKG-INFO +5 -3
  8. {fractal_task_tools-0.0.12 → fractal_task_tools-0.0.14}/src/fractal_task_tools.egg-info/SOURCES.txt +1 -1
  9. {fractal_task_tools-0.0.12 → fractal_task_tools-0.0.14}/src/fractal_task_tools.egg-info/requires.txt +3 -1
  10. {fractal_task_tools-0.0.12 → fractal_task_tools-0.0.14}/tests/test_create_manifest.py +8 -0
  11. fractal_task_tools-0.0.12/tests/test_extract_function.py → fractal_task_tools-0.0.14/tests/test_handle_functions.py +43 -0
  12. {fractal_task_tools-0.0.12 → fractal_task_tools-0.0.14}/tests/test_task_wrapper.py +0 -1
  13. {fractal_task_tools-0.0.12 → fractal_task_tools-0.0.14}/LICENSE +0 -0
  14. {fractal_task_tools-0.0.12 → fractal_task_tools-0.0.14}/README.md +0 -0
  15. {fractal_task_tools-0.0.12 → fractal_task_tools-0.0.14}/setup.cfg +0 -0
  16. {fractal_task_tools-0.0.12 → fractal_task_tools-0.0.14}/src/fractal_task_tools/_cli.py +0 -0
  17. {fractal_task_tools-0.0.12 → fractal_task_tools-0.0.14}/src/fractal_task_tools/_cli_tools.py +0 -0
  18. {fractal_task_tools-0.0.12 → fractal_task_tools-0.0.14}/src/fractal_task_tools/_deepdiff.py +0 -0
  19. {fractal_task_tools-0.0.12 → fractal_task_tools-0.0.14}/src/fractal_task_tools/_descriptions.py +0 -0
  20. {fractal_task_tools-0.0.12 → fractal_task_tools-0.0.14}/src/fractal_task_tools/_package_name_tools.py +0 -0
  21. {fractal_task_tools-0.0.12 → fractal_task_tools-0.0.14}/src/fractal_task_tools/_pydantic_generatejsonschema.py +0 -0
  22. {fractal_task_tools-0.0.12 → fractal_task_tools-0.0.14}/src/fractal_task_tools/_task_arguments.py +0 -0
  23. {fractal_task_tools-0.0.12 → fractal_task_tools-0.0.14}/src/fractal_task_tools/_task_docs.py +0 -0
  24. {fractal_task_tools-0.0.12 → fractal_task_tools-0.0.14}/src/fractal_task_tools/_titles.py +0 -0
  25. {fractal_task_tools-0.0.12 → fractal_task_tools-0.0.14}/src/fractal_task_tools/task_models.py +0 -0
  26. {fractal_task_tools-0.0.12 → fractal_task_tools-0.0.14}/src/fractal_task_tools/task_wrapper.py +0 -0
  27. {fractal_task_tools-0.0.12 → fractal_task_tools-0.0.14}/src/fractal_task_tools.egg-info/dependency_links.txt +0 -0
  28. {fractal_task_tools-0.0.12 → fractal_task_tools-0.0.14}/src/fractal_task_tools.egg-info/entry_points.txt +0 -0
  29. {fractal_task_tools-0.0.12 → fractal_task_tools-0.0.14}/src/fractal_task_tools.egg-info/top_level.txt +0 -0
  30. {fractal_task_tools-0.0.12 → fractal_task_tools-0.0.14}/tests/test_cli.py +0 -0
  31. {fractal_task_tools-0.0.12 → fractal_task_tools-0.0.14}/tests/test_create_schema_for_single_task.py +0 -0
  32. {fractal_task_tools-0.0.12 → fractal_task_tools-0.0.14}/tests/test_deepdiff.py +0 -0
  33. {fractal_task_tools-0.0.12 → fractal_task_tools-0.0.14}/tests/test_normalize_package_name.py +0 -0
  34. {fractal_task_tools-0.0.12 → fractal_task_tools-0.0.14}/tests/test_task_models.py +0 -0
  35. {fractal_task_tools-0.0.12 → fractal_task_tools-0.0.14}/tests/test_unit_lib_descriptions.py +0 -0
  36. {fractal_task_tools-0.0.12 → fractal_task_tools-0.0.14}/tests/test_validate_arguments.py +0 -0
@@ -1,16 +1,16 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fractal-task-tools
3
- Version: 0.0.12
3
+ Version: 0.0.14
4
4
  Summary: Shared tools for Fractal tasks
5
5
  Author-email: Tommaso Comparin <tommaso.comparin@exact-lab.it>
6
6
  License: BSD-3-Clause
7
7
  Project-URL: homepage, https://github.com/fractal-analytics-platform/fractal-task-tools
8
8
  Project-URL: repository, https://github.com/fractal-analytics-platform/fractal-task-tools
9
9
  Project-URL: changelog, https://github.com/fractal-analytics-platform/fractal-task-tools/blob/main/CHANGELOG.md
10
- Requires-Python: <3.13,>=3.10
10
+ Requires-Python: <3.14,>=3.10
11
11
  Description-Content-Type: text/markdown
12
12
  License-File: LICENSE
13
- Requires-Dist: pydantic<=2.11.2,>=2.0.0
13
+ Requires-Dist: pydantic<=2.11.7,>=2.0.0
14
14
  Requires-Dist: docstring-parser<=0.16,>=0.15
15
15
  Requires-Dist: packaging
16
16
  Provides-Extra: dev
@@ -18,6 +18,8 @@ Requires-Dist: bumpver==2024.1130; extra == "dev"
18
18
  Requires-Dist: devtools==0.12.2; extra == "dev"
19
19
  Requires-Dist: pytest<9.0.0,>=8.3.0; extra == "dev"
20
20
  Requires-Dist: coverage<7.7.0,>=7.6.0; extra == "dev"
21
+ Requires-Dist: jsonschema>=4; extra == "dev"
22
+ Requires-Dist: requests<2.33.0,>2.32.0; extra == "dev"
21
23
  Provides-Extra: docs
22
24
  Requires-Dist: mkdocs<1.7.0,>=1.6.0; extra == "docs"
23
25
  Requires-Dist: mkdocs-material<9.7.0,>=9.6.0; extra == "docs"
@@ -1,15 +1,15 @@
1
1
  [project]
2
2
  name = "fractal-task-tools"
3
- version = "0.0.12"
3
+ version = "0.0.14"
4
4
  description = "Shared tools for Fractal tasks"
5
5
  authors = [
6
6
  {name="Tommaso Comparin", email="tommaso.comparin@exact-lab.it"},
7
7
  ]
8
8
  readme = "README.md"
9
9
  license = {text ="BSD-3-Clause"}
10
- requires-python = ">=3.10,<3.13"
10
+ requires-python = ">=3.10,<3.14"
11
11
  dependencies = [
12
- "pydantic >=2.0.0,<=2.11.2",
12
+ "pydantic >=2.0.0,<=2.11.7",
13
13
  "docstring-parser >=0.15,<=0.16",
14
14
  "packaging",
15
15
  ]
@@ -19,6 +19,8 @@ dev = [
19
19
  "devtools ==0.12.2",
20
20
  "pytest >=8.3.0, <9.0.0",
21
21
  "coverage >=7.6.0,<7.7.0",
22
+ "jsonschema >=4",
23
+ "requests >2.32.0,<2.33.0",
22
24
  ]
23
25
  docs = [
24
26
  "mkdocs >=1.6.0,<1.7.0",
@@ -44,7 +46,7 @@ build-backend = "setuptools.build_meta"
44
46
  fractal-manifest = "fractal_task_tools._cli:main"
45
47
 
46
48
  [tool.bumpver]
47
- current_version = "0.0.12"
49
+ current_version = "0.0.14"
48
50
  version_pattern = "MAJOR.MINOR.PATCH[PYTAGNUM]"
49
51
  commit_message = "bump version {old_version} -> {new_version}"
50
52
  commit = true
@@ -2,4 +2,4 @@ import logging
2
2
 
3
3
  logging.basicConfig(level=logging.INFO)
4
4
 
5
- __VERSION__ = "0.0.12"
5
+ __VERSION__ = "0.0.14"
@@ -65,7 +65,6 @@ def _create_schema_for_function(function: Callable) -> _Schema:
65
65
  from packaging.version import parse
66
66
 
67
67
  if parse(pydantic.__version__) >= parse("2.11.0"):
68
-
69
68
  from pydantic.experimental.arguments_schema import (
70
69
  generate_arguments_schema,
71
70
  ) # noqa
@@ -75,7 +74,6 @@ def _create_schema_for_function(function: Callable) -> _Schema:
75
74
  schema_type="arguments",
76
75
  )
77
76
  elif parse(pydantic.__version__) >= parse("2.9.0"):
78
-
79
77
  from pydantic._internal._config import ConfigWrapper # noqa
80
78
  from pydantic._internal import _generate_schema # noqa
81
79
 
@@ -86,6 +86,12 @@ def create_manifest(
86
86
  # Load DOCS_LINK
87
87
  try:
88
88
  DOCS_LINK = getattr(task_list_module, "DOCS_LINK")
89
+ # Transform empty string into None
90
+ if DOCS_LINK == "":
91
+ DOCS_LINK = None
92
+ logging.warning(
93
+ "`DOCS_LINK=" "` transformed into `DOCS_LINK=None`."
94
+ )
89
95
  except AttributeError:
90
96
  DOCS_LINK = None
91
97
  logging.warning("No `DOCS_LINK` found in task_list module.")
@@ -70,7 +70,6 @@ def _validate_function_signature(function: callable):
70
70
  """
71
71
  sig = signature(function)
72
72
  for param in sig.parameters.values():
73
-
74
73
  # CASE 1: Check that name is not forbidden
75
74
  if param.name in FORBIDDEN_PARAM_NAMES:
76
75
  raise ValueError(
@@ -1,16 +1,16 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fractal-task-tools
3
- Version: 0.0.12
3
+ Version: 0.0.14
4
4
  Summary: Shared tools for Fractal tasks
5
5
  Author-email: Tommaso Comparin <tommaso.comparin@exact-lab.it>
6
6
  License: BSD-3-Clause
7
7
  Project-URL: homepage, https://github.com/fractal-analytics-platform/fractal-task-tools
8
8
  Project-URL: repository, https://github.com/fractal-analytics-platform/fractal-task-tools
9
9
  Project-URL: changelog, https://github.com/fractal-analytics-platform/fractal-task-tools/blob/main/CHANGELOG.md
10
- Requires-Python: <3.13,>=3.10
10
+ Requires-Python: <3.14,>=3.10
11
11
  Description-Content-Type: text/markdown
12
12
  License-File: LICENSE
13
- Requires-Dist: pydantic<=2.11.2,>=2.0.0
13
+ Requires-Dist: pydantic<=2.11.7,>=2.0.0
14
14
  Requires-Dist: docstring-parser<=0.16,>=0.15
15
15
  Requires-Dist: packaging
16
16
  Provides-Extra: dev
@@ -18,6 +18,8 @@ Requires-Dist: bumpver==2024.1130; extra == "dev"
18
18
  Requires-Dist: devtools==0.12.2; extra == "dev"
19
19
  Requires-Dist: pytest<9.0.0,>=8.3.0; extra == "dev"
20
20
  Requires-Dist: coverage<7.7.0,>=7.6.0; extra == "dev"
21
+ Requires-Dist: jsonschema>=4; extra == "dev"
22
+ Requires-Dist: requests<2.33.0,>2.32.0; extra == "dev"
21
23
  Provides-Extra: docs
22
24
  Requires-Dist: mkdocs<1.7.0,>=1.6.0; extra == "docs"
23
25
  Requires-Dist: mkdocs-material<9.7.0,>=9.6.0; extra == "docs"
@@ -26,7 +26,7 @@ tests/test_cli.py
26
26
  tests/test_create_manifest.py
27
27
  tests/test_create_schema_for_single_task.py
28
28
  tests/test_deepdiff.py
29
- tests/test_extract_function.py
29
+ tests/test_handle_functions.py
30
30
  tests/test_normalize_package_name.py
31
31
  tests/test_task_models.py
32
32
  tests/test_task_wrapper.py
@@ -1,4 +1,4 @@
1
- pydantic<=2.11.2,>=2.0.0
1
+ pydantic<=2.11.7,>=2.0.0
2
2
  docstring-parser<=0.16,>=0.15
3
3
  packaging
4
4
 
@@ -7,6 +7,8 @@ bumpver==2024.1130
7
7
  devtools==0.12.2
8
8
  pytest<9.0.0,>=8.3.0
9
9
  coverage<7.7.0,>=7.6.0
10
+ jsonschema>=4
11
+ requests<2.33.0,>2.32.0
10
12
 
11
13
  [docs]
12
14
  mkdocs<1.7.0,>=1.6.0
@@ -41,6 +41,14 @@ def test_create_manifest(tmp_path: Path, caplog):
41
41
  for task in manifest["task_list"]:
42
42
  assert "type" not in task.keys()
43
43
 
44
+ # SUCCESS: create manifest with `DOCS_LINK=""` transformed into `None`
45
+ manifest = create_manifest(
46
+ raw_package_name="fake-tasks",
47
+ task_list_path="task_list_with_empty_docs_link",
48
+ )
49
+ for task in manifest["task_list"]:
50
+ assert "docs_link" not in task.keys()
51
+
44
52
  # SUCCESS: create non-legacy manifest
45
53
  manifest = create_manifest(
46
54
  raw_package_name="fake-tasks",
@@ -1,5 +1,48 @@
1
+ import typing
2
+
1
3
  import pytest
2
4
  from fractal_task_tools._signature_constraints import _extract_function
5
+ from fractal_task_tools._signature_constraints import (
6
+ _validate_function_signature,
7
+ )
8
+
9
+
10
+ def test_validate_function_signature():
11
+ def fun1(args: list[str]):
12
+ pass
13
+
14
+ with pytest.raises(
15
+ ValueError,
16
+ match="argument with name args",
17
+ ):
18
+ _validate_function_signature(function=fun1)
19
+
20
+ def fun2(x: typing.Union[int, str]):
21
+ pass
22
+
23
+ with pytest.raises(
24
+ ValueError,
25
+ match="typing.Union is not supported",
26
+ ):
27
+ _validate_function_signature(function=fun2)
28
+
29
+ def fun3(x: int | str):
30
+ pass
31
+
32
+ with pytest.raises(
33
+ ValueError,
34
+ match='Use of "|',
35
+ ):
36
+ _validate_function_signature(function=fun3)
37
+
38
+ def fun4(x: typing.Optional[int] = 1):
39
+ pass
40
+
41
+ with pytest.raises(
42
+ ValueError,
43
+ match="Optional parameter has non-None default value",
44
+ ):
45
+ _validate_function_signature(function=fun4)
3
46
 
4
47
 
5
48
  def test_extract_function():
@@ -29,7 +29,6 @@ def fake_task_invalid_output(zarr_url: str, parameter: float):
29
29
 
30
30
 
31
31
  def test_run_fractal_task(tmp_path, monkeypatch, caplog):
32
-
33
32
  ARGS_PATH = tmp_path / "args.json"
34
33
  METADIFF_PATH = tmp_path / "metadiff.json"
35
34