fractal-server 2.11.0a9__tar.gz → 2.11.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 (249) hide show
  1. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/PKG-INFO +1 -1
  2. fractal_server-2.11.1/fractal_server/__init__.py +1 -0
  3. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/models/v2/dataset.py +0 -4
  4. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/models/v2/workflowtask.py +0 -4
  5. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/routes/api/v2/job.py +14 -1
  6. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/schemas/v2/workflowtask.py +7 -5
  7. fractal_server-2.11.1/fractal_server/migrations/versions/af8673379a5c_drop_old_filter_columns.py +54 -0
  8. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/pyproject.toml +2 -2
  9. fractal_server-2.11.0a9/fractal_server/__init__.py +0 -1
  10. fractal_server-2.11.0a9/fractal_server/data_migrations/2_11_0.py +0 -168
  11. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/LICENSE +0 -0
  12. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/README.md +0 -0
  13. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/__main__.py +0 -0
  14. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/alembic.ini +0 -0
  15. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/__init__.py +0 -0
  16. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/db/__init__.py +0 -0
  17. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/models/__init__.py +0 -0
  18. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/models/linkusergroup.py +0 -0
  19. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/models/linkuserproject.py +0 -0
  20. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/models/security.py +0 -0
  21. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/models/user_settings.py +0 -0
  22. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/models/v1/__init__.py +0 -0
  23. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/models/v1/dataset.py +0 -0
  24. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/models/v1/job.py +0 -0
  25. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/models/v1/project.py +0 -0
  26. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/models/v1/state.py +0 -0
  27. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/models/v1/task.py +0 -0
  28. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/models/v1/workflow.py +0 -0
  29. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/models/v2/__init__.py +0 -0
  30. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/models/v2/job.py +0 -0
  31. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/models/v2/project.py +0 -0
  32. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/models/v2/task.py +0 -0
  33. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/models/v2/task_group.py +0 -0
  34. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/models/v2/workflow.py +0 -0
  35. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/routes/__init__.py +0 -0
  36. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/routes/admin/__init__.py +0 -0
  37. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/routes/admin/v1.py +0 -0
  38. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/routes/admin/v2/__init__.py +0 -0
  39. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/routes/admin/v2/job.py +0 -0
  40. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/routes/admin/v2/project.py +0 -0
  41. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/routes/admin/v2/task.py +0 -0
  42. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/routes/admin/v2/task_group.py +0 -0
  43. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/routes/admin/v2/task_group_lifecycle.py +0 -0
  44. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/routes/api/__init__.py +0 -0
  45. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/routes/api/v1/__init__.py +0 -0
  46. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/routes/api/v1/_aux_functions.py +0 -0
  47. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/routes/api/v1/dataset.py +0 -0
  48. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/routes/api/v1/job.py +0 -0
  49. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/routes/api/v1/project.py +0 -0
  50. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/routes/api/v1/task.py +0 -0
  51. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/routes/api/v1/task_collection.py +0 -0
  52. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/routes/api/v1/workflow.py +0 -0
  53. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/routes/api/v1/workflowtask.py +0 -0
  54. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/routes/api/v2/__init__.py +0 -0
  55. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/routes/api/v2/_aux_functions.py +0 -0
  56. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/routes/api/v2/_aux_functions_task_lifecycle.py +0 -0
  57. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/routes/api/v2/_aux_functions_tasks.py +0 -0
  58. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/routes/api/v2/dataset.py +0 -0
  59. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/routes/api/v2/images.py +0 -0
  60. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/routes/api/v2/project.py +0 -0
  61. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/routes/api/v2/status.py +0 -0
  62. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/routes/api/v2/submit.py +0 -0
  63. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/routes/api/v2/task.py +0 -0
  64. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/routes/api/v2/task_collection.py +0 -0
  65. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/routes/api/v2/task_collection_custom.py +0 -0
  66. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/routes/api/v2/task_group.py +0 -0
  67. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/routes/api/v2/task_group_lifecycle.py +0 -0
  68. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/routes/api/v2/workflow.py +0 -0
  69. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/routes/api/v2/workflow_import.py +0 -0
  70. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/routes/api/v2/workflowtask.py +0 -0
  71. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/routes/auth/__init__.py +0 -0
  72. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/routes/auth/_aux_auth.py +0 -0
  73. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/routes/auth/current_user.py +0 -0
  74. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/routes/auth/group.py +0 -0
  75. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/routes/auth/login.py +0 -0
  76. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/routes/auth/oauth.py +0 -0
  77. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/routes/auth/register.py +0 -0
  78. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/routes/auth/router.py +0 -0
  79. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/routes/auth/users.py +0 -0
  80. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/routes/aux/__init__.py +0 -0
  81. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/routes/aux/_job.py +0 -0
  82. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/routes/aux/_runner.py +0 -0
  83. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/routes/aux/validate_user_settings.py +0 -0
  84. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/__init__.py +0 -0
  85. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/async_wrap_v1.py +0 -0
  86. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/components.py +0 -0
  87. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/compress_folder.py +0 -0
  88. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/exceptions.py +0 -0
  89. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/executors/__init__.py +0 -0
  90. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/executors/slurm/__init__.py +0 -0
  91. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/executors/slurm/_batching.py +0 -0
  92. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/executors/slurm/_slurm_config.py +0 -0
  93. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/executors/slurm/remote.py +0 -0
  94. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/executors/slurm/ssh/__init__.py +0 -0
  95. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/executors/slurm/ssh/_executor_wait_thread.py +0 -0
  96. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/executors/slurm/ssh/_slurm_job.py +0 -0
  97. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/executors/slurm/ssh/executor.py +0 -0
  98. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/executors/slurm/sudo/__init__.py +0 -0
  99. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/executors/slurm/sudo/_check_jobs_status.py +0 -0
  100. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/executors/slurm/sudo/_executor_wait_thread.py +0 -0
  101. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/executors/slurm/sudo/_subprocess_run_as_user.py +0 -0
  102. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/executors/slurm/sudo/executor.py +0 -0
  103. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/executors/slurm/utils_executors.py +0 -0
  104. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/extract_archive.py +0 -0
  105. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/filenames.py +0 -0
  106. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/run_subprocess.py +0 -0
  107. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/set_start_and_last_task_index.py +0 -0
  108. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/shutdown.py +0 -0
  109. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/task_files.py +0 -0
  110. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/v1/__init__.py +0 -0
  111. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/v1/_common.py +0 -0
  112. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/v1/_local/__init__.py +0 -0
  113. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/v1/_local/_local_config.py +0 -0
  114. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/v1/_local/_submit_setup.py +0 -0
  115. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/v1/_local/executor.py +0 -0
  116. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/v1/_slurm/__init__.py +0 -0
  117. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/v1/_slurm/_submit_setup.py +0 -0
  118. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/v1/_slurm/get_slurm_config.py +0 -0
  119. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/v1/common.py +0 -0
  120. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/v1/handle_failed_job.py +0 -0
  121. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/v2/__init__.py +0 -0
  122. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/v2/_local/__init__.py +0 -0
  123. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/v2/_local/_local_config.py +0 -0
  124. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/v2/_local/_submit_setup.py +0 -0
  125. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/v2/_local/executor.py +0 -0
  126. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/v2/_local_experimental/__init__.py +0 -0
  127. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/v2/_local_experimental/_local_config.py +0 -0
  128. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/v2/_local_experimental/_submit_setup.py +0 -0
  129. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/v2/_local_experimental/executor.py +0 -0
  130. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/v2/_slurm_common/__init__.py +0 -0
  131. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/v2/_slurm_common/get_slurm_config.py +0 -0
  132. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/v2/_slurm_ssh/__init__.py +0 -0
  133. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/v2/_slurm_ssh/_submit_setup.py +0 -0
  134. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/v2/_slurm_sudo/__init__.py +0 -0
  135. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/v2/_slurm_sudo/_submit_setup.py +0 -0
  136. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/v2/deduplicate_list.py +0 -0
  137. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/v2/handle_failed_job.py +0 -0
  138. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/v2/merge_outputs.py +0 -0
  139. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/v2/runner.py +0 -0
  140. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/v2/runner_functions.py +0 -0
  141. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/v2/runner_functions_low_level.py +0 -0
  142. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/v2/task_interface.py +0 -0
  143. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/runner/versions.py +0 -0
  144. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/schemas/__init__.py +0 -0
  145. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/schemas/_filter_validators.py +0 -0
  146. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/schemas/_validators.py +0 -0
  147. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/schemas/user.py +0 -0
  148. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/schemas/user_group.py +0 -0
  149. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/schemas/user_settings.py +0 -0
  150. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/schemas/v1/__init__.py +0 -0
  151. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/schemas/v1/applyworkflow.py +0 -0
  152. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/schemas/v1/dataset.py +0 -0
  153. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/schemas/v1/dumps.py +0 -0
  154. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/schemas/v1/manifest.py +0 -0
  155. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/schemas/v1/project.py +0 -0
  156. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/schemas/v1/state.py +0 -0
  157. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/schemas/v1/task.py +0 -0
  158. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/schemas/v1/task_collection.py +0 -0
  159. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/schemas/v1/workflow.py +0 -0
  160. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/schemas/v2/__init__.py +0 -0
  161. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/schemas/v2/dataset.py +0 -0
  162. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/schemas/v2/dumps.py +0 -0
  163. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/schemas/v2/job.py +0 -0
  164. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/schemas/v2/manifest.py +0 -0
  165. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/schemas/v2/project.py +0 -0
  166. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/schemas/v2/status.py +0 -0
  167. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/schemas/v2/task.py +0 -0
  168. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/schemas/v2/task_collection.py +0 -0
  169. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/schemas/v2/task_group.py +0 -0
  170. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/schemas/v2/workflow.py +0 -0
  171. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/security/__init__.py +0 -0
  172. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/security/signup_email.py +0 -0
  173. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/app/user_settings.py +0 -0
  174. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/config.py +0 -0
  175. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/data_migrations/README.md +0 -0
  176. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/data_migrations/tools.py +0 -0
  177. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/gunicorn_fractal.py +0 -0
  178. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/images/__init__.py +0 -0
  179. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/images/models.py +0 -0
  180. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/images/tools.py +0 -0
  181. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/logger.py +0 -0
  182. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/main.py +0 -0
  183. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/migrations/env.py +0 -0
  184. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/migrations/naming_convention.py +0 -0
  185. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/migrations/versions/034a469ec2eb_task_groups.py +0 -0
  186. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/migrations/versions/091b01f51f88_add_usergroup_and_linkusergroup_table.py +0 -0
  187. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/migrations/versions/19eca0dd47a9_user_settings_project_dir.py +0 -0
  188. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/migrations/versions/316140ff7ee1_remove_usersettings_cache_dir.py +0 -0
  189. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/migrations/versions/4c308bcaea2b_add_task_args_schema_and_task_args_.py +0 -0
  190. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/migrations/versions/4cedeb448a53_workflowtask_foreign_keys_not_nullables.py +0 -0
  191. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/migrations/versions/501961cfcd85_remove_link_between_v1_and_v2_tasks_.py +0 -0
  192. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/migrations/versions/50a13d6138fd_initial_schema.py +0 -0
  193. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/migrations/versions/5bf02391cfef_v2.py +0 -0
  194. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/migrations/versions/70e77f1c38b0_add_applyworkflow_first_task_index_and_.py +0 -0
  195. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/migrations/versions/71eefd1dd202_add_slurm_accounts.py +0 -0
  196. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/migrations/versions/84bf0fffde30_add_dumps_to_applyworkflow.py +0 -0
  197. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/migrations/versions/8e8f227a3e36_update_taskv2_post_2_7_0.py +0 -0
  198. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/migrations/versions/8f79bd162e35_add_docs_info_and_docs_link_to_task_.py +0 -0
  199. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/migrations/versions/94a47ea2d3ff_remove_cache_dir_slurm_user_and_slurm_.py +0 -0
  200. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/migrations/versions/97f444d47249_add_applyworkflow_project_dump.py +0 -0
  201. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/migrations/versions/99ea79d9e5d2_add_dataset_history.py +0 -0
  202. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/migrations/versions/9c5ae74c9b98_add_user_settings_table.py +0 -0
  203. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/migrations/versions/9fd26a2b0de4_add_workflow_timestamp_created.py +0 -0
  204. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/migrations/versions/a7f4d6137b53_add_workflow_dump_to_applyworkflow.py +0 -0
  205. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/migrations/versions/d256a7379ab8_taskgroup_activity_and_venv_info_to_.py +0 -0
  206. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/migrations/versions/d4fe3708d309_make_applyworkflow_workflow_dump_non_.py +0 -0
  207. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/migrations/versions/da2cb2ac4255_user_group_viewer_paths.py +0 -0
  208. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/migrations/versions/db09233ad13a_split_filters_and_keep_old_columns.py +0 -0
  209. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/migrations/versions/e75cac726012_make_applyworkflow_start_timestamp_not_.py +0 -0
  210. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/migrations/versions/efa89c30e0a4_add_project_timestamp_created.py +0 -0
  211. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/migrations/versions/f384e1c0cf5d_drop_task_default_args_columns.py +0 -0
  212. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/py.typed +0 -0
  213. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/ssh/__init__.py +0 -0
  214. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/ssh/_fabric.py +0 -0
  215. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/string_tools.py +0 -0
  216. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/syringe.py +0 -0
  217. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/tasks/__init__.py +0 -0
  218. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/tasks/utils.py +0 -0
  219. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/tasks/v1/_TaskCollectPip.py +0 -0
  220. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/tasks/v1/__init__.py +0 -0
  221. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/tasks/v1/background_operations.py +0 -0
  222. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/tasks/v1/endpoint_operations.py +0 -0
  223. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/tasks/v1/get_collection_data.py +0 -0
  224. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/tasks/v1/utils.py +0 -0
  225. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/tasks/v2/__init__.py +0 -0
  226. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/tasks/v2/local/__init__.py +0 -0
  227. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/tasks/v2/local/_utils.py +0 -0
  228. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/tasks/v2/local/collect.py +0 -0
  229. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/tasks/v2/local/deactivate.py +0 -0
  230. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/tasks/v2/local/reactivate.py +0 -0
  231. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/tasks/v2/ssh/__init__.py +0 -0
  232. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/tasks/v2/ssh/_utils.py +0 -0
  233. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/tasks/v2/ssh/collect.py +0 -0
  234. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/tasks/v2/ssh/deactivate.py +0 -0
  235. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/tasks/v2/ssh/reactivate.py +0 -0
  236. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/tasks/v2/templates/1_create_venv.sh +0 -0
  237. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/tasks/v2/templates/2_pip_install.sh +0 -0
  238. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/tasks/v2/templates/3_pip_freeze.sh +0 -0
  239. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/tasks/v2/templates/4_pip_show.sh +0 -0
  240. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/tasks/v2/templates/5_get_venv_size_and_file_number.sh +0 -0
  241. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/tasks/v2/templates/6_pip_install_from_freeze.sh +0 -0
  242. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/tasks/v2/utils_background.py +0 -0
  243. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/tasks/v2/utils_database.py +0 -0
  244. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/tasks/v2/utils_package_names.py +0 -0
  245. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/tasks/v2/utils_python_interpreter.py +0 -0
  246. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/tasks/v2/utils_templates.py +0 -0
  247. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/urls.py +0 -0
  248. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/utils.py +0 -0
  249. {fractal_server-2.11.0a9 → fractal_server-2.11.1}/fractal_server/zip_tools.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: fractal-server
3
- Version: 2.11.0a9
3
+ Version: 2.11.1
4
4
  Summary: Backend component of the Fractal analytics platform
5
5
  Home-page: https://github.com/fractal-analytics-platform/fractal-server
6
6
  License: BSD-3-Clause
@@ -0,0 +1 @@
1
+ __VERSION__ = "2.11.1"
@@ -1,6 +1,5 @@
1
1
  from datetime import datetime
2
2
  from typing import Any
3
- from typing import Literal
4
3
  from typing import Optional
5
4
 
6
5
  from sqlalchemy import Column
@@ -42,9 +41,6 @@ class DatasetV2(SQLModel, table=True):
42
41
  sa_column=Column(JSON, server_default="[]", nullable=False)
43
42
  )
44
43
 
45
- filters: Optional[
46
- dict[Literal["attributes", "types"], dict[str, Any]]
47
- ] = Field(sa_column=Column(JSON, nullable=True, server_default="null"))
48
44
  type_filters: dict[str, bool] = Field(
49
45
  sa_column=Column(JSON, nullable=False, server_default="{}")
50
46
  )
@@ -1,5 +1,4 @@
1
1
  from typing import Any
2
- from typing import Literal
3
2
  from typing import Optional
4
3
 
5
4
  from sqlalchemy import Column
@@ -25,9 +24,6 @@ class WorkflowTaskV2(SQLModel, table=True):
25
24
  args_parallel: Optional[dict[str, Any]] = Field(sa_column=Column(JSON))
26
25
  args_non_parallel: Optional[dict[str, Any]] = Field(sa_column=Column(JSON))
27
26
 
28
- input_filters: Optional[
29
- dict[Literal["attributes", "types"], dict[str, Any]]
30
- ] = Field(sa_column=Column(JSON, nullable=True, server_default="null"))
31
27
  type_filters: dict[str, bool] = Field(
32
28
  sa_column=Column(JSON, nullable=False, server_default="{}")
33
29
  )
@@ -1,4 +1,6 @@
1
+ import asyncio
1
2
  from pathlib import Path
3
+ from typing import Iterator
2
4
  from typing import Optional
3
5
 
4
6
  from fastapi import APIRouter
@@ -24,6 +26,14 @@ from ._aux_functions import _get_workflow_check_owner
24
26
  from fractal_server.app.models import UserOAuth
25
27
  from fractal_server.app.routes.auth import current_active_user
26
28
 
29
+
30
+ # https://docs.python.org/3/library/asyncio-task.html#asyncio.to_thread
31
+ # This moves the function execution to a separate thread,
32
+ # preventing it from blocking the event loop.
33
+ async def zip_folder_threaded(folder: str) -> Iterator[bytes]:
34
+ return await asyncio.to_thread(_zip_folder_to_byte_stream_iterator, folder)
35
+
36
+
27
37
  router = APIRouter()
28
38
 
29
39
 
@@ -128,8 +138,11 @@ async def download_job_logs(
128
138
  )
129
139
  job = output["job"]
130
140
  zip_name = f"{Path(job.working_dir).name}_archive.zip"
141
+
142
+ zip_bytes_iterator = await zip_folder_threaded(job.working_dir)
143
+
131
144
  return StreamingResponse(
132
- _zip_folder_to_byte_stream_iterator(folder=job.working_dir),
145
+ zip_bytes_iterator,
133
146
  media_type="application/x-zip-compressed",
134
147
  headers={"Content-Disposition": f"attachment;filename={zip_name}"},
135
148
  )
@@ -180,7 +180,7 @@ class WorkflowTaskImportV2(BaseModel, extra=Extra.forbid):
180
180
  args_non_parallel: Optional[dict[str, Any]] = None
181
181
  args_parallel: Optional[dict[str, Any]] = None
182
182
  type_filters: Optional[dict[str, bool]] = None
183
- filters: Optional[dict[str, Any]] = None
183
+ input_filters: Optional[dict[str, Any]] = None
184
184
 
185
185
  task: Union[TaskImportV2, TaskImportV2Legacy]
186
186
 
@@ -191,7 +191,7 @@ class WorkflowTaskImportV2(BaseModel, extra=Extra.forbid):
191
191
  Transform legacy filters (created with fractal-server<2.11.0)
192
192
  into type filters
193
193
  """
194
- if values.get("filters") is not None:
194
+ if values.get("input_filters") is not None:
195
195
  if "type_filters" in values.keys():
196
196
  raise ValueError(
197
197
  "Cannot set filters both through the legacy field "
@@ -201,13 +201,15 @@ class WorkflowTaskImportV2(BaseModel, extra=Extra.forbid):
201
201
  else:
202
202
  # As of 2.11.0, WorkflowTask do not have attribute filters
203
203
  # any more.
204
- if values["filters"]["attributes"] != {}:
204
+ if values["input_filters"]["attributes"] != {}:
205
205
  raise ValueError(
206
206
  "Cannot set attribute filters for WorkflowTasks."
207
207
  )
208
208
  # Convert legacy filters.types into new type_filters
209
- values["type_filters"] = values["filters"].get("types", {})
210
- values["filters"] = None
209
+ values["type_filters"] = values["input_filters"].get(
210
+ "types", {}
211
+ )
212
+ values["input_filters"] = None
211
213
 
212
214
  return values
213
215
 
@@ -0,0 +1,54 @@
1
+ """drop old filter columns
2
+
3
+ Revision ID: af8673379a5c
4
+ Revises: db09233ad13a
5
+ Create Date: 2025-01-30 14:44:04.302795
6
+
7
+ """
8
+ import sqlalchemy as sa
9
+ from alembic import op
10
+ from sqlalchemy.dialects import postgresql
11
+
12
+ # revision identifiers, used by Alembic.
13
+ revision = "af8673379a5c"
14
+ down_revision = "db09233ad13a"
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("datasetv2", schema=None) as batch_op:
22
+ batch_op.drop_column("filters")
23
+
24
+ with op.batch_alter_table("workflowtaskv2", schema=None) as batch_op:
25
+ batch_op.drop_column("input_filters")
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("workflowtaskv2", schema=None) as batch_op:
33
+ batch_op.add_column(
34
+ sa.Column(
35
+ "input_filters",
36
+ postgresql.JSON(astext_type=sa.Text()),
37
+ server_default=sa.text("'null'::json"),
38
+ autoincrement=False,
39
+ nullable=True,
40
+ )
41
+ )
42
+
43
+ with op.batch_alter_table("datasetv2", schema=None) as batch_op:
44
+ batch_op.add_column(
45
+ sa.Column(
46
+ "filters",
47
+ postgresql.JSON(astext_type=sa.Text()),
48
+ server_default=sa.text("'null'::json"),
49
+ autoincrement=False,
50
+ nullable=True,
51
+ )
52
+ )
53
+
54
+ # ### end Alembic commands ###
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "fractal-server"
3
- version = "2.11.0a9"
3
+ version = "2.11.1"
4
4
  description = "Backend component of the Fractal analytics platform"
5
5
  authors = [
6
6
  { name="Tommaso Comparin", email="tommaso.comparin@exact-lab.it" },
@@ -95,7 +95,7 @@ filterwarnings = [
95
95
  ]
96
96
 
97
97
  [tool.bumpver]
98
- current_version = "2.11.0a9"
98
+ current_version = "2.11.1"
99
99
  version_pattern = "MAJOR.MINOR.PATCH[PYTAGNUM]"
100
100
  commit_message = "bump version {old_version} -> {new_version}"
101
101
  commit = true
@@ -1 +0,0 @@
1
- __VERSION__ = "2.11.0a9"
@@ -1,168 +0,0 @@
1
- import logging
2
- from typing import Union
3
-
4
- from sqlalchemy.orm.attributes import flag_modified
5
- from sqlmodel import select
6
-
7
- from fractal_server.app.db import get_sync_db
8
- from fractal_server.app.models import DatasetV2
9
- from fractal_server.app.models import JobV2
10
- from fractal_server.app.models import ProjectV2
11
- from fractal_server.app.models import WorkflowTaskV2
12
- from fractal_server.app.models import WorkflowV2
13
- from fractal_server.app.schemas.v2 import DatasetReadV2
14
- from fractal_server.app.schemas.v2 import JobReadV2
15
- from fractal_server.app.schemas.v2 import ProjectReadV2
16
- from fractal_server.app.schemas.v2 import TaskReadV2
17
- from fractal_server.app.schemas.v2 import WorkflowTaskReadV2
18
- from fractal_server.images.models import AttributeFiltersType
19
-
20
- logger = logging.getLogger("fix_db")
21
- logger.setLevel(logging.INFO)
22
-
23
-
24
- def dict_values_to_list(
25
- input_dict: dict[str, Union[int, float, bool, str, None]],
26
- identifier: str,
27
- ) -> tuple[AttributeFiltersType, bool]:
28
- was_there_a_warning = False
29
- for k, v in input_dict.items():
30
- if not isinstance(v, (int, float, bool, str, type(None))):
31
- error_msg = (
32
- f"Attribute '{k}' from '{identifier}' "
33
- "has invalid type '{type(v)}'."
34
- )
35
- logger.error(error_msg)
36
- raise RuntimeError(error_msg)
37
- elif v is None:
38
- logger.warning(
39
- f"Attribute '{k}' from '{identifier}' is "
40
- "None and it will be removed."
41
- )
42
- was_there_a_warning = True
43
- else:
44
- input_dict[k] = [v]
45
- return input_dict, was_there_a_warning
46
-
47
-
48
- def fix_db():
49
- logger.info("START execution of fix_db function")
50
-
51
- with next(get_sync_db()) as db:
52
- # DatasetV2.filters
53
- stm = select(DatasetV2).order_by(DatasetV2.id)
54
- datasets = db.execute(stm).scalars().all()
55
- for ds in datasets:
56
- logger.info(f"DatasetV2[{ds.id}] START")
57
- if ds.filters is None:
58
- logger.info(f"DatasetV2[{ds.id}] SKIP")
59
- continue
60
-
61
- ds.attribute_filters, warning = dict_values_to_list(
62
- ds.filters["attributes"],
63
- f"Dataset[{ds.id}].filters.attributes",
64
- )
65
- if warning:
66
- proj = db.get(ProjectV2, ds.project_id)
67
- logger.warning(
68
- "Additional information: "
69
- f"{proj.id=}, "
70
- f"{proj.name=}, "
71
- f"{proj.user_list[0].email=}, "
72
- f"{ds.id=}, "
73
- f"{ds.name=}"
74
- )
75
- ds.type_filters = ds.filters["types"]
76
- ds.filters = None
77
- for i, h in enumerate(ds.history):
78
- ds.history[i]["workflowtask"]["type_filters"] = h[
79
- "workflowtask"
80
- ]["input_filters"]["types"]
81
- ds.history[i]["workflowtask"].pop("input_filters")
82
- flag_modified(ds, "history")
83
- DatasetReadV2(
84
- **ds.model_dump(),
85
- project=ProjectReadV2(**ds.project.model_dump()),
86
- )
87
- db.add(ds)
88
- logger.info(f"DatasetV2[{ds.id}] END - fixed filters")
89
-
90
- logger.info("------ switch from dataset to workflowtasks ------")
91
-
92
- # WorkflowTaskV2.input_filters
93
- stm = select(WorkflowTaskV2).order_by(WorkflowTaskV2.id)
94
- wftasks = db.execute(stm).scalars().all()
95
- for wft in wftasks:
96
- logger.info(f"WorkflowTaskV2[{wft.id}] START")
97
- if wft.input_filters is None:
98
- logger.info(f"WorkflowTaskV2[{wft.id}] SKIP")
99
- continue
100
- wft.type_filters = wft.input_filters["types"]
101
- if wft.input_filters["attributes"]:
102
- logger.warning(
103
- "Removing input_filters['attributes']. "
104
- f"(previous value: {wft.input_filters['attributes']})"
105
- )
106
- wf = db.get(WorkflowV2, wft.workflow_id)
107
- proj = db.get(ProjectV2, wf.project_id)
108
- logger.warning(
109
- "Additional information: "
110
- f"{proj.id=}, "
111
- f"{proj.name=}, "
112
- f"{proj.user_list[0].email=}, "
113
- f"{wf.id=}, "
114
- f"{wf.name=}, "
115
- f"{wft.task.name=}"
116
- )
117
- wft.input_filters = None
118
- flag_modified(wft, "input_filters")
119
- WorkflowTaskReadV2(
120
- **wft.model_dump(),
121
- task=TaskReadV2(**wft.task.model_dump()),
122
- )
123
- db.add(wft)
124
- logger.info(f"WorkflowTaskV2[{wft.id}] END - fixed filters")
125
-
126
- logger.info("------ switch from workflowtasks to jobs ------")
127
-
128
- # JOBS V2
129
- stm = select(JobV2).order_by(JobV2.id)
130
- jobs = db.execute(stm).scalars().all()
131
- for job in jobs:
132
- logger.info(f"JobV2[{job.id}] START")
133
- if "filters" not in job.dataset_dump.keys():
134
- logger.info(f"JobV2[{job.id}] SKIP")
135
- continue
136
- job.dataset_dump["type_filters"] = job.dataset_dump["filters"][
137
- "types"
138
- ]
139
- (
140
- job.dataset_dump["attribute_filters"],
141
- warning,
142
- ) = dict_values_to_list(
143
- job.dataset_dump["filters"]["attributes"],
144
- f"JobV2[{job.id}].dataset_dump.filters.attributes",
145
- )
146
- if warning and job.project_id is not None:
147
- proj = db.get(ProjectV2, job.project_id)
148
- logger.warning(
149
- "Additional information: "
150
- f"{proj.id=}, "
151
- f"{proj.name=}, "
152
- f"{proj.user_list[0].email=}, "
153
- f"{job.id=}, "
154
- f"{job.start_timestamp=}, "
155
- f"{job.end_timestamp=}, "
156
- f"{job.dataset_id=}, "
157
- f"{job.workflow_id=}."
158
- )
159
- job.dataset_dump.pop("filters")
160
- flag_modified(job, "dataset_dump")
161
- JobReadV2(**job.model_dump())
162
- db.add(job)
163
- logger.info(f"JobV2[{job.id}] END - fixed filters")
164
-
165
- db.commit()
166
- logger.info("Changes committed.")
167
-
168
- logger.info("END execution of fix_db function")