fractal-server 2.18.4__tar.gz → 2.18.6__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 (274) hide show
  1. {fractal_server-2.18.4 → fractal_server-2.18.6}/PKG-INFO +6 -6
  2. fractal_server-2.18.6/fractal_server/__init__.py +1 -0
  3. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/db/__init__.py +1 -7
  4. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/admin/v2/job.py +0 -2
  5. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/api/v2/images.py +0 -1
  6. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/api/v2/job.py +0 -3
  7. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/api/v2/project.py +0 -3
  8. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/api/v2/task.py +0 -3
  9. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/api/v2/task_group.py +1 -0
  10. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/api/v2/workflow.py +0 -2
  11. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/api/v2/workflowtask.py +0 -1
  12. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/auth/oauth.py +3 -1
  13. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/auth/viewer_paths.py +11 -7
  14. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/security/signup_email.py +2 -1
  15. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/images/tools.py +1 -1
  16. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/runner/executors/local/runner.py +2 -0
  17. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/runner/executors/slurm_ssh/runner.py +5 -0
  18. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/runner/executors/slurm_sudo/runner.py +5 -0
  19. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/runner/v2/runner.py +0 -1
  20. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/runner/v2/submit_workflow.py +0 -1
  21. {fractal_server-2.18.4 → fractal_server-2.18.6}/pyproject.toml +8 -9
  22. fractal_server-2.18.4/fractal_server/__init__.py +0 -1
  23. {fractal_server-2.18.4 → fractal_server-2.18.6}/LICENSE +0 -0
  24. {fractal_server-2.18.4 → fractal_server-2.18.6}/README.md +0 -0
  25. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/__main__.py +0 -0
  26. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/alembic.ini +0 -0
  27. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/__init__.py +0 -0
  28. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/models/__init__.py +0 -0
  29. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/models/linkusergroup.py +0 -0
  30. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/models/linkuserproject.py +0 -0
  31. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/models/security.py +0 -0
  32. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/models/v2/__init__.py +0 -0
  33. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/models/v2/accounting.py +0 -0
  34. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/models/v2/dataset.py +0 -0
  35. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/models/v2/history.py +0 -0
  36. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/models/v2/job.py +0 -0
  37. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/models/v2/profile.py +0 -0
  38. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/models/v2/project.py +0 -0
  39. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/models/v2/resource.py +0 -0
  40. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/models/v2/task.py +0 -0
  41. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/models/v2/task_group.py +0 -0
  42. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/models/v2/workflow.py +0 -0
  43. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/models/v2/workflowtask.py +0 -0
  44. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/__init__.py +0 -0
  45. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/admin/__init__.py +0 -0
  46. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/admin/v2/__init__.py +0 -0
  47. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/admin/v2/_aux_functions.py +0 -0
  48. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/admin/v2/accounting.py +0 -0
  49. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/admin/v2/impersonate.py +0 -0
  50. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/admin/v2/profile.py +0 -0
  51. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/admin/v2/resource.py +0 -0
  52. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/admin/v2/sharing.py +0 -0
  53. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/admin/v2/task.py +0 -0
  54. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/admin/v2/task_group.py +0 -0
  55. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/admin/v2/task_group_lifecycle.py +0 -0
  56. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/api/__init__.py +0 -0
  57. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/api/v2/__init__.py +0 -0
  58. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/api/v2/_aux_functions.py +0 -0
  59. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/api/v2/_aux_functions_history.py +0 -0
  60. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/api/v2/_aux_functions_sharing.py +0 -0
  61. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/api/v2/_aux_functions_task_lifecycle.py +0 -0
  62. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/api/v2/_aux_functions_task_version_update.py +0 -0
  63. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/api/v2/_aux_functions_tasks.py +0 -0
  64. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/api/v2/_aux_task_group_disambiguation.py +0 -0
  65. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/api/v2/dataset.py +0 -0
  66. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/api/v2/history.py +0 -0
  67. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/api/v2/pre_submission_checks.py +0 -0
  68. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/api/v2/sharing.py +0 -0
  69. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/api/v2/status_legacy.py +0 -0
  70. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/api/v2/submit.py +0 -0
  71. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/api/v2/task_collection.py +0 -0
  72. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/api/v2/task_collection_custom.py +0 -0
  73. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/api/v2/task_collection_pixi.py +0 -0
  74. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/api/v2/task_group_lifecycle.py +0 -0
  75. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/api/v2/task_version_update.py +0 -0
  76. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/api/v2/workflow_import.py +0 -0
  77. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/auth/__init__.py +0 -0
  78. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/auth/_aux_auth.py +0 -0
  79. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/auth/current_user.py +0 -0
  80. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/auth/group.py +0 -0
  81. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/auth/login.py +0 -0
  82. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/auth/register.py +0 -0
  83. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/auth/router.py +0 -0
  84. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/auth/users.py +0 -0
  85. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/aux/__init__.py +0 -0
  86. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/aux/_job.py +0 -0
  87. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/aux/_runner.py +0 -0
  88. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/aux/validate_user_profile.py +0 -0
  89. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/routes/pagination.py +0 -0
  90. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/schemas/__init__.py +0 -0
  91. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/schemas/user.py +0 -0
  92. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/schemas/user_group.py +0 -0
  93. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/schemas/v2/__init__.py +0 -0
  94. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/schemas/v2/accounting.py +0 -0
  95. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/schemas/v2/dataset.py +0 -0
  96. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/schemas/v2/dumps.py +0 -0
  97. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/schemas/v2/history.py +0 -0
  98. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/schemas/v2/job.py +0 -0
  99. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/schemas/v2/manifest.py +0 -0
  100. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/schemas/v2/profile.py +0 -0
  101. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/schemas/v2/project.py +0 -0
  102. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/schemas/v2/resource.py +0 -0
  103. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/schemas/v2/sharing.py +0 -0
  104. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/schemas/v2/status_legacy.py +0 -0
  105. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/schemas/v2/task.py +0 -0
  106. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/schemas/v2/task_collection.py +0 -0
  107. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/schemas/v2/task_group.py +0 -0
  108. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/schemas/v2/workflow.py +0 -0
  109. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/schemas/v2/workflowtask.py +0 -0
  110. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/security/__init__.py +0 -0
  111. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/app/shutdown.py +0 -0
  112. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/config/__init__.py +0 -0
  113. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/config/_data.py +0 -0
  114. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/config/_database.py +0 -0
  115. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/config/_email.py +0 -0
  116. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/config/_main.py +0 -0
  117. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/config/_oauth.py +0 -0
  118. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/config/_settings_config.py +0 -0
  119. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/data_migrations/tools.py +0 -0
  120. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/exceptions.py +0 -0
  121. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/gunicorn_fractal.py +0 -0
  122. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/images/__init__.py +0 -0
  123. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/images/models.py +0 -0
  124. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/images/status_tools.py +0 -0
  125. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/logger.py +0 -0
  126. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/main.py +0 -0
  127. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/env.py +0 -0
  128. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/naming_convention.py +0 -0
  129. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/034a469ec2eb_task_groups.py +0 -0
  130. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/068496367952_drop_taskgroup_venv_size_and_files_.py +0 -0
  131. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/091b01f51f88_add_usergroup_and_linkusergroup_table.py +0 -0
  132. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/0f5f85bb2ae7_add_pre_pinned_packages.py +0 -0
  133. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/19eca0dd47a9_user_settings_project_dir.py +0 -0
  134. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/1a83a5260664_rename.py +0 -0
  135. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/1eac13a26c83_drop_v1_tables.py +0 -0
  136. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/316140ff7ee1_remove_usersettings_cache_dir.py +0 -0
  137. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/40d6d6511b20_add_index_to_history_models.py +0 -0
  138. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/45fbb391d7af_make_resource_id_fk_non_nullable.py +0 -0
  139. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/47351f8c7ebc_drop_dataset_filters.py +0 -0
  140. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/49d0856e9569_drop_table.py +0 -0
  141. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/4c308bcaea2b_add_task_args_schema_and_task_args_.py +0 -0
  142. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/4cedeb448a53_workflowtask_foreign_keys_not_nullables.py +0 -0
  143. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/501961cfcd85_remove_link_between_v1_and_v2_tasks_.py +0 -0
  144. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/50a13d6138fd_initial_schema.py +0 -0
  145. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/5bf02391cfef_v2.py +0 -0
  146. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/70e77f1c38b0_add_applyworkflow_first_task_index_and_.py +0 -0
  147. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/71eefd1dd202_add_slurm_accounts.py +0 -0
  148. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/7673fe18c05d_remove_project_dir_server_default.py +0 -0
  149. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/7910eed4cf97_user_project_dirs_and_usergroup_viewer_.py +0 -0
  150. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/791ce783d3d8_add_indices.py +0 -0
  151. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/83bc2ad3ffcc_2_17_0.py +0 -0
  152. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/84bf0fffde30_add_dumps_to_applyworkflow.py +0 -0
  153. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/88270f589c9b_add_prevent_new_submissions.py +0 -0
  154. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/8e8f227a3e36_update_taskv2_post_2_7_0.py +0 -0
  155. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/8f79bd162e35_add_docs_info_and_docs_link_to_task_.py +0 -0
  156. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/94a47ea2d3ff_remove_cache_dir_slurm_user_and_slurm_.py +0 -0
  157. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/969d84257cac_add_historyrun_task_id.py +0 -0
  158. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/97f444d47249_add_applyworkflow_project_dump.py +0 -0
  159. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/981d588fe248_add_executor_error_log.py +0 -0
  160. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/99ea79d9e5d2_add_dataset_history.py +0 -0
  161. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/9c5ae74c9b98_add_user_settings_table.py +0 -0
  162. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/9db60297b8b2_set_ondelete.py +0 -0
  163. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/9fd26a2b0de4_add_workflow_timestamp_created.py +0 -0
  164. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/a7f4d6137b53_add_workflow_dump_to_applyworkflow.py +0 -0
  165. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/af1ef1c83c9b_add_accounting_tables.py +0 -0
  166. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/af8673379a5c_drop_old_filter_columns.py +0 -0
  167. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/b1e7f7a1ff71_task_group_for_pixi.py +0 -0
  168. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/b3ffb095f973_json_to_jsonb.py +0 -0
  169. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/b7477cc98f45_2_18_1.py +0 -0
  170. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/bc0e8b3327a7_project_sharing.py +0 -0
  171. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/c90a7c76e996_job_id_in_history_run.py +0 -0
  172. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/caba9fb1ea5e_drop_useroauth_user_settings_id.py +0 -0
  173. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/d256a7379ab8_taskgroup_activity_and_venv_info_to_.py +0 -0
  174. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/d4fe3708d309_make_applyworkflow_workflow_dump_non_.py +0 -0
  175. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/da2cb2ac4255_user_group_viewer_paths.py +0 -0
  176. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/db09233ad13a_split_filters_and_keep_old_columns.py +0 -0
  177. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/e0e717ae2f26_delete_linkuserproject_ondelete_project.py +0 -0
  178. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/e75cac726012_make_applyworkflow_start_timestamp_not_.py +0 -0
  179. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/e81103413827_add_job_type_filters.py +0 -0
  180. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/efa89c30e0a4_add_project_timestamp_created.py +0 -0
  181. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/f0702066b007_one_submitted_job_per_dataset.py +0 -0
  182. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/f37aceb45062_make_historyunit_logfile_required.py +0 -0
  183. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/f384e1c0cf5d_drop_task_default_args_columns.py +0 -0
  184. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/migrations/versions/fbce16ff4e47_new_history_items.py +0 -0
  185. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/py.typed +0 -0
  186. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/runner/__init__.py +0 -0
  187. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/runner/components.py +0 -0
  188. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/runner/config/__init__.py +0 -0
  189. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/runner/config/_local.py +0 -0
  190. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/runner/config/_slurm.py +0 -0
  191. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/runner/config/slurm_mem_to_MB.py +0 -0
  192. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/runner/exceptions.py +0 -0
  193. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/runner/executors/__init__.py +0 -0
  194. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/runner/executors/base_runner.py +0 -0
  195. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/runner/executors/call_command_wrapper.py +0 -0
  196. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/runner/executors/local/__init__.py +0 -0
  197. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/runner/executors/local/get_local_config.py +0 -0
  198. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/runner/executors/slurm_common/__init__.py +0 -0
  199. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/runner/executors/slurm_common/_batching.py +0 -0
  200. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/runner/executors/slurm_common/_job_states.py +0 -0
  201. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/runner/executors/slurm_common/base_slurm_runner.py +0 -0
  202. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/runner/executors/slurm_common/get_slurm_config.py +0 -0
  203. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/runner/executors/slurm_common/remote.py +0 -0
  204. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/runner/executors/slurm_common/slurm_config.py +0 -0
  205. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/runner/executors/slurm_common/slurm_job_task_models.py +0 -0
  206. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/runner/executors/slurm_ssh/__init__.py +0 -0
  207. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/runner/executors/slurm_ssh/run_subprocess.py +0 -0
  208. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/runner/executors/slurm_ssh/tar_commands.py +0 -0
  209. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/runner/executors/slurm_sudo/__init__.py +0 -0
  210. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/runner/executors/slurm_sudo/_subprocess_run_as_user.py +0 -0
  211. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/runner/filenames.py +0 -0
  212. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/runner/set_start_and_last_task_index.py +0 -0
  213. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/runner/task_files.py +0 -0
  214. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/runner/v2/__init__.py +0 -0
  215. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/runner/v2/_local.py +0 -0
  216. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/runner/v2/_slurm_ssh.py +0 -0
  217. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/runner/v2/_slurm_sudo.py +0 -0
  218. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/runner/v2/db_tools.py +0 -0
  219. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/runner/v2/deduplicate_list.py +0 -0
  220. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/runner/v2/merge_outputs.py +0 -0
  221. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/runner/v2/runner_functions.py +0 -0
  222. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/runner/v2/task_interface.py +0 -0
  223. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/runner/versions.py +0 -0
  224. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/ssh/__init__.py +0 -0
  225. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/ssh/_fabric.py +0 -0
  226. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/string_tools.py +0 -0
  227. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/syringe.py +0 -0
  228. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/tasks/__init__.py +0 -0
  229. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/tasks/config/__init__.py +0 -0
  230. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/tasks/config/_pixi.py +0 -0
  231. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/tasks/config/_python.py +0 -0
  232. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/tasks/utils.py +0 -0
  233. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/tasks/v2/__init__.py +0 -0
  234. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/tasks/v2/local/__init__.py +0 -0
  235. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/tasks/v2/local/_utils.py +0 -0
  236. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/tasks/v2/local/collect.py +0 -0
  237. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/tasks/v2/local/collect_pixi.py +0 -0
  238. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/tasks/v2/local/deactivate.py +0 -0
  239. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/tasks/v2/local/deactivate_pixi.py +0 -0
  240. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/tasks/v2/local/delete.py +0 -0
  241. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/tasks/v2/local/reactivate.py +0 -0
  242. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/tasks/v2/local/reactivate_pixi.py +0 -0
  243. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/tasks/v2/ssh/__init__.py +0 -0
  244. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/tasks/v2/ssh/_pixi_slurm_ssh.py +0 -0
  245. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/tasks/v2/ssh/_utils.py +0 -0
  246. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/tasks/v2/ssh/collect.py +0 -0
  247. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/tasks/v2/ssh/collect_pixi.py +0 -0
  248. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/tasks/v2/ssh/deactivate.py +0 -0
  249. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/tasks/v2/ssh/deactivate_pixi.py +0 -0
  250. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/tasks/v2/ssh/delete.py +0 -0
  251. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/tasks/v2/ssh/reactivate.py +0 -0
  252. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/tasks/v2/ssh/reactivate_pixi.py +0 -0
  253. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/tasks/v2/templates/1_create_venv.sh +0 -0
  254. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/tasks/v2/templates/2_pip_install.sh +0 -0
  255. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/tasks/v2/templates/3_pip_freeze.sh +0 -0
  256. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/tasks/v2/templates/4_pip_show.sh +0 -0
  257. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/tasks/v2/templates/5_pip_install_from_freeze.sh +0 -0
  258. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/tasks/v2/templates/pixi_1_extract.sh +0 -0
  259. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/tasks/v2/templates/pixi_2_install.sh +0 -0
  260. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/tasks/v2/templates/pixi_3_post_install.sh +0 -0
  261. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/tasks/v2/utils_background.py +0 -0
  262. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/tasks/v2/utils_database.py +0 -0
  263. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/tasks/v2/utils_package_names.py +0 -0
  264. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/tasks/v2/utils_pixi.py +0 -0
  265. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/tasks/v2/utils_python_interpreter.py +0 -0
  266. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/tasks/v2/utils_templates.py +0 -0
  267. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/types/__init__.py +0 -0
  268. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/types/validators/__init__.py +0 -0
  269. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/types/validators/_common_validators.py +0 -0
  270. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/types/validators/_filter_validators.py +0 -0
  271. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/types/validators/_workflow_task_arguments_validators.py +0 -0
  272. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/urls.py +0 -0
  273. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/utils.py +0 -0
  274. {fractal_server-2.18.4 → fractal_server-2.18.6}/fractal_server/zip_tools.py +0 -0
@@ -1,26 +1,26 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fractal-server
3
- Version: 2.18.4
3
+ Version: 2.18.6
4
4
  Summary: Backend component of the Fractal analytics platform
5
5
  Author: Tommaso Comparin, Marco Franzon, Yuri Chiucconi, Jacopo Nespolo
6
6
  Author-email: Tommaso Comparin <tommaso.comparin@exact-lab.it>, Marco Franzon <marco.franzon@exact-lab.it>, Yuri Chiucconi <yuri.chiucconi@exact-lab.it>, Jacopo Nespolo <jacopo.nespolo@exact-lab.it>
7
7
  License-Expression: BSD-3-Clause
8
8
  License-File: LICENSE
9
- Requires-Dist: fastapi>=0.120.0,<0.121.0
10
- Requires-Dist: sqlmodel==0.0.27
9
+ Requires-Dist: fastapi>=0.128.0,<0.129.0
10
+ Requires-Dist: sqlmodel==0.0.31
11
11
  Requires-Dist: sqlalchemy[asyncio]>=2.0.23,<2.1
12
12
  Requires-Dist: fastapi-users[oauth]>=15,<16
13
13
  Requires-Dist: alembic>=1.13.1,<2.0.0
14
- Requires-Dist: uvicorn>=0.38.0,<0.39.0
14
+ Requires-Dist: uvicorn>=0.40.0,<0.41.0
15
15
  Requires-Dist: uvicorn-worker==0.4.0
16
16
  Requires-Dist: pydantic>=2.12.0,<2.13.0
17
- Requires-Dist: pydantic-settings==2.11.0
17
+ Requires-Dist: pydantic-settings==2.12.0
18
18
  Requires-Dist: packaging>=25.0.0,<26.0.0
19
19
  Requires-Dist: fabric>=3.2.2,<3.3.0
20
20
  Requires-Dist: gunicorn>=23.0,<24.0
21
21
  Requires-Dist: psycopg[binary]>=3.1.0,<4.0.0
22
22
  Requires-Dist: tomli-w>=1.2.0,<1.3.0
23
- Requires-Python: >=3.11, <3.15
23
+ Requires-Python: >=3.12, <3.15
24
24
  Project-URL: changelog, https://github.com/fractal-analytics-platform/fractal-server/blob/main/CHANGELOG.md
25
25
  Project-URL: documentation, https://fractal-analytics-platform.github.io/fractal-server
26
26
  Project-URL: homepage, https://github.com/fractal-analytics-platform/fractal-server
@@ -0,0 +1 @@
1
+ __VERSION__ = "2.18.6"
@@ -54,7 +54,6 @@ class DB:
54
54
  cls._engine_async,
55
55
  class_=AsyncSession,
56
56
  expire_on_commit=False,
57
- future=True,
58
57
  )
59
58
 
60
59
  @classmethod
@@ -68,12 +67,7 @@ class DB:
68
67
  pool_pre_ping=True,
69
68
  )
70
69
 
71
- cls._sync_session_maker = sessionmaker(
72
- bind=cls._engine_sync,
73
- autocommit=False,
74
- autoflush=False,
75
- future=True,
76
- )
70
+ cls._sync_session_maker = sessionmaker(cls._engine_sync)
77
71
 
78
72
  @classmethod
79
73
  async def get_async_db(cls) -> AsyncGenerator[AsyncSession, None]:
@@ -176,7 +176,6 @@ async def view_single_job(
176
176
  status_code=status.HTTP_404_NOT_FOUND,
177
177
  detail=f"Job {job_id} not found",
178
178
  )
179
- await db.close()
180
179
 
181
180
  if show_tmp_logs and (job.status == JobStatusType.SUBMITTED):
182
181
  try:
@@ -249,7 +248,6 @@ async def update_job(
249
248
 
250
249
  await db.commit()
251
250
  await db.refresh(job)
252
- await db.close()
253
251
  return job
254
252
 
255
253
 
@@ -274,5 +274,4 @@ async def patch_dataset_image(
274
274
  flag_modified(db_dataset, "images")
275
275
 
276
276
  await db.commit()
277
- await db.close()
278
277
  return db_dataset.images[index]
@@ -59,7 +59,6 @@ async def get_user_jobs(
59
59
  )
60
60
  res = await db.execute(stm)
61
61
  job_list = res.scalars().all()
62
- await db.close()
63
62
  if not log:
64
63
  for job in job_list:
65
64
  setattr(job, "log", None)
@@ -152,7 +151,6 @@ async def read_job(
152
151
  db=db,
153
152
  )
154
153
  job = output["job"]
155
- await db.close()
156
154
 
157
155
  if show_tmp_logs and (job.status == JobStatusType.SUBMITTED):
158
156
  try:
@@ -222,7 +220,6 @@ async def get_job_list(
222
220
  .order_by(JobV2.start_timestamp.desc())
223
221
  )
224
222
  job_list = res.scalars().all()
225
- await db.close()
226
223
  if not log:
227
224
  for job in job_list:
228
225
  setattr(job, "log", None)
@@ -47,7 +47,6 @@ async def get_list_project(
47
47
  )
48
48
  res = await db.execute(stm)
49
49
  project_list = res.scalars().all()
50
- await db.close()
51
50
  return project_list
52
51
 
53
52
 
@@ -107,7 +106,6 @@ async def read_project(
107
106
  required_permissions=ProjectPermissions.READ,
108
107
  db=db,
109
108
  )
110
- await db.close()
111
109
  return project
112
110
 
113
111
 
@@ -136,7 +134,6 @@ async def update_project(
136
134
 
137
135
  await db.commit()
138
136
  await db.refresh(project)
139
- await db.close()
140
137
  return project
141
138
 
142
139
 
@@ -77,7 +77,6 @@ async def get_list_task(
77
77
  stm = stm.order_by(TaskV2.id)
78
78
  res = await db.execute(stm)
79
79
  task_list = list(res.scalars().all())
80
- await db.close()
81
80
  if args_schema is False:
82
81
  for task in task_list:
83
82
  setattr(task, "args_schema_parallel", None)
@@ -133,7 +132,6 @@ async def patch_task(
133
132
 
134
133
  await db.commit()
135
134
  await db.refresh(db_task)
136
- await db.close()
137
135
  return db_task
138
136
 
139
137
 
@@ -216,7 +214,6 @@ async def create_task(
216
214
  db.add(db_task_group)
217
215
  await db.commit()
218
216
  await db.refresh(db_task)
219
- await db.close()
220
217
 
221
218
  return db_task
222
219
 
@@ -163,6 +163,7 @@ async def get_task_group_list(
163
163
  if args_schema is False:
164
164
  for taskgroup in task_groups:
165
165
  for task in taskgroup.task_list:
166
+ db.expunge(task) # See issue 3101
166
167
  setattr(task, "args_schema_non_parallel", None)
167
168
  setattr(task, "args_schema_parallel", None)
168
169
 
@@ -89,7 +89,6 @@ async def create_workflow(
89
89
  db.add(db_workflow)
90
90
  await db.commit()
91
91
  await db.refresh(db_workflow)
92
- await db.close()
93
92
  return db_workflow
94
93
 
95
94
 
@@ -189,7 +188,6 @@ async def update_workflow(
189
188
 
190
189
  await db.commit()
191
190
  await db.refresh(workflow)
192
- await db.close()
193
191
 
194
192
  wftask_list_with_warnings = await _add_warnings_to_workflow_tasks(
195
193
  wftask_list=workflow.task_list, user_id=user.id, db=db
@@ -202,7 +202,6 @@ async def update_workflowtask(
202
202
 
203
203
  await db.commit()
204
204
  await db.refresh(db_wf_task)
205
- await db.close()
206
205
 
207
206
  return db_wf_task
208
207
 
@@ -1,3 +1,5 @@
1
+ from typing import override
2
+
1
3
  from fastapi import APIRouter
2
4
  from httpx_oauth.clients.github import GitHubOAuth2
3
5
  from httpx_oauth.clients.google import GoogleOAuth2
@@ -25,7 +27,7 @@ class FractalOpenID(OpenID):
25
27
  super().__init__(**kwargs)
26
28
  self.email_claim = email_claim
27
29
 
28
- # TODO-requires-py312: add `@override` decorator
30
+ @override
29
31
  async def get_id_email(self, token: str) -> tuple[str, str | None]:
30
32
  """
31
33
  Identical to the parent-class method (httpx-oauth version 0.16.1),
@@ -23,9 +23,12 @@ async def get_current_user_allowed_viewer_paths(
23
23
  ) -> list[str]:
24
24
  """
25
25
  Returns the allowed viewer paths for current user.
26
- """
27
- authorized_paths = current_user.project_dirs.copy()
28
26
 
27
+ NOTE: `include_shared_projects` is an obsolete query-parameter name,
28
+ because it does not make a difference between owners/guests. A better
29
+ naming would be e.g. `include_zarr_dirs`, but it would require a fix
30
+ in `fractal-web` as well.
31
+ """
29
32
  if include_shared_projects:
30
33
  res = await db.execute(
31
34
  select(DatasetV2.zarr_dir)
@@ -36,8 +39,9 @@ async def get_current_user_allowed_viewer_paths(
36
39
  .where(LinkUserProjectV2.user_id == current_user.id)
37
40
  .where(LinkUserProjectV2.is_verified.is_(True))
38
41
  )
39
- authorized_paths.extend(res.unique().scalars().all())
40
- # Note that `project_dirs` and the `db.execute` result may have some
41
- # common elements, and then this list may have non-unique items.
42
-
43
- return authorized_paths
42
+ authorized_zarr_dirs = list(res.unique().scalars().all())
43
+ # Note that `project_dirs` and the `authorized_zarr_dirs` may have some
44
+ # common elements, and then the response may include non-unique items.
45
+ return current_user.project_dirs + authorized_zarr_dirs
46
+ else:
47
+ return current_user.project_dirs
@@ -13,7 +13,7 @@ def send_fractal_email_or_log_failure(
13
13
  subject: str,
14
14
  msg: str,
15
15
  email_settings: PublicEmailSettings | None,
16
- ):
16
+ ) -> None:
17
17
  """
18
18
  Send an email using the specified settings, or log about failure.
19
19
  """
@@ -22,6 +22,7 @@ def send_fractal_email_or_log_failure(
22
22
  logger.error(
23
23
  f"Cannot send email with {subject=}, because {email_settings=}."
24
24
  )
25
+ return
25
26
 
26
27
  try:
27
28
  logger.info(f"START sending email with {subject=}.")
@@ -117,7 +117,7 @@ def merge_type_filters(
117
117
  f"`{task_input_types}` (from task) "
118
118
  f"and `{wftask_type_filters}` (from workflowtask)."
119
119
  )
120
- merged_dict = task_input_types
120
+ merged_dict = task_input_types.copy()
121
121
  merged_dict.update(wftask_type_filters)
122
122
  return merged_dict
123
123
 
@@ -3,6 +3,7 @@ from concurrent.futures import Future
3
3
  from concurrent.futures import ThreadPoolExecutor
4
4
  from pathlib import Path
5
5
  from typing import Any
6
+ from typing import override
6
7
 
7
8
  from fractal_server.app.db import get_sync_db
8
9
  from fractal_server.app.models import Profile
@@ -91,6 +92,7 @@ class LocalRunner(BaseRunner):
91
92
  )
92
93
  return self.executor.__exit__(exc_type, exc_val, exc_tb)
93
94
 
95
+ @override
94
96
  def submit(
95
97
  self,
96
98
  *,
@@ -1,5 +1,6 @@
1
1
  import time
2
2
  from pathlib import Path
3
+ from typing import override
3
4
 
4
5
  from fractal_server.app.models import Profile
5
6
  from fractal_server.app.models import Resource
@@ -64,9 +65,11 @@ class SlurmSSHRunner(BaseSlurmRunner):
64
65
  slurm_account=slurm_account,
65
66
  )
66
67
 
68
+ @override
67
69
  def _mkdir_local_folder(self, folder: str) -> None:
68
70
  Path(folder).mkdir(parents=True)
69
71
 
72
+ @override
70
73
  def _mkdir_remote_folder(self, folder: str):
71
74
  self.fractal_ssh.mkdir(
72
75
  folder=folder,
@@ -169,6 +172,7 @@ class SlurmSSHRunner(BaseSlurmRunner):
169
172
  t_1 = time.perf_counter()
170
173
  logger.info(f"[_fetch_artifacts] End - elapsed={t_1 - t_0:.3f} s")
171
174
 
175
+ @override
172
176
  def _run_remote_cmd(self, cmd: str) -> str:
173
177
  stdout = self.fractal_ssh.run_command(cmd=cmd)
174
178
  return stdout
@@ -232,6 +236,7 @@ class SlurmSSHRunner(BaseSlurmRunner):
232
236
 
233
237
  logger.debug("[_send_many_job_inputs] END.")
234
238
 
239
+ @override
235
240
  def run_squeue(self, *, job_ids: list[str]) -> str:
236
241
  """
237
242
  Run `squeue` for a set of SLURM job IDs.
@@ -4,6 +4,7 @@ import shlex
4
4
  import subprocess # nosec
5
5
  from concurrent.futures import ThreadPoolExecutor
6
6
  from pathlib import Path
7
+ from typing import override
7
8
 
8
9
  from fractal_server.app.models import Profile
9
10
  from fractal_server.app.models import Resource
@@ -85,11 +86,13 @@ class SlurmSudoRunner(BaseSlurmRunner):
85
86
  slurm_account=slurm_account,
86
87
  )
87
88
 
89
+ @override
88
90
  def _mkdir_local_folder(self, folder: str) -> None:
89
91
  original_umask = os.umask(0)
90
92
  Path(folder).mkdir(parents=True, mode=0o755)
91
93
  os.umask(original_umask)
92
94
 
95
+ @override
93
96
  def _mkdir_remote_folder(self, folder: str) -> None:
94
97
  _mkdir_as_user(folder=folder, user=self.slurm_user)
95
98
 
@@ -164,6 +167,7 @@ class SlurmSudoRunner(BaseSlurmRunner):
164
167
  )
165
168
  logger.debug("[_fetch_artifacts] END.")
166
169
 
170
+ @override
167
171
  def _run_remote_cmd(self, cmd: str) -> str:
168
172
  res = _run_command_as_user(
169
173
  cmd=cmd,
@@ -172,6 +176,7 @@ class SlurmSudoRunner(BaseSlurmRunner):
172
176
  )
173
177
  return res.stdout
174
178
 
179
+ @override
175
180
  def run_squeue(self, *, job_ids: list[str]) -> str:
176
181
  """
177
182
  Run `squeue` for a set of SLURM job IDs.
@@ -473,7 +473,6 @@ def execute_tasks(
473
473
  )
474
474
 
475
475
  db.commit()
476
- db.close() # NOTE: this is needed, but the reason is unclear
477
476
 
478
477
  # Store the SLURM error in the job database
479
478
  job_db = db.get(JobV2, job_id)
@@ -76,7 +76,6 @@ def fail_job(
76
76
  job.log = log_msg
77
77
  db.merge(job)
78
78
  db.commit()
79
- db.close()
80
79
  return
81
80
 
82
81
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "fractal-server"
3
- version = "2.18.4"
3
+ version = "2.18.6"
4
4
  description = "Backend component of the Fractal analytics platform"
5
5
  authors = [
6
6
  { name="Tommaso Comparin", email="tommaso.comparin@exact-lab.it" },
@@ -12,17 +12,17 @@ readme = "README.md"
12
12
  license = "BSD-3-Clause"
13
13
  license-files = ["LICENSE"]
14
14
 
15
- requires-python = ">=3.11,<3.15"
15
+ requires-python = ">=3.12,<3.15"
16
16
  dependencies = [
17
- "fastapi >= 0.120.0, <0.121.0",
18
- "sqlmodel == 0.0.27",
17
+ "fastapi >= 0.128.0, <0.129.0",
18
+ "sqlmodel == 0.0.31",
19
19
  "sqlalchemy[asyncio] >=2.0.23,<2.1",
20
20
  "fastapi-users[oauth] >=15,<16",
21
21
  "alembic >=1.13.1, <2.0.0",
22
- "uvicorn >= 0.38.0, <0.39.0",
22
+ "uvicorn >= 0.40.0, <0.41.0",
23
23
  "uvicorn-worker == 0.4.0",
24
24
  "pydantic >=2.12.0,<2.13.0",
25
- "pydantic-settings ==2.11.0",
25
+ "pydantic-settings ==2.12.0",
26
26
  "packaging >= 25.0.0, <26.0.0",
27
27
  "fabric >= 3.2.2, <3.3.0",
28
28
  "gunicorn >=23.0,<24.0",
@@ -49,9 +49,8 @@ dev = [
49
49
  "pytest-asyncio >= 1.2.0,<1.3.0",
50
50
  "bumpver >=2024.0",
51
51
  "pre-commit ==4.2.0",
52
- "coverage[toml]>=7.12.0,<7.13.0",
52
+ "coverage>=7.12.0,<7.13.0",
53
53
  "pytest-docker >=3.2.0,<3.3.0",
54
- "mypy >= 1.9",
55
54
  "pytest-subprocess >=1.5.0,<1.6.0",
56
55
  "a2wsgi >=1.10.0,<1.11.0",
57
56
  "jinja2 >=3.1.3,<3.1.4",
@@ -94,7 +93,7 @@ filterwarnings = [
94
93
  markers = ["container", "ssh", "fails_on_macos", "oauth"]
95
94
 
96
95
  [tool.bumpver]
97
- current_version = "2.18.4"
96
+ current_version = "2.18.6"
98
97
  version_pattern = "MAJOR.MINOR.PATCH[PYTAGNUM]"
99
98
  commit_message = "bump version {old_version} -> {new_version}"
100
99
  commit = true
@@ -1 +0,0 @@
1
- __VERSION__ = "2.18.4"
File without changes