fractal-server 2.8.0__py3-none-any.whl → 2.8.1__py3-none-any.whl
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.
- fractal_server/__init__.py +1 -1
- fractal_server/app/schemas/_validators.py +1 -1
- fractal_server/app/schemas/v2/dataset.py +1 -1
- fractal_server/app/schemas/v2/task_collection.py +13 -10
- fractal_server/string_tools.py +10 -3
- {fractal_server-2.8.0.dist-info → fractal_server-2.8.1.dist-info}/METADATA +1 -1
- {fractal_server-2.8.0.dist-info → fractal_server-2.8.1.dist-info}/RECORD +10 -10
- {fractal_server-2.8.0.dist-info → fractal_server-2.8.1.dist-info}/LICENSE +0 -0
- {fractal_server-2.8.0.dist-info → fractal_server-2.8.1.dist-info}/WHEEL +0 -0
- {fractal_server-2.8.0.dist-info → fractal_server-2.8.1.dist-info}/entry_points.txt +0 -0
fractal_server/__init__.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
__VERSION__ = "2.8.
|
1
|
+
__VERSION__ = "2.8.1"
|
@@ -74,7 +74,7 @@ def val_absolute_path(attribute: str, accept_none: bool = False):
|
|
74
74
|
Check that a string attribute is an absolute path
|
75
75
|
"""
|
76
76
|
|
77
|
-
def val(string: Optional[str]) -> str:
|
77
|
+
def val(string: Optional[str]) -> Optional[str]:
|
78
78
|
if string is None:
|
79
79
|
if accept_none:
|
80
80
|
return string
|
@@ -39,7 +39,7 @@ class DatasetCreateV2(BaseModel, extra=Extra.forbid):
|
|
39
39
|
|
40
40
|
# Validators
|
41
41
|
@validator("zarr_dir")
|
42
|
-
def normalize_zarr_dir(cls, v: str) -> str:
|
42
|
+
def normalize_zarr_dir(cls, v: Optional[str]) -> Optional[str]:
|
43
43
|
if v is not None:
|
44
44
|
return normalize_url(v)
|
45
45
|
return v
|
@@ -57,16 +57,8 @@ class TaskCollectPipV2(BaseModel, extra=Extra.forbid):
|
|
57
57
|
python_version: Optional[Literal["3.9", "3.10", "3.11", "3.12"]] = None
|
58
58
|
pinned_package_versions: Optional[dict[str, str]] = None
|
59
59
|
|
60
|
-
_package = validator("package", allow_reuse=True)(valstr("package"))
|
61
|
-
_package_version = validator("package_version", allow_reuse=True)(
|
62
|
-
valstr("package_version")
|
63
|
-
)
|
64
|
-
_package_extras = validator("package_extras", allow_reuse=True)(
|
65
|
-
valstr("package_extras")
|
66
|
-
)
|
67
|
-
|
68
60
|
@validator("pinned_package_versions")
|
69
|
-
def
|
61
|
+
def pinned_package_versions_validator(cls, value):
|
70
62
|
if value is None:
|
71
63
|
return value
|
72
64
|
old_keys = list(value.keys())
|
@@ -87,6 +79,7 @@ class TaskCollectPipV2(BaseModel, extra=Extra.forbid):
|
|
87
79
|
|
88
80
|
@validator("package")
|
89
81
|
def package_validator(cls, value):
|
82
|
+
value = valstr("package")(value)
|
90
83
|
if "/" in value or value.endswith(".whl"):
|
91
84
|
if not value.endswith(".whl"):
|
92
85
|
raise ValueError(
|
@@ -97,17 +90,27 @@ class TaskCollectPipV2(BaseModel, extra=Extra.forbid):
|
|
97
90
|
raise ValueError(
|
98
91
|
f"Local-package path must be absolute: (given {value})."
|
99
92
|
)
|
93
|
+
validate_cmd(value, attribute_name="package")
|
100
94
|
return value
|
101
95
|
|
102
96
|
@validator("package_version")
|
103
|
-
def package_version_validator(
|
97
|
+
def package_version_validator(
|
98
|
+
cls, v: Optional[str], values
|
99
|
+
) -> Optional[str]:
|
104
100
|
v = valstr("package_version")(v)
|
105
101
|
if values["package"].endswith(".whl"):
|
106
102
|
raise ValueError(
|
107
103
|
"Cannot provide package version when package is a wheel file."
|
108
104
|
)
|
105
|
+
validate_cmd(v, attribute_name="package_version")
|
109
106
|
return v
|
110
107
|
|
108
|
+
@validator("package_extras")
|
109
|
+
def package_extras_validator(cls, value: Optional[str]) -> Optional[str]:
|
110
|
+
value = valstr("package_extras")(value)
|
111
|
+
validate_cmd(value, attribute_name="package_extras")
|
112
|
+
return value
|
113
|
+
|
111
114
|
|
112
115
|
class TaskCollectCustomV2(BaseModel, extra=Extra.forbid):
|
113
116
|
"""
|
fractal_server/string_tools.py
CHANGED
@@ -54,7 +54,12 @@ def slugify_task_name_for_source_v1(task_name: str) -> str:
|
|
54
54
|
return task_name.replace(" ", "_").lower()
|
55
55
|
|
56
56
|
|
57
|
-
def validate_cmd(
|
57
|
+
def validate_cmd(
|
58
|
+
command: str,
|
59
|
+
*,
|
60
|
+
allow_char: Optional[str] = None,
|
61
|
+
attribute_name: str = "Command",
|
62
|
+
):
|
58
63
|
"""
|
59
64
|
Assert that the provided `command` does not contain any of the forbidden
|
60
65
|
characters for commands
|
@@ -63,6 +68,7 @@ def validate_cmd(command: str, allow_char: Optional[str] = None):
|
|
63
68
|
Args:
|
64
69
|
command: command to validate.
|
65
70
|
allow_char: chars to accept among the forbidden ones
|
71
|
+
attribute_name: Name of the attribute, to be used in error message.
|
66
72
|
"""
|
67
73
|
if not isinstance(command, str):
|
68
74
|
raise ValueError(f"{command=} is not a string.")
|
@@ -71,6 +77,7 @@ def validate_cmd(command: str, allow_char: Optional[str] = None):
|
|
71
77
|
forbidden = forbidden - set(allow_char)
|
72
78
|
if not forbidden.isdisjoint(set(command)):
|
73
79
|
raise ValueError(
|
74
|
-
f"
|
75
|
-
f"
|
80
|
+
f"{attribute_name} must not contain any of this characters: "
|
81
|
+
f"'{forbidden}'\n"
|
82
|
+
f"Provided {attribute_name.lower()}: '{command}'."
|
76
83
|
)
|
@@ -1,4 +1,4 @@
|
|
1
|
-
fractal_server/__init__.py,sha256=
|
1
|
+
fractal_server/__init__.py,sha256=_UadKzwkiZjaRG8tsoM0cHEnXlBYpVpNzh9Ld4g5XDg,22
|
2
2
|
fractal_server/__main__.py,sha256=dEkCfzLLQrIlxsGC-HBfoR-RBMWnJDgNrxYTyzmE9c0,6146
|
3
3
|
fractal_server/alembic.ini,sha256=MWwi7GzjzawI9cCAK1LW7NxIBQDUqD12-ptJoq5JpP0,3153
|
4
4
|
fractal_server/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -132,7 +132,7 @@ fractal_server/app/runner/v2/runner_functions_low_level.py,sha256=1fWvQ6YZUUnDhO
|
|
132
132
|
fractal_server/app/runner/v2/task_interface.py,sha256=hT3p-bRGsLNAR_dNv_PYFoqzIF_EQtSsGwl38j1haYA,1824
|
133
133
|
fractal_server/app/runner/versions.py,sha256=dSaPRWqmFPHjg20kTCHmi_dmGNcCETflDtDLronNanU,852
|
134
134
|
fractal_server/app/schemas/__init__.py,sha256=stURAU_t3AOBaH0HSUbV-GKhlPKngnnIMoqWc3orFyI,135
|
135
|
-
fractal_server/app/schemas/_validators.py,sha256=
|
135
|
+
fractal_server/app/schemas/_validators.py,sha256=3YBteFMxrEE9DOYlIHvIMsUOWTPSHEZlDL7dUQzBQjs,3616
|
136
136
|
fractal_server/app/schemas/user.py,sha256=aUD8YAcfYTEO06TEUoTx4heVrXFiX7E2Mb8D2--4FsA,2130
|
137
137
|
fractal_server/app/schemas/user_group.py,sha256=YwJvYgj-PI66LWy38CEd_FIZPsBV1_2N5zJPGFcFvBw,2143
|
138
138
|
fractal_server/app/schemas/user_settings.py,sha256=TalISeEfCrtN8LgqbLx1Q8ZPoeiZnbksg5NYAVzkIqY,3527
|
@@ -147,14 +147,14 @@ fractal_server/app/schemas/v1/task.py,sha256=7BxOZ_qoRQ8n3YbQpDvB7VMcxB5fSYQmR5R
|
|
147
147
|
fractal_server/app/schemas/v1/task_collection.py,sha256=uvq9bcMaGD_qHsh7YtcpoSAkVAbw12eY4DocIO3MKOg,3057
|
148
148
|
fractal_server/app/schemas/v1/workflow.py,sha256=tuOs5E5Q_ozA8if7YPZ07cQjzqB_QMkBS4u92qo4Ro0,4618
|
149
149
|
fractal_server/app/schemas/v2/__init__.py,sha256=97y6QY0I4322CPXQCt3WO3QBWhVkmFgwLn8y2ZwWNR0,2382
|
150
|
-
fractal_server/app/schemas/v2/dataset.py,sha256=
|
150
|
+
fractal_server/app/schemas/v2/dataset.py,sha256=Jipcj9LiOOipAeM2Ew113wuNQ6CrbC1nf3KwnNApBco,2638
|
151
151
|
fractal_server/app/schemas/v2/dumps.py,sha256=s6dg-pHZFui6t2Ktm0SMxjKDN-v-ZqBHz9iTsBQF3eU,1712
|
152
152
|
fractal_server/app/schemas/v2/job.py,sha256=oYSLYkQ0HL83QyjEGIaggtZ117FndzFlONMKWd9sTXM,3270
|
153
153
|
fractal_server/app/schemas/v2/manifest.py,sha256=Uqtd7DbyOkf9bxBOKkU7Sv7nToBIFGUcfjY7rd5iO7c,6981
|
154
154
|
fractal_server/app/schemas/v2/project.py,sha256=UXEA0UUUe0bFFOVLLmVtvDFLBO5vmD1JVI7EeTIcwDo,756
|
155
155
|
fractal_server/app/schemas/v2/status.py,sha256=SQaUpQkjFq5c5k5J4rOjNhuQaDOEg8lksPhkKmPU5VU,332
|
156
156
|
fractal_server/app/schemas/v2/task.py,sha256=FFAbYwDlqowB8gVMdjFVPVHvAM0T89PYLixUth49xfQ,6870
|
157
|
-
fractal_server/app/schemas/v2/task_collection.py,sha256=
|
157
|
+
fractal_server/app/schemas/v2/task_collection.py,sha256=56VWGwOZcgmfZ1bKz-_MSSO8HYwtMAKNBL5tfeQc7uQ,7000
|
158
158
|
fractal_server/app/schemas/v2/task_group.py,sha256=oWy7NNsw8Co85qpLyK8FPNTgpAMvx0ZuXjIOVZuLEpM,2466
|
159
159
|
fractal_server/app/schemas/v2/workflow.py,sha256=HSNQSrBRdoBzh8Igr76FUWCAWvVzykrqmUv1vGv-8og,2026
|
160
160
|
fractal_server/app/schemas/v2/workflowtask.py,sha256=vDdMktYbHeYBgB5OuWSv6wRPRXWqvetkeqQ7IC5YtfA,5751
|
@@ -200,7 +200,7 @@ fractal_server/migrations/versions/f384e1c0cf5d_drop_task_default_args_columns.p
|
|
200
200
|
fractal_server/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
201
201
|
fractal_server/ssh/__init__.py,sha256=sVUmzxf7_DuXG1xoLQ1_00fo5NPhi2LJipSmU5EAkPs,124
|
202
202
|
fractal_server/ssh/_fabric.py,sha256=Pha-gRVUImj1cMsxulrJzaQa6Z60CmMYRAS4o22FcP0,19506
|
203
|
-
fractal_server/string_tools.py,sha256=
|
203
|
+
fractal_server/string_tools.py,sha256=XtMNsr5R7GmgzmFi68zkKMedHs8vjGoVMMCXqWhIk9k,2568
|
204
204
|
fractal_server/syringe.py,sha256=3qSMW3YaMKKnLdgnooAINOPxnCOxP7y2jeAQYB21Gdo,2786
|
205
205
|
fractal_server/tasks/__init__.py,sha256=kadmVUoIghl8s190_Tt-8f-WBqMi8u8oU4Pvw39NHE8,23
|
206
206
|
fractal_server/tasks/utils.py,sha256=lJeaGX0xw4uE_dQGMnFAvmz03gUVh_nv8m47yuwFcKc,1340
|
@@ -226,8 +226,8 @@ fractal_server/tasks/v2/utils_templates.py,sha256=61uz9WSb4BDe6JUyJGiasw8BjVrPAm
|
|
226
226
|
fractal_server/urls.py,sha256=5o_qq7PzKKbwq12NHSQZDmDitn5RAOeQ4xufu-2v9Zk,448
|
227
227
|
fractal_server/utils.py,sha256=BTvNYA8xG-2K42x_hhsKmxrludbSvUbPpbWPq-Dousg,3481
|
228
228
|
fractal_server/zip_tools.py,sha256=xYpzBshysD2nmxkD5WLYqMzPYUcCRM3kYy-7n9bJL-U,4426
|
229
|
-
fractal_server-2.8.
|
230
|
-
fractal_server-2.8.
|
231
|
-
fractal_server-2.8.
|
232
|
-
fractal_server-2.8.
|
233
|
-
fractal_server-2.8.
|
229
|
+
fractal_server-2.8.1.dist-info/LICENSE,sha256=QKAharUuhxL58kSoLizKJeZE3mTCBnX6ucmz8W0lxlk,1576
|
230
|
+
fractal_server-2.8.1.dist-info/METADATA,sha256=Kg5Q0Ww6lgtblwriHrTueIpkYnal0gCmO9F3JMvf7jc,4588
|
231
|
+
fractal_server-2.8.1.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
232
|
+
fractal_server-2.8.1.dist-info/entry_points.txt,sha256=8tV2kynvFkjnhbtDnxAqImL6HMVKsopgGfew0DOp5UY,58
|
233
|
+
fractal_server-2.8.1.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|