fractal-server 2.7.0a11__tar.gz → 2.7.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 (231) hide show
  1. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/PKG-INFO +4 -10
  2. fractal_server-2.7.1/fractal_server/__init__.py +1 -0
  3. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/models/v2/task.py +1 -2
  4. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/routes/admin/v2/task_group.py +7 -0
  5. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/routes/api/v2/task.py +2 -1
  6. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/routes/api/v2/task_collection.py +3 -2
  7. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/routes/api/v2/task_collection_custom.py +2 -1
  8. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/schemas/v2/__init__.py +1 -0
  9. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/schemas/v2/task_group.py +8 -1
  10. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/security/__init__.py +8 -1
  11. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/config.py +8 -28
  12. fractal_server-2.7.1/fractal_server/migrations/versions/8e8f227a3e36_update_taskv2_post_2_7_0.py +42 -0
  13. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/tasks/v2/_venv_pip.py +5 -0
  14. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/tasks/v2/background_operations_ssh.py +1 -1
  15. fractal_server-2.7.0a11/fractal_server/tasks/v2/templates/_2_upgrade_pip.sh → fractal_server-2.7.1/fractal_server/tasks/v2/templates/_2_preliminary_pip_operations.sh +1 -0
  16. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/pyproject.toml +5 -10
  17. fractal_server-2.7.0a11/fractal_server/__init__.py +0 -1
  18. fractal_server-2.7.0a11/fractal_server/data_migrations/2_7_0.py +0 -323
  19. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/LICENSE +0 -0
  20. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/README.md +0 -0
  21. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/__main__.py +0 -0
  22. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/alembic.ini +0 -0
  23. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/__init__.py +0 -0
  24. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/db/__init__.py +0 -0
  25. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/models/__init__.py +0 -0
  26. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/models/linkusergroup.py +0 -0
  27. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/models/linkuserproject.py +0 -0
  28. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/models/security.py +0 -0
  29. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/models/user_settings.py +0 -0
  30. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/models/v1/__init__.py +0 -0
  31. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/models/v1/dataset.py +0 -0
  32. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/models/v1/job.py +0 -0
  33. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/models/v1/project.py +0 -0
  34. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/models/v1/state.py +0 -0
  35. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/models/v1/task.py +0 -0
  36. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/models/v1/workflow.py +0 -0
  37. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/models/v2/__init__.py +0 -0
  38. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/models/v2/collection_state.py +0 -0
  39. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/models/v2/dataset.py +0 -0
  40. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/models/v2/job.py +0 -0
  41. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/models/v2/project.py +0 -0
  42. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/models/v2/workflow.py +0 -0
  43. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/models/v2/workflowtask.py +0 -0
  44. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/routes/__init__.py +0 -0
  45. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/routes/admin/__init__.py +0 -0
  46. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/routes/admin/v1.py +0 -0
  47. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/routes/admin/v2/__init__.py +0 -0
  48. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/routes/admin/v2/job.py +0 -0
  49. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/routes/admin/v2/project.py +0 -0
  50. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/routes/admin/v2/task.py +0 -0
  51. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/routes/api/__init__.py +0 -0
  52. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/routes/api/v1/__init__.py +0 -0
  53. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/routes/api/v1/_aux_functions.py +0 -0
  54. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/routes/api/v1/dataset.py +0 -0
  55. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/routes/api/v1/job.py +0 -0
  56. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/routes/api/v1/project.py +0 -0
  57. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/routes/api/v1/task.py +0 -0
  58. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/routes/api/v1/task_collection.py +0 -0
  59. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/routes/api/v1/workflow.py +0 -0
  60. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/routes/api/v1/workflowtask.py +0 -0
  61. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/routes/api/v2/__init__.py +0 -0
  62. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/routes/api/v2/_aux_functions.py +0 -0
  63. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/routes/api/v2/_aux_functions_tasks.py +0 -0
  64. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/routes/api/v2/dataset.py +0 -0
  65. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/routes/api/v2/images.py +0 -0
  66. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/routes/api/v2/job.py +0 -0
  67. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/routes/api/v2/project.py +0 -0
  68. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/routes/api/v2/status.py +0 -0
  69. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/routes/api/v2/submit.py +0 -0
  70. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/routes/api/v2/task_group.py +0 -0
  71. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/routes/api/v2/workflow.py +0 -0
  72. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/routes/api/v2/workflow_import.py +0 -0
  73. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/routes/api/v2/workflowtask.py +0 -0
  74. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/routes/auth/__init__.py +0 -0
  75. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/routes/auth/_aux_auth.py +0 -0
  76. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/routes/auth/current_user.py +0 -0
  77. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/routes/auth/group.py +0 -0
  78. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/routes/auth/login.py +0 -0
  79. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/routes/auth/oauth.py +0 -0
  80. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/routes/auth/register.py +0 -0
  81. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/routes/auth/router.py +0 -0
  82. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/routes/auth/users.py +0 -0
  83. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/routes/aux/__init__.py +0 -0
  84. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/routes/aux/_job.py +0 -0
  85. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/routes/aux/_runner.py +0 -0
  86. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/routes/aux/validate_user_settings.py +0 -0
  87. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/.gitignore +0 -0
  88. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/__init__.py +0 -0
  89. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/async_wrap.py +0 -0
  90. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/components.py +0 -0
  91. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/compress_folder.py +0 -0
  92. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/exceptions.py +0 -0
  93. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/executors/__init__.py +0 -0
  94. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/executors/slurm/__init__.py +0 -0
  95. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/executors/slurm/_batching.py +0 -0
  96. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/executors/slurm/_slurm_config.py +0 -0
  97. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/executors/slurm/remote.py +0 -0
  98. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/executors/slurm/ssh/__init__.py +0 -0
  99. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/executors/slurm/ssh/_executor_wait_thread.py +0 -0
  100. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/executors/slurm/ssh/_slurm_job.py +0 -0
  101. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/executors/slurm/ssh/executor.py +0 -0
  102. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/executors/slurm/sudo/__init__.py +0 -0
  103. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/executors/slurm/sudo/_check_jobs_status.py +0 -0
  104. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/executors/slurm/sudo/_executor_wait_thread.py +0 -0
  105. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/executors/slurm/sudo/_subprocess_run_as_user.py +0 -0
  106. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/executors/slurm/sudo/executor.py +0 -0
  107. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/extract_archive.py +0 -0
  108. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/filenames.py +0 -0
  109. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/run_subprocess.py +0 -0
  110. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/set_start_and_last_task_index.py +0 -0
  111. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/shutdown.py +0 -0
  112. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/task_files.py +0 -0
  113. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/v1/__init__.py +0 -0
  114. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/v1/_common.py +0 -0
  115. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/v1/_local/__init__.py +0 -0
  116. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/v1/_local/_local_config.py +0 -0
  117. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/v1/_local/_submit_setup.py +0 -0
  118. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/v1/_local/executor.py +0 -0
  119. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/v1/_slurm/__init__.py +0 -0
  120. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/v1/_slurm/_submit_setup.py +0 -0
  121. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/v1/_slurm/get_slurm_config.py +0 -0
  122. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/v1/common.py +0 -0
  123. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/v1/handle_failed_job.py +0 -0
  124. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/v2/__init__.py +0 -0
  125. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/v2/_local/__init__.py +0 -0
  126. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/v2/_local/_local_config.py +0 -0
  127. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/v2/_local/_submit_setup.py +0 -0
  128. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/v2/_local/executor.py +0 -0
  129. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/v2/_local_experimental/__init__.py +0 -0
  130. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/v2/_local_experimental/_local_config.py +0 -0
  131. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/v2/_local_experimental/_submit_setup.py +0 -0
  132. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/v2/_local_experimental/executor.py +0 -0
  133. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/v2/_slurm_common/__init__.py +0 -0
  134. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/v2/_slurm_common/get_slurm_config.py +0 -0
  135. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/v2/_slurm_ssh/__init__.py +0 -0
  136. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/v2/_slurm_ssh/_submit_setup.py +0 -0
  137. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/v2/_slurm_sudo/__init__.py +0 -0
  138. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/v2/_slurm_sudo/_submit_setup.py +0 -0
  139. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/v2/deduplicate_list.py +0 -0
  140. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/v2/handle_failed_job.py +0 -0
  141. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/v2/merge_outputs.py +0 -0
  142. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/v2/runner.py +0 -0
  143. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/v2/runner_functions.py +0 -0
  144. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/v2/runner_functions_low_level.py +0 -0
  145. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/v2/task_interface.py +0 -0
  146. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/runner/versions.py +0 -0
  147. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/schemas/__init__.py +0 -0
  148. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/schemas/_validators.py +0 -0
  149. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/schemas/user.py +0 -0
  150. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/schemas/user_group.py +0 -0
  151. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/schemas/user_settings.py +0 -0
  152. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/schemas/v1/__init__.py +0 -0
  153. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/schemas/v1/applyworkflow.py +0 -0
  154. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/schemas/v1/dataset.py +0 -0
  155. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/schemas/v1/dumps.py +0 -0
  156. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/schemas/v1/manifest.py +0 -0
  157. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/schemas/v1/project.py +0 -0
  158. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/schemas/v1/state.py +0 -0
  159. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/schemas/v1/task.py +0 -0
  160. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/schemas/v1/task_collection.py +0 -0
  161. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/schemas/v1/workflow.py +0 -0
  162. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/schemas/v2/dataset.py +0 -0
  163. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/schemas/v2/dumps.py +0 -0
  164. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/schemas/v2/job.py +0 -0
  165. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/schemas/v2/manifest.py +0 -0
  166. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/schemas/v2/project.py +0 -0
  167. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/schemas/v2/status.py +0 -0
  168. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/schemas/v2/task.py +0 -0
  169. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/schemas/v2/task_collection.py +0 -0
  170. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/schemas/v2/workflow.py +0 -0
  171. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/schemas/v2/workflowtask.py +0 -0
  172. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/app/user_settings.py +0 -0
  173. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/data_migrations/README.md +0 -0
  174. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/data_migrations/tools.py +0 -0
  175. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/gunicorn_fractal.py +0 -0
  176. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/images/__init__.py +0 -0
  177. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/images/models.py +0 -0
  178. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/images/tools.py +0 -0
  179. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/logger.py +0 -0
  180. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/main.py +0 -0
  181. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/migrations/README +0 -0
  182. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/migrations/env.py +0 -0
  183. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/migrations/naming_convention.py +0 -0
  184. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/migrations/script.py.mako +0 -0
  185. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/migrations/versions/034a469ec2eb_task_groups.py +0 -0
  186. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/migrations/versions/091b01f51f88_add_usergroup_and_linkusergroup_table.py +0 -0
  187. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/migrations/versions/4c308bcaea2b_add_task_args_schema_and_task_args_.py +0 -0
  188. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/migrations/versions/4cedeb448a53_workflowtask_foreign_keys_not_nullables.py +0 -0
  189. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/migrations/versions/501961cfcd85_remove_link_between_v1_and_v2_tasks_.py +0 -0
  190. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/migrations/versions/50a13d6138fd_initial_schema.py +0 -0
  191. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/migrations/versions/5bf02391cfef_v2.py +0 -0
  192. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/migrations/versions/70e77f1c38b0_add_applyworkflow_first_task_index_and_.py +0 -0
  193. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/migrations/versions/71eefd1dd202_add_slurm_accounts.py +0 -0
  194. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/migrations/versions/84bf0fffde30_add_dumps_to_applyworkflow.py +0 -0
  195. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/migrations/versions/8f79bd162e35_add_docs_info_and_docs_link_to_task_.py +0 -0
  196. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/migrations/versions/94a47ea2d3ff_remove_cache_dir_slurm_user_and_slurm_.py +0 -0
  197. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/migrations/versions/97f444d47249_add_applyworkflow_project_dump.py +0 -0
  198. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/migrations/versions/99ea79d9e5d2_add_dataset_history.py +0 -0
  199. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/migrations/versions/9c5ae74c9b98_add_user_settings_table.py +0 -0
  200. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/migrations/versions/9fd26a2b0de4_add_workflow_timestamp_created.py +0 -0
  201. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/migrations/versions/a7f4d6137b53_add_workflow_dump_to_applyworkflow.py +0 -0
  202. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/migrations/versions/d4fe3708d309_make_applyworkflow_workflow_dump_non_.py +0 -0
  203. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/migrations/versions/da2cb2ac4255_user_group_viewer_paths.py +0 -0
  204. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/migrations/versions/e75cac726012_make_applyworkflow_start_timestamp_not_.py +0 -0
  205. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/migrations/versions/efa89c30e0a4_add_project_timestamp_created.py +0 -0
  206. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/migrations/versions/f384e1c0cf5d_drop_task_default_args_columns.py +0 -0
  207. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/py.typed +0 -0
  208. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/ssh/__init__.py +0 -0
  209. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/ssh/_fabric.py +0 -0
  210. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/string_tools.py +0 -0
  211. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/syringe.py +0 -0
  212. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/tasks/__init__.py +0 -0
  213. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/tasks/utils.py +0 -0
  214. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/tasks/v1/_TaskCollectPip.py +0 -0
  215. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/tasks/v1/__init__.py +0 -0
  216. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/tasks/v1/background_operations.py +0 -0
  217. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/tasks/v1/endpoint_operations.py +0 -0
  218. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/tasks/v1/get_collection_data.py +0 -0
  219. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/tasks/v1/utils.py +0 -0
  220. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/tasks/v2/__init__.py +0 -0
  221. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/tasks/v2/background_operations.py +0 -0
  222. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/tasks/v2/database_operations.py +0 -0
  223. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/tasks/v2/endpoint_operations.py +0 -0
  224. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/tasks/v2/templates/_1_create_venv.sh +0 -0
  225. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/tasks/v2/templates/_3_pip_install.sh +0 -0
  226. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/tasks/v2/templates/_4_pip_freeze.sh +0 -0
  227. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/tasks/v2/templates/_5_pip_show.sh +0 -0
  228. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/tasks/v2/utils.py +0 -0
  229. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/urls.py +0 -0
  230. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/utils.py +0 -0
  231. {fractal_server-2.7.0a11 → fractal_server-2.7.1}/fractal_server/zip_tools.py +0 -0
@@ -1,35 +1,29 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: fractal-server
3
- Version: 2.7.0a11
3
+ Version: 2.7.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
7
7
  Author: Tommaso Comparin
8
8
  Author-email: tommaso.comparin@exact-lab.it
9
- Requires-Python: >=3.9,<4.0
9
+ Requires-Python: >=3.10,<4.0
10
10
  Classifier: License :: OSI Approved :: BSD License
11
11
  Classifier: Programming Language :: Python :: 3
12
- Classifier: Programming Language :: Python :: 3.9
13
12
  Classifier: Programming Language :: Python :: 3.10
14
13
  Classifier: Programming Language :: Python :: 3.11
15
14
  Classifier: Programming Language :: Python :: 3.12
16
- Provides-Extra: gunicorn
17
- Provides-Extra: postgres
18
- Provides-Extra: postgres-psycopg-binary
19
15
  Requires-Dist: aiosqlite (>=0.19.0,<0.20.0)
20
16
  Requires-Dist: alembic (>=1.13.1,<2.0.0)
21
- Requires-Dist: asyncpg (>=0.29.0,<0.30.0) ; extra == "postgres"
22
17
  Requires-Dist: bcrypt (==4.0.1)
23
18
  Requires-Dist: cloudpickle (>=3.0.0,<3.1.0)
24
19
  Requires-Dist: clusterfutures (>=0.5,<0.6)
25
20
  Requires-Dist: fabric (>=3.2.2,<4.0.0)
26
21
  Requires-Dist: fastapi (>=0.115.0,<0.116.0)
27
22
  Requires-Dist: fastapi-users[oauth] (>=12.1.0,<13.0.0)
28
- Requires-Dist: gunicorn (>=21.2,<23.0) ; extra == "gunicorn"
23
+ Requires-Dist: gunicorn (>=21.2,<23.0)
29
24
  Requires-Dist: packaging (>=23.2,<24.0)
30
25
  Requires-Dist: psutil (>=5.9.8,<6.0.0)
31
- Requires-Dist: psycopg2 (>=2.9.5,<3.0.0) ; extra == "postgres"
32
- Requires-Dist: psycopg[binary] (>=3.1.0,<4.0.0) ; extra == "postgres-psycopg-binary"
26
+ Requires-Dist: psycopg[binary] (>=3.1.0,<4.0.0)
33
27
  Requires-Dist: pydantic (>=1.10.8,<2)
34
28
  Requires-Dist: python-dotenv (>=1.0.0,<2.0.0)
35
29
  Requires-Dist: sqlalchemy[asyncio] (>=2.0.23,<2.1)
@@ -0,0 +1 @@
1
+ __VERSION__ = "2.7.1"
@@ -29,7 +29,6 @@ class TaskV2(SQLModel, table=True):
29
29
  sa_column=Column(JSON, server_default="{}", default={}, nullable=False)
30
30
  )
31
31
 
32
- owner: Optional[str] = None
33
32
  version: Optional[str] = None
34
33
  args_schema_non_parallel: Optional[dict[str, Any]] = Field(
35
34
  sa_column=Column(JSON), default=None
@@ -44,7 +43,7 @@ class TaskV2(SQLModel, table=True):
44
43
  input_types: dict[str, bool] = Field(sa_column=Column(JSON), default={})
45
44
  output_types: dict[str, bool] = Field(sa_column=Column(JSON), default={})
46
45
 
47
- taskgroupv2_id: Optional[int] = Field(foreign_key="taskgroupv2.id")
46
+ taskgroupv2_id: int = Field(foreign_key="taskgroupv2.id")
48
47
 
49
48
  category: Optional[str] = None
50
49
  modality: Optional[str] = None
@@ -21,6 +21,7 @@ from fractal_server.app.routes.auth._aux_auth import (
21
21
  )
22
22
  from fractal_server.app.schemas.v2 import TaskGroupReadV2
23
23
  from fractal_server.app.schemas.v2 import TaskGroupUpdateV2
24
+ from fractal_server.app.schemas.v2 import TaskGroupV2OriginEnum
24
25
  from fractal_server.logger import set_logger
25
26
 
26
27
  router = APIRouter()
@@ -50,6 +51,8 @@ async def query_task_group_list(
50
51
  user_group_id: Optional[int] = None,
51
52
  private: Optional[bool] = None,
52
53
  active: Optional[bool] = None,
54
+ pkg_name: Optional[str] = None,
55
+ origin: Optional[TaskGroupV2OriginEnum] = None,
53
56
  user: UserOAuth = Depends(current_active_superuser),
54
57
  db: AsyncSession = Depends(get_async_db),
55
58
  ) -> list[TaskGroupReadV2]:
@@ -75,6 +78,10 @@ async def query_task_group_list(
75
78
  stm = stm.where(is_(TaskGroupV2.active, True))
76
79
  else:
77
80
  stm = stm.where(is_(TaskGroupV2.active, False))
81
+ if origin is not None:
82
+ stm = stm.where(TaskGroupV2.origin == origin)
83
+ if pkg_name is not None:
84
+ stm = stm.where(TaskGroupV2.pkg_name.icontains(pkg_name))
78
85
 
79
86
  res = await db.execute(stm)
80
87
  task_groups_list = res.scalars().all()
@@ -24,6 +24,7 @@ from fractal_server.app.models.v2 import TaskV2
24
24
  from fractal_server.app.routes.auth import current_active_user
25
25
  from fractal_server.app.routes.auth import current_active_verified_user
26
26
  from fractal_server.app.schemas.v2 import TaskCreateV2
27
+ from fractal_server.app.schemas.v2 import TaskGroupV2OriginEnum
27
28
  from fractal_server.app.schemas.v2 import TaskReadV2
28
29
  from fractal_server.app.schemas.v2 import TaskUpdateV2
29
30
  from fractal_server.logger import set_logger
@@ -200,7 +201,7 @@ async def create_task(
200
201
  user_group_id=user_group_id,
201
202
  active=True,
202
203
  task_list=[db_task],
203
- origin="other",
204
+ origin=TaskGroupV2OriginEnum.OTHER,
204
205
  version=db_task.version,
205
206
  pkg_name=pkg_name,
206
207
  )
@@ -30,6 +30,7 @@ from ._aux_functions_tasks import _verify_non_duplication_user_constraint
30
30
  from fractal_server.app.models import UserOAuth
31
31
  from fractal_server.app.routes.auth import current_active_user
32
32
  from fractal_server.app.routes.auth import current_active_verified_user
33
+ from fractal_server.app.schemas.v2 import TaskGroupV2OriginEnum
33
34
  from fractal_server.tasks.utils import _normalize_package_name
34
35
  from fractal_server.tasks.utils import get_collection_log_v2
35
36
  from fractal_server.tasks.v2.background_operations import (
@@ -121,11 +122,11 @@ async def collect_tasks_pip(
121
122
  wheel_info["distribution"]
122
123
  )
123
124
  task_group_attrs["version"] = wheel_info["version"]
124
- task_group_attrs["origin"] = "wheel-file"
125
+ task_group_attrs["origin"] = TaskGroupV2OriginEnum.WHEELFILE
125
126
  else:
126
127
  pkg_name = task_collect.package
127
128
  task_group_attrs["pkg_name"] = _normalize_package_name(pkg_name)
128
- task_group_attrs["origin"] = "pypi"
129
+ task_group_attrs["origin"] = TaskGroupV2OriginEnum.PYPI
129
130
  latest_version = await get_package_version_from_pypi(
130
131
  task_collect.package,
131
132
  task_collect.package_version,
@@ -21,6 +21,7 @@ from fractal_server.app.routes.auth import current_active_verified_user
21
21
  from fractal_server.app.schemas.v2 import TaskCollectCustomV2
22
22
  from fractal_server.app.schemas.v2 import TaskCreateV2
23
23
  from fractal_server.app.schemas.v2 import TaskGroupCreateV2
24
+ from fractal_server.app.schemas.v2 import TaskGroupV2OriginEnum
24
25
  from fractal_server.app.schemas.v2 import TaskReadV2
25
26
  from fractal_server.config import get_settings
26
27
  from fractal_server.logger import set_logger
@@ -140,7 +141,7 @@ async def collect_task_custom(
140
141
 
141
142
  # Prepare task-group attributes
142
143
  task_group_attrs = dict(
143
- origin="other",
144
+ origin=TaskGroupV2OriginEnum.OTHER,
144
145
  pkg_name=task_collect.label,
145
146
  user_id=user.id,
146
147
  user_group_id=user_group_id,
@@ -30,6 +30,7 @@ from .task_collection import TaskCollectPipV2 # noqa F401
30
30
  from .task_group import TaskGroupCreateV2 # noqa F401
31
31
  from .task_group import TaskGroupReadV2 # noqa F401
32
32
  from .task_group import TaskGroupUpdateV2 # noqa F401
33
+ from .task_group import TaskGroupV2OriginEnum # noqa F401
33
34
  from .workflow import WorkflowCreateV2 # noqa F401
34
35
  from .workflow import WorkflowExportV2 # noqa F401
35
36
  from .workflow import WorkflowImportV2 # noqa F401
@@ -1,4 +1,5 @@
1
1
  from datetime import datetime
2
+ from enum import Enum
2
3
  from typing import Literal
3
4
  from typing import Optional
4
5
 
@@ -13,11 +14,17 @@ from .._validators import valstr
13
14
  from .task import TaskReadV2
14
15
 
15
16
 
17
+ class TaskGroupV2OriginEnum(str, Enum):
18
+ PYPI = "pypi"
19
+ WHEELFILE = "wheel-file"
20
+ OTHER = "other"
21
+
22
+
16
23
  class TaskGroupCreateV2(BaseModel, extra=Extra.forbid):
17
24
  user_id: int
18
25
  user_group_id: Optional[int] = None
19
26
  active: bool = True
20
- origin: Literal["pypi", "wheel-file", "other"]
27
+ origin: TaskGroupV2OriginEnum
21
28
  pkg_name: str
22
29
  version: Optional[str] = None
23
30
  python_version: Optional[str] = None
@@ -315,13 +315,20 @@ async def _create_first_user(
315
315
 
316
316
 
317
317
  def _create_first_group():
318
+ """
319
+ Create a `UserGroup` with `name=FRACTAL_DEFAULT_GROUP_NAME`, if missing.
320
+ """
318
321
  function_logger = set_logger("fractal_server.create_first_group")
319
322
 
320
323
  function_logger.info(
321
324
  f"START _create_first_group, with name '{FRACTAL_DEFAULT_GROUP_NAME}'"
322
325
  )
323
326
  with next(get_sync_db()) as db:
324
- group_all = db.execute(select(UserGroup))
327
+ group_all = db.execute(
328
+ select(UserGroup).where(
329
+ UserGroup.name == FRACTAL_DEFAULT_GROUP_NAME
330
+ )
331
+ )
325
332
  if group_all.scalars().one_or_none() is None:
326
333
  first_group = UserGroup(name=FRACTAL_DEFAULT_GROUP_NAME)
327
334
  db.add(first_group)
@@ -167,9 +167,9 @@ class Settings(BaseSettings):
167
167
  ###########################################################################
168
168
  # DATABASE
169
169
  ###########################################################################
170
- DB_ENGINE: Literal["sqlite", "postgres", "postgres-psycopg"] = "sqlite"
170
+ DB_ENGINE: Literal["sqlite", "postgres-psycopg"] = "sqlite"
171
171
  """
172
- Select which database engine to use (supported: `sqlite` and `postgres`).
172
+ Database engine to use (supported: `sqlite`, `postgres-psycopg`).
173
173
  """
174
174
  DB_ECHO: bool = False
175
175
  """
@@ -203,16 +203,7 @@ class Settings(BaseSettings):
203
203
 
204
204
  @property
205
205
  def DATABASE_ASYNC_URL(self) -> URL:
206
- if self.DB_ENGINE == "postgres":
207
- url = URL.create(
208
- drivername="postgresql+asyncpg",
209
- username=self.POSTGRES_USER,
210
- password=self.POSTGRES_PASSWORD,
211
- host=self.POSTGRES_HOST,
212
- port=self.POSTGRES_PORT,
213
- database=self.POSTGRES_DB,
214
- )
215
- elif self.DB_ENGINE == "postgres-psycopg":
206
+ if self.DB_ENGINE == "postgres-psycopg":
216
207
  url = URL.create(
217
208
  drivername="postgresql+psycopg",
218
209
  username=self.POSTGRES_USER,
@@ -235,11 +226,7 @@ class Settings(BaseSettings):
235
226
 
236
227
  @property
237
228
  def DATABASE_SYNC_URL(self):
238
- if self.DB_ENGINE == "postgres":
239
- return self.DATABASE_ASYNC_URL.set(
240
- drivername="postgresql+psycopg2"
241
- )
242
- elif self.DB_ENGINE == "postgres-psycopg":
229
+ if self.DB_ENGINE == "postgres-psycopg":
243
230
  return self.DATABASE_ASYNC_URL.set(drivername="postgresql+psycopg")
244
231
  else:
245
232
  if not self.SQLITE_PATH:
@@ -546,20 +533,13 @@ class Settings(BaseSettings):
546
533
  """
547
534
  Checks that db environment variables are properly set.
548
535
  """
549
- if self.DB_ENGINE == "postgres":
536
+ if self.DB_ENGINE == "postgres-psycopg":
550
537
  if not self.POSTGRES_DB:
551
538
  raise FractalConfigurationError(
552
- "POSTGRES_DB cannot be None when DB_ENGINE=postgres."
553
- )
554
- try:
555
- import psycopg2 # noqa: F401
556
- import asyncpg # noqa: F401
557
- except ModuleNotFoundError:
558
- raise FractalConfigurationError(
559
- "DB engine is `postgres` but `psycopg2` or `asyncpg` "
560
- "are not available"
539
+ "POSTGRES_DB cannot be None when DB_ENGINE="
540
+ "postgres-psycopg."
561
541
  )
562
- elif self.DB_ENGINE == "postgres-psycopg":
542
+
563
543
  try:
564
544
  import psycopg # noqa: F401
565
545
  except ModuleNotFoundError:
@@ -0,0 +1,42 @@
1
+ """Update TaskV2 post 2.7.0
2
+
3
+ Revision ID: 8e8f227a3e36
4
+ Revises: 034a469ec2eb
5
+ Create Date: 2024-10-29 09:01:33.075251
6
+
7
+ """
8
+ import sqlalchemy as sa
9
+ from alembic import op
10
+
11
+
12
+ # revision identifiers, used by Alembic.
13
+ revision = "8e8f227a3e36"
14
+ down_revision = "034a469ec2eb"
15
+ branch_labels = None
16
+ depends_on = None
17
+
18
+
19
+ def upgrade() -> None:
20
+ # ### commands auto generated by Alembic - please adjust! ###
21
+ with op.batch_alter_table("taskv2", schema=None) as batch_op:
22
+ batch_op.alter_column(
23
+ "taskgroupv2_id", existing_type=sa.INTEGER(), nullable=False
24
+ )
25
+ batch_op.drop_column("owner")
26
+
27
+ # ### end Alembic commands ###
28
+
29
+
30
+ def downgrade() -> None:
31
+ # ### commands auto generated by Alembic - please adjust! ###
32
+ with op.batch_alter_table("taskv2", schema=None) as batch_op:
33
+ batch_op.add_column(
34
+ sa.Column(
35
+ "owner", sa.VARCHAR(), autoincrement=False, nullable=True
36
+ )
37
+ )
38
+ batch_op.alter_column(
39
+ "taskgroupv2_id", existing_type=sa.INTEGER(), nullable=True
40
+ )
41
+
42
+ # ### end Alembic commands ###
@@ -73,6 +73,11 @@ async def _pip_install(
73
73
  ),
74
74
  logger_name=logger_name,
75
75
  )
76
+ await execute_command(
77
+ cwd=Path(task_group.venv_path),
78
+ command=f"{python_bin} -m pip install setuptools",
79
+ logger_name=logger_name,
80
+ )
76
81
  await execute_command(
77
82
  cwd=Path(task_group.venv_path),
78
83
  command=f"{python_bin} -m pip install {pip_install_str}",
@@ -205,7 +205,7 @@ def background_collect_pip_ssh(
205
205
  remove_venv_folder_upon_failure = True
206
206
 
207
207
  stdout = _customize_and_run_template(
208
- script_filename="_2_upgrade_pip.sh",
208
+ script_filename="_2_preliminary_pip_operations.sh",
209
209
  **common_args,
210
210
  )
211
211
  stdout = _customize_and_run_template(
@@ -15,6 +15,7 @@ VENVPYTHON=${PACKAGE_ENV_DIR}/bin/python
15
15
  # Upgrade pip
16
16
  write_log "START upgrade pip"
17
17
  "$VENVPYTHON" -m pip install "pip<=__FRACTAL_MAX_PIP_VERSION__" --upgrade
18
+ "$VENVPYTHON" -m pip install setuptools
18
19
  write_log "END upgrade pip"
19
20
  echo
20
21
 
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "fractal-server"
3
- version = "2.7.0a11"
3
+ version = "2.7.1"
4
4
  description = "Server component of the Fractal analytics platform"
5
5
  authors = [
6
6
  "Tommaso Comparin <tommaso.comparin@exact-lab.it>",
@@ -24,7 +24,7 @@ exclude = [
24
24
 
25
25
 
26
26
  [tool.poetry.dependencies]
27
- python = "^3.9"
27
+ python = "^3.10"
28
28
  python-dotenv = "^1.0.0"
29
29
  fastapi = "^0.115.0"
30
30
  sqlmodel = "^0.0.21"
@@ -40,17 +40,12 @@ clusterfutures = "^0.5"
40
40
  cloudpickle = ">=3.0.0,<3.1.0"
41
41
  fabric = "^3.2.2"
42
42
 
43
- asyncpg = { version = "^0.29.0", optional = true }
44
- gunicorn = { version = ">=21.2,<23.0", optional = true }
45
- psycopg = { version = "^3.1.0", extras=["binary"], optional=true }
46
- psycopg2 = { version = "^2.9.5", optional = true }
43
+ gunicorn = { version = ">=21.2,<23.0" }
44
+ psycopg = { version = "^3.1.0", extras=["binary"] }
47
45
  psutil = "^5.9.8"
48
46
  uvicorn-worker = "^0.2.0"
49
47
 
50
48
  [tool.poetry.extras]
51
- postgres = ["asyncpg", "psycopg2"]
52
- gunicorn = ["gunicorn"]
53
- postgres-psycopg-binary = ["psycopg"]
54
49
 
55
50
  [tool.poetry.group.dev.dependencies]
56
51
  asgi-lifespan = "^2"
@@ -92,7 +87,7 @@ filterwarnings = [
92
87
  ]
93
88
 
94
89
  [tool.bumpver]
95
- current_version = "2.7.0a11"
90
+ current_version = "2.7.1"
96
91
  version_pattern = "MAJOR.MINOR.PATCH[PYTAGNUM]"
97
92
  commit_message = "bump version {old_version} -> {new_version}"
98
93
  commit = true
@@ -1 +0,0 @@
1
- __VERSION__ = "2.7.0a11"