fractal-server 2.15.0a4__py3-none-any.whl → 2.15.0a5__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- fractal_server/__init__.py +1 -1
- fractal_server/app/routes/api/v2/_aux_functions_tasks.py +22 -0
- fractal_server/app/routes/api/v2/task_collection.py +5 -13
- fractal_server/app/routes/api/v2/task_collection_pixi.py +7 -13
- fractal_server/app/routes/api/v2/task_group.py +3 -0
- fractal_server/config.py +29 -1
- fractal_server/tasks/v2/local/collect_pixi.py +21 -0
- fractal_server/tasks/v2/local/reactivate_pixi.py +21 -0
- fractal_server/tasks/v2/ssh/collect_pixi.py +17 -0
- fractal_server/tasks/v2/ssh/reactivate_pixi.py +14 -0
- fractal_server/tasks/v2/templates/pixi_2_install.sh +10 -1
- fractal_server/tasks/v2/templates/pixi_3_post_install.sh +0 -4
- {fractal_server-2.15.0a4.dist-info → fractal_server-2.15.0a5.dist-info}/METADATA +1 -1
- {fractal_server-2.15.0a4.dist-info → fractal_server-2.15.0a5.dist-info}/RECORD +17 -17
- {fractal_server-2.15.0a4.dist-info → fractal_server-2.15.0a5.dist-info}/LICENSE +0 -0
- {fractal_server-2.15.0a4.dist-info → fractal_server-2.15.0a5.dist-info}/WHEEL +0 -0
- {fractal_server-2.15.0a4.dist-info → fractal_server-2.15.0a5.dist-info}/entry_points.txt +0 -0
fractal_server/__init__.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
__VERSION__ = "2.15.
|
1
|
+
__VERSION__ = "2.15.0a5"
|
@@ -333,6 +333,28 @@ async def _verify_non_duplication_group_constraint(
|
|
333
333
|
)
|
334
334
|
|
335
335
|
|
336
|
+
async def _verify_non_duplication_group_path(
|
337
|
+
path: str | None,
|
338
|
+
db: AsyncSession,
|
339
|
+
) -> None:
|
340
|
+
"""
|
341
|
+
Verify uniqueness of non-`None` `TaskGroupV2.path`
|
342
|
+
"""
|
343
|
+
if path is None:
|
344
|
+
return
|
345
|
+
stm = select(TaskGroupV2.id).where(TaskGroupV2.path == path)
|
346
|
+
res = await db.execute(stm)
|
347
|
+
duplicate_ids = res.scalars().all()
|
348
|
+
if duplicate_ids:
|
349
|
+
raise HTTPException(
|
350
|
+
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
|
351
|
+
detail=(
|
352
|
+
f"Other TaskGroups already have {path=}: "
|
353
|
+
f"{sorted(duplicate_ids)}."
|
354
|
+
),
|
355
|
+
)
|
356
|
+
|
357
|
+
|
336
358
|
async def _add_warnings_to_workflow_tasks(
|
337
359
|
wftask_list: list[WorkflowTaskV2], user_id: int, db: AsyncSession
|
338
360
|
) -> list[dict[str, Any]]:
|
@@ -13,7 +13,6 @@ from fastapi import UploadFile
|
|
13
13
|
from pydantic import BaseModel
|
14
14
|
from pydantic import model_validator
|
15
15
|
from pydantic import ValidationError
|
16
|
-
from sqlmodel import select
|
17
16
|
|
18
17
|
from .....config import get_settings
|
19
18
|
from .....logger import reset_logger_handlers
|
@@ -31,6 +30,7 @@ from ...aux.validate_user_settings import validate_user_settings
|
|
31
30
|
from ._aux_functions_task_lifecycle import get_package_version_from_pypi
|
32
31
|
from ._aux_functions_tasks import _get_valid_user_group_id
|
33
32
|
from ._aux_functions_tasks import _verify_non_duplication_group_constraint
|
33
|
+
from ._aux_functions_tasks import _verify_non_duplication_group_path
|
34
34
|
from ._aux_functions_tasks import _verify_non_duplication_user_constraint
|
35
35
|
from fractal_server.app.models import UserOAuth
|
36
36
|
from fractal_server.app.models.v2 import TaskGroupActivityV2
|
@@ -291,18 +291,10 @@ async def collect_tasks_pip(
|
|
291
291
|
version=task_group_attrs["version"],
|
292
292
|
db=db,
|
293
293
|
)
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
for conflicting_task_group in res.scalars().all():
|
299
|
-
raise HTTPException(
|
300
|
-
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
|
301
|
-
detail=(
|
302
|
-
f"Another task-group already has path={task_group_path}.\n"
|
303
|
-
f"{conflicting_task_group=}"
|
304
|
-
),
|
305
|
-
)
|
294
|
+
await _verify_non_duplication_group_path(
|
295
|
+
path=task_group_attrs["path"],
|
296
|
+
db=db,
|
297
|
+
)
|
306
298
|
|
307
299
|
# On-disk checks
|
308
300
|
|
@@ -9,7 +9,6 @@ from fastapi import HTTPException
|
|
9
9
|
from fastapi import Response
|
10
10
|
from fastapi import status
|
11
11
|
from fastapi import UploadFile
|
12
|
-
from sqlmodel import select
|
13
12
|
|
14
13
|
from fractal_server.app.db import AsyncSession
|
15
14
|
from fractal_server.app.db import get_async_db
|
@@ -22,6 +21,9 @@ from fractal_server.app.routes.api.v2._aux_functions_tasks import (
|
|
22
21
|
from fractal_server.app.routes.api.v2._aux_functions_tasks import (
|
23
22
|
_verify_non_duplication_group_constraint,
|
24
23
|
)
|
24
|
+
from fractal_server.app.routes.api.v2._aux_functions_tasks import (
|
25
|
+
_verify_non_duplication_group_path,
|
26
|
+
)
|
25
27
|
from fractal_server.app.routes.api.v2._aux_functions_tasks import (
|
26
28
|
_verify_non_duplication_user_constraint,
|
27
29
|
)
|
@@ -156,18 +158,10 @@ async def collect_task_pixi(
|
|
156
158
|
version=task_group_attrs["version"],
|
157
159
|
db=db,
|
158
160
|
)
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
for conflicting_task_group in res.scalars().all():
|
164
|
-
raise HTTPException(
|
165
|
-
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
|
166
|
-
detail=(
|
167
|
-
f"Another task-group already has path={task_group_path}.\n"
|
168
|
-
f"{conflicting_task_group=}"
|
169
|
-
),
|
170
|
-
)
|
161
|
+
await _verify_non_duplication_group_path(
|
162
|
+
path=task_group_attrs["path"],
|
163
|
+
db=db,
|
164
|
+
)
|
171
165
|
|
172
166
|
if settings.FRACTAL_RUNNER_BACKEND != "slurm_ssh":
|
173
167
|
if Path(task_group_path).exists():
|
@@ -12,6 +12,7 @@ from pydantic.types import AwareDatetime
|
|
12
12
|
from sqlmodel import or_
|
13
13
|
from sqlmodel import select
|
14
14
|
|
15
|
+
from ._aux_functions_task_lifecycle import check_no_ongoing_activity
|
15
16
|
from ._aux_functions_tasks import _get_task_group_full_access
|
16
17
|
from ._aux_functions_tasks import _get_task_group_read_access
|
17
18
|
from ._aux_functions_tasks import _verify_non_duplication_group_constraint
|
@@ -216,6 +217,8 @@ async def delete_task_group(
|
|
216
217
|
db=db,
|
217
218
|
)
|
218
219
|
|
220
|
+
await check_no_ongoing_activity(task_group_id=task_group_id, db=db)
|
221
|
+
|
219
222
|
stm = select(WorkflowTaskV2).where(
|
220
223
|
WorkflowTaskV2.task_id.in_({task.id for task in task_group.task_list})
|
221
224
|
)
|
fractal_server/config.py
CHANGED
@@ -65,8 +65,36 @@ class MailSettings(BaseModel):
|
|
65
65
|
|
66
66
|
|
67
67
|
class PixiSettings(BaseModel):
|
68
|
-
|
68
|
+
"""
|
69
|
+
Configuration for Pixi task collection
|
70
|
+
|
71
|
+
See https://pixi.sh/latest/reference/cli/pixi/install/#config-options for
|
72
|
+
`pixi install` concurrency options.
|
73
|
+
See https://docs.rs/tokio/latest/tokio/#cpu-bound-tasks-and-blocking-code
|
74
|
+
for `tokio` configuration.
|
75
|
+
|
76
|
+
versions:
|
77
|
+
Available `pixi` versions and their `PIXI_HOME` folders.
|
78
|
+
default_version:
|
79
|
+
Default `pixi` version to use for task collection - must be one
|
80
|
+
of `versions` keys.
|
81
|
+
PIXI_CONCURRENT_SOLVES:
|
82
|
+
Value of `--concurrent-solves` for `pixi install`.
|
83
|
+
PIXI_CONCURRENT_DOWNLOADS:
|
84
|
+
Value of `--concurrent-downloads for `pixi install`.
|
85
|
+
TOKIO_WORKER_THREADS:
|
86
|
+
From tokio docs, "The core threads are where all asynchronous code
|
87
|
+
runs, and Tokio will by default spawn one for each CPU core. You can
|
88
|
+
use the environment variable TOKIO_WORKER_THREADS to override the
|
89
|
+
default value."
|
90
|
+
"""
|
91
|
+
|
69
92
|
versions: DictStrStr
|
93
|
+
default_version: str
|
94
|
+
|
95
|
+
PIXI_CONCURRENT_SOLVES: int = 4
|
96
|
+
PIXI_CONCURRENT_DOWNLOADS: int = 4
|
97
|
+
TOKIO_WORKER_THREADS: int = 2
|
70
98
|
|
71
99
|
@model_validator(mode="after")
|
72
100
|
def check_pixi_settings(self):
|
@@ -27,6 +27,7 @@ from fractal_server.tasks.v2.utils_background import (
|
|
27
27
|
from fractal_server.tasks.v2.utils_background import get_current_log
|
28
28
|
from fractal_server.tasks.v2.utils_background import prepare_tasks_metadata
|
29
29
|
from fractal_server.tasks.v2.utils_templates import SCRIPTS_SUBFOLDER
|
30
|
+
from fractal_server.utils import execute_command_sync
|
30
31
|
from fractal_server.utils import get_timestamp
|
31
32
|
|
32
33
|
|
@@ -98,6 +99,18 @@ def collect_local_pixi(
|
|
98
99
|
),
|
99
100
|
("__SOURCE_DIR_NAME__", SOURCE_DIR_NAME),
|
100
101
|
("__FROZEN_OPTION__", ""),
|
102
|
+
(
|
103
|
+
"__TOKIO_WORKER_THREADS__",
|
104
|
+
str(settings.pixi.TOKIO_WORKER_THREADS),
|
105
|
+
),
|
106
|
+
(
|
107
|
+
"__PIXI_CONCURRENT_SOLVES__",
|
108
|
+
str(settings.pixi.PIXI_CONCURRENT_SOLVES),
|
109
|
+
),
|
110
|
+
(
|
111
|
+
"__PIXI_CONCURRENT_DOWNLOADS__",
|
112
|
+
str(settings.pixi.PIXI_CONCURRENT_DOWNLOADS),
|
113
|
+
),
|
101
114
|
},
|
102
115
|
script_dir=Path(
|
103
116
|
task_group.path, SCRIPTS_SUBFOLDER
|
@@ -146,6 +159,14 @@ def collect_local_pixi(
|
|
146
159
|
"project_python_wrapper"
|
147
160
|
]
|
148
161
|
|
162
|
+
# Make task folder 755
|
163
|
+
source_dir = Path(task_group.path, SOURCE_DIR_NAME).as_posix()
|
164
|
+
command = f"chmod 755 {source_dir} -R"
|
165
|
+
execute_command_sync(
|
166
|
+
command=command,
|
167
|
+
logger_name=LOGGER_NAME,
|
168
|
+
)
|
169
|
+
|
149
170
|
# Read and validate manifest
|
150
171
|
# NOTE: we are only supporting the manifest path being relative
|
151
172
|
# to the top-level folder
|
@@ -18,6 +18,7 @@ from fractal_server.tasks.utils import get_log_path
|
|
18
18
|
from fractal_server.tasks.v2.local._utils import _customize_and_run_template
|
19
19
|
from fractal_server.tasks.v2.utils_background import get_current_log
|
20
20
|
from fractal_server.tasks.v2.utils_templates import SCRIPTS_SUBFOLDER
|
21
|
+
from fractal_server.utils import execute_command_sync
|
21
22
|
from fractal_server.utils import get_timestamp
|
22
23
|
|
23
24
|
|
@@ -89,6 +90,18 @@ def reactivate_local_pixi(
|
|
89
90
|
),
|
90
91
|
("__SOURCE_DIR_NAME__", SOURCE_DIR_NAME),
|
91
92
|
("__FROZEN_OPTION__", "--frozen"),
|
93
|
+
(
|
94
|
+
"__TOKIO_WORKER_THREADS__",
|
95
|
+
str(settings.pixi.TOKIO_WORKER_THREADS),
|
96
|
+
),
|
97
|
+
(
|
98
|
+
"__PIXI_CONCURRENT_SOLVES__",
|
99
|
+
str(settings.pixi.PIXI_CONCURRENT_SOLVES),
|
100
|
+
),
|
101
|
+
(
|
102
|
+
"__PIXI_CONCURRENT_DOWNLOADS__",
|
103
|
+
str(settings.pixi.PIXI_CONCURRENT_DOWNLOADS),
|
104
|
+
),
|
92
105
|
},
|
93
106
|
script_dir=Path(
|
94
107
|
task_group.path, SCRIPTS_SUBFOLDER
|
@@ -130,6 +143,14 @@ def reactivate_local_pixi(
|
|
130
143
|
activity.log = get_current_log(log_file_path)
|
131
144
|
activity = add_commit_refresh(obj=activity, db=db)
|
132
145
|
|
146
|
+
# Make task folder 755
|
147
|
+
source_dir = Path(task_group.path, SOURCE_DIR_NAME).as_posix()
|
148
|
+
command = f"chmod 755 {source_dir} -R"
|
149
|
+
execute_command_sync(
|
150
|
+
command=command,
|
151
|
+
logger_name=LOGGER_NAME,
|
152
|
+
)
|
153
|
+
|
133
154
|
activity.log = get_current_log(log_file_path)
|
134
155
|
activity.status = TaskGroupActivityStatusV2.OK
|
135
156
|
activity.timestamp_ended = get_timestamp()
|
@@ -147,6 +147,18 @@ def collect_ssh_pixi(
|
|
147
147
|
),
|
148
148
|
("__SOURCE_DIR_NAME__", SOURCE_DIR_NAME),
|
149
149
|
("__FROZEN_OPTION__", ""),
|
150
|
+
(
|
151
|
+
"__TOKIO_WORKER_THREADS__",
|
152
|
+
str(settings.pixi.TOKIO_WORKER_THREADS),
|
153
|
+
),
|
154
|
+
(
|
155
|
+
"__PIXI_CONCURRENT_SOLVES__",
|
156
|
+
str(settings.pixi.PIXI_CONCURRENT_SOLVES),
|
157
|
+
),
|
158
|
+
(
|
159
|
+
"__PIXI_CONCURRENT_DOWNLOADS__",
|
160
|
+
str(settings.pixi.PIXI_CONCURRENT_DOWNLOADS),
|
161
|
+
),
|
150
162
|
}
|
151
163
|
|
152
164
|
logger.info("installing - START")
|
@@ -203,6 +215,11 @@ def collect_ssh_pixi(
|
|
203
215
|
"project_python_wrapper"
|
204
216
|
]
|
205
217
|
|
218
|
+
source_dir = Path(
|
219
|
+
task_group.path, SOURCE_DIR_NAME
|
220
|
+
).as_posix()
|
221
|
+
fractal_ssh.run_command(cmd=f"chmod 755 {source_dir} -R")
|
222
|
+
|
206
223
|
# Read and validate remote manifest file
|
207
224
|
manifest_path_remote = (
|
208
225
|
f"{package_root_remote}/__FRACTAL_MANIFEST__.json"
|
@@ -114,6 +114,18 @@ def reactivate_ssh_pixi(
|
|
114
114
|
),
|
115
115
|
("__SOURCE_DIR_NAME__", SOURCE_DIR_NAME),
|
116
116
|
("__FROZEN_OPTION__", "--frozen"),
|
117
|
+
(
|
118
|
+
"__TOKIO_WORKER_THREADS__",
|
119
|
+
str(settings.pixi.TOKIO_WORKER_THREADS),
|
120
|
+
),
|
121
|
+
(
|
122
|
+
"__PIXI_CONCURRENT_SOLVES__",
|
123
|
+
str(settings.pixi.PIXI_CONCURRENT_SOLVES),
|
124
|
+
),
|
125
|
+
(
|
126
|
+
"__PIXI_CONCURRENT_DOWNLOADS__",
|
127
|
+
str(settings.pixi.PIXI_CONCURRENT_DOWNLOADS),
|
128
|
+
),
|
117
129
|
}
|
118
130
|
|
119
131
|
logger.info("installing - START")
|
@@ -181,6 +193,8 @@ def reactivate_ssh_pixi(
|
|
181
193
|
activity.log = get_current_log(log_file_path)
|
182
194
|
activity = add_commit_refresh(obj=activity, db=db)
|
183
195
|
|
196
|
+
fractal_ssh.run_command(cmd=f"chmod 755 {source_dir} -R")
|
197
|
+
|
184
198
|
# Finalize (write metadata to DB)
|
185
199
|
activity.status = TaskGroupActivityStatusV2.OK
|
186
200
|
activity.timestamp_ended = get_timestamp()
|
@@ -10,6 +10,9 @@ PIXI_HOME="__PIXI_HOME__"
|
|
10
10
|
PACKAGE_DIR="__PACKAGE_DIR__"
|
11
11
|
SOURCE_DIR_NAME="__SOURCE_DIR_NAME__"
|
12
12
|
FROZEN_OPTION="__FROZEN_OPTION__"
|
13
|
+
TOKIO_WORKER_THREADS="__TOKIO_WORKER_THREADS__"
|
14
|
+
PIXI_CONCURRENT_SOLVES="__PIXI_CONCURRENT_SOLVES__"
|
15
|
+
PIXI_CONCURRENT_DOWNLOADS="__PIXI_CONCURRENT_DOWNLOADS__"
|
13
16
|
|
14
17
|
# Strip trailing `/` from `PACKAGE_DIR`
|
15
18
|
PIXI_HOME=${PIXI_HOME%/}
|
@@ -24,16 +27,22 @@ PYPROJECT_TOML="${SOURCE_DIR}/pyproject.toml"
|
|
24
27
|
export PIXI_HOME="${PIXI_HOME}"
|
25
28
|
export PIXI_CACHE_DIR="${PIXI_HOME}/cache"
|
26
29
|
export RATTLER_AUTH_FILE="${PIXI_HOME}/credentials.json"
|
30
|
+
export TOKIO_WORKER_THREADS="${TOKIO_WORKER_THREADS}"
|
27
31
|
|
28
32
|
TIME_START=$(date +%s)
|
29
33
|
|
34
|
+
echo "Hostname: $(hostname)"
|
35
|
+
|
30
36
|
cd "${PACKAGE_DIR}"
|
31
37
|
write_log "Changed working directory to ${PACKAGE_DIR}"
|
32
38
|
|
33
39
|
# -----------------------------------------------------------------------------
|
34
40
|
|
35
41
|
write_log "START '${PIXI_EXECUTABLE} install ${FROZEN_OPTION} --manifest-path ${PYPROJECT_TOML}'"
|
36
|
-
${PIXI_EXECUTABLE} install
|
42
|
+
${PIXI_EXECUTABLE} install \
|
43
|
+
--concurrent-solves "${PIXI_CONCURRENT_SOLVES}" \
|
44
|
+
--concurrent-downloads "${PIXI_CONCURRENT_DOWNLOADS}" \
|
45
|
+
${FROZEN_OPTION} --manifest-path "${PYPROJECT_TOML}"
|
37
46
|
write_log "END '${PIXI_EXECUTABLE} install ${FROZEN_OPTION} --manifest-path ${PYPROJECT_TOML}'"
|
38
47
|
echo
|
39
48
|
|
@@ -70,10 +70,6 @@ write_log "Disk usage: ${ENV_DISK_USAGE}"
|
|
70
70
|
write_log "Number of files: ${ENV_FILE_NUMBER}"
|
71
71
|
echo
|
72
72
|
|
73
|
-
write_log "START chmod 755 ${SOURCE_DIR} -R"
|
74
|
-
chmod 755 "${SOURCE_DIR}" -R
|
75
|
-
write_log "END chmod 755 ${SOURCE_DIR} -R"
|
76
|
-
|
77
73
|
TIME_END=$(date +%s)
|
78
74
|
write_log "Elapsed: $((TIME_END - TIME_START)) seconds"
|
79
75
|
write_log "All ok, exit."
|
@@ -1,4 +1,4 @@
|
|
1
|
-
fractal_server/__init__.py,sha256=
|
1
|
+
fractal_server/__init__.py,sha256=EiSBiIGr3J4HykWpwvOxbtsBmNSbQnrB9Kqpelw5XWA,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
|
@@ -34,7 +34,7 @@ fractal_server/app/routes/api/v2/_aux_functions.py,sha256=P5exwdiNm0ZxtoGw4wxvm_
|
|
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
|
36
36
|
fractal_server/app/routes/api/v2/_aux_functions_task_version_update.py,sha256=WLDOYCnb6fnS5avKflyx6yN24Vo1n5kJk5ZyiKbzb8Y,1175
|
37
|
-
fractal_server/app/routes/api/v2/_aux_functions_tasks.py,sha256=
|
37
|
+
fractal_server/app/routes/api/v2/_aux_functions_tasks.py,sha256=MNty8CBnTMPSAKE5gMT7tCY8QWpCQyhft_shq12hHpA,12208
|
38
38
|
fractal_server/app/routes/api/v2/_aux_task_group_disambiguation.py,sha256=8x1_q9FyCzItnPmdSdLQuwUTy4B9xCsXscp97_lJcpM,4635
|
39
39
|
fractal_server/app/routes/api/v2/dataset.py,sha256=6u4MFqJ3YZ0Zq6Xx8CRMrTPKW55ZaR63Uno21DqFr4Q,8889
|
40
40
|
fractal_server/app/routes/api/v2/history.py,sha256=BHBZYFSF5lw-YYOl0OVV5yEZPMxiqjH72_KwR66EtaE,15495
|
@@ -45,10 +45,10 @@ 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=
|
48
|
+
fractal_server/app/routes/api/v2/task_collection.py,sha256=UcS7tb9RjiDimeI-iWwD0wqnXYQEdEZT56PnPa0zC9Q,12233
|
49
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=
|
51
|
-
fractal_server/app/routes/api/v2/task_group.py,sha256=
|
50
|
+
fractal_server/app/routes/api/v2/task_collection_pixi.py,sha256=LS5xOYRRvI25TyvPWR9anxQt3emTfuV610zUVKc7eJU,7518
|
51
|
+
fractal_server/app/routes/api/v2/task_group.py,sha256=Wmp5Rt6NQm8_EbdJyi3XOkTXxJTTd4MNIy0ja6K-ifA,9205
|
52
52
|
fractal_server/app/routes/api/v2/task_group_lifecycle.py,sha256=-uS_z8E3__t_twEqhZOzcEcAxZsgnpg-c7Ya9RF3_bs,9998
|
53
53
|
fractal_server/app/routes/api/v2/task_version_update.py,sha256=o8W_C0I84X0u8gAMnCvi8ChiVAKrb5WzUBuJLSuujCA,8235
|
54
54
|
fractal_server/app/routes/api/v2/workflow.py,sha256=gwMtpfUY_JiTv5_R_q1I9WNkp6nTqEVtYx8jWNJRxcU,10227
|
@@ -129,7 +129,7 @@ fractal_server/app/schemas/v2/workflowtask.py,sha256=6eweAMyziwaoMT-7R1fVJYunIeZ
|
|
129
129
|
fractal_server/app/security/__init__.py,sha256=oJ8RVglpOvWPQY4RokiE2YA72Nqo42dZEjywWTt8xr8,14032
|
130
130
|
fractal_server/app/security/signup_email.py,sha256=Xd6QYxcdmg0PHpDwmUE8XQmPcOj3Xjy5oROcIMhmltM,1472
|
131
131
|
fractal_server/app/user_settings.py,sha256=OP1yiYKtPadxwM51_Q0hdPk3z90TCN4z1BLpQsXyWiU,1316
|
132
|
-
fractal_server/config.py,sha256=
|
132
|
+
fractal_server/config.py,sha256=JvFF2nbXOKI6WPKv2UwvJmT4loStBytdG8EU6qZckY8,28259
|
133
133
|
fractal_server/data_migrations/2_14_10.py,sha256=gMRR5QB0SDv0ToEiXVLg1VrHprM_Ii-9O1Kg-ZF-YhY,1599
|
134
134
|
fractal_server/data_migrations/README.md,sha256=_3AEFvDg9YkybDqCLlFPdDmGJvr6Tw7HRI14aZ3LOIw,398
|
135
135
|
fractal_server/data_migrations/tools.py,sha256=LeMeASwYGtEqd-3wOLle6WARdTGAimoyMmRbbJl-hAM,572
|
@@ -193,19 +193,19 @@ fractal_server/tasks/v2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG
|
|
193
193
|
fractal_server/tasks/v2/local/__init__.py,sha256=S842wRersYKBKjc7xbmj0ov8b5i1YuCHa2f_yYuxcaI,312
|
194
194
|
fractal_server/tasks/v2/local/_utils.py,sha256=p2KJ4BvEwJxahICpzbvzrc5-ciLCFnLXWPCwdNGi-3Q,2495
|
195
195
|
fractal_server/tasks/v2/local/collect.py,sha256=MQncScKbWv3g9lrjF8WOhzuEoTEOOgS02RqOJno5csI,11897
|
196
|
-
fractal_server/tasks/v2/local/collect_pixi.py,sha256=
|
196
|
+
fractal_server/tasks/v2/local/collect_pixi.py,sha256=i24MS7yxV0_sHkZJ8rd148n8TGqCPo6Zob5LPks3odk,10753
|
197
197
|
fractal_server/tasks/v2/local/deactivate.py,sha256=LoEs2TUoHQOq3JfxufW6zroXD-Xx_b-hLtdigEBi1JU,9732
|
198
198
|
fractal_server/tasks/v2/local/deactivate_pixi.py,sha256=_ycvnLIZ8zUFB3fZbCzDlNudh-SSetl4UkyFrClCcUU,3494
|
199
199
|
fractal_server/tasks/v2/local/reactivate.py,sha256=Q43DOadNeFyyfgNP67lUqaXmZsS6onv67XwxH_-5ANA,5756
|
200
|
-
fractal_server/tasks/v2/local/reactivate_pixi.py,sha256=
|
200
|
+
fractal_server/tasks/v2/local/reactivate_pixi.py,sha256=wF_3gcMWO_8ArJFo4iYh-51LDZDF_1OuYYHrY9eUSL8,7320
|
201
201
|
fractal_server/tasks/v2/ssh/__init__.py,sha256=vX5aIM9Hbn2T_cIP_LrZ5ekRqJzYm_GSfp-4Iv7kqeI,300
|
202
202
|
fractal_server/tasks/v2/ssh/_utils.py,sha256=ktVH7psQSAhh353fVUe-BwiBZHzTdgXnR-Xv_vfuX0Y,3857
|
203
203
|
fractal_server/tasks/v2/ssh/collect.py,sha256=M9gFD1h9Q1Z-BFQq65dI0vFs6HPCkKQzOkxaLddmChY,14334
|
204
|
-
fractal_server/tasks/v2/ssh/collect_pixi.py,sha256=
|
204
|
+
fractal_server/tasks/v2/ssh/collect_pixi.py,sha256=g-dwkVbzV_4dMXAU8Ej_HmgivHmyq7p9sSOfDXNJhR4,13621
|
205
205
|
fractal_server/tasks/v2/ssh/deactivate.py,sha256=XAIy84cLT9MSTMiN67U-wfOjxMm5s7lmrGwhW0qp7BU,12439
|
206
206
|
fractal_server/tasks/v2/ssh/deactivate_pixi.py,sha256=K0yK_NPUqhFMj6cp6G_0Kfn0Yo7oQux4kT5dFPulnos,4748
|
207
207
|
fractal_server/tasks/v2/ssh/reactivate.py,sha256=NJIgMNFKaXMhbvK0iZOsMwMtsms6Boj9f8N4L01X9Bo,8271
|
208
|
-
fractal_server/tasks/v2/ssh/reactivate_pixi.py,sha256=
|
208
|
+
fractal_server/tasks/v2/ssh/reactivate_pixi.py,sha256=QNlY0cqZvQblsl0eAbKBPBs_QAkN0G233Hy58PpWHxs,9595
|
209
209
|
fractal_server/tasks/v2/templates/1_create_venv.sh,sha256=PK0jdHKtQpda1zULebBaVPORt4t6V17wa4N1ohcj5ac,548
|
210
210
|
fractal_server/tasks/v2/templates/2_pip_install.sh,sha256=jMJPQJXHKznO6fxOOXtFXKPdCmTf1VLLWj_JL_ZdKxo,1644
|
211
211
|
fractal_server/tasks/v2/templates/3_pip_freeze.sh,sha256=JldREScEBI4cD_qjfX4UK7V4aI-FnX9ZvVNxgpSOBFc,168
|
@@ -213,8 +213,8 @@ fractal_server/tasks/v2/templates/4_pip_show.sh,sha256=qm1vPy6AkKhWDjCJGXS8LqCLY
|
|
213
213
|
fractal_server/tasks/v2/templates/5_get_venv_size_and_file_number.sh,sha256=q-6ZUvA6w6FDVEoSd9O63LaJ9tKZc7qAFH72SGPrd_k,284
|
214
214
|
fractal_server/tasks/v2/templates/6_pip_install_from_freeze.sh,sha256=A2y8RngEjAcRhG-_owA6P7tAdrS_AszFuGXnaeMV8u0,1122
|
215
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=
|
217
|
-
fractal_server/tasks/v2/templates/pixi_3_post_install.sh,sha256=
|
216
|
+
fractal_server/tasks/v2/templates/pixi_2_install.sh,sha256=BkINfTU34vZ_zCyg_CIDEWvlAME3p6kF1qmxs4UAkPw,1595
|
217
|
+
fractal_server/tasks/v2/templates/pixi_3_post_install.sh,sha256=uDCdjXpBMsQcexZ4pvZn3ctJenM4QMsazsWMf5aw7eA,2500
|
218
218
|
fractal_server/tasks/v2/utils_background.py,sha256=_4wGETgZ3JdnJXLYKSI0Lns8LwokJL-NEzUOK5SxCJU,4811
|
219
219
|
fractal_server/tasks/v2/utils_database.py,sha256=yi7793Uue32O59OBVUgomO42oUrVKdSKXoShBUNDdK0,1807
|
220
220
|
fractal_server/tasks/v2/utils_package_names.py,sha256=RDg__xrvQs4ieeVzmVdMcEh95vGQYrv9Hfal-5EDBM8,2393
|
@@ -229,8 +229,8 @@ fractal_server/types/validators/_workflow_task_arguments_validators.py,sha256=HL
|
|
229
229
|
fractal_server/urls.py,sha256=QjIKAC1a46bCdiPMu3AlpgFbcv6a4l3ABcd5xz190Og,471
|
230
230
|
fractal_server/utils.py,sha256=Vn35lApt1T1J8nc09sAVqd10Cy0sa3dLipcljI-hkuk,2185
|
231
231
|
fractal_server/zip_tools.py,sha256=tqz_8f-vQ9OBRW-4OQfO6xxY-YInHTyHmZxU7U4PqZo,4885
|
232
|
-
fractal_server-2.15.
|
233
|
-
fractal_server-2.15.
|
234
|
-
fractal_server-2.15.
|
235
|
-
fractal_server-2.15.
|
236
|
-
fractal_server-2.15.
|
232
|
+
fractal_server-2.15.0a5.dist-info/LICENSE,sha256=QKAharUuhxL58kSoLizKJeZE3mTCBnX6ucmz8W0lxlk,1576
|
233
|
+
fractal_server-2.15.0a5.dist-info/METADATA,sha256=ItBnov8ODJ4zuzUPJQXjBLs6H5SviOLZ5K6nw1Lfjmw,4245
|
234
|
+
fractal_server-2.15.0a5.dist-info/WHEEL,sha256=7dDg4QLnNKTvwIDR9Ac8jJaAmBC_owJrckbC0jjThyA,88
|
235
|
+
fractal_server-2.15.0a5.dist-info/entry_points.txt,sha256=8tV2kynvFkjnhbtDnxAqImL6HMVKsopgGfew0DOp5UY,58
|
236
|
+
fractal_server-2.15.0a5.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|