fractal-server 2.11.0a0__py3-none-any.whl → 2.11.0a2__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/models/v2/dataset.py +9 -6
- fractal_server/app/models/v2/job.py +5 -0
- fractal_server/app/models/v2/workflowtask.py +5 -8
- fractal_server/app/routes/api/v2/_aux_functions.py +3 -10
- fractal_server/app/routes/api/v2/images.py +29 -6
- fractal_server/app/routes/api/v2/submit.py +5 -1
- fractal_server/app/routes/api/v2/workflowtask.py +3 -3
- fractal_server/app/runner/v2/__init__.py +1 -0
- fractal_server/app/runner/v2/_local/__init__.py +5 -0
- fractal_server/app/runner/v2/_local_experimental/__init__.py +5 -0
- fractal_server/app/runner/v2/_slurm_ssh/__init__.py +7 -3
- fractal_server/app/runner/v2/_slurm_sudo/__init__.py +5 -0
- fractal_server/app/runner/v2/merge_outputs.py +13 -16
- fractal_server/app/runner/v2/runner.py +33 -34
- fractal_server/app/runner/v2/task_interface.py +41 -2
- fractal_server/app/schemas/_filter_validators.py +47 -0
- fractal_server/app/schemas/_validators.py +13 -2
- fractal_server/app/schemas/v2/dataset.py +58 -12
- fractal_server/app/schemas/v2/dumps.py +6 -8
- fractal_server/app/schemas/v2/job.py +14 -0
- fractal_server/app/schemas/v2/task.py +9 -9
- fractal_server/app/schemas/v2/task_group.py +2 -2
- fractal_server/app/schemas/v2/workflowtask.py +42 -19
- fractal_server/data_migrations/2_11_0.py +67 -0
- fractal_server/images/__init__.py +0 -1
- fractal_server/images/models.py +12 -35
- fractal_server/images/tools.py +29 -13
- fractal_server/migrations/versions/db09233ad13a_split_filters_and_keep_old_columns.py +96 -0
- {fractal_server-2.11.0a0.dist-info → fractal_server-2.11.0a2.dist-info}/METADATA +1 -1
- {fractal_server-2.11.0a0.dist-info → fractal_server-2.11.0a2.dist-info}/RECORD +34 -31
- {fractal_server-2.11.0a0.dist-info → fractal_server-2.11.0a2.dist-info}/LICENSE +0 -0
- {fractal_server-2.11.0a0.dist-info → fractal_server-2.11.0a2.dist-info}/WHEEL +0 -0
- {fractal_server-2.11.0a0.dist-info → fractal_server-2.11.0a2.dist-info}/entry_points.txt +0 -0
fractal_server/images/models.py
CHANGED
@@ -3,15 +3,16 @@ from typing import Optional
|
|
3
3
|
from typing import Union
|
4
4
|
|
5
5
|
from pydantic import BaseModel
|
6
|
-
from pydantic import Extra
|
7
6
|
from pydantic import Field
|
8
7
|
from pydantic import validator
|
9
8
|
|
10
|
-
from fractal_server.app.schemas._validators import
|
9
|
+
from fractal_server.app.schemas._validators import valdict_keys
|
11
10
|
from fractal_server.urls import normalize_url
|
12
11
|
|
12
|
+
AttributeFiltersType = dict[str, Optional[list[Any]]]
|
13
13
|
|
14
|
-
|
14
|
+
|
15
|
+
class _SingleImageBase(BaseModel):
|
15
16
|
"""
|
16
17
|
Base for SingleImage and SingleImageTaskOutput.
|
17
18
|
|
@@ -30,9 +31,9 @@ class SingleImageBase(BaseModel):
|
|
30
31
|
|
31
32
|
# Validators
|
32
33
|
_attributes = validator("attributes", allow_reuse=True)(
|
33
|
-
|
34
|
+
valdict_keys("attributes")
|
34
35
|
)
|
35
|
-
_types = validator("types", allow_reuse=True)(
|
36
|
+
_types = validator("types", allow_reuse=True)(valdict_keys("types"))
|
36
37
|
|
37
38
|
@validator("zarr_url")
|
38
39
|
def normalize_zarr_url(cls, v: str) -> str:
|
@@ -44,7 +45,7 @@ class SingleImageBase(BaseModel):
|
|
44
45
|
return normalize_url(v)
|
45
46
|
|
46
47
|
|
47
|
-
class SingleImageTaskOutput(
|
48
|
+
class SingleImageTaskOutput(_SingleImageBase):
|
48
49
|
"""
|
49
50
|
`SingleImageBase`, with scalar `attributes` values (`None` included).
|
50
51
|
"""
|
@@ -63,7 +64,7 @@ class SingleImageTaskOutput(SingleImageBase):
|
|
63
64
|
return v
|
64
65
|
|
65
66
|
|
66
|
-
class SingleImage(
|
67
|
+
class SingleImage(_SingleImageBase):
|
67
68
|
"""
|
68
69
|
`SingleImageBase`, with scalar `attributes` values (`None` excluded).
|
69
70
|
"""
|
@@ -83,8 +84,8 @@ class SingleImage(SingleImageBase):
|
|
83
84
|
|
84
85
|
class SingleImageUpdate(BaseModel):
|
85
86
|
zarr_url: str
|
86
|
-
attributes: Optional[dict[str, Any]]
|
87
|
-
types: Optional[dict[str, bool]]
|
87
|
+
attributes: Optional[dict[str, Any]] = None
|
88
|
+
types: Optional[dict[str, bool]] = None
|
88
89
|
|
89
90
|
@validator("zarr_url")
|
90
91
|
def normalize_zarr_url(cls, v: str) -> str:
|
@@ -96,7 +97,7 @@ class SingleImageUpdate(BaseModel):
|
|
96
97
|
) -> dict[str, Union[int, float, str, bool]]:
|
97
98
|
if v is not None:
|
98
99
|
# validate keys
|
99
|
-
|
100
|
+
valdict_keys("attributes")(v)
|
100
101
|
# validate values
|
101
102
|
for key, value in v.items():
|
102
103
|
if not isinstance(value, (int, float, str, bool)):
|
@@ -107,28 +108,4 @@ class SingleImageUpdate(BaseModel):
|
|
107
108
|
)
|
108
109
|
return v
|
109
110
|
|
110
|
-
_types = validator("types", allow_reuse=True)(
|
111
|
-
|
112
|
-
|
113
|
-
class Filters(BaseModel, extra=Extra.forbid):
|
114
|
-
attributes: dict[str, Any] = Field(default_factory=dict)
|
115
|
-
types: dict[str, bool] = Field(default_factory=dict)
|
116
|
-
|
117
|
-
# Validators
|
118
|
-
_attributes = validator("attributes", allow_reuse=True)(
|
119
|
-
valdictkeys("attributes")
|
120
|
-
)
|
121
|
-
_types = validator("types", allow_reuse=True)(valdictkeys("types"))
|
122
|
-
|
123
|
-
@validator("attributes")
|
124
|
-
def validate_attributes(
|
125
|
-
cls, v: dict[str, Any]
|
126
|
-
) -> dict[str, Union[int, float, str, bool, None]]:
|
127
|
-
for key, value in v.items():
|
128
|
-
if not isinstance(value, (int, float, str, bool, type(None))):
|
129
|
-
raise ValueError(
|
130
|
-
f"Filters.attributes[{key}] must be a scalar "
|
131
|
-
"(int, float, str, bool, or None). "
|
132
|
-
f"Given {value} ({type(value)})"
|
133
|
-
)
|
134
|
-
return v
|
111
|
+
_types = validator("types", allow_reuse=True)(valdict_keys("types"))
|
fractal_server/images/tools.py
CHANGED
@@ -4,8 +4,7 @@ from typing import Literal
|
|
4
4
|
from typing import Optional
|
5
5
|
from typing import Union
|
6
6
|
|
7
|
-
from fractal_server.images import
|
8
|
-
|
7
|
+
from fractal_server.images.models import AttributeFiltersType
|
9
8
|
|
10
9
|
ImageSearch = dict[Literal["image", "index"], Union[int, dict[str, Any]]]
|
11
10
|
|
@@ -33,52 +32,69 @@ def find_image_by_zarr_url(
|
|
33
32
|
return dict(image=copy(images[ind]), index=ind)
|
34
33
|
|
35
34
|
|
36
|
-
def match_filter(
|
35
|
+
def match_filter(
|
36
|
+
*,
|
37
|
+
image: dict[str, Any],
|
38
|
+
type_filters: dict[str, bool],
|
39
|
+
attribute_filters: AttributeFiltersType,
|
40
|
+
) -> bool:
|
37
41
|
"""
|
38
42
|
Find whether an image matches a filter set.
|
39
43
|
|
40
44
|
Arguments:
|
41
45
|
image: A single image.
|
42
|
-
|
46
|
+
type_filters:
|
47
|
+
attribute_filters:
|
43
48
|
|
44
49
|
Returns:
|
45
50
|
Whether the image matches the filter set.
|
46
51
|
"""
|
52
|
+
|
47
53
|
# Verify match with types (using a False default)
|
48
|
-
for key, value in
|
54
|
+
for key, value in type_filters.items():
|
49
55
|
if image["types"].get(key, False) != value:
|
50
56
|
return False
|
51
|
-
|
52
|
-
|
53
|
-
|
57
|
+
|
58
|
+
# Verify match with attributes (only for not-None filters)
|
59
|
+
for key, values in attribute_filters.items():
|
60
|
+
if values is None:
|
54
61
|
continue
|
55
|
-
if image["attributes"].get(key)
|
62
|
+
if image["attributes"].get(key) not in values:
|
56
63
|
return False
|
64
|
+
|
57
65
|
return True
|
58
66
|
|
59
67
|
|
60
68
|
def filter_image_list(
|
61
69
|
images: list[dict[str, Any]],
|
62
|
-
|
70
|
+
type_filters: Optional[dict[str, bool]] = None,
|
71
|
+
attribute_filters: Optional[AttributeFiltersType] = None,
|
63
72
|
) -> list[dict[str, Any]]:
|
64
73
|
"""
|
65
74
|
Compute a sublist with images that match a filter set.
|
66
75
|
|
67
76
|
Arguments:
|
68
77
|
images: A list of images.
|
69
|
-
|
78
|
+
type_filters:
|
79
|
+
attribute_filters:
|
70
80
|
|
71
81
|
Returns:
|
72
82
|
List of the `images` elements which match the filter set.
|
73
83
|
"""
|
74
84
|
|
75
85
|
# When no filter is provided, return all images
|
76
|
-
if
|
86
|
+
if type_filters is None and attribute_filters is None:
|
77
87
|
return images
|
88
|
+
actual_type_filters = type_filters or {}
|
89
|
+
actual_attribute_filters = attribute_filters or {}
|
78
90
|
|
79
91
|
filtered_images = [
|
80
92
|
copy(this_image)
|
81
93
|
for this_image in images
|
82
|
-
if match_filter(
|
94
|
+
if match_filter(
|
95
|
+
image=this_image,
|
96
|
+
type_filters=actual_type_filters,
|
97
|
+
attribute_filters=actual_attribute_filters,
|
98
|
+
)
|
83
99
|
]
|
84
100
|
return filtered_images
|
@@ -0,0 +1,96 @@
|
|
1
|
+
"""split filters and keep old columns
|
2
|
+
|
3
|
+
Revision ID: db09233ad13a
|
4
|
+
Revises: 316140ff7ee1
|
5
|
+
Create Date: 2025-01-14 14:50:46.007222
|
6
|
+
|
7
|
+
"""
|
8
|
+
import sqlalchemy as sa
|
9
|
+
from alembic import op
|
10
|
+
from sqlalchemy.dialects import postgresql
|
11
|
+
|
12
|
+
# revision identifiers, used by Alembic.
|
13
|
+
revision = "db09233ad13a"
|
14
|
+
down_revision = "316140ff7ee1"
|
15
|
+
branch_labels = None
|
16
|
+
depends_on = None
|
17
|
+
|
18
|
+
|
19
|
+
def upgrade() -> None:
|
20
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
21
|
+
with op.batch_alter_table("datasetv2", schema=None) as batch_op:
|
22
|
+
batch_op.add_column(
|
23
|
+
sa.Column(
|
24
|
+
"type_filters", sa.JSON(), server_default="{}", nullable=False
|
25
|
+
)
|
26
|
+
)
|
27
|
+
batch_op.add_column(
|
28
|
+
sa.Column(
|
29
|
+
"attribute_filters",
|
30
|
+
sa.JSON(),
|
31
|
+
server_default="{}",
|
32
|
+
nullable=False,
|
33
|
+
)
|
34
|
+
)
|
35
|
+
batch_op.alter_column(
|
36
|
+
"filters",
|
37
|
+
existing_type=postgresql.JSON(astext_type=sa.Text()),
|
38
|
+
nullable=True,
|
39
|
+
server_default="null",
|
40
|
+
)
|
41
|
+
|
42
|
+
with op.batch_alter_table("jobv2", schema=None) as batch_op:
|
43
|
+
batch_op.add_column(
|
44
|
+
sa.Column(
|
45
|
+
"attribute_filters",
|
46
|
+
sa.JSON(),
|
47
|
+
server_default="{}",
|
48
|
+
nullable=False,
|
49
|
+
)
|
50
|
+
)
|
51
|
+
|
52
|
+
with op.batch_alter_table("workflowtaskv2", schema=None) as batch_op:
|
53
|
+
batch_op.add_column(
|
54
|
+
sa.Column(
|
55
|
+
"type_filters", sa.JSON(), server_default="{}", nullable=False
|
56
|
+
)
|
57
|
+
)
|
58
|
+
batch_op.alter_column(
|
59
|
+
"input_filters",
|
60
|
+
existing_type=postgresql.JSON(astext_type=sa.Text()),
|
61
|
+
nullable=True,
|
62
|
+
server_default="null",
|
63
|
+
)
|
64
|
+
|
65
|
+
# ### end Alembic commands ###
|
66
|
+
|
67
|
+
|
68
|
+
def downgrade() -> None:
|
69
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
70
|
+
with op.batch_alter_table("workflowtaskv2", schema=None) as batch_op:
|
71
|
+
batch_op.alter_column(
|
72
|
+
"input_filters",
|
73
|
+
existing_type=postgresql.JSON(astext_type=sa.Text()),
|
74
|
+
nullable=False,
|
75
|
+
existing_server_default=sa.text(
|
76
|
+
'\'{"attributes": {}, "types": {}}\'::json'
|
77
|
+
),
|
78
|
+
)
|
79
|
+
batch_op.drop_column("type_filters")
|
80
|
+
|
81
|
+
with op.batch_alter_table("jobv2", schema=None) as batch_op:
|
82
|
+
batch_op.drop_column("attribute_filters")
|
83
|
+
|
84
|
+
with op.batch_alter_table("datasetv2", schema=None) as batch_op:
|
85
|
+
batch_op.alter_column(
|
86
|
+
"filters",
|
87
|
+
existing_type=postgresql.JSON(astext_type=sa.Text()),
|
88
|
+
nullable=False,
|
89
|
+
existing_server_default=sa.text(
|
90
|
+
'\'{"attributes": {}, "types": {}}\'::json'
|
91
|
+
),
|
92
|
+
)
|
93
|
+
batch_op.drop_column("attribute_filters")
|
94
|
+
batch_op.drop_column("type_filters")
|
95
|
+
|
96
|
+
# ### end Alembic commands ###
|
@@ -1,4 +1,4 @@
|
|
1
|
-
fractal_server/__init__.py,sha256=
|
1
|
+
fractal_server/__init__.py,sha256=cLEMnMolltFsZpt1oovn_8aqXHHx58LNsl6plIarbDM,25
|
2
2
|
fractal_server/__main__.py,sha256=D2YTmSowmXNyvqOjW_HeItCZT2UliWlySl_owicaZg0,8026
|
3
3
|
fractal_server/alembic.ini,sha256=MWwi7GzjzawI9cCAK1LW7NxIBQDUqD12-ptJoq5JpP0,3153
|
4
4
|
fractal_server/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -16,13 +16,13 @@ fractal_server/app/models/v1/state.py,sha256=m9gMZqqnm3oDpJNJp-Lht4kM7oO7pcEI7sL
|
|
16
16
|
fractal_server/app/models/v1/task.py,sha256=uFXam7eu3Ye1Yt7_g7llCzY8BetmDRilsq5hR2C1Zbg,2640
|
17
17
|
fractal_server/app/models/v1/workflow.py,sha256=dnY5eMaOe3oZv8arn00RNX9qVkBtTLG-vYdWXcQuyo4,3950
|
18
18
|
fractal_server/app/models/v2/__init__.py,sha256=63THGEZQlxWcosGCI74SEvJU7wOoOn1j1byTjf4NFOI,526
|
19
|
-
fractal_server/app/models/v2/dataset.py,sha256
|
20
|
-
fractal_server/app/models/v2/job.py,sha256=
|
19
|
+
fractal_server/app/models/v2/dataset.py,sha256=gO_V_Fsmw44uB1Nc6MLBVOGxQeutxpDi8nvhhwkggbE,1696
|
20
|
+
fractal_server/app/models/v2/job.py,sha256=BMmu5oXdZvN7jEIAMZvQMB3PQBcCYzxn6Qm6HdRWre4,1725
|
21
21
|
fractal_server/app/models/v2/project.py,sha256=rAHoh5KfYwIaW7rTX0_O0jvWmxEvfo1BafvmcXuSSRk,786
|
22
22
|
fractal_server/app/models/v2/task.py,sha256=jebD28Pz8tGcsWCItxj6uKjcD8BMMnnU8dqYhvhEB6c,1520
|
23
23
|
fractal_server/app/models/v2/task_group.py,sha256=Sd-fb7EN18eOxrS-RT4ekczLWp-tQcbX5C4LrcmjoIM,3443
|
24
24
|
fractal_server/app/models/v2/workflow.py,sha256=YBgFGCziUgU0aJ5EM3Svu9W2c46AewZO9VBlFCHiSps,1069
|
25
|
-
fractal_server/app/models/v2/workflowtask.py,sha256=
|
25
|
+
fractal_server/app/models/v2/workflowtask.py,sha256=nidHo87GNgMVvL2WDm0HOfGLwGY3m65GTDAInwbqk1Q,1312
|
26
26
|
fractal_server/app/routes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
27
27
|
fractal_server/app/routes/admin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
28
28
|
fractal_server/app/routes/admin/v1.py,sha256=ggJZMeKhRijfVe2h2VzfIcpR15FqkKImANhkTXl0mSk,12908
|
@@ -43,15 +43,15 @@ fractal_server/app/routes/api/v1/task_collection.py,sha256=5EMh3yhS1Z4x25kp5Iaxa
|
|
43
43
|
fractal_server/app/routes/api/v1/workflow.py,sha256=2T93DuEnSshaDCue-JPmjuvGCtbk6lt9pFMuPt783t8,11217
|
44
44
|
fractal_server/app/routes/api/v1/workflowtask.py,sha256=OYYConwJbmNULDw5I3T-UbSJKrbbBiAHbbBeVcpoFKQ,5785
|
45
45
|
fractal_server/app/routes/api/v2/__init__.py,sha256=w4c9WzagaVV5d4TWBX5buu5ENk8jf3YftMQYmhavz9Q,2172
|
46
|
-
fractal_server/app/routes/api/v2/_aux_functions.py,sha256=
|
46
|
+
fractal_server/app/routes/api/v2/_aux_functions.py,sha256=NJ6_1biN_hhIEK1w8Vj6XhLmdkQ5kMVd_MX5JC_nHLU,11524
|
47
47
|
fractal_server/app/routes/api/v2/_aux_functions_task_lifecycle.py,sha256=c8eqPXdMhc3nIixX50B1Ka5n7LgbOZm2JbEs7lICQ04,6767
|
48
48
|
fractal_server/app/routes/api/v2/_aux_functions_tasks.py,sha256=PuapLtvSk9yhBAsKNEp1w2oagOMr0YZTo247-CU3hdM,11008
|
49
49
|
fractal_server/app/routes/api/v2/dataset.py,sha256=Y6uZz--YSEGgnPYu05rZ9sr1Ug08bNl2v1h3VeApBe8,9441
|
50
|
-
fractal_server/app/routes/api/v2/images.py,sha256=
|
50
|
+
fractal_server/app/routes/api/v2/images.py,sha256=EI2Gu4vNVepXDBRjQLtU2Il3ciQSY9fpEyIsGEm8UVU,8845
|
51
51
|
fractal_server/app/routes/api/v2/job.py,sha256=Bga2Kz1OjvDIdxZObWaaXVhNIhC_5JKhKRjEH2_ayEE,5157
|
52
52
|
fractal_server/app/routes/api/v2/project.py,sha256=eWYFJ7F2ZYQcpi-_n-rhPF-Q4gJhzYBsVGYFhHZZXAE,6653
|
53
53
|
fractal_server/app/routes/api/v2/status.py,sha256=_cDZW-ESYw6zpf-lLFFqko5bLpKhqKrCM6yv1OfqxN4,6300
|
54
|
-
fractal_server/app/routes/api/v2/submit.py,sha256=
|
54
|
+
fractal_server/app/routes/api/v2/submit.py,sha256=Vxvqgu9nh0UCAXEYGEl_XvEfudCrvl_H2nmZwvsFzTo,8429
|
55
55
|
fractal_server/app/routes/api/v2/task.py,sha256=K0ik33t7vL8BAK5S7fqyJDNdRK4stGqb_73bSa8tvPE,7159
|
56
56
|
fractal_server/app/routes/api/v2/task_collection.py,sha256=9p8w9UnN6RFszC1ohy9Uo3I4HIMVdfD8fYGWuQqzxMU,12682
|
57
57
|
fractal_server/app/routes/api/v2/task_collection_custom.py,sha256=cctW61-C2QYF2KXluS15lLhZJS_kt30Ca6UGLFO32z0,6207
|
@@ -59,7 +59,7 @@ fractal_server/app/routes/api/v2/task_group.py,sha256=4o2N0z7jK7VUVlJZMM4GveCCc4
|
|
59
59
|
fractal_server/app/routes/api/v2/task_group_lifecycle.py,sha256=3o9bCC8ubMwffQPPaxQZy-CjH9IB2RkIReIecI6L2_w,9300
|
60
60
|
fractal_server/app/routes/api/v2/workflow.py,sha256=vjCNRzMHaAB4YWbAEWGlELHXDN4GjtE26IkIiB15RGM,8682
|
61
61
|
fractal_server/app/routes/api/v2/workflow_import.py,sha256=-7Er3FWGF_1xI2qHFO9gfLVQAok5bojd7mbzQxa9Ofw,10858
|
62
|
-
fractal_server/app/routes/api/v2/workflowtask.py,sha256=
|
62
|
+
fractal_server/app/routes/api/v2/workflowtask.py,sha256=NueHDKbrPWxP4Jo2hpBvuU_XBCccAyoeZOBNybF74zg,10709
|
63
63
|
fractal_server/app/routes/auth/__init__.py,sha256=fao6CS0WiAjHDTvBzgBVV_bSXFpEAeDBF6Z6q7rRkPc,1658
|
64
64
|
fractal_server/app/routes/auth/_aux_auth.py,sha256=ifkNocTYatBSMYGwiR14qohmvR9SfMldceiEj6uJBrU,4783
|
65
65
|
fractal_server/app/routes/auth/current_user.py,sha256=I3aVY5etWAJ_SH6t65Mj5TjvB2X8sAGuu1KG7FxLyPU,5883
|
@@ -110,31 +110,32 @@ fractal_server/app/runner/v1/_slurm/_submit_setup.py,sha256=KO9c694d318adoPQh9UG
|
|
110
110
|
fractal_server/app/runner/v1/_slurm/get_slurm_config.py,sha256=6pQNNx997bLIfLp0guF09t_O0ZYRXnbEGLktSAcKnic,5999
|
111
111
|
fractal_server/app/runner/v1/common.py,sha256=_L-vjLnWato80VdlB_BFN4G8P4jSM07u-5cnl1T3S34,3294
|
112
112
|
fractal_server/app/runner/v1/handle_failed_job.py,sha256=R8IsM_ucX0_lqFCly8BYuzf-VAVafE5wj_1JXapnxeQ,4696
|
113
|
-
fractal_server/app/runner/v2/__init__.py,sha256=
|
114
|
-
fractal_server/app/runner/v2/_local/__init__.py,sha256=
|
113
|
+
fractal_server/app/runner/v2/__init__.py,sha256=s28z04JgwdXsvd5nA87NBTLza-syEar-TsvZQp6M8wI,15241
|
114
|
+
fractal_server/app/runner/v2/_local/__init__.py,sha256=QilCzO5E26E48pFViBDGTU5NDB2AgehROQNJgQCZREU,5799
|
115
115
|
fractal_server/app/runner/v2/_local/_local_config.py,sha256=9oi209Dlp35ANfxb_DISqmMKKc6DPaMsmYVWbZLseME,3630
|
116
116
|
fractal_server/app/runner/v2/_local/_submit_setup.py,sha256=MucNOo8Er0F5ZIwH7CnTeXgnFMc6d3pKPkv563QNVi0,1630
|
117
117
|
fractal_server/app/runner/v2/_local/executor.py,sha256=QrJlD77G6q4WohoJQO7XXbvi2RlCUsNvMnPDEZIoAqA,3620
|
118
|
-
fractal_server/app/runner/v2/_local_experimental/__init__.py,sha256
|
118
|
+
fractal_server/app/runner/v2/_local_experimental/__init__.py,sha256=-_s4pi0mF1tthvWGCZr8lqNSzPOXEnWrcYZrXO2_bUc,5521
|
119
119
|
fractal_server/app/runner/v2/_local_experimental/_local_config.py,sha256=QiS5ODe-iGmUQdIT8QgpbyMc7-ZpIRv1V_f2q3qfPQ8,3211
|
120
120
|
fractal_server/app/runner/v2/_local_experimental/_submit_setup.py,sha256=we7r-sQf0CJ9gxbfbgHcYdC6pKjx8eXweljIjthxkv8,1212
|
121
121
|
fractal_server/app/runner/v2/_local_experimental/executor.py,sha256=plvEqqdcXOSohYsQoykYlyDwCING7OO5h-4XAZtwdPs,5503
|
122
122
|
fractal_server/app/runner/v2/_slurm_common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
123
123
|
fractal_server/app/runner/v2/_slurm_common/get_slurm_config.py,sha256=UdkoFF0HF_TdKbay-d9bjkxT2ltcOE5i8H_FoOu64HU,6202
|
124
|
-
fractal_server/app/runner/v2/_slurm_ssh/__init__.py,sha256=
|
124
|
+
fractal_server/app/runner/v2/_slurm_ssh/__init__.py,sha256=51XQJANan0DrL63LMK3Kfzx5QXPKcYSwiVgBy0IsNCM,4416
|
125
125
|
fractal_server/app/runner/v2/_slurm_ssh/_submit_setup.py,sha256=a5_FDPH_yxYmrjAjMRLgh_Y4DSG3mRslCLQodGM3-t4,2838
|
126
|
-
fractal_server/app/runner/v2/_slurm_sudo/__init__.py,sha256=
|
126
|
+
fractal_server/app/runner/v2/_slurm_sudo/__init__.py,sha256=sGc1wGMPD6yQv6-MmTTGmHoXq-PRzEoJKoajjYl8N4c,4200
|
127
127
|
fractal_server/app/runner/v2/_slurm_sudo/_submit_setup.py,sha256=a5_FDPH_yxYmrjAjMRLgh_Y4DSG3mRslCLQodGM3-t4,2838
|
128
128
|
fractal_server/app/runner/v2/deduplicate_list.py,sha256=-imwO7OB7ATADEnqVbTElUwoY0YIJCTf_SbWJNN9OZg,639
|
129
129
|
fractal_server/app/runner/v2/handle_failed_job.py,sha256=-zFWw4d208bQEFUF_sAdH2LdHEARyg1FC8BENr1SjhU,2045
|
130
|
-
fractal_server/app/runner/v2/merge_outputs.py,sha256=
|
131
|
-
fractal_server/app/runner/v2/runner.py,sha256=
|
130
|
+
fractal_server/app/runner/v2/merge_outputs.py,sha256=DW1d-fT0UcSnJUmz8xfU-AEeI7p_G0aQ_lNpDAe9C2o,1226
|
131
|
+
fractal_server/app/runner/v2/runner.py,sha256=tdEjF2SWwDKXCHXz0wFRtKTRCG2I5BSjuqY08YSjMHs,12906
|
132
132
|
fractal_server/app/runner/v2/runner_functions.py,sha256=BLREIcQaE6FSc2AEJyZuiYk6rGazEz_9gprUqUZDljs,9488
|
133
133
|
fractal_server/app/runner/v2/runner_functions_low_level.py,sha256=1fWvQ6YZUUnDhO_mipXC5hnaT-zK-GHxg8ayoxZX82k,3648
|
134
|
-
fractal_server/app/runner/v2/task_interface.py,sha256=
|
134
|
+
fractal_server/app/runner/v2/task_interface.py,sha256=DU0fppTqvwhVkKwjPvfWPuZt09rV7AV2U5Vpu5CRqX8,3268
|
135
135
|
fractal_server/app/runner/versions.py,sha256=dSaPRWqmFPHjg20kTCHmi_dmGNcCETflDtDLronNanU,852
|
136
136
|
fractal_server/app/schemas/__init__.py,sha256=stURAU_t3AOBaH0HSUbV-GKhlPKngnnIMoqWc3orFyI,135
|
137
|
-
fractal_server/app/schemas/
|
137
|
+
fractal_server/app/schemas/_filter_validators.py,sha256=9oGzf1yghFkIMbzluvxeRCjPei8V7dn7ot4ggQUmz8w,1731
|
138
|
+
fractal_server/app/schemas/_validators.py,sha256=3dotVxUHWKAmUO3aeoluYDLRKrw1OS-NxcZ4Fg_HOYk,3560
|
138
139
|
fractal_server/app/schemas/user.py,sha256=icjox9gK_invW44Nh_L4CvqfRa92qghyQhmevyg09nQ,2243
|
139
140
|
fractal_server/app/schemas/user_group.py,sha256=t30Kd07PY43G_AqFDb8vjdInTeLeU9WvFZDx8fVLPSI,1750
|
140
141
|
fractal_server/app/schemas/user_settings.py,sha256=re7ZFS8BLjR9MdIoZNRt2DNPc7znCgDpEYFKr8ZsAZg,2980
|
@@ -149,27 +150,28 @@ fractal_server/app/schemas/v1/task.py,sha256=7BxOZ_qoRQ8n3YbQpDvB7VMcxB5fSYQmR5R
|
|
149
150
|
fractal_server/app/schemas/v1/task_collection.py,sha256=uvq9bcMaGD_qHsh7YtcpoSAkVAbw12eY4DocIO3MKOg,3057
|
150
151
|
fractal_server/app/schemas/v1/workflow.py,sha256=oRKamLSuAgrTcv3gMMxGcotDloLL2c3NNgPA39UEmmM,4467
|
151
152
|
fractal_server/app/schemas/v2/__init__.py,sha256=IT2a6fbRx3rt8h6jri_4gZWzTN9EVXewiWoIuBcZ-xA,2618
|
152
|
-
fractal_server/app/schemas/v2/dataset.py,sha256=
|
153
|
-
fractal_server/app/schemas/v2/dumps.py,sha256=
|
154
|
-
fractal_server/app/schemas/v2/job.py,sha256=
|
153
|
+
fractal_server/app/schemas/v2/dataset.py,sha256=qf8JtNbJUSeCTNlR0dXu9iIpkSEM_18StUmc7hcSXls,4049
|
154
|
+
fractal_server/app/schemas/v2/dumps.py,sha256=Yiyma6pMnEk1c-Ekf0e-IWgM20_R4qWyHuoqfdc6brE,1635
|
155
|
+
fractal_server/app/schemas/v2/job.py,sha256=qIisYTznE1mU6z65zxbOqSTOlkeFvncqbFLzyVyN12Y,3589
|
155
156
|
fractal_server/app/schemas/v2/manifest.py,sha256=Uqtd7DbyOkf9bxBOKkU7Sv7nToBIFGUcfjY7rd5iO7c,6981
|
156
157
|
fractal_server/app/schemas/v2/project.py,sha256=ABv9LSLVCq1QYthEhBvZOTn_4DFEC-7cH28tFGFdM7I,589
|
157
158
|
fractal_server/app/schemas/v2/status.py,sha256=SQaUpQkjFq5c5k5J4rOjNhuQaDOEg8lksPhkKmPU5VU,332
|
158
|
-
fractal_server/app/schemas/v2/task.py,sha256=
|
159
|
+
fractal_server/app/schemas/v2/task.py,sha256=9W4xe-p19pbLpjsNJrYVIMpkrlwuCxGAJNO_gl0TfMc,6879
|
159
160
|
fractal_server/app/schemas/v2/task_collection.py,sha256=9c_yyFcVBXdAZpQQniy1bROhYnQT7G1BflOpMY1joPE,6250
|
160
|
-
fractal_server/app/schemas/v2/task_group.py,sha256=
|
161
|
+
fractal_server/app/schemas/v2/task_group.py,sha256=zZfvAH7c3MZC4_An09TMuOkNE_e1Z9XsYEnmN-axHdU,3217
|
161
162
|
fractal_server/app/schemas/v2/workflow.py,sha256=-KWvXnbHBFA3pj5n7mfSyLKJQSqkJmoziIEe7mpLl3M,1875
|
162
|
-
fractal_server/app/schemas/v2/workflowtask.py,sha256=
|
163
|
+
fractal_server/app/schemas/v2/workflowtask.py,sha256=EBmKuLmQeXsM-20DAOWFSxu3EPXRAb5RV66tkGRAiF8,6686
|
163
164
|
fractal_server/app/security/__init__.py,sha256=qn6idYgl-p5HWea0gTVnz4JnkoxGEkmQjPzvKpDWT0I,14035
|
164
165
|
fractal_server/app/security/signup_email.py,sha256=DrL51UdTSrgjleynMD5CRZwTSOpPrZ96fasRV0fvxDE,1165
|
165
166
|
fractal_server/app/user_settings.py,sha256=OP1yiYKtPadxwM51_Q0hdPk3z90TCN4z1BLpQsXyWiU,1316
|
166
167
|
fractal_server/config.py,sha256=9rAzw7OO6ZeHEz-I8NJHuGoHf4xCHxfFLyRNZQD9ytY,27019
|
168
|
+
fractal_server/data_migrations/2_11_0.py,sha256=PPFg1GxpfW5hElwzr_kx0_fYuEaNSyH23uCxztExO14,2411
|
167
169
|
fractal_server/data_migrations/README.md,sha256=_3AEFvDg9YkybDqCLlFPdDmGJvr6Tw7HRI14aZ3LOIw,398
|
168
170
|
fractal_server/data_migrations/tools.py,sha256=LeMeASwYGtEqd-3wOLle6WARdTGAimoyMmRbbJl-hAM,572
|
169
171
|
fractal_server/gunicorn_fractal.py,sha256=u6U01TLGlXgq1v8QmEpLih3QnsInZD7CqphgJ_GrGzc,1230
|
170
|
-
fractal_server/images/__init__.py,sha256
|
171
|
-
fractal_server/images/models.py,sha256=
|
172
|
-
fractal_server/images/tools.py,sha256=
|
172
|
+
fractal_server/images/__init__.py,sha256=-_wjoKtSX02P1KjDxDP_EXKvmbONTRmbf7iGVTsyBpM,154
|
173
|
+
fractal_server/images/models.py,sha256=fAecChXhs4utRX4123Lgz5e_b_H0YtHrvNHCenR7tOs,3359
|
174
|
+
fractal_server/images/tools.py,sha256=VFjm5pCOWjc2ms0t0s4nH6bK53ZU867JDL5oTEm4M1Q,2648
|
173
175
|
fractal_server/logger.py,sha256=zwg_AjIHkNP0ruciXjm5lI5UFP3n6tMHullsM9lDjz4,5039
|
174
176
|
fractal_server/main.py,sha256=gStLT9Du5QMpc9SyvRvtKU21EKwp-dG4HL3zGHzE06A,4908
|
175
177
|
fractal_server/migrations/env.py,sha256=9t_OeKVlhM8WRcukmTrLbWNup-imiBGP_9xNgwCbtpI,2730
|
@@ -197,6 +199,7 @@ fractal_server/migrations/versions/a7f4d6137b53_add_workflow_dump_to_applyworkfl
|
|
197
199
|
fractal_server/migrations/versions/d256a7379ab8_taskgroup_activity_and_venv_info_to_.py,sha256=HN3_Pk8G81SzdYjg4K1RZAyjKSlsZGvcYE2nWOUbwxQ,3861
|
198
200
|
fractal_server/migrations/versions/d4fe3708d309_make_applyworkflow_workflow_dump_non_.py,sha256=6cHEZFuTXiQg9yu32Y3RH1XAl71av141WQ6UMbiITIg,949
|
199
201
|
fractal_server/migrations/versions/da2cb2ac4255_user_group_viewer_paths.py,sha256=yGWSA2HIHUybcVy66xBITk08opV2DFYSCIIrulaUZhI,901
|
202
|
+
fractal_server/migrations/versions/db09233ad13a_split_filters_and_keep_old_columns.py,sha256=NumyjvciIjgShLZcmpDvh3ggJxnc-W1kc7vofrpcNOs,2906
|
200
203
|
fractal_server/migrations/versions/e75cac726012_make_applyworkflow_start_timestamp_not_.py,sha256=lOggSvzGWqQvnxxFuSM6W50Ui49R918A-uBuiZJ0pNM,963
|
201
204
|
fractal_server/migrations/versions/efa89c30e0a4_add_project_timestamp_created.py,sha256=jilQW3QIqYQ4Q6hCnUiG7UtNMpA41ujqrB3tPFiPM1Q,1221
|
202
205
|
fractal_server/migrations/versions/f384e1c0cf5d_drop_task_default_args_columns.py,sha256=9BwqUS9Gf7UW_KjrzHbtViC880qhD452KAytkHWWZyk,746
|
@@ -238,8 +241,8 @@ fractal_server/tasks/v2/utils_templates.py,sha256=07TZpJ0Mh_A4lXVXrrH2o1VLFFGwxe
|
|
238
241
|
fractal_server/urls.py,sha256=QjIKAC1a46bCdiPMu3AlpgFbcv6a4l3ABcd5xz190Og,471
|
239
242
|
fractal_server/utils.py,sha256=utvmBx8K9I8hRWFquxna2pBaOqe0JifDL_NVPmihEJI,3525
|
240
243
|
fractal_server/zip_tools.py,sha256=GjDgo_sf6V_DDg6wWeBlZu5zypIxycn_l257p_YVKGc,4876
|
241
|
-
fractal_server-2.11.
|
242
|
-
fractal_server-2.11.
|
243
|
-
fractal_server-2.11.
|
244
|
-
fractal_server-2.11.
|
245
|
-
fractal_server-2.11.
|
244
|
+
fractal_server-2.11.0a2.dist-info/LICENSE,sha256=QKAharUuhxL58kSoLizKJeZE3mTCBnX6ucmz8W0lxlk,1576
|
245
|
+
fractal_server-2.11.0a2.dist-info/METADATA,sha256=JeUj4i-iNqKHT2UD0H9a7WuGNmEM44jzbD79zjsvf-Q,4564
|
246
|
+
fractal_server-2.11.0a2.dist-info/WHEEL,sha256=RaoafKOydTQ7I_I3JTrPCg6kUmTgtm4BornzOqyEfJ8,88
|
247
|
+
fractal_server-2.11.0a2.dist-info/entry_points.txt,sha256=8tV2kynvFkjnhbtDnxAqImL6HMVKsopgGfew0DOp5UY,58
|
248
|
+
fractal_server-2.11.0a2.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|