fractal-server 2.10.1__py3-none-any.whl → 2.10.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- fractal_server/__init__.py +1 -1
- fractal_server/app/runner/executors/slurm/sudo/_executor_wait_thread.py +5 -0
- fractal_server/app/runner/executors/slurm/sudo/executor.py +24 -0
- fractal_server/config.py +33 -2
- fractal_server/tasks/utils.py +1 -0
- fractal_server/tasks/v2/local/deactivate.py +11 -0
- fractal_server/tasks/v2/local/reactivate.py +0 -1
- fractal_server/tasks/v2/ssh/deactivate.py +11 -0
- fractal_server/tasks/v2/ssh/reactivate.py +0 -1
- fractal_server/tasks/v2/templates/2_pip_install.sh +4 -3
- fractal_server/tasks/v2/templates/6_pip_install_from_freeze.sh +4 -3
- fractal_server/tasks/v2/utils_templates.py +1 -0
- {fractal_server-2.10.1.dist-info → fractal_server-2.10.2.dist-info}/METADATA +1 -1
- {fractal_server-2.10.1.dist-info → fractal_server-2.10.2.dist-info}/RECORD +17 -17
- {fractal_server-2.10.1.dist-info → fractal_server-2.10.2.dist-info}/LICENSE +0 -0
- {fractal_server-2.10.1.dist-info → fractal_server-2.10.2.dist-info}/WHEEL +0 -0
- {fractal_server-2.10.1.dist-info → fractal_server-2.10.2.dist-info}/entry_points.txt +0 -0
fractal_server/__init__.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
__VERSION__ = "2.10.
|
1
|
+
__VERSION__ = "2.10.2"
|
@@ -9,6 +9,7 @@ from cfut import FileWaitThread
|
|
9
9
|
|
10
10
|
from ......logger import set_logger
|
11
11
|
from ._check_jobs_status import _jobs_finished
|
12
|
+
from fractal_server.app.runner.exceptions import JobExecutionError
|
12
13
|
|
13
14
|
logger = set_logger(__name__)
|
14
15
|
|
@@ -56,6 +57,10 @@ class FractalFileWaitThread(FileWaitThread):
|
|
56
57
|
Note that (with respect to clusterfutures) we replaced `filename` with
|
57
58
|
`filenames`.
|
58
59
|
"""
|
60
|
+
if self.shutdown:
|
61
|
+
error_msg = "Cannot call `wait` method after executor shutdown."
|
62
|
+
logger.warning(error_msg)
|
63
|
+
raise JobExecutionError(info=error_msg)
|
59
64
|
with self.lock:
|
60
65
|
self.waiting[filenames] = jobid
|
61
66
|
|
@@ -331,6 +331,12 @@ class FractalSlurmExecutor(SlurmExecutor):
|
|
331
331
|
Future representing the execution of the current SLURM job.
|
332
332
|
"""
|
333
333
|
|
334
|
+
# Do not continue if auxiliary thread was shut down
|
335
|
+
if self.wait_thread.shutdown:
|
336
|
+
error_msg = "Cannot call `submit` method after executor shutdown"
|
337
|
+
logger.warning(error_msg)
|
338
|
+
raise JobExecutionError(info=error_msg)
|
339
|
+
|
334
340
|
# Set slurm_file_prefix
|
335
341
|
slurm_file_prefix = task_files.file_prefix
|
336
342
|
|
@@ -395,6 +401,12 @@ class FractalSlurmExecutor(SlurmExecutor):
|
|
395
401
|
|
396
402
|
"""
|
397
403
|
|
404
|
+
# Do not continue if auxiliary thread was shut down
|
405
|
+
if self.wait_thread.shutdown:
|
406
|
+
error_msg = "Cannot call `map` method after executor shutdown"
|
407
|
+
logger.warning(error_msg)
|
408
|
+
raise JobExecutionError(info=error_msg)
|
409
|
+
|
398
410
|
def _result_or_cancel(fut):
|
399
411
|
"""
|
400
412
|
This function is based on the Python Standard Library 3.11.
|
@@ -546,6 +558,15 @@ class FractalSlurmExecutor(SlurmExecutor):
|
|
546
558
|
Returns:
|
547
559
|
Future representing the execution of the current SLURM job.
|
548
560
|
"""
|
561
|
+
|
562
|
+
# Prevent calling sbatch if auxiliary thread was shut down
|
563
|
+
if self.wait_thread.shutdown:
|
564
|
+
error_msg = (
|
565
|
+
"Cannot call `_submit_job` method after executor shutdown"
|
566
|
+
)
|
567
|
+
logger.warning(error_msg)
|
568
|
+
raise JobExecutionError(info=error_msg)
|
569
|
+
|
549
570
|
fut: Future = Future()
|
550
571
|
|
551
572
|
# Inject SLURM account (if set) into slurm_config
|
@@ -1207,6 +1228,9 @@ class FractalSlurmExecutor(SlurmExecutor):
|
|
1207
1228
|
logger.error(error_msg)
|
1208
1229
|
raise JobExecutionError(info=error_msg)
|
1209
1230
|
|
1231
|
+
# Redudantly set thread shutdown attribute to True
|
1232
|
+
self.wait_thread.shutdown = True
|
1233
|
+
|
1210
1234
|
logger.debug("Executor shutdown: end")
|
1211
1235
|
|
1212
1236
|
def _stop_and_join_wait_thread(self):
|
fractal_server/config.py
CHANGED
@@ -492,6 +492,39 @@ class Settings(BaseSettings):
|
|
492
492
|
Whether to include the v1 API.
|
493
493
|
"""
|
494
494
|
|
495
|
+
FRACTAL_PIP_CACHE_DIR: Optional[str] = None
|
496
|
+
"""
|
497
|
+
Absolute path to the cache directory for `pip`; if unset,
|
498
|
+
`--no-cache-dir` is used.
|
499
|
+
"""
|
500
|
+
|
501
|
+
@validator("FRACTAL_PIP_CACHE_DIR", always=True)
|
502
|
+
def absolute_FRACTAL_PIP_CACHE_DIR(cls, v):
|
503
|
+
"""
|
504
|
+
If `FRACTAL_PIP_CACHE_DIR` is a relative path, fail.
|
505
|
+
"""
|
506
|
+
if v is None:
|
507
|
+
return None
|
508
|
+
elif not Path(v).is_absolute():
|
509
|
+
raise FractalConfigurationError(
|
510
|
+
f"Non-absolute value for FRACTAL_PIP_CACHE_DIR={v}"
|
511
|
+
)
|
512
|
+
else:
|
513
|
+
return v
|
514
|
+
|
515
|
+
@property
|
516
|
+
def PIP_CACHE_DIR_ARG(self) -> str:
|
517
|
+
"""
|
518
|
+
Option for `pip install`, based on `FRACTAL_PIP_CACHE_DIR` value.
|
519
|
+
|
520
|
+
If `FRACTAL_PIP_CACHE_DIR` is set, then return
|
521
|
+
`--cache-dir /somewhere`; else return `--no-cache-dir`.
|
522
|
+
"""
|
523
|
+
if self.FRACTAL_PIP_CACHE_DIR is not None:
|
524
|
+
return f"--cache-dir {self.FRACTAL_PIP_CACHE_DIR}"
|
525
|
+
else:
|
526
|
+
return "--no-cache-dir"
|
527
|
+
|
495
528
|
FRACTAL_MAX_PIP_VERSION: str = "24.0"
|
496
529
|
"""
|
497
530
|
Maximum value at which to update `pip` before performing task collection.
|
@@ -538,7 +571,6 @@ class Settings(BaseSettings):
|
|
538
571
|
raise FractalConfigurationError("POSTGRES_DB cannot be None.")
|
539
572
|
|
540
573
|
def check_runner(self) -> None:
|
541
|
-
|
542
574
|
if not self.FRACTAL_RUNNER_WORKING_BASE_DIR:
|
543
575
|
raise FractalConfigurationError(
|
544
576
|
"FRACTAL_RUNNER_WORKING_BASE_DIR cannot be None."
|
@@ -546,7 +578,6 @@ class Settings(BaseSettings):
|
|
546
578
|
|
547
579
|
info = f"FRACTAL_RUNNER_BACKEND={self.FRACTAL_RUNNER_BACKEND}"
|
548
580
|
if self.FRACTAL_RUNNER_BACKEND == "slurm":
|
549
|
-
|
550
581
|
from fractal_server.app.runner.executors.slurm._slurm_config import ( # noqa: E501
|
551
582
|
load_slurm_config_file,
|
552
583
|
)
|
fractal_server/tasks/utils.py
CHANGED
@@ -6,6 +6,7 @@ from fractal_server.syringe import Inject
|
|
6
6
|
COLLECTION_FILENAME = "collection.json"
|
7
7
|
COLLECTION_LOG_FILENAME = "collection.log"
|
8
8
|
COLLECTION_FREEZE_FILENAME = "collection_freeze.txt"
|
9
|
+
FORBIDDEN_DEPENDENCY_STRINGS = ["github.com"]
|
9
10
|
|
10
11
|
|
11
12
|
def get_absolute_venv_path_v1(venv_path: Path) -> Path:
|
@@ -15,6 +15,7 @@ from fractal_server.app.schemas.v2 import TaskGroupActivityActionV2
|
|
15
15
|
from fractal_server.app.schemas.v2 import TaskGroupV2OriginEnum
|
16
16
|
from fractal_server.app.schemas.v2.task_group import TaskGroupActivityStatusV2
|
17
17
|
from fractal_server.logger import set_logger
|
18
|
+
from fractal_server.tasks.utils import FORBIDDEN_DEPENDENCY_STRINGS
|
18
19
|
from fractal_server.tasks.utils import get_log_path
|
19
20
|
from fractal_server.tasks.v2.utils_background import get_current_log
|
20
21
|
from fractal_server.tasks.v2.utils_templates import SCRIPTS_SUBFOLDER
|
@@ -189,6 +190,16 @@ def deactivate_local(
|
|
189
190
|
"task-group attributes."
|
190
191
|
)
|
191
192
|
|
193
|
+
# Fail if `pip_freeze` includes "github.com", see
|
194
|
+
# https://github.com/fractal-analytics-platform/fractal-server/issues/2142
|
195
|
+
for forbidden_string in FORBIDDEN_DEPENDENCY_STRINGS:
|
196
|
+
if forbidden_string in task_group.pip_freeze:
|
197
|
+
raise ValueError(
|
198
|
+
"Deactivation and reactivation of task packages "
|
199
|
+
f"with direct {forbidden_string} dependencies "
|
200
|
+
"are not currently supported. Exit."
|
201
|
+
)
|
202
|
+
|
192
203
|
# We now have all required information for reactivating the
|
193
204
|
# virtual environment at a later point
|
194
205
|
|
@@ -119,7 +119,6 @@ def reactivate_local(
|
|
119
119
|
)
|
120
120
|
logger.debug("end - create venv")
|
121
121
|
activity.log = get_current_log(log_file_path)
|
122
|
-
activity.timestamp_ended = get_timestamp()
|
123
122
|
activity = add_commit_refresh(obj=activity, db=db)
|
124
123
|
|
125
124
|
logger.debug("start - install from pip freeze")
|
@@ -16,6 +16,7 @@ from fractal_server.app.schemas.v2 import TaskGroupV2OriginEnum
|
|
16
16
|
from fractal_server.app.schemas.v2.task_group import TaskGroupActivityStatusV2
|
17
17
|
from fractal_server.logger import set_logger
|
18
18
|
from fractal_server.ssh._fabric import FractalSSH
|
19
|
+
from fractal_server.tasks.utils import FORBIDDEN_DEPENDENCY_STRINGS
|
19
20
|
from fractal_server.tasks.utils import get_log_path
|
20
21
|
from fractal_server.tasks.v2.utils_background import get_current_log
|
21
22
|
from fractal_server.tasks.v2.utils_templates import SCRIPTS_SUBFOLDER
|
@@ -221,6 +222,16 @@ def deactivate_ssh(
|
|
221
222
|
"task-group attributes."
|
222
223
|
)
|
223
224
|
|
225
|
+
# Fail if `pip_freeze` includes "github", see
|
226
|
+
# https://github.com/fractal-analytics-platform/fractal-server/issues/2142
|
227
|
+
for forbidden_string in FORBIDDEN_DEPENDENCY_STRINGS:
|
228
|
+
if forbidden_string in task_group.pip_freeze:
|
229
|
+
raise ValueError(
|
230
|
+
"Deactivation and reactivation of task packages "
|
231
|
+
f"with direct {forbidden_string} dependencies "
|
232
|
+
"are not currently supported. Exit."
|
233
|
+
)
|
234
|
+
|
224
235
|
# We now have all required information for reactivating the
|
225
236
|
# virtual environment at a later point
|
226
237
|
|
@@ -159,7 +159,6 @@ def reactivate_ssh(
|
|
159
159
|
)
|
160
160
|
logger.debug("end - create venv")
|
161
161
|
activity.log = get_current_log(log_file_path)
|
162
|
-
activity.timestamp_ended = get_timestamp()
|
163
162
|
activity = add_commit_refresh(obj=activity, db=db)
|
164
163
|
|
165
164
|
logger.debug("start - install from pip freeze")
|
@@ -10,6 +10,7 @@ PACKAGE_ENV_DIR=__PACKAGE_ENV_DIR__
|
|
10
10
|
INSTALL_STRING=__INSTALL_STRING__
|
11
11
|
PINNED_PACKAGE_LIST="__PINNED_PACKAGE_LIST__"
|
12
12
|
FRACTAL_MAX_PIP_VERSION="__FRACTAL_MAX_PIP_VERSION__"
|
13
|
+
FRACTAL_PIP_CACHE_DIR_ARG="__FRACTAL_PIP_CACHE_DIR_ARG__"
|
13
14
|
|
14
15
|
TIME_START=$(date +%s)
|
15
16
|
|
@@ -17,8 +18,8 @@ VENVPYTHON=${PACKAGE_ENV_DIR}/bin/python
|
|
17
18
|
|
18
19
|
# Upgrade `pip` and install `setuptools`
|
19
20
|
write_log "START upgrade pip and install setuptools"
|
20
|
-
"$VENVPYTHON" -m pip install
|
21
|
-
"$VENVPYTHON" -m pip install
|
21
|
+
"$VENVPYTHON" -m pip install ${FRACTAL_PIP_CACHE_DIR_ARG} "pip<=${FRACTAL_MAX_PIP_VERSION}" --upgrade
|
22
|
+
"$VENVPYTHON" -m pip install ${FRACTAL_PIP_CACHE_DIR_ARG} setuptools
|
22
23
|
write_log "END upgrade pip and install setuptools"
|
23
24
|
echo
|
24
25
|
|
@@ -41,7 +42,7 @@ if [ "$PINNED_PACKAGE_LIST" != "" ]; then
|
|
41
42
|
done
|
42
43
|
|
43
44
|
write_log "All packages in ${PINNED_PACKAGE_LIST} are already installed, proceed with specific versions."
|
44
|
-
"$VENVPYTHON" -m pip install
|
45
|
+
"$VENVPYTHON" -m pip install ${FRACTAL_PIP_CACHE_DIR_ARG} "$PINNED_PACKAGE_LIST"
|
45
46
|
write_log "END installing pinned versions $PINNED_PACKAGE_LIST"
|
46
47
|
else
|
47
48
|
write_log "SKIP installing pinned versions $PINNED_PACKAGE_LIST (empty list)"
|
@@ -9,6 +9,7 @@ write_log(){
|
|
9
9
|
PACKAGE_ENV_DIR=__PACKAGE_ENV_DIR__
|
10
10
|
PIP_FREEZE_FILE=__PIP_FREEZE_FILE__
|
11
11
|
FRACTAL_MAX_PIP_VERSION=__FRACTAL_MAX_PIP_VERSION__
|
12
|
+
FRACTAL_PIP_CACHE_DIR_ARG="__FRACTAL_PIP_CACHE_DIR_ARG__"
|
12
13
|
|
13
14
|
TIME_START=$(date +%s)
|
14
15
|
|
@@ -16,14 +17,14 @@ VENVPYTHON=${PACKAGE_ENV_DIR}/bin/python
|
|
16
17
|
|
17
18
|
# Upgrade `pip` and install `setuptools`
|
18
19
|
write_log "START upgrade pip and install setuptools"
|
19
|
-
"$VENVPYTHON" -m pip install
|
20
|
-
"$VENVPYTHON" -m pip install
|
20
|
+
"$VENVPYTHON" -m pip install ${FRACTAL_PIP_CACHE_DIR_ARG} "pip<=${FRACTAL_MAX_PIP_VERSION}" --upgrade
|
21
|
+
"$VENVPYTHON" -m pip install ${FRACTAL_PIP_CACHE_DIR_ARG} setuptools
|
21
22
|
write_log "END upgrade pip and install setuptools"
|
22
23
|
echo
|
23
24
|
|
24
25
|
# Install from pip-freeze file
|
25
26
|
write_log "START installing requirements from ${PIP_FREEZE_FILE}"
|
26
|
-
"$VENVPYTHON" -m pip install -r "${PIP_FREEZE_FILE}"
|
27
|
+
"$VENVPYTHON" -m pip install ${FRACTAL_PIP_CACHE_DIR_ARG} -r "${PIP_FREEZE_FILE}"
|
27
28
|
write_log "END installing requirements from ${PIP_FREEZE_FILE}"
|
28
29
|
echo
|
29
30
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
fractal_server/__init__.py,sha256=
|
1
|
+
fractal_server/__init__.py,sha256=tZW5fVNCJEAwS9Hds76myD5Wbu6QwRk6i6vry6Km0qQ,23
|
2
2
|
fractal_server/__main__.py,sha256=dEkCfzLLQrIlxsGC-HBfoR-RBMWnJDgNrxYTyzmE9c0,6146
|
3
3
|
fractal_server/alembic.ini,sha256=MWwi7GzjzawI9cCAK1LW7NxIBQDUqD12-ptJoq5JpP0,3153
|
4
4
|
fractal_server/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -90,9 +90,9 @@ fractal_server/app/runner/executors/slurm/ssh/_slurm_job.py,sha256=rwlqZzoGo4SAb
|
|
90
90
|
fractal_server/app/runner/executors/slurm/ssh/executor.py,sha256=U2-tNE_5ECHFIoXjEvBlaSXKaIf-1IXZlDs0c34mab8,54110
|
91
91
|
fractal_server/app/runner/executors/slurm/sudo/__init__.py,sha256=Cjn1rYvljddi96tAwS-qqGkNfOcfPzjChdaEZEObCcM,65
|
92
92
|
fractal_server/app/runner/executors/slurm/sudo/_check_jobs_status.py,sha256=wAgwpVcr6JIslKHOuS0FhRa_6T1KCManyRJqA-fifzw,1909
|
93
|
-
fractal_server/app/runner/executors/slurm/sudo/_executor_wait_thread.py,sha256=
|
93
|
+
fractal_server/app/runner/executors/slurm/sudo/_executor_wait_thread.py,sha256=uRRyVHQtK9McHCB6OsjYfDnQsu2E8At9K_UYb_pe2pg,4682
|
94
94
|
fractal_server/app/runner/executors/slurm/sudo/_subprocess_run_as_user.py,sha256=g8wqUjSicN17UZVXlfaMomYZ-xOIbBu1oE7HdJTzfvw,5218
|
95
|
-
fractal_server/app/runner/executors/slurm/sudo/executor.py,sha256=
|
95
|
+
fractal_server/app/runner/executors/slurm/sudo/executor.py,sha256=FVgx2mxqCLOhSoH3UTAeNc0BT0eJaxHMglGzGYePGPM,47439
|
96
96
|
fractal_server/app/runner/executors/slurm/utils_executors.py,sha256=naPyJI0I3lD-sYHbSXbMFGUBK4h_SggA5V91Z1Ch1Xg,1416
|
97
97
|
fractal_server/app/runner/extract_archive.py,sha256=tLpjDrX47OjTNhhoWvm6iNukg8KoieWyTb7ZfvE9eWU,2483
|
98
98
|
fractal_server/app/runner/filenames.py,sha256=9lwu3yB4C67yiijYw8XIKaLFn3mJUt6_TCyVFM_aZUQ,206
|
@@ -163,7 +163,7 @@ fractal_server/app/schemas/v2/workflow.py,sha256=-KWvXnbHBFA3pj5n7mfSyLKJQSqkJmo
|
|
163
163
|
fractal_server/app/schemas/v2/workflowtask.py,sha256=FthKErVgx3a-k7WVk3nqJe1G-fl_iHND4rVrDXJ0F84,5942
|
164
164
|
fractal_server/app/security/__init__.py,sha256=MlWVrLFPj9M2Gug-k8yATM-Cw066RugVU4KK6kMRbnQ,13019
|
165
165
|
fractal_server/app/user_settings.py,sha256=OP1yiYKtPadxwM51_Q0hdPk3z90TCN4z1BLpQsXyWiU,1316
|
166
|
-
fractal_server/config.py,sha256=
|
166
|
+
fractal_server/config.py,sha256=y9dxlHg1_BY6grec3mlpjutEiakQlsPJr3ERU-FlRfE,24200
|
167
167
|
fractal_server/data_migrations/README.md,sha256=_3AEFvDg9YkybDqCLlFPdDmGJvr6Tw7HRI14aZ3LOIw,398
|
168
168
|
fractal_server/data_migrations/tools.py,sha256=LeMeASwYGtEqd-3wOLle6WARdTGAimoyMmRbbJl-hAM,572
|
169
169
|
fractal_server/gunicorn_fractal.py,sha256=u6U01TLGlXgq1v8QmEpLih3QnsInZD7CqphgJ_GrGzc,1230
|
@@ -208,7 +208,7 @@ fractal_server/ssh/_fabric.py,sha256=lNy4IX1I4We6VoWa4Bz4fUPuApLMSoejpyE6I3jDZeM
|
|
208
208
|
fractal_server/string_tools.py,sha256=XtMNsr5R7GmgzmFi68zkKMedHs8vjGoVMMCXqWhIk9k,2568
|
209
209
|
fractal_server/syringe.py,sha256=3qSMW3YaMKKnLdgnooAINOPxnCOxP7y2jeAQYB21Gdo,2786
|
210
210
|
fractal_server/tasks/__init__.py,sha256=kadmVUoIghl8s190_Tt-8f-WBqMi8u8oU4Pvw39NHE8,23
|
211
|
-
fractal_server/tasks/utils.py,sha256=
|
211
|
+
fractal_server/tasks/utils.py,sha256=gA9nYAviWKAMJmaF5RtoT2InddU6dCT2qA6fZTYNGO4,1105
|
212
212
|
fractal_server/tasks/v1/_TaskCollectPip.py,sha256=ARq5AoHYXH0hziEsb-nFAqbsLA-VIddXOdXL38O6_zA,3746
|
213
213
|
fractal_server/tasks/v1/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
214
214
|
fractal_server/tasks/v1/background_operations.py,sha256=0Zm8TT_RV0BxJCXbruYJCu1eXOkEcHpqnWn_BEe7huw,11829
|
@@ -219,29 +219,29 @@ fractal_server/tasks/v2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG
|
|
219
219
|
fractal_server/tasks/v2/local/__init__.py,sha256=9RVItnS7OyLsJOuJjWMCicaky4ASUPQEYD4SzDs0hOE,141
|
220
220
|
fractal_server/tasks/v2/local/_utils.py,sha256=EvhmVwYjqaNyDCUMEsTWYOUXLgEwR1xr6bu32apCEI8,2491
|
221
221
|
fractal_server/tasks/v2/local/collect.py,sha256=JuMplfREqrPvVEGlT5kJhcmZXC_iYlwvNlkgFrCaCC0,12107
|
222
|
-
fractal_server/tasks/v2/local/deactivate.py,sha256=
|
223
|
-
fractal_server/tasks/v2/local/reactivate.py,sha256=
|
222
|
+
fractal_server/tasks/v2/local/deactivate.py,sha256=SOFtOaR5yYm3IkbOw48TrQgzEpONQ9647KvyD_zImr8,9899
|
223
|
+
fractal_server/tasks/v2/local/reactivate.py,sha256=MeUZHx8IKrfTEf-pXlfYms8I4o-26co3jdNgSNAvw60,6053
|
224
224
|
fractal_server/tasks/v2/ssh/__init__.py,sha256=aSQbVi6Ummt9QzcSLWNmSqYjfdxrn9ROmqgH6bDpI7k,135
|
225
225
|
fractal_server/tasks/v2/ssh/_utils.py,sha256=LjaEYVUJDChilu3YuhxuGWYRNnVJ_zqNE9SDHdRTIHY,2824
|
226
226
|
fractal_server/tasks/v2/ssh/collect.py,sha256=2XXEPpl4LS22A75v_k4Bd46k46tmnLNZfceHyPi3kXo,13457
|
227
|
-
fractal_server/tasks/v2/ssh/deactivate.py,sha256=
|
228
|
-
fractal_server/tasks/v2/ssh/reactivate.py,sha256=
|
227
|
+
fractal_server/tasks/v2/ssh/deactivate.py,sha256=D8rfnC46davmDKZCipPdWZHDD4TIZ-4nr9vxZSV2aC0,11261
|
228
|
+
fractal_server/tasks/v2/ssh/reactivate.py,sha256=cmdT2P1J0FwS1NYYRrhxHsSRyUZ5uu78hS3fDrSVbKo,7837
|
229
229
|
fractal_server/tasks/v2/templates/1_create_venv.sh,sha256=PK0jdHKtQpda1zULebBaVPORt4t6V17wa4N1ohcj5ac,548
|
230
|
-
fractal_server/tasks/v2/templates/2_pip_install.sh,sha256=
|
230
|
+
fractal_server/tasks/v2/templates/2_pip_install.sh,sha256=0NLELYgEDOrbfcjMamWN91Cw90bdl9wvWjlgXeLHT98,1820
|
231
231
|
fractal_server/tasks/v2/templates/3_pip_freeze.sh,sha256=JldREScEBI4cD_qjfX4UK7V4aI-FnX9ZvVNxgpSOBFc,168
|
232
232
|
fractal_server/tasks/v2/templates/4_pip_show.sh,sha256=84NGHlg6JIbrQktgGKyfGsggPFzy6RBJuOmIpPUhsrw,1747
|
233
233
|
fractal_server/tasks/v2/templates/5_get_venv_size_and_file_number.sh,sha256=q-6ZUvA6w6FDVEoSd9O63LaJ9tKZc7qAFH72SGPrd_k,284
|
234
|
-
fractal_server/tasks/v2/templates/6_pip_install_from_freeze.sh,sha256=
|
234
|
+
fractal_server/tasks/v2/templates/6_pip_install_from_freeze.sh,sha256=A2y8RngEjAcRhG-_owA6P7tAdrS_AszFuGXnaeMV8u0,1122
|
235
235
|
fractal_server/tasks/v2/utils_background.py,sha256=tikXhggqxdU7EnKdx2co3UwinlDazEjfOPQOXtO58zs,4240
|
236
236
|
fractal_server/tasks/v2/utils_database.py,sha256=g5m3sNPZKQ3AjflhPURDlAppQcIS5T1A8a1macdswBA,1268
|
237
237
|
fractal_server/tasks/v2/utils_package_names.py,sha256=RDg__xrvQs4ieeVzmVdMcEh95vGQYrv9Hfal-5EDBM8,2393
|
238
238
|
fractal_server/tasks/v2/utils_python_interpreter.py,sha256=5_wrlrTqXyo1YuLZvAW9hrSoh5MyLOzdPVUlUwM7uDQ,955
|
239
|
-
fractal_server/tasks/v2/utils_templates.py,sha256=
|
239
|
+
fractal_server/tasks/v2/utils_templates.py,sha256=07TZpJ0Mh_A4lXVXrrH2o1VLFFGwxeRumA6DdgMgCWk,2947
|
240
240
|
fractal_server/urls.py,sha256=5o_qq7PzKKbwq12NHSQZDmDitn5RAOeQ4xufu-2v9Zk,448
|
241
241
|
fractal_server/utils.py,sha256=utvmBx8K9I8hRWFquxna2pBaOqe0JifDL_NVPmihEJI,3525
|
242
242
|
fractal_server/zip_tools.py,sha256=GjDgo_sf6V_DDg6wWeBlZu5zypIxycn_l257p_YVKGc,4876
|
243
|
-
fractal_server-2.10.
|
244
|
-
fractal_server-2.10.
|
245
|
-
fractal_server-2.10.
|
246
|
-
fractal_server-2.10.
|
247
|
-
fractal_server-2.10.
|
243
|
+
fractal_server-2.10.2.dist-info/LICENSE,sha256=QKAharUuhxL58kSoLizKJeZE3mTCBnX6ucmz8W0lxlk,1576
|
244
|
+
fractal_server-2.10.2.dist-info/METADATA,sha256=qVhVwFIf7b6tlYACZ6HCT621DPVmF0YxwepFRoTkPU0,4544
|
245
|
+
fractal_server-2.10.2.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
246
|
+
fractal_server-2.10.2.dist-info/entry_points.txt,sha256=8tV2kynvFkjnhbtDnxAqImL6HMVKsopgGfew0DOp5UY,58
|
247
|
+
fractal_server-2.10.2.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|