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.
Files changed (206) hide show
  1. fractal_server/__init__.py +1 -1
  2. fractal_server/__main__.py +19 -18
  3. fractal_server/app/db/__init__.py +3 -3
  4. fractal_server/app/models/__init__.py +1 -1
  5. fractal_server/app/models/linkuserproject.py +3 -1
  6. fractal_server/app/models/security.py +22 -17
  7. fractal_server/app/models/v2/__init__.py +3 -1
  8. fractal_server/app/models/v2/accounting.py +9 -1
  9. fractal_server/app/models/v2/dataset.py +5 -1
  10. fractal_server/app/models/v2/history.py +15 -1
  11. fractal_server/app/models/v2/job.py +4 -0
  12. fractal_server/app/models/v2/profile.py +29 -0
  13. fractal_server/app/models/v2/project.py +5 -14
  14. fractal_server/app/models/v2/resource.py +4 -0
  15. fractal_server/app/models/v2/task_group.py +5 -7
  16. fractal_server/app/models/v2/workflow.py +2 -1
  17. fractal_server/app/routes/admin/v2/__init__.py +1 -2
  18. fractal_server/app/routes/admin/v2/accounting.py +1 -1
  19. fractal_server/app/routes/admin/v2/job.py +9 -9
  20. fractal_server/app/routes/admin/v2/profile.py +3 -2
  21. fractal_server/app/routes/admin/v2/resource.py +5 -5
  22. fractal_server/app/routes/admin/v2/task.py +28 -18
  23. fractal_server/app/routes/admin/v2/task_group.py +0 -1
  24. fractal_server/app/routes/admin/v2/task_group_lifecycle.py +1 -2
  25. fractal_server/app/routes/api/__init__.py +1 -0
  26. fractal_server/app/routes/api/v2/__init__.py +5 -6
  27. fractal_server/app/routes/api/v2/_aux_functions.py +70 -63
  28. fractal_server/app/routes/api/v2/_aux_functions_history.py +43 -20
  29. fractal_server/app/routes/api/v2/_aux_functions_task_lifecycle.py +2 -4
  30. fractal_server/app/routes/api/v2/_aux_functions_tasks.py +5 -7
  31. fractal_server/app/routes/api/v2/_aux_task_group_disambiguation.py +1 -2
  32. fractal_server/app/routes/api/v2/dataset.py +13 -32
  33. fractal_server/app/routes/api/v2/history.py +35 -21
  34. fractal_server/app/routes/api/v2/images.py +3 -2
  35. fractal_server/app/routes/api/v2/job.py +17 -14
  36. fractal_server/app/routes/api/v2/pre_submission_checks.py +5 -4
  37. fractal_server/app/routes/api/v2/project.py +22 -17
  38. fractal_server/app/routes/api/v2/status_legacy.py +12 -11
  39. fractal_server/app/routes/api/v2/submit.py +11 -12
  40. fractal_server/app/routes/api/v2/task.py +4 -3
  41. fractal_server/app/routes/api/v2/task_collection.py +28 -30
  42. fractal_server/app/routes/api/v2/task_collection_custom.py +8 -7
  43. fractal_server/app/routes/api/v2/task_collection_pixi.py +1 -2
  44. fractal_server/app/routes/api/v2/task_group.py +7 -6
  45. fractal_server/app/routes/api/v2/task_group_lifecycle.py +6 -6
  46. fractal_server/app/routes/api/v2/task_version_update.py +13 -12
  47. fractal_server/app/routes/api/v2/workflow.py +14 -31
  48. fractal_server/app/routes/api/v2/workflow_import.py +17 -19
  49. fractal_server/app/routes/api/v2/workflowtask.py +10 -12
  50. fractal_server/app/routes/auth/__init__.py +1 -3
  51. fractal_server/app/routes/auth/_aux_auth.py +1 -2
  52. fractal_server/app/routes/auth/current_user.py +4 -5
  53. fractal_server/app/routes/auth/group.py +7 -5
  54. fractal_server/app/routes/auth/login.py +1 -0
  55. fractal_server/app/routes/auth/oauth.py +4 -3
  56. fractal_server/app/routes/auth/register.py +4 -2
  57. fractal_server/app/routes/auth/users.py +10 -10
  58. fractal_server/app/routes/aux/_job.py +1 -1
  59. fractal_server/app/routes/aux/_runner.py +2 -2
  60. fractal_server/app/routes/pagination.py +1 -1
  61. fractal_server/app/schemas/user.py +3 -3
  62. fractal_server/app/schemas/v2/accounting.py +11 -0
  63. fractal_server/app/schemas/v2/dataset.py +28 -4
  64. fractal_server/app/schemas/v2/dumps.py +1 -0
  65. fractal_server/app/schemas/v2/manifest.py +4 -3
  66. fractal_server/app/schemas/v2/profile.py +53 -2
  67. fractal_server/app/schemas/v2/resource.py +109 -13
  68. fractal_server/app/schemas/v2/task.py +0 -1
  69. fractal_server/app/schemas/v2/task_collection.py +1 -1
  70. fractal_server/app/schemas/v2/workflowtask.py +4 -3
  71. fractal_server/app/security/__init__.py +4 -7
  72. fractal_server/app/security/signup_email.py +4 -5
  73. fractal_server/app/shutdown.py +23 -19
  74. fractal_server/config/_data.py +36 -25
  75. fractal_server/config/_database.py +19 -20
  76. fractal_server/config/_email.py +30 -38
  77. fractal_server/config/_main.py +34 -53
  78. fractal_server/config/_oauth.py +17 -21
  79. fractal_server/exceptions.py +4 -0
  80. fractal_server/images/models.py +3 -3
  81. fractal_server/images/status_tools.py +4 -2
  82. fractal_server/logger.py +1 -1
  83. fractal_server/main.py +4 -3
  84. fractal_server/migrations/versions/034a469ec2eb_task_groups.py +4 -8
  85. fractal_server/migrations/versions/091b01f51f88_add_usergroup_and_linkusergroup_table.py +1 -1
  86. fractal_server/migrations/versions/0f5f85bb2ae7_add_pre_pinned_packages.py +1 -0
  87. fractal_server/migrations/versions/19eca0dd47a9_user_settings_project_dir.py +1 -1
  88. fractal_server/migrations/versions/1a83a5260664_rename.py +1 -1
  89. fractal_server/migrations/versions/1eac13a26c83_drop_v1_tables.py +1 -0
  90. fractal_server/migrations/versions/316140ff7ee1_remove_usersettings_cache_dir.py +1 -1
  91. fractal_server/migrations/versions/40d6d6511b20_add_index_to_history_models.py +47 -0
  92. fractal_server/migrations/versions/45fbb391d7af_make_resource_id_fk_non_nullable.py +46 -0
  93. fractal_server/migrations/versions/47351f8c7ebc_drop_dataset_filters.py +1 -0
  94. fractal_server/migrations/versions/49d0856e9569_drop_table.py +62 -0
  95. fractal_server/migrations/versions/4c308bcaea2b_add_task_args_schema_and_task_args_.py +1 -1
  96. fractal_server/migrations/versions/4cedeb448a53_workflowtask_foreign_keys_not_nullables.py +1 -1
  97. fractal_server/migrations/versions/501961cfcd85_remove_link_between_v1_and_v2_tasks_.py +2 -1
  98. fractal_server/migrations/versions/50a13d6138fd_initial_schema.py +7 -19
  99. fractal_server/migrations/versions/5bf02391cfef_v2.py +4 -10
  100. fractal_server/migrations/versions/70e77f1c38b0_add_applyworkflow_first_task_index_and_.py +1 -0
  101. fractal_server/migrations/versions/71eefd1dd202_add_slurm_accounts.py +1 -1
  102. fractal_server/migrations/versions/7673fe18c05d_remove_project_dir_server_default.py +29 -0
  103. fractal_server/migrations/versions/791ce783d3d8_add_indices.py +1 -1
  104. fractal_server/migrations/versions/83bc2ad3ffcc_2_17_0.py +1 -0
  105. fractal_server/migrations/versions/84bf0fffde30_add_dumps_to_applyworkflow.py +1 -0
  106. fractal_server/migrations/versions/8e8f227a3e36_update_taskv2_post_2_7_0.py +2 -4
  107. fractal_server/migrations/versions/8f79bd162e35_add_docs_info_and_docs_link_to_task_.py +1 -1
  108. fractal_server/migrations/versions/94a47ea2d3ff_remove_cache_dir_slurm_user_and_slurm_.py +1 -0
  109. fractal_server/migrations/versions/969d84257cac_add_historyrun_task_id.py +1 -1
  110. fractal_server/migrations/versions/97f444d47249_add_applyworkflow_project_dump.py +1 -1
  111. fractal_server/migrations/versions/981d588fe248_add_executor_error_log.py +1 -1
  112. fractal_server/migrations/versions/99ea79d9e5d2_add_dataset_history.py +2 -4
  113. fractal_server/migrations/versions/9c5ae74c9b98_add_user_settings_table.py +1 -1
  114. fractal_server/migrations/versions/9db60297b8b2_set_ondelete.py +1 -1
  115. fractal_server/migrations/versions/9fd26a2b0de4_add_workflow_timestamp_created.py +1 -1
  116. fractal_server/migrations/versions/a7f4d6137b53_add_workflow_dump_to_applyworkflow.py +1 -1
  117. fractal_server/migrations/versions/af1ef1c83c9b_add_accounting_tables.py +1 -0
  118. fractal_server/migrations/versions/af8673379a5c_drop_old_filter_columns.py +1 -0
  119. fractal_server/migrations/versions/b1e7f7a1ff71_task_group_for_pixi.py +1 -1
  120. fractal_server/migrations/versions/b3ffb095f973_json_to_jsonb.py +1 -0
  121. fractal_server/migrations/versions/c90a7c76e996_job_id_in_history_run.py +1 -1
  122. fractal_server/migrations/versions/caba9fb1ea5e_drop_useroauth_user_settings_id.py +49 -0
  123. fractal_server/migrations/versions/d256a7379ab8_taskgroup_activity_and_venv_info_to_.py +4 -9
  124. fractal_server/migrations/versions/d4fe3708d309_make_applyworkflow_workflow_dump_non_.py +1 -0
  125. fractal_server/migrations/versions/da2cb2ac4255_user_group_viewer_paths.py +1 -1
  126. fractal_server/migrations/versions/db09233ad13a_split_filters_and_keep_old_columns.py +1 -0
  127. fractal_server/migrations/versions/e0e717ae2f26_delete_linkuserproject_ondelete_project.py +50 -0
  128. fractal_server/migrations/versions/e75cac726012_make_applyworkflow_start_timestamp_not_.py +1 -0
  129. fractal_server/migrations/versions/e81103413827_add_job_type_filters.py +1 -1
  130. fractal_server/migrations/versions/efa89c30e0a4_add_project_timestamp_created.py +1 -0
  131. fractal_server/migrations/versions/f37aceb45062_make_historyunit_logfile_required.py +1 -1
  132. fractal_server/migrations/versions/f384e1c0cf5d_drop_task_default_args_columns.py +1 -0
  133. fractal_server/migrations/versions/fbce16ff4e47_new_history_items.py +4 -9
  134. fractal_server/runner/config/_local.py +8 -5
  135. fractal_server/runner/config/_slurm.py +37 -33
  136. fractal_server/runner/config/slurm_mem_to_MB.py +0 -1
  137. fractal_server/runner/executors/base_runner.py +29 -4
  138. fractal_server/runner/executors/local/get_local_config.py +1 -0
  139. fractal_server/runner/executors/local/runner.py +14 -13
  140. fractal_server/runner/executors/slurm_common/_batching.py +5 -10
  141. fractal_server/runner/executors/slurm_common/base_slurm_runner.py +53 -27
  142. fractal_server/runner/executors/slurm_common/get_slurm_config.py +14 -7
  143. fractal_server/runner/executors/slurm_common/remote.py +3 -1
  144. fractal_server/runner/executors/slurm_common/slurm_config.py +1 -0
  145. fractal_server/runner/executors/slurm_common/slurm_job_task_models.py +1 -3
  146. fractal_server/runner/executors/slurm_ssh/runner.py +16 -11
  147. fractal_server/runner/executors/slurm_ssh/tar_commands.py +1 -0
  148. fractal_server/runner/executors/slurm_sudo/_subprocess_run_as_user.py +1 -0
  149. fractal_server/runner/executors/slurm_sudo/runner.py +16 -11
  150. fractal_server/runner/task_files.py +9 -3
  151. fractal_server/runner/v2/_local.py +9 -4
  152. fractal_server/runner/v2/_slurm_ssh.py +11 -5
  153. fractal_server/runner/v2/_slurm_sudo.py +11 -5
  154. fractal_server/runner/v2/db_tools.py +0 -1
  155. fractal_server/runner/v2/deduplicate_list.py +2 -1
  156. fractal_server/runner/v2/runner.py +11 -14
  157. fractal_server/runner/v2/runner_functions.py +11 -14
  158. fractal_server/runner/v2/submit_workflow.py +7 -6
  159. fractal_server/ssh/_fabric.py +6 -13
  160. fractal_server/string_tools.py +0 -1
  161. fractal_server/syringe.py +1 -1
  162. fractal_server/tasks/config/_pixi.py +1 -1
  163. fractal_server/tasks/config/_python.py +16 -9
  164. fractal_server/tasks/utils.py +0 -1
  165. fractal_server/tasks/v2/local/_utils.py +1 -1
  166. fractal_server/tasks/v2/local/collect.py +10 -12
  167. fractal_server/tasks/v2/local/collect_pixi.py +9 -10
  168. fractal_server/tasks/v2/local/deactivate.py +7 -8
  169. fractal_server/tasks/v2/local/deactivate_pixi.py +4 -4
  170. fractal_server/tasks/v2/local/delete.py +1 -3
  171. fractal_server/tasks/v2/local/reactivate.py +7 -7
  172. fractal_server/tasks/v2/local/reactivate_pixi.py +7 -7
  173. fractal_server/tasks/v2/ssh/_utils.py +3 -3
  174. fractal_server/tasks/v2/ssh/collect.py +14 -19
  175. fractal_server/tasks/v2/ssh/collect_pixi.py +17 -19
  176. fractal_server/tasks/v2/ssh/deactivate.py +10 -8
  177. fractal_server/tasks/v2/ssh/deactivate_pixi.py +6 -5
  178. fractal_server/tasks/v2/ssh/delete.py +7 -5
  179. fractal_server/tasks/v2/ssh/reactivate.py +11 -11
  180. fractal_server/tasks/v2/ssh/reactivate_pixi.py +8 -9
  181. fractal_server/tasks/v2/templates/1_create_venv.sh +2 -0
  182. fractal_server/tasks/v2/templates/2_pip_install.sh +2 -0
  183. fractal_server/tasks/v2/templates/3_pip_freeze.sh +2 -0
  184. fractal_server/tasks/v2/templates/4_pip_show.sh +2 -0
  185. fractal_server/tasks/v2/templates/5_get_venv_size_and_file_number.sh +3 -1
  186. fractal_server/tasks/v2/templates/6_pip_install_from_freeze.sh +2 -0
  187. fractal_server/tasks/v2/templates/pixi_1_extract.sh +2 -0
  188. fractal_server/tasks/v2/templates/pixi_2_install.sh +2 -0
  189. fractal_server/tasks/v2/templates/pixi_3_post_install.sh +2 -0
  190. fractal_server/tasks/v2/utils_background.py +3 -3
  191. fractal_server/tasks/v2/utils_package_names.py +1 -2
  192. fractal_server/tasks/v2/utils_pixi.py +1 -3
  193. fractal_server/types/__init__.py +76 -1
  194. fractal_server/types/validators/_common_validators.py +1 -3
  195. fractal_server/types/validators/_workflow_task_arguments_validators.py +1 -2
  196. fractal_server/utils.py +1 -0
  197. fractal_server/zip_tools.py +34 -0
  198. {fractal_server-2.17.1a0.dist-info → fractal_server-2.17.2.dist-info}/METADATA +1 -1
  199. fractal_server-2.17.2.dist-info/RECORD +265 -0
  200. fractal_server/app/models/user_settings.py +0 -37
  201. fractal_server/app/routes/admin/v2/project.py +0 -41
  202. fractal_server/data_migrations/2_17_0.py +0 -339
  203. fractal_server-2.17.1a0.dist-info/RECORD +0 -262
  204. {fractal_server-2.17.1a0.dist-info → fractal_server-2.17.2.dist-info}/WHEEL +0 -0
  205. {fractal_server-2.17.1a0.dist-info → fractal_server-2.17.2.dist-info}/entry_points.txt +0 -0
  206. {fractal_server-2.17.1a0.dist-info → fractal_server-2.17.2.dist-info}/licenses/LICENSE +0 -0
@@ -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 ..urls import normalize_url
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
@@ -13,6 +13,7 @@
13
13
  This module provides general purpose utilities that are not specific to any
14
14
  subsystem.
15
15
  """
16
+
16
17
  import shlex
17
18
  import subprocess # nosec
18
19
  from datetime import datetime
@@ -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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fractal-server
3
- Version: 2.17.1a0
3
+ Version: 2.17.2
4
4
  Summary: Backend component of the Fractal analytics platform
5
5
  License-Expression: BSD-3-Clause
6
6
  License-File: LICENSE
@@ -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