fractal-server 2.13.0__py3-none-any.whl → 2.14.0__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/__main__.py +3 -1
- fractal_server/app/models/linkusergroup.py +6 -2
- fractal_server/app/models/v2/__init__.py +11 -1
- fractal_server/app/models/v2/accounting.py +35 -0
- fractal_server/app/models/v2/dataset.py +1 -11
- fractal_server/app/models/v2/history.py +78 -0
- fractal_server/app/models/v2/job.py +10 -3
- fractal_server/app/models/v2/task_group.py +2 -2
- fractal_server/app/models/v2/workflow.py +1 -1
- fractal_server/app/models/v2/workflowtask.py +1 -1
- fractal_server/app/routes/admin/v2/__init__.py +4 -0
- fractal_server/app/routes/admin/v2/accounting.py +98 -0
- fractal_server/app/routes/admin/v2/impersonate.py +35 -0
- fractal_server/app/routes/admin/v2/job.py +5 -13
- fractal_server/app/routes/admin/v2/task.py +1 -1
- fractal_server/app/routes/admin/v2/task_group.py +4 -29
- fractal_server/app/routes/api/__init__.py +1 -1
- fractal_server/app/routes/api/v2/__init__.py +8 -2
- fractal_server/app/routes/api/v2/_aux_functions.py +66 -0
- fractal_server/app/routes/api/v2/_aux_functions_history.py +166 -0
- fractal_server/app/routes/api/v2/_aux_functions_task_lifecycle.py +3 -3
- fractal_server/app/routes/api/v2/dataset.py +0 -17
- fractal_server/app/routes/api/v2/history.py +544 -0
- fractal_server/app/routes/api/v2/images.py +31 -43
- fractal_server/app/routes/api/v2/job.py +30 -0
- fractal_server/app/routes/api/v2/project.py +1 -53
- fractal_server/app/routes/api/v2/{status.py → status_legacy.py} +6 -6
- fractal_server/app/routes/api/v2/submit.py +17 -14
- fractal_server/app/routes/api/v2/task.py +3 -10
- fractal_server/app/routes/api/v2/task_collection_custom.py +4 -9
- fractal_server/app/routes/api/v2/task_group.py +2 -22
- fractal_server/app/routes/api/v2/verify_image_types.py +61 -0
- fractal_server/app/routes/api/v2/workflow.py +28 -69
- fractal_server/app/routes/api/v2/workflowtask.py +53 -50
- fractal_server/app/routes/auth/group.py +0 -16
- fractal_server/app/routes/auth/oauth.py +5 -3
- fractal_server/app/routes/aux/__init__.py +0 -20
- fractal_server/app/routes/pagination.py +47 -0
- fractal_server/app/runner/components.py +0 -3
- fractal_server/app/runner/compress_folder.py +57 -29
- fractal_server/app/runner/exceptions.py +4 -0
- fractal_server/app/runner/executors/base_runner.py +157 -0
- fractal_server/app/runner/{v2/_local/_local_config.py → executors/local/get_local_config.py} +7 -9
- fractal_server/app/runner/executors/local/runner.py +248 -0
- fractal_server/app/runner/executors/{slurm → slurm_common}/_batching.py +1 -1
- fractal_server/app/runner/executors/{slurm → slurm_common}/_slurm_config.py +9 -7
- fractal_server/app/runner/executors/slurm_common/base_slurm_runner.py +868 -0
- fractal_server/app/runner/{v2/_slurm_common → executors/slurm_common}/get_slurm_config.py +48 -17
- fractal_server/app/runner/executors/{slurm → slurm_common}/remote.py +36 -47
- fractal_server/app/runner/executors/slurm_common/slurm_job_task_models.py +134 -0
- fractal_server/app/runner/executors/slurm_ssh/runner.py +268 -0
- fractal_server/app/runner/executors/slurm_sudo/__init__.py +0 -0
- fractal_server/app/runner/executors/{slurm/sudo → slurm_sudo}/_subprocess_run_as_user.py +2 -83
- fractal_server/app/runner/executors/slurm_sudo/runner.py +193 -0
- fractal_server/app/runner/extract_archive.py +1 -3
- fractal_server/app/runner/task_files.py +134 -87
- fractal_server/app/runner/v2/__init__.py +0 -395
- fractal_server/app/runner/v2/_local.py +88 -0
- fractal_server/app/runner/v2/{_slurm_ssh/__init__.py → _slurm_ssh.py} +22 -19
- fractal_server/app/runner/v2/{_slurm_sudo/__init__.py → _slurm_sudo.py} +19 -15
- fractal_server/app/runner/v2/db_tools.py +119 -0
- fractal_server/app/runner/v2/runner.py +219 -98
- fractal_server/app/runner/v2/runner_functions.py +491 -189
- fractal_server/app/runner/v2/runner_functions_low_level.py +40 -43
- fractal_server/app/runner/v2/submit_workflow.py +358 -0
- fractal_server/app/runner/v2/task_interface.py +31 -0
- fractal_server/app/schemas/_validators.py +13 -24
- fractal_server/app/schemas/user.py +10 -7
- fractal_server/app/schemas/user_settings.py +9 -21
- fractal_server/app/schemas/v2/__init__.py +10 -1
- fractal_server/app/schemas/v2/accounting.py +18 -0
- fractal_server/app/schemas/v2/dataset.py +12 -94
- fractal_server/app/schemas/v2/dumps.py +26 -9
- fractal_server/app/schemas/v2/history.py +80 -0
- fractal_server/app/schemas/v2/job.py +15 -8
- fractal_server/app/schemas/v2/manifest.py +14 -7
- fractal_server/app/schemas/v2/project.py +9 -7
- fractal_server/app/schemas/v2/status_legacy.py +35 -0
- fractal_server/app/schemas/v2/task.py +72 -77
- fractal_server/app/schemas/v2/task_collection.py +14 -32
- fractal_server/app/schemas/v2/task_group.py +10 -9
- fractal_server/app/schemas/v2/workflow.py +10 -11
- fractal_server/app/schemas/v2/workflowtask.py +2 -21
- fractal_server/app/security/__init__.py +3 -3
- fractal_server/app/security/signup_email.py +2 -2
- fractal_server/config.py +91 -90
- fractal_server/images/tools.py +23 -0
- fractal_server/migrations/versions/47351f8c7ebc_drop_dataset_filters.py +50 -0
- fractal_server/migrations/versions/9db60297b8b2_set_ondelete.py +250 -0
- fractal_server/migrations/versions/af1ef1c83c9b_add_accounting_tables.py +57 -0
- fractal_server/migrations/versions/c90a7c76e996_job_id_in_history_run.py +41 -0
- fractal_server/migrations/versions/e81103413827_add_job_type_filters.py +36 -0
- fractal_server/migrations/versions/f37aceb45062_make_historyunit_logfile_required.py +39 -0
- fractal_server/migrations/versions/fbce16ff4e47_new_history_items.py +120 -0
- fractal_server/ssh/_fabric.py +28 -14
- fractal_server/tasks/v2/local/collect.py +2 -2
- fractal_server/tasks/v2/ssh/collect.py +2 -2
- fractal_server/tasks/v2/templates/2_pip_install.sh +1 -1
- fractal_server/tasks/v2/templates/4_pip_show.sh +1 -1
- fractal_server/tasks/v2/utils_background.py +1 -20
- fractal_server/tasks/v2/utils_database.py +30 -17
- fractal_server/tasks/v2/utils_templates.py +6 -0
- {fractal_server-2.13.0.dist-info → fractal_server-2.14.0.dist-info}/METADATA +4 -4
- {fractal_server-2.13.0.dist-info → fractal_server-2.14.0.dist-info}/RECORD +114 -99
- {fractal_server-2.13.0.dist-info → fractal_server-2.14.0.dist-info}/WHEEL +1 -1
- fractal_server/app/runner/executors/slurm/ssh/_executor_wait_thread.py +0 -126
- fractal_server/app/runner/executors/slurm/ssh/_slurm_job.py +0 -116
- fractal_server/app/runner/executors/slurm/ssh/executor.py +0 -1386
- fractal_server/app/runner/executors/slurm/sudo/_check_jobs_status.py +0 -71
- fractal_server/app/runner/executors/slurm/sudo/_executor_wait_thread.py +0 -130
- fractal_server/app/runner/executors/slurm/sudo/executor.py +0 -1281
- fractal_server/app/runner/v2/_local/__init__.py +0 -129
- fractal_server/app/runner/v2/_local/_submit_setup.py +0 -52
- fractal_server/app/runner/v2/_local/executor.py +0 -100
- fractal_server/app/runner/v2/_slurm_ssh/_submit_setup.py +0 -83
- fractal_server/app/runner/v2/_slurm_sudo/_submit_setup.py +0 -83
- fractal_server/app/runner/v2/handle_failed_job.py +0 -59
- fractal_server/app/schemas/v2/status.py +0 -16
- /fractal_server/app/{runner/executors/slurm → history}/__init__.py +0 -0
- /fractal_server/app/runner/executors/{slurm/ssh → local}/__init__.py +0 -0
- /fractal_server/app/runner/executors/{slurm/sudo → slurm_common}/__init__.py +0 -0
- /fractal_server/app/runner/executors/{_job_states.py → slurm_common/_job_states.py} +0 -0
- /fractal_server/app/runner/executors/{slurm → slurm_common}/utils_executors.py +0 -0
- /fractal_server/app/runner/{v2/_slurm_common → executors/slurm_ssh}/__init__.py +0 -0
- {fractal_server-2.13.0.dist-info → fractal_server-2.14.0.dist-info}/LICENSE +0 -0
- {fractal_server-2.13.0.dist-info → fractal_server-2.14.0.dist-info}/entry_points.txt +0 -0
@@ -1,134 +1,142 @@
|
|
1
|
-
fractal_server/__init__.py,sha256=
|
2
|
-
fractal_server/__main__.py,sha256=
|
1
|
+
fractal_server/__init__.py,sha256=FWjUDSVq3R5OTeUURehTbaO4SiiBYgWolheShOibWmo,23
|
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
|
5
5
|
fractal_server/app/db/__init__.py,sha256=wup2wcOkyOh8Vd0Xm76PZn_naxeMqaL4eF8DHHXTGlI,2889
|
6
|
+
fractal_server/app/history/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
6
7
|
fractal_server/app/models/__init__.py,sha256=xJWiGAwpXmCpnFMC4c_HTqoUCzMOXrakoGLUH_uMvdA,415
|
7
|
-
fractal_server/app/models/linkusergroup.py,sha256=
|
8
|
+
fractal_server/app/models/linkusergroup.py,sha256=3KkkE4QIUAlTrBAZs_tVy0pGvAxUAq6yOEjflct_z2M,678
|
8
9
|
fractal_server/app/models/linkuserproject.py,sha256=hvaxh3Lkiy2uUCwB8gvn8RorCpvxSSdzWdCS_U1GL7g,315
|
9
10
|
fractal_server/app/models/security.py,sha256=mMb_HiwWY74QZrs9xuyno0CVSmk4GYQWk5FxGixr8SU,3860
|
10
11
|
fractal_server/app/models/user_settings.py,sha256=Y-ZV-uZAFLZqXxy8c5_Qeh_F7zQuZDWOgLpU6Zs6iqU,1316
|
11
|
-
fractal_server/app/models/v2/__init__.py,sha256=
|
12
|
-
fractal_server/app/models/v2/
|
13
|
-
fractal_server/app/models/v2/
|
12
|
+
fractal_server/app/models/v2/__init__.py,sha256=vjHwek7-IXmaZZL9VF0nD30YL9ca4wNc8P4RXJK_kDc,832
|
13
|
+
fractal_server/app/models/v2/accounting.py,sha256=f2ALxfKKBNxFLJTtC2-YqRepVK253x68y7zkD2V_Nls,1115
|
14
|
+
fractal_server/app/models/v2/dataset.py,sha256=Xa3YLmqvSChBJoqlSsjmt-5x0zC-6rSx2eafFnMukfo,1240
|
15
|
+
fractal_server/app/models/v2/history.py,sha256=6yuYhsXgahHxv5FmDdv__aFndT228_rBFjTtkS-3Ohg,2082
|
16
|
+
fractal_server/app/models/v2/job.py,sha256=JWrEjX_E4iRFr5MbmtV_aY28J-5D469awLr0rfa5Kig,2052
|
14
17
|
fractal_server/app/models/v2/project.py,sha256=rAHoh5KfYwIaW7rTX0_O0jvWmxEvfo1BafvmcXuSSRk,786
|
15
18
|
fractal_server/app/models/v2/task.py,sha256=8KEROaadgccXRZIP7EriBp2j1FgzYkgiirOi5_fG79M,1494
|
16
|
-
fractal_server/app/models/v2/task_group.py,sha256=
|
17
|
-
fractal_server/app/models/v2/workflow.py,sha256=
|
18
|
-
fractal_server/app/models/v2/workflowtask.py,sha256=
|
19
|
+
fractal_server/app/models/v2/task_group.py,sha256=yIzKAyJIFYYhG_K3AO-WGWYftygrk5D8H_WvAB7QnQk,3541
|
20
|
+
fractal_server/app/models/v2/workflow.py,sha256=tbZZ5IqsKQWiYdURjAS7n2oCpKK_g1ARQN2BOecry3k,1089
|
21
|
+
fractal_server/app/models/v2/workflowtask.py,sha256=zudfD3f4eUXZLq5NRZnIAlWCuAFk6w2E_G-uOcZkMco,1246
|
19
22
|
fractal_server/app/routes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
20
23
|
fractal_server/app/routes/admin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
21
|
-
fractal_server/app/routes/admin/v2/__init__.py,sha256=
|
22
|
-
fractal_server/app/routes/admin/v2/
|
24
|
+
fractal_server/app/routes/admin/v2/__init__.py,sha256=_5lqb6-M8-fZqE1HRMep6pAFYRUKMxrvbZOKs-RXWkw,933
|
25
|
+
fractal_server/app/routes/admin/v2/accounting.py,sha256=UDMPD9DMhMBcu4UsEOEtKMCGnkVMtmwBuRklek-_ShQ,3631
|
26
|
+
fractal_server/app/routes/admin/v2/impersonate.py,sha256=gc4lshfEPFR6W2asH7aKu6hqE6chzusdhAUVV9p51eU,1131
|
27
|
+
fractal_server/app/routes/admin/v2/job.py,sha256=4soc-5d99QEsir7U9AqpofgaGggSBwgMm7mXW5LBvSI,7439
|
23
28
|
fractal_server/app/routes/admin/v2/project.py,sha256=luy-yiGX1JYTdPm1hpIdDUUqPm8xHuipLy9k2X6zu74,1223
|
24
|
-
fractal_server/app/routes/admin/v2/task.py,sha256=
|
25
|
-
fractal_server/app/routes/admin/v2/task_group.py,sha256=
|
29
|
+
fractal_server/app/routes/admin/v2/task.py,sha256=QOwgyDU9m7T_wLMwkdgfFaoMjNxcDg6zMVpngxhUvqk,4374
|
30
|
+
fractal_server/app/routes/admin/v2/task_group.py,sha256=LG41hAsllBL6kc-JLxRNG_IrI6frIKrIF3xD0GeeTiI,7173
|
26
31
|
fractal_server/app/routes/admin/v2/task_group_lifecycle.py,sha256=0e0ZJ_k75TVHaT2o8Xk33DPDSgh-eBhZf-y4y7t-Adg,9429
|
27
|
-
fractal_server/app/routes/api/__init__.py,sha256=
|
28
|
-
fractal_server/app/routes/api/v2/__init__.py,sha256=
|
29
|
-
fractal_server/app/routes/api/v2/_aux_functions.py,sha256=
|
30
|
-
fractal_server/app/routes/api/v2/
|
32
|
+
fractal_server/app/routes/api/__init__.py,sha256=B8l6PSAhR10iZqHEiyTat-_0tkeKdrCigIE6DJGP5b8,638
|
33
|
+
fractal_server/app/routes/api/v2/__init__.py,sha256=9o9zxTU2IJrC_JQ8GUMft3niiBZ39YLvODUeraiRRdQ,2465
|
34
|
+
fractal_server/app/routes/api/v2/_aux_functions.py,sha256=eE-TdEMI_UX3LBDUGwjG5NyUcihDVaHYlG15NlTJ9DI,12872
|
35
|
+
fractal_server/app/routes/api/v2/_aux_functions_history.py,sha256=ZlI6nwzB5r9AiY0C8TzJS_EQOTPKgkRYl3GpxFAu2bg,4430
|
36
|
+
fractal_server/app/routes/api/v2/_aux_functions_task_lifecycle.py,sha256=qdXCb6IP8-qPEAxGZKljtjIqNzIAyRaAsQSRi5VqFHM,6773
|
31
37
|
fractal_server/app/routes/api/v2/_aux_functions_tasks.py,sha256=uhNSs-jcS7ndIUFKiOC1yrDiViw3uvKEXi9UL04BMks,11642
|
32
|
-
fractal_server/app/routes/api/v2/dataset.py,sha256=
|
33
|
-
fractal_server/app/routes/api/v2/
|
34
|
-
fractal_server/app/routes/api/v2/
|
35
|
-
fractal_server/app/routes/api/v2/
|
36
|
-
fractal_server/app/routes/api/v2/
|
37
|
-
fractal_server/app/routes/api/v2/
|
38
|
-
fractal_server/app/routes/api/v2/
|
38
|
+
fractal_server/app/routes/api/v2/dataset.py,sha256=h5AhE0sdhQ20ZlIbEJsFnHIOUW0S1VHFpoflpBkVScs,8936
|
39
|
+
fractal_server/app/routes/api/v2/history.py,sha256=pDztvwQFOh3JChtSk9GIG3H17yg4G5pk1mq14qXF4Ck,17793
|
40
|
+
fractal_server/app/routes/api/v2/images.py,sha256=BGpO94gVd8BTpCN6Mun2RXmjrPmfkIp73m8RN7uiGW4,8361
|
41
|
+
fractal_server/app/routes/api/v2/job.py,sha256=MU1sHIKk_89WrD0TD44d4ufzqnywot7On_W71KjyUbQ,6500
|
42
|
+
fractal_server/app/routes/api/v2/project.py,sha256=uAZgATiHcOvbnRX-vv1D3HoaEUvLUd7vzVmGcqOP8ZY,4602
|
43
|
+
fractal_server/app/routes/api/v2/status_legacy.py,sha256=Q5ZWQNfeZKL8Xgtou2Xr80iaF1uO-r4oSKgq5H42V_8,6349
|
44
|
+
fractal_server/app/routes/api/v2/submit.py,sha256=hCwwC6bXP7EyhgGyVLv1ClybRH1YytDVoPunOzpsf0s,8822
|
45
|
+
fractal_server/app/routes/api/v2/task.py,sha256=O7pquZhXIS4lRs5XqHvstiwe8BiCuS-B3ZKJI1g6EJU,6985
|
39
46
|
fractal_server/app/routes/api/v2/task_collection.py,sha256=IDNF6sjDuU37HIQ0TuQA-TZIuf7nfHAQXUUNmkrlhLM,12706
|
40
|
-
fractal_server/app/routes/api/v2/task_collection_custom.py,sha256=
|
41
|
-
fractal_server/app/routes/api/v2/task_group.py,sha256=
|
47
|
+
fractal_server/app/routes/api/v2/task_collection_custom.py,sha256=totsl0DOC2DFLw8vgqOFivvftpEk3KbFDeOHT0UVQUs,5997
|
48
|
+
fractal_server/app/routes/api/v2/task_group.py,sha256=62zcVTdheXM5V3WmFuqisIqgETjXmZaRpNMcDX5bXS0,7408
|
42
49
|
fractal_server/app/routes/api/v2/task_group_lifecycle.py,sha256=3o9bCC8ubMwffQPPaxQZy-CjH9IB2RkIReIecI6L2_w,9300
|
43
|
-
fractal_server/app/routes/api/v2/
|
50
|
+
fractal_server/app/routes/api/v2/verify_image_types.py,sha256=RBi6-3Sp1wYm_obDPRcEBtLvRfsRknufbZyhGGHVo6I,1924
|
51
|
+
fractal_server/app/routes/api/v2/workflow.py,sha256=sW6Nm7dfzUY354hawyEkpQHy7rUvV2FCV8DPorH-TDU,10270
|
44
52
|
fractal_server/app/routes/api/v2/workflow_import.py,sha256=INmnhlMEBJp-vHPR0f940DANPmIidts3OfcooeM_aNA,11205
|
45
|
-
fractal_server/app/routes/api/v2/workflowtask.py,sha256=
|
53
|
+
fractal_server/app/routes/api/v2/workflowtask.py,sha256=7_syX2EO7ibF6Xkm7HBPhsUYq6aYnKNeC5iSaafQhG4,11342
|
46
54
|
fractal_server/app/routes/auth/__init__.py,sha256=fao6CS0WiAjHDTvBzgBVV_bSXFpEAeDBF6Z6q7rRkPc,1658
|
47
55
|
fractal_server/app/routes/auth/_aux_auth.py,sha256=UZgauY0V6mSqjte_sYI1cBl2h8bcbLaeWzgpl1jdJlk,4883
|
48
56
|
fractal_server/app/routes/auth/current_user.py,sha256=FUegTahlxT3BdPVCQYir0-ogg2YAaZ1DYuLcE_5NC9Y,5906
|
49
|
-
fractal_server/app/routes/auth/group.py,sha256=
|
57
|
+
fractal_server/app/routes/auth/group.py,sha256=P6naOD11Jud2IbdXKpHVjrdRo3IKAqnyXspT8k49k_w,7893
|
50
58
|
fractal_server/app/routes/auth/login.py,sha256=tSu6OBLOieoBtMZB4JkBAdEgH2Y8KqPGSbwy7NIypIo,566
|
51
|
-
fractal_server/app/routes/auth/oauth.py,sha256=
|
59
|
+
fractal_server/app/routes/auth/oauth.py,sha256=KCtJHSzemC4S8AfX9bLLdVhlF1nU4DOyox-sNQtcWew,1978
|
52
60
|
fractal_server/app/routes/auth/register.py,sha256=DlHq79iOvGd_gt2v9uwtsqIKeO6i_GKaW59VIkllPqY,587
|
53
61
|
fractal_server/app/routes/auth/router.py,sha256=tzJrygXFZlmV_uWelVqTOJMEH-3Fr7ydwlgx1LxRjxY,527
|
54
62
|
fractal_server/app/routes/auth/users.py,sha256=Zr1Bsa7Hpricb_1uFwKPCtgt3PzGnP0TaMLMdpbQDNs,7825
|
55
|
-
fractal_server/app/routes/aux/__init__.py,sha256=
|
63
|
+
fractal_server/app/routes/aux/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
56
64
|
fractal_server/app/routes/aux/_job.py,sha256=XWyWpOObcV55YyK7uzGRlaslmPDCBZy4hiSZBpoa_bg,616
|
57
65
|
fractal_server/app/routes/aux/_runner.py,sha256=spNudutueHTBJPhm55RlOuYzb31DhyheSjl2rk6dloM,873
|
58
66
|
fractal_server/app/routes/aux/validate_user_settings.py,sha256=FLVi__8YFcm_6c_K5uMQo7raWWXQLBcZtx8yaPO4jaE,2301
|
67
|
+
fractal_server/app/routes/pagination.py,sha256=L8F5JqekF39qz-LpeScdlhb57MQnSRXjK4ZEtsZqYLk,1210
|
59
68
|
fractal_server/app/runner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
60
|
-
fractal_server/app/runner/components.py,sha256
|
61
|
-
fractal_server/app/runner/compress_folder.py,sha256=
|
62
|
-
fractal_server/app/runner/exceptions.py,sha256=
|
69
|
+
fractal_server/app/runner/components.py,sha256=-Ii5l8d_V6f5DFOd-Zsr8VYmOsyqw0Hox9fEFQiuqxY,66
|
70
|
+
fractal_server/app/runner/compress_folder.py,sha256=DX-4IYlSXlMd0EmXDD8M8FxisfKLbooSTrdNtzYAQAM,4876
|
71
|
+
fractal_server/app/runner/exceptions.py,sha256=JC5ufHyeA1hYD_rkZUscI30DD8D903ncag7Z3AArmUY,4215
|
63
72
|
fractal_server/app/runner/executors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
64
|
-
fractal_server/app/runner/executors/
|
65
|
-
fractal_server/app/runner/executors/
|
66
|
-
fractal_server/app/runner/executors/
|
67
|
-
fractal_server/app/runner/executors/
|
68
|
-
fractal_server/app/runner/executors/
|
69
|
-
fractal_server/app/runner/executors/
|
70
|
-
fractal_server/app/runner/executors/
|
71
|
-
fractal_server/app/runner/executors/
|
72
|
-
fractal_server/app/runner/executors/
|
73
|
-
fractal_server/app/runner/executors/
|
74
|
-
fractal_server/app/runner/executors/
|
75
|
-
fractal_server/app/runner/executors/
|
76
|
-
fractal_server/app/runner/executors/
|
77
|
-
fractal_server/app/runner/executors/
|
78
|
-
fractal_server/app/runner/executors/
|
79
|
-
fractal_server/app/runner/
|
73
|
+
fractal_server/app/runner/executors/base_runner.py,sha256=4xxMpYycIeAOz5niaJj2xtVW_Cq-shCxP1qk4g-KwOM,5137
|
74
|
+
fractal_server/app/runner/executors/local/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
75
|
+
fractal_server/app/runner/executors/local/get_local_config.py,sha256=KiakXxOahaLgWvQJ1LVGYGXht6DMGR9x8Xu-TuT9aY4,3628
|
76
|
+
fractal_server/app/runner/executors/local/runner.py,sha256=AfJ2KDUBdLqkeJTdRzYCkfJh4LiGbdnsHROko_Pk9vA,9587
|
77
|
+
fractal_server/app/runner/executors/slurm_common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
78
|
+
fractal_server/app/runner/executors/slurm_common/_batching.py,sha256=ZY020JZlDS5mfpgpWTChQkyHU7iLE5kx2HVd57_C6XA,8850
|
79
|
+
fractal_server/app/runner/executors/slurm_common/_job_states.py,sha256=nuV-Zba38kDrRESOVB3gaGbrSPZc4q7YGichQaeqTW0,238
|
80
|
+
fractal_server/app/runner/executors/slurm_common/_slurm_config.py,sha256=_feRRnVVnvQa3AsOQqfULfOgaoj2o6Ze0-fwXwic8p4,15795
|
81
|
+
fractal_server/app/runner/executors/slurm_common/base_slurm_runner.py,sha256=kmou-asQJ7SHBR0VPPiQrMLP9gv_NZG3s9t2yoszGhY,33870
|
82
|
+
fractal_server/app/runner/executors/slurm_common/get_slurm_config.py,sha256=BW6fDpPyB0VH5leVxvwzkVH3r3hC7DuSyoWmRzHITWg,7305
|
83
|
+
fractal_server/app/runner/executors/slurm_common/remote.py,sha256=L5llMccL6ctdFpDQvynJl5KbxtATX2wzpq13_3ppw-I,5929
|
84
|
+
fractal_server/app/runner/executors/slurm_common/slurm_job_task_models.py,sha256=RoxHLKOn0_wGjnY0Sv0a9nDSiqxYZHKRoMkT3p9_G1E,3607
|
85
|
+
fractal_server/app/runner/executors/slurm_common/utils_executors.py,sha256=naPyJI0I3lD-sYHbSXbMFGUBK4h_SggA5V91Z1Ch1Xg,1416
|
86
|
+
fractal_server/app/runner/executors/slurm_ssh/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
87
|
+
fractal_server/app/runner/executors/slurm_ssh/runner.py,sha256=yKK_cjskHDiasn_QQ-k14GhplP3tNaK7Kp4yiVn44Y0,9437
|
88
|
+
fractal_server/app/runner/executors/slurm_sudo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
89
|
+
fractal_server/app/runner/executors/slurm_sudo/_subprocess_run_as_user.py,sha256=BlOz4NElv3v7rUYefyeki33uaJxcSDk6rPuVZx9ocdw,2776
|
90
|
+
fractal_server/app/runner/executors/slurm_sudo/runner.py,sha256=lPWkRT499mChP3dNLrdDjMT-nw7-LWv6g58kdF_sMRw,6290
|
91
|
+
fractal_server/app/runner/extract_archive.py,sha256=I7UGIHXXuFvlgVPsP7GMWPu2-DiS1EiyBs7a1bvgkxI,2458
|
80
92
|
fractal_server/app/runner/filenames.py,sha256=lPnxKHtdRizr6FqG3zOdjDPyWA7GoaJGTtiuJV0gA8E,70
|
81
93
|
fractal_server/app/runner/run_subprocess.py,sha256=c3JbYXq3hX2aaflQU19qJ5Xs6J6oXGNvnTEoAfv2bxc,959
|
82
94
|
fractal_server/app/runner/set_start_and_last_task_index.py,sha256=-q4zVybAj8ek2XlbENKlfOAJ39hT_zoJoZkqzDqiAMY,1254
|
83
95
|
fractal_server/app/runner/shutdown.py,sha256=9pfSKHDNdIcm0eY-opgRTi7y0HmvfPmYiu9JR6Idark,2082
|
84
|
-
fractal_server/app/runner/task_files.py,sha256=
|
85
|
-
fractal_server/app/runner/v2/__init__.py,sha256=
|
86
|
-
fractal_server/app/runner/v2/_local
|
87
|
-
fractal_server/app/runner/v2/
|
88
|
-
fractal_server/app/runner/v2/
|
89
|
-
fractal_server/app/runner/v2/
|
90
|
-
fractal_server/app/runner/v2/_slurm_common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
91
|
-
fractal_server/app/runner/v2/_slurm_common/get_slurm_config.py,sha256=21Tl70L8oyo3H_r0vXW6KO9pq2IKEiV5ZkshsPsBjzI,6226
|
92
|
-
fractal_server/app/runner/v2/_slurm_ssh/__init__.py,sha256=wDW58jBPcmOUeBMcuaOqTz1ElEqiyQn9ar7zp2xCPX4,3274
|
93
|
-
fractal_server/app/runner/v2/_slurm_ssh/_submit_setup.py,sha256=a5_FDPH_yxYmrjAjMRLgh_Y4DSG3mRslCLQodGM3-t4,2838
|
94
|
-
fractal_server/app/runner/v2/_slurm_sudo/__init__.py,sha256=16P_3nDRtXztBf0-JOZzNmpnp164kgzRTADaLX733NI,2921
|
95
|
-
fractal_server/app/runner/v2/_slurm_sudo/_submit_setup.py,sha256=a5_FDPH_yxYmrjAjMRLgh_Y4DSG3mRslCLQodGM3-t4,2838
|
96
|
+
fractal_server/app/runner/task_files.py,sha256=27xFuPzSJc1Pw912CfSMPOhOIpvNwpkyLCnycqdo9lw,4365
|
97
|
+
fractal_server/app/runner/v2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
98
|
+
fractal_server/app/runner/v2/_local.py,sha256=Ggdxx_XOlMya3bgXn_vGd2WMNVmLQaO3w9ZPaxYlRQk,3088
|
99
|
+
fractal_server/app/runner/v2/_slurm_ssh.py,sha256=CEaJLajwdDjdpxY1_7aTLb9wqgzeOuxLlSewScMEx_Y,3322
|
100
|
+
fractal_server/app/runner/v2/_slurm_sudo.py,sha256=TVihkQKMX6YWEWxXJjQo0WEQOjVy7FVVLmbM3MCulR0,3037
|
101
|
+
fractal_server/app/runner/v2/db_tools.py,sha256=du5dKhMMFMErQXbGIgu9JvO_vtMensodyPsyDeqz1yQ,3324
|
96
102
|
fractal_server/app/runner/v2/deduplicate_list.py,sha256=IVTE4abBU1bUprFTkxrTfYKnvkNTanWQ-KWh_etiT08,645
|
97
|
-
fractal_server/app/runner/v2/handle_failed_job.py,sha256=-zFWw4d208bQEFUF_sAdH2LdHEARyg1FC8BENr1SjhU,2045
|
98
103
|
fractal_server/app/runner/v2/merge_outputs.py,sha256=D1L4Taieq9i71SPQyNc1kMokgHh-sV_MqF3bv7QMDBc,907
|
99
|
-
fractal_server/app/runner/v2/runner.py,sha256=
|
100
|
-
fractal_server/app/runner/v2/runner_functions.py,sha256=
|
101
|
-
fractal_server/app/runner/v2/runner_functions_low_level.py,sha256=
|
102
|
-
fractal_server/app/runner/v2/
|
104
|
+
fractal_server/app/runner/v2/runner.py,sha256=UmUhAOOcwAT-8b28o5bWn5S9APtr5EbEvulxWJPo6r4,16269
|
105
|
+
fractal_server/app/runner/v2/runner_functions.py,sha256=AzsE7VF6NMz_5qc0htQkfow5_2rr-wkx50vFJTndj8I,19250
|
106
|
+
fractal_server/app/runner/v2/runner_functions_low_level.py,sha256=_h_OOffq3d7V0uHa8Uvs0mj31y1GSZBUXjDDF3WjVjY,3620
|
107
|
+
fractal_server/app/runner/v2/submit_workflow.py,sha256=QywUGIoHAHnrWgfnyX8W9kVqKY-RvVyNLpzrbsXZOZ4,13075
|
108
|
+
fractal_server/app/runner/v2/task_interface.py,sha256=IXdQTI8rXFgXv1Ez0js4CjKFf3QwO2GCHRTuwiFtiTQ,2891
|
103
109
|
fractal_server/app/runner/versions.py,sha256=dSaPRWqmFPHjg20kTCHmi_dmGNcCETflDtDLronNanU,852
|
104
110
|
fractal_server/app/schemas/__init__.py,sha256=stURAU_t3AOBaH0HSUbV-GKhlPKngnnIMoqWc3orFyI,135
|
105
111
|
fractal_server/app/schemas/_filter_validators.py,sha256=Gkf2USrkuxZx1TWeeMRmhgfmG60AAIDQfbaWslLsvJQ,1572
|
106
|
-
fractal_server/app/schemas/_validators.py,sha256=
|
107
|
-
fractal_server/app/schemas/user.py,sha256=
|
112
|
+
fractal_server/app/schemas/_validators.py,sha256=ZzTlTTzRATzf9Snx4Xp67aDmG77GaM2ewssFtlxQaaY,2680
|
113
|
+
fractal_server/app/schemas/user.py,sha256=oCftAKeHdFFowpLyh1G-RiylR8cIO7fTn0PkT5xjs0E,2494
|
108
114
|
fractal_server/app/schemas/user_group.py,sha256=Uao1igRYflBu7Dg6Zs0kaFU3zBFJzIwDLrkFfaJk6z8,2176
|
109
|
-
fractal_server/app/schemas/user_settings.py,sha256=
|
110
|
-
fractal_server/app/schemas/v2/__init__.py,sha256=
|
111
|
-
fractal_server/app/schemas/v2/
|
112
|
-
fractal_server/app/schemas/v2/
|
113
|
-
fractal_server/app/schemas/v2/
|
114
|
-
fractal_server/app/schemas/v2/
|
115
|
-
fractal_server/app/schemas/v2/
|
116
|
-
fractal_server/app/schemas/v2/
|
117
|
-
fractal_server/app/schemas/v2/
|
118
|
-
fractal_server/app/schemas/v2/
|
119
|
-
fractal_server/app/schemas/v2/
|
120
|
-
fractal_server/app/schemas/v2/
|
121
|
-
fractal_server/app/schemas/v2/
|
122
|
-
fractal_server/app/
|
123
|
-
fractal_server/app/
|
115
|
+
fractal_server/app/schemas/user_settings.py,sha256=z7hx54yTrWfjo98oX_1lkeRh1UGrC1dSRH6yIOpnCsY,2772
|
116
|
+
fractal_server/app/schemas/v2/__init__.py,sha256=wXS4ZEzobWx5dh-XLjMZWpd-JMwWFPODUeUVoMQGRv4,3099
|
117
|
+
fractal_server/app/schemas/v2/accounting.py,sha256=Wylt7uWTiDIFlHJOh4XEtYitk2FjFlmnodDrJDxcr0E,397
|
118
|
+
fractal_server/app/schemas/v2/dataset.py,sha256=xNWdOW8hhL5Wx-iwyUPrZfWcC8fFuGDgdOHvZLbGVME,2782
|
119
|
+
fractal_server/app/schemas/v2/dumps.py,sha256=uc9itXekO5IFfR6UucpQ5BX9NZZ8erE4hRR6S6aXlOc,2284
|
120
|
+
fractal_server/app/schemas/v2/history.py,sha256=Y3rc96DOPGQGZWJtBYVHiBjMQEhFtMq4WGkV4vs1oDE,1675
|
121
|
+
fractal_server/app/schemas/v2/job.py,sha256=OXPB4oPiMVWYgZu0lGzM_LGACvhWBavsW7c3MmivdDM,4556
|
122
|
+
fractal_server/app/schemas/v2/manifest.py,sha256=8mmB0QwxEgAeGgwKD_fT-o-wFy7lb6HxNXbp17IJqNY,7281
|
123
|
+
fractal_server/app/schemas/v2/project.py,sha256=ulgCmUnX0w-0jrSjVYIT7sxeK95CSNGh2msXydhsgYI,885
|
124
|
+
fractal_server/app/schemas/v2/status_legacy.py,sha256=vc6C3Xri8222bb9OmsghMz05CNuEalO-t2s_nKo341s,954
|
125
|
+
fractal_server/app/schemas/v2/task.py,sha256=8vc8c3ZL6dJo9kyCrfKozgO_pF37BBLvD5XYIXynlEc,6551
|
126
|
+
fractal_server/app/schemas/v2/task_collection.py,sha256=dLu4sy-su5k5vDJqCZdJMW8mLT5TX2SV60l_RAvKhwY,5930
|
127
|
+
fractal_server/app/schemas/v2/task_group.py,sha256=A3SFHNHLKPJyrnDz-wbnQvycetafKltp6UsH1u-euwA,3850
|
128
|
+
fractal_server/app/schemas/v2/workflow.py,sha256=ZpM43zTMyLRnEUtkbr_J5DYP00NwjItaC8gweB7GGAA,2172
|
129
|
+
fractal_server/app/schemas/v2/workflowtask.py,sha256=rVbmNihDAJL_Sckbt1hBK2JEcb-8Xpxn3McvaomZLmQ,7429
|
130
|
+
fractal_server/app/security/__init__.py,sha256=e2cveg5hQpieGD3bSPd5GTOMthvJ-HXH3buSb9WVfEU,14096
|
131
|
+
fractal_server/app/security/signup_email.py,sha256=Xd6QYxcdmg0PHpDwmUE8XQmPcOj3Xjy5oROcIMhmltM,1472
|
124
132
|
fractal_server/app/user_settings.py,sha256=OP1yiYKtPadxwM51_Q0hdPk3z90TCN4z1BLpQsXyWiU,1316
|
125
|
-
fractal_server/config.py,sha256=
|
133
|
+
fractal_server/config.py,sha256=83dHIuZMdMiu4LAtzVGBe_iD1nWEYOiKmeC-HHZ0nhw,28534
|
126
134
|
fractal_server/data_migrations/README.md,sha256=_3AEFvDg9YkybDqCLlFPdDmGJvr6Tw7HRI14aZ3LOIw,398
|
127
135
|
fractal_server/data_migrations/tools.py,sha256=LeMeASwYGtEqd-3wOLle6WARdTGAimoyMmRbbJl-hAM,572
|
128
136
|
fractal_server/gunicorn_fractal.py,sha256=u6U01TLGlXgq1v8QmEpLih3QnsInZD7CqphgJ_GrGzc,1230
|
129
137
|
fractal_server/images/__init__.py,sha256=-_wjoKtSX02P1KjDxDP_EXKvmbONTRmbf7iGVTsyBpM,154
|
130
138
|
fractal_server/images/models.py,sha256=jdGKMPi8WlO9Kvns4grIOU5LjujnvwIGjMFMC0wNy08,3501
|
131
|
-
fractal_server/images/tools.py,sha256
|
139
|
+
fractal_server/images/tools.py,sha256=-zFDzRv6cbbRo21OrD0eZY5qWcoMX8dxgEnfyI3tOcg,4140
|
132
140
|
fractal_server/logger.py,sha256=5Z3rfsFwl8UysVljTOaaIvt8Pyp6CVH492ez3jE8WAw,5113
|
133
141
|
fractal_server/main.py,sha256=FD9KzTTsXTQnTW0z3Hu7y0Nj_oAkBeZEInKDXFd4hjE,4561
|
134
142
|
fractal_server/migrations/env.py,sha256=nfyBpMIOT3kny6t-b-tUjyRjZ4k906bb1_wCQ7me1BI,1353
|
@@ -138,6 +146,7 @@ fractal_server/migrations/versions/091b01f51f88_add_usergroup_and_linkusergroup_
|
|
138
146
|
fractal_server/migrations/versions/19eca0dd47a9_user_settings_project_dir.py,sha256=Q1Gj1cJ0UrdLBJ5AXfFK9QpxTtmcv-4Z3NEGDnxOme4,961
|
139
147
|
fractal_server/migrations/versions/1eac13a26c83_drop_v1_tables.py,sha256=ok8dl4IkI-dfsyE_NZ8IndjQrnQ_g6CDZo4PwozpIwE,1605
|
140
148
|
fractal_server/migrations/versions/316140ff7ee1_remove_usersettings_cache_dir.py,sha256=lANgTox0rz459_yo1Rw7fGCT1qw5sUCUXTLUMc_Bzf8,911
|
149
|
+
fractal_server/migrations/versions/47351f8c7ebc_drop_dataset_filters.py,sha256=vePkVm1iUHiPNKLQ3KR7BBLdHruqBdl87j_tUCbMbEA,1414
|
141
150
|
fractal_server/migrations/versions/4c308bcaea2b_add_task_args_schema_and_task_args_.py,sha256=-wHe-fOffmYeAm0JXVl_lxZ7hhDkaEVqxgxpHkb_uL8,954
|
142
151
|
fractal_server/migrations/versions/4cedeb448a53_workflowtask_foreign_keys_not_nullables.py,sha256=Mob8McGYAcmgvrseyyYOa54E6Gsgr-4SiGdC-r9O4_A,1157
|
143
152
|
fractal_server/migrations/versions/501961cfcd85_remove_link_between_v1_and_v2_tasks_.py,sha256=5ROUgcoZOdjf8kMt6cxuvPhzHmV6xaCxvZEbhUEyZM4,3271
|
@@ -152,19 +161,25 @@ fractal_server/migrations/versions/94a47ea2d3ff_remove_cache_dir_slurm_user_and_
|
|
152
161
|
fractal_server/migrations/versions/97f444d47249_add_applyworkflow_project_dump.py,sha256=eKTZm3EgUgapXBxO0RuHkEfTKic-TZG3ADaMpGLuc0k,1057
|
153
162
|
fractal_server/migrations/versions/99ea79d9e5d2_add_dataset_history.py,sha256=0im6TxDr53sKKcjiPgeH4ftVRGnRXZSh2lPbRQ1Ir9w,883
|
154
163
|
fractal_server/migrations/versions/9c5ae74c9b98_add_user_settings_table.py,sha256=syONdZNf4-OnAcWIsbzXpYwpXPsXZ4SsmjwVvmVG0PU,2256
|
164
|
+
fractal_server/migrations/versions/9db60297b8b2_set_ondelete.py,sha256=F0IdXk8vclViOGKe2SOHO3MsQsqe7SsZRSqz9cXhhrE,7928
|
155
165
|
fractal_server/migrations/versions/9fd26a2b0de4_add_workflow_timestamp_created.py,sha256=4l1AHGUsa0ONoJVZlr3fTXw_xbbQ8O7wlD92Az2aRfM,1849
|
156
166
|
fractal_server/migrations/versions/a7f4d6137b53_add_workflow_dump_to_applyworkflow.py,sha256=ekDUML7ILpmdoqEclKbEUdyLi4uw9HSG_sTjG2hp_JE,867
|
167
|
+
fractal_server/migrations/versions/af1ef1c83c9b_add_accounting_tables.py,sha256=BftudWuSGvKGBzIL5AMb3yWkgTAuaKPBGsYcOzp_gLQ,1899
|
157
168
|
fractal_server/migrations/versions/af8673379a5c_drop_old_filter_columns.py,sha256=9sLd0F7nO5chHHm7RZ4wBA-9bvWomS-av_odKwODADM,1551
|
169
|
+
fractal_server/migrations/versions/c90a7c76e996_job_id_in_history_run.py,sha256=Y1cPwmFOZ4mx3v2XZM6adgu8u0L0VD_R4ADURyMb2ro,1102
|
158
170
|
fractal_server/migrations/versions/d256a7379ab8_taskgroup_activity_and_venv_info_to_.py,sha256=HN3_Pk8G81SzdYjg4K1RZAyjKSlsZGvcYE2nWOUbwxQ,3861
|
159
171
|
fractal_server/migrations/versions/d4fe3708d309_make_applyworkflow_workflow_dump_non_.py,sha256=6cHEZFuTXiQg9yu32Y3RH1XAl71av141WQ6UMbiITIg,949
|
160
172
|
fractal_server/migrations/versions/da2cb2ac4255_user_group_viewer_paths.py,sha256=yGWSA2HIHUybcVy66xBITk08opV2DFYSCIIrulaUZhI,901
|
161
173
|
fractal_server/migrations/versions/db09233ad13a_split_filters_and_keep_old_columns.py,sha256=NumyjvciIjgShLZcmpDvh3ggJxnc-W1kc7vofrpcNOs,2906
|
162
174
|
fractal_server/migrations/versions/e75cac726012_make_applyworkflow_start_timestamp_not_.py,sha256=lOggSvzGWqQvnxxFuSM6W50Ui49R918A-uBuiZJ0pNM,963
|
175
|
+
fractal_server/migrations/versions/e81103413827_add_job_type_filters.py,sha256=t4ImlKNHx5JMgBL2sTpLWunv1gwY8OCFOKd3G338mdE,890
|
163
176
|
fractal_server/migrations/versions/efa89c30e0a4_add_project_timestamp_created.py,sha256=jilQW3QIqYQ4Q6hCnUiG7UtNMpA41ujqrB3tPFiPM1Q,1221
|
177
|
+
fractal_server/migrations/versions/f37aceb45062_make_historyunit_logfile_required.py,sha256=jLHcVq9z0Ou20u-mwPf6EICDKY4dwFAzBgbRRx9_xDw,1007
|
164
178
|
fractal_server/migrations/versions/f384e1c0cf5d_drop_task_default_args_columns.py,sha256=9BwqUS9Gf7UW_KjrzHbtViC880qhD452KAytkHWWZyk,746
|
179
|
+
fractal_server/migrations/versions/fbce16ff4e47_new_history_items.py,sha256=TDWCaIoM0Q4SpRWmR9zr_rdp3lJXhCfBPTMhtrP5xYE,3950
|
165
180
|
fractal_server/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
166
181
|
fractal_server/ssh/__init__.py,sha256=sVUmzxf7_DuXG1xoLQ1_00fo5NPhi2LJipSmU5EAkPs,124
|
167
|
-
fractal_server/ssh/_fabric.py,sha256=
|
182
|
+
fractal_server/ssh/_fabric.py,sha256=jF7Nny0r3_PL1WjM1Zlw1I73Uqerx-mTaDWQlOaOpa0,23324
|
168
183
|
fractal_server/string_tools.py,sha256=niViRrrZAOo0y6pEFI9L_eUYS1PoOiQZUBtngiLc2_k,1877
|
169
184
|
fractal_server/syringe.py,sha256=3qSMW3YaMKKnLdgnooAINOPxnCOxP7y2jeAQYB21Gdo,2786
|
170
185
|
fractal_server/tasks/__init__.py,sha256=kadmVUoIghl8s190_Tt-8f-WBqMi8u8oU4Pvw39NHE8,23
|
@@ -172,30 +187,30 @@ fractal_server/tasks/utils.py,sha256=V7dj8o2AnoHhGSTYlqJHcRFhCIpmOrMOUhtiE_DvRVA
|
|
172
187
|
fractal_server/tasks/v2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
173
188
|
fractal_server/tasks/v2/local/__init__.py,sha256=9RVItnS7OyLsJOuJjWMCicaky4ASUPQEYD4SzDs0hOE,141
|
174
189
|
fractal_server/tasks/v2/local/_utils.py,sha256=EvhmVwYjqaNyDCUMEsTWYOUXLgEwR1xr6bu32apCEI8,2491
|
175
|
-
fractal_server/tasks/v2/local/collect.py,sha256
|
190
|
+
fractal_server/tasks/v2/local/collect.py,sha256=-ScW8Vm0cguwEDQarNAaZFtai0jFFVBrIaVgo2G9KCE,12204
|
176
191
|
fractal_server/tasks/v2/local/deactivate.py,sha256=94s_RDND8aR5Y8RxFrRx61rZBMPGqOmFnBFLVKK1HVY,10038
|
177
192
|
fractal_server/tasks/v2/local/reactivate.py,sha256=eBgFgq5xVKNr4DIDX7QU8xXerhwMrPaHDJ1wTth7aQc,6191
|
178
193
|
fractal_server/tasks/v2/ssh/__init__.py,sha256=aSQbVi6Ummt9QzcSLWNmSqYjfdxrn9ROmqgH6bDpI7k,135
|
179
194
|
fractal_server/tasks/v2/ssh/_utils.py,sha256=LjaEYVUJDChilu3YuhxuGWYRNnVJ_zqNE9SDHdRTIHY,2824
|
180
|
-
fractal_server/tasks/v2/ssh/collect.py,sha256
|
195
|
+
fractal_server/tasks/v2/ssh/collect.py,sha256=gGFdKTawfi3xyUuslyB-QoNNtc7SXx23a7K7wNH8HhM,13562
|
181
196
|
fractal_server/tasks/v2/ssh/deactivate.py,sha256=EAVH2HtyvmIFXqUwsGYhlJcAcVh_MvIOaKDY8AyBODw,11400
|
182
197
|
fractal_server/tasks/v2/ssh/reactivate.py,sha256=8Rnbbny7TjMEAHhboqfgxBVZZK5UNNmh4Ud-0y3jaVM,7970
|
183
198
|
fractal_server/tasks/v2/templates/1_create_venv.sh,sha256=PK0jdHKtQpda1zULebBaVPORt4t6V17wa4N1ohcj5ac,548
|
184
|
-
fractal_server/tasks/v2/templates/2_pip_install.sh,sha256=
|
199
|
+
fractal_server/tasks/v2/templates/2_pip_install.sh,sha256=Md2LPt3BJ7IfN0USF2uivl4rP8OwbzJOUepGAr_Cicg,1836
|
185
200
|
fractal_server/tasks/v2/templates/3_pip_freeze.sh,sha256=JldREScEBI4cD_qjfX4UK7V4aI-FnX9ZvVNxgpSOBFc,168
|
186
|
-
fractal_server/tasks/v2/templates/4_pip_show.sh,sha256=
|
201
|
+
fractal_server/tasks/v2/templates/4_pip_show.sh,sha256=qm1vPy6AkKhWDjCJGXS8LqCLYO3KsAyRK325ZsFcF6U,1747
|
187
202
|
fractal_server/tasks/v2/templates/5_get_venv_size_and_file_number.sh,sha256=q-6ZUvA6w6FDVEoSd9O63LaJ9tKZc7qAFH72SGPrd_k,284
|
188
203
|
fractal_server/tasks/v2/templates/6_pip_install_from_freeze.sh,sha256=A2y8RngEjAcRhG-_owA6P7tAdrS_AszFuGXnaeMV8u0,1122
|
189
|
-
fractal_server/tasks/v2/utils_background.py,sha256=
|
190
|
-
fractal_server/tasks/v2/utils_database.py,sha256=
|
204
|
+
fractal_server/tasks/v2/utils_background.py,sha256=FKJvtz1YuFLXV1TuoSeebWA0uDWsQIUxpFqWtKSJigc,3423
|
205
|
+
fractal_server/tasks/v2/utils_database.py,sha256=yi7793Uue32O59OBVUgomO42oUrVKdSKXoShBUNDdK0,1807
|
191
206
|
fractal_server/tasks/v2/utils_package_names.py,sha256=RDg__xrvQs4ieeVzmVdMcEh95vGQYrv9Hfal-5EDBM8,2393
|
192
207
|
fractal_server/tasks/v2/utils_python_interpreter.py,sha256=5_wrlrTqXyo1YuLZvAW9hrSoh5MyLOzdPVUlUwM7uDQ,955
|
193
|
-
fractal_server/tasks/v2/utils_templates.py,sha256=
|
208
|
+
fractal_server/tasks/v2/utils_templates.py,sha256=Kc_nSzdlV6KIsO0CQSPs1w70zLyENPqJeTQEFiz4bOg,3124
|
194
209
|
fractal_server/urls.py,sha256=QjIKAC1a46bCdiPMu3AlpgFbcv6a4l3ABcd5xz190Og,471
|
195
210
|
fractal_server/utils.py,sha256=PMwrxWFxRTQRl1b9h-NRIbFGPKqpH_hXnkAT3NfZdpY,3571
|
196
211
|
fractal_server/zip_tools.py,sha256=GjDgo_sf6V_DDg6wWeBlZu5zypIxycn_l257p_YVKGc,4876
|
197
|
-
fractal_server-2.
|
198
|
-
fractal_server-2.
|
199
|
-
fractal_server-2.
|
200
|
-
fractal_server-2.
|
201
|
-
fractal_server-2.
|
212
|
+
fractal_server-2.14.0.dist-info/LICENSE,sha256=QKAharUuhxL58kSoLizKJeZE3mTCBnX6ucmz8W0lxlk,1576
|
213
|
+
fractal_server-2.14.0.dist-info/METADATA,sha256=rbNZVkwzYDYoAd4gozu4v5w4oOdWKv75wCav4EKOWCI,4560
|
214
|
+
fractal_server-2.14.0.dist-info/WHEEL,sha256=7dDg4QLnNKTvwIDR9Ac8jJaAmBC_owJrckbC0jjThyA,88
|
215
|
+
fractal_server-2.14.0.dist-info/entry_points.txt,sha256=8tV2kynvFkjnhbtDnxAqImL6HMVKsopgGfew0DOp5UY,58
|
216
|
+
fractal_server-2.14.0.dist-info/RECORD,,
|
@@ -1,126 +0,0 @@
|
|
1
|
-
import os
|
2
|
-
import threading
|
3
|
-
import time
|
4
|
-
import traceback
|
5
|
-
from itertools import count
|
6
|
-
|
7
|
-
from ......logger import set_logger
|
8
|
-
from fractal_server.app.runner.exceptions import JobExecutionError
|
9
|
-
|
10
|
-
logger = set_logger(__name__)
|
11
|
-
|
12
|
-
|
13
|
-
class FractalSlurmSSHWaitThread(threading.Thread):
|
14
|
-
"""
|
15
|
-
Thread that monitors a pool of SLURM jobs
|
16
|
-
|
17
|
-
This class is a custom re-implementation of the waiting thread class from:
|
18
|
-
|
19
|
-
> clusterfutures <https://github.com/sampsyo/clusterfutures>
|
20
|
-
> Original Copyright
|
21
|
-
> Copyright 2021 Adrian Sampson <asampson@cs.washington.edu>
|
22
|
-
> License: MIT
|
23
|
-
|
24
|
-
Attributes:
|
25
|
-
shutdown_file:
|
26
|
-
shutdown_callback:
|
27
|
-
slurm_poll_interval:
|
28
|
-
jobs_finished_callback:
|
29
|
-
active_job_ids:
|
30
|
-
shutdown:
|
31
|
-
lock:
|
32
|
-
"""
|
33
|
-
|
34
|
-
shutdown_file: str
|
35
|
-
shutdown_callback: callable
|
36
|
-
slurm_poll_interval = 30
|
37
|
-
jobs_finished_callback: callable
|
38
|
-
active_job_ids: list[str]
|
39
|
-
shutdown: bool
|
40
|
-
_lock: threading.Lock
|
41
|
-
|
42
|
-
def __init__(self, callback: callable, interval=1):
|
43
|
-
"""
|
44
|
-
Init method
|
45
|
-
|
46
|
-
This method is executed on the main thread.
|
47
|
-
"""
|
48
|
-
threading.Thread.__init__(self, daemon=True)
|
49
|
-
self.callback = callback
|
50
|
-
self.interval = interval
|
51
|
-
self._lock = threading.Lock()
|
52
|
-
self.shutdown = False
|
53
|
-
self.active_job_ids = []
|
54
|
-
|
55
|
-
def wait(self, *, job_id: str):
|
56
|
-
"""
|
57
|
-
Add a a new job to the set of jobs being waited for.
|
58
|
-
|
59
|
-
This method is executed on the main thread.
|
60
|
-
"""
|
61
|
-
if self.shutdown:
|
62
|
-
error_msg = "Cannot call `wait` method after executor shutdown."
|
63
|
-
logger.warning(error_msg)
|
64
|
-
raise JobExecutionError(info=error_msg)
|
65
|
-
with self._lock:
|
66
|
-
self.active_job_ids.append(job_id)
|
67
|
-
|
68
|
-
def check_shutdown(self):
|
69
|
-
"""
|
70
|
-
Check whether the shutdown file exists
|
71
|
-
|
72
|
-
This method is executed on the waiting thread.
|
73
|
-
"""
|
74
|
-
if os.path.exists(self.shutdown_file):
|
75
|
-
logger.info(
|
76
|
-
f"Detected executor-shutdown file {self.shutdown_file}"
|
77
|
-
)
|
78
|
-
self.shutdown = True
|
79
|
-
|
80
|
-
def check_jobs(self):
|
81
|
-
"""
|
82
|
-
Check whether some jobs are over, and call callback.
|
83
|
-
|
84
|
-
This method is executed on the waiting thread.
|
85
|
-
"""
|
86
|
-
try:
|
87
|
-
if self.active_job_ids == []:
|
88
|
-
return
|
89
|
-
finished_jobs = self.jobs_finished_callback(self.active_job_ids)
|
90
|
-
if finished_jobs == set(self.active_job_ids):
|
91
|
-
self.callback(self.active_job_ids)
|
92
|
-
self.active_job_ids = []
|
93
|
-
|
94
|
-
except Exception:
|
95
|
-
# If anything goes wrong, print an exception without re-raising
|
96
|
-
traceback.print_exc()
|
97
|
-
|
98
|
-
def run(self):
|
99
|
-
"""
|
100
|
-
Run forever (until a shutdown takes place) and trigger callback
|
101
|
-
|
102
|
-
This method is executed on the waiting thread.
|
103
|
-
|
104
|
-
Note that `shutdown_callback` only takes care of cleaning up the
|
105
|
-
FractalSlurmExecutor variables, and then the `return` here is enough
|
106
|
-
to fully clean up the `FractalFileWaitThread` object.
|
107
|
-
"""
|
108
|
-
|
109
|
-
# FIXME SSH: are those try/except below needed?
|
110
|
-
|
111
|
-
skip = max(self.slurm_poll_interval // self.interval, 1)
|
112
|
-
for ind in count():
|
113
|
-
self.check_shutdown()
|
114
|
-
if self.shutdown:
|
115
|
-
try:
|
116
|
-
self.shutdown_callback()
|
117
|
-
except Exception: # nosec
|
118
|
-
pass
|
119
|
-
return
|
120
|
-
if ind % skip == 0:
|
121
|
-
with self._lock:
|
122
|
-
try:
|
123
|
-
self.check_jobs()
|
124
|
-
except Exception: # nosec
|
125
|
-
pass
|
126
|
-
time.sleep(self.interval)
|
@@ -1,116 +0,0 @@
|
|
1
|
-
import uuid
|
2
|
-
from pathlib import Path
|
3
|
-
from typing import Optional
|
4
|
-
|
5
|
-
from fractal_server.app.runner.executors.slurm._slurm_config import (
|
6
|
-
SlurmConfig,
|
7
|
-
)
|
8
|
-
|
9
|
-
|
10
|
-
class SlurmJob:
|
11
|
-
"""
|
12
|
-
Collect information related to a FractalSlurmSSHExecutor job
|
13
|
-
|
14
|
-
This includes three groups of attributes:
|
15
|
-
|
16
|
-
1. Attributes related to the (possibly multi-task) SLURM job, e.g.
|
17
|
-
submission-file path.
|
18
|
-
2. Attributes related to single tasks, e.g. the paths of their input/output
|
19
|
-
pickle files.
|
20
|
-
3. SLURM configuration options, encoded in a SlurmConfig object.
|
21
|
-
|
22
|
-
Note: A SlurmJob object is generally defined as a multi-task job. Jobs
|
23
|
-
coming from the `map` method must have `single_task_submission=False` (even
|
24
|
-
if `num_tasks_tot=1`), while jobs coming from `submit` must have it set to
|
25
|
-
`True`.
|
26
|
-
|
27
|
-
Attributes:
|
28
|
-
num_tasks_tot:
|
29
|
-
Total number of tasks to be executed as part of this SLURM job.
|
30
|
-
single_task_submission:
|
31
|
-
This must be `True` for jobs submitted as part of the `submit`
|
32
|
-
method, and `False` for jobs coming from the `map` method.
|
33
|
-
slurm_file_prefix:
|
34
|
-
Prefix for SLURM-job related files (submission script and SLURM
|
35
|
-
stdout/stderr); this is also needed in the
|
36
|
-
`_copy_files_from_remote_to_local` method.
|
37
|
-
wftask_file_prefixes:
|
38
|
-
Prefix for files that are created as part of the functions
|
39
|
-
submitted for execution on the `FractalSlurmSSHExecutor`; this is
|
40
|
-
needed in the `_copy_files_from_remote_to_local` method, and also
|
41
|
-
to construct the names of per-task input/output pickle files.
|
42
|
-
wftask_subfolder_name:
|
43
|
-
Name of the per-task subfolder (e.g. `7_task_name`).
|
44
|
-
slurm_script:
|
45
|
-
Path of SLURM submission script.
|
46
|
-
slurm_stdout:
|
47
|
-
Path of SLURM stdout file; if this includes `"%j"`, then this
|
48
|
-
string will be replaced by the SLURM job ID upon `sbatch`
|
49
|
-
submission.
|
50
|
-
slurm_stderr:
|
51
|
-
Path of SLURM stderr file; see `slurm_stdout` concerning `"%j"`.
|
52
|
-
workerids:
|
53
|
-
IDs that enter in the per-task input/output pickle files (one per
|
54
|
-
task).
|
55
|
-
input_pickle_files:
|
56
|
-
Input pickle files (one per task).
|
57
|
-
output_pickle_files:
|
58
|
-
Output pickle files (one per task).
|
59
|
-
slurm_config:
|
60
|
-
`SlurmConfig` object.
|
61
|
-
"""
|
62
|
-
|
63
|
-
# Job-related attributes
|
64
|
-
num_tasks_tot: int
|
65
|
-
single_task_submission: bool
|
66
|
-
slurm_file_prefix: str
|
67
|
-
slurm_script_local: Path
|
68
|
-
slurm_script_remote: Path
|
69
|
-
slurm_stdout_local: Path
|
70
|
-
slurm_stdout_remote: Path
|
71
|
-
slurm_stderr_local: Path
|
72
|
-
slurm_stderr_remote: Path
|
73
|
-
|
74
|
-
# Per-task attributes
|
75
|
-
wftask_subfolder_name: str
|
76
|
-
workerids: tuple[str, ...]
|
77
|
-
wftask_file_prefixes: tuple[str, ...]
|
78
|
-
input_pickle_files_local: tuple[Path, ...]
|
79
|
-
input_pickle_files_remote: tuple[Path, ...]
|
80
|
-
output_pickle_files_local: tuple[Path, ...]
|
81
|
-
output_pickle_files_remote: tuple[Path, ...]
|
82
|
-
|
83
|
-
# Slurm configuration
|
84
|
-
slurm_config: SlurmConfig
|
85
|
-
|
86
|
-
def __init__(
|
87
|
-
self,
|
88
|
-
num_tasks_tot: int,
|
89
|
-
slurm_config: SlurmConfig,
|
90
|
-
slurm_file_prefix: Optional[str] = None,
|
91
|
-
wftask_file_prefixes: Optional[tuple[str, ...]] = None,
|
92
|
-
single_task_submission: bool = False,
|
93
|
-
):
|
94
|
-
if single_task_submission and num_tasks_tot > 1:
|
95
|
-
raise ValueError(
|
96
|
-
"Trying to initialize SlurmJob with"
|
97
|
-
f"{single_task_submission=} and {num_tasks_tot=}."
|
98
|
-
)
|
99
|
-
self.num_tasks_tot = num_tasks_tot
|
100
|
-
self.single_task_submission = single_task_submission
|
101
|
-
self.slurm_file_prefix = slurm_file_prefix or "default_slurm_prefix"
|
102
|
-
if wftask_file_prefixes is None:
|
103
|
-
self.wftask_file_prefixes = tuple(
|
104
|
-
"default_wftask_prefix" for i in range(self.num_tasks_tot)
|
105
|
-
)
|
106
|
-
else:
|
107
|
-
self.wftask_file_prefixes = wftask_file_prefixes
|
108
|
-
self.workerids = tuple(uuid.uuid4() for i in range(self.num_tasks_tot))
|
109
|
-
self.slurm_config = slurm_config
|
110
|
-
|
111
|
-
def get_clean_output_pickle_files(self) -> tuple[str, ...]:
|
112
|
-
"""
|
113
|
-
Transform all pathlib.Path objects in self.output_pickle_files to
|
114
|
-
strings
|
115
|
-
"""
|
116
|
-
return tuple(str(f.as_posix()) for f in self.output_pickle_files_local)
|