fractal-server 2.8.0__tar.gz → 2.8.1__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 (233) hide show
  1. {fractal_server-2.8.0 → fractal_server-2.8.1}/PKG-INFO +1 -1
  2. fractal_server-2.8.1/fractal_server/__init__.py +1 -0
  3. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/schemas/_validators.py +1 -1
  4. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/schemas/v2/dataset.py +1 -1
  5. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/schemas/v2/task_collection.py +13 -10
  6. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/string_tools.py +10 -3
  7. {fractal_server-2.8.0 → fractal_server-2.8.1}/pyproject.toml +2 -2
  8. fractal_server-2.8.0/fractal_server/__init__.py +0 -1
  9. {fractal_server-2.8.0 → fractal_server-2.8.1}/LICENSE +0 -0
  10. {fractal_server-2.8.0 → fractal_server-2.8.1}/README.md +0 -0
  11. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/__main__.py +0 -0
  12. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/alembic.ini +0 -0
  13. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/__init__.py +0 -0
  14. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/db/__init__.py +0 -0
  15. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/models/__init__.py +0 -0
  16. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/models/linkusergroup.py +0 -0
  17. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/models/linkuserproject.py +0 -0
  18. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/models/security.py +0 -0
  19. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/models/user_settings.py +0 -0
  20. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/models/v1/__init__.py +0 -0
  21. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/models/v1/dataset.py +0 -0
  22. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/models/v1/job.py +0 -0
  23. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/models/v1/project.py +0 -0
  24. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/models/v1/state.py +0 -0
  25. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/models/v1/task.py +0 -0
  26. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/models/v1/workflow.py +0 -0
  27. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/models/v2/__init__.py +0 -0
  28. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/models/v2/collection_state.py +0 -0
  29. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/models/v2/dataset.py +0 -0
  30. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/models/v2/job.py +0 -0
  31. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/models/v2/project.py +0 -0
  32. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/models/v2/task.py +0 -0
  33. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/models/v2/workflow.py +0 -0
  34. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/models/v2/workflowtask.py +0 -0
  35. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/routes/__init__.py +0 -0
  36. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/routes/admin/__init__.py +0 -0
  37. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/routes/admin/v1.py +0 -0
  38. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/routes/admin/v2/__init__.py +0 -0
  39. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/routes/admin/v2/job.py +0 -0
  40. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/routes/admin/v2/project.py +0 -0
  41. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/routes/admin/v2/task.py +0 -0
  42. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/routes/admin/v2/task_group.py +0 -0
  43. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/routes/api/__init__.py +0 -0
  44. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/routes/api/v1/__init__.py +0 -0
  45. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/routes/api/v1/_aux_functions.py +0 -0
  46. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/routes/api/v1/dataset.py +0 -0
  47. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/routes/api/v1/job.py +0 -0
  48. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/routes/api/v1/project.py +0 -0
  49. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/routes/api/v1/task.py +0 -0
  50. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/routes/api/v1/task_collection.py +0 -0
  51. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/routes/api/v1/workflow.py +0 -0
  52. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/routes/api/v1/workflowtask.py +0 -0
  53. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/routes/api/v2/__init__.py +0 -0
  54. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/routes/api/v2/_aux_functions.py +0 -0
  55. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/routes/api/v2/_aux_functions_task_collection.py +0 -0
  56. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/routes/api/v2/_aux_functions_tasks.py +0 -0
  57. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/routes/api/v2/dataset.py +0 -0
  58. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/routes/api/v2/images.py +0 -0
  59. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/routes/api/v2/job.py +0 -0
  60. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/routes/api/v2/project.py +0 -0
  61. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/routes/api/v2/status.py +0 -0
  62. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/routes/api/v2/submit.py +0 -0
  63. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/routes/api/v2/task.py +0 -0
  64. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/routes/api/v2/task_collection.py +0 -0
  65. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/routes/api/v2/task_collection_custom.py +0 -0
  66. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/routes/api/v2/task_group.py +0 -0
  67. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/routes/api/v2/workflow.py +0 -0
  68. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/routes/api/v2/workflow_import.py +0 -0
  69. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/routes/api/v2/workflowtask.py +0 -0
  70. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/routes/auth/__init__.py +0 -0
  71. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/routes/auth/_aux_auth.py +0 -0
  72. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/routes/auth/current_user.py +0 -0
  73. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/routes/auth/group.py +0 -0
  74. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/routes/auth/login.py +0 -0
  75. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/routes/auth/oauth.py +0 -0
  76. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/routes/auth/register.py +0 -0
  77. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/routes/auth/router.py +0 -0
  78. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/routes/auth/users.py +0 -0
  79. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/routes/aux/__init__.py +0 -0
  80. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/routes/aux/_job.py +0 -0
  81. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/routes/aux/_runner.py +0 -0
  82. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/routes/aux/validate_user_settings.py +0 -0
  83. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/.gitignore +0 -0
  84. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/__init__.py +0 -0
  85. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/async_wrap.py +0 -0
  86. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/components.py +0 -0
  87. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/compress_folder.py +0 -0
  88. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/exceptions.py +0 -0
  89. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/executors/__init__.py +0 -0
  90. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/executors/slurm/__init__.py +0 -0
  91. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/executors/slurm/_batching.py +0 -0
  92. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/executors/slurm/_slurm_config.py +0 -0
  93. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/executors/slurm/remote.py +0 -0
  94. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/executors/slurm/ssh/__init__.py +0 -0
  95. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/executors/slurm/ssh/_executor_wait_thread.py +0 -0
  96. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/executors/slurm/ssh/_slurm_job.py +0 -0
  97. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/executors/slurm/ssh/executor.py +0 -0
  98. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/executors/slurm/sudo/__init__.py +0 -0
  99. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/executors/slurm/sudo/_check_jobs_status.py +0 -0
  100. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/executors/slurm/sudo/_executor_wait_thread.py +0 -0
  101. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/executors/slurm/sudo/_subprocess_run_as_user.py +0 -0
  102. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/executors/slurm/sudo/executor.py +0 -0
  103. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/extract_archive.py +0 -0
  104. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/filenames.py +0 -0
  105. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/run_subprocess.py +0 -0
  106. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/set_start_and_last_task_index.py +0 -0
  107. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/shutdown.py +0 -0
  108. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/task_files.py +0 -0
  109. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/v1/__init__.py +0 -0
  110. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/v1/_common.py +0 -0
  111. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/v1/_local/__init__.py +0 -0
  112. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/v1/_local/_local_config.py +0 -0
  113. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/v1/_local/_submit_setup.py +0 -0
  114. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/v1/_local/executor.py +0 -0
  115. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/v1/_slurm/__init__.py +0 -0
  116. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/v1/_slurm/_submit_setup.py +0 -0
  117. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/v1/_slurm/get_slurm_config.py +0 -0
  118. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/v1/common.py +0 -0
  119. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/v1/handle_failed_job.py +0 -0
  120. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/v2/__init__.py +0 -0
  121. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/v2/_local/__init__.py +0 -0
  122. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/v2/_local/_local_config.py +0 -0
  123. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/v2/_local/_submit_setup.py +0 -0
  124. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/v2/_local/executor.py +0 -0
  125. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/v2/_local_experimental/__init__.py +0 -0
  126. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/v2/_local_experimental/_local_config.py +0 -0
  127. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/v2/_local_experimental/_submit_setup.py +0 -0
  128. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/v2/_local_experimental/executor.py +0 -0
  129. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/v2/_slurm_common/__init__.py +0 -0
  130. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/v2/_slurm_common/get_slurm_config.py +0 -0
  131. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/v2/_slurm_ssh/__init__.py +0 -0
  132. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/v2/_slurm_ssh/_submit_setup.py +0 -0
  133. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/v2/_slurm_sudo/__init__.py +0 -0
  134. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/v2/_slurm_sudo/_submit_setup.py +0 -0
  135. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/v2/deduplicate_list.py +0 -0
  136. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/v2/handle_failed_job.py +0 -0
  137. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/v2/merge_outputs.py +0 -0
  138. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/v2/runner.py +0 -0
  139. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/v2/runner_functions.py +0 -0
  140. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/v2/runner_functions_low_level.py +0 -0
  141. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/v2/task_interface.py +0 -0
  142. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/runner/versions.py +0 -0
  143. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/schemas/__init__.py +0 -0
  144. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/schemas/user.py +0 -0
  145. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/schemas/user_group.py +0 -0
  146. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/schemas/user_settings.py +0 -0
  147. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/schemas/v1/__init__.py +0 -0
  148. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/schemas/v1/applyworkflow.py +0 -0
  149. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/schemas/v1/dataset.py +0 -0
  150. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/schemas/v1/dumps.py +0 -0
  151. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/schemas/v1/manifest.py +0 -0
  152. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/schemas/v1/project.py +0 -0
  153. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/schemas/v1/state.py +0 -0
  154. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/schemas/v1/task.py +0 -0
  155. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/schemas/v1/task_collection.py +0 -0
  156. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/schemas/v1/workflow.py +0 -0
  157. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/schemas/v2/__init__.py +0 -0
  158. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/schemas/v2/dumps.py +0 -0
  159. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/schemas/v2/job.py +0 -0
  160. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/schemas/v2/manifest.py +0 -0
  161. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/schemas/v2/project.py +0 -0
  162. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/schemas/v2/status.py +0 -0
  163. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/schemas/v2/task.py +0 -0
  164. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/schemas/v2/task_group.py +0 -0
  165. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/schemas/v2/workflow.py +0 -0
  166. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/schemas/v2/workflowtask.py +0 -0
  167. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/security/__init__.py +0 -0
  168. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/app/user_settings.py +0 -0
  169. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/config.py +0 -0
  170. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/data_migrations/README.md +0 -0
  171. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/data_migrations/tools.py +0 -0
  172. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/gunicorn_fractal.py +0 -0
  173. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/images/__init__.py +0 -0
  174. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/images/models.py +0 -0
  175. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/images/tools.py +0 -0
  176. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/logger.py +0 -0
  177. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/main.py +0 -0
  178. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/migrations/README +0 -0
  179. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/migrations/env.py +0 -0
  180. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/migrations/naming_convention.py +0 -0
  181. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/migrations/script.py.mako +0 -0
  182. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/migrations/versions/034a469ec2eb_task_groups.py +0 -0
  183. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/migrations/versions/091b01f51f88_add_usergroup_and_linkusergroup_table.py +0 -0
  184. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/migrations/versions/19eca0dd47a9_user_settings_project_dir.py +0 -0
  185. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/migrations/versions/4c308bcaea2b_add_task_args_schema_and_task_args_.py +0 -0
  186. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/migrations/versions/4cedeb448a53_workflowtask_foreign_keys_not_nullables.py +0 -0
  187. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/migrations/versions/501961cfcd85_remove_link_between_v1_and_v2_tasks_.py +0 -0
  188. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/migrations/versions/50a13d6138fd_initial_schema.py +0 -0
  189. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/migrations/versions/5bf02391cfef_v2.py +0 -0
  190. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/migrations/versions/70e77f1c38b0_add_applyworkflow_first_task_index_and_.py +0 -0
  191. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/migrations/versions/71eefd1dd202_add_slurm_accounts.py +0 -0
  192. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/migrations/versions/84bf0fffde30_add_dumps_to_applyworkflow.py +0 -0
  193. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/migrations/versions/8e8f227a3e36_update_taskv2_post_2_7_0.py +0 -0
  194. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/migrations/versions/8f79bd162e35_add_docs_info_and_docs_link_to_task_.py +0 -0
  195. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/migrations/versions/94a47ea2d3ff_remove_cache_dir_slurm_user_and_slurm_.py +0 -0
  196. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/migrations/versions/97f444d47249_add_applyworkflow_project_dump.py +0 -0
  197. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/migrations/versions/99ea79d9e5d2_add_dataset_history.py +0 -0
  198. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/migrations/versions/9c5ae74c9b98_add_user_settings_table.py +0 -0
  199. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/migrations/versions/9fd26a2b0de4_add_workflow_timestamp_created.py +0 -0
  200. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/migrations/versions/a7f4d6137b53_add_workflow_dump_to_applyworkflow.py +0 -0
  201. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/migrations/versions/d4fe3708d309_make_applyworkflow_workflow_dump_non_.py +0 -0
  202. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/migrations/versions/da2cb2ac4255_user_group_viewer_paths.py +0 -0
  203. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/migrations/versions/e75cac726012_make_applyworkflow_start_timestamp_not_.py +0 -0
  204. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/migrations/versions/efa89c30e0a4_add_project_timestamp_created.py +0 -0
  205. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/migrations/versions/f384e1c0cf5d_drop_task_default_args_columns.py +0 -0
  206. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/py.typed +0 -0
  207. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/ssh/__init__.py +0 -0
  208. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/ssh/_fabric.py +0 -0
  209. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/syringe.py +0 -0
  210. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/tasks/__init__.py +0 -0
  211. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/tasks/utils.py +0 -0
  212. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/tasks/v1/_TaskCollectPip.py +0 -0
  213. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/tasks/v1/__init__.py +0 -0
  214. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/tasks/v1/background_operations.py +0 -0
  215. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/tasks/v1/endpoint_operations.py +0 -0
  216. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/tasks/v1/get_collection_data.py +0 -0
  217. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/tasks/v1/utils.py +0 -0
  218. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/tasks/v2/__init__.py +0 -0
  219. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/tasks/v2/collection_local.py +0 -0
  220. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/tasks/v2/collection_ssh.py +0 -0
  221. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/tasks/v2/database_operations.py +0 -0
  222. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/tasks/v2/templates/_1_create_venv.sh +0 -0
  223. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/tasks/v2/templates/_2_preliminary_pip_operations.sh +0 -0
  224. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/tasks/v2/templates/_3_pip_install.sh +0 -0
  225. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/tasks/v2/templates/_4_pip_freeze.sh +0 -0
  226. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/tasks/v2/templates/_5_pip_show.sh +0 -0
  227. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/tasks/v2/utils_background.py +0 -0
  228. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/tasks/v2/utils_package_names.py +0 -0
  229. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/tasks/v2/utils_python_interpreter.py +0 -0
  230. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/tasks/v2/utils_templates.py +0 -0
  231. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/urls.py +0 -0
  232. {fractal_server-2.8.0 → fractal_server-2.8.1}/fractal_server/utils.py +0 -0
  233. {fractal_server-2.8.0 → fractal_server-2.8.1}/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.8.0
3
+ Version: 2.8.1
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.8.1"
@@ -74,7 +74,7 @@ def val_absolute_path(attribute: str, accept_none: bool = False):
74
74
  Check that a string attribute is an absolute path
75
75
  """
76
76
 
77
- def val(string: Optional[str]) -> str:
77
+ def val(string: Optional[str]) -> Optional[str]:
78
78
  if string is None:
79
79
  if accept_none:
80
80
  return string
@@ -39,7 +39,7 @@ class DatasetCreateV2(BaseModel, extra=Extra.forbid):
39
39
 
40
40
  # Validators
41
41
  @validator("zarr_dir")
42
- def normalize_zarr_dir(cls, v: str) -> str:
42
+ def normalize_zarr_dir(cls, v: Optional[str]) -> Optional[str]:
43
43
  if v is not None:
44
44
  return normalize_url(v)
45
45
  return v
@@ -57,16 +57,8 @@ class TaskCollectPipV2(BaseModel, extra=Extra.forbid):
57
57
  python_version: Optional[Literal["3.9", "3.10", "3.11", "3.12"]] = None
58
58
  pinned_package_versions: Optional[dict[str, str]] = None
59
59
 
60
- _package = validator("package", allow_reuse=True)(valstr("package"))
61
- _package_version = validator("package_version", allow_reuse=True)(
62
- valstr("package_version")
63
- )
64
- _package_extras = validator("package_extras", allow_reuse=True)(
65
- valstr("package_extras")
66
- )
67
-
68
60
  @validator("pinned_package_versions")
69
- def pinned_package_validator(cls, value):
61
+ def pinned_package_versions_validator(cls, value):
70
62
  if value is None:
71
63
  return value
72
64
  old_keys = list(value.keys())
@@ -87,6 +79,7 @@ class TaskCollectPipV2(BaseModel, extra=Extra.forbid):
87
79
 
88
80
  @validator("package")
89
81
  def package_validator(cls, value):
82
+ value = valstr("package")(value)
90
83
  if "/" in value or value.endswith(".whl"):
91
84
  if not value.endswith(".whl"):
92
85
  raise ValueError(
@@ -97,17 +90,27 @@ class TaskCollectPipV2(BaseModel, extra=Extra.forbid):
97
90
  raise ValueError(
98
91
  f"Local-package path must be absolute: (given {value})."
99
92
  )
93
+ validate_cmd(value, attribute_name="package")
100
94
  return value
101
95
 
102
96
  @validator("package_version")
103
- def package_version_validator(cls, v, values):
97
+ def package_version_validator(
98
+ cls, v: Optional[str], values
99
+ ) -> Optional[str]:
104
100
  v = valstr("package_version")(v)
105
101
  if values["package"].endswith(".whl"):
106
102
  raise ValueError(
107
103
  "Cannot provide package version when package is a wheel file."
108
104
  )
105
+ validate_cmd(v, attribute_name="package_version")
109
106
  return v
110
107
 
108
+ @validator("package_extras")
109
+ def package_extras_validator(cls, value: Optional[str]) -> Optional[str]:
110
+ value = valstr("package_extras")(value)
111
+ validate_cmd(value, attribute_name="package_extras")
112
+ return value
113
+
111
114
 
112
115
  class TaskCollectCustomV2(BaseModel, extra=Extra.forbid):
113
116
  """
@@ -54,7 +54,12 @@ def slugify_task_name_for_source_v1(task_name: str) -> str:
54
54
  return task_name.replace(" ", "_").lower()
55
55
 
56
56
 
57
- def validate_cmd(command: str, allow_char: Optional[str] = None):
57
+ def validate_cmd(
58
+ command: str,
59
+ *,
60
+ allow_char: Optional[str] = None,
61
+ attribute_name: str = "Command",
62
+ ):
58
63
  """
59
64
  Assert that the provided `command` does not contain any of the forbidden
60
65
  characters for commands
@@ -63,6 +68,7 @@ def validate_cmd(command: str, allow_char: Optional[str] = None):
63
68
  Args:
64
69
  command: command to validate.
65
70
  allow_char: chars to accept among the forbidden ones
71
+ attribute_name: Name of the attribute, to be used in error message.
66
72
  """
67
73
  if not isinstance(command, str):
68
74
  raise ValueError(f"{command=} is not a string.")
@@ -71,6 +77,7 @@ def validate_cmd(command: str, allow_char: Optional[str] = None):
71
77
  forbidden = forbidden - set(allow_char)
72
78
  if not forbidden.isdisjoint(set(command)):
73
79
  raise ValueError(
74
- f"Command must not contain any of this characters: '{forbidden}'\n"
75
- f"Provided command: '{command}'."
80
+ f"{attribute_name} must not contain any of this characters: "
81
+ f"'{forbidden}'\n"
82
+ f"Provided {attribute_name.lower()}: '{command}'."
76
83
  )
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "fractal-server"
3
- version = "2.8.0"
3
+ version = "2.8.1"
4
4
  description = "Server component of the Fractal analytics platform"
5
5
  authors = [
6
6
  "Tommaso Comparin <tommaso.comparin@exact-lab.it>",
@@ -87,7 +87,7 @@ filterwarnings = [
87
87
  ]
88
88
 
89
89
  [tool.bumpver]
90
- current_version = "2.8.0"
90
+ current_version = "2.8.1"
91
91
  version_pattern = "MAJOR.MINOR.PATCH[PYTAGNUM]"
92
92
  commit_message = "bump version {old_version} -> {new_version}"
93
93
  commit = true
@@ -1 +0,0 @@
1
- __VERSION__ = "2.8.0"
File without changes
File without changes