fractal-server 2.14.16__py3-none-any.whl → 2.15.0a1__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 (41) hide show
  1. fractal_server/__init__.py +1 -1
  2. fractal_server/app/models/v2/task_group.py +17 -5
  3. fractal_server/app/routes/admin/v2/task_group_lifecycle.py +2 -2
  4. fractal_server/app/routes/api/v2/__init__.py +6 -0
  5. fractal_server/app/routes/api/v2/task_collection.py +3 -3
  6. fractal_server/app/routes/api/v2/task_collection_custom.py +2 -2
  7. fractal_server/app/routes/api/v2/task_collection_pixi.py +236 -0
  8. fractal_server/app/routes/api/v2/task_group_lifecycle.py +26 -7
  9. fractal_server/app/schemas/v2/__init__.py +2 -1
  10. fractal_server/app/schemas/v2/dumps.py +1 -1
  11. fractal_server/app/schemas/v2/task_collection.py +1 -1
  12. fractal_server/app/schemas/v2/task_group.py +16 -5
  13. fractal_server/config.py +42 -0
  14. fractal_server/migrations/versions/b1e7f7a1ff71_task_group_for_pixi.py +53 -0
  15. fractal_server/ssh/_fabric.py +26 -0
  16. fractal_server/tasks/v2/local/__init__.py +3 -0
  17. fractal_server/tasks/v2/local/_utils.py +7 -2
  18. fractal_server/tasks/v2/local/collect.py +23 -24
  19. fractal_server/tasks/v2/local/collect_pixi.py +234 -0
  20. fractal_server/tasks/v2/local/deactivate.py +36 -39
  21. fractal_server/tasks/v2/local/deactivate_pixi.py +102 -0
  22. fractal_server/tasks/v2/local/reactivate.py +9 -16
  23. fractal_server/tasks/v2/local/reactivate_pixi.py +146 -0
  24. fractal_server/tasks/v2/ssh/__init__.py +3 -0
  25. fractal_server/tasks/v2/ssh/_utils.py +5 -5
  26. fractal_server/tasks/v2/ssh/collect.py +23 -28
  27. fractal_server/tasks/v2/ssh/collect_pixi.py +306 -0
  28. fractal_server/tasks/v2/ssh/deactivate.py +39 -45
  29. fractal_server/tasks/v2/ssh/deactivate_pixi.py +128 -0
  30. fractal_server/tasks/v2/ssh/reactivate.py +8 -15
  31. fractal_server/tasks/v2/ssh/reactivate_pixi.py +108 -0
  32. fractal_server/tasks/v2/templates/pixi_1_extract.sh +40 -0
  33. fractal_server/tasks/v2/templates/pixi_2_install.sh +48 -0
  34. fractal_server/tasks/v2/templates/pixi_3_post_install.sh +80 -0
  35. fractal_server/tasks/v2/utils_background.py +43 -8
  36. fractal_server/tasks/v2/utils_pixi.py +38 -0
  37. {fractal_server-2.14.16.dist-info → fractal_server-2.15.0a1.dist-info}/METADATA +1 -1
  38. {fractal_server-2.14.16.dist-info → fractal_server-2.15.0a1.dist-info}/RECORD +41 -29
  39. {fractal_server-2.14.16.dist-info → fractal_server-2.15.0a1.dist-info}/LICENSE +0 -0
  40. {fractal_server-2.14.16.dist-info → fractal_server-2.15.0a1.dist-info}/WHEEL +0 -0
  41. {fractal_server-2.14.16.dist-info → fractal_server-2.15.0a1.dist-info}/entry_points.txt +0 -0
@@ -1,3 +1,4 @@
1
+ import logging
1
2
  from pathlib import Path
2
3
  from typing import TypeVar
3
4
 
@@ -9,6 +10,7 @@ from fractal_server.app.schemas.v2 import TaskCreateV2
9
10
  from fractal_server.app.schemas.v2 import TaskGroupActivityStatusV2
10
11
  from fractal_server.app.schemas.v2.manifest import ManifestV2
11
12
  from fractal_server.app.schemas.v2.task_group import TaskGroupActivityActionV2
13
+ from fractal_server.exceptions import UnreachableBranchError
12
14
  from fractal_server.logger import get_logger
13
15
  from fractal_server.logger import reset_logger_handlers
14
16
  from fractal_server.utils import get_timestamp
@@ -23,6 +25,24 @@ def add_commit_refresh(*, obj: T, db: DBSyncSession) -> T:
23
25
  return obj
24
26
 
25
27
 
28
+ def get_activity_and_task_group(
29
+ *,
30
+ task_group_activity_id: int,
31
+ task_group_id: int,
32
+ db: DBSyncSession,
33
+ ) -> tuple[bool, TaskGroupV2, TaskGroupActivityV2]:
34
+ task_group = db.get(TaskGroupV2, task_group_id)
35
+ activity = db.get(TaskGroupActivityV2, task_group_activity_id)
36
+ if activity is None or task_group is None:
37
+ logging.error(
38
+ "Cannot find database rows with "
39
+ f"{task_group_id=} and {task_group_activity_id=}:\n"
40
+ f"{task_group=}\n{activity=}. Exit."
41
+ )
42
+ return False, None, None
43
+ return True, task_group, activity
44
+
45
+
26
46
  def fail_and_cleanup(
27
47
  task_group: TaskGroupV2,
28
48
  task_group_activity: TaskGroupActivityV2,
@@ -47,11 +67,12 @@ def fail_and_cleanup(
47
67
  reset_logger_handlers(logger)
48
68
 
49
69
 
50
- def _prepare_tasks_metadata(
70
+ def prepare_tasks_metadata(
51
71
  *,
52
72
  package_manifest: ManifestV2,
53
- python_bin: Path,
54
73
  package_root: Path,
74
+ python_bin: Path | None = None,
75
+ project_python_wrapper: Path | None = None,
55
76
  package_version: str | None = None,
56
77
  ) -> list[TaskCreateV2]:
57
78
  """
@@ -59,10 +80,22 @@ def _prepare_tasks_metadata(
59
80
 
60
81
  Args:
61
82
  package_manifest:
62
- python_bin:
63
83
  package_root:
64
84
  package_version:
85
+ python_bin:
86
+ project_python_wrapper:
65
87
  """
88
+
89
+ if bool(project_python_wrapper is None) == bool(python_bin is None):
90
+ raise UnreachableBranchError(
91
+ f"Either {project_python_wrapper} or {python_bin} must be set."
92
+ )
93
+
94
+ if python_bin is not None:
95
+ actual_python = python_bin
96
+ else:
97
+ actual_python = project_python_wrapper
98
+
66
99
  task_list = []
67
100
  for _task in package_manifest.task_list:
68
101
  # Set non-command attributes
@@ -76,14 +109,16 @@ def _prepare_tasks_metadata(
76
109
  # Set command attributes
77
110
  if _task.executable_non_parallel is not None:
78
111
  non_parallel_path = package_root / _task.executable_non_parallel
79
- task_attributes["command_non_parallel"] = (
80
- f"{python_bin.as_posix()} " f"{non_parallel_path.as_posix()}"
112
+ cmd_non_parallel = (
113
+ f"{actual_python.as_posix()} {non_parallel_path.as_posix()}"
81
114
  )
115
+ task_attributes["command_non_parallel"] = cmd_non_parallel
82
116
  if _task.executable_parallel is not None:
83
117
  parallel_path = package_root / _task.executable_parallel
84
- task_attributes[
85
- "command_parallel"
86
- ] = f"{python_bin.as_posix()} {parallel_path.as_posix()}"
118
+ cmd_parallel = (
119
+ f"{actual_python.as_posix()} {parallel_path.as_posix()}"
120
+ )
121
+ task_attributes["command_parallel"] = cmd_parallel
87
122
  # Create object
88
123
  task_obj = TaskCreateV2(
89
124
  **_task.model_dump(
@@ -0,0 +1,38 @@
1
+ from typing import TypedDict
2
+
3
+ SOURCE_DIR_NAME = "source_dir"
4
+
5
+
6
+ class ParsedOutput(TypedDict):
7
+ package_root: str
8
+ venv_size: str
9
+ venv_file_number: str
10
+ project_python_wrapper: str
11
+
12
+
13
+ def parse_collect_stdout(stdout: str) -> ParsedOutput:
14
+ """
15
+ Parse standard output of `pixi/1_collect.sh`
16
+ """
17
+ searches = [
18
+ ("Package folder:", "package_root"),
19
+ ("Disk usage:", "venv_size"),
20
+ ("Number of files:", "venv_file_number"),
21
+ ("Project Python wrapper:", "project_python_wrapper"),
22
+ ]
23
+ stdout_lines = stdout.splitlines()
24
+ attributes = dict()
25
+ for search, attribute_name in searches:
26
+ matching_lines = [_line for _line in stdout_lines if search in _line]
27
+ if len(matching_lines) == 0:
28
+ raise ValueError(f"String '{search}' not found in stdout.")
29
+ elif len(matching_lines) > 1:
30
+ raise ValueError(
31
+ f"String '{search}' found too many times "
32
+ f"({len(matching_lines)})."
33
+ )
34
+ else:
35
+ actual_line = matching_lines[0]
36
+ attribute_value = actual_line.split(search)[-1].strip(" ")
37
+ attributes[attribute_name] = attribute_value
38
+ return attributes
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: fractal-server
3
- Version: 2.14.16
3
+ Version: 2.15.0a1
4
4
  Summary: Backend component of the Fractal analytics platform
5
5
  License: BSD-3-Clause
6
6
  Author: Tommaso Comparin
@@ -1,4 +1,4 @@
1
- fractal_server/__init__.py,sha256=gwWAj4n6TyJ-oQRbdVm1m1OqN5wobWHCuIFtGE6bVzs,24
1
+ fractal_server/__init__.py,sha256=jqf_k5MzFRozDqpvzsTxEimwRfYyqB0UiYf2p5oD-pw,25
2
2
  fractal_server/__main__.py,sha256=rkM8xjY1KeS3l63irB8yCrlVobR-73uDapC4wvrIlxI,6957
3
3
  fractal_server/alembic.ini,sha256=MWwi7GzjzawI9cCAK1LW7NxIBQDUqD12-ptJoq5JpP0,3153
4
4
  fractal_server/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -15,7 +15,7 @@ fractal_server/app/models/v2/history.py,sha256=CBN2WVg9vW5pHU1RP8TkB_nnJrwnuifCc
15
15
  fractal_server/app/models/v2/job.py,sha256=LfpwAedMVcA_6Ne0Rr4g3tt0asAQkWz3LSPm7IwZhYc,1978
16
16
  fractal_server/app/models/v2/project.py,sha256=RmU5BQR4HD6xifRndUhvPBy30wntml-giBRoEysdWXw,755
17
17
  fractal_server/app/models/v2/task.py,sha256=P7nsS5mCmVyzr4WtcjoiedesqkWvkHA2cQPsMbQt-7o,1427
18
- fractal_server/app/models/v2/task_group.py,sha256=shnEBZSNmlYVtF3LSuBkTj4hOI5MqbCko-HgqukCeh4,3468
18
+ fractal_server/app/models/v2/task_group.py,sha256=Q78ommMWEG2Sqvg2Y8ICgYA_aGH-N7LdLbnmnDl1l1M,3841
19
19
  fractal_server/app/models/v2/workflow.py,sha256=wuK9SV1TXrlYcieYLYj5fGvV3K3bW7g9jCM1uv9HHjA,1058
20
20
  fractal_server/app/models/v2/workflowtask.py,sha256=tph237DXitOnzSv88rk9qgN2VmlI1smWS5fNYHR8jMo,1200
21
21
  fractal_server/app/routes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -27,9 +27,9 @@ fractal_server/app/routes/admin/v2/job.py,sha256=EOnW645RaacyNof55O_NV_4ONyb7ihM
27
27
  fractal_server/app/routes/admin/v2/project.py,sha256=MA_LdoEuSuisSGRO43TapMuJ080y5iaUGSAUgKuuKOg,1188
28
28
  fractal_server/app/routes/admin/v2/task.py,sha256=93QIbWZNnqaBhG9R9-RStDX2mpqRNN3G7BIb0KM-jeE,4312
29
29
  fractal_server/app/routes/admin/v2/task_group.py,sha256=biibAvMPD2w-267eyTm3wH2s3mITjiS5gYzwCCwmLbI,7099
30
- fractal_server/app/routes/admin/v2/task_group_lifecycle.py,sha256=aEevPwQhlx0NPcXH6tDtIIUZEJ6a5ZJ-7eHWf7XMXOE,9226
30
+ fractal_server/app/routes/admin/v2/task_group_lifecycle.py,sha256=8-CWyfyB22K-0VlbzJ1BFUqcFsflfeBKVeHRqePClfs,9222
31
31
  fractal_server/app/routes/api/__init__.py,sha256=B8l6PSAhR10iZqHEiyTat-_0tkeKdrCigIE6DJGP5b8,638
32
- fractal_server/app/routes/api/v2/__init__.py,sha256=3i4Aa-sgXq5Bb21hjONRilAloz0olagem1uIJB_WaRo,2625
32
+ fractal_server/app/routes/api/v2/__init__.py,sha256=D3sRRsqkmZO6kBxUjg40q0aRDsnuXI4sOOfn0xF9JsM,2820
33
33
  fractal_server/app/routes/api/v2/_aux_functions.py,sha256=P5exwdiNm0ZxtoGw4wxvm_-u8e83gXz8iYEVFuUq_cU,12792
34
34
  fractal_server/app/routes/api/v2/_aux_functions_history.py,sha256=Z23xwvBaVEEQ5B-JsWZJpjj4_QqoXqHYONztnbAH6gw,4425
35
35
  fractal_server/app/routes/api/v2/_aux_functions_task_lifecycle.py,sha256=GpKfw9yj01LmOAuNMTOreU1PFkCKpjK5oCt7_wp35-A,6741
@@ -45,10 +45,11 @@ fractal_server/app/routes/api/v2/project.py,sha256=ldMEyjtwGpX2teu85sCNWaubDFlw-
45
45
  fractal_server/app/routes/api/v2/status_legacy.py,sha256=ZckHeBy8y21cyQ_OLY-VmkapzMhd3g9ae-qg-r4-uVo,6317
46
46
  fractal_server/app/routes/api/v2/submit.py,sha256=_BDkWtFdo8-p7kZ0Oxaidei04MfuBeaEsWtwJaKZQ_Y,8781
47
47
  fractal_server/app/routes/api/v2/task.py,sha256=ptS47XtxnHzk9bPNZV24Wfroo5sP19RE0-LsfX0ZvOc,7018
48
- fractal_server/app/routes/api/v2/task_collection.py,sha256=FGMhTnU88Umd8nMdriUYPtpTtAHcRBRrZIYyOesFhrU,12577
49
- fractal_server/app/routes/api/v2/task_collection_custom.py,sha256=EfGpv6W7xDyuYYp6E7XAcXLJiLNAImUHFqMDLgfh-4s,6730
48
+ fractal_server/app/routes/api/v2/task_collection.py,sha256=MRaf_-rI4dL6Sfn8XuDUZ-f9a_60V-ChPvPEEuzCzCc,12599
49
+ fractal_server/app/routes/api/v2/task_collection_custom.py,sha256=3EZAzTVlt3wrHAuwxfcYo7LpHefLCcQUctZuolJOQHE,6728
50
+ fractal_server/app/routes/api/v2/task_collection_pixi.py,sha256=oHTTB1gXoX2mbuQTvH7SuW4GYrGOfmb9xHZ8DwChmcE,8219
50
51
  fractal_server/app/routes/api/v2/task_group.py,sha256=M96VoKcLqOpZlY0RWnsHza8jN0dzAWK9lxw87Om3Fbw,9063
51
- fractal_server/app/routes/api/v2/task_group_lifecycle.py,sha256=C2U2V76YbbqDWmErJ98MH9C2C26Lve2p_35FZ1dNmXg,9095
52
+ fractal_server/app/routes/api/v2/task_group_lifecycle.py,sha256=vCIAuSkepwLZw05ZLn46MOB4x6ZN_v3tXXyjv4f6rJw,10070
52
53
  fractal_server/app/routes/api/v2/task_version_update.py,sha256=o8W_C0I84X0u8gAMnCvi8ChiVAKrb5WzUBuJLSuujCA,8235
53
54
  fractal_server/app/routes/api/v2/workflow.py,sha256=gwMtpfUY_JiTv5_R_q1I9WNkp6nTqEVtYx8jWNJRxcU,10227
54
55
  fractal_server/app/routes/api/v2/workflow_import.py,sha256=kOGDaCj0jCGK1WSYGbnUjtUg2U1YxUY9UMH-2ilqJg4,9027
@@ -111,24 +112,24 @@ fractal_server/app/schemas/__init__.py,sha256=stURAU_t3AOBaH0HSUbV-GKhlPKngnnIMo
111
112
  fractal_server/app/schemas/user.py,sha256=t9nbyYjGCSOsxm9K97PDG3-9o27CsaFfhWb_L5nrjqA,1910
112
113
  fractal_server/app/schemas/user_group.py,sha256=x3-kqbo0q2wTP7QI0iZ7PU_9Dr957UYrFMKqS7BXLhE,1425
113
114
  fractal_server/app/schemas/user_settings.py,sha256=NpdC0Me0fgwwdfJuTSlFLCnLUjiWWzrJlPn_UPLjXnw,1862
114
- fractal_server/app/schemas/v2/__init__.py,sha256=-uKDjFn1esNs7WlhrugvBRl34ABXyo7h1Gm0V5KWk9U,3087
115
+ fractal_server/app/schemas/v2/__init__.py,sha256=iWYmNuTPjiPArgEmXHYQcDDfugLOEKAab70zEZ4gDP4,3162
115
116
  fractal_server/app/schemas/v2/accounting.py,sha256=Wylt7uWTiDIFlHJOh4XEtYitk2FjFlmnodDrJDxcr0E,397
116
117
  fractal_server/app/schemas/v2/dataset.py,sha256=NKCjBwGBC7mPiSlXktZAcleJsvlLY6KfNKw7Wx4Zfqk,1728
117
- fractal_server/app/schemas/v2/dumps.py,sha256=xZcUBN3cKADzR37z0X3kjIwizdhPpDHBC_RX1rXxJ5U,2208
118
+ fractal_server/app/schemas/v2/dumps.py,sha256=MoQHjKZy-_ujSfr7XmZ6FjB_VR-zLedx9XJj_sp5xvc,2210
118
119
  fractal_server/app/schemas/v2/history.py,sha256=pZiMKfh6nMWbTp5MUtrnGySPKbeRFf5tM1VLFaTgGcw,1784
119
120
  fractal_server/app/schemas/v2/job.py,sha256=fPay7dLSr-skKRdVRoZig8rf_sZwUdVdHZaJ4XM8vMI,3288
120
121
  fractal_server/app/schemas/v2/manifest.py,sha256=QUpXMDB8WkB1F4UK-yYmm3O8bXoHwDGURnqwn6ayO_I,6674
121
122
  fractal_server/app/schemas/v2/project.py,sha256=l96-3bCfB3knhITaLj1WSyBgbzP_k8CdtvgX_5jO_fU,657
122
123
  fractal_server/app/schemas/v2/status_legacy.py,sha256=eQT1zGxbkzSwd0EqclsOdZ60n1x6J3DB1CZ3m4LYyxc,955
123
124
  fractal_server/app/schemas/v2/task.py,sha256=IJv8loB4kx9FBkaIHoiMsswQyq02FxvyAnHK1u074fU,4364
124
- fractal_server/app/schemas/v2/task_collection.py,sha256=MyFBr5xltYk8bRSDGEpfHw4eD_LU4287UFSNDP2WPjI,4144
125
- fractal_server/app/schemas/v2/task_group.py,sha256=R6u6CB2V62gn28Q_K8AbMHs9rWfyYTd-SPt3J4oNTU0,3172
125
+ fractal_server/app/schemas/v2/task_collection.py,sha256=EPGe4bTRka-Y3S3_h6Wfmstq1889Cn-5cZ9ODdnsKG8,4154
126
+ fractal_server/app/schemas/v2/task_group.py,sha256=NfgoQutaRKcrS1jpRL-s45BFXVuiabT7BvGooRXqY5k,3440
126
127
  fractal_server/app/schemas/v2/workflow.py,sha256=JtjxbDO52bmY06WUMACUKpFSdJysO4DBv7wezsvODRQ,1775
127
128
  fractal_server/app/schemas/v2/workflowtask.py,sha256=6eweAMyziwaoMT-7R1fVJYunIeZKzT0-7fAVgPO_FEc,3639
128
129
  fractal_server/app/security/__init__.py,sha256=oJ8RVglpOvWPQY4RokiE2YA72Nqo42dZEjywWTt8xr8,14032
129
130
  fractal_server/app/security/signup_email.py,sha256=Xd6QYxcdmg0PHpDwmUE8XQmPcOj3Xjy5oROcIMhmltM,1472
130
131
  fractal_server/app/user_settings.py,sha256=OP1yiYKtPadxwM51_Q0hdPk3z90TCN4z1BLpQsXyWiU,1316
131
- fractal_server/config.py,sha256=ldI9VzEWmwU75Z7zVku6I-rXGKS3bJDdCifZnwad9-4,25924
132
+ fractal_server/config.py,sha256=T9TbGbKrQqY2jGEGyKW78mVPPYajfypzWk7YxDdFIxg,27205
132
133
  fractal_server/data_migrations/2_14_10.py,sha256=gMRR5QB0SDv0ToEiXVLg1VrHprM_Ii-9O1Kg-ZF-YhY,1599
133
134
  fractal_server/data_migrations/README.md,sha256=_3AEFvDg9YkybDqCLlFPdDmGJvr6Tw7HRI14aZ3LOIw,398
134
135
  fractal_server/data_migrations/tools.py,sha256=LeMeASwYGtEqd-3wOLle6WARdTGAimoyMmRbbJl-hAM,572
@@ -169,6 +170,7 @@ fractal_server/migrations/versions/9fd26a2b0de4_add_workflow_timestamp_created.p
169
170
  fractal_server/migrations/versions/a7f4d6137b53_add_workflow_dump_to_applyworkflow.py,sha256=ekDUML7ILpmdoqEclKbEUdyLi4uw9HSG_sTjG2hp_JE,867
170
171
  fractal_server/migrations/versions/af1ef1c83c9b_add_accounting_tables.py,sha256=BftudWuSGvKGBzIL5AMb3yWkgTAuaKPBGsYcOzp_gLQ,1899
171
172
  fractal_server/migrations/versions/af8673379a5c_drop_old_filter_columns.py,sha256=9sLd0F7nO5chHHm7RZ4wBA-9bvWomS-av_odKwODADM,1551
173
+ fractal_server/migrations/versions/b1e7f7a1ff71_task_group_for_pixi.py,sha256=loDrqBB-9U3vqLKePEeJy4gK4EuPs_1F345mdrnoCt0,1293
172
174
  fractal_server/migrations/versions/c90a7c76e996_job_id_in_history_run.py,sha256=Y1cPwmFOZ4mx3v2XZM6adgu8u0L0VD_R4ADURyMb2ro,1102
173
175
  fractal_server/migrations/versions/d256a7379ab8_taskgroup_activity_and_venv_info_to_.py,sha256=HN3_Pk8G81SzdYjg4K1RZAyjKSlsZGvcYE2nWOUbwxQ,3861
174
176
  fractal_server/migrations/versions/d4fe3708d309_make_applyworkflow_workflow_dump_non_.py,sha256=6cHEZFuTXiQg9yu32Y3RH1XAl71av141WQ6UMbiITIg,949
@@ -182,31 +184,41 @@ fractal_server/migrations/versions/f384e1c0cf5d_drop_task_default_args_columns.p
182
184
  fractal_server/migrations/versions/fbce16ff4e47_new_history_items.py,sha256=TDWCaIoM0Q4SpRWmR9zr_rdp3lJXhCfBPTMhtrP5xYE,3950
183
185
  fractal_server/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
184
186
  fractal_server/ssh/__init__.py,sha256=sVUmzxf7_DuXG1xoLQ1_00fo5NPhi2LJipSmU5EAkPs,124
185
- fractal_server/ssh/_fabric.py,sha256=AK5E2LXVv0fNilSCy4Zufh0D5QdMozL4OtvNKgMSli4,24155
187
+ fractal_server/ssh/_fabric.py,sha256=3Q0nlXctEXtRspQvg00wzCOyYK-0fAJlCowQuXEMk9I,25118
186
188
  fractal_server/string_tools.py,sha256=qLB5u6-4QxXPiZrUeWn_cEo47axj4OXFzDd47kNTIWw,1847
187
189
  fractal_server/syringe.py,sha256=3YJeIALH-wibuJ9R5VMNYUWh7x1-MkWT0SqGcWG5MY8,2795
188
190
  fractal_server/tasks/__init__.py,sha256=kadmVUoIghl8s190_Tt-8f-WBqMi8u8oU4Pvw39NHE8,23
189
191
  fractal_server/tasks/utils.py,sha256=V7dj8o2AnoHhGSTYlqJHcRFhCIpmOrMOUhtiE_DvRVA,291
190
192
  fractal_server/tasks/v2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
191
- fractal_server/tasks/v2/local/__init__.py,sha256=9RVItnS7OyLsJOuJjWMCicaky4ASUPQEYD4SzDs0hOE,141
192
- fractal_server/tasks/v2/local/_utils.py,sha256=EvhmVwYjqaNyDCUMEsTWYOUXLgEwR1xr6bu32apCEI8,2491
193
- fractal_server/tasks/v2/local/collect.py,sha256=VsLXJ1uf0gnN6klZq07vKxpJilPWmxiPXnu1JOwKWNQ,12173
194
- fractal_server/tasks/v2/local/deactivate.py,sha256=94s_RDND8aR5Y8RxFrRx61rZBMPGqOmFnBFLVKK1HVY,10038
195
- fractal_server/tasks/v2/local/reactivate.py,sha256=eBgFgq5xVKNr4DIDX7QU8xXerhwMrPaHDJ1wTth7aQc,6191
196
- fractal_server/tasks/v2/ssh/__init__.py,sha256=aSQbVi6Ummt9QzcSLWNmSqYjfdxrn9ROmqgH6bDpI7k,135
197
- fractal_server/tasks/v2/ssh/_utils.py,sha256=LjaEYVUJDChilu3YuhxuGWYRNnVJ_zqNE9SDHdRTIHY,2824
198
- fractal_server/tasks/v2/ssh/collect.py,sha256=bClq8hB04igrUXk1Mgc7pRWQws77mpYX8KYL-w6Lwtg,14825
199
- fractal_server/tasks/v2/ssh/deactivate.py,sha256=YO2PJ0VV-LhVW-6O-t-d6BQciO2fYAkYbz5Y9UBiXaA,12928
200
- fractal_server/tasks/v2/ssh/reactivate.py,sha256=1DIQduhqZLbrIeoVyyp54vemBWZu94tFDvjpmDsZZI0,8818
193
+ fractal_server/tasks/v2/local/__init__.py,sha256=S842wRersYKBKjc7xbmj0ov8b5i1YuCHa2f_yYuxcaI,312
194
+ fractal_server/tasks/v2/local/_utils.py,sha256=n-w1IqgOTeeXLE0LoHBixrU7kkg-eYEPWepur6g7DQA,2664
195
+ fractal_server/tasks/v2/local/collect.py,sha256=OIqvvXqI631MjHDGxYj3a7AmC0FhMZ2v2LD3RSZ18wU,12000
196
+ fractal_server/tasks/v2/local/collect_pixi.py,sha256=0vHDSq34VMFExz_TX7hwd0WrXilIEvfHtrs107zjX9U,9847
197
+ fractal_server/tasks/v2/local/deactivate.py,sha256=jaJ-Ejq29JQTZpiQjWHCRf2yUPZUbnjvaQrqnNkmFuo,9836
198
+ fractal_server/tasks/v2/local/deactivate_pixi.py,sha256=S3ipLVwpzkpGpSKVsDBdiv3RBt0DsVL_sGux3I5aSg8,3597
199
+ fractal_server/tasks/v2/local/reactivate.py,sha256=ZZhwyoQQ8Lzkk18BB4l3pr8x8VI-MnZSoClKnMvTy14,5860
200
+ fractal_server/tasks/v2/local/reactivate_pixi.py,sha256=MRixXYbQPq3Cc47r0bBQc-4Spj8B1dgqn1uuQKrlPQA,5317
201
+ fractal_server/tasks/v2/ssh/__init__.py,sha256=vX5aIM9Hbn2T_cIP_LrZ5ekRqJzYm_GSfp-4Iv7kqeI,300
202
+ fractal_server/tasks/v2/ssh/_utils.py,sha256=VAagoseIQW_fSsbwLencqQGyPflQii-Tvzk-r58g478,2834
203
+ fractal_server/tasks/v2/ssh/collect.py,sha256=4PwHLEBjY6CV0URHfin47YXPQnhcoizBug2-Syh1CKQ,14543
204
+ fractal_server/tasks/v2/ssh/collect_pixi.py,sha256=C1hJE8GcROLFfPOT2YnmCDfCvO8jtaSsUzWlvxvSCQc,13273
205
+ fractal_server/tasks/v2/ssh/deactivate.py,sha256=A4v9pcualcGD7l-eWcnMbM0N0HEsectHFA9lJnDXlM0,12639
206
+ fractal_server/tasks/v2/ssh/deactivate_pixi.py,sha256=qksD9ccpjy0v8ckhbZUfcuFVJf5iL25nj6wHNqvDkUg,4947
207
+ fractal_server/tasks/v2/ssh/reactivate.py,sha256=IWekB37oCWzqiFvHe2ncsvL1qgM9RVCmqe3CMBaz5L8,8472
208
+ fractal_server/tasks/v2/ssh/reactivate_pixi.py,sha256=khOJuLon3l_Vj6whJWkcw7w0rnUsp6cq2fIdTTsZuFY,3789
201
209
  fractal_server/tasks/v2/templates/1_create_venv.sh,sha256=PK0jdHKtQpda1zULebBaVPORt4t6V17wa4N1ohcj5ac,548
202
210
  fractal_server/tasks/v2/templates/2_pip_install.sh,sha256=jMJPQJXHKznO6fxOOXtFXKPdCmTf1VLLWj_JL_ZdKxo,1644
203
211
  fractal_server/tasks/v2/templates/3_pip_freeze.sh,sha256=JldREScEBI4cD_qjfX4UK7V4aI-FnX9ZvVNxgpSOBFc,168
204
212
  fractal_server/tasks/v2/templates/4_pip_show.sh,sha256=qm1vPy6AkKhWDjCJGXS8LqCLYO3KsAyRK325ZsFcF6U,1747
205
213
  fractal_server/tasks/v2/templates/5_get_venv_size_and_file_number.sh,sha256=q-6ZUvA6w6FDVEoSd9O63LaJ9tKZc7qAFH72SGPrd_k,284
206
214
  fractal_server/tasks/v2/templates/6_pip_install_from_freeze.sh,sha256=A2y8RngEjAcRhG-_owA6P7tAdrS_AszFuGXnaeMV8u0,1122
207
- fractal_server/tasks/v2/utils_background.py,sha256=9aDRkqaBWhfPG2HmjL8CIgoLgXmZUY8C0dz9JLCl5NU,3387
215
+ fractal_server/tasks/v2/templates/pixi_1_extract.sh,sha256=1Z6sd_fTzqQkOfbFswaPZBNLUyv-OrS4euGlcoi8ces,1097
216
+ fractal_server/tasks/v2/templates/pixi_2_install.sh,sha256=lvqIUH3zVr2fhZfoEwjBqAzvYhX9fID6Cea-fPTHbOI,1315
217
+ fractal_server/tasks/v2/templates/pixi_3_post_install.sh,sha256=SfXl0l4wY1ygr-DErbaXrgg24UFU7wsz1O8zgbHV0NE,2618
218
+ fractal_server/tasks/v2/utils_background.py,sha256=_62JAee3DltnQn14HVGfFosssgiDTyuzFkPbw2RNB8M,4575
208
219
  fractal_server/tasks/v2/utils_database.py,sha256=yi7793Uue32O59OBVUgomO42oUrVKdSKXoShBUNDdK0,1807
209
220
  fractal_server/tasks/v2/utils_package_names.py,sha256=RDg__xrvQs4ieeVzmVdMcEh95vGQYrv9Hfal-5EDBM8,2393
221
+ fractal_server/tasks/v2/utils_pixi.py,sha256=QrRVtN8SZM_ZDoRadXK98R27irOvTJuZO4c_mCfJ92A,1221
210
222
  fractal_server/tasks/v2/utils_python_interpreter.py,sha256=5_wrlrTqXyo1YuLZvAW9hrSoh5MyLOzdPVUlUwM7uDQ,955
211
223
  fractal_server/tasks/v2/utils_templates.py,sha256=Kc_nSzdlV6KIsO0CQSPs1w70zLyENPqJeTQEFiz4bOg,3124
212
224
  fractal_server/types/__init__.py,sha256=aA_8J1xXzuiLqpwO_Qf18-qzaRcYkHzevhH_T-diXWM,2026
@@ -217,8 +229,8 @@ fractal_server/types/validators/_workflow_task_arguments_validators.py,sha256=HL
217
229
  fractal_server/urls.py,sha256=QjIKAC1a46bCdiPMu3AlpgFbcv6a4l3ABcd5xz190Og,471
218
230
  fractal_server/utils.py,sha256=Vn35lApt1T1J8nc09sAVqd10Cy0sa3dLipcljI-hkuk,2185
219
231
  fractal_server/zip_tools.py,sha256=tqz_8f-vQ9OBRW-4OQfO6xxY-YInHTyHmZxU7U4PqZo,4885
220
- fractal_server-2.14.16.dist-info/LICENSE,sha256=QKAharUuhxL58kSoLizKJeZE3mTCBnX6ucmz8W0lxlk,1576
221
- fractal_server-2.14.16.dist-info/METADATA,sha256=ose9XmKdvMaW1w7zsAUu1gIEy62J4B8OxawPGpmLNrs,4244
222
- fractal_server-2.14.16.dist-info/WHEEL,sha256=7dDg4QLnNKTvwIDR9Ac8jJaAmBC_owJrckbC0jjThyA,88
223
- fractal_server-2.14.16.dist-info/entry_points.txt,sha256=8tV2kynvFkjnhbtDnxAqImL6HMVKsopgGfew0DOp5UY,58
224
- fractal_server-2.14.16.dist-info/RECORD,,
232
+ fractal_server-2.15.0a1.dist-info/LICENSE,sha256=QKAharUuhxL58kSoLizKJeZE3mTCBnX6ucmz8W0lxlk,1576
233
+ fractal_server-2.15.0a1.dist-info/METADATA,sha256=BjMlnSvVc1DYozWmqOI19lWcVATlbEG_ELwzyvo4Hlc,4245
234
+ fractal_server-2.15.0a1.dist-info/WHEEL,sha256=7dDg4QLnNKTvwIDR9Ac8jJaAmBC_owJrckbC0jjThyA,88
235
+ fractal_server-2.15.0a1.dist-info/entry_points.txt,sha256=8tV2kynvFkjnhbtDnxAqImL6HMVKsopgGfew0DOp5UY,58
236
+ fractal_server-2.15.0a1.dist-info/RECORD,,