fractal-server 2.7.0a10__tar.gz → 2.7.0a11__tar.gz

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 (230) hide show
  1. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/PKG-INFO +1 -1
  2. fractal_server-2.7.0a11/fractal_server/__init__.py +1 -0
  3. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/routes/api/v2/workflow_import.py +4 -1
  4. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/executors/slurm/ssh/executor.py +72 -51
  5. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/pyproject.toml +2 -2
  6. fractal_server-2.7.0a10/fractal_server/__init__.py +0 -1
  7. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/LICENSE +0 -0
  8. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/README.md +0 -0
  9. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/__main__.py +0 -0
  10. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/alembic.ini +0 -0
  11. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/__init__.py +0 -0
  12. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/db/__init__.py +0 -0
  13. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/models/__init__.py +0 -0
  14. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/models/linkusergroup.py +0 -0
  15. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/models/linkuserproject.py +0 -0
  16. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/models/security.py +0 -0
  17. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/models/user_settings.py +0 -0
  18. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/models/v1/__init__.py +0 -0
  19. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/models/v1/dataset.py +0 -0
  20. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/models/v1/job.py +0 -0
  21. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/models/v1/project.py +0 -0
  22. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/models/v1/state.py +0 -0
  23. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/models/v1/task.py +0 -0
  24. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/models/v1/workflow.py +0 -0
  25. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/models/v2/__init__.py +0 -0
  26. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/models/v2/collection_state.py +0 -0
  27. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/models/v2/dataset.py +0 -0
  28. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/models/v2/job.py +0 -0
  29. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/models/v2/project.py +0 -0
  30. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/models/v2/task.py +0 -0
  31. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/models/v2/workflow.py +0 -0
  32. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/models/v2/workflowtask.py +0 -0
  33. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/routes/__init__.py +0 -0
  34. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/routes/admin/__init__.py +0 -0
  35. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/routes/admin/v1.py +0 -0
  36. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/routes/admin/v2/__init__.py +0 -0
  37. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/routes/admin/v2/job.py +0 -0
  38. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/routes/admin/v2/project.py +0 -0
  39. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/routes/admin/v2/task.py +0 -0
  40. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/routes/admin/v2/task_group.py +0 -0
  41. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/routes/api/__init__.py +0 -0
  42. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/routes/api/v1/__init__.py +0 -0
  43. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/routes/api/v1/_aux_functions.py +0 -0
  44. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/routes/api/v1/dataset.py +0 -0
  45. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/routes/api/v1/job.py +0 -0
  46. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/routes/api/v1/project.py +0 -0
  47. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/routes/api/v1/task.py +0 -0
  48. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/routes/api/v1/task_collection.py +0 -0
  49. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/routes/api/v1/workflow.py +0 -0
  50. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/routes/api/v1/workflowtask.py +0 -0
  51. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/routes/api/v2/__init__.py +0 -0
  52. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/routes/api/v2/_aux_functions.py +0 -0
  53. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/routes/api/v2/_aux_functions_tasks.py +0 -0
  54. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/routes/api/v2/dataset.py +0 -0
  55. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/routes/api/v2/images.py +0 -0
  56. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/routes/api/v2/job.py +0 -0
  57. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/routes/api/v2/project.py +0 -0
  58. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/routes/api/v2/status.py +0 -0
  59. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/routes/api/v2/submit.py +0 -0
  60. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/routes/api/v2/task.py +0 -0
  61. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/routes/api/v2/task_collection.py +0 -0
  62. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/routes/api/v2/task_collection_custom.py +0 -0
  63. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/routes/api/v2/task_group.py +0 -0
  64. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/routes/api/v2/workflow.py +0 -0
  65. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/routes/api/v2/workflowtask.py +0 -0
  66. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/routes/auth/__init__.py +0 -0
  67. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/routes/auth/_aux_auth.py +0 -0
  68. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/routes/auth/current_user.py +0 -0
  69. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/routes/auth/group.py +0 -0
  70. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/routes/auth/login.py +0 -0
  71. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/routes/auth/oauth.py +0 -0
  72. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/routes/auth/register.py +0 -0
  73. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/routes/auth/router.py +0 -0
  74. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/routes/auth/users.py +0 -0
  75. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/routes/aux/__init__.py +0 -0
  76. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/routes/aux/_job.py +0 -0
  77. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/routes/aux/_runner.py +0 -0
  78. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/routes/aux/validate_user_settings.py +0 -0
  79. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/.gitignore +0 -0
  80. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/__init__.py +0 -0
  81. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/async_wrap.py +0 -0
  82. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/components.py +0 -0
  83. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/compress_folder.py +0 -0
  84. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/exceptions.py +0 -0
  85. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/executors/__init__.py +0 -0
  86. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/executors/slurm/__init__.py +0 -0
  87. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/executors/slurm/_batching.py +0 -0
  88. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/executors/slurm/_slurm_config.py +0 -0
  89. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/executors/slurm/remote.py +0 -0
  90. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/executors/slurm/ssh/__init__.py +0 -0
  91. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/executors/slurm/ssh/_executor_wait_thread.py +0 -0
  92. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/executors/slurm/ssh/_slurm_job.py +0 -0
  93. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/executors/slurm/sudo/__init__.py +0 -0
  94. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/executors/slurm/sudo/_check_jobs_status.py +0 -0
  95. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/executors/slurm/sudo/_executor_wait_thread.py +0 -0
  96. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/executors/slurm/sudo/_subprocess_run_as_user.py +0 -0
  97. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/executors/slurm/sudo/executor.py +0 -0
  98. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/extract_archive.py +0 -0
  99. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/filenames.py +0 -0
  100. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/run_subprocess.py +0 -0
  101. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/set_start_and_last_task_index.py +0 -0
  102. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/shutdown.py +0 -0
  103. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/task_files.py +0 -0
  104. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/v1/__init__.py +0 -0
  105. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/v1/_common.py +0 -0
  106. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/v1/_local/__init__.py +0 -0
  107. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/v1/_local/_local_config.py +0 -0
  108. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/v1/_local/_submit_setup.py +0 -0
  109. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/v1/_local/executor.py +0 -0
  110. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/v1/_slurm/__init__.py +0 -0
  111. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/v1/_slurm/_submit_setup.py +0 -0
  112. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/v1/_slurm/get_slurm_config.py +0 -0
  113. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/v1/common.py +0 -0
  114. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/v1/handle_failed_job.py +0 -0
  115. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/v2/__init__.py +0 -0
  116. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/v2/_local/__init__.py +0 -0
  117. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/v2/_local/_local_config.py +0 -0
  118. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/v2/_local/_submit_setup.py +0 -0
  119. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/v2/_local/executor.py +0 -0
  120. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/v2/_local_experimental/__init__.py +0 -0
  121. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/v2/_local_experimental/_local_config.py +0 -0
  122. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/v2/_local_experimental/_submit_setup.py +0 -0
  123. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/v2/_local_experimental/executor.py +0 -0
  124. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/v2/_slurm_common/__init__.py +0 -0
  125. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/v2/_slurm_common/get_slurm_config.py +0 -0
  126. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/v2/_slurm_ssh/__init__.py +0 -0
  127. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/v2/_slurm_ssh/_submit_setup.py +0 -0
  128. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/v2/_slurm_sudo/__init__.py +0 -0
  129. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/v2/_slurm_sudo/_submit_setup.py +0 -0
  130. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/v2/deduplicate_list.py +0 -0
  131. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/v2/handle_failed_job.py +0 -0
  132. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/v2/merge_outputs.py +0 -0
  133. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/v2/runner.py +0 -0
  134. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/v2/runner_functions.py +0 -0
  135. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/v2/runner_functions_low_level.py +0 -0
  136. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/v2/task_interface.py +0 -0
  137. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/runner/versions.py +0 -0
  138. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/schemas/__init__.py +0 -0
  139. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/schemas/_validators.py +0 -0
  140. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/schemas/user.py +0 -0
  141. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/schemas/user_group.py +0 -0
  142. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/schemas/user_settings.py +0 -0
  143. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/schemas/v1/__init__.py +0 -0
  144. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/schemas/v1/applyworkflow.py +0 -0
  145. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/schemas/v1/dataset.py +0 -0
  146. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/schemas/v1/dumps.py +0 -0
  147. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/schemas/v1/manifest.py +0 -0
  148. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/schemas/v1/project.py +0 -0
  149. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/schemas/v1/state.py +0 -0
  150. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/schemas/v1/task.py +0 -0
  151. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/schemas/v1/task_collection.py +0 -0
  152. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/schemas/v1/workflow.py +0 -0
  153. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/schemas/v2/__init__.py +0 -0
  154. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/schemas/v2/dataset.py +0 -0
  155. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/schemas/v2/dumps.py +0 -0
  156. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/schemas/v2/job.py +0 -0
  157. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/schemas/v2/manifest.py +0 -0
  158. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/schemas/v2/project.py +0 -0
  159. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/schemas/v2/status.py +0 -0
  160. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/schemas/v2/task.py +0 -0
  161. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/schemas/v2/task_collection.py +0 -0
  162. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/schemas/v2/task_group.py +0 -0
  163. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/schemas/v2/workflow.py +0 -0
  164. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/schemas/v2/workflowtask.py +0 -0
  165. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/security/__init__.py +0 -0
  166. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/app/user_settings.py +0 -0
  167. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/config.py +0 -0
  168. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/data_migrations/2_7_0.py +0 -0
  169. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/data_migrations/README.md +0 -0
  170. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/data_migrations/tools.py +0 -0
  171. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/gunicorn_fractal.py +0 -0
  172. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/images/__init__.py +0 -0
  173. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/images/models.py +0 -0
  174. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/images/tools.py +0 -0
  175. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/logger.py +0 -0
  176. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/main.py +0 -0
  177. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/migrations/README +0 -0
  178. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/migrations/env.py +0 -0
  179. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/migrations/naming_convention.py +0 -0
  180. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/migrations/script.py.mako +0 -0
  181. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/migrations/versions/034a469ec2eb_task_groups.py +0 -0
  182. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/migrations/versions/091b01f51f88_add_usergroup_and_linkusergroup_table.py +0 -0
  183. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/migrations/versions/4c308bcaea2b_add_task_args_schema_and_task_args_.py +0 -0
  184. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/migrations/versions/4cedeb448a53_workflowtask_foreign_keys_not_nullables.py +0 -0
  185. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/migrations/versions/501961cfcd85_remove_link_between_v1_and_v2_tasks_.py +0 -0
  186. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/migrations/versions/50a13d6138fd_initial_schema.py +0 -0
  187. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/migrations/versions/5bf02391cfef_v2.py +0 -0
  188. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/migrations/versions/70e77f1c38b0_add_applyworkflow_first_task_index_and_.py +0 -0
  189. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/migrations/versions/71eefd1dd202_add_slurm_accounts.py +0 -0
  190. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/migrations/versions/84bf0fffde30_add_dumps_to_applyworkflow.py +0 -0
  191. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/migrations/versions/8f79bd162e35_add_docs_info_and_docs_link_to_task_.py +0 -0
  192. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/migrations/versions/94a47ea2d3ff_remove_cache_dir_slurm_user_and_slurm_.py +0 -0
  193. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/migrations/versions/97f444d47249_add_applyworkflow_project_dump.py +0 -0
  194. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/migrations/versions/99ea79d9e5d2_add_dataset_history.py +0 -0
  195. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/migrations/versions/9c5ae74c9b98_add_user_settings_table.py +0 -0
  196. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/migrations/versions/9fd26a2b0de4_add_workflow_timestamp_created.py +0 -0
  197. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/migrations/versions/a7f4d6137b53_add_workflow_dump_to_applyworkflow.py +0 -0
  198. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/migrations/versions/d4fe3708d309_make_applyworkflow_workflow_dump_non_.py +0 -0
  199. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/migrations/versions/da2cb2ac4255_user_group_viewer_paths.py +0 -0
  200. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/migrations/versions/e75cac726012_make_applyworkflow_start_timestamp_not_.py +0 -0
  201. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/migrations/versions/efa89c30e0a4_add_project_timestamp_created.py +0 -0
  202. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/migrations/versions/f384e1c0cf5d_drop_task_default_args_columns.py +0 -0
  203. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/py.typed +0 -0
  204. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/ssh/__init__.py +0 -0
  205. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/ssh/_fabric.py +0 -0
  206. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/string_tools.py +0 -0
  207. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/syringe.py +0 -0
  208. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/tasks/__init__.py +0 -0
  209. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/tasks/utils.py +0 -0
  210. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/tasks/v1/_TaskCollectPip.py +0 -0
  211. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/tasks/v1/__init__.py +0 -0
  212. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/tasks/v1/background_operations.py +0 -0
  213. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/tasks/v1/endpoint_operations.py +0 -0
  214. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/tasks/v1/get_collection_data.py +0 -0
  215. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/tasks/v1/utils.py +0 -0
  216. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/tasks/v2/__init__.py +0 -0
  217. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/tasks/v2/_venv_pip.py +0 -0
  218. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/tasks/v2/background_operations.py +0 -0
  219. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/tasks/v2/background_operations_ssh.py +0 -0
  220. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/tasks/v2/database_operations.py +0 -0
  221. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/tasks/v2/endpoint_operations.py +0 -0
  222. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/tasks/v2/templates/_1_create_venv.sh +0 -0
  223. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/tasks/v2/templates/_2_upgrade_pip.sh +0 -0
  224. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/tasks/v2/templates/_3_pip_install.sh +0 -0
  225. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/tasks/v2/templates/_4_pip_freeze.sh +0 -0
  226. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/tasks/v2/templates/_5_pip_show.sh +0 -0
  227. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/tasks/v2/utils.py +0 -0
  228. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/urls.py +0 -0
  229. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/utils.py +0 -0
  230. {fractal_server-2.7.0a10 → fractal_server-2.7.0a11}/fractal_server/zip_tools.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: fractal-server
3
- Version: 2.7.0a10
3
+ Version: 2.7.0a11
4
4
  Summary: Server component of the Fractal analytics platform
5
5
  Home-page: https://github.com/fractal-analytics-platform/fractal-server
6
6
  License: BSD-3-Clause
@@ -0,0 +1 @@
1
+ __VERSION__ = "2.7.0a11"
@@ -241,7 +241,10 @@ async def _get_task_by_taskimport(
241
241
  "Found many task groups, after filtering by version."
242
242
  )
243
243
  final_task_group = await _disambiguate_task_groups(
244
- matching_task_groups, user_id, db, default_group_id
244
+ matching_task_groups=matching_task_groups,
245
+ user_id=user_id,
246
+ db=db,
247
+ default_group_id=default_group_id,
245
248
  )
246
249
  if final_task_group is None:
247
250
  logger.info(
@@ -1055,55 +1055,59 @@ class FractalSlurmSSHExecutor(SlurmExecutor):
1055
1055
  Arguments:
1056
1056
  jobid: ID of the SLURM job
1057
1057
  """
1058
-
1059
- # Loop over all job_ids, and fetch future and job objects
1060
- futures: list[Future] = []
1061
- jobs: list[SlurmJob] = []
1062
- with self.jobs_lock:
1063
- for job_id in job_ids:
1064
- future, job = self.jobs.pop(job_id)
1065
- futures.append(future)
1066
- jobs.append(job)
1067
- if not self.jobs:
1068
- self.jobs_empty_cond.notify_all()
1069
-
1070
- # Fetch subfolder from remote host
1058
+ # Handle all uncaught exceptions in this broad try/except block
1071
1059
  try:
1072
- self._get_subfolder_sftp(jobs=jobs)
1073
- except NoValidConnectionsError as e:
1074
- logger.error("NoValidConnectionError")
1075
- logger.error(f"{str(e)=}")
1076
- logger.error(f"{e.errors=}")
1077
- for err in e.errors:
1078
- logger.error(f"{str(err)}")
1079
-
1080
- raise e
1081
-
1082
- # First round of checking whether all output files exist
1083
- missing_out_paths = []
1084
- for job in jobs:
1085
- for ind_out_path, out_path in enumerate(
1086
- job.output_pickle_files_local
1087
- ):
1088
- if not out_path.exists():
1089
- missing_out_paths.append(out_path)
1090
- num_missing = len(missing_out_paths)
1091
- if num_missing > 0:
1092
- # Output pickle files may be missing e.g. because of some slow
1093
- # filesystem operation; wait some time before re-trying
1094
- settings = Inject(get_settings)
1095
- sleep_time = settings.FRACTAL_SLURM_ERROR_HANDLING_INTERVAL
1096
1060
  logger.info(
1097
- f"{num_missing} output pickle files are missing; "
1098
- f"sleep {sleep_time} seconds."
1061
+ f"[FractalSlurmSSHExecutor._completion] START, for {job_ids=}."
1099
1062
  )
1100
- for missing_file in missing_out_paths:
1101
- logger.debug(f"Missing output pickle file: {missing_file}")
1102
- time.sleep(sleep_time)
1103
1063
 
1104
- # Handle all jobs
1105
- for ind_job, job_id in enumerate(job_ids):
1064
+ # Loop over all job_ids, and fetch future and job objects
1065
+ futures: list[Future] = []
1066
+ jobs: list[SlurmJob] = []
1067
+ with self.jobs_lock:
1068
+ for job_id in job_ids:
1069
+ future, job = self.jobs.pop(job_id)
1070
+ futures.append(future)
1071
+ jobs.append(job)
1072
+ if not self.jobs:
1073
+ self.jobs_empty_cond.notify_all()
1074
+
1075
+ # Fetch subfolder from remote host
1106
1076
  try:
1077
+ self._get_subfolder_sftp(jobs=jobs)
1078
+ except NoValidConnectionsError as e:
1079
+ logger.error("NoValidConnectionError")
1080
+ logger.error(f"{str(e)=}")
1081
+ logger.error(f"{e.errors=}")
1082
+ for err in e.errors:
1083
+ logger.error(f"{str(err)}")
1084
+
1085
+ raise e
1086
+
1087
+ # First round of checking whether all output files exist
1088
+ missing_out_paths = []
1089
+ for job in jobs:
1090
+ for ind_out_path, out_path in enumerate(
1091
+ job.output_pickle_files_local
1092
+ ):
1093
+ if not out_path.exists():
1094
+ missing_out_paths.append(out_path)
1095
+ num_missing = len(missing_out_paths)
1096
+ if num_missing > 0:
1097
+ # Output pickle files may be missing e.g. because of some slow
1098
+ # filesystem operation; wait some time before re-trying
1099
+ settings = Inject(get_settings)
1100
+ sleep_time = settings.FRACTAL_SLURM_ERROR_HANDLING_INTERVAL
1101
+ logger.info(
1102
+ f"{num_missing} output pickle files are missing; "
1103
+ f"sleep {sleep_time} seconds."
1104
+ )
1105
+ for missing_file in missing_out_paths:
1106
+ logger.debug(f"Missing output pickle file: {missing_file}")
1107
+ time.sleep(sleep_time)
1108
+
1109
+ # Handle all jobs
1110
+ for ind_job, job_id in enumerate(job_ids):
1107
1111
  # Retrieve job and future objects
1108
1112
  job = jobs[ind_job]
1109
1113
  future = futures[ind_job]
@@ -1128,6 +1132,11 @@ class FractalSlurmSSHExecutor(SlurmExecutor):
1128
1132
  remaining_futures=remaining_futures,
1129
1133
  remaining_job_ids=remaining_job_ids,
1130
1134
  )
1135
+ logger.info(
1136
+ "[FractalSlurmSSHExecutor._completion] END, "
1137
+ f"for {job_ids=}, with JobExecutionError due "
1138
+ f"to missing {out_path.as_posix()}."
1139
+ )
1131
1140
  return
1132
1141
  except InvalidStateError:
1133
1142
  logger.warning(
@@ -1141,6 +1150,12 @@ class FractalSlurmSSHExecutor(SlurmExecutor):
1141
1150
  remaining_futures=remaining_futures,
1142
1151
  remaining_job_ids=remaining_job_ids,
1143
1152
  )
1153
+ logger.info(
1154
+ "[FractalSlurmSSHExecutor._completion] END, "
1155
+ f"for {job_ids=}, with JobExecutionError/"
1156
+ "InvalidStateError due to "
1157
+ f"missing {out_path.as_posix()}."
1158
+ )
1144
1159
  return
1145
1160
 
1146
1161
  # Read the task output
@@ -1217,16 +1232,22 @@ class FractalSlurmSSHExecutor(SlurmExecutor):
1217
1232
  else:
1218
1233
  future.set_result(outputs)
1219
1234
 
1220
- except Exception as e:
1235
+ except Exception as e:
1236
+ logger.warning(
1237
+ "[FractalSlurmSSHExecutor._completion] "
1238
+ f"An exception took place: {str(e)}."
1239
+ )
1240
+ for future in futures:
1221
1241
  try:
1242
+ logger.info(f"Set exception for {future=}")
1222
1243
  future.set_exception(e)
1223
- return
1224
1244
  except InvalidStateError:
1225
- logger.warning(
1226
- f"Future {future} (SLURM job ID: {job_id}) was already"
1227
- " cancelled, exit from"
1228
- " FractalSlurmSSHExecutor._completion."
1229
- )
1245
+ logger.info(f"Future {future} was already cancelled.")
1246
+ logger.info(
1247
+ f"[FractalSlurmSSHExecutor._completion] END, for {job_ids=}, "
1248
+ "from within exception handling."
1249
+ )
1250
+ return
1230
1251
 
1231
1252
  def _get_subfolder_sftp(self, jobs: list[SlurmJob]) -> None:
1232
1253
  """
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "fractal-server"
3
- version = "2.7.0a10"
3
+ version = "2.7.0a11"
4
4
  description = "Server component of the Fractal analytics platform"
5
5
  authors = [
6
6
  "Tommaso Comparin <tommaso.comparin@exact-lab.it>",
@@ -92,7 +92,7 @@ filterwarnings = [
92
92
  ]
93
93
 
94
94
  [tool.bumpver]
95
- current_version = "2.7.0a10"
95
+ current_version = "2.7.0a11"
96
96
  version_pattern = "MAJOR.MINOR.PATCH[PYTAGNUM]"
97
97
  commit_message = "bump version {old_version} -> {new_version}"
98
98
  commit = true
@@ -1 +0,0 @@
1
- __VERSION__ = "2.7.0a10"