fractal-server 2.0.0a12__tar.gz → 2.0.2__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 (169) hide show
  1. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/PKG-INFO +3 -3
  2. fractal_server-2.0.2/fractal_server/__init__.py +1 -0
  3. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/routes/api/v1/project.py +2 -2
  4. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/routes/api/v2/status.py +19 -1
  5. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/routes/api/v2/submit.py +3 -1
  6. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/routes/api/v2/task_collection.py +3 -3
  7. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/routes/api/v2/workflow.py +2 -2
  8. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/runner/v2/__init__.py +2 -2
  9. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/schemas/v2/dumps.py +2 -2
  10. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/config.py +0 -5
  11. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/logger.py +11 -0
  12. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/main.py +10 -0
  13. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/tasks/v2/background_operations.py +5 -3
  14. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/pyproject.toml +5 -4
  15. fractal_server-2.0.0a12/fractal_server/__init__.py +0 -1
  16. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/LICENSE +0 -0
  17. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/README.md +0 -0
  18. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/__main__.py +0 -0
  19. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/alembic.ini +0 -0
  20. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/__init__.py +0 -0
  21. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/db/__init__.py +0 -0
  22. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/models/__init__.py +0 -0
  23. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/models/linkuserproject.py +0 -0
  24. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/models/security.py +0 -0
  25. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/models/v1/__init__.py +0 -0
  26. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/models/v1/dataset.py +0 -0
  27. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/models/v1/job.py +0 -0
  28. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/models/v1/project.py +0 -0
  29. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/models/v1/state.py +0 -0
  30. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/models/v1/task.py +0 -0
  31. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/models/v1/workflow.py +0 -0
  32. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/models/v2/__init__.py +0 -0
  33. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/models/v2/collection_state.py +0 -0
  34. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/models/v2/dataset.py +0 -0
  35. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/models/v2/job.py +0 -0
  36. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/models/v2/project.py +0 -0
  37. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/models/v2/task.py +0 -0
  38. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/models/v2/workflow.py +0 -0
  39. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/models/v2/workflowtask.py +0 -0
  40. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/routes/__init__.py +0 -0
  41. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/routes/admin/__init__.py +0 -0
  42. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/routes/admin/v1.py +0 -0
  43. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/routes/admin/v2.py +0 -0
  44. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/routes/api/__init__.py +0 -0
  45. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/routes/api/v1/__init__.py +0 -0
  46. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/routes/api/v1/_aux_functions.py +0 -0
  47. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/routes/api/v1/dataset.py +0 -0
  48. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/routes/api/v1/job.py +0 -0
  49. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/routes/api/v1/task.py +0 -0
  50. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/routes/api/v1/task_collection.py +0 -0
  51. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/routes/api/v1/workflow.py +0 -0
  52. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/routes/api/v1/workflowtask.py +0 -0
  53. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/routes/api/v2/__init__.py +0 -0
  54. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/routes/api/v2/_aux_functions.py +0 -0
  55. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/routes/api/v2/dataset.py +0 -0
  56. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/routes/api/v2/images.py +0 -0
  57. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/routes/api/v2/job.py +0 -0
  58. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/routes/api/v2/project.py +0 -0
  59. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/routes/api/v2/task.py +0 -0
  60. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/routes/api/v2/task_legacy.py +0 -0
  61. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/routes/api/v2/workflowtask.py +0 -0
  62. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/routes/auth.py +0 -0
  63. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/routes/aux/__init__.py +0 -0
  64. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/routes/aux/_job.py +0 -0
  65. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/routes/aux/_runner.py +0 -0
  66. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/runner/.gitignore +0 -0
  67. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/runner/__init__.py +0 -0
  68. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/runner/async_wrap.py +0 -0
  69. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/runner/components.py +0 -0
  70. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/runner/exceptions.py +0 -0
  71. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/runner/executors/__init__.py +0 -0
  72. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/runner/executors/slurm/__init__.py +0 -0
  73. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/runner/executors/slurm/_batching.py +0 -0
  74. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/runner/executors/slurm/_check_jobs_status.py +0 -0
  75. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/runner/executors/slurm/_executor_wait_thread.py +0 -0
  76. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/runner/executors/slurm/_slurm_config.py +0 -0
  77. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/runner/executors/slurm/_subprocess_run_as_user.py +0 -0
  78. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/runner/executors/slurm/executor.py +0 -0
  79. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/runner/executors/slurm/remote.py +0 -0
  80. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/runner/filenames.py +0 -0
  81. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/runner/set_start_and_last_task_index.py +0 -0
  82. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/runner/task_files.py +0 -0
  83. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/runner/v1/__init__.py +0 -0
  84. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/runner/v1/_common.py +0 -0
  85. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/runner/v1/_local/__init__.py +0 -0
  86. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/runner/v1/_local/_local_config.py +0 -0
  87. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/runner/v1/_local/_submit_setup.py +0 -0
  88. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/runner/v1/_local/executor.py +0 -0
  89. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/runner/v1/_slurm/__init__.py +0 -0
  90. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/runner/v1/_slurm/_submit_setup.py +0 -0
  91. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/runner/v1/_slurm/get_slurm_config.py +0 -0
  92. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/runner/v1/common.py +0 -0
  93. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/runner/v1/handle_failed_job.py +0 -0
  94. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/runner/v2/_local/__init__.py +0 -0
  95. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/runner/v2/_local/_local_config.py +0 -0
  96. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/runner/v2/_local/_submit_setup.py +0 -0
  97. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/runner/v2/_local/executor.py +0 -0
  98. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/runner/v2/_slurm/__init__.py +0 -0
  99. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/runner/v2/_slurm/_submit_setup.py +0 -0
  100. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/runner/v2/_slurm/get_slurm_config.py +0 -0
  101. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/runner/v2/deduplicate_list.py +0 -0
  102. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/runner/v2/handle_failed_job.py +0 -0
  103. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/runner/v2/merge_outputs.py +0 -0
  104. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/runner/v2/runner.py +0 -0
  105. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/runner/v2/runner_functions.py +0 -0
  106. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/runner/v2/runner_functions_low_level.py +0 -0
  107. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/runner/v2/task_interface.py +0 -0
  108. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/runner/v2/v1_compat.py +0 -0
  109. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/schemas/__init__.py +0 -0
  110. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/schemas/_validators.py +0 -0
  111. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/schemas/state.py +0 -0
  112. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/schemas/user.py +0 -0
  113. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/schemas/v1/__init__.py +0 -0
  114. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/schemas/v1/applyworkflow.py +0 -0
  115. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/schemas/v1/dataset.py +0 -0
  116. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/schemas/v1/dumps.py +0 -0
  117. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/schemas/v1/manifest.py +0 -0
  118. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/schemas/v1/project.py +0 -0
  119. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/schemas/v1/task.py +0 -0
  120. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/schemas/v1/task_collection.py +0 -0
  121. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/schemas/v1/workflow.py +0 -0
  122. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/schemas/v2/__init__.py +0 -0
  123. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/schemas/v2/dataset.py +0 -0
  124. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/schemas/v2/job.py +0 -0
  125. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/schemas/v2/manifest.py +0 -0
  126. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/schemas/v2/project.py +0 -0
  127. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/schemas/v2/status.py +0 -0
  128. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/schemas/v2/task.py +0 -0
  129. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/schemas/v2/task_collection.py +0 -0
  130. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/schemas/v2/workflow.py +0 -0
  131. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/schemas/v2/workflowtask.py +0 -0
  132. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/app/security/__init__.py +0 -0
  133. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/data_migrations/README.md +0 -0
  134. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/images/__init__.py +0 -0
  135. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/images/models.py +0 -0
  136. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/images/tools.py +0 -0
  137. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/migrations/README +0 -0
  138. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/migrations/env.py +0 -0
  139. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/migrations/script.py.mako +0 -0
  140. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/migrations/versions/4c308bcaea2b_add_task_args_schema_and_task_args_.py +0 -0
  141. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/migrations/versions/4cedeb448a53_workflowtask_foreign_keys_not_nullables.py +0 -0
  142. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/migrations/versions/50a13d6138fd_initial_schema.py +0 -0
  143. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/migrations/versions/5bf02391cfef_v2.py +0 -0
  144. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/migrations/versions/70e77f1c38b0_add_applyworkflow_first_task_index_and_.py +0 -0
  145. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/migrations/versions/71eefd1dd202_add_slurm_accounts.py +0 -0
  146. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/migrations/versions/84bf0fffde30_add_dumps_to_applyworkflow.py +0 -0
  147. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/migrations/versions/8f79bd162e35_add_docs_info_and_docs_link_to_task_.py +0 -0
  148. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/migrations/versions/97f444d47249_add_applyworkflow_project_dump.py +0 -0
  149. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/migrations/versions/99ea79d9e5d2_add_dataset_history.py +0 -0
  150. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/migrations/versions/9fd26a2b0de4_add_workflow_timestamp_created.py +0 -0
  151. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/migrations/versions/a7f4d6137b53_add_workflow_dump_to_applyworkflow.py +0 -0
  152. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/migrations/versions/d4fe3708d309_make_applyworkflow_workflow_dump_non_.py +0 -0
  153. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/migrations/versions/e75cac726012_make_applyworkflow_start_timestamp_not_.py +0 -0
  154. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/migrations/versions/efa89c30e0a4_add_project_timestamp_created.py +0 -0
  155. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/migrations/versions/f384e1c0cf5d_drop_task_default_args_columns.py +0 -0
  156. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/py.typed +0 -0
  157. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/syringe.py +0 -0
  158. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/tasks/__init__.py +0 -0
  159. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/tasks/endpoint_operations.py +0 -0
  160. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/tasks/utils.py +0 -0
  161. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/tasks/v1/_TaskCollectPip.py +0 -0
  162. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/tasks/v1/__init__.py +0 -0
  163. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/tasks/v1/background_operations.py +0 -0
  164. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/tasks/v1/get_collection_data.py +0 -0
  165. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/tasks/v2/_TaskCollectPip.py +0 -0
  166. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/tasks/v2/__init__.py +0 -0
  167. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/tasks/v2/get_collection_data.py +0 -0
  168. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/urls.py +0 -0
  169. {fractal_server-2.0.0a12 → fractal_server-2.0.2}/fractal_server/utils.py +0 -0
@@ -1,11 +1,11 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: fractal-server
3
- Version: 2.0.0a12
3
+ Version: 2.0.2
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
- Author: Jacopo Nespolo
8
- Author-email: jacopo.nespolo@exact-lab.it
7
+ Author: Tommaso Comparin
8
+ Author-email: tommaso.comparin@exact-lab.it
9
9
  Requires-Python: >=3.9,<4.0
10
10
  Classifier: License :: OSI Approved :: BSD License
11
11
  Classifier: Programming Language :: Python :: 3
@@ -0,0 +1 @@
1
+ __VERSION__ = "2.0.2"
@@ -398,7 +398,7 @@ async def apply_workflow(
398
398
  user_email=user.email,
399
399
  input_dataset_dump=dict(
400
400
  **input_dataset.model_dump(
401
- exclude={"resource_list", "timestamp_created"}
401
+ exclude={"resource_list", "history", "timestamp_created"}
402
402
  ),
403
403
  timestamp_created=_encode_as_utc(input_dataset.timestamp_created),
404
404
  resource_list=[
@@ -408,7 +408,7 @@ async def apply_workflow(
408
408
  ),
409
409
  output_dataset_dump=dict(
410
410
  **output_dataset.model_dump(
411
- exclude={"resource_list", "timestamp_created"}
411
+ exclude={"resource_list", "history", "timestamp_created"}
412
412
  ),
413
413
  timestamp_created=_encode_as_utc(output_dataset.timestamp_created),
414
414
  resource_list=[
@@ -7,6 +7,7 @@ from fastapi import Depends
7
7
  from fastapi import HTTPException
8
8
  from fastapi import status
9
9
 
10
+ from .....logger import set_logger
10
11
  from ....db import AsyncSession
11
12
  from ....db import get_async_db
12
13
  from ....models.v2 import JobV2
@@ -21,6 +22,8 @@ from fractal_server.app.runner.filenames import HISTORY_FILENAME
21
22
 
22
23
  router = APIRouter()
23
24
 
25
+ logger = set_logger(__name__)
26
+
24
27
 
25
28
  @router.get(
26
29
  "/project/{project_id}/status/",
@@ -113,7 +116,22 @@ async def get_workflowtask_status(
113
116
 
114
117
  # The last workflow task that is included in the submitted job is also
115
118
  # the positional-last workflow task to be included in the response.
116
- last_valid_wftask_id = workflow.task_list[end - 1]
119
+ try:
120
+ last_valid_wftask_id = workflow.task_list[end - 1].id
121
+ except IndexError as e:
122
+ logger.warning(
123
+ f"Handled IndexError in `get_workflowtask_status` ({str(e)})."
124
+ )
125
+ logger.warning(
126
+ "Additional information: "
127
+ f"{running_job.first_task_index=}; "
128
+ f"{running_job.last_task_index=}; "
129
+ f"{len(workflow.task_list)=}; "
130
+ f"{dataset_id=}; "
131
+ f"{workflow_id=}."
132
+ )
133
+ last_valid_wftask_id = None
134
+ logger.warning(f"Now setting {last_valid_wftask_id=}.")
117
135
 
118
136
  # Highest priority: Read status updates coming from the running-job
119
137
  # temporary file. Note: this file only contains information on
@@ -146,7 +146,9 @@ async def apply_workflow(
146
146
  workflow_id=workflow_id,
147
147
  user_email=user.email,
148
148
  dataset_dump=dict(
149
- **dataset.model_dump(exclude={"timestamp_created"}),
149
+ **dataset.model_dump(
150
+ exclude={"images", "history", "timestamp_created"}
151
+ ),
150
152
  timestamp_created=_encode_as_utc(dataset.timestamp_created),
151
153
  ),
152
154
  workflow_dump=dict(
@@ -12,7 +12,7 @@ from pydantic.error_wrappers import ValidationError
12
12
  from sqlmodel import select
13
13
 
14
14
  from .....config import get_settings
15
- from .....logger import close_logger
15
+ from .....logger import reset_logger_handlers
16
16
  from .....logger import set_logger
17
17
  from .....syringe import Inject
18
18
  from ....db import AsyncSession
@@ -196,7 +196,7 @@ async def collect_tasks_pip(
196
196
  "Task-collection endpoint: start background collection "
197
197
  "and return state"
198
198
  )
199
- close_logger(logger)
199
+ reset_logger_handlers(logger)
200
200
  info = (
201
201
  "Collecting tasks in the background. "
202
202
  f"GET /task/collect/{state.id} to query collection status"
@@ -234,6 +234,6 @@ async def check_collection_status(
234
234
  if verbose and not data.log:
235
235
  data.log = get_collection_log(data.venv_path)
236
236
  state.data = data.sanitised_dict()
237
- close_logger(logger)
237
+ reset_logger_handlers(logger)
238
238
  await db.close()
239
239
  return state
@@ -7,7 +7,7 @@ from fastapi import Response
7
7
  from fastapi import status
8
8
  from sqlmodel import select
9
9
 
10
- from .....logger import close_logger
10
+ from .....logger import reset_logger_handlers
11
11
  from .....logger import set_logger
12
12
  from ....db import AsyncSession
13
13
  from ....db import get_async_db
@@ -259,7 +259,7 @@ async def export_worfklow(
259
259
  "portable; re-importing this workflow may not work as "
260
260
  "expected."
261
261
  )
262
- close_logger(logger)
262
+ reset_logger_handlers(logger)
263
263
 
264
264
  await db.close()
265
265
  return workflow
@@ -13,7 +13,7 @@ from typing import Optional
13
13
  from sqlalchemy.orm.attributes import flag_modified
14
14
 
15
15
  from ....config import get_settings
16
- from ....logger import close_logger
16
+ from ....logger import reset_logger_handlers
17
17
  from ....logger import set_logger
18
18
  from ....syringe import Inject
19
19
  from ....utils import get_timestamp
@@ -332,5 +332,5 @@ async def submit_workflow(
332
332
  db_sync.merge(job)
333
333
  db_sync.commit()
334
334
  finally:
335
- close_logger(logger)
335
+ reset_logger_handlers(logger)
336
336
  db_sync.close()
@@ -70,14 +70,14 @@ class WorkflowTaskDumpV2(BaseModel):
70
70
  return values
71
71
 
72
72
 
73
- class WorkflowDumpV2(BaseModel):
73
+ class WorkflowDumpV2(BaseModel, extra=Extra.forbid):
74
74
  id: int
75
75
  name: str
76
76
  project_id: int
77
77
  timestamp_created: str
78
78
 
79
79
 
80
- class DatasetDumpV2(BaseModel):
80
+ class DatasetDumpV2(BaseModel, extra=Extra.forbid):
81
81
  id: int
82
82
  name: str
83
83
  project_id: int
@@ -441,9 +441,4 @@ class Settings(BaseSettings):
441
441
 
442
442
 
443
443
  def get_settings(settings=Settings()) -> Settings:
444
- logging.debug("Fractal Settings:")
445
- for key, value in settings.dict().items():
446
- if any(s in key.upper() for s in ["PASSWORD", "SECRET"]):
447
- value = "*****"
448
- logging.debug(f"{key}: {value}")
449
444
  return settings
@@ -125,3 +125,14 @@ def close_logger(logger: logging.Logger) -> None:
125
125
  """
126
126
  for handle in logger.handlers:
127
127
  handle.close()
128
+
129
+
130
+ def reset_logger_handlers(logger: logging.Logger) -> None:
131
+ """
132
+ Close and remove all handlers associated to a `logging.Logger` object
133
+
134
+ Arguments:
135
+ logger: The actual logger
136
+ """
137
+ close_logger(logger)
138
+ logger.handlers.clear()
@@ -19,6 +19,8 @@ from fastapi import FastAPI
19
19
 
20
20
  from .app.security import _create_first_user
21
21
  from .config import get_settings
22
+ from .logger import reset_logger_handlers
23
+ from .logger import set_logger
22
24
  from .syringe import Inject
23
25
 
24
26
 
@@ -62,6 +64,14 @@ def check_settings() -> None:
62
64
  settings = Inject(get_settings)
63
65
  settings.check()
64
66
 
67
+ logger = set_logger("fractal_server_settings")
68
+ logger.debug("Fractal Settings:")
69
+ for key, value in settings.dict().items():
70
+ if any(s in key.upper() for s in ["PASSWORD", "SECRET"]):
71
+ value = "*****"
72
+ logger.debug(f" {key}: {value}")
73
+ reset_logger_handlers(logger)
74
+
65
75
 
66
76
  async def __on_startup() -> None:
67
77
  """
@@ -20,8 +20,8 @@ from fractal_server.app.models.v2 import TaskV2
20
20
  from fractal_server.app.schemas.v2 import TaskCollectStatusV2
21
21
  from fractal_server.app.schemas.v2 import TaskCreateV2
22
22
  from fractal_server.app.schemas.v2 import TaskReadV2
23
- from fractal_server.logger import close_logger
24
23
  from fractal_server.logger import get_logger
24
+ from fractal_server.logger import reset_logger_handlers
25
25
  from fractal_server.logger import set_logger
26
26
  from fractal_server.utils import execute_command
27
27
 
@@ -358,14 +358,14 @@ async def background_collect_pip(
358
358
  # Write last logs to file
359
359
  logger.debug("Task-collection status: OK")
360
360
  logger.info("Background task collection completed successfully")
361
- close_logger(logger)
361
+ reset_logger_handlers(logger)
362
+
362
363
  db.close()
363
364
 
364
365
  except Exception as e:
365
366
  # Write last logs to file
366
367
  logger.debug("Task-collection status: fail")
367
368
  logger.info(f"Background collection failed. Original error: {e}")
368
- close_logger(logger)
369
369
 
370
370
  # Update db
371
371
  data.status = "fail"
@@ -379,3 +379,5 @@ async def background_collect_pip(
379
379
  # Delete corrupted package dir
380
380
  logger.info(f"Now deleting temporary folder {venv_path}")
381
381
  shell_rmtree(venv_path)
382
+ logger.info("Temporary folder deleted")
383
+ reset_logger_handlers(logger)
@@ -1,11 +1,12 @@
1
1
  [tool.poetry]
2
2
  name = "fractal-server"
3
- version = "2.0.0a12"
3
+ version = "2.0.2"
4
4
  description = "Server component of the Fractal analytics platform"
5
5
  authors = [
6
- "Jacopo Nespolo <jacopo.nespolo@exact-lab.it>",
7
- "Marco Franzon <marco.franzon@exact-lab.it>",
8
6
  "Tommaso Comparin <tommaso.comparin@exact-lab.it>",
7
+ "Marco Franzon <marco.franzon@exact-lab.it>",
8
+ "Yuri Chiucconi <yuri.chiucconi@exact-lab.it>",
9
+ "Jacopo Nespolo <jacopo.nespolo@exact-lab.it>",
9
10
  ]
10
11
  readme = "README.md"
11
12
  homepage = "https://github.com/fractal-analytics-platform/fractal-server"
@@ -86,7 +87,7 @@ filterwarnings = [
86
87
  ]
87
88
 
88
89
  [tool.bumpver]
89
- current_version = "2.0.0a12"
90
+ current_version = "2.0.2"
90
91
  version_pattern = "MAJOR.MINOR.PATCH[PYTAGNUM]"
91
92
  commit_message = "bump version {old_version} -> {new_version}"
92
93
  commit = true
@@ -1 +0,0 @@
1
- __VERSION__ = "2.0.0a12"