fractal-server 2.14.4a0__py3-none-any.whl → 2.14.6__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.
Files changed (110) hide show
  1. fractal_server/__init__.py +1 -1
  2. fractal_server/app/db/__init__.py +2 -2
  3. fractal_server/app/models/security.py +8 -8
  4. fractal_server/app/models/user_settings.py +8 -10
  5. fractal_server/app/models/v2/accounting.py +2 -3
  6. fractal_server/app/models/v2/dataset.py +1 -2
  7. fractal_server/app/models/v2/history.py +3 -4
  8. fractal_server/app/models/v2/job.py +10 -11
  9. fractal_server/app/models/v2/project.py +1 -2
  10. fractal_server/app/models/v2/task.py +13 -14
  11. fractal_server/app/models/v2/task_group.py +15 -16
  12. fractal_server/app/models/v2/workflow.py +1 -2
  13. fractal_server/app/models/v2/workflowtask.py +6 -7
  14. fractal_server/app/routes/admin/v2/accounting.py +3 -4
  15. fractal_server/app/routes/admin/v2/job.py +13 -14
  16. fractal_server/app/routes/admin/v2/project.py +2 -4
  17. fractal_server/app/routes/admin/v2/task.py +11 -13
  18. fractal_server/app/routes/admin/v2/task_group.py +15 -17
  19. fractal_server/app/routes/admin/v2/task_group_lifecycle.py +5 -8
  20. fractal_server/app/routes/api/v2/__init__.py +2 -0
  21. fractal_server/app/routes/api/v2/_aux_functions.py +7 -9
  22. fractal_server/app/routes/api/v2/_aux_functions_history.py +1 -1
  23. fractal_server/app/routes/api/v2/_aux_functions_task_lifecycle.py +1 -3
  24. fractal_server/app/routes/api/v2/_aux_functions_tasks.py +5 -6
  25. fractal_server/app/routes/api/v2/dataset.py +6 -8
  26. fractal_server/app/routes/api/v2/history.py +5 -8
  27. fractal_server/app/routes/api/v2/images.py +2 -3
  28. fractal_server/app/routes/api/v2/job.py +5 -6
  29. fractal_server/app/routes/api/v2/pre_submission_checks.py +1 -3
  30. fractal_server/app/routes/api/v2/project.py +2 -4
  31. fractal_server/app/routes/api/v2/status_legacy.py +2 -4
  32. fractal_server/app/routes/api/v2/submit.py +3 -4
  33. fractal_server/app/routes/api/v2/task.py +6 -7
  34. fractal_server/app/routes/api/v2/task_collection.py +11 -13
  35. fractal_server/app/routes/api/v2/task_collection_custom.py +4 -4
  36. fractal_server/app/routes/api/v2/task_group.py +6 -8
  37. fractal_server/app/routes/api/v2/task_group_lifecycle.py +6 -9
  38. fractal_server/app/routes/api/v2/task_version_update.py +270 -0
  39. fractal_server/app/routes/api/v2/workflow.py +5 -6
  40. fractal_server/app/routes/api/v2/workflow_import.py +3 -5
  41. fractal_server/app/routes/api/v2/workflowtask.py +2 -114
  42. fractal_server/app/routes/auth/current_user.py +2 -2
  43. fractal_server/app/routes/pagination.py +2 -3
  44. fractal_server/app/runner/exceptions.py +16 -22
  45. fractal_server/app/runner/executors/base_runner.py +19 -7
  46. fractal_server/app/runner/executors/call_command_wrapper.py +52 -0
  47. fractal_server/app/runner/executors/local/get_local_config.py +2 -3
  48. fractal_server/app/runner/executors/local/runner.py +52 -13
  49. fractal_server/app/runner/executors/slurm_common/_batching.py +2 -3
  50. fractal_server/app/runner/executors/slurm_common/_slurm_config.py +27 -29
  51. fractal_server/app/runner/executors/slurm_common/base_slurm_runner.py +95 -63
  52. fractal_server/app/runner/executors/slurm_common/get_slurm_config.py +2 -3
  53. fractal_server/app/runner/executors/slurm_common/remote.py +47 -92
  54. fractal_server/app/runner/executors/slurm_common/slurm_job_task_models.py +22 -22
  55. fractal_server/app/runner/executors/slurm_ssh/run_subprocess.py +2 -3
  56. fractal_server/app/runner/executors/slurm_ssh/runner.py +4 -6
  57. fractal_server/app/runner/executors/slurm_sudo/_subprocess_run_as_user.py +2 -6
  58. fractal_server/app/runner/executors/slurm_sudo/runner.py +9 -18
  59. fractal_server/app/runner/set_start_and_last_task_index.py +2 -5
  60. fractal_server/app/runner/shutdown.py +5 -11
  61. fractal_server/app/runner/task_files.py +3 -13
  62. fractal_server/app/runner/v2/_local.py +3 -4
  63. fractal_server/app/runner/v2/_slurm_ssh.py +5 -7
  64. fractal_server/app/runner/v2/_slurm_sudo.py +8 -10
  65. fractal_server/app/runner/v2/runner.py +4 -5
  66. fractal_server/app/runner/v2/runner_functions.py +20 -35
  67. fractal_server/app/runner/v2/submit_workflow.py +7 -10
  68. fractal_server/app/runner/v2/task_interface.py +2 -3
  69. fractal_server/app/runner/versions.py +3 -13
  70. fractal_server/app/schemas/user.py +2 -4
  71. fractal_server/app/schemas/user_group.py +1 -2
  72. fractal_server/app/schemas/user_settings.py +19 -21
  73. fractal_server/app/schemas/v2/dataset.py +2 -3
  74. fractal_server/app/schemas/v2/dumps.py +13 -15
  75. fractal_server/app/schemas/v2/history.py +6 -7
  76. fractal_server/app/schemas/v2/job.py +17 -18
  77. fractal_server/app/schemas/v2/manifest.py +12 -13
  78. fractal_server/app/schemas/v2/status_legacy.py +2 -2
  79. fractal_server/app/schemas/v2/task.py +29 -30
  80. fractal_server/app/schemas/v2/task_collection.py +8 -9
  81. fractal_server/app/schemas/v2/task_group.py +22 -23
  82. fractal_server/app/schemas/v2/workflow.py +1 -2
  83. fractal_server/app/schemas/v2/workflowtask.py +27 -29
  84. fractal_server/app/security/__init__.py +10 -12
  85. fractal_server/config.py +32 -42
  86. fractal_server/images/models.py +2 -4
  87. fractal_server/images/tools.py +4 -7
  88. fractal_server/logger.py +3 -5
  89. fractal_server/ssh/_fabric.py +41 -13
  90. fractal_server/string_tools.py +2 -2
  91. fractal_server/syringe.py +1 -1
  92. fractal_server/tasks/v2/local/collect.py +2 -3
  93. fractal_server/tasks/v2/local/deactivate.py +1 -1
  94. fractal_server/tasks/v2/local/reactivate.py +1 -1
  95. fractal_server/tasks/v2/ssh/collect.py +256 -245
  96. fractal_server/tasks/v2/ssh/deactivate.py +210 -187
  97. fractal_server/tasks/v2/ssh/reactivate.py +154 -146
  98. fractal_server/tasks/v2/utils_background.py +2 -3
  99. fractal_server/types/__init__.py +1 -2
  100. fractal_server/types/validators/_filter_validators.py +1 -2
  101. fractal_server/utils.py +4 -5
  102. fractal_server/zip_tools.py +1 -1
  103. {fractal_server-2.14.4a0.dist-info → fractal_server-2.14.6.dist-info}/METADATA +2 -9
  104. {fractal_server-2.14.4a0.dist-info → fractal_server-2.14.6.dist-info}/RECORD +107 -108
  105. fractal_server/app/history/__init__.py +0 -0
  106. fractal_server/app/runner/executors/slurm_common/utils_executors.py +0 -58
  107. fractal_server/app/runner/v2/runner_functions_low_level.py +0 -122
  108. {fractal_server-2.14.4a0.dist-info → fractal_server-2.14.6.dist-info}/LICENSE +0 -0
  109. {fractal_server-2.14.4a0.dist-info → fractal_server-2.14.6.dist-info}/WHEEL +0 -0
  110. {fractal_server-2.14.4a0.dist-info → fractal_server-2.14.6.dist-info}/entry_points.txt +0 -0
@@ -1,59 +1,59 @@
1
- fractal_server/__init__.py,sha256=ogag4AVsfl_E8OtJRekIRakeld3q5BpgpzxnhBgTkfs,25
1
+ fractal_server/__init__.py,sha256=Y4F5A7tpr8d-jbgWoc3vHmF2XHiIkBcCq_YeYImhJyU,23
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
5
- fractal_server/app/db/__init__.py,sha256=wup2wcOkyOh8Vd0Xm76PZn_naxeMqaL4eF8DHHXTGlI,2889
6
- fractal_server/app/history/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
+ fractal_server/app/db/__init__.py,sha256=EFzcf6iKemWlOSRj4vtDT63hAE9HBYWh4abYOdDwzMo,2907
7
6
  fractal_server/app/models/__init__.py,sha256=xJWiGAwpXmCpnFMC4c_HTqoUCzMOXrakoGLUH_uMvdA,415
8
7
  fractal_server/app/models/linkusergroup.py,sha256=3KkkE4QIUAlTrBAZs_tVy0pGvAxUAq6yOEjflct_z2M,678
9
8
  fractal_server/app/models/linkuserproject.py,sha256=hvaxh3Lkiy2uUCwB8gvn8RorCpvxSSdzWdCS_U1GL7g,315
10
- fractal_server/app/models/security.py,sha256=mMb_HiwWY74QZrs9xuyno0CVSmk4GYQWk5FxGixr8SU,3860
11
- fractal_server/app/models/user_settings.py,sha256=Y-ZV-uZAFLZqXxy8c5_Qeh_F7zQuZDWOgLpU6Zs6iqU,1316
9
+ fractal_server/app/models/security.py,sha256=PVZ3nTZO3TYpOTLiMARNy2mHAET49i6nE7bKxn1H-vQ,3836
10
+ fractal_server/app/models/user_settings.py,sha256=RxzRBGLHF_wc5csrTeHGUSV77Md_X0Lf-SnYVOsEWHc,1263
12
11
  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=8BYqjeKUrAUVnt3RYHAqNdtl2GO-qGCRX4jWunLjsnU,2036
17
- fractal_server/app/models/v2/project.py,sha256=rAHoh5KfYwIaW7rTX0_O0jvWmxEvfo1BafvmcXuSSRk,786
18
- fractal_server/app/models/v2/task.py,sha256=8KEROaadgccXRZIP7EriBp2j1FgzYkgiirOi5_fG79M,1494
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
12
+ fractal_server/app/models/v2/accounting.py,sha256=i-2TsjqyuclxFQ21C-TeDoss7ZBTRuXdzIJfVr2UxwE,1081
13
+ fractal_server/app/models/v2/dataset.py,sha256=B_bPnYCSLRFN-vBIOc5nJ31JTruQPxLda9mqpPIJmGk,1209
14
+ fractal_server/app/models/v2/history.py,sha256=fDYZ9GR8OViYrY2gdC8R_zeLL4ePmh47CjXLkDvnUWg,2045
15
+ fractal_server/app/models/v2/job.py,sha256=LfpwAedMVcA_6Ne0Rr4g3tt0asAQkWz3LSPm7IwZhYc,1978
16
+ fractal_server/app/models/v2/project.py,sha256=RmU5BQR4HD6xifRndUhvPBy30wntml-giBRoEysdWXw,755
17
+ fractal_server/app/models/v2/task.py,sha256=P7nsS5mCmVyzr4WtcjoiedesqkWvkHA2cQPsMbQt-7o,1427
18
+ fractal_server/app/models/v2/task_group.py,sha256=shnEBZSNmlYVtF3LSuBkTj4hOI5MqbCko-HgqukCeh4,3468
19
+ fractal_server/app/models/v2/workflow.py,sha256=wuK9SV1TXrlYcieYLYj5fGvV3K3bW7g9jCM1uv9HHjA,1058
20
+ fractal_server/app/models/v2/workflowtask.py,sha256=tph237DXitOnzSv88rk9qgN2VmlI1smWS5fNYHR8jMo,1200
22
21
  fractal_server/app/routes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
23
22
  fractal_server/app/routes/admin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
24
23
  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
24
+ fractal_server/app/routes/admin/v2/accounting.py,sha256=YPWwCWylXrJpV4bq_dJ3t6Kn5uuveTrFx-5w1wzfETU,3594
26
25
  fractal_server/app/routes/admin/v2/impersonate.py,sha256=gc4lshfEPFR6W2asH7aKu6hqE6chzusdhAUVV9p51eU,1131
27
- fractal_server/app/routes/admin/v2/job.py,sha256=Elb3aP9Az6V8u1C0FvhSxt9NDPjBrQeJB0fH1hpXWQs,7445
28
- fractal_server/app/routes/admin/v2/project.py,sha256=luy-yiGX1JYTdPm1hpIdDUUqPm8xHuipLy9k2X6zu74,1223
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
31
- fractal_server/app/routes/admin/v2/task_group_lifecycle.py,sha256=0e0ZJ_k75TVHaT2o8Xk33DPDSgh-eBhZf-y4y7t-Adg,9429
26
+ fractal_server/app/routes/admin/v2/job.py,sha256=EOnW645RaacyNof55O_NV_4ONyb7ihM9ORTPb0v68xY,7373
27
+ fractal_server/app/routes/admin/v2/project.py,sha256=MA_LdoEuSuisSGRO43TapMuJ080y5iaUGSAUgKuuKOg,1188
28
+ fractal_server/app/routes/admin/v2/task.py,sha256=93QIbWZNnqaBhG9R9-RStDX2mpqRNN3G7BIb0KM-jeE,4312
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=aEevPwQhlx0NPcXH6tDtIIUZEJ6a5ZJ-7eHWf7XMXOE,9226
32
31
  fractal_server/app/routes/api/__init__.py,sha256=B8l6PSAhR10iZqHEiyTat-_0tkeKdrCigIE6DJGP5b8,638
33
- fractal_server/app/routes/api/v2/__init__.py,sha256=WE6Znay9R_4_78eSKBMi-s5_lk3oLxWqyAGya4JcYY8,2474
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
37
- fractal_server/app/routes/api/v2/_aux_functions_tasks.py,sha256=uhNSs-jcS7ndIUFKiOC1yrDiViw3uvKEXi9UL04BMks,11642
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=Ly5Q4yzzm3w-roJi_ZBdzvcP_XUC7pwLPHMv8RnhI6Q,7743
41
- fractal_server/app/routes/api/v2/job.py,sha256=MU1sHIKk_89WrD0TD44d4ufzqnywot7On_W71KjyUbQ,6500
42
- fractal_server/app/routes/api/v2/pre_submission_checks.py,sha256=8pG8DbO5Ipk85VaNN9sfVTwXHGAWwk65OrsyRN4iWSo,4800
43
- fractal_server/app/routes/api/v2/project.py,sha256=uAZgATiHcOvbnRX-vv1D3HoaEUvLUd7vzVmGcqOP8ZY,4602
44
- fractal_server/app/routes/api/v2/status_legacy.py,sha256=0QlbBErOT2Idf-LT0EvOiPtTjrm6WmIY0k69NOgjmWk,6355
45
- fractal_server/app/routes/api/v2/submit.py,sha256=hCwwC6bXP7EyhgGyVLv1ClybRH1YytDVoPunOzpsf0s,8822
46
- fractal_server/app/routes/api/v2/task.py,sha256=O7pquZhXIS4lRs5XqHvstiwe8BiCuS-B3ZKJI1g6EJU,6985
47
- fractal_server/app/routes/api/v2/task_collection.py,sha256=IDNF6sjDuU37HIQ0TuQA-TZIuf7nfHAQXUUNmkrlhLM,12706
48
- fractal_server/app/routes/api/v2/task_collection_custom.py,sha256=CRe23ehouz08tedJ3-pe9akqTVyxv7GfqhWTjx5E45Q,6677
49
- fractal_server/app/routes/api/v2/task_group.py,sha256=62zcVTdheXM5V3WmFuqisIqgETjXmZaRpNMcDX5bXS0,7408
50
- fractal_server/app/routes/api/v2/task_group_lifecycle.py,sha256=3o9bCC8ubMwffQPPaxQZy-CjH9IB2RkIReIecI6L2_w,9300
51
- fractal_server/app/routes/api/v2/workflow.py,sha256=sW6Nm7dfzUY354hawyEkpQHy7rUvV2FCV8DPorH-TDU,10270
52
- fractal_server/app/routes/api/v2/workflow_import.py,sha256=INmnhlMEBJp-vHPR0f940DANPmIidts3OfcooeM_aNA,11205
53
- fractal_server/app/routes/api/v2/workflowtask.py,sha256=7_syX2EO7ibF6Xkm7HBPhsUYq6aYnKNeC5iSaafQhG4,11342
32
+ fractal_server/app/routes/api/v2/__init__.py,sha256=3i4Aa-sgXq5Bb21hjONRilAloz0olagem1uIJB_WaRo,2625
33
+ fractal_server/app/routes/api/v2/_aux_functions.py,sha256=P5exwdiNm0ZxtoGw4wxvm_-u8e83gXz8iYEVFuUq_cU,12792
34
+ fractal_server/app/routes/api/v2/_aux_functions_history.py,sha256=Z23xwvBaVEEQ5B-JsWZJpjj4_QqoXqHYONztnbAH6gw,4425
35
+ fractal_server/app/routes/api/v2/_aux_functions_task_lifecycle.py,sha256=GpKfw9yj01LmOAuNMTOreU1PFkCKpjK5oCt7_wp35-A,6741
36
+ fractal_server/app/routes/api/v2/_aux_functions_tasks.py,sha256=MFYnyNPBACSHXTDLXe6cSennnpmlpajN84iivOOMW7Y,11599
37
+ fractal_server/app/routes/api/v2/dataset.py,sha256=6u4MFqJ3YZ0Zq6Xx8CRMrTPKW55ZaR63Uno21DqFr4Q,8889
38
+ fractal_server/app/routes/api/v2/history.py,sha256=QPY4yJCnoaKIYvAdR_W7PE1XYSFyRypDk_WkfR547ME,17711
39
+ fractal_server/app/routes/api/v2/images.py,sha256=tJn0ANv4Tz2KHyb41sPbBRmSCpt632m8HEcgC3u-rHk,7709
40
+ fractal_server/app/routes/api/v2/job.py,sha256=8xRTwh_OCHmK9IfI_zUASa2ozewR0qu0zVBl_a4IvHw,6467
41
+ fractal_server/app/routes/api/v2/pre_submission_checks.py,sha256=MmjvSQ0pNAWEw5BavR16zIZ4h13py302AmToaz8Vvco,4768
42
+ fractal_server/app/routes/api/v2/project.py,sha256=ldMEyjtwGpX2teu85sCNWaubDFlw-En8U1SA7G1VaIw,4567
43
+ fractal_server/app/routes/api/v2/status_legacy.py,sha256=ZckHeBy8y21cyQ_OLY-VmkapzMhd3g9ae-qg-r4-uVo,6317
44
+ fractal_server/app/routes/api/v2/submit.py,sha256=_BDkWtFdo8-p7kZ0Oxaidei04MfuBeaEsWtwJaKZQ_Y,8781
45
+ fractal_server/app/routes/api/v2/task.py,sha256=cUFrCxFOLGlRV7UCbUMHs4Xy4tIc3pqwG8gEqVP5GcU,6939
46
+ fractal_server/app/routes/api/v2/task_collection.py,sha256=FGMhTnU88Umd8nMdriUYPtpTtAHcRBRrZIYyOesFhrU,12577
47
+ fractal_server/app/routes/api/v2/task_collection_custom.py,sha256=EfGpv6W7xDyuYYp6E7XAcXLJiLNAImUHFqMDLgfh-4s,6730
48
+ fractal_server/app/routes/api/v2/task_group.py,sha256=iShTvM9nJQhQLwR8ZpQRucVwYhJ7t00Lbesqh3M6mY4,7361
49
+ fractal_server/app/routes/api/v2/task_group_lifecycle.py,sha256=C2U2V76YbbqDWmErJ98MH9C2C26Lve2p_35FZ1dNmXg,9095
50
+ fractal_server/app/routes/api/v2/task_version_update.py,sha256=shhhAA58zI7CLP363ndP7GOv7-WagtoW8-QacPAlOlM,8743
51
+ fractal_server/app/routes/api/v2/workflow.py,sha256=gwMtpfUY_JiTv5_R_q1I9WNkp6nTqEVtYx8jWNJRxcU,10227
52
+ fractal_server/app/routes/api/v2/workflow_import.py,sha256=Q4CnkSV47F11j6DkNT_U3AhwBK-LSsWWegItfdoOJ6c,11167
53
+ fractal_server/app/routes/api/v2/workflowtask.py,sha256=vVqEoJa3lrMl2CU94WoxFaqO3U0QImPgvrkkUNdqDOU,7462
54
54
  fractal_server/app/routes/auth/__init__.py,sha256=fao6CS0WiAjHDTvBzgBVV_bSXFpEAeDBF6Z6q7rRkPc,1658
55
55
  fractal_server/app/routes/auth/_aux_auth.py,sha256=UZgauY0V6mSqjte_sYI1cBl2h8bcbLaeWzgpl1jdJlk,4883
56
- fractal_server/app/routes/auth/current_user.py,sha256=FUegTahlxT3BdPVCQYir0-ogg2YAaZ1DYuLcE_5NC9Y,5906
56
+ fractal_server/app/routes/auth/current_user.py,sha256=EjkwMxUA0l6FLbDJdertHGnuOoSS-HEysmm6l5FkAlY,5903
57
57
  fractal_server/app/routes/auth/group.py,sha256=P6naOD11Jud2IbdXKpHVjrdRo3IKAqnyXspT8k49k_w,7893
58
58
  fractal_server/app/routes/auth/login.py,sha256=tSu6OBLOieoBtMZB4JkBAdEgH2Y8KqPGSbwy7NIypIo,566
59
59
  fractal_server/app/routes/auth/oauth.py,sha256=KCtJHSzemC4S8AfX9bLLdVhlF1nU4DOyox-sNQtcWew,1978
@@ -64,77 +64,76 @@ fractal_server/app/routes/aux/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5N
64
64
  fractal_server/app/routes/aux/_job.py,sha256=XWyWpOObcV55YyK7uzGRlaslmPDCBZy4hiSZBpoa_bg,616
65
65
  fractal_server/app/routes/aux/_runner.py,sha256=spNudutueHTBJPhm55RlOuYzb31DhyheSjl2rk6dloM,873
66
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
67
+ fractal_server/app/routes/pagination.py,sha256=jjzYG40KecXTc23fDl5-hg_wt3_sVMWowblkLS_mY_E,1176
68
68
  fractal_server/app/runner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
69
69
  fractal_server/app/runner/components.py,sha256=-Ii5l8d_V6f5DFOd-Zsr8VYmOsyqw0Hox9fEFQiuqxY,66
70
- fractal_server/app/runner/exceptions.py,sha256=JC5ufHyeA1hYD_rkZUscI30DD8D903ncag7Z3AArmUY,4215
70
+ fractal_server/app/runner/exceptions.py,sha256=tJxs7WCQ86kjezunFm4o_VAiUAyD70l3GiH6ht0waWA,3958
71
71
  fractal_server/app/runner/executors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
72
- fractal_server/app/runner/executors/base_runner.py,sha256=4xxMpYycIeAOz5niaJj2xtVW_Cq-shCxP1qk4g-KwOM,5137
72
+ fractal_server/app/runner/executors/base_runner.py,sha256=z86UVlxL22MdpCx1RCNcw1i04-cxvG8r9aVS2Asde0A,5448
73
+ fractal_server/app/runner/executors/call_command_wrapper.py,sha256=1BHl-zbXoX2oGUWGAFprVZMmg5QjutPH0-VZJSIC0II,1419
73
74
  fractal_server/app/runner/executors/local/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
74
- fractal_server/app/runner/executors/local/get_local_config.py,sha256=KiakXxOahaLgWvQJ1LVGYGXht6DMGR9x8Xu-TuT9aY4,3628
75
- fractal_server/app/runner/executors/local/runner.py,sha256=AfJ2KDUBdLqkeJTdRzYCkfJh4LiGbdnsHROko_Pk9vA,9587
75
+ fractal_server/app/runner/executors/local/get_local_config.py,sha256=KBYOkcuwpSYl-ZIAwPBxpn59QSyFF8eJ-fLKVIhwwzA,3594
76
+ fractal_server/app/runner/executors/local/runner.py,sha256=25sqaz6p2Fj1AZLF22odUwP892DDTSfCzU6X7wZcR_Q,10716
76
77
  fractal_server/app/runner/executors/slurm_common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
77
- fractal_server/app/runner/executors/slurm_common/_batching.py,sha256=ZY020JZlDS5mfpgpWTChQkyHU7iLE5kx2HVd57_C6XA,8850
78
+ fractal_server/app/runner/executors/slurm_common/_batching.py,sha256=gbHZIxt90GjUwhB9_UInwVqpX-KdxRQMDeXzUagdL3U,8816
78
79
  fractal_server/app/runner/executors/slurm_common/_job_states.py,sha256=nuV-Zba38kDrRESOVB3gaGbrSPZc4q7YGichQaeqTW0,238
79
- fractal_server/app/runner/executors/slurm_common/_slurm_config.py,sha256=_feRRnVVnvQa3AsOQqfULfOgaoj2o6Ze0-fwXwic8p4,15795
80
- fractal_server/app/runner/executors/slurm_common/base_slurm_runner.py,sha256=bqFD9uZfwXqmVXsScrgANp09zvbuc_LSGCDAmBV0wqo,33379
81
- fractal_server/app/runner/executors/slurm_common/get_slurm_config.py,sha256=BW6fDpPyB0VH5leVxvwzkVH3r3hC7DuSyoWmRzHITWg,7305
82
- fractal_server/app/runner/executors/slurm_common/remote.py,sha256=Z7cnAlhYi9Orgeq6UGCl3cnWq9DX_sPrc6X1p40hVFE,5364
83
- fractal_server/app/runner/executors/slurm_common/slurm_job_task_models.py,sha256=RoxHLKOn0_wGjnY0Sv0a9nDSiqxYZHKRoMkT3p9_G1E,3607
84
- fractal_server/app/runner/executors/slurm_common/utils_executors.py,sha256=naPyJI0I3lD-sYHbSXbMFGUBK4h_SggA5V91Z1Ch1Xg,1416
80
+ fractal_server/app/runner/executors/slurm_common/_slurm_config.py,sha256=Zv2l_6X1EfSHGRqcBMj2dbai_kP8hfuMfh-WoIUj0tY,15646
81
+ fractal_server/app/runner/executors/slurm_common/base_slurm_runner.py,sha256=i-vU_Edxv2at9Pwai5T2pfZhl-_LSdKG3LbCcAdEDOA,34625
82
+ fractal_server/app/runner/executors/slurm_common/get_slurm_config.py,sha256=VJNryceLzF5_fx9_lS1nGq85EW8rOQ0KrgtMATcfdQc,7271
83
+ fractal_server/app/runner/executors/slurm_common/remote.py,sha256=xWnI6WktHR_7cxUme72ztIeBb4osnbZNu6J2azWn9K8,3765
84
+ fractal_server/app/runner/executors/slurm_common/slurm_job_task_models.py,sha256=K4SdJOKsUWzDlnkb8Ug_UmTx6nBMsTqn9_oKqwE4XDI,3520
85
85
  fractal_server/app/runner/executors/slurm_ssh/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
86
- fractal_server/app/runner/executors/slurm_ssh/run_subprocess.py,sha256=vlkJ0S37wYOmLG6gKC5-x8mBivYcgK7HTVvaroBnqLk,1030
87
- fractal_server/app/runner/executors/slurm_ssh/runner.py,sha256=IJ6fHidj8Yv0H59NzOgd3ZIgYuCiOmlkB1_Rt8Jt-Qo,7901
86
+ fractal_server/app/runner/executors/slurm_ssh/run_subprocess.py,sha256=SyW6t4egvbiARph2YkFjc88Hj94fCamZVi50L7ph8VM,996
87
+ fractal_server/app/runner/executors/slurm_ssh/runner.py,sha256=uInDpY2kRxgXl7qBTbzYvH8YXBNRndkOfaMJSDsamYk,7789
88
88
  fractal_server/app/runner/executors/slurm_ssh/tar_commands.py,sha256=g173siyv7qtjov5i-CjTVRT8d19ibK8re3RVWbsdHYA,1845
89
89
  fractal_server/app/runner/executors/slurm_sudo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
90
- fractal_server/app/runner/executors/slurm_sudo/_subprocess_run_as_user.py,sha256=BlOz4NElv3v7rUYefyeki33uaJxcSDk6rPuVZx9ocdw,2776
91
- fractal_server/app/runner/executors/slurm_sudo/runner.py,sha256=zT-DH61oPEq4dvo08EMnXv3QMYpwAZ3teY7R3MJ5G_8,6291
90
+ fractal_server/app/runner/executors/slurm_sudo/_subprocess_run_as_user.py,sha256=W-FxnVcHxMGpv4zGgJVttVQoweyGgR4uBxO22QIZkp0,2576
91
+ fractal_server/app/runner/executors/slurm_sudo/runner.py,sha256=9uymtD94XlJLPEowTPfpxYDKDWhBCkgkC9uyTuECgbU,5861
92
92
  fractal_server/app/runner/filenames.py,sha256=lPnxKHtdRizr6FqG3zOdjDPyWA7GoaJGTtiuJV0gA8E,70
93
- fractal_server/app/runner/set_start_and_last_task_index.py,sha256=-q4zVybAj8ek2XlbENKlfOAJ39hT_zoJoZkqzDqiAMY,1254
94
- fractal_server/app/runner/shutdown.py,sha256=9pfSKHDNdIcm0eY-opgRTi7y0HmvfPmYiu9JR6Idark,2082
95
- fractal_server/app/runner/task_files.py,sha256=27xFuPzSJc1Pw912CfSMPOhOIpvNwpkyLCnycqdo9lw,4365
93
+ fractal_server/app/runner/set_start_and_last_task_index.py,sha256=NsioSzfEpGyo9ZKrV5KsbxeI7d5V3tE678Y3IAo5rHM,1218
94
+ fractal_server/app/runner/shutdown.py,sha256=ViSNJyXWU_iWPSDOOMGNh_iQdUFrdPh_jvf8vVKLpAo,1950
95
+ fractal_server/app/runner/task_files.py,sha256=V_7aZhu6-c6Y-0XUe-5cZVDrdnXEJhp8pQoUMtx6ko0,4041
96
96
  fractal_server/app/runner/v2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
97
- fractal_server/app/runner/v2/_local.py,sha256=fJfSpY72BJeO_hGISIK1jE5q7lx3z3fv9_hlhNcJHLM,3072
98
- fractal_server/app/runner/v2/_slurm_ssh.py,sha256=zQYvuTF_pNuBm9t73CSnhxvh1z_fgp2EkXJWclHiI5I,3306
99
- fractal_server/app/runner/v2/_slurm_sudo.py,sha256=KmRBGFw9NDNMuMLp4H72iSj4NA3hm9f6OHJHkrMQmHM,3021
97
+ fractal_server/app/runner/v2/_local.py,sha256=tTJgABK-zAZmmRzoie_MPNTXJx_zBAXiZiiWl1CC2qo,3035
98
+ fractal_server/app/runner/v2/_slurm_ssh.py,sha256=PYRbQ7Z3cNT84nQX2lciLP42m2U1ow39BxO2-594yIo,3228
99
+ fractal_server/app/runner/v2/_slurm_sudo.py,sha256=Dms_N06kTpqHLyHsjUSYcbwXO63j0IYKxOa6duWyb20,2934
100
100
  fractal_server/app/runner/v2/db_tools.py,sha256=du5dKhMMFMErQXbGIgu9JvO_vtMensodyPsyDeqz1yQ,3324
101
101
  fractal_server/app/runner/v2/deduplicate_list.py,sha256=IVTE4abBU1bUprFTkxrTfYKnvkNTanWQ-KWh_etiT08,645
102
102
  fractal_server/app/runner/v2/merge_outputs.py,sha256=D1L4Taieq9i71SPQyNc1kMokgHh-sV_MqF3bv7QMDBc,907
103
- fractal_server/app/runner/v2/runner.py,sha256=2NQhcaGDw6XJ6Mnmiubru0yq2PpgF6fWFIE5hOVnOY0,17701
104
- fractal_server/app/runner/v2/runner_functions.py,sha256=AzsE7VF6NMz_5qc0htQkfow5_2rr-wkx50vFJTndj8I,19250
105
- fractal_server/app/runner/v2/runner_functions_low_level.py,sha256=_h_OOffq3d7V0uHa8Uvs0mj31y1GSZBUXjDDF3WjVjY,3620
106
- fractal_server/app/runner/v2/submit_workflow.py,sha256=QywUGIoHAHnrWgfnyX8W9kVqKY-RvVyNLpzrbsXZOZ4,13075
107
- fractal_server/app/runner/v2/task_interface.py,sha256=vVNSLiUTnImo82dp910KqP4gYLX3aoiLSJsfvdzGems,2561
108
- fractal_server/app/runner/versions.py,sha256=dSaPRWqmFPHjg20kTCHmi_dmGNcCETflDtDLronNanU,852
103
+ fractal_server/app/runner/v2/runner.py,sha256=_34aVmm0jCaXWvixoMrY477p4c2ctwtvITIhIX0VccM,17673
104
+ fractal_server/app/runner/v2/runner_functions.py,sha256=Q9AVIR2NEBfRpfqW1wtQTTQfks_R1TnwRFBRro2fvjQ,18837
105
+ fractal_server/app/runner/v2/submit_workflow.py,sha256=3dYY6MvOJPoG_lxyhGPQlps0SSoJ7twfka_39OTmx-s,12996
106
+ fractal_server/app/runner/v2/task_interface.py,sha256=V2TWBK6tbhycyMrJvFaoJ9IpuKlrLrvmjJbfNMsBBXo,2527
107
+ fractal_server/app/runner/versions.py,sha256=4BW-8Et8RVgILgpFoUJLWkEnZz53pv8hv_2ucG480ns,398
109
108
  fractal_server/app/schemas/__init__.py,sha256=stURAU_t3AOBaH0HSUbV-GKhlPKngnnIMoqWc3orFyI,135
110
- fractal_server/app/schemas/user.py,sha256=0e4fWin0EdStjlbUnNWl7GsvnVfKMJPmVPCt-Mm_9tg,1945
111
- fractal_server/app/schemas/user_group.py,sha256=ejk5qHLbmmDotXT6_--kkoDHVm-T5nS9GDtivJ4LjZU,1456
112
- fractal_server/app/schemas/user_settings.py,sha256=KgfFdYI36_4OPeBrqxj5l-J5xYuRj7QORPtviLqHSM4,1948
109
+ fractal_server/app/schemas/user.py,sha256=t9nbyYjGCSOsxm9K97PDG3-9o27CsaFfhWb_L5nrjqA,1910
110
+ fractal_server/app/schemas/user_group.py,sha256=x3-kqbo0q2wTP7QI0iZ7PU_9Dr957UYrFMKqS7BXLhE,1425
111
+ fractal_server/app/schemas/user_settings.py,sha256=NpdC0Me0fgwwdfJuTSlFLCnLUjiWWzrJlPn_UPLjXnw,1862
113
112
  fractal_server/app/schemas/v2/__init__.py,sha256=wXS4ZEzobWx5dh-XLjMZWpd-JMwWFPODUeUVoMQGRv4,3099
114
113
  fractal_server/app/schemas/v2/accounting.py,sha256=Wylt7uWTiDIFlHJOh4XEtYitk2FjFlmnodDrJDxcr0E,397
115
- fractal_server/app/schemas/v2/dataset.py,sha256=WSG9QQtcoC6ueDHxXH4mIJhFhlePpAo4N3sWJbluthY,1762
116
- fractal_server/app/schemas/v2/dumps.py,sha256=uc9itXekO5IFfR6UucpQ5BX9NZZ8erE4hRR6S6aXlOc,2284
117
- fractal_server/app/schemas/v2/history.py,sha256=Y3rc96DOPGQGZWJtBYVHiBjMQEhFtMq4WGkV4vs1oDE,1675
118
- fractal_server/app/schemas/v2/job.py,sha256=Km7Im3i5OxI8NfBkIxAZFot_4LEBZNfL40Y-sFm5c0k,3363
119
- fractal_server/app/schemas/v2/manifest.py,sha256=wYYNLkcyc93AtcxTg4PhjlKRIKRwGGrTWrCwM8D2Uqw,6880
114
+ fractal_server/app/schemas/v2/dataset.py,sha256=NKCjBwGBC7mPiSlXktZAcleJsvlLY6KfNKw7Wx4Zfqk,1728
115
+ fractal_server/app/schemas/v2/dumps.py,sha256=o4RiWoSmQ8UPoWxgKoeORykGNIdczeNmm-ng-dBRD7k,2216
116
+ fractal_server/app/schemas/v2/history.py,sha256=Kn0OUqUyo4hb2fpM8DxDpG0y5Tipl8bMtGnZB53Zqg4,1637
117
+ fractal_server/app/schemas/v2/job.py,sha256=fPay7dLSr-skKRdVRoZig8rf_sZwUdVdHZaJ4XM8vMI,3288
118
+ fractal_server/app/schemas/v2/manifest.py,sha256=sZhj99iDgjE2MWXeTxnXSb6pFdKwRnFpCVQzcnpoTrI,6821
120
119
  fractal_server/app/schemas/v2/project.py,sha256=l96-3bCfB3knhITaLj1WSyBgbzP_k8CdtvgX_5jO_fU,657
121
- fractal_server/app/schemas/v2/status_legacy.py,sha256=vc6C3Xri8222bb9OmsghMz05CNuEalO-t2s_nKo341s,954
122
- fractal_server/app/schemas/v2/task.py,sha256=5soZ3vp82f4myXi2Jj8Ob7iuGV0zaHbDXoKcARKsf4Y,4336
123
- fractal_server/app/schemas/v2/task_collection.py,sha256=N1G5C8qNd93D5XVtK8gwDzrwdgpePlCIGl8Y7rOBBKk,4196
124
- fractal_server/app/schemas/v2/task_group.py,sha256=FdIB9RSdoMIrfPkiCM60QpUdUjoVCLESeAxxAL-QAIs,3260
125
- fractal_server/app/schemas/v2/workflow.py,sha256=sJWwjmlNN2gRvO8gA0w7wKd_MCucBgEA5iXtu0vPycQ,1806
126
- fractal_server/app/schemas/v2/workflowtask.py,sha256=Q_2wM89QLMX19uthrnOigh-bxLYV5mdP-mUZPTgVJpM,3784
127
- fractal_server/app/security/__init__.py,sha256=e2cveg5hQpieGD3bSPd5GTOMthvJ-HXH3buSb9WVfEU,14096
120
+ fractal_server/app/schemas/v2/status_legacy.py,sha256=eQT1zGxbkzSwd0EqclsOdZ60n1x6J3DB1CZ3m4LYyxc,955
121
+ fractal_server/app/schemas/v2/task.py,sha256=b-eRyVKva6NjhCd0FgnFQXntlRN7gtcJdTA5q5A8yOQ,4221
122
+ fractal_server/app/schemas/v2/task_collection.py,sha256=MyFBr5xltYk8bRSDGEpfHw4eD_LU4287UFSNDP2WPjI,4144
123
+ fractal_server/app/schemas/v2/task_group.py,sha256=R6u6CB2V62gn28Q_K8AbMHs9rWfyYTd-SPt3J4oNTU0,3172
124
+ fractal_server/app/schemas/v2/workflow.py,sha256=JtjxbDO52bmY06WUMACUKpFSdJysO4DBv7wezsvODRQ,1775
125
+ fractal_server/app/schemas/v2/workflowtask.py,sha256=uXAXjj2TrHOOnFm6CODCGA5kJEs0oaJHE9MjuQSqjsU,3647
126
+ fractal_server/app/security/__init__.py,sha256=oJ8RVglpOvWPQY4RokiE2YA72Nqo42dZEjywWTt8xr8,14032
128
127
  fractal_server/app/security/signup_email.py,sha256=Xd6QYxcdmg0PHpDwmUE8XQmPcOj3Xjy5oROcIMhmltM,1472
129
128
  fractal_server/app/user_settings.py,sha256=OP1yiYKtPadxwM51_Q0hdPk3z90TCN4z1BLpQsXyWiU,1316
130
- fractal_server/config.py,sha256=McwfsTwRUzQOfN97ZjTLOHVyUvJKBqKY8xc9vK_eACA,26437
129
+ fractal_server/config.py,sha256=ldI9VzEWmwU75Z7zVku6I-rXGKS3bJDdCifZnwad9-4,25924
131
130
  fractal_server/data_migrations/README.md,sha256=_3AEFvDg9YkybDqCLlFPdDmGJvr6Tw7HRI14aZ3LOIw,398
132
131
  fractal_server/data_migrations/tools.py,sha256=LeMeASwYGtEqd-3wOLle6WARdTGAimoyMmRbbJl-hAM,572
133
132
  fractal_server/gunicorn_fractal.py,sha256=u6U01TLGlXgq1v8QmEpLih3QnsInZD7CqphgJ_GrGzc,1230
134
133
  fractal_server/images/__init__.py,sha256=-_wjoKtSX02P1KjDxDP_EXKvmbONTRmbf7iGVTsyBpM,154
135
- fractal_server/images/models.py,sha256=AOIwwhleUtpuP6f_CNlOJEP517Grra9oWRqcBRk75xM,1280
136
- fractal_server/images/tools.py,sha256=oapI8j9DmMdIxVsDQQMpo_HXCTVElsn8TvmVBP5iX5s,4120
137
- fractal_server/logger.py,sha256=2QxBu5mB6xN3qWqj60nuxdrxcbxwzlx0xL47jKHB5PU,5385
134
+ fractal_server/images/models.py,sha256=6WchcIzLLLwdkLNRfg71Dl4Y-9UFLPyrrzh1lWgjuP0,1245
135
+ fractal_server/images/tools.py,sha256=XKhbdjfWZpTSe1akK1bSQl4gzEQlj9ETDbELkuwayVg,4066
136
+ fractal_server/logger.py,sha256=QIeVn3QpZsiIL2jDdrKotr-MLyDcZYgiPiTluFU46lE,5317
138
137
  fractal_server/main.py,sha256=FD9KzTTsXTQnTW0z3Hu7y0Nj_oAkBeZEInKDXFd4hjE,4561
139
138
  fractal_server/migrations/env.py,sha256=nfyBpMIOT3kny6t-b-tUjyRjZ4k906bb1_wCQ7me1BI,1353
140
139
  fractal_server/migrations/naming_convention.py,sha256=htbKrVdetx3pklowb_9Cdo5RqeF0fJ740DNecY5de_M,265
@@ -176,43 +175,43 @@ fractal_server/migrations/versions/f384e1c0cf5d_drop_task_default_args_columns.p
176
175
  fractal_server/migrations/versions/fbce16ff4e47_new_history_items.py,sha256=TDWCaIoM0Q4SpRWmR9zr_rdp3lJXhCfBPTMhtrP5xYE,3950
177
176
  fractal_server/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
178
177
  fractal_server/ssh/__init__.py,sha256=sVUmzxf7_DuXG1xoLQ1_00fo5NPhi2LJipSmU5EAkPs,124
179
- fractal_server/ssh/_fabric.py,sha256=jF7Nny0r3_PL1WjM1Zlw1I73Uqerx-mTaDWQlOaOpa0,23324
180
- fractal_server/string_tools.py,sha256=niViRrrZAOo0y6pEFI9L_eUYS1PoOiQZUBtngiLc2_k,1877
181
- fractal_server/syringe.py,sha256=3qSMW3YaMKKnLdgnooAINOPxnCOxP7y2jeAQYB21Gdo,2786
178
+ fractal_server/ssh/_fabric.py,sha256=RDvAi6x-v4aPqSGpN4-Ee-ZQONGa-EIjU52PXjDAI-o,23991
179
+ fractal_server/string_tools.py,sha256=qLB5u6-4QxXPiZrUeWn_cEo47axj4OXFzDd47kNTIWw,1847
180
+ fractal_server/syringe.py,sha256=3YJeIALH-wibuJ9R5VMNYUWh7x1-MkWT0SqGcWG5MY8,2795
182
181
  fractal_server/tasks/__init__.py,sha256=kadmVUoIghl8s190_Tt-8f-WBqMi8u8oU4Pvw39NHE8,23
183
182
  fractal_server/tasks/utils.py,sha256=V7dj8o2AnoHhGSTYlqJHcRFhCIpmOrMOUhtiE_DvRVA,291
184
183
  fractal_server/tasks/v2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
185
184
  fractal_server/tasks/v2/local/__init__.py,sha256=9RVItnS7OyLsJOuJjWMCicaky4ASUPQEYD4SzDs0hOE,141
186
185
  fractal_server/tasks/v2/local/_utils.py,sha256=EvhmVwYjqaNyDCUMEsTWYOUXLgEwR1xr6bu32apCEI8,2491
187
- fractal_server/tasks/v2/local/collect.py,sha256=w1s96nqyGRSY_zhII3HP8JaBdJmzxPdqTksUO-ZH9lo,12210
188
- fractal_server/tasks/v2/local/deactivate.py,sha256=o3lVnW35bjaRyRkjN6cpqe0WyE54sVydi-I5-tmLFNI,10044
189
- fractal_server/tasks/v2/local/reactivate.py,sha256=hMgRWEY30qi-0lCMdC2GmyGLeAXOZYJCzNgamiucjEM,6197
186
+ fractal_server/tasks/v2/local/collect.py,sha256=VsLXJ1uf0gnN6klZq07vKxpJilPWmxiPXnu1JOwKWNQ,12173
187
+ fractal_server/tasks/v2/local/deactivate.py,sha256=94s_RDND8aR5Y8RxFrRx61rZBMPGqOmFnBFLVKK1HVY,10038
188
+ fractal_server/tasks/v2/local/reactivate.py,sha256=eBgFgq5xVKNr4DIDX7QU8xXerhwMrPaHDJ1wTth7aQc,6191
190
189
  fractal_server/tasks/v2/ssh/__init__.py,sha256=aSQbVi6Ummt9QzcSLWNmSqYjfdxrn9ROmqgH6bDpI7k,135
191
190
  fractal_server/tasks/v2/ssh/_utils.py,sha256=LjaEYVUJDChilu3YuhxuGWYRNnVJ_zqNE9SDHdRTIHY,2824
192
- fractal_server/tasks/v2/ssh/collect.py,sha256=I-a2st4jo8mzc0u0EScs54Ccr3tNm_as7RZmn1FTGiE,13568
193
- fractal_server/tasks/v2/ssh/deactivate.py,sha256=meiAVd4mvDR-ikclR0KXkSoJp3PbBYci-eZlOJbcI1c,11406
194
- fractal_server/tasks/v2/ssh/reactivate.py,sha256=T6YPbMwaWV7RUD33Dmpn3K9173BGuOv0s7Vpr_YOCH4,7976
191
+ fractal_server/tasks/v2/ssh/collect.py,sha256=Dxp1vd6gt3FZUqp9nVeqJR7w8l5i8F8CwvepYt4FRkg,14772
192
+ fractal_server/tasks/v2/ssh/deactivate.py,sha256=eqMg1dOmKcQ2aKnlqDHmEQBwD22_ilUXMih9-i3IKaY,12876
193
+ fractal_server/tasks/v2/ssh/reactivate.py,sha256=29DPb7_103tHeIkniJAGsWiC6f-6Cy92ZBY6APFipOs,8744
195
194
  fractal_server/tasks/v2/templates/1_create_venv.sh,sha256=PK0jdHKtQpda1zULebBaVPORt4t6V17wa4N1ohcj5ac,548
196
195
  fractal_server/tasks/v2/templates/2_pip_install.sh,sha256=Md2LPt3BJ7IfN0USF2uivl4rP8OwbzJOUepGAr_Cicg,1836
197
196
  fractal_server/tasks/v2/templates/3_pip_freeze.sh,sha256=JldREScEBI4cD_qjfX4UK7V4aI-FnX9ZvVNxgpSOBFc,168
198
197
  fractal_server/tasks/v2/templates/4_pip_show.sh,sha256=qm1vPy6AkKhWDjCJGXS8LqCLYO3KsAyRK325ZsFcF6U,1747
199
198
  fractal_server/tasks/v2/templates/5_get_venv_size_and_file_number.sh,sha256=q-6ZUvA6w6FDVEoSd9O63LaJ9tKZc7qAFH72SGPrd_k,284
200
199
  fractal_server/tasks/v2/templates/6_pip_install_from_freeze.sh,sha256=A2y8RngEjAcRhG-_owA6P7tAdrS_AszFuGXnaeMV8u0,1122
201
- fractal_server/tasks/v2/utils_background.py,sha256=FKJvtz1YuFLXV1TuoSeebWA0uDWsQIUxpFqWtKSJigc,3423
200
+ fractal_server/tasks/v2/utils_background.py,sha256=9aDRkqaBWhfPG2HmjL8CIgoLgXmZUY8C0dz9JLCl5NU,3387
202
201
  fractal_server/tasks/v2/utils_database.py,sha256=yi7793Uue32O59OBVUgomO42oUrVKdSKXoShBUNDdK0,1807
203
202
  fractal_server/tasks/v2/utils_package_names.py,sha256=RDg__xrvQs4ieeVzmVdMcEh95vGQYrv9Hfal-5EDBM8,2393
204
203
  fractal_server/tasks/v2/utils_python_interpreter.py,sha256=5_wrlrTqXyo1YuLZvAW9hrSoh5MyLOzdPVUlUwM7uDQ,955
205
204
  fractal_server/tasks/v2/utils_templates.py,sha256=Kc_nSzdlV6KIsO0CQSPs1w70zLyENPqJeTQEFiz4bOg,3124
206
- fractal_server/types/__init__.py,sha256=BK12yh5d-8pecRWQOdey7l9QqXTCD21Eff62ypRoTjw,2057
205
+ fractal_server/types/__init__.py,sha256=aA_8J1xXzuiLqpwO_Qf18-qzaRcYkHzevhH_T-diXWM,2026
207
206
  fractal_server/types/validators/__init__.py,sha256=5uj6KJ9MelFZgyoq3MzXLhgWCl0yiriS7XKmb0gathg,392
208
207
  fractal_server/types/validators/_common_validators.py,sha256=MpxyaP2kwgbyCTOaVRjYnJ74Lfi0f2X0q3rjX9w3vTk,1170
209
- fractal_server/types/validators/_filter_validators.py,sha256=El8NuMqEy7CPYpWcN-n40DmMOA8cZtpFkUYL0uSjO5w,859
208
+ fractal_server/types/validators/_filter_validators.py,sha256=_s2dG9aCkiNWyX3ZLLuYlAgNKlQVm-ORdF-HpnyhX10,830
210
209
  fractal_server/types/validators/_workflow_task_arguments_validators.py,sha256=HL7NgV8d56XbcD6gG5PVFUPMHjDm5Q-d7cXhVLdFAGU,387
211
210
  fractal_server/urls.py,sha256=QjIKAC1a46bCdiPMu3AlpgFbcv6a4l3ABcd5xz190Og,471
212
- fractal_server/utils.py,sha256=PMwrxWFxRTQRl1b9h-NRIbFGPKqpH_hXnkAT3NfZdpY,3571
213
- fractal_server/zip_tools.py,sha256=GjDgo_sf6V_DDg6wWeBlZu5zypIxycn_l257p_YVKGc,4876
214
- fractal_server-2.14.4a0.dist-info/LICENSE,sha256=QKAharUuhxL58kSoLizKJeZE3mTCBnX6ucmz8W0lxlk,1576
215
- fractal_server-2.14.4a0.dist-info/METADATA,sha256=Hl3iQzK2CtzTsqeTm4h_I4DZOX318S_WRsFjGmDEwhQ,4562
216
- fractal_server-2.14.4a0.dist-info/WHEEL,sha256=7dDg4QLnNKTvwIDR9Ac8jJaAmBC_owJrckbC0jjThyA,88
217
- fractal_server-2.14.4a0.dist-info/entry_points.txt,sha256=8tV2kynvFkjnhbtDnxAqImL6HMVKsopgGfew0DOp5UY,58
218
- fractal_server-2.14.4a0.dist-info/RECORD,,
211
+ fractal_server/utils.py,sha256=FCY6HUsRnnbsWkT2kwQ2izijiHuCrCD3Kh50G0QudxE,3531
212
+ fractal_server/zip_tools.py,sha256=tqz_8f-vQ9OBRW-4OQfO6xxY-YInHTyHmZxU7U4PqZo,4885
213
+ fractal_server-2.14.6.dist-info/LICENSE,sha256=QKAharUuhxL58kSoLizKJeZE3mTCBnX6ucmz8W0lxlk,1576
214
+ fractal_server-2.14.6.dist-info/METADATA,sha256=dtKBiEFNhzkhtKXjX9rpnv2AJz_u41tiF6sBGP2fvEo,4243
215
+ fractal_server-2.14.6.dist-info/WHEEL,sha256=7dDg4QLnNKTvwIDR9Ac8jJaAmBC_owJrckbC0jjThyA,88
216
+ fractal_server-2.14.6.dist-info/entry_points.txt,sha256=8tV2kynvFkjnhbtDnxAqImL6HMVKsopgGfew0DOp5UY,58
217
+ fractal_server-2.14.6.dist-info/RECORD,,
File without changes
@@ -1,58 +0,0 @@
1
- from pathlib import Path
2
- from typing import Literal
3
- from typing import Optional
4
-
5
-
6
- def get_pickle_file_path(
7
- *,
8
- arg: str,
9
- workflow_dir: Path,
10
- subfolder_name: str,
11
- in_or_out: Literal["in", "out"],
12
- prefix: str,
13
- ) -> Path:
14
- if in_or_out in ["in", "out"]:
15
- output = (
16
- workflow_dir
17
- / subfolder_name
18
- / f"{prefix}_{in_or_out}_{arg}.pickle"
19
- )
20
- return output
21
- else:
22
- raise ValueError(
23
- f"Missing or unexpected value in_or_out argument, {in_or_out=}"
24
- )
25
-
26
-
27
- def get_slurm_script_file_path(
28
- *, workflow_dir: Path, subfolder_name: str, prefix: Optional[str] = None
29
- ) -> Path:
30
- prefix = prefix or "_temp"
31
- return workflow_dir / subfolder_name / f"{prefix}_slurm_submit.sbatch"
32
-
33
-
34
- def get_slurm_file_path(
35
- *,
36
- workflow_dir: Path,
37
- subfolder_name: str,
38
- arg: str = "%j",
39
- out_or_err: Literal["out", "err"],
40
- prefix: str,
41
- ) -> Path:
42
- if out_or_err == "out":
43
- return (
44
- workflow_dir
45
- / subfolder_name
46
- / f"{prefix}_slurm_{arg}.{out_or_err}"
47
- )
48
- elif out_or_err == "err":
49
- return (
50
- workflow_dir
51
- / subfolder_name
52
- / f"{prefix}_slurm_{arg}.{out_or_err}"
53
- )
54
- else:
55
- raise ValueError(
56
- "Missing or unexpected value out_or_err argument, "
57
- f"{out_or_err=}"
58
- )
@@ -1,122 +0,0 @@
1
- import json
2
- import logging
3
- import shutil
4
- import subprocess # nosec
5
- from shlex import split
6
- from typing import Any
7
-
8
- from fractal_server.app.runner.exceptions import JobExecutionError
9
- from fractal_server.app.runner.exceptions import TaskExecutionError
10
- from fractal_server.string_tools import validate_cmd
11
-
12
-
13
- def _call_command_wrapper(cmd: str, log_path: str) -> None:
14
- """
15
- Call a command and write its stdout and stderr to files
16
-
17
- Raises:
18
- TaskExecutionError: If the `subprocess.run` call returns a positive
19
- exit code
20
- JobExecutionError: If the `subprocess.run` call returns a negative
21
- exit code (e.g. due to the subprocess receiving a
22
- TERM or KILL signal)
23
- """
24
- try:
25
- validate_cmd(cmd)
26
- except ValueError as e:
27
- raise TaskExecutionError(f"Invalid command. Original error: {str(e)}")
28
-
29
- # Verify that task command is executable
30
- if shutil.which(split(cmd)[0]) is None:
31
- msg = (
32
- f'Command "{split(cmd)[0]}" is not valid. '
33
- "Hint: make sure that it is executable."
34
- )
35
- raise TaskExecutionError(msg)
36
-
37
- with open(log_path, "w") as fp_log:
38
- try:
39
- result = subprocess.run( # nosec
40
- split(cmd),
41
- stderr=fp_log,
42
- stdout=fp_log,
43
- )
44
- except Exception as e:
45
- raise e
46
-
47
- if result.returncode > 0:
48
- with open(log_path, "r") as fp_stderr:
49
- err = fp_stderr.read()
50
- raise TaskExecutionError(err)
51
- elif result.returncode < 0:
52
- raise JobExecutionError(
53
- info=f"Task failed with returncode={result.returncode}"
54
- )
55
-
56
-
57
- def run_single_task(
58
- # COMMON to all parallel tasks
59
- command: str,
60
- workflow_task_order: int,
61
- workflow_task_id: int,
62
- task_name: str,
63
- # SPECIAL for each parallel task
64
- parameters: dict[str, Any],
65
- remote_files: dict[str, str],
66
- ) -> dict[str, Any]:
67
- """
68
- Runs within an executor (AKA on the SLURM cluster).
69
- """
70
-
71
- try:
72
- args_file_remote = remote_files["args_file_remote"]
73
- metadiff_file_remote = remote_files["metadiff_file_remote"]
74
- log_file_remote = remote_files["log_file_remote"]
75
- except KeyError:
76
- raise TaskExecutionError(
77
- f"Invalid {remote_files=}",
78
- workflow_task_order=workflow_task_order,
79
- workflow_task_id=workflow_task_id,
80
- task_name=task_name,
81
- )
82
-
83
- logger = logging.getLogger(None)
84
- logger.debug(f"Now start running {command=}")
85
-
86
- # Write arguments to args.json file
87
- # NOTE: see issue 2346
88
- with open(args_file_remote, "w") as f:
89
- json.dump(parameters, f, indent=2)
90
-
91
- # Assemble full command
92
- # NOTE: this could be assembled backend-side
93
- full_command = (
94
- f"{command} "
95
- f"--args-json {args_file_remote} "
96
- f"--out-json {metadiff_file_remote}"
97
- )
98
-
99
- try:
100
- _call_command_wrapper(
101
- full_command,
102
- log_path=log_file_remote,
103
- )
104
- except TaskExecutionError as e:
105
- e.workflow_task_order = workflow_task_order
106
- e.workflow_task_id = workflow_task_id
107
- e.task_name = task_name
108
- raise e
109
-
110
- try:
111
- with open(metadiff_file_remote, "r") as f:
112
- out_meta = json.load(f)
113
- except FileNotFoundError as e:
114
- logger.debug(
115
- "Task did not produce output metadata. "
116
- f"Original FileNotFoundError: {str(e)}"
117
- )
118
- out_meta = None
119
-
120
- if out_meta == {}:
121
- return None
122
- return out_meta