fractal-server 2.17.1a0__py3-none-any.whl → 2.17.2__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/__main__.py +19 -18
- fractal_server/app/db/__init__.py +3 -3
- fractal_server/app/models/__init__.py +1 -1
- fractal_server/app/models/linkuserproject.py +3 -1
- fractal_server/app/models/security.py +22 -17
- fractal_server/app/models/v2/__init__.py +3 -1
- fractal_server/app/models/v2/accounting.py +9 -1
- fractal_server/app/models/v2/dataset.py +5 -1
- fractal_server/app/models/v2/history.py +15 -1
- fractal_server/app/models/v2/job.py +4 -0
- fractal_server/app/models/v2/profile.py +29 -0
- fractal_server/app/models/v2/project.py +5 -14
- fractal_server/app/models/v2/resource.py +4 -0
- fractal_server/app/models/v2/task_group.py +5 -7
- fractal_server/app/models/v2/workflow.py +2 -1
- fractal_server/app/routes/admin/v2/__init__.py +1 -2
- fractal_server/app/routes/admin/v2/accounting.py +1 -1
- fractal_server/app/routes/admin/v2/job.py +9 -9
- fractal_server/app/routes/admin/v2/profile.py +3 -2
- fractal_server/app/routes/admin/v2/resource.py +5 -5
- fractal_server/app/routes/admin/v2/task.py +28 -18
- fractal_server/app/routes/admin/v2/task_group.py +0 -1
- fractal_server/app/routes/admin/v2/task_group_lifecycle.py +1 -2
- fractal_server/app/routes/api/__init__.py +1 -0
- fractal_server/app/routes/api/v2/__init__.py +5 -6
- fractal_server/app/routes/api/v2/_aux_functions.py +70 -63
- fractal_server/app/routes/api/v2/_aux_functions_history.py +43 -20
- fractal_server/app/routes/api/v2/_aux_functions_task_lifecycle.py +2 -4
- fractal_server/app/routes/api/v2/_aux_functions_tasks.py +5 -7
- fractal_server/app/routes/api/v2/_aux_task_group_disambiguation.py +1 -2
- fractal_server/app/routes/api/v2/dataset.py +13 -32
- fractal_server/app/routes/api/v2/history.py +35 -21
- fractal_server/app/routes/api/v2/images.py +3 -2
- fractal_server/app/routes/api/v2/job.py +17 -14
- fractal_server/app/routes/api/v2/pre_submission_checks.py +5 -4
- fractal_server/app/routes/api/v2/project.py +22 -17
- fractal_server/app/routes/api/v2/status_legacy.py +12 -11
- fractal_server/app/routes/api/v2/submit.py +11 -12
- fractal_server/app/routes/api/v2/task.py +4 -3
- fractal_server/app/routes/api/v2/task_collection.py +28 -30
- fractal_server/app/routes/api/v2/task_collection_custom.py +8 -7
- fractal_server/app/routes/api/v2/task_collection_pixi.py +1 -2
- fractal_server/app/routes/api/v2/task_group.py +7 -6
- fractal_server/app/routes/api/v2/task_group_lifecycle.py +6 -6
- fractal_server/app/routes/api/v2/task_version_update.py +13 -12
- fractal_server/app/routes/api/v2/workflow.py +14 -31
- fractal_server/app/routes/api/v2/workflow_import.py +17 -19
- fractal_server/app/routes/api/v2/workflowtask.py +10 -12
- fractal_server/app/routes/auth/__init__.py +1 -3
- fractal_server/app/routes/auth/_aux_auth.py +1 -2
- fractal_server/app/routes/auth/current_user.py +4 -5
- fractal_server/app/routes/auth/group.py +7 -5
- fractal_server/app/routes/auth/login.py +1 -0
- fractal_server/app/routes/auth/oauth.py +4 -3
- fractal_server/app/routes/auth/register.py +4 -2
- fractal_server/app/routes/auth/users.py +10 -10
- fractal_server/app/routes/aux/_job.py +1 -1
- fractal_server/app/routes/aux/_runner.py +2 -2
- fractal_server/app/routes/pagination.py +1 -1
- fractal_server/app/schemas/user.py +3 -3
- fractal_server/app/schemas/v2/accounting.py +11 -0
- fractal_server/app/schemas/v2/dataset.py +28 -4
- fractal_server/app/schemas/v2/dumps.py +1 -0
- fractal_server/app/schemas/v2/manifest.py +4 -3
- fractal_server/app/schemas/v2/profile.py +53 -2
- fractal_server/app/schemas/v2/resource.py +109 -13
- fractal_server/app/schemas/v2/task.py +0 -1
- fractal_server/app/schemas/v2/task_collection.py +1 -1
- fractal_server/app/schemas/v2/workflowtask.py +4 -3
- fractal_server/app/security/__init__.py +4 -7
- fractal_server/app/security/signup_email.py +4 -5
- fractal_server/app/shutdown.py +23 -19
- fractal_server/config/_data.py +36 -25
- fractal_server/config/_database.py +19 -20
- fractal_server/config/_email.py +30 -38
- fractal_server/config/_main.py +34 -53
- fractal_server/config/_oauth.py +17 -21
- fractal_server/exceptions.py +4 -0
- fractal_server/images/models.py +3 -3
- fractal_server/images/status_tools.py +4 -2
- fractal_server/logger.py +1 -1
- fractal_server/main.py +4 -3
- fractal_server/migrations/versions/034a469ec2eb_task_groups.py +4 -8
- fractal_server/migrations/versions/091b01f51f88_add_usergroup_and_linkusergroup_table.py +1 -1
- fractal_server/migrations/versions/0f5f85bb2ae7_add_pre_pinned_packages.py +1 -0
- fractal_server/migrations/versions/19eca0dd47a9_user_settings_project_dir.py +1 -1
- fractal_server/migrations/versions/1a83a5260664_rename.py +1 -1
- fractal_server/migrations/versions/1eac13a26c83_drop_v1_tables.py +1 -0
- fractal_server/migrations/versions/316140ff7ee1_remove_usersettings_cache_dir.py +1 -1
- fractal_server/migrations/versions/40d6d6511b20_add_index_to_history_models.py +47 -0
- fractal_server/migrations/versions/45fbb391d7af_make_resource_id_fk_non_nullable.py +46 -0
- fractal_server/migrations/versions/47351f8c7ebc_drop_dataset_filters.py +1 -0
- fractal_server/migrations/versions/49d0856e9569_drop_table.py +62 -0
- fractal_server/migrations/versions/4c308bcaea2b_add_task_args_schema_and_task_args_.py +1 -1
- fractal_server/migrations/versions/4cedeb448a53_workflowtask_foreign_keys_not_nullables.py +1 -1
- fractal_server/migrations/versions/501961cfcd85_remove_link_between_v1_and_v2_tasks_.py +2 -1
- fractal_server/migrations/versions/50a13d6138fd_initial_schema.py +7 -19
- fractal_server/migrations/versions/5bf02391cfef_v2.py +4 -10
- fractal_server/migrations/versions/70e77f1c38b0_add_applyworkflow_first_task_index_and_.py +1 -0
- fractal_server/migrations/versions/71eefd1dd202_add_slurm_accounts.py +1 -1
- fractal_server/migrations/versions/7673fe18c05d_remove_project_dir_server_default.py +29 -0
- fractal_server/migrations/versions/791ce783d3d8_add_indices.py +1 -1
- fractal_server/migrations/versions/83bc2ad3ffcc_2_17_0.py +1 -0
- fractal_server/migrations/versions/84bf0fffde30_add_dumps_to_applyworkflow.py +1 -0
- fractal_server/migrations/versions/8e8f227a3e36_update_taskv2_post_2_7_0.py +2 -4
- fractal_server/migrations/versions/8f79bd162e35_add_docs_info_and_docs_link_to_task_.py +1 -1
- fractal_server/migrations/versions/94a47ea2d3ff_remove_cache_dir_slurm_user_and_slurm_.py +1 -0
- fractal_server/migrations/versions/969d84257cac_add_historyrun_task_id.py +1 -1
- fractal_server/migrations/versions/97f444d47249_add_applyworkflow_project_dump.py +1 -1
- fractal_server/migrations/versions/981d588fe248_add_executor_error_log.py +1 -1
- fractal_server/migrations/versions/99ea79d9e5d2_add_dataset_history.py +2 -4
- fractal_server/migrations/versions/9c5ae74c9b98_add_user_settings_table.py +1 -1
- fractal_server/migrations/versions/9db60297b8b2_set_ondelete.py +1 -1
- fractal_server/migrations/versions/9fd26a2b0de4_add_workflow_timestamp_created.py +1 -1
- fractal_server/migrations/versions/a7f4d6137b53_add_workflow_dump_to_applyworkflow.py +1 -1
- fractal_server/migrations/versions/af1ef1c83c9b_add_accounting_tables.py +1 -0
- fractal_server/migrations/versions/af8673379a5c_drop_old_filter_columns.py +1 -0
- fractal_server/migrations/versions/b1e7f7a1ff71_task_group_for_pixi.py +1 -1
- fractal_server/migrations/versions/b3ffb095f973_json_to_jsonb.py +1 -0
- fractal_server/migrations/versions/c90a7c76e996_job_id_in_history_run.py +1 -1
- fractal_server/migrations/versions/caba9fb1ea5e_drop_useroauth_user_settings_id.py +49 -0
- fractal_server/migrations/versions/d256a7379ab8_taskgroup_activity_and_venv_info_to_.py +4 -9
- fractal_server/migrations/versions/d4fe3708d309_make_applyworkflow_workflow_dump_non_.py +1 -0
- fractal_server/migrations/versions/da2cb2ac4255_user_group_viewer_paths.py +1 -1
- fractal_server/migrations/versions/db09233ad13a_split_filters_and_keep_old_columns.py +1 -0
- fractal_server/migrations/versions/e0e717ae2f26_delete_linkuserproject_ondelete_project.py +50 -0
- fractal_server/migrations/versions/e75cac726012_make_applyworkflow_start_timestamp_not_.py +1 -0
- fractal_server/migrations/versions/e81103413827_add_job_type_filters.py +1 -1
- fractal_server/migrations/versions/efa89c30e0a4_add_project_timestamp_created.py +1 -0
- fractal_server/migrations/versions/f37aceb45062_make_historyunit_logfile_required.py +1 -1
- fractal_server/migrations/versions/f384e1c0cf5d_drop_task_default_args_columns.py +1 -0
- fractal_server/migrations/versions/fbce16ff4e47_new_history_items.py +4 -9
- fractal_server/runner/config/_local.py +8 -5
- fractal_server/runner/config/_slurm.py +37 -33
- fractal_server/runner/config/slurm_mem_to_MB.py +0 -1
- fractal_server/runner/executors/base_runner.py +29 -4
- fractal_server/runner/executors/local/get_local_config.py +1 -0
- fractal_server/runner/executors/local/runner.py +14 -13
- fractal_server/runner/executors/slurm_common/_batching.py +5 -10
- fractal_server/runner/executors/slurm_common/base_slurm_runner.py +53 -27
- fractal_server/runner/executors/slurm_common/get_slurm_config.py +14 -7
- fractal_server/runner/executors/slurm_common/remote.py +3 -1
- fractal_server/runner/executors/slurm_common/slurm_config.py +1 -0
- fractal_server/runner/executors/slurm_common/slurm_job_task_models.py +1 -3
- fractal_server/runner/executors/slurm_ssh/runner.py +16 -11
- fractal_server/runner/executors/slurm_ssh/tar_commands.py +1 -0
- fractal_server/runner/executors/slurm_sudo/_subprocess_run_as_user.py +1 -0
- fractal_server/runner/executors/slurm_sudo/runner.py +16 -11
- fractal_server/runner/task_files.py +9 -3
- fractal_server/runner/v2/_local.py +9 -4
- fractal_server/runner/v2/_slurm_ssh.py +11 -5
- fractal_server/runner/v2/_slurm_sudo.py +11 -5
- fractal_server/runner/v2/db_tools.py +0 -1
- fractal_server/runner/v2/deduplicate_list.py +2 -1
- fractal_server/runner/v2/runner.py +11 -14
- fractal_server/runner/v2/runner_functions.py +11 -14
- fractal_server/runner/v2/submit_workflow.py +7 -6
- fractal_server/ssh/_fabric.py +6 -13
- fractal_server/string_tools.py +0 -1
- fractal_server/syringe.py +1 -1
- fractal_server/tasks/config/_pixi.py +1 -1
- fractal_server/tasks/config/_python.py +16 -9
- fractal_server/tasks/utils.py +0 -1
- fractal_server/tasks/v2/local/_utils.py +1 -1
- fractal_server/tasks/v2/local/collect.py +10 -12
- fractal_server/tasks/v2/local/collect_pixi.py +9 -10
- fractal_server/tasks/v2/local/deactivate.py +7 -8
- fractal_server/tasks/v2/local/deactivate_pixi.py +4 -4
- fractal_server/tasks/v2/local/delete.py +1 -3
- fractal_server/tasks/v2/local/reactivate.py +7 -7
- fractal_server/tasks/v2/local/reactivate_pixi.py +7 -7
- fractal_server/tasks/v2/ssh/_utils.py +3 -3
- fractal_server/tasks/v2/ssh/collect.py +14 -19
- fractal_server/tasks/v2/ssh/collect_pixi.py +17 -19
- fractal_server/tasks/v2/ssh/deactivate.py +10 -8
- fractal_server/tasks/v2/ssh/deactivate_pixi.py +6 -5
- fractal_server/tasks/v2/ssh/delete.py +7 -5
- fractal_server/tasks/v2/ssh/reactivate.py +11 -11
- fractal_server/tasks/v2/ssh/reactivate_pixi.py +8 -9
- fractal_server/tasks/v2/templates/1_create_venv.sh +2 -0
- fractal_server/tasks/v2/templates/2_pip_install.sh +2 -0
- fractal_server/tasks/v2/templates/3_pip_freeze.sh +2 -0
- fractal_server/tasks/v2/templates/4_pip_show.sh +2 -0
- fractal_server/tasks/v2/templates/5_get_venv_size_and_file_number.sh +3 -1
- fractal_server/tasks/v2/templates/6_pip_install_from_freeze.sh +2 -0
- fractal_server/tasks/v2/templates/pixi_1_extract.sh +2 -0
- fractal_server/tasks/v2/templates/pixi_2_install.sh +2 -0
- fractal_server/tasks/v2/templates/pixi_3_post_install.sh +2 -0
- fractal_server/tasks/v2/utils_background.py +3 -3
- fractal_server/tasks/v2/utils_package_names.py +1 -2
- fractal_server/tasks/v2/utils_pixi.py +1 -3
- fractal_server/types/__init__.py +76 -1
- fractal_server/types/validators/_common_validators.py +1 -3
- fractal_server/types/validators/_workflow_task_arguments_validators.py +1 -2
- fractal_server/utils.py +1 -0
- fractal_server/zip_tools.py +34 -0
- {fractal_server-2.17.1a0.dist-info → fractal_server-2.17.2.dist-info}/METADATA +1 -1
- fractal_server-2.17.2.dist-info/RECORD +265 -0
- fractal_server/app/models/user_settings.py +0 -37
- fractal_server/app/routes/admin/v2/project.py +0 -41
- fractal_server/data_migrations/2_17_0.py +0 -339
- fractal_server-2.17.1a0.dist-info/RECORD +0 -262
- {fractal_server-2.17.1a0.dist-info → fractal_server-2.17.2.dist-info}/WHEEL +0 -0
- {fractal_server-2.17.1a0.dist-info → fractal_server-2.17.2.dist-info}/entry_points.txt +0 -0
- {fractal_server-2.17.1a0.dist-info → fractal_server-2.17.2.dist-info}/licenses/LICENSE +0 -0
fractal_server/types/__init__.py
CHANGED
|
@@ -6,7 +6,8 @@ from pydantic import AfterValidator
|
|
|
6
6
|
from pydantic.types import NonNegativeInt
|
|
7
7
|
from pydantic.types import StringConstraints
|
|
8
8
|
|
|
9
|
-
from
|
|
9
|
+
from fractal_server.urls import normalize_url
|
|
10
|
+
|
|
10
11
|
from .validators import val_absolute_path
|
|
11
12
|
from .validators import val_http_url
|
|
12
13
|
from .validators import val_unique_list
|
|
@@ -18,69 +19,143 @@ NonEmptyStr = Annotated[
|
|
|
18
19
|
str,
|
|
19
20
|
StringConstraints(min_length=1, strip_whitespace=True),
|
|
20
21
|
]
|
|
22
|
+
"""
|
|
23
|
+
A non-empty string, with no leading/trailing whitespaces.
|
|
24
|
+
"""
|
|
25
|
+
|
|
21
26
|
|
|
22
27
|
AbsolutePathStr = Annotated[
|
|
23
28
|
NonEmptyStr,
|
|
24
29
|
AfterValidator(val_absolute_path),
|
|
25
30
|
]
|
|
31
|
+
"""
|
|
32
|
+
String representing an absolute path.
|
|
33
|
+
"""
|
|
34
|
+
|
|
35
|
+
|
|
26
36
|
HttpUrlStr = Annotated[
|
|
27
37
|
NonEmptyStr,
|
|
28
38
|
AfterValidator(val_http_url),
|
|
29
39
|
]
|
|
40
|
+
"""
|
|
41
|
+
String representing an URL.
|
|
42
|
+
"""
|
|
43
|
+
|
|
44
|
+
|
|
30
45
|
ZarrUrlStr = Annotated[
|
|
31
46
|
NonEmptyStr,
|
|
32
47
|
AfterValidator(normalize_url),
|
|
33
48
|
]
|
|
49
|
+
"""
|
|
50
|
+
String representing a zarr URL/path.
|
|
51
|
+
"""
|
|
52
|
+
|
|
53
|
+
|
|
34
54
|
ZarrDirStr = Annotated[
|
|
35
55
|
NonEmptyStr,
|
|
36
56
|
AfterValidator(normalize_url),
|
|
37
57
|
]
|
|
58
|
+
"""
|
|
59
|
+
String representing a `zarr_dir` path.
|
|
60
|
+
"""
|
|
38
61
|
|
|
39
62
|
DictStrAny = Annotated[
|
|
40
63
|
dict[str, Any],
|
|
41
64
|
AfterValidator(valdict_keys),
|
|
42
65
|
]
|
|
66
|
+
"""
|
|
67
|
+
Dictionary where keys are strings with no leading/trailing whitespaces.
|
|
68
|
+
"""
|
|
69
|
+
|
|
70
|
+
|
|
43
71
|
DictStrStr = Annotated[
|
|
44
72
|
dict[str, NonEmptyStr],
|
|
45
73
|
AfterValidator(valdict_keys),
|
|
46
74
|
]
|
|
75
|
+
"""
|
|
76
|
+
Dictionary where keys are strings with no leading/trailing whitespaces and
|
|
77
|
+
values are non-empty strings.
|
|
78
|
+
"""
|
|
47
79
|
|
|
48
80
|
ListUniqueNonEmptyString = Annotated[
|
|
49
81
|
list[NonEmptyStr],
|
|
50
82
|
AfterValidator(val_unique_list),
|
|
51
83
|
]
|
|
84
|
+
"""
|
|
85
|
+
List of unique non-empty-string items.
|
|
86
|
+
"""
|
|
87
|
+
|
|
88
|
+
|
|
52
89
|
ListUniqueNonNegativeInt = Annotated[
|
|
53
90
|
list[NonNegativeInt],
|
|
54
91
|
AfterValidator(val_unique_list),
|
|
55
92
|
]
|
|
93
|
+
"""
|
|
94
|
+
List of unique non-negative-integer items.
|
|
95
|
+
"""
|
|
96
|
+
|
|
97
|
+
|
|
56
98
|
ListUniqueAbsolutePathStr = Annotated[
|
|
57
99
|
list[AbsolutePathStr],
|
|
58
100
|
AfterValidator(val_unique_list),
|
|
59
101
|
]
|
|
102
|
+
"""
|
|
103
|
+
List of unique absolute-path-string items.
|
|
104
|
+
"""
|
|
60
105
|
|
|
61
106
|
WorkflowTaskArgument = Annotated[
|
|
62
107
|
DictStrAny,
|
|
63
108
|
AfterValidator(validate_wft_args),
|
|
64
109
|
]
|
|
110
|
+
"""
|
|
111
|
+
Dictionary with no keys from a given forbid-list.
|
|
112
|
+
"""
|
|
65
113
|
|
|
66
114
|
ImageAttributeValue = Union[int, float, str, bool]
|
|
115
|
+
"""
|
|
116
|
+
Possible values for image attributes.
|
|
117
|
+
"""
|
|
118
|
+
|
|
67
119
|
ImageAttributes = Annotated[
|
|
68
120
|
dict[str, ImageAttributeValue],
|
|
69
121
|
AfterValidator(valdict_keys),
|
|
70
122
|
]
|
|
123
|
+
"""
|
|
124
|
+
Image-attributes dictionary.
|
|
125
|
+
"""
|
|
126
|
+
|
|
127
|
+
|
|
71
128
|
ImageAttributesWithNone = Annotated[
|
|
72
129
|
dict[str, ImageAttributeValue | None],
|
|
73
130
|
AfterValidator(valdict_keys),
|
|
74
131
|
]
|
|
132
|
+
"""
|
|
133
|
+
Image-attributes dictionary, including `None` attributes.
|
|
134
|
+
"""
|
|
135
|
+
|
|
136
|
+
|
|
75
137
|
AttributeFilters = Annotated[
|
|
76
138
|
dict[str, list[ImageAttributeValue]],
|
|
77
139
|
AfterValidator(validate_attribute_filters),
|
|
78
140
|
]
|
|
141
|
+
"""
|
|
142
|
+
Image-attributes filters.
|
|
143
|
+
"""
|
|
144
|
+
|
|
145
|
+
|
|
79
146
|
TypeFilters = Annotated[
|
|
80
147
|
dict[str, bool],
|
|
81
148
|
AfterValidator(valdict_keys),
|
|
82
149
|
]
|
|
150
|
+
"""
|
|
151
|
+
Image-type filters.
|
|
152
|
+
"""
|
|
153
|
+
|
|
154
|
+
|
|
83
155
|
ImageTypes = Annotated[
|
|
84
156
|
dict[str, bool],
|
|
85
157
|
AfterValidator(valdict_keys),
|
|
86
158
|
]
|
|
159
|
+
"""
|
|
160
|
+
Image types.
|
|
161
|
+
"""
|
|
@@ -13,9 +13,7 @@ def valdict_keys(d: dict[str, Any]) -> dict[str, Any]:
|
|
|
13
13
|
if any(k == "" for k in new_keys):
|
|
14
14
|
raise ValueError(f"Empty string in {new_keys}.")
|
|
15
15
|
if len(new_keys) != len(set(new_keys)):
|
|
16
|
-
raise ValueError(
|
|
17
|
-
f"Dictionary contains multiple identical keys: '{d}'."
|
|
18
|
-
)
|
|
16
|
+
raise ValueError(f"Dictionary contains multiple identical keys: '{d}'.")
|
|
19
17
|
for old_key, new_key in zip(old_keys, new_keys):
|
|
20
18
|
if new_key != old_key:
|
|
21
19
|
d[new_key] = d.pop(old_key)
|
|
@@ -4,7 +4,6 @@ def validate_wft_args(value: dict) -> dict:
|
|
|
4
4
|
intersect_keys = RESERVED_ARGUMENTS.intersection(args_keys)
|
|
5
5
|
if intersect_keys:
|
|
6
6
|
raise ValueError(
|
|
7
|
-
"`args` contains the following forbidden keys: "
|
|
8
|
-
f"{intersect_keys}"
|
|
7
|
+
f"`args` contains the following forbidden keys: {intersect_keys}"
|
|
9
8
|
)
|
|
10
9
|
return value
|
fractal_server/utils.py
CHANGED
fractal_server/zip_tools.py
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import os
|
|
2
2
|
import shutil
|
|
3
|
+
import subprocess # nosec
|
|
3
4
|
from collections.abc import Iterator
|
|
4
5
|
from io import BytesIO
|
|
5
6
|
from pathlib import Path
|
|
@@ -144,3 +145,36 @@ def _zip_folder_to_file_and_remove(folder: str) -> None:
|
|
|
144
145
|
logger.info(f"Removing folder '{folder}'.")
|
|
145
146
|
shutil.rmtree(folder)
|
|
146
147
|
logger.info("Folder removed.")
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
def _read_single_file_from_zip(*, file_path: str, archive_path: str) -> str:
|
|
151
|
+
"""
|
|
152
|
+
Reads and returns the contents of a single file from a ZIP archive using
|
|
153
|
+
`unzip -p`.
|
|
154
|
+
|
|
155
|
+
Args:
|
|
156
|
+
file_path:
|
|
157
|
+
relative to the archive
|
|
158
|
+
archive_path:
|
|
159
|
+
|
|
160
|
+
Returns:
|
|
161
|
+
The file content
|
|
162
|
+
|
|
163
|
+
Raises:
|
|
164
|
+
FileNotFoundError:
|
|
165
|
+
if the file is not inside the archive
|
|
166
|
+
"""
|
|
167
|
+
result = subprocess.run( # nosec
|
|
168
|
+
["unzip", "-p", archive_path, file_path],
|
|
169
|
+
capture_output=True,
|
|
170
|
+
encoding="utf-8",
|
|
171
|
+
check=False,
|
|
172
|
+
)
|
|
173
|
+
|
|
174
|
+
if result.returncode != 0:
|
|
175
|
+
# The caller function should handle this error
|
|
176
|
+
raise FileNotFoundError(
|
|
177
|
+
f"File '{file_path}' not found inside archive '{archive_path}'."
|
|
178
|
+
)
|
|
179
|
+
|
|
180
|
+
return result.stdout
|
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
fractal_server/__init__.py,sha256=KKto7mH5FNaOvpTP-KcRa_G4lzWkJ08c7Q-M13NAx04,23
|
|
2
|
+
fractal_server/__main__.py,sha256=o63YYNPm6wv0YG5PTtxPselXY6g3ii5VoBP8blPGgK8,11423
|
|
3
|
+
fractal_server/alembic.ini,sha256=MWwi7GzjzawI9cCAK1LW7NxIBQDUqD12-ptJoq5JpP0,3153
|
|
4
|
+
fractal_server/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
5
|
+
fractal_server/app/db/__init__.py,sha256=Otswoi_PlwX1zRhLTFQUKbW9Ho7piRn8dezjq8k-XaU,2834
|
|
6
|
+
fractal_server/app/models/__init__.py,sha256=oglUT1A1lLhXy2GFz3XsQ7wqkyfs3NXRtuNov-gOHXM,368
|
|
7
|
+
fractal_server/app/models/linkusergroup.py,sha256=3KkkE4QIUAlTrBAZs_tVy0pGvAxUAq6yOEjflct_z2M,678
|
|
8
|
+
fractal_server/app/models/linkuserproject.py,sha256=o52SWasrgvKW29rPG8PUT3Az7oxVJpCyv5rD5cKgds8,349
|
|
9
|
+
fractal_server/app/models/security.py,sha256=p9h1wqWzkJ2_P1kVmsHgeA81Bt5DU24v7THCr2-J238,4671
|
|
10
|
+
fractal_server/app/models/v2/__init__.py,sha256=xL05Mvdx0dqUFhJf694oPfuqkUQxZbxOkoUgRuNIXl4,949
|
|
11
|
+
fractal_server/app/models/v2/accounting.py,sha256=VNweFARrvY3mj5LI0834Ku061S2aGC61kuVHzi_tZhc,1187
|
|
12
|
+
fractal_server/app/models/v2/dataset.py,sha256=BL5elDU0UXnUSwvuXSO4JeKa9gje0QFerU_LP7sI754,1273
|
|
13
|
+
fractal_server/app/models/v2/history.py,sha256=869RQzBssHFYnBLBvCGlKrLV_HAXwsdO5DgwG9U8D-U,2339
|
|
14
|
+
fractal_server/app/models/v2/job.py,sha256=OFSNALm4xRvZ7nlojrbff-HcILYKY2gahlLxEbRsCDE,2074
|
|
15
|
+
fractal_server/app/models/v2/profile.py,sha256=YajSmV4J_-zC4RX917s-A_lJt4mxYdPRVS3RH_uvJ48,1006
|
|
16
|
+
fractal_server/app/models/v2/project.py,sha256=VvLXrgzKYLH585mYg_txrO8q3JoSoSEy4XkWjex4sDU,585
|
|
17
|
+
fractal_server/app/models/v2/resource.py,sha256=IHZR7D2K1zpbL1I66vAGqm1RGE8WOH9Q6dNQ-qGcH9g,3549
|
|
18
|
+
fractal_server/app/models/v2/task.py,sha256=iBIQB8POQE5MyKvLZhw7jZWlBhbrThzCDzRTcgiAczQ,1493
|
|
19
|
+
fractal_server/app/models/v2/task_group.py,sha256=ud5c_Cncp3hz7_FLiEUvO2VD8h9KtBQljyjR6GQK0D0,4674
|
|
20
|
+
fractal_server/app/models/v2/workflow.py,sha256=AsL7p8UMGbow--21IG2lYZnOjQ--m85dRWaNCHqb35I,1069
|
|
21
|
+
fractal_server/app/models/v2/workflowtask.py,sha256=qkTc-hcFLpJUVsEUbnDq2BJL0qg9jagy2doZeusF1ek,1266
|
|
22
|
+
fractal_server/app/routes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
23
|
+
fractal_server/app/routes/admin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
24
|
+
fractal_server/app/routes/admin/v2/__init__.py,sha256=IT_DlCBKgReOeanTRdVsW9DmqOqHuE8CfBURI9Bzb6I,1050
|
|
25
|
+
fractal_server/app/routes/admin/v2/_aux_functions.py,sha256=fqA5sUCFuD2iVANQt2WUUfVOEVz5egQA7inzUKYGCw0,1684
|
|
26
|
+
fractal_server/app/routes/admin/v2/accounting.py,sha256=HJ98G_Pde31cwEOqtloAJBXxsoRgNaoSG46OW7x1OBM,3584
|
|
27
|
+
fractal_server/app/routes/admin/v2/impersonate.py,sha256=ictDjuvBr3iLv3YtwkVRMNQRq5qtPAeAXbbC7STSsEg,1125
|
|
28
|
+
fractal_server/app/routes/admin/v2/job.py,sha256=sAHmLjK_YgYwyuRP95hLgyAZrwJAr6BaMXLCfjXdQMQ,10260
|
|
29
|
+
fractal_server/app/routes/admin/v2/profile.py,sha256=DwLlA9K3hkl9BqzyifIDiaWeHOM_N_17kqB5CSJOhSI,3165
|
|
30
|
+
fractal_server/app/routes/admin/v2/resource.py,sha256=c2z6b_D_W6_dqVnxNF8F8OdlI5Z4asex8Zgfwzjbi2Q,6330
|
|
31
|
+
fractal_server/app/routes/admin/v2/task.py,sha256=iivqjfdXTevaQotEiFL80Tay9l0jsZTK7MrrDzLUKzI,6066
|
|
32
|
+
fractal_server/app/routes/admin/v2/task_group.py,sha256=zotpvn5ccQ9Kn-mgIorxJ8RU0BelxP_EEIi-2THH4kA,6248
|
|
33
|
+
fractal_server/app/routes/admin/v2/task_group_lifecycle.py,sha256=3LtyLDLFDEWSx9e4huXV_uBUdoDuIWib7IzMjlD1OMI,9975
|
|
34
|
+
fractal_server/app/routes/api/__init__.py,sha256=kq_c4t4a0rrJ6zMO0WGOTjCHf46SAlmWhh7Sa-3LkNg,1659
|
|
35
|
+
fractal_server/app/routes/api/v2/__init__.py,sha256=Vg8KEH-EZduyxQeTisgrryvNNzRvJJ4H_3SydvQG8jA,2815
|
|
36
|
+
fractal_server/app/routes/api/v2/_aux_functions.py,sha256=C-uk3ikJSFjQG6aO195mdzl6WQXQj6vv8FGc4FPc9fE,14891
|
|
37
|
+
fractal_server/app/routes/api/v2/_aux_functions_history.py,sha256=bNCnN2xA8aS1nS8MREcBpnISdBSNu0bknOC1CeyYtqI,5417
|
|
38
|
+
fractal_server/app/routes/api/v2/_aux_functions_task_lifecycle.py,sha256=u7KO6VXBJhPhlUZlIt-mqmWzhfR-btrQdb5HNvPR5OY,8537
|
|
39
|
+
fractal_server/app/routes/api/v2/_aux_functions_task_version_update.py,sha256=PKjV7r8YsPRXoNiVSnOK4KBYVV3l_Yb_ZPrqAkMkXrQ,1182
|
|
40
|
+
fractal_server/app/routes/api/v2/_aux_functions_tasks.py,sha256=jg1QUQhDmeTw6c36-gBOVqOiBgI9kqBiuU77hHaJ_ag,13627
|
|
41
|
+
fractal_server/app/routes/api/v2/_aux_task_group_disambiguation.py,sha256=vdvMTa3San1HMTzctN5Vk7zxpqe4ccByrFBQyHfgWW8,4889
|
|
42
|
+
fractal_server/app/routes/api/v2/dataset.py,sha256=-TZcw2QbvurvDdZtiZxB4mZc-RF-aGLDmPWf2iiwcXA,8191
|
|
43
|
+
fractal_server/app/routes/api/v2/history.py,sha256=chEbL5G40tic2FQMjw1mAVAKk8Bx9FH514fj9-kQmdE,17617
|
|
44
|
+
fractal_server/app/routes/api/v2/images.py,sha256=MtVVl23n2A6i9tN0SCf_j147EoG-5gfSEdPVH4CbVQE,7898
|
|
45
|
+
fractal_server/app/routes/api/v2/job.py,sha256=hPqPcV9AUYYV1YdEIf4nnLqz0pE3ajqAUvkpOugsFPA,6749
|
|
46
|
+
fractal_server/app/routes/api/v2/pre_submission_checks.py,sha256=FeIoAG0GHi6nZpYNeXqfKVcLaA4yGq5kRt4f6PT6Zo8,4954
|
|
47
|
+
fractal_server/app/routes/api/v2/project.py,sha256=RKhVyl9NitQMSTujBzPyKIplDe0wneAZzPPjD8uI1TY,5128
|
|
48
|
+
fractal_server/app/routes/api/v2/status_legacy.py,sha256=E3La63jHA97qzdWTzqxPUVT7chuRRE76dDsujWjav2I,6418
|
|
49
|
+
fractal_server/app/routes/api/v2/submit.py,sha256=0TpNqrfCTTaciVmnK2_qAadraFQ15O7wdZPLYOds8A8,9350
|
|
50
|
+
fractal_server/app/routes/api/v2/task.py,sha256=gekExcUmk-A8psT0_D356U-j8k38aw_wrCO8kWgG2Tw,7536
|
|
51
|
+
fractal_server/app/routes/api/v2/task_collection.py,sha256=x6TMI3JeeIJQJS7bIbn3fnRZaxIxQlp-SQHr2ZVDLBw,12384
|
|
52
|
+
fractal_server/app/routes/api/v2/task_collection_custom.py,sha256=9Ycm8-C_bgsEgjqyRLqa64e0HwMVYZWPYr--r-oomB4,6948
|
|
53
|
+
fractal_server/app/routes/api/v2/task_collection_pixi.py,sha256=oAKO4dr0wMjOn3hC73YczLFrl-DznffGPgiZUmnyFAY,7190
|
|
54
|
+
fractal_server/app/routes/api/v2/task_group.py,sha256=a9YzcXMwkoa_2x6mCz3U_qctE_BvyPIzaGFalF5Otus,8350
|
|
55
|
+
fractal_server/app/routes/api/v2/task_group_lifecycle.py,sha256=g20Egnwlw8Qvm1PzKK_64Fv9UKELmPy1Vt-sItNvQRk,10575
|
|
56
|
+
fractal_server/app/routes/api/v2/task_version_update.py,sha256=zi6DvnaTsTeJR-5Nnnfgfy8fGm9wU3P8hxh8hDHuB1Y,8315
|
|
57
|
+
fractal_server/app/routes/api/v2/workflow.py,sha256=3Dxk6D-UVB7lI4yJYpCLL0mEd3y6VlLAe8pvufF-dIc,10337
|
|
58
|
+
fractal_server/app/routes/api/v2/workflow_import.py,sha256=G8aR9B_BndaDQsugcCSZG4F2Xd8m9Ss87Km06uQ_MXs,9532
|
|
59
|
+
fractal_server/app/routes/api/v2/workflowtask.py,sha256=lmEr1ih1AkfCz9CkHHU46HlPctTgq9as_CfguEfuikY,7955
|
|
60
|
+
fractal_server/app/routes/auth/__init__.py,sha256=RghfjGuu0RTW8RxBCvaePx9KErO4rTkI96XgbtbeSJU,2337
|
|
61
|
+
fractal_server/app/routes/auth/_aux_auth.py,sha256=s_boxuhPC60j74NmE8FopYPv_Fc4hiADvL0beWPcuE0,5474
|
|
62
|
+
fractal_server/app/routes/auth/current_user.py,sha256=Y_2Es3HFtTMuVUmWVHFFvk3vsRgmlqS_x5BwkeavlvI,5552
|
|
63
|
+
fractal_server/app/routes/auth/group.py,sha256=5bIM8LoUVv1C5-bMYoJbNSS8eESgVpK8-o47sUjMcZU,7293
|
|
64
|
+
fractal_server/app/routes/auth/login.py,sha256=buVa5Y8T0cd_SW1CqC-zMv-3SfPxGJknf7MYlUyKOl0,567
|
|
65
|
+
fractal_server/app/routes/auth/oauth.py,sha256=NxrwOWBGPe7hLPEnD66nfWPGMWzDM80LIrwtmONVw-4,2731
|
|
66
|
+
fractal_server/app/routes/auth/register.py,sha256=IiUJhgY0ZrTs0RlBRRjoTv4wF5Gb3eXTInFV-dXkpsE,615
|
|
67
|
+
fractal_server/app/routes/auth/router.py,sha256=-E87A8h2UvcLucy5xjzKiWbXHVKcqxUmmZGeV_utEzA,598
|
|
68
|
+
fractal_server/app/routes/auth/users.py,sha256=2E1TEWRGprp-TyF39VJ3Bu6p9tyy37xObG0Ijqa1aHg,7089
|
|
69
|
+
fractal_server/app/routes/aux/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
70
|
+
fractal_server/app/routes/aux/_job.py,sha256=n-UhONvomKyKkQDDqd0lFh2kCMhlCGXpfdMNW39R1E4,644
|
|
71
|
+
fractal_server/app/routes/aux/_runner.py,sha256=-SvcXCVEV7Mb6q4PbbxuTCCruX6sAlR5QGXk9CzBVv8,979
|
|
72
|
+
fractal_server/app/routes/aux/validate_user_profile.py,sha256=fGqJDdAFkbQoEIjqZ5F9-SDY_4os63R2EUMqODC7eBg,1969
|
|
73
|
+
fractal_server/app/routes/pagination.py,sha256=C4XW6cnyDfyu1XMHXRN4wgk72lsS0UtlINZmwGZFb4Y,1174
|
|
74
|
+
fractal_server/app/schemas/__init__.py,sha256=VIWJCaqokte3OljDLX00o-EC2d12rFoPb5HOLKQI94Y,86
|
|
75
|
+
fractal_server/app/schemas/user.py,sha256=ed1kXyVoCboNiHTQSA9EVGCZNIFByFknPluehHbYKmE,2900
|
|
76
|
+
fractal_server/app/schemas/user_group.py,sha256=uTTOVGoy89SxVDpJumjqOEWxqXWR41MNOTBDCyNxEDA,1478
|
|
77
|
+
fractal_server/app/schemas/v2/__init__.py,sha256=XQex5ojpELgO0xvq2l-Y8oV85ZgM3GBj6lrGGctPb1g,3729
|
|
78
|
+
fractal_server/app/schemas/v2/accounting.py,sha256=6EVUdPTkFY6Wb9-Vc0cIEZYVXwGEvJ3tP4YOXYE1hao,546
|
|
79
|
+
fractal_server/app/schemas/v2/dataset.py,sha256=cBsEkny-EgNqFETMGRbJu5ChfYOnsKhkivqXK5dEOxQ,1938
|
|
80
|
+
fractal_server/app/schemas/v2/dumps.py,sha256=NrQYrfu3ze317DC7wDwjJYv6gYfkWWze25HmQmYJNhQ,2294
|
|
81
|
+
fractal_server/app/schemas/v2/history.py,sha256=pZiMKfh6nMWbTp5MUtrnGySPKbeRFf5tM1VLFaTgGcw,1784
|
|
82
|
+
fractal_server/app/schemas/v2/job.py,sha256=BuiNzAX2Kl-b7LJnAiqCGDC9h6bGEjKvsHQIgf5mjHQ,3330
|
|
83
|
+
fractal_server/app/schemas/v2/manifest.py,sha256=I8KyVZvW6r6_DrcKX5aZ9zJwa-Kk_u3gCKlz6HVPF5o,6655
|
|
84
|
+
fractal_server/app/schemas/v2/profile.py,sha256=CB44vkjRzcxAhw_6J67dYcVKKbYKJS6MdmZAXKF1ous,3299
|
|
85
|
+
fractal_server/app/schemas/v2/project.py,sha256=7UC0aZLgtmkaAiPykeUj-9OZXhMkoyi3V-475UW_EQs,654
|
|
86
|
+
fractal_server/app/schemas/v2/resource.py,sha256=MSwMKEmX9qdmYg-_2VGELlmCobJ3Ih2ldG6-R16WDBg,6230
|
|
87
|
+
fractal_server/app/schemas/v2/status_legacy.py,sha256=eQT1zGxbkzSwd0EqclsOdZ60n1x6J3DB1CZ3m4LYyxc,955
|
|
88
|
+
fractal_server/app/schemas/v2/task.py,sha256=WkjliM8zujapC9CHTFme5ByjPCiln6qYKWJ_9gbcGOk,4363
|
|
89
|
+
fractal_server/app/schemas/v2/task_collection.py,sha256=QUiMAwckHSzjXlC_cyNSR1QX0fpxG1wKPcd95SE2qKo,4598
|
|
90
|
+
fractal_server/app/schemas/v2/task_group.py,sha256=4hNZUXnWYSozpLXR3JqBvGzfZBG2TbjqydckHHu2Aq0,3506
|
|
91
|
+
fractal_server/app/schemas/v2/workflow.py,sha256=L-dW6SzCH_VNoH6ENip44lTgGGqVYHHBk_3PtM-Ooy8,1772
|
|
92
|
+
fractal_server/app/schemas/v2/workflowtask.py,sha256=ckfPmbPTAn0lzbiaWQItdGxEUuWsRxiWBj898VEb1gw,3640
|
|
93
|
+
fractal_server/app/security/__init__.py,sha256=L-Q0wsh2GjDyeiT4FfgWTyfrSH1QA52cp9zl5U5OT9I,18360
|
|
94
|
+
fractal_server/app/security/signup_email.py,sha256=ZnwwjpL6jyIkegHBebTqYYGGVtllLI0_x48K-yJtkNk,1969
|
|
95
|
+
fractal_server/app/shutdown.py,sha256=QU4DfNvqwUXlHiLORtYJit4DxlFQo014SKTfs4dcE2U,2295
|
|
96
|
+
fractal_server/config/__init__.py,sha256=ZCmroNB50sUxJiFtkW0a4fFtmfyPnL4LWhtKY5FbQfg,737
|
|
97
|
+
fractal_server/config/_data.py,sha256=M7bwGDrvTV2mIo9Y3BilzluCyEIlE-PyIjCdcTbzWZg,2804
|
|
98
|
+
fractal_server/config/_database.py,sha256=0_FvboMkQEKKRxvr9uFdp98oiQwMTFbdCW3loTZNSY0,1846
|
|
99
|
+
fractal_server/config/_email.py,sha256=vMwLHN9-beYp_-up-WkTpeyNUZk4EHwt3N2l6-PYnx4,4364
|
|
100
|
+
fractal_server/config/_main.py,sha256=s11lg9r-4hALGefG8xiMlc12ul0hL7ct4YviD-YBWWE,2230
|
|
101
|
+
fractal_server/config/_oauth.py,sha256=UTmlFppDZcOQhr3RvkiG5XMqvr54XRAQ_Y-iR0V8N-8,2024
|
|
102
|
+
fractal_server/config/_settings_config.py,sha256=tsyXQOnn9QKCFJD6hRo_dJXlQQyl70DbqgHMJoZ1xnY,144
|
|
103
|
+
fractal_server/data_migrations/README.md,sha256=_3AEFvDg9YkybDqCLlFPdDmGJvr6Tw7HRI14aZ3LOIw,398
|
|
104
|
+
fractal_server/data_migrations/tools.py,sha256=LeMeASwYGtEqd-3wOLle6WARdTGAimoyMmRbbJl-hAM,572
|
|
105
|
+
fractal_server/exceptions.py,sha256=l6aZDk_6u_9PwDaQSoIFdI40ekpzqOJaxjx5rhW-HVI,141
|
|
106
|
+
fractal_server/gunicorn_fractal.py,sha256=u6U01TLGlXgq1v8QmEpLih3QnsInZD7CqphgJ_GrGzc,1230
|
|
107
|
+
fractal_server/images/__init__.py,sha256=-_wjoKtSX02P1KjDxDP_EXKvmbONTRmbf7iGVTsyBpM,154
|
|
108
|
+
fractal_server/images/models.py,sha256=dNcCW7XzRRbqL86LJ5aGc6LUAqIPsZXMq67IZyGbIpQ,1242
|
|
109
|
+
fractal_server/images/status_tools.py,sha256=Is2QWThbLCrVJuI0NpGv7TcWs1T8z8q_8Qsidr3TdBU,4932
|
|
110
|
+
fractal_server/images/tools.py,sha256=37jVIU6RiAGbiyucNDlKe9J3yN3Y47NOvv-RJor9Jm0,4154
|
|
111
|
+
fractal_server/logger.py,sha256=9EhRdgPnGdbJ51vxhOD42K0iaDRhKx7wuikpHoh9kzY,5302
|
|
112
|
+
fractal_server/main.py,sha256=6hI23zI6x3Hz1Cj7JDBNHFYVg5yCymL8oe5UyIc9T2Q,4420
|
|
113
|
+
fractal_server/migrations/env.py,sha256=nfyBpMIOT3kny6t-b-tUjyRjZ4k906bb1_wCQ7me1BI,1353
|
|
114
|
+
fractal_server/migrations/naming_convention.py,sha256=bSEMiMZeArmWKrUk-12lhnOw1pAFMg6LEl7yucohPqc,263
|
|
115
|
+
fractal_server/migrations/versions/034a469ec2eb_task_groups.py,sha256=uuf0sJibC4Am1HDb_dX_Jdj2oinptlg2ojiHwCpjDCY,6155
|
|
116
|
+
fractal_server/migrations/versions/091b01f51f88_add_usergroup_and_linkusergroup_table.py,sha256=cSz3Jc2X79dN7I-rh0OSefOd5WOJU65wNWFNMnX2LR4,1450
|
|
117
|
+
fractal_server/migrations/versions/0f5f85bb2ae7_add_pre_pinned_packages.py,sha256=XH6msE3On7P7S2gz-Xec20bWAI6vR29zRT1ZafFwStI,1056
|
|
118
|
+
fractal_server/migrations/versions/19eca0dd47a9_user_settings_project_dir.py,sha256=5OzcIQjTfwiqh9vK_yLQHJlNtIHxKiEPr-IjZ9iir-Y,961
|
|
119
|
+
fractal_server/migrations/versions/1a83a5260664_rename.py,sha256=BGZrM2UfccWc0s0kNlpACEw1LB1K6AemHPR5irkJ1gA,790
|
|
120
|
+
fractal_server/migrations/versions/1eac13a26c83_drop_v1_tables.py,sha256=DGdm1Q58UHfQ-6GAg0ucyKCiMxXb1JzELYQ50d1f5bo,1605
|
|
121
|
+
fractal_server/migrations/versions/316140ff7ee1_remove_usersettings_cache_dir.py,sha256=5gIIZp3Apc2fTiUoHEvd-k34W-HIq7cjFt7Fwqjq6lE,911
|
|
122
|
+
fractal_server/migrations/versions/40d6d6511b20_add_index_to_history_models.py,sha256=dZglAP0b3_YAeYc7Pphxs9iI73icSaMkgku7R6MaPL0,1357
|
|
123
|
+
fractal_server/migrations/versions/45fbb391d7af_make_resource_id_fk_non_nullable.py,sha256=Hx72nF2i1I_uRaET35JWTEm1tocO-ph8MEdjUVAzHUc,1296
|
|
124
|
+
fractal_server/migrations/versions/47351f8c7ebc_drop_dataset_filters.py,sha256=TSXcRtaDLl2belv7ByAw3WDWZEE-2mnK9MjfZMo9IV8,1415
|
|
125
|
+
fractal_server/migrations/versions/49d0856e9569_drop_table.py,sha256=WmfLS1s6GoZQ8hwo2ToFEyDQ1lv0Qcv4cbGCoQ7bqVU,1814
|
|
126
|
+
fractal_server/migrations/versions/4c308bcaea2b_add_task_args_schema_and_task_args_.py,sha256=j6kByMVyaok2EFtvLVEsrPD2yLw5ORbIiqjeNYPyVNw,954
|
|
127
|
+
fractal_server/migrations/versions/4cedeb448a53_workflowtask_foreign_keys_not_nullables.py,sha256=eWyROaS06Gmx7NiW07PsD-o5xHHqFl7FJujmmeJrxV8,1157
|
|
128
|
+
fractal_server/migrations/versions/501961cfcd85_remove_link_between_v1_and_v2_tasks_.py,sha256=SeBUvMEikyl4qkCjiOgkkqbcIeaim57EPuufjFh_X8k,3271
|
|
129
|
+
fractal_server/migrations/versions/50a13d6138fd_initial_schema.py,sha256=sh0tB5K35ui8bfvBPI2jwDkeNVDtdlGvWrvTeumA0iY,8654
|
|
130
|
+
fractal_server/migrations/versions/5bf02391cfef_v2.py,sha256=jTNyZ8H5VDh4eRvCEy-WliXAu55kUybddsaTeexXr6c,8367
|
|
131
|
+
fractal_server/migrations/versions/70e77f1c38b0_add_applyworkflow_first_task_index_and_.py,sha256=vJ6nDb7UnkCMIPg2zNM7ZE0JOTvaqFL3Fe9UarP-ivM,1633
|
|
132
|
+
fractal_server/migrations/versions/71eefd1dd202_add_slurm_accounts.py,sha256=qpHZC97AduFk5_G0xHs9akhnhpzb1LZooYCTPHy7n28,1353
|
|
133
|
+
fractal_server/migrations/versions/7673fe18c05d_remove_project_dir_server_default.py,sha256=PwTfY9Kq3_cwb5G4E0sM9u7UjzOhOwsYCspymmPgipQ,795
|
|
134
|
+
fractal_server/migrations/versions/791ce783d3d8_add_indices.py,sha256=IeWDVBRryFcFYIJVXhj-QJ6jczGnN_41K7sh6RYF0C4,1154
|
|
135
|
+
fractal_server/migrations/versions/83bc2ad3ffcc_2_17_0.py,sha256=bLFmGJF7jLkices6PJFO1pmit_4-bu8rwykR6ZWDiCQ,6378
|
|
136
|
+
fractal_server/migrations/versions/84bf0fffde30_add_dumps_to_applyworkflow.py,sha256=mOlqERL0MrF6Inp4onoSB2mAnyGeh4gW_IysCeCHTj4,2685
|
|
137
|
+
fractal_server/migrations/versions/8e8f227a3e36_update_taskv2_post_2_7_0.py,sha256=Sm4IFSsAi0zM9HypNkbDQSAWzhrRWFjhGIjp6Lz9VLw,1081
|
|
138
|
+
fractal_server/migrations/versions/8f79bd162e35_add_docs_info_and_docs_link_to_task_.py,sha256=PevYomdu8_lfxfSO5gSbaByDXLdj9AzsHy5WgsOtsJk,1115
|
|
139
|
+
fractal_server/migrations/versions/94a47ea2d3ff_remove_cache_dir_slurm_user_and_slurm_.py,sha256=UJnpLSGTahYqujwXrKFVnXxsggh27EONfsyWb3H9qmM,1509
|
|
140
|
+
fractal_server/migrations/versions/969d84257cac_add_historyrun_task_id.py,sha256=pxZ41wK27Z23BTBLbjaYgGpPqXOWeQ2Oo56YwBBXydk,1143
|
|
141
|
+
fractal_server/migrations/versions/97f444d47249_add_applyworkflow_project_dump.py,sha256=7YUJOq4tnYa0yYDW7xfNOXmx_SSMqgqI1h2mo1OkKfI,1057
|
|
142
|
+
fractal_server/migrations/versions/981d588fe248_add_executor_error_log.py,sha256=loaFJupS3z9rh00-PB_gp_49TG6Tqu30JY-NfoNM8Uk,956
|
|
143
|
+
fractal_server/migrations/versions/99ea79d9e5d2_add_dataset_history.py,sha256=5IL-2KeRdDmFmAA2W3AvNtdIS_M-CJgZL4cYVGn8gOs,853
|
|
144
|
+
fractal_server/migrations/versions/9c5ae74c9b98_add_user_settings_table.py,sha256=AgM1QVTqw_EUFpVUakVHWBdPYz4DWAHYkROOAVY35Ak,2256
|
|
145
|
+
fractal_server/migrations/versions/9db60297b8b2_set_ondelete.py,sha256=rd_JoKr8ae1A6VZmcbXqdQxA5pn04n4ALDc3nwkIqRc,7928
|
|
146
|
+
fractal_server/migrations/versions/9fd26a2b0de4_add_workflow_timestamp_created.py,sha256=SLdpTLjWW3Shfu6dLO3cavKqfnaEGzJysPMmXLJRkCI,1849
|
|
147
|
+
fractal_server/migrations/versions/a7f4d6137b53_add_workflow_dump_to_applyworkflow.py,sha256=gdV8xSYjR2wmLurpsJ73wgoHdBVosnl8b2LTtu2RhAM,867
|
|
148
|
+
fractal_server/migrations/versions/af1ef1c83c9b_add_accounting_tables.py,sha256=qjq4s_lXxB9ifd770JpZC1Zj8yhNzfPcvG-psfiZfNQ,1900
|
|
149
|
+
fractal_server/migrations/versions/af8673379a5c_drop_old_filter_columns.py,sha256=iEqkCJvqpDxRCKD1twh92W_u665OKEGRJqsWflPx8BM,1552
|
|
150
|
+
fractal_server/migrations/versions/b1e7f7a1ff71_task_group_for_pixi.py,sha256=ElHX3KHpEGJoWc-yPS5ZlGNqJ9khONWEe5_Loh78egA,1293
|
|
151
|
+
fractal_server/migrations/versions/b3ffb095f973_json_to_jsonb.py,sha256=fwaqVzGKRwZ4Nz3n_Y29WO6NzLYpa3JWCM8GjiNY9WQ,10036
|
|
152
|
+
fractal_server/migrations/versions/c90a7c76e996_job_id_in_history_run.py,sha256=CPQNKHqsx22wSY4ylqM8UMhDOWkQeC9eLAHlQQJYSfQ,1102
|
|
153
|
+
fractal_server/migrations/versions/caba9fb1ea5e_drop_useroauth_user_settings_id.py,sha256=7MpunfOBk0LM6u-xrwca8GUHIjinAJZrS9AUT3l62qU,1320
|
|
154
|
+
fractal_server/migrations/versions/d256a7379ab8_taskgroup_activity_and_venv_info_to_.py,sha256=bFMJUFJAnOaHYyYYKISHpbQWKBoQopiEKRT0PSidqhk,3796
|
|
155
|
+
fractal_server/migrations/versions/d4fe3708d309_make_applyworkflow_workflow_dump_non_.py,sha256=zLHqar9iduiLs5Ib50B9RKrdLLbWSffahWxXDDePnI8,950
|
|
156
|
+
fractal_server/migrations/versions/da2cb2ac4255_user_group_viewer_paths.py,sha256=-ihE-KJEVemb8ZhRejg6xdC5TPTW8GkKWnzcl1ReAHQ,901
|
|
157
|
+
fractal_server/migrations/versions/db09233ad13a_split_filters_and_keep_old_columns.py,sha256=mOaFWcay-rznXcM9cdmGqA9EgM9Qn0dOjUOOs8RHKiQ,2907
|
|
158
|
+
fractal_server/migrations/versions/e0e717ae2f26_delete_linkuserproject_ondelete_project.py,sha256=wmxB9EOIUHpFiCVhQIsCBnC2deMUbrsZTOgQSUAgSAo,1409
|
|
159
|
+
fractal_server/migrations/versions/e75cac726012_make_applyworkflow_start_timestamp_not_.py,sha256=x6eCYsx_Cb7yDC5K_gV2RNHeCF_K-964NtZF1mmxUb0,964
|
|
160
|
+
fractal_server/migrations/versions/e81103413827_add_job_type_filters.py,sha256=w0HYX1645_JXsfUB259OrmXLUasOgRnpKvJJaF44GpQ,890
|
|
161
|
+
fractal_server/migrations/versions/efa89c30e0a4_add_project_timestamp_created.py,sha256=3ppXZxLsljAlN5Def9lHuEZlf_7hMXaIIeTV2N5zUXY,1222
|
|
162
|
+
fractal_server/migrations/versions/f37aceb45062_make_historyunit_logfile_required.py,sha256=z18Qyts6_49uVhgaXWGQNzF4adnDmVLv3hKHeE9qD9E,1007
|
|
163
|
+
fractal_server/migrations/versions/f384e1c0cf5d_drop_task_default_args_columns.py,sha256=TjAkD_275nDVSURAC5wzJbHDBG0yY2_vkLvw4iHeYoc,747
|
|
164
|
+
fractal_server/migrations/versions/fbce16ff4e47_new_history_items.py,sha256=Fr6USeI6LAK9vqbRFvCBmFAiERaEDuZXgSfjUvlc3EU,3885
|
|
165
|
+
fractal_server/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
166
|
+
fractal_server/runner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
167
|
+
fractal_server/runner/components.py,sha256=-Ii5l8d_V6f5DFOd-Zsr8VYmOsyqw0Hox9fEFQiuqxY,66
|
|
168
|
+
fractal_server/runner/config/__init__.py,sha256=a-vSrvWBeMVnxTtYoy-f5Ibt_mM8MM3F7jqnPvvjHSY,108
|
|
169
|
+
fractal_server/runner/config/_local.py,sha256=IHWtxpKuJDdsQNpk8Q5bNL4DEJunNkNJkLfetfnwmQM,788
|
|
170
|
+
fractal_server/runner/config/_slurm.py,sha256=iC4gBolGaYD8SX5FMZu7mq9xI6-kepzeZ6bETrFf0pg,3636
|
|
171
|
+
fractal_server/runner/config/slurm_mem_to_MB.py,sha256=6KmrIC-NymQjb9-bIQjNYQx6mE0OoKoZxdi6WQnWOHw,2003
|
|
172
|
+
fractal_server/runner/exceptions.py,sha256=N8DLn7tuV8zMSdr8xdJN0aIdytPveSCeQ1Y5IoxXW-8,1778
|
|
173
|
+
fractal_server/runner/executors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
174
|
+
fractal_server/runner/executors/base_runner.py,sha256=h8uE5gr6zFEwpjhasJDc-eNTMIw3RwmQQLYD6U5w8E0,7116
|
|
175
|
+
fractal_server/runner/executors/call_command_wrapper.py,sha256=n6c9haKyIudBlz9-d3GQb19rewBR54qLG8jlrma6okk,1415
|
|
176
|
+
fractal_server/runner/executors/local/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
177
|
+
fractal_server/runner/executors/local/get_local_config.py,sha256=oI32JawlG3ixYdjxJDRfT0sreEnoHekhiAHzlejl2aM,1694
|
|
178
|
+
fractal_server/runner/executors/local/runner.py,sha256=0s0u5ONasXdsvS2WD5zxksQgved_XGXtaxCEiBJoAlM,12297
|
|
179
|
+
fractal_server/runner/executors/slurm_common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
180
|
+
fractal_server/runner/executors/slurm_common/_batching.py,sha256=sE9TWhwS08a0YgFTHmizYHnLEN_Z-H242a7KF8uTqJo,8711
|
|
181
|
+
fractal_server/runner/executors/slurm_common/_job_states.py,sha256=nuV-Zba38kDrRESOVB3gaGbrSPZc4q7YGichQaeqTW0,238
|
|
182
|
+
fractal_server/runner/executors/slurm_common/base_slurm_runner.py,sha256=pU2Szcg3tv7vinLJXbzSgYlfEPLY_b0R0YDR-FSYLc8,41873
|
|
183
|
+
fractal_server/runner/executors/slurm_common/get_slurm_config.py,sha256=B6EKjob8Y-DiJ8YbXf2CeoY7B8cwvkpKvlW8Ce6bbx0,7115
|
|
184
|
+
fractal_server/runner/executors/slurm_common/remote.py,sha256=8pTMTRp_LjzoUr3FtFTfdvDhuLnqzY6HT-T9pzrVLw4,3845
|
|
185
|
+
fractal_server/runner/executors/slurm_common/slurm_config.py,sha256=VSow-JfxBkdmkMnTBeZ01nnMXXtlqV8ysaSYcdE-_PU,7896
|
|
186
|
+
fractal_server/runner/executors/slurm_common/slurm_job_task_models.py,sha256=VeX40CvU5fckUpSyXlzb3EDE9xxPXkT2sZKLXq_6Ooc,3493
|
|
187
|
+
fractal_server/runner/executors/slurm_ssh/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
188
|
+
fractal_server/runner/executors/slurm_ssh/run_subprocess.py,sha256=SyW6t4egvbiARph2YkFjc88Hj94fCamZVi50L7ph8VM,996
|
|
189
|
+
fractal_server/runner/executors/slurm_ssh/runner.py,sha256=sTRJHbrXFrFLeUz1L6dZGDoev2uudNR6rp6jgcYmgzo,10324
|
|
190
|
+
fractal_server/runner/executors/slurm_ssh/tar_commands.py,sha256=83etlsQ_dYvGVrKqlgyOYXnRFWSwf4VRISANsYMVxkQ,1763
|
|
191
|
+
fractal_server/runner/executors/slurm_sudo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
192
|
+
fractal_server/runner/executors/slurm_sudo/_subprocess_run_as_user.py,sha256=OaC_aOupXnU873FvBt8xfBrz41yVyTxh3fU9_vxq0dY,2567
|
|
193
|
+
fractal_server/runner/executors/slurm_sudo/runner.py,sha256=oPzUPErEJQpfMJp_qnEaE65QxNiS20zY9tGH6WNf-mo,6037
|
|
194
|
+
fractal_server/runner/filenames.py,sha256=lPnxKHtdRizr6FqG3zOdjDPyWA7GoaJGTtiuJV0gA8E,70
|
|
195
|
+
fractal_server/runner/set_start_and_last_task_index.py,sha256=NsioSzfEpGyo9ZKrV5KsbxeI7d5V3tE678Y3IAo5rHM,1218
|
|
196
|
+
fractal_server/runner/task_files.py,sha256=n54A1x0MQRGSgqhzOTE-TPzEGJymUhQIUV9ApcVCV9M,4318
|
|
197
|
+
fractal_server/runner/v2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
198
|
+
fractal_server/runner/v2/_local.py,sha256=XT6uFi0wwO5ZxR_qoszgibkUqal-pNPWWcd101NFgCg,3838
|
|
199
|
+
fractal_server/runner/v2/_slurm_ssh.py,sha256=GcpBLvvSwadxnchS5phOXVk42BlADeDi-xr2K6FBIyU,4529
|
|
200
|
+
fractal_server/runner/v2/_slurm_sudo.py,sha256=iexw_hpUf-jVngMRxntiKIwNT_Dvdbk2R-yHHWEFnws,4424
|
|
201
|
+
fractal_server/runner/v2/db_tools.py,sha256=twqFWVENkxWCYglb__BAXASDuJppwHE-VxdEUC67mq0,3317
|
|
202
|
+
fractal_server/runner/v2/deduplicate_list.py,sha256=TWxHDucal0VZPswy_H7IFaEb4ddGnpl_QBwJ8g9Ybug,668
|
|
203
|
+
fractal_server/runner/v2/merge_outputs.py,sha256=0ahaSwdMFAoEhxVaEaO9nSJuKIcWg9pDZ356ktSHcC0,897
|
|
204
|
+
fractal_server/runner/v2/runner.py,sha256=zX_gResJlzfdyBkcmadhaRAYWhgfNbCqm3jF0l3lbGo,20178
|
|
205
|
+
fractal_server/runner/v2/runner_functions.py,sha256=308EwXZ2hBAnavokaywkVcaDkywQIillGibCvJB5y_E,19634
|
|
206
|
+
fractal_server/runner/v2/submit_workflow.py,sha256=tNJmlgSNOCjesN8tEGtq3sz1RYB67lP-tgRcKKTTSvs,11453
|
|
207
|
+
fractal_server/runner/v2/task_interface.py,sha256=ftPPpOU16rbJD8q-QV7o_3ey8W7MQTFuWJiYUr4OmF4,2532
|
|
208
|
+
fractal_server/runner/versions.py,sha256=uz59Dxj7BphnFnr-p0kyaZRH0h4w5Xkd0UJNVGtt4ds,474
|
|
209
|
+
fractal_server/ssh/__init__.py,sha256=sVUmzxf7_DuXG1xoLQ1_00fo5NPhi2LJipSmU5EAkPs,124
|
|
210
|
+
fractal_server/ssh/_fabric.py,sha256=c6DcTF2X0360b78rcpVRWblpxzSvgYxGrd97nncReEw,25999
|
|
211
|
+
fractal_server/string_tools.py,sha256=w8vykzPps5VdmEB5D3NzbStsCvg0we39Cj-_FMXPxCM,2591
|
|
212
|
+
fractal_server/syringe.py,sha256=SA4iFBMhpMtIF3DeJw0I1QLynI---n_N-RXYYS7EL7I,2795
|
|
213
|
+
fractal_server/tasks/__init__.py,sha256=kadmVUoIghl8s190_Tt-8f-WBqMi8u8oU4Pvw39NHE8,23
|
|
214
|
+
fractal_server/tasks/config/__init__.py,sha256=f1kARvKJPdM3b0HmJhIyMRxi8RCgPajUfS7RBhNfLKY,152
|
|
215
|
+
fractal_server/tasks/config/_pixi.py,sha256=K5z6-Wh7FlSraC4E91k9Gd7OTBPj3m7WZJMLKvKVdBc,3773
|
|
216
|
+
fractal_server/tasks/config/_python.py,sha256=lvjIzuV9mMyDmRadx2yTTKu1abx1EE_gnZhVTL45UzE,1598
|
|
217
|
+
fractal_server/tasks/utils.py,sha256=izZthoEmt5NcnC8ktTmbMtNnrCD8zKir37NyCfPJDX4,290
|
|
218
|
+
fractal_server/tasks/v2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
219
|
+
fractal_server/tasks/v2/local/__init__.py,sha256=2dJqJIwn9UEANg8lPFprxVLk3ug-4xYIb5pvIsqPb5s,353
|
|
220
|
+
fractal_server/tasks/v2/local/_utils.py,sha256=J9E3EhY8VKe7aaHRJqv5aT7MOTFPZ-7lDCFqUXXAw1E,3491
|
|
221
|
+
fractal_server/tasks/v2/local/collect.py,sha256=vtDGEwLoKrvZG-lFnOUbtQabM-1ob16hzLYv440hQ58,12146
|
|
222
|
+
fractal_server/tasks/v2/local/collect_pixi.py,sha256=XJZpjmXZwpKc6IPU43EMtQlncPnSHi0OA9wpE_P4hiw,11518
|
|
223
|
+
fractal_server/tasks/v2/local/deactivate.py,sha256=jBkgDOp8vHQCSpDaM5jH7YhYGZor25rQtSsVkvn2rHM,9960
|
|
224
|
+
fractal_server/tasks/v2/local/deactivate_pixi.py,sha256=p5_TVz5p-4yvH6TeZ0KtgEPnBGQ0Lxs46ls0AkBx3JA,3715
|
|
225
|
+
fractal_server/tasks/v2/local/delete.py,sha256=BhIfPQ-Ylfq3D5969GFe_eMTQm6oCEiz2ghwThqZVKY,2951
|
|
226
|
+
fractal_server/tasks/v2/local/reactivate.py,sha256=7USin1BRWmmN9OZnRYiTa3gPN5B_xdEeV8A91bA1YIc,6075
|
|
227
|
+
fractal_server/tasks/v2/local/reactivate_pixi.py,sha256=SOblcb_IlRTCyaVvhW-KIxHw2GbVKMtx8VPauhFHvbs,8221
|
|
228
|
+
fractal_server/tasks/v2/ssh/__init__.py,sha256=dPK6BtEZVh1GiFP05j1RKTEnZvjJez8o2KkMC2hWXaw,339
|
|
229
|
+
fractal_server/tasks/v2/ssh/_pixi_slurm_ssh.py,sha256=3iixFaS5Uqhh28qAv_yBSW4YvffqIhE0LK0gQee9qjI,7448
|
|
230
|
+
fractal_server/tasks/v2/ssh/_utils.py,sha256=a2oM8zh68zmcUuRLY_5y_9wA9MNd3NOM-w-P7RgwX2E,6112
|
|
231
|
+
fractal_server/tasks/v2/ssh/collect.py,sha256=KHhpTGURX1H0A1O4asoH-idTgHpW2-Vx1fsQPhi5RlY,14497
|
|
232
|
+
fractal_server/tasks/v2/ssh/collect_pixi.py,sha256=Pg9o1qnBFRpBwpt7abjrewDjPURDCwoaKraEq8AcOk0,15871
|
|
233
|
+
fractal_server/tasks/v2/ssh/deactivate.py,sha256=nbm9lnWtegql8rITeM5-VmsL6RD7TiKZKvdzl39Shwk,12689
|
|
234
|
+
fractal_server/tasks/v2/ssh/deactivate_pixi.py,sha256=6p2quZe8Kg0gK_zoF21-F8guFBjrmNvOZCRaUOYUb3E,4952
|
|
235
|
+
fractal_server/tasks/v2/ssh/delete.py,sha256=63qUL9p54Qjw0FSSuKossimON6rTJb9Ak8imVN3JhM0,4469
|
|
236
|
+
fractal_server/tasks/v2/ssh/reactivate.py,sha256=TX6MAlVai4766PDJ5qfCg5YIUwhJkJpnungdzojCiaY,8538
|
|
237
|
+
fractal_server/tasks/v2/ssh/reactivate_pixi.py,sha256=ohL-rpMS8Ey07-mVnc-dZrY3FKtpzAJRqcLsUEDzjZ8,11899
|
|
238
|
+
fractal_server/tasks/v2/templates/1_create_venv.sh,sha256=a9viswsex_26lNStFgTjtSM4_K1eiyA2qfSQAwhH1Pw,561
|
|
239
|
+
fractal_server/tasks/v2/templates/2_pip_install.sh,sha256=IS1iXCvFTb6owHAIrvTrnPN1g7UWESkZyTTVdBBLQ3Y,2168
|
|
240
|
+
fractal_server/tasks/v2/templates/3_pip_freeze.sh,sha256=oxqXMd-ZW8jtHjkwdwchbtWaoW6QHIk2Ksgreygo4no,181
|
|
241
|
+
fractal_server/tasks/v2/templates/4_pip_show.sh,sha256=L4i5MHxFW8vuFOKpTLXKNyXeCZL6RlRgjBv9YfGxTQU,1697
|
|
242
|
+
fractal_server/tasks/v2/templates/5_get_venv_size_and_file_number.sh,sha256=_I3R2pBWCMfs3MZtTKazW1sK17fV2_nRNNXHFPccpCQ,301
|
|
243
|
+
fractal_server/tasks/v2/templates/6_pip_install_from_freeze.sh,sha256=ddF-Pz-MTvAUFoTW9Oq3Vqf1jpUtRXVSrOR_yRS13SM,995
|
|
244
|
+
fractal_server/tasks/v2/templates/pixi_1_extract.sh,sha256=vRRiBhwdE0NAXxornzG4P8QlZ5vjn-f9lJTtigA_Q_g,1112
|
|
245
|
+
fractal_server/tasks/v2/templates/pixi_2_install.sh,sha256=0vWP7PscdPlGwlukD752eKeQVRis4PwG2f2IhPK_8RA,1614
|
|
246
|
+
fractal_server/tasks/v2/templates/pixi_3_post_install.sh,sha256=eiTcg-eTSo-itmeEBt5am0jSji1-2MvYamm-HqiCfO4,2514
|
|
247
|
+
fractal_server/tasks/v2/utils_background.py,sha256=Rc_dO3Y89i3oI3tLgqrvJNwbL-E9tWg4TskQYqTDX3E,4842
|
|
248
|
+
fractal_server/tasks/v2/utils_database.py,sha256=C1td6m6ab1NdXVoT6stvVdrY_3FNck8OkRZZhn9h8ZA,1797
|
|
249
|
+
fractal_server/tasks/v2/utils_package_names.py,sha256=-FAcbwBHsjyvhIK0QKue9_0xJUfRVdKMSIU_-gnLOR0,2381
|
|
250
|
+
fractal_server/tasks/v2/utils_pixi.py,sha256=Z0FnRqVynSvXDDeFL0anz7zwKrBDLGdQxyuJdipt2DI,3411
|
|
251
|
+
fractal_server/tasks/v2/utils_python_interpreter.py,sha256=36AvrMoydr9w6Rm_7hKl5QK8zYI0KIm4Pv8WHANWwjE,658
|
|
252
|
+
fractal_server/tasks/v2/utils_templates.py,sha256=L5GblhIKJwyzUbCORj1et5mh-7mG19nT5kmIpxOEj90,3489
|
|
253
|
+
fractal_server/types/__init__.py,sha256=z5jzdESBld-orcOyBe6J5I-V-CQfY64nRYVFQXZUlWs,2934
|
|
254
|
+
fractal_server/types/validators/__init__.py,sha256=5uj6KJ9MelFZgyoq3MzXLhgWCl0yiriS7XKmb0gathg,392
|
|
255
|
+
fractal_server/types/validators/_common_validators.py,sha256=LTIQPfOPBM-KjxPgbeCLvLFwSESxAQjppzON9pt_RDQ,1148
|
|
256
|
+
fractal_server/types/validators/_filter_validators.py,sha256=irmjzycmiR6F4fmWUeA45Pdh7AeLufwVjNItskDsknk,831
|
|
257
|
+
fractal_server/types/validators/_workflow_task_arguments_validators.py,sha256=zt4TQBiLiNVD3yMYbN-dkX0AWRAjG4vRv3FIybh9zLQ,372
|
|
258
|
+
fractal_server/urls.py,sha256=QjIKAC1a46bCdiPMu3AlpgFbcv6a4l3ABcd5xz190Og,471
|
|
259
|
+
fractal_server/utils.py,sha256=-rjg8QTXQcKweXjn0NcmETFs1_uM9PGnbl0Q7c4ERPM,2181
|
|
260
|
+
fractal_server/zip_tools.py,sha256=Uhn-ax4_9g1PJ32BdyaX30hFpAeVOv2tZYTUK-zVn1E,5719
|
|
261
|
+
fractal_server-2.17.2.dist-info/METADATA,sha256=Lw5_B49kY8KKZrm33xe8d34toufMLQG3uSqLmX5Wvhk,4224
|
|
262
|
+
fractal_server-2.17.2.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
|
|
263
|
+
fractal_server-2.17.2.dist-info/entry_points.txt,sha256=8tV2kynvFkjnhbtDnxAqImL6HMVKsopgGfew0DOp5UY,58
|
|
264
|
+
fractal_server-2.17.2.dist-info/licenses/LICENSE,sha256=QKAharUuhxL58kSoLizKJeZE3mTCBnX6ucmz8W0lxlk,1576
|
|
265
|
+
fractal_server-2.17.2.dist-info/RECORD,,
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
from sqlalchemy import Column
|
|
2
|
-
from sqlalchemy.dialects.postgresql import JSONB
|
|
3
|
-
from sqlmodel import Field
|
|
4
|
-
from sqlmodel import SQLModel
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
# TODO-2.17.1: Drop `UserSettings`
|
|
8
|
-
class UserSettings(SQLModel, table=True):
|
|
9
|
-
"""
|
|
10
|
-
Comprehensive list of user settings.
|
|
11
|
-
|
|
12
|
-
Attributes:
|
|
13
|
-
id: ID of database object
|
|
14
|
-
slurm_accounts:
|
|
15
|
-
List of SLURM accounts, to be used upon Fractal job submission.
|
|
16
|
-
ssh_host: SSH-reachable host where a SLURM client is available.
|
|
17
|
-
ssh_username: User on `ssh_host`.
|
|
18
|
-
ssh_private_key_path: Path of private SSH key for `ssh_username`.
|
|
19
|
-
slurm_user: Local user, to be impersonated via `sudo -u`
|
|
20
|
-
project_dir: Folder where `slurm_user` can write.
|
|
21
|
-
"""
|
|
22
|
-
|
|
23
|
-
__tablename__ = "user_settings"
|
|
24
|
-
|
|
25
|
-
id: int | None = Field(default=None, primary_key=True)
|
|
26
|
-
slurm_accounts: list[str] = Field(
|
|
27
|
-
sa_column=Column(JSONB, server_default="[]", nullable=False)
|
|
28
|
-
)
|
|
29
|
-
ssh_host: str | None = None
|
|
30
|
-
ssh_username: str | None = None
|
|
31
|
-
ssh_private_key_path: str | None = None
|
|
32
|
-
|
|
33
|
-
slurm_user: str | None = None
|
|
34
|
-
project_dir: str | None = None
|
|
35
|
-
|
|
36
|
-
ssh_tasks_dir: str | None = None
|
|
37
|
-
ssh_jobs_dir: str | None = None
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
from fastapi import APIRouter
|
|
2
|
-
from fastapi import Depends
|
|
3
|
-
from sqlmodel import select
|
|
4
|
-
|
|
5
|
-
from fractal_server.app.db import AsyncSession
|
|
6
|
-
from fractal_server.app.db import get_async_db
|
|
7
|
-
from fractal_server.app.models import UserOAuth
|
|
8
|
-
from fractal_server.app.models.v2 import ProjectV2
|
|
9
|
-
from fractal_server.app.routes.auth import current_superuser_act
|
|
10
|
-
from fractal_server.app.schemas.v2 import ProjectReadV2
|
|
11
|
-
|
|
12
|
-
router = APIRouter()
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
@router.get("/", response_model=list[ProjectReadV2])
|
|
16
|
-
async def view_project(
|
|
17
|
-
id: int | None = None,
|
|
18
|
-
user_id: int | None = None,
|
|
19
|
-
user: UserOAuth = Depends(current_superuser_act),
|
|
20
|
-
db: AsyncSession = Depends(get_async_db),
|
|
21
|
-
) -> list[ProjectReadV2]:
|
|
22
|
-
"""
|
|
23
|
-
Query `ProjectV2` table.
|
|
24
|
-
|
|
25
|
-
Args:
|
|
26
|
-
id: If not `None`, select a given `project.id`.
|
|
27
|
-
user_id: If not `None`, select a given `project.user_id`.
|
|
28
|
-
"""
|
|
29
|
-
|
|
30
|
-
stm = select(ProjectV2)
|
|
31
|
-
|
|
32
|
-
if id is not None:
|
|
33
|
-
stm = stm.where(ProjectV2.id == id)
|
|
34
|
-
if user_id is not None:
|
|
35
|
-
stm = stm.where(ProjectV2.user_list.any(UserOAuth.id == user_id))
|
|
36
|
-
|
|
37
|
-
res = await db.execute(stm)
|
|
38
|
-
project_list = res.scalars().all()
|
|
39
|
-
await db.close()
|
|
40
|
-
|
|
41
|
-
return project_list
|