fractal-server 2.15.0a3__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/admin/v2/task_group_lifecycle.py +0 -3
- fractal_server/app/routes/api/v2/_aux_functions_tasks.py +22 -0
- fractal_server/app/routes/api/v2/task_collection.py +5 -15
- fractal_server/app/routes/api/v2/task_collection_pixi.py +7 -24
- fractal_server/app/routes/api/v2/task_group.py +3 -0
- fractal_server/app/routes/api/v2/task_group_lifecycle.py +0 -3
- fractal_server/app/schemas/v2/__init__.py +0 -1
- fractal_server/app/schemas/v2/task_group.py +0 -9
- fractal_server/config.py +29 -1
- fractal_server/tasks/v2/local/_utils.py +1 -5
- fractal_server/tasks/v2/local/collect.py +5 -8
- fractal_server/tasks/v2/local/collect_pixi.py +29 -13
- fractal_server/tasks/v2/local/deactivate.py +5 -9
- fractal_server/tasks/v2/local/deactivate_pixi.py +4 -10
- fractal_server/tasks/v2/local/reactivate.py +5 -9
- fractal_server/tasks/v2/local/reactivate_pixi.py +29 -14
- fractal_server/tasks/v2/ssh/_utils.py +45 -4
- fractal_server/tasks/v2/ssh/collect.py +32 -37
- fractal_server/tasks/v2/ssh/collect_pixi.py +51 -45
- fractal_server/tasks/v2/ssh/deactivate.py +21 -28
- fractal_server/tasks/v2/ssh/deactivate_pixi.py +20 -28
- fractal_server/tasks/v2/ssh/reactivate.py +23 -29
- fractal_server/tasks/v2/ssh/reactivate_pixi.py +158 -38
- fractal_server/tasks/v2/templates/pixi_2_install.sh +12 -8
- fractal_server/tasks/v2/templates/pixi_3_post_install.sh +0 -4
- fractal_server/tasks/v2/utils_background.py +7 -0
- fractal_server/tasks/v2/utils_templates.py +14 -1
- {fractal_server-2.15.0a3.dist-info → fractal_server-2.15.0a5.dist-info}/METADATA +1 -1
- {fractal_server-2.15.0a3.dist-info → fractal_server-2.15.0a5.dist-info}/RECORD +33 -33
- {fractal_server-2.15.0a3.dist-info → fractal_server-2.15.0a5.dist-info}/LICENSE +0 -0
- {fractal_server-2.15.0a3.dist-info → fractal_server-2.15.0a5.dist-info}/WHEEL +0 -0
- {fractal_server-2.15.0a3.dist-info → fractal_server-2.15.0a5.dist-info}/entry_points.txt +0 -0
@@ -1,14 +1,26 @@
|
|
1
|
+
import time
|
1
2
|
from pathlib import Path
|
2
3
|
from tempfile import TemporaryDirectory
|
3
4
|
|
4
5
|
from ..utils_background import fail_and_cleanup
|
5
6
|
from ..utils_background import get_activity_and_task_group
|
7
|
+
from ..utils_pixi import SOURCE_DIR_NAME
|
8
|
+
from ._utils import check_ssh_or_fail_and_cleanup
|
6
9
|
from fractal_server.app.db import get_sync_db
|
10
|
+
from fractal_server.app.schemas.v2 import TaskGroupActivityActionV2
|
11
|
+
from fractal_server.app.schemas.v2 import TaskGroupActivityStatusV2
|
12
|
+
from fractal_server.config import get_settings
|
7
13
|
from fractal_server.logger import reset_logger_handlers
|
8
14
|
from fractal_server.logger import set_logger
|
9
15
|
from fractal_server.ssh._fabric import SingleUseFractalSSH
|
10
16
|
from fractal_server.ssh._fabric import SSHConfig
|
17
|
+
from fractal_server.syringe import Inject
|
11
18
|
from fractal_server.tasks.utils import get_log_path
|
19
|
+
from fractal_server.tasks.v2.ssh._utils import _customize_and_run_template
|
20
|
+
from fractal_server.tasks.v2.utils_background import add_commit_refresh
|
21
|
+
from fractal_server.tasks.v2.utils_background import get_current_log
|
22
|
+
from fractal_server.tasks.v2.utils_templates import SCRIPTS_SUBFOLDER
|
23
|
+
from fractal_server.utils import get_timestamp
|
12
24
|
|
13
25
|
|
14
26
|
def reactivate_ssh_pixi(
|
@@ -42,62 +54,170 @@ def reactivate_ssh_pixi(
|
|
42
54
|
log_file_path=log_file_path,
|
43
55
|
)
|
44
56
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
logger.info("START")
|
61
|
-
for key, value in task_group.model_dump(
|
62
|
-
exclude={"env_info"}
|
63
|
-
).items():
|
64
|
-
logger.debug(f"task_group.{key}: {value}")
|
65
|
-
|
66
|
-
# Check that SSH connection works
|
57
|
+
logger.info("START")
|
58
|
+
with next(get_sync_db()) as db:
|
59
|
+
db_objects_ok, task_group, activity = get_activity_and_task_group(
|
60
|
+
task_group_activity_id=task_group_activity_id,
|
61
|
+
task_group_id=task_group_id,
|
62
|
+
db=db,
|
63
|
+
logger_name=LOGGER_NAME,
|
64
|
+
)
|
65
|
+
if not db_objects_ok:
|
66
|
+
return
|
67
|
+
|
68
|
+
with SingleUseFractalSSH(
|
69
|
+
ssh_config=ssh_config,
|
70
|
+
logger_name=LOGGER_NAME,
|
71
|
+
) as fractal_ssh:
|
67
72
|
try:
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
fail_and_cleanup(
|
73
|
+
# Check SSH connection
|
74
|
+
ssh_ok = check_ssh_or_fail_and_cleanup(
|
75
|
+
fractal_ssh=fractal_ssh,
|
72
76
|
task_group=task_group,
|
73
77
|
task_group_activity=activity,
|
74
78
|
logger_name=LOGGER_NAME,
|
75
79
|
log_file_path=log_file_path,
|
76
|
-
exception=e,
|
77
80
|
db=db,
|
78
81
|
)
|
79
|
-
|
82
|
+
if not ssh_ok:
|
83
|
+
return
|
80
84
|
|
81
|
-
|
82
|
-
|
85
|
+
# Check that the (remote) task_group source_dir does not
|
86
|
+
# exist
|
87
|
+
source_dir = Path(
|
88
|
+
task_group.path, SOURCE_DIR_NAME
|
89
|
+
).as_posix()
|
90
|
+
if fractal_ssh.remote_exists(source_dir):
|
91
|
+
error_msg = f"{source_dir} already exists."
|
92
|
+
logger.error(error_msg)
|
93
|
+
fail_and_cleanup(
|
94
|
+
task_group=task_group,
|
95
|
+
task_group_activity=activity,
|
96
|
+
logger_name=LOGGER_NAME,
|
97
|
+
log_file_path=log_file_path,
|
98
|
+
exception=FileExistsError(error_msg),
|
99
|
+
db=db,
|
100
|
+
)
|
101
|
+
return
|
102
|
+
|
103
|
+
settings = Inject(get_settings)
|
104
|
+
replacements = {
|
105
|
+
(
|
106
|
+
"__PIXI_HOME__",
|
107
|
+
settings.pixi.versions[task_group.pixi_version],
|
108
|
+
),
|
109
|
+
("__PACKAGE_DIR__", task_group.path),
|
110
|
+
("__TAR_GZ_PATH__", task_group.archive_path),
|
111
|
+
(
|
112
|
+
"__IMPORT_PACKAGE_NAME__",
|
113
|
+
task_group.pkg_name.replace("-", "_"),
|
114
|
+
),
|
115
|
+
("__SOURCE_DIR_NAME__", SOURCE_DIR_NAME),
|
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
|
+
),
|
129
|
+
}
|
130
|
+
|
131
|
+
logger.info("installing - START")
|
132
|
+
|
133
|
+
# Set status to ONGOING and refresh logs
|
134
|
+
activity.status = TaskGroupActivityStatusV2.ONGOING
|
135
|
+
activity.log = get_current_log(log_file_path)
|
136
|
+
activity = add_commit_refresh(obj=activity, db=db)
|
137
|
+
|
138
|
+
script_dir_remote = Path(
|
139
|
+
task_group.path, SCRIPTS_SUBFOLDER
|
140
|
+
).as_posix()
|
141
|
+
common_args = dict(
|
142
|
+
script_dir_local=(
|
143
|
+
Path(tmpdir) / SCRIPTS_SUBFOLDER
|
144
|
+
).as_posix(),
|
145
|
+
script_dir_remote=script_dir_remote,
|
146
|
+
prefix=(
|
147
|
+
f"{int(time.time())}_"
|
148
|
+
f"{TaskGroupActivityActionV2.REACTIVATE}"
|
149
|
+
),
|
150
|
+
logger_name=LOGGER_NAME,
|
151
|
+
fractal_ssh=fractal_ssh,
|
152
|
+
)
|
153
|
+
|
154
|
+
# Run script 1 - extract tar.gz into `source_dir`
|
155
|
+
_customize_and_run_template(
|
156
|
+
template_filename="pixi_1_extract.sh",
|
157
|
+
replacements=replacements,
|
158
|
+
**common_args,
|
159
|
+
)
|
160
|
+
activity.log = get_current_log(log_file_path)
|
161
|
+
activity = add_commit_refresh(obj=activity, db=db)
|
162
|
+
|
163
|
+
# Write pixi.lock into `source_dir`
|
164
|
+
pixi_lock_local = Path(tmpdir, "pixi.lock").as_posix()
|
165
|
+
pixi_lock_remote = Path(
|
166
|
+
task_group.path, SOURCE_DIR_NAME, "pixi.lock"
|
167
|
+
).as_posix()
|
168
|
+
logger.info(
|
169
|
+
f"Write `env_info` contents into {pixi_lock_local}"
|
170
|
+
)
|
171
|
+
with open(pixi_lock_local, "w") as f:
|
172
|
+
f.write(task_group.env_info)
|
173
|
+
fractal_ssh.send_file(
|
174
|
+
local=pixi_lock_local,
|
175
|
+
remote=pixi_lock_remote,
|
176
|
+
)
|
177
|
+
|
178
|
+
# Run script 2 - run pixi-install command
|
179
|
+
_customize_and_run_template(
|
180
|
+
template_filename="pixi_2_install.sh",
|
181
|
+
replacements=replacements,
|
182
|
+
**common_args,
|
183
|
+
)
|
184
|
+
activity.log = get_current_log(log_file_path)
|
185
|
+
activity = add_commit_refresh(obj=activity, db=db)
|
186
|
+
|
187
|
+
# Run script 3 - post-install
|
188
|
+
_customize_and_run_template(
|
189
|
+
template_filename="pixi_3_post_install.sh",
|
190
|
+
replacements=replacements,
|
191
|
+
**common_args,
|
192
|
+
)
|
193
|
+
activity.log = get_current_log(log_file_path)
|
194
|
+
activity = add_commit_refresh(obj=activity, db=db)
|
195
|
+
|
196
|
+
fractal_ssh.run_command(cmd=f"chmod 755 {source_dir} -R")
|
197
|
+
|
198
|
+
# Finalize (write metadata to DB)
|
199
|
+
activity.status = TaskGroupActivityStatusV2.OK
|
200
|
+
activity.timestamp_ended = get_timestamp()
|
201
|
+
activity = add_commit_refresh(obj=activity, db=db)
|
202
|
+
task_group.active = True
|
203
|
+
task_group = add_commit_refresh(obj=task_group, db=db)
|
204
|
+
logger.info("END")
|
83
205
|
|
84
206
|
reset_logger_handlers(logger)
|
85
207
|
|
86
208
|
except Exception as reactivate_e:
|
87
|
-
# Delete corrupted
|
209
|
+
# Delete corrupted source_dir
|
88
210
|
try:
|
89
|
-
logger.info(
|
90
|
-
f"Now delete folder {task_group.venv_path}"
|
91
|
-
)
|
211
|
+
logger.info(f"Now delete folder {source_dir}")
|
92
212
|
fractal_ssh.remove_folder(
|
93
|
-
folder=
|
213
|
+
folder=source_dir,
|
94
214
|
safe_root=tasks_base_dir,
|
95
215
|
)
|
96
|
-
logger.info(f"Deleted folder {
|
216
|
+
logger.info(f"Deleted folder {source_dir}")
|
97
217
|
except Exception as rm_e:
|
98
218
|
logger.error(
|
99
|
-
"Removing folder failed
|
100
|
-
f"Original error
|
219
|
+
"Removing folder failed. "
|
220
|
+
f"Original error: {str(rm_e)}"
|
101
221
|
)
|
102
222
|
|
103
223
|
fail_and_cleanup(
|
@@ -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,22 +27,23 @@ 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
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
write_log "
|
41
|
-
${PIXI_EXECUTABLE} install ${FROZEN_FLAG} --manifest-path "${PYPROJECT_TOML}"
|
42
|
-
write_log "END '${PIXI_EXECUTABLE} install ${FROZEN_FLAG} --manifest-path ${PYPROJECT_TOML}'"
|
41
|
+
write_log "START '${PIXI_EXECUTABLE} install ${FROZEN_OPTION} --manifest-path ${PYPROJECT_TOML}'"
|
42
|
+
${PIXI_EXECUTABLE} install \
|
43
|
+
--concurrent-solves "${PIXI_CONCURRENT_SOLVES}" \
|
44
|
+
--concurrent-downloads "${PIXI_CONCURRENT_DOWNLOADS}" \
|
45
|
+
${FROZEN_OPTION} --manifest-path "${PYPROJECT_TOML}"
|
46
|
+
write_log "END '${PIXI_EXECUTABLE} install ${FROZEN_OPTION} --manifest-path ${PYPROJECT_TOML}'"
|
43
47
|
echo
|
44
48
|
|
45
49
|
TIME_END=$(date +%s)
|
@@ -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."
|
@@ -30,6 +30,7 @@ def get_activity_and_task_group(
|
|
30
30
|
task_group_activity_id: int,
|
31
31
|
task_group_id: int,
|
32
32
|
db: DBSyncSession,
|
33
|
+
logger_name: str,
|
33
34
|
) -> tuple[bool, TaskGroupV2, TaskGroupActivityV2]:
|
34
35
|
task_group = db.get(TaskGroupV2, task_group_id)
|
35
36
|
activity = db.get(TaskGroupActivityV2, task_group_activity_id)
|
@@ -40,6 +41,12 @@ def get_activity_and_task_group(
|
|
40
41
|
f"{task_group=}\n{activity=}. Exit."
|
41
42
|
)
|
42
43
|
return False, None, None
|
44
|
+
|
45
|
+
# Log some info about task group
|
46
|
+
logger = get_logger(logger_name=logger_name)
|
47
|
+
for key, value in task_group.model_dump(exclude={"env_info"}).items():
|
48
|
+
logger.debug(f"task_group.{key}: {value}")
|
49
|
+
|
43
50
|
return True, task_group, activity
|
44
51
|
|
45
52
|
|
@@ -12,10 +12,21 @@ SCRIPTS_SUBFOLDER = "scripts"
|
|
12
12
|
logger = set_logger(__name__)
|
13
13
|
|
14
14
|
|
15
|
+
def _check_pixi_frozen_option(replacements: list[tuple[str, str]]):
|
16
|
+
try:
|
17
|
+
replacement = next(
|
18
|
+
rep for rep in replacements if rep[0] == "__FROZEN_OPTION__"
|
19
|
+
)
|
20
|
+
if replacement[1] not in ["", "--frozen"]:
|
21
|
+
raise ValueError(f"Invalid {replacement=}.")
|
22
|
+
except StopIteration:
|
23
|
+
pass
|
24
|
+
|
25
|
+
|
15
26
|
def customize_template(
|
16
27
|
*,
|
17
28
|
template_name: str,
|
18
|
-
replacements:
|
29
|
+
replacements: set[tuple[str, str]],
|
19
30
|
script_path: str,
|
20
31
|
) -> str:
|
21
32
|
"""
|
@@ -26,6 +37,8 @@ def customize_template(
|
|
26
37
|
replacements: List of replacements for template customization.
|
27
38
|
script_path: Local path where the customized template will be written.
|
28
39
|
"""
|
40
|
+
_check_pixi_frozen_option(replacements=replacements)
|
41
|
+
|
29
42
|
# Read template
|
30
43
|
template_path = TEMPLATES_DIR / template_name
|
31
44
|
with template_path.open("r") as f:
|
@@ -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
|
@@ -27,14 +27,14 @@ 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=
|
30
|
+
fractal_server/app/routes/admin/v2/task_group_lifecycle.py,sha256=2J3M9VXWD_0j9jRTZ5APuUXl9E-aVv0qF8K02vvcO3s,9150
|
31
31
|
fractal_server/app/routes/api/__init__.py,sha256=B8l6PSAhR10iZqHEiyTat-_0tkeKdrCigIE6DJGP5b8,638
|
32
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
|
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,11 +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=
|
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=
|
52
|
-
fractal_server/app/routes/api/v2/task_group_lifecycle.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
|
+
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
|
55
55
|
fractal_server/app/routes/api/v2/workflow_import.py,sha256=kOGDaCj0jCGK1WSYGbnUjtUg2U1YxUY9UMH-2ilqJg4,9027
|
@@ -112,7 +112,7 @@ fractal_server/app/schemas/__init__.py,sha256=stURAU_t3AOBaH0HSUbV-GKhlPKngnnIMo
|
|
112
112
|
fractal_server/app/schemas/user.py,sha256=t9nbyYjGCSOsxm9K97PDG3-9o27CsaFfhWb_L5nrjqA,1910
|
113
113
|
fractal_server/app/schemas/user_group.py,sha256=x3-kqbo0q2wTP7QI0iZ7PU_9Dr957UYrFMKqS7BXLhE,1425
|
114
114
|
fractal_server/app/schemas/user_settings.py,sha256=NpdC0Me0fgwwdfJuTSlFLCnLUjiWWzrJlPn_UPLjXnw,1862
|
115
|
-
fractal_server/app/schemas/v2/__init__.py,sha256=
|
115
|
+
fractal_server/app/schemas/v2/__init__.py,sha256=GqV6kJ0nKDq2vsSA4uph-nb5pmuaq013LUCcm9LbpLE,3097
|
116
116
|
fractal_server/app/schemas/v2/accounting.py,sha256=Wylt7uWTiDIFlHJOh4XEtYitk2FjFlmnodDrJDxcr0E,397
|
117
117
|
fractal_server/app/schemas/v2/dataset.py,sha256=NKCjBwGBC7mPiSlXktZAcleJsvlLY6KfNKw7Wx4Zfqk,1728
|
118
118
|
fractal_server/app/schemas/v2/dumps.py,sha256=MoQHjKZy-_ujSfr7XmZ6FjB_VR-zLedx9XJj_sp5xvc,2210
|
@@ -123,13 +123,13 @@ fractal_server/app/schemas/v2/project.py,sha256=l96-3bCfB3knhITaLj1WSyBgbzP_k8Cd
|
|
123
123
|
fractal_server/app/schemas/v2/status_legacy.py,sha256=eQT1zGxbkzSwd0EqclsOdZ60n1x6J3DB1CZ3m4LYyxc,955
|
124
124
|
fractal_server/app/schemas/v2/task.py,sha256=IJv8loB4kx9FBkaIHoiMsswQyq02FxvyAnHK1u074fU,4364
|
125
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=
|
126
|
+
fractal_server/app/schemas/v2/task_group.py,sha256=NwU3FRPzPtoEhunE7dcF3su20dxaL_4YJQw4fPnTcgo,3231
|
127
127
|
fractal_server/app/schemas/v2/workflow.py,sha256=JtjxbDO52bmY06WUMACUKpFSdJysO4DBv7wezsvODRQ,1775
|
128
128
|
fractal_server/app/schemas/v2/workflowtask.py,sha256=6eweAMyziwaoMT-7R1fVJYunIeZKzT0-7fAVgPO_FEc,3639
|
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
|
@@ -191,21 +191,21 @@ fractal_server/tasks/__init__.py,sha256=kadmVUoIghl8s190_Tt-8f-WBqMi8u8oU4Pvw39N
|
|
191
191
|
fractal_server/tasks/utils.py,sha256=V7dj8o2AnoHhGSTYlqJHcRFhCIpmOrMOUhtiE_DvRVA,291
|
192
192
|
fractal_server/tasks/v2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
193
193
|
fractal_server/tasks/v2/local/__init__.py,sha256=S842wRersYKBKjc7xbmj0ov8b5i1YuCHa2f_yYuxcaI,312
|
194
|
-
fractal_server/tasks/v2/local/_utils.py,sha256=
|
195
|
-
fractal_server/tasks/v2/local/collect.py,sha256=
|
196
|
-
fractal_server/tasks/v2/local/collect_pixi.py,sha256=
|
197
|
-
fractal_server/tasks/v2/local/deactivate.py,sha256=
|
198
|
-
fractal_server/tasks/v2/local/deactivate_pixi.py,sha256=
|
199
|
-
fractal_server/tasks/v2/local/reactivate.py,sha256=
|
200
|
-
fractal_server/tasks/v2/local/reactivate_pixi.py,sha256=
|
194
|
+
fractal_server/tasks/v2/local/_utils.py,sha256=p2KJ4BvEwJxahICpzbvzrc5-ciLCFnLXWPCwdNGi-3Q,2495
|
195
|
+
fractal_server/tasks/v2/local/collect.py,sha256=MQncScKbWv3g9lrjF8WOhzuEoTEOOgS02RqOJno5csI,11897
|
196
|
+
fractal_server/tasks/v2/local/collect_pixi.py,sha256=i24MS7yxV0_sHkZJ8rd148n8TGqCPo6Zob5LPks3odk,10753
|
197
|
+
fractal_server/tasks/v2/local/deactivate.py,sha256=LoEs2TUoHQOq3JfxufW6zroXD-Xx_b-hLtdigEBi1JU,9732
|
198
|
+
fractal_server/tasks/v2/local/deactivate_pixi.py,sha256=_ycvnLIZ8zUFB3fZbCzDlNudh-SSetl4UkyFrClCcUU,3494
|
199
|
+
fractal_server/tasks/v2/local/reactivate.py,sha256=Q43DOadNeFyyfgNP67lUqaXmZsS6onv67XwxH_-5ANA,5756
|
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
|
-
fractal_server/tasks/v2/ssh/_utils.py,sha256=
|
203
|
-
fractal_server/tasks/v2/ssh/collect.py,sha256=
|
204
|
-
fractal_server/tasks/v2/ssh/collect_pixi.py,sha256=
|
205
|
-
fractal_server/tasks/v2/ssh/deactivate.py,sha256=
|
206
|
-
fractal_server/tasks/v2/ssh/deactivate_pixi.py,sha256=
|
207
|
-
fractal_server/tasks/v2/ssh/reactivate.py,sha256=
|
208
|
-
fractal_server/tasks/v2/ssh/reactivate_pixi.py,sha256=
|
202
|
+
fractal_server/tasks/v2/ssh/_utils.py,sha256=ktVH7psQSAhh353fVUe-BwiBZHzTdgXnR-Xv_vfuX0Y,3857
|
203
|
+
fractal_server/tasks/v2/ssh/collect.py,sha256=M9gFD1h9Q1Z-BFQq65dI0vFs6HPCkKQzOkxaLddmChY,14334
|
204
|
+
fractal_server/tasks/v2/ssh/collect_pixi.py,sha256=g-dwkVbzV_4dMXAU8Ej_HmgivHmyq7p9sSOfDXNJhR4,13621
|
205
|
+
fractal_server/tasks/v2/ssh/deactivate.py,sha256=XAIy84cLT9MSTMiN67U-wfOjxMm5s7lmrGwhW0qp7BU,12439
|
206
|
+
fractal_server/tasks/v2/ssh/deactivate_pixi.py,sha256=K0yK_NPUqhFMj6cp6G_0Kfn0Yo7oQux4kT5dFPulnos,4748
|
207
|
+
fractal_server/tasks/v2/ssh/reactivate.py,sha256=NJIgMNFKaXMhbvK0iZOsMwMtsms6Boj9f8N4L01X9Bo,8271
|
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,14 +213,14 @@ 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=
|
218
|
-
fractal_server/tasks/v2/utils_background.py,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
|
+
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
|
221
221
|
fractal_server/tasks/v2/utils_pixi.py,sha256=QrRVtN8SZM_ZDoRadXK98R27irOvTJuZO4c_mCfJ92A,1221
|
222
222
|
fractal_server/tasks/v2/utils_python_interpreter.py,sha256=5_wrlrTqXyo1YuLZvAW9hrSoh5MyLOzdPVUlUwM7uDQ,955
|
223
|
-
fractal_server/tasks/v2/utils_templates.py,sha256=
|
223
|
+
fractal_server/tasks/v2/utils_templates.py,sha256=GR8z7ODkR9tLftNAI1g1NrtN7pvDGrasp2jIlfdg4cI,3518
|
224
224
|
fractal_server/types/__init__.py,sha256=aA_8J1xXzuiLqpwO_Qf18-qzaRcYkHzevhH_T-diXWM,2026
|
225
225
|
fractal_server/types/validators/__init__.py,sha256=5uj6KJ9MelFZgyoq3MzXLhgWCl0yiriS7XKmb0gathg,392
|
226
226
|
fractal_server/types/validators/_common_validators.py,sha256=MpxyaP2kwgbyCTOaVRjYnJ74Lfi0f2X0q3rjX9w3vTk,1170
|
@@ -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
|