fractal-server 2.3.1a0__py3-none-any.whl → 2.3.3__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/v1.py +1 -3
- fractal_server/app/routes/admin/v2.py +1 -3
- fractal_server/app/routes/api/v1/job.py +1 -3
- fractal_server/app/routes/api/v2/job.py +1 -3
- fractal_server/app/routes/aux/_job.py +7 -5
- fractal_server/config.py +1 -1
- fractal_server/ssh/_fabric.py +0 -1
- fractal_server/string_tools.py +12 -6
- fractal_server/tasks/v2/background_operations_ssh.py +32 -13
- fractal_server/tasks/v2/templates/_1_create_venv.sh +2 -2
- fractal_server/tasks/v2/templates/_2_upgrade_pip.sh +0 -4
- fractal_server/tasks/v2/templates/_3_pip_install.sh +0 -4
- fractal_server/tasks/v2/templates/_4_pip_freeze.sh +0 -6
- fractal_server/tasks/v2/templates/_5_pip_show.sh +1 -3
- {fractal_server-2.3.1a0.dist-info → fractal_server-2.3.3.dist-info}/METADATA +1 -1
- {fractal_server-2.3.1a0.dist-info → fractal_server-2.3.3.dist-info}/RECORD +20 -20
- {fractal_server-2.3.1a0.dist-info → fractal_server-2.3.3.dist-info}/LICENSE +0 -0
- {fractal_server-2.3.1a0.dist-info → fractal_server-2.3.3.dist-info}/WHEEL +0 -0
- {fractal_server-2.3.1a0.dist-info → fractal_server-2.3.3.dist-info}/entry_points.txt +0 -0
fractal_server/__init__.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
__VERSION__ = "2.3.
|
1
|
+
__VERSION__ = "2.3.3"
|
@@ -387,9 +387,7 @@ async def download_job_logs(
|
|
387
387
|
# Create and return byte stream for zipped log folder
|
388
388
|
PREFIX_ZIP = Path(job.working_dir).name
|
389
389
|
zip_filename = f"{PREFIX_ZIP}_archive.zip"
|
390
|
-
byte_stream = _zip_folder_to_byte_stream(
|
391
|
-
folder=job.working_dir, zip_filename=zip_filename
|
392
|
-
)
|
390
|
+
byte_stream = _zip_folder_to_byte_stream(folder=job.working_dir)
|
393
391
|
return StreamingResponse(
|
394
392
|
iter([byte_stream.getvalue()]),
|
395
393
|
media_type="application/x-zip-compressed",
|
@@ -274,9 +274,7 @@ async def download_job_logs(
|
|
274
274
|
# Create and return byte stream for zipped log folder
|
275
275
|
PREFIX_ZIP = Path(job.working_dir).name
|
276
276
|
zip_filename = f"{PREFIX_ZIP}_archive.zip"
|
277
|
-
byte_stream = _zip_folder_to_byte_stream(
|
278
|
-
folder=job.working_dir, zip_filename=zip_filename
|
279
|
-
)
|
277
|
+
byte_stream = _zip_folder_to_byte_stream(folder=job.working_dir)
|
280
278
|
return StreamingResponse(
|
281
279
|
iter([byte_stream.getvalue()]),
|
282
280
|
media_type="application/x-zip-compressed",
|
@@ -128,9 +128,7 @@ async def download_job_logs(
|
|
128
128
|
# Create and return byte stream for zipped log folder
|
129
129
|
PREFIX_ZIP = Path(job.working_dir).name
|
130
130
|
zip_filename = f"{PREFIX_ZIP}_archive.zip"
|
131
|
-
byte_stream = _zip_folder_to_byte_stream(
|
132
|
-
folder=job.working_dir, zip_filename=zip_filename
|
133
|
-
)
|
131
|
+
byte_stream = _zip_folder_to_byte_stream(folder=job.working_dir)
|
134
132
|
return StreamingResponse(
|
135
133
|
iter([byte_stream.getvalue()]),
|
136
134
|
media_type="application/x-zip-compressed",
|
@@ -131,9 +131,7 @@ async def download_job_logs(
|
|
131
131
|
# Create and return byte stream for zipped log folder
|
132
132
|
PREFIX_ZIP = Path(job.working_dir).name
|
133
133
|
zip_filename = f"{PREFIX_ZIP}_archive.zip"
|
134
|
-
byte_stream = _zip_folder_to_byte_stream(
|
135
|
-
folder=job.working_dir, zip_filename=zip_filename
|
136
|
-
)
|
134
|
+
byte_stream = _zip_folder_to_byte_stream(folder=job.working_dir)
|
137
135
|
return StreamingResponse(
|
138
136
|
iter([byte_stream.getvalue()]),
|
139
137
|
media_type="application/x-zip-compressed",
|
@@ -1,3 +1,4 @@
|
|
1
|
+
import os
|
1
2
|
from io import BytesIO
|
2
3
|
from pathlib import Path
|
3
4
|
from typing import Union
|
@@ -25,19 +26,20 @@ def _write_shutdown_file(*, job: Union[ApplyWorkflow, JobV2]):
|
|
25
26
|
f.write(f"Trigger executor shutdown for {job.id=}.")
|
26
27
|
|
27
28
|
|
28
|
-
def _zip_folder_to_byte_stream(*, folder: str
|
29
|
+
def _zip_folder_to_byte_stream(*, folder: str) -> BytesIO:
|
29
30
|
"""
|
30
31
|
Get byte stream with the zipped log folder of a job.
|
31
32
|
|
32
33
|
Args:
|
33
34
|
folder: the folder to zip
|
34
|
-
zip_filename: name of the zipped archive
|
35
35
|
"""
|
36
|
-
working_dir_path = Path(folder)
|
37
36
|
|
38
37
|
byte_stream = BytesIO()
|
39
38
|
with ZipFile(byte_stream, mode="w", compression=ZIP_DEFLATED) as zipfile:
|
40
|
-
for
|
41
|
-
|
39
|
+
for root, dirs, files in os.walk(folder):
|
40
|
+
for file in files:
|
41
|
+
file_path = os.path.join(root, file)
|
42
|
+
archive_path = os.path.relpath(file_path, folder)
|
43
|
+
zipfile.write(file_path, archive_path)
|
42
44
|
|
43
45
|
return byte_stream
|
fractal_server/config.py
CHANGED
@@ -497,7 +497,7 @@ class Settings(BaseSettings):
|
|
497
497
|
[`clusterfutures`](https://github.com/sampsyo/clusterfutures/blob/master/cfut/__init__.py)).
|
498
498
|
"""
|
499
499
|
|
500
|
-
FRACTAL_SLURM_SBATCH_SLEEP:
|
500
|
+
FRACTAL_SLURM_SBATCH_SLEEP: float = 0
|
501
501
|
"""
|
502
502
|
Interval to wait (in seconds) between two subsequent `sbatch` calls, when
|
503
503
|
running a task that produces multiple SLURM jobs.
|
fractal_server/ssh/_fabric.py
CHANGED
@@ -286,7 +286,6 @@ class FractalSSH(object):
|
|
286
286
|
folder: Absolute path to a folder that should be removed.
|
287
287
|
safe_root: If `folder` is not a subfolder of the absolute
|
288
288
|
`safe_root` path, raise an error.
|
289
|
-
fractal_ssh:
|
290
289
|
"""
|
291
290
|
invalid_characters = {" ", "\n", ";", "$", "`"}
|
292
291
|
|
fractal_server/string_tools.py
CHANGED
@@ -9,12 +9,12 @@ def sanitize_string(value: str) -> str:
|
|
9
9
|
|
10
10
|
Make the string lower-case, and replace any special character with an
|
11
11
|
underscore, where special characters are:
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
12
|
+
|
13
|
+
|
14
|
+
>>> string.punctuation
|
15
|
+
'!"#$%&\'()*+,-./:;<=>?@[\\\\]^_`{|}~'
|
16
|
+
>>> string.whitespace
|
17
|
+
' \\t\\n\\r\\x0b\\x0c'
|
18
18
|
|
19
19
|
Args:
|
20
20
|
value: Input string
|
@@ -35,5 +35,11 @@ def slugify_task_name_for_source(task_name: str) -> str:
|
|
35
35
|
from `fractal_server.string_tools.sanitize_string`, nor we can remove it.
|
36
36
|
As 2.3.1, we are renaming it to `slugify_task_name_for_source`, to make
|
37
37
|
it clear that it should not be used for other purposes.
|
38
|
+
|
39
|
+
Args:
|
40
|
+
task_name:
|
41
|
+
|
42
|
+
Return:
|
43
|
+
Slug-ified task name.
|
38
44
|
"""
|
39
45
|
return task_name.replace(" ", "_").lower()
|
@@ -167,7 +167,7 @@ def background_collect_pip_ssh(
|
|
167
167
|
/ ".fractal"
|
168
168
|
/ f"{task_pkg.package_name}{package_version}"
|
169
169
|
).as_posix()
|
170
|
-
|
170
|
+
logger.debug(f"{package_env_dir=}")
|
171
171
|
replacements = [
|
172
172
|
("__PACKAGE_NAME__", task_pkg.package_name),
|
173
173
|
("__PACKAGE_ENV_DIR__", package_env_dir),
|
@@ -197,10 +197,18 @@ def background_collect_pip_ssh(
|
|
197
197
|
# long operations that do not use the db
|
198
198
|
db.close()
|
199
199
|
|
200
|
+
# `remove_venv_folder_upon_failure` is set to True only if
|
201
|
+
# script 1 goes through, which means that the remote folder
|
202
|
+
# `package_env_dir` did not already exist. If this remote
|
203
|
+
# folder already existed, then script 1 fails and the boolean
|
204
|
+
# flag `remove_venv_folder_upon_failure` remains false.
|
205
|
+
remove_venv_folder_upon_failure = False
|
200
206
|
stdout = _customize_and_run_template(
|
201
207
|
script_filename="_1_create_venv.sh",
|
202
208
|
**common_args,
|
203
209
|
)
|
210
|
+
remove_venv_folder_upon_failure = True
|
211
|
+
|
204
212
|
stdout = _customize_and_run_template(
|
205
213
|
script_filename="_2_upgrade_pip.sh",
|
206
214
|
**common_args,
|
@@ -294,6 +302,7 @@ def background_collect_pip_ssh(
|
|
294
302
|
|
295
303
|
# Finalize (write metadata to DB)
|
296
304
|
logger.debug("finalising - START")
|
305
|
+
|
297
306
|
collection_state = db.get(CollectionStateV2, state_id)
|
298
307
|
collection_state.data["log"] = log_file_path.open("r").read()
|
299
308
|
collection_state.data["freeze"] = stdout_pip_freeze
|
@@ -312,16 +321,26 @@ def background_collect_pip_ssh(
|
|
312
321
|
exception=e,
|
313
322
|
db=db,
|
314
323
|
)
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
324
|
+
if remove_venv_folder_upon_failure:
|
325
|
+
try:
|
326
|
+
logger.info(
|
327
|
+
f"Now delete remote folder {package_env_dir}"
|
328
|
+
)
|
329
|
+
fractal_ssh.remove_folder(
|
330
|
+
folder=package_env_dir,
|
331
|
+
safe_root=settings.FRACTAL_SLURM_SSH_WORKING_BASE_DIR, # noqa: E501
|
332
|
+
)
|
333
|
+
logger.info(
|
334
|
+
f"Deleted remoted folder {package_env_dir}"
|
335
|
+
)
|
336
|
+
except Exception as e:
|
337
|
+
logger.error(
|
338
|
+
f"Removing remote folder failed.\n"
|
339
|
+
f"Original error:\n{str(e)}"
|
340
|
+
)
|
341
|
+
else:
|
342
|
+
logger.info(
|
343
|
+
"Not trying to remove remote folder "
|
344
|
+
f"{package_env_dir}."
|
345
|
+
)
|
327
346
|
return
|
@@ -12,12 +12,12 @@ PYTHON=__PYTHON__
|
|
12
12
|
|
13
13
|
TIME_START=$(date +%s)
|
14
14
|
|
15
|
-
|
16
|
-
# Create main folder
|
15
|
+
# Check that package folder does not exist
|
17
16
|
if [ -d "$PACKAGE_ENV_DIR" ]; then
|
18
17
|
write_log "ERROR: Folder $PACKAGE_ENV_DIR already exists. Exit."
|
19
18
|
exit 1
|
20
19
|
fi
|
20
|
+
|
21
21
|
write_log "START mkdir -p $PACKAGE_ENV_DIR"
|
22
22
|
mkdir -p $PACKAGE_ENV_DIR
|
23
23
|
write_log "END mkdir -p $PACKAGE_ENV_DIR"
|
@@ -8,12 +8,8 @@ write_log(){
|
|
8
8
|
|
9
9
|
# Variables to be filled within fractal-server
|
10
10
|
PACKAGE_ENV_DIR=__PACKAGE_ENV_DIR__
|
11
|
-
PACKAGE_NAME=__PACKAGE_NAME__
|
12
|
-
PACKAGE=__PACKAGE__
|
13
|
-
PYTHON=__PYTHON__
|
14
11
|
INSTALL_STRING=__INSTALL_STRING__
|
15
12
|
|
16
|
-
|
17
13
|
TIME_START=$(date +%s)
|
18
14
|
|
19
15
|
VENVPYTHON=${PACKAGE_ENV_DIR}/bin/python
|
@@ -9,12 +9,6 @@ write_log(){
|
|
9
9
|
|
10
10
|
# Variables to be filled within fractal-server
|
11
11
|
PACKAGE_ENV_DIR=__PACKAGE_ENV_DIR__
|
12
|
-
PACKAGE_NAME=__PACKAGE_NAME__
|
13
|
-
PACKAGE=__PACKAGE__
|
14
|
-
PYTHON=__PYTHON__
|
15
|
-
INSTALL_STRING=__INSTALL_STRING__
|
16
|
-
|
17
|
-
|
18
12
|
|
19
13
|
VENVPYTHON=${PACKAGE_ENV_DIR}/bin/python
|
20
14
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
fractal_server/__init__.py,sha256=
|
1
|
+
fractal_server/__init__.py,sha256=cbDFprg05SSdPI6GVzVSaFJyKMlLMr-cn7_vn5ISPN4,22
|
2
2
|
fractal_server/__main__.py,sha256=CocbzZooX1UtGqPi55GcHGNxnrJXFg5tUU5b3wyFCyo,4958
|
3
3
|
fractal_server/alembic.ini,sha256=MWwi7GzjzawI9cCAK1LW7NxIBQDUqD12-ptJoq5JpP0,3153
|
4
4
|
fractal_server/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -23,13 +23,13 @@ fractal_server/app/models/v2/workflow.py,sha256=YBgFGCziUgU0aJ5EM3Svu9W2c46AewZO
|
|
23
23
|
fractal_server/app/models/v2/workflowtask.py,sha256=3jEkObsSnlI05Pur_dSsXYdJxRqPL60Z7tK5-EJLOks,1532
|
24
24
|
fractal_server/app/routes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
25
25
|
fractal_server/app/routes/admin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
26
|
-
fractal_server/app/routes/admin/v1.py,sha256=
|
27
|
-
fractal_server/app/routes/admin/v2.py,sha256=
|
26
|
+
fractal_server/app/routes/admin/v1.py,sha256=ShmsUFtfyRqP84QScqmRDVrJFpbR4p-8baLxAkI3n1U,13926
|
27
|
+
fractal_server/app/routes/admin/v2.py,sha256=JuG1qqVeQIgVJgPyqrB1053il22mGPGpKBiJi6zVsqQ,13687
|
28
28
|
fractal_server/app/routes/api/__init__.py,sha256=EVyZrEq3I_1643QGTPCC5lgCp4xH_auYbrFfogTm4pc,315
|
29
29
|
fractal_server/app/routes/api/v1/__init__.py,sha256=Y2HQdG197J0a7DyQEE2jn53IfxD0EHGhzK1I2JZuEck,958
|
30
30
|
fractal_server/app/routes/api/v1/_aux_functions.py,sha256=CeaVrNVYs_lEbiJbu4uaTeeiajljeXfdq1iLkt5RoRo,12636
|
31
31
|
fractal_server/app/routes/api/v1/dataset.py,sha256=HRE-8vPmVkeXf7WFYkI19mDtbY-iJZeJ7PmMiV0LMgY,16923
|
32
|
-
fractal_server/app/routes/api/v1/job.py,sha256=
|
32
|
+
fractal_server/app/routes/api/v1/job.py,sha256=217fGh7U37esib1JG8INpLhE0W88t9X0fFwCNVt2r_M,5313
|
33
33
|
fractal_server/app/routes/api/v1/project.py,sha256=MxbJUc9H14ZZ8mmMbX3LXGTVR3sHdD26YSw4TKI7WtU,16108
|
34
34
|
fractal_server/app/routes/api/v1/task.py,sha256=udbKnenzc-Q10elYCVB9JmOPWATraa9tZi0AaByvWo0,6129
|
35
35
|
fractal_server/app/routes/api/v1/task_collection.py,sha256=82XBsJHlPiDPCbpLa-16ojKDpj2LYj9_jFSZt0t58bQ,8911
|
@@ -39,7 +39,7 @@ fractal_server/app/routes/api/v2/__init__.py,sha256=JrPWfKIJy9btRCP-zw2nZwLpSdBx
|
|
39
39
|
fractal_server/app/routes/api/v2/_aux_functions.py,sha256=tYJr5EPaA0CVGp-Y4jottFJUVToWvjcSY6PJqN_d--s,14938
|
40
40
|
fractal_server/app/routes/api/v2/dataset.py,sha256=_HjKNP9XsMGoqyubGdF2ZyeW7vXC3VdK_0_TaUxgIF0,8248
|
41
41
|
fractal_server/app/routes/api/v2/images.py,sha256=4r_HblPWyuKSZSJZfn8mbDaLv1ncwZU0gWdKneZcNG4,7894
|
42
|
-
fractal_server/app/routes/api/v2/job.py,sha256=
|
42
|
+
fractal_server/app/routes/api/v2/job.py,sha256=RkIj7ANK-nkxUvcG9K2r4dFdPnvGomx7jdB6U9bqOVQ,5202
|
43
43
|
fractal_server/app/routes/api/v2/project.py,sha256=U4TxD-J4TtQuu1D4BOhL1kTse5fCiNc3BwGH7bnlo38,6592
|
44
44
|
fractal_server/app/routes/api/v2/status.py,sha256=osLexiMOSqmYcEV-41tlrwt9ofyFbtRm5HmPS5BU0t4,6394
|
45
45
|
fractal_server/app/routes/api/v2/submit.py,sha256=Oqggq3GeBrUsE535tmw-JsRZEWa7jziU34fKdlj4QUE,8734
|
@@ -51,7 +51,7 @@ fractal_server/app/routes/api/v2/workflow.py,sha256=2GlcYNjpvCdjwC_Kn7y0UP16B3pO
|
|
51
51
|
fractal_server/app/routes/api/v2/workflowtask.py,sha256=l4eTD5IIun5cOdYzsxh3ajmnOISaSccYA_mVf15Cjtw,8802
|
52
52
|
fractal_server/app/routes/auth.py,sha256=Xv80iqdyfY3lyicYs2Y8B6zEDEnyUu_H6_6psYtv3R4,4885
|
53
53
|
fractal_server/app/routes/aux/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
54
|
-
fractal_server/app/routes/aux/_job.py,sha256=
|
54
|
+
fractal_server/app/routes/aux/_job.py,sha256=HUItNm0SZFAYsyL1rXSjBre1-rXSe6x51qH9KAQWS1w,1361
|
55
55
|
fractal_server/app/routes/aux/_runner.py,sha256=FdCVla5DxGAZ__aB7Z8dEJzD_RIeh5tftjrPyqkr8N8,895
|
56
56
|
fractal_server/app/runner/.gitignore,sha256=ytzN_oyHWXrGU7iFAtoHSTUbM6Rn6kG0Zkddg0xZk6s,16
|
57
57
|
fractal_server/app/runner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -138,7 +138,7 @@ fractal_server/app/schemas/v2/task_collection.py,sha256=8PG1bOqkfQqORMN0brWf6mHD
|
|
138
138
|
fractal_server/app/schemas/v2/workflow.py,sha256=Zzx3e-qgkH8le0FUmAx9UrV5PWd7bj14PPXUh_zgZXM,1827
|
139
139
|
fractal_server/app/schemas/v2/workflowtask.py,sha256=atVuVN4aXsVEOmSd-vyg-8_8OnPmqx-gT75rXcn_AlQ,6552
|
140
140
|
fractal_server/app/security/__init__.py,sha256=2-QbwuR-nsuHM_uwKS_WzYvkhnuhO5jUv8UVROetyVk,11169
|
141
|
-
fractal_server/config.py,sha256=
|
141
|
+
fractal_server/config.py,sha256=LoN530DB9Xxey-riV2BNgUcKEDquMrH9ijuRrwl7TMk,24284
|
142
142
|
fractal_server/data_migrations/README.md,sha256=_3AEFvDg9YkybDqCLlFPdDmGJvr6Tw7HRI14aZ3LOIw,398
|
143
143
|
fractal_server/gunicorn_fractal.py,sha256=2AOkgxu-oQ-XB578_voT0VuhmAXFTmb0c-nYn1XLy_Q,1231
|
144
144
|
fractal_server/images/__init__.py,sha256=xO6jTLE4EZKO6cTDdJsBmK9cdeh9hFTaSbSuWgQg7y4,196
|
@@ -167,8 +167,8 @@ fractal_server/migrations/versions/efa89c30e0a4_add_project_timestamp_created.py
|
|
167
167
|
fractal_server/migrations/versions/f384e1c0cf5d_drop_task_default_args_columns.py,sha256=9BwqUS9Gf7UW_KjrzHbtViC880qhD452KAytkHWWZyk,746
|
168
168
|
fractal_server/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
169
169
|
fractal_server/ssh/__init__.py,sha256=sVUmzxf7_DuXG1xoLQ1_00fo5NPhi2LJipSmU5EAkPs,124
|
170
|
-
fractal_server/ssh/_fabric.py,sha256=
|
171
|
-
fractal_server/string_tools.py,sha256=
|
170
|
+
fractal_server/ssh/_fabric.py,sha256=4B6D0F2bWWho1V_xdDDBWYAHno9h_6Smp7_FP2n8jYo,10739
|
171
|
+
fractal_server/string_tools.py,sha256=KThgTLn_FHNSuEUGLabryJAP6DaFd7bpi-hF5FgkBjw,1268
|
172
172
|
fractal_server/syringe.py,sha256=3qSMW3YaMKKnLdgnooAINOPxnCOxP7y2jeAQYB21Gdo,2786
|
173
173
|
fractal_server/tasks/__init__.py,sha256=kadmVUoIghl8s190_Tt-8f-WBqMi8u8oU4Pvw39NHE8,23
|
174
174
|
fractal_server/tasks/utils.py,sha256=wucz57I7G0Vd8hvtmvonlryACx9zIVlqfxG5I87MJ80,1820
|
@@ -182,18 +182,18 @@ fractal_server/tasks/v2/_TaskCollectPip.py,sha256=kWQNMNZ8OEddkYhmhsk3E6ArcaD7qe
|
|
182
182
|
fractal_server/tasks/v2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
183
183
|
fractal_server/tasks/v2/_venv_pip.py,sha256=xm4XClWYbhXQRqDxYxM9cP7ZCnx-8b078fuVUL12D2M,6286
|
184
184
|
fractal_server/tasks/v2/background_operations.py,sha256=CQwQon5RKAXrjsN255Okh5dcT0R45axgqoPW3EB-v_Q,11527
|
185
|
-
fractal_server/tasks/v2/background_operations_ssh.py,sha256=
|
185
|
+
fractal_server/tasks/v2/background_operations_ssh.py,sha256=3TJp2NW2CJ9KlghWDEhTQ4HDZxmbrLHjb0OQJI3ALo0,13892
|
186
186
|
fractal_server/tasks/v2/endpoint_operations.py,sha256=gT38pl5TEH6WNWOtg4Itegt2lTJJI6YRa7fEj9Y4x2s,4226
|
187
|
-
fractal_server/tasks/v2/templates/_1_create_venv.sh,sha256=
|
188
|
-
fractal_server/tasks/v2/templates/_2_upgrade_pip.sh,sha256=
|
189
|
-
fractal_server/tasks/v2/templates/_3_pip_install.sh,sha256=
|
190
|
-
fractal_server/tasks/v2/templates/_4_pip_freeze.sh,sha256=
|
191
|
-
fractal_server/tasks/v2/templates/_5_pip_show.sh,sha256=
|
187
|
+
fractal_server/tasks/v2/templates/_1_create_venv.sh,sha256=5uW0ETYxl5xiQEXP107zgq8V_-vf3k5NzMMj1hSLjas,1015
|
188
|
+
fractal_server/tasks/v2/templates/_2_upgrade_pip.sh,sha256=hVqwgWuNOxr6ck-0FklpcF0o7q-vQXQasYNNaPSxlKM,524
|
189
|
+
fractal_server/tasks/v2/templates/_3_pip_install.sh,sha256=T9sabeB9iQzVZpLfuLkKGz9EpfHkUrJHKWO4HNij6yM,595
|
190
|
+
fractal_server/tasks/v2/templates/_4_pip_freeze.sh,sha256=6BIOVYBPZmaaOuaDwNirt1iHWjj2oDjViUDvQaL_f6Y,268
|
191
|
+
fractal_server/tasks/v2/templates/_5_pip_show.sh,sha256=GrJ19uHYQxANEy9JaeNJZVTquY9c8Ww9eCdnC7eLVr0,1754
|
192
192
|
fractal_server/tasks/v2/utils.py,sha256=JOyCacb6MNvrwfLNTyLwcz8y79J29YuJeJ2MK5kqXRM,1657
|
193
193
|
fractal_server/urls.py,sha256=5o_qq7PzKKbwq12NHSQZDmDitn5RAOeQ4xufu-2v9Zk,448
|
194
194
|
fractal_server/utils.py,sha256=b7WwFdcFZ8unyT65mloFToYuEDXpQoHRcmRNqrhd_dQ,2115
|
195
|
-
fractal_server-2.3.
|
196
|
-
fractal_server-2.3.
|
197
|
-
fractal_server-2.3.
|
198
|
-
fractal_server-2.3.
|
199
|
-
fractal_server-2.3.
|
195
|
+
fractal_server-2.3.3.dist-info/LICENSE,sha256=QKAharUuhxL58kSoLizKJeZE3mTCBnX6ucmz8W0lxlk,1576
|
196
|
+
fractal_server-2.3.3.dist-info/METADATA,sha256=He-pPtJu3dHSdXV-YYSsjeHbCHIYgMGPohJ67v-qIBQ,4425
|
197
|
+
fractal_server-2.3.3.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
198
|
+
fractal_server-2.3.3.dist-info/entry_points.txt,sha256=8tV2kynvFkjnhbtDnxAqImL6HMVKsopgGfew0DOp5UY,58
|
199
|
+
fractal_server-2.3.3.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|