fractal-server 2.11.0a4__tar.gz → 2.11.0a5__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 (248) hide show
  1. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/PKG-INFO +1 -1
  2. fractal_server-2.11.0a5/fractal_server/__init__.py +1 -0
  3. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/routes/api/v2/_aux_functions_tasks.py +21 -0
  4. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/routes/api/v2/images.py +1 -1
  5. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/routes/api/v2/submit.py +6 -3
  6. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/routes/api/v2/workflow_import.py +8 -0
  7. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/routes/api/v2/workflowtask.py +43 -24
  8. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/executors/slurm/ssh/executor.py +2 -2
  9. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/logger.py +4 -1
  10. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/tasks/v2/local/collect.py +2 -2
  11. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/tasks/v2/local/deactivate.py +2 -2
  12. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/tasks/v2/local/reactivate.py +2 -3
  13. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/tasks/v2/ssh/collect.py +2 -2
  14. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/tasks/v2/ssh/deactivate.py +2 -2
  15. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/tasks/v2/ssh/reactivate.py +2 -2
  16. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/pyproject.toml +2 -2
  17. fractal_server-2.11.0a4/fractal_server/__init__.py +0 -1
  18. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/LICENSE +0 -0
  19. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/README.md +0 -0
  20. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/__main__.py +0 -0
  21. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/alembic.ini +0 -0
  22. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/__init__.py +0 -0
  23. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/db/__init__.py +0 -0
  24. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/models/__init__.py +0 -0
  25. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/models/linkusergroup.py +0 -0
  26. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/models/linkuserproject.py +0 -0
  27. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/models/security.py +0 -0
  28. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/models/user_settings.py +0 -0
  29. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/models/v1/__init__.py +0 -0
  30. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/models/v1/dataset.py +0 -0
  31. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/models/v1/job.py +0 -0
  32. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/models/v1/project.py +0 -0
  33. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/models/v1/state.py +0 -0
  34. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/models/v1/task.py +0 -0
  35. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/models/v1/workflow.py +0 -0
  36. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/models/v2/__init__.py +0 -0
  37. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/models/v2/dataset.py +0 -0
  38. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/models/v2/job.py +0 -0
  39. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/models/v2/project.py +0 -0
  40. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/models/v2/task.py +0 -0
  41. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/models/v2/task_group.py +0 -0
  42. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/models/v2/workflow.py +0 -0
  43. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/models/v2/workflowtask.py +0 -0
  44. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/routes/__init__.py +0 -0
  45. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/routes/admin/__init__.py +0 -0
  46. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/routes/admin/v1.py +0 -0
  47. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/routes/admin/v2/__init__.py +0 -0
  48. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/routes/admin/v2/job.py +0 -0
  49. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/routes/admin/v2/project.py +0 -0
  50. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/routes/admin/v2/task.py +0 -0
  51. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/routes/admin/v2/task_group.py +0 -0
  52. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/routes/admin/v2/task_group_lifecycle.py +0 -0
  53. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/routes/api/__init__.py +0 -0
  54. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/routes/api/v1/__init__.py +0 -0
  55. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/routes/api/v1/_aux_functions.py +0 -0
  56. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/routes/api/v1/dataset.py +0 -0
  57. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/routes/api/v1/job.py +0 -0
  58. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/routes/api/v1/project.py +0 -0
  59. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/routes/api/v1/task.py +0 -0
  60. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/routes/api/v1/task_collection.py +0 -0
  61. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/routes/api/v1/workflow.py +0 -0
  62. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/routes/api/v1/workflowtask.py +0 -0
  63. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/routes/api/v2/__init__.py +0 -0
  64. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/routes/api/v2/_aux_functions.py +0 -0
  65. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/routes/api/v2/_aux_functions_task_lifecycle.py +0 -0
  66. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/routes/api/v2/dataset.py +0 -0
  67. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/routes/api/v2/job.py +0 -0
  68. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/routes/api/v2/project.py +0 -0
  69. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/routes/api/v2/status.py +0 -0
  70. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/routes/api/v2/task.py +0 -0
  71. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/routes/api/v2/task_collection.py +0 -0
  72. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/routes/api/v2/task_collection_custom.py +0 -0
  73. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/routes/api/v2/task_group.py +0 -0
  74. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/routes/api/v2/task_group_lifecycle.py +0 -0
  75. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/routes/api/v2/workflow.py +0 -0
  76. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/routes/auth/__init__.py +0 -0
  77. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/routes/auth/_aux_auth.py +0 -0
  78. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/routes/auth/current_user.py +0 -0
  79. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/routes/auth/group.py +0 -0
  80. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/routes/auth/login.py +0 -0
  81. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/routes/auth/oauth.py +0 -0
  82. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/routes/auth/register.py +0 -0
  83. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/routes/auth/router.py +0 -0
  84. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/routes/auth/users.py +0 -0
  85. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/routes/aux/__init__.py +0 -0
  86. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/routes/aux/_job.py +0 -0
  87. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/routes/aux/_runner.py +0 -0
  88. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/routes/aux/validate_user_settings.py +0 -0
  89. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/__init__.py +0 -0
  90. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/async_wrap.py +0 -0
  91. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/components.py +0 -0
  92. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/compress_folder.py +0 -0
  93. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/exceptions.py +0 -0
  94. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/executors/__init__.py +0 -0
  95. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/executors/slurm/__init__.py +0 -0
  96. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/executors/slurm/_batching.py +0 -0
  97. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/executors/slurm/_slurm_config.py +0 -0
  98. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/executors/slurm/remote.py +0 -0
  99. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/executors/slurm/ssh/__init__.py +0 -0
  100. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/executors/slurm/ssh/_executor_wait_thread.py +0 -0
  101. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/executors/slurm/ssh/_slurm_job.py +0 -0
  102. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/executors/slurm/sudo/__init__.py +0 -0
  103. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/executors/slurm/sudo/_check_jobs_status.py +0 -0
  104. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/executors/slurm/sudo/_executor_wait_thread.py +0 -0
  105. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/executors/slurm/sudo/_subprocess_run_as_user.py +0 -0
  106. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/executors/slurm/sudo/executor.py +0 -0
  107. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/executors/slurm/utils_executors.py +0 -0
  108. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/extract_archive.py +0 -0
  109. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/filenames.py +0 -0
  110. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/run_subprocess.py +0 -0
  111. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/set_start_and_last_task_index.py +0 -0
  112. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/shutdown.py +0 -0
  113. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/task_files.py +0 -0
  114. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/v1/__init__.py +0 -0
  115. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/v1/_common.py +0 -0
  116. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/v1/_local/__init__.py +0 -0
  117. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/v1/_local/_local_config.py +0 -0
  118. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/v1/_local/_submit_setup.py +0 -0
  119. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/v1/_local/executor.py +0 -0
  120. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/v1/_slurm/__init__.py +0 -0
  121. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/v1/_slurm/_submit_setup.py +0 -0
  122. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/v1/_slurm/get_slurm_config.py +0 -0
  123. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/v1/common.py +0 -0
  124. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/v1/handle_failed_job.py +0 -0
  125. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/v2/__init__.py +0 -0
  126. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/v2/_local/__init__.py +0 -0
  127. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/v2/_local/_local_config.py +0 -0
  128. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/v2/_local/_submit_setup.py +0 -0
  129. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/v2/_local/executor.py +0 -0
  130. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/v2/_local_experimental/__init__.py +0 -0
  131. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/v2/_local_experimental/_local_config.py +0 -0
  132. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/v2/_local_experimental/_submit_setup.py +0 -0
  133. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/v2/_local_experimental/executor.py +0 -0
  134. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/v2/_slurm_common/__init__.py +0 -0
  135. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/v2/_slurm_common/get_slurm_config.py +0 -0
  136. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/v2/_slurm_ssh/__init__.py +0 -0
  137. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/v2/_slurm_ssh/_submit_setup.py +0 -0
  138. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/v2/_slurm_sudo/__init__.py +0 -0
  139. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/v2/_slurm_sudo/_submit_setup.py +0 -0
  140. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/v2/deduplicate_list.py +0 -0
  141. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/v2/handle_failed_job.py +0 -0
  142. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/v2/merge_outputs.py +0 -0
  143. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/v2/runner.py +0 -0
  144. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/v2/runner_functions.py +0 -0
  145. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/v2/runner_functions_low_level.py +0 -0
  146. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/v2/task_interface.py +0 -0
  147. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/runner/versions.py +0 -0
  148. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/schemas/__init__.py +0 -0
  149. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/schemas/_filter_validators.py +0 -0
  150. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/schemas/_validators.py +0 -0
  151. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/schemas/user.py +0 -0
  152. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/schemas/user_group.py +0 -0
  153. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/schemas/user_settings.py +0 -0
  154. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/schemas/v1/__init__.py +0 -0
  155. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/schemas/v1/applyworkflow.py +0 -0
  156. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/schemas/v1/dataset.py +0 -0
  157. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/schemas/v1/dumps.py +0 -0
  158. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/schemas/v1/manifest.py +0 -0
  159. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/schemas/v1/project.py +0 -0
  160. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/schemas/v1/state.py +0 -0
  161. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/schemas/v1/task.py +0 -0
  162. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/schemas/v1/task_collection.py +0 -0
  163. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/schemas/v1/workflow.py +0 -0
  164. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/schemas/v2/__init__.py +0 -0
  165. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/schemas/v2/dataset.py +0 -0
  166. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/schemas/v2/dumps.py +0 -0
  167. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/schemas/v2/job.py +0 -0
  168. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/schemas/v2/manifest.py +0 -0
  169. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/schemas/v2/project.py +0 -0
  170. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/schemas/v2/status.py +0 -0
  171. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/schemas/v2/task.py +0 -0
  172. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/schemas/v2/task_collection.py +0 -0
  173. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/schemas/v2/task_group.py +0 -0
  174. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/schemas/v2/workflow.py +0 -0
  175. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/schemas/v2/workflowtask.py +0 -0
  176. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/security/__init__.py +0 -0
  177. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/security/signup_email.py +0 -0
  178. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/app/user_settings.py +0 -0
  179. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/config.py +0 -0
  180. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/data_migrations/2_11_0.py +0 -0
  181. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/data_migrations/README.md +0 -0
  182. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/data_migrations/tools.py +0 -0
  183. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/gunicorn_fractal.py +0 -0
  184. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/images/__init__.py +0 -0
  185. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/images/models.py +0 -0
  186. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/images/tools.py +0 -0
  187. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/main.py +0 -0
  188. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/migrations/env.py +0 -0
  189. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/migrations/naming_convention.py +0 -0
  190. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/migrations/versions/034a469ec2eb_task_groups.py +0 -0
  191. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/migrations/versions/091b01f51f88_add_usergroup_and_linkusergroup_table.py +0 -0
  192. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/migrations/versions/19eca0dd47a9_user_settings_project_dir.py +0 -0
  193. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/migrations/versions/316140ff7ee1_remove_usersettings_cache_dir.py +0 -0
  194. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/migrations/versions/4c308bcaea2b_add_task_args_schema_and_task_args_.py +0 -0
  195. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/migrations/versions/4cedeb448a53_workflowtask_foreign_keys_not_nullables.py +0 -0
  196. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/migrations/versions/501961cfcd85_remove_link_between_v1_and_v2_tasks_.py +0 -0
  197. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/migrations/versions/50a13d6138fd_initial_schema.py +0 -0
  198. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/migrations/versions/5bf02391cfef_v2.py +0 -0
  199. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/migrations/versions/70e77f1c38b0_add_applyworkflow_first_task_index_and_.py +0 -0
  200. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/migrations/versions/71eefd1dd202_add_slurm_accounts.py +0 -0
  201. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/migrations/versions/84bf0fffde30_add_dumps_to_applyworkflow.py +0 -0
  202. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/migrations/versions/8e8f227a3e36_update_taskv2_post_2_7_0.py +0 -0
  203. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/migrations/versions/8f79bd162e35_add_docs_info_and_docs_link_to_task_.py +0 -0
  204. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/migrations/versions/94a47ea2d3ff_remove_cache_dir_slurm_user_and_slurm_.py +0 -0
  205. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/migrations/versions/97f444d47249_add_applyworkflow_project_dump.py +0 -0
  206. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/migrations/versions/99ea79d9e5d2_add_dataset_history.py +0 -0
  207. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/migrations/versions/9c5ae74c9b98_add_user_settings_table.py +0 -0
  208. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/migrations/versions/9fd26a2b0de4_add_workflow_timestamp_created.py +0 -0
  209. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/migrations/versions/a7f4d6137b53_add_workflow_dump_to_applyworkflow.py +0 -0
  210. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/migrations/versions/d256a7379ab8_taskgroup_activity_and_venv_info_to_.py +0 -0
  211. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/migrations/versions/d4fe3708d309_make_applyworkflow_workflow_dump_non_.py +0 -0
  212. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/migrations/versions/da2cb2ac4255_user_group_viewer_paths.py +0 -0
  213. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/migrations/versions/db09233ad13a_split_filters_and_keep_old_columns.py +0 -0
  214. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/migrations/versions/e75cac726012_make_applyworkflow_start_timestamp_not_.py +0 -0
  215. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/migrations/versions/efa89c30e0a4_add_project_timestamp_created.py +0 -0
  216. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/migrations/versions/f384e1c0cf5d_drop_task_default_args_columns.py +0 -0
  217. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/py.typed +0 -0
  218. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/ssh/__init__.py +0 -0
  219. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/ssh/_fabric.py +0 -0
  220. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/string_tools.py +0 -0
  221. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/syringe.py +0 -0
  222. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/tasks/__init__.py +0 -0
  223. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/tasks/utils.py +0 -0
  224. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/tasks/v1/_TaskCollectPip.py +0 -0
  225. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/tasks/v1/__init__.py +0 -0
  226. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/tasks/v1/background_operations.py +0 -0
  227. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/tasks/v1/endpoint_operations.py +0 -0
  228. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/tasks/v1/get_collection_data.py +0 -0
  229. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/tasks/v1/utils.py +0 -0
  230. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/tasks/v2/__init__.py +0 -0
  231. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/tasks/v2/local/__init__.py +0 -0
  232. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/tasks/v2/local/_utils.py +0 -0
  233. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/tasks/v2/ssh/__init__.py +0 -0
  234. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/tasks/v2/ssh/_utils.py +0 -0
  235. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/tasks/v2/templates/1_create_venv.sh +0 -0
  236. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/tasks/v2/templates/2_pip_install.sh +0 -0
  237. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/tasks/v2/templates/3_pip_freeze.sh +0 -0
  238. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/tasks/v2/templates/4_pip_show.sh +0 -0
  239. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/tasks/v2/templates/5_get_venv_size_and_file_number.sh +0 -0
  240. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/tasks/v2/templates/6_pip_install_from_freeze.sh +0 -0
  241. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/tasks/v2/utils_background.py +0 -0
  242. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/tasks/v2/utils_database.py +0 -0
  243. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/tasks/v2/utils_package_names.py +0 -0
  244. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/tasks/v2/utils_python_interpreter.py +0 -0
  245. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/tasks/v2/utils_templates.py +0 -0
  246. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/urls.py +0 -0
  247. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/utils.py +0 -0
  248. {fractal_server-2.11.0a4 → fractal_server-2.11.0a5}/fractal_server/zip_tools.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: fractal-server
3
- Version: 2.11.0a4
3
+ Version: 2.11.0a5
4
4
  Summary: Backend 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.11.0a5"
@@ -22,6 +22,7 @@ from fractal_server.app.routes.auth._aux_auth import (
22
22
  _verify_user_belongs_to_group,
23
23
  )
24
24
  from fractal_server.app.schemas.v2 import TaskGroupActivityActionV2
25
+ from fractal_server.images.tools import merge_type_filters
25
26
  from fractal_server.logger import set_logger
26
27
 
27
28
  logger = set_logger(__name__)
@@ -351,3 +352,23 @@ async def _add_warnings_to_workflow_tasks(
351
352
  wftask_data["warning"] = "Current user has no access to this task."
352
353
  wftask_list_with_warnings.append(wftask_data)
353
354
  return wftask_list_with_warnings
355
+
356
+
357
+ def _check_type_filters_compatibility(
358
+ *,
359
+ task_input_types: dict[str, bool],
360
+ wftask_type_filters: dict[str, bool],
361
+ ) -> None:
362
+ """
363
+ Wrap `merge_type_filters` and raise `HTTPException` if needed.
364
+ """
365
+ try:
366
+ merge_type_filters(
367
+ task_input_types=task_input_types,
368
+ wftask_type_filters=wftask_type_filters,
369
+ )
370
+ except ValueError as e:
371
+ raise HTTPException(
372
+ status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
373
+ detail=f"Incompatible type filters.\nOriginal error: {str(e)}",
374
+ )
@@ -207,7 +207,7 @@ async def query_dataset_images(
207
207
  if page > last_page:
208
208
  page = last_page
209
209
  offset = (page - 1) * page_size
210
- images = images[offset : offset + page_size] # noqa E203
210
+ images = images[offset : offset + page_size]
211
211
 
212
212
  return ImagePage(
213
213
  total_count=total_count,
@@ -28,6 +28,7 @@ from ...aux.validate_user_settings import validate_user_settings
28
28
  from ._aux_functions import _get_dataset_check_owner
29
29
  from ._aux_functions import _get_workflow_check_owner
30
30
  from ._aux_functions import clean_app_job_list_v2
31
+ from ._aux_functions_tasks import _check_type_filters_compatibility
31
32
  from fractal_server.app.models import TaskGroupV2
32
33
  from fractal_server.app.models import UserOAuth
33
34
  from fractal_server.app.routes.api.v2._aux_functions_tasks import (
@@ -108,15 +109,17 @@ async def apply_workflow(
108
109
 
109
110
  # Check that tasks have read-access and are `active`
110
111
  used_task_group_ids = set()
111
- for wftask in workflow.task_list[
112
- first_task_index : last_task_index + 1 # noqa: E203
113
- ]:
112
+ for wftask in workflow.task_list[first_task_index : last_task_index + 1]:
114
113
  task = await _get_task_read_access(
115
114
  user_id=user.id,
116
115
  task_id=wftask.task_id,
117
116
  require_active=True,
118
117
  db=db,
119
118
  )
119
+ _check_type_filters_compatibility(
120
+ task_input_types=task.input_types,
121
+ wftask_type_filters=wftask.type_filters,
122
+ )
120
123
  used_task_group_ids.add(task.taskgroupv2_id)
121
124
 
122
125
  # Validate user settings
@@ -19,6 +19,7 @@ from ._aux_functions import _check_workflow_exists
19
19
  from ._aux_functions import _get_project_check_owner
20
20
  from ._aux_functions import _workflow_insert_task
21
21
  from ._aux_functions_tasks import _add_warnings_to_workflow_tasks
22
+ from ._aux_functions_tasks import _check_type_filters_compatibility
22
23
  from fractal_server.app.models import LinkUserGroup
23
24
  from fractal_server.app.models import UserOAuth
24
25
  from fractal_server.app.models.v2 import TaskGroupV2
@@ -325,6 +326,13 @@ async def import_workflow(
325
326
  list_wf_tasks.append(new_wf_task)
326
327
  list_task_ids.append(task_id)
327
328
 
329
+ for wftask, task_id in zip(list_wf_tasks, list_task_ids):
330
+ task = await db.get(TaskV2, task_id)
331
+ _check_type_filters_compatibility(
332
+ task_input_types=task.input_types,
333
+ wftask_type_filters=wftask.type_filters,
334
+ )
335
+
328
336
  # Create new Workflow
329
337
  db_workflow = WorkflowV2(
330
338
  project_id=project_id,
@@ -12,6 +12,7 @@ from ....db import get_async_db
12
12
  from ._aux_functions import _get_workflow_check_owner
13
13
  from ._aux_functions import _get_workflow_task_check_owner
14
14
  from ._aux_functions import _workflow_insert_task
15
+ from ._aux_functions_tasks import _check_type_filters_compatibility
15
16
  from ._aux_functions_tasks import _get_task_read_access
16
17
  from fractal_server.app.models import UserOAuth
17
18
  from fractal_server.app.models.v2 import WorkflowTaskV2
@@ -47,24 +48,29 @@ async def replace_workflowtask(
47
48
  db=db,
48
49
  )
49
50
 
50
- task = await _get_task_read_access(
51
+ new_task = await _get_task_read_access(
51
52
  task_id=task_id, user_id=user.id, db=db, require_active=True
52
53
  )
53
54
 
54
- if task.type != old_workflow_task.task.type:
55
+ if new_task.type != old_workflow_task.task.type:
55
56
  raise HTTPException(
56
57
  status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
57
58
  detail=(
58
59
  f"Cannot replace a Task '{old_workflow_task.task.type}' with a"
59
- f" Task '{task.type}'."
60
+ f" Task '{new_task.type}'."
60
61
  ),
61
62
  )
62
63
 
64
+ _check_type_filters_compatibility(
65
+ task_input_types=new_task.input_types,
66
+ wftask_type_filters=old_workflow_task.type_filters,
67
+ )
68
+
63
69
  _args_non_parallel = old_workflow_task.args_non_parallel
64
70
  _args_parallel = old_workflow_task.args_parallel
65
71
  if replace is not None:
66
72
  if replace.args_non_parallel is not None:
67
- if task.type == "parallel":
73
+ if new_task.type == "parallel":
68
74
  raise HTTPException(
69
75
  status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
70
76
  detail=(
@@ -76,7 +82,7 @@ async def replace_workflowtask(
76
82
  _args_non_parallel = replace.args_non_parallel
77
83
 
78
84
  if replace.args_parallel is not None:
79
- if task.type == "non_parallel":
85
+ if new_task.type == "non_parallel":
80
86
  raise HTTPException(
81
87
  status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
82
88
  detail=(
@@ -92,22 +98,24 @@ async def replace_workflowtask(
92
98
  if (
93
99
  old_workflow_task.meta_non_parallel
94
100
  != old_workflow_task.task.meta_non_parallel
95
- ) and (old_workflow_task.task.meta_non_parallel == task.meta_non_parallel):
101
+ ) and (
102
+ old_workflow_task.task.meta_non_parallel == new_task.meta_non_parallel
103
+ ):
96
104
  _meta_non_parallel = old_workflow_task.meta_non_parallel
97
105
  else:
98
- _meta_non_parallel = task.meta_non_parallel
106
+ _meta_non_parallel = new_task.meta_non_parallel
99
107
  # Same for `meta_parallel`
100
108
  if (
101
109
  old_workflow_task.meta_parallel != old_workflow_task.task.meta_parallel
102
- ) and (old_workflow_task.task.meta_parallel == task.meta_parallel):
110
+ ) and (old_workflow_task.task.meta_parallel == new_task.meta_parallel):
103
111
  _meta_parallel = old_workflow_task.meta_parallel
104
112
  else:
105
- _meta_parallel = task.meta_parallel
113
+ _meta_parallel = new_task.meta_parallel
106
114
 
107
115
  new_workflow_task = WorkflowTaskV2(
108
- task_id=task.id,
109
- task_type=task.type,
110
- task=task,
116
+ task_id=new_task.id,
117
+ task_type=new_task.type,
118
+ task=new_task,
111
119
  # old-task values
112
120
  type_filters=old_workflow_task.type_filters,
113
121
  # possibly new values
@@ -134,7 +142,7 @@ async def create_workflowtask(
134
142
  project_id: int,
135
143
  workflow_id: int,
136
144
  task_id: int,
137
- new_task: WorkflowTaskCreateV2,
145
+ wftask: WorkflowTaskCreateV2,
138
146
  user: UserOAuth = Depends(current_active_user),
139
147
  db: AsyncSession = Depends(get_async_db),
140
148
  ) -> Optional[WorkflowTaskReadV2]:
@@ -152,8 +160,8 @@ async def create_workflowtask(
152
160
 
153
161
  if task.type == "parallel":
154
162
  if (
155
- new_task.meta_non_parallel is not None
156
- or new_task.args_non_parallel is not None
163
+ wftask.meta_non_parallel is not None
164
+ or wftask.args_non_parallel is not None
157
165
  ):
158
166
  raise HTTPException(
159
167
  status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
@@ -165,8 +173,8 @@ async def create_workflowtask(
165
173
  )
166
174
  elif task.type == "non_parallel":
167
175
  if (
168
- new_task.meta_parallel is not None
169
- or new_task.args_parallel is not None
176
+ wftask.meta_parallel is not None
177
+ or wftask.args_parallel is not None
170
178
  ):
171
179
  raise HTTPException(
172
180
  status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
@@ -176,20 +184,26 @@ async def create_workflowtask(
176
184
  "is `non_parallel`."
177
185
  ),
178
186
  )
179
- workflow_task = await _workflow_insert_task(
187
+
188
+ _check_type_filters_compatibility(
189
+ task_input_types=task.input_types,
190
+ wftask_type_filters=wftask.type_filters,
191
+ )
192
+
193
+ wftask_db = await _workflow_insert_task(
180
194
  workflow_id=workflow.id,
181
195
  task_id=task_id,
182
- meta_non_parallel=new_task.meta_non_parallel,
183
- meta_parallel=new_task.meta_parallel,
184
- args_non_parallel=new_task.args_non_parallel,
185
- args_parallel=new_task.args_parallel,
186
- type_filters=new_task.type_filters,
196
+ meta_non_parallel=wftask.meta_non_parallel,
197
+ meta_parallel=wftask.meta_parallel,
198
+ args_non_parallel=wftask.args_non_parallel,
199
+ args_parallel=wftask.args_parallel,
200
+ type_filters=wftask.type_filters,
187
201
  db=db,
188
202
  )
189
203
 
190
204
  await db.close()
191
205
 
192
- return workflow_task
206
+ return wftask_db
193
207
 
194
208
 
195
209
  @router.get(
@@ -236,6 +250,11 @@ async def update_workflowtask(
236
250
  user_id=user.id,
237
251
  db=db,
238
252
  )
253
+ if workflow_task_update.type_filters is not None:
254
+ _check_type_filters_compatibility(
255
+ task_input_types=db_wf_task.task.input_types,
256
+ wftask_type_filters=workflow_task_update.type_filters,
257
+ )
239
258
 
240
259
  if db_wf_task.task_type == "parallel" and (
241
260
  workflow_task_update.args_non_parallel is not None
@@ -966,8 +966,8 @@ class FractalSlurmSSHExecutor(SlurmExecutor):
966
966
  # Retrieve job and future objects
967
967
  job = jobs[ind_job]
968
968
  future = futures[ind_job]
969
- remaining_job_ids = job_ids[ind_job + 1 :] # noqa: E203
970
- remaining_futures = futures[ind_job + 1 :] # noqa: E203
969
+ remaining_job_ids = job_ids[ind_job + 1 :]
970
+ remaining_futures = futures[ind_job + 1 :]
971
971
 
972
972
  outputs = []
973
973
 
@@ -109,7 +109,10 @@ def set_logger(
109
109
  if isinstance(handler, logging.FileHandler)
110
110
  ]
111
111
  if len(current_file_handlers) > 1:
112
- logger.warning(f"Logger {logger_name} has multiple file handlers.")
112
+ logger.warning(
113
+ f"Logger {logger_name} has multiple file handlers: "
114
+ f"{current_file_handlers}"
115
+ )
113
116
 
114
117
  return logger
115
118
 
@@ -33,8 +33,6 @@ from fractal_server.tasks.v2.utils_templates import (
33
33
  from fractal_server.tasks.v2.utils_templates import SCRIPTS_SUBFOLDER
34
34
  from fractal_server.utils import get_timestamp
35
35
 
36
- LOGGER_NAME = __name__
37
-
38
36
 
39
37
  def collect_local(
40
38
  *,
@@ -59,6 +57,8 @@ def collect_local(
59
57
  wheel_file:
60
58
  """
61
59
 
60
+ LOGGER_NAME = f"{__name__}.ID{task_group_activity_id}"
61
+
62
62
  with TemporaryDirectory() as tmpdir:
63
63
  log_file_path = get_log_path(Path(tmpdir))
64
64
  logger = set_logger(
@@ -21,8 +21,6 @@ from fractal_server.tasks.v2.utils_background import get_current_log
21
21
  from fractal_server.tasks.v2.utils_templates import SCRIPTS_SUBFOLDER
22
22
  from fractal_server.utils import get_timestamp
23
23
 
24
- LOGGER_NAME = __name__
25
-
26
24
 
27
25
  def deactivate_local(
28
26
  *,
@@ -40,6 +38,8 @@ def deactivate_local(
40
38
  task_group_activity_id:
41
39
  """
42
40
 
41
+ LOGGER_NAME = f"{__name__}.ID{task_group_activity_id}"
42
+
43
43
  with TemporaryDirectory() as tmpdir:
44
44
  log_file_path = get_log_path(Path(tmpdir))
45
45
  logger = set_logger(
@@ -23,9 +23,6 @@ from fractal_server.tasks.v2.utils_templates import SCRIPTS_SUBFOLDER
23
23
  from fractal_server.utils import get_timestamp
24
24
 
25
25
 
26
- LOGGER_NAME = __name__
27
-
28
-
29
26
  def reactivate_local(
30
27
  *,
31
28
  task_group_activity_id: int,
@@ -42,6 +39,8 @@ def reactivate_local(
42
39
  task_group_activity_id:
43
40
  """
44
41
 
42
+ LOGGER_NAME = f"{__name__}.ID{task_group_activity_id}"
43
+
45
44
  with TemporaryDirectory() as tmpdir:
46
45
  log_file_path = get_log_path(Path(tmpdir))
47
46
  logger = set_logger(
@@ -30,8 +30,6 @@ from fractal_server.tasks.v2.utils_templates import (
30
30
  from fractal_server.tasks.v2.utils_templates import SCRIPTS_SUBFOLDER
31
31
  from fractal_server.utils import get_timestamp
32
32
 
33
- LOGGER_NAME = __name__
34
-
35
33
 
36
34
  def collect_ssh(
37
35
  *,
@@ -62,6 +60,8 @@ def collect_ssh(
62
60
  wheel_file:
63
61
  """
64
62
 
63
+ LOGGER_NAME = f"{__name__}.ID{task_group_activity_id}"
64
+
65
65
  # Work within a temporary folder, where also logs will be placed
66
66
  with TemporaryDirectory() as tmpdir:
67
67
  LOGGER_NAME = "task_collection_ssh"
@@ -22,8 +22,6 @@ from fractal_server.tasks.v2.utils_background import get_current_log
22
22
  from fractal_server.tasks.v2.utils_templates import SCRIPTS_SUBFOLDER
23
23
  from fractal_server.utils import get_timestamp
24
24
 
25
- LOGGER_NAME = __name__
26
-
27
25
 
28
26
  def deactivate_ssh(
29
27
  *,
@@ -47,6 +45,8 @@ def deactivate_ssh(
47
45
  `user_settings.ssh_tasks_dir`.
48
46
  """
49
47
 
48
+ LOGGER_NAME = f"{__name__}.ID{task_group_activity_id}"
49
+
50
50
  with TemporaryDirectory() as tmpdir:
51
51
  log_file_path = get_log_path(Path(tmpdir))
52
52
  logger = set_logger(
@@ -22,8 +22,6 @@ from fractal_server.tasks.v2.utils_python_interpreter import (
22
22
  from fractal_server.tasks.v2.utils_templates import SCRIPTS_SUBFOLDER
23
23
  from fractal_server.utils import get_timestamp
24
24
 
25
- LOGGER_NAME = __name__
26
-
27
25
 
28
26
  def reactivate_ssh(
29
27
  *,
@@ -47,6 +45,8 @@ def reactivate_ssh(
47
45
  `user_settings.ssh_tasks_dir`.
48
46
  """
49
47
 
48
+ LOGGER_NAME = f"{__name__}.ID{task_group_activity_id}"
49
+
50
50
  with TemporaryDirectory() as tmpdir:
51
51
  log_file_path = get_log_path(Path(tmpdir))
52
52
  logger = set_logger(
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "fractal-server"
3
- version = "2.11.0a4"
3
+ version = "2.11.0a5"
4
4
  description = "Backend component of the Fractal analytics platform"
5
5
  authors = [
6
6
  { name="Tommaso Comparin", email="tommaso.comparin@exact-lab.it" },
@@ -95,7 +95,7 @@ filterwarnings = [
95
95
  ]
96
96
 
97
97
  [tool.bumpver]
98
- current_version = "2.11.0a4"
98
+ current_version = "2.11.0a5"
99
99
  version_pattern = "MAJOR.MINOR.PATCH[PYTAGNUM]"
100
100
  commit_message = "bump version {old_version} -> {new_version}"
101
101
  commit = true
@@ -1 +0,0 @@
1
- __VERSION__ = "2.11.0a4"