fractal-server 2.14.0a14__tar.gz → 2.14.0a16__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 (215) hide show
  1. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/PKG-INFO +1 -1
  2. fractal_server-2.14.0a16/fractal_server/__init__.py +1 -0
  3. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/routes/api/v2/_aux_functions_history.py +8 -0
  4. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/routes/api/v2/history.py +3 -4
  5. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/runner/executors/local/runner.py +31 -5
  6. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/runner/executors/slurm_common/base_slurm_runner.py +29 -7
  7. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/runner/v2/db_tools.py +15 -1
  8. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/runner/v2/runner_functions.py +3 -4
  9. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/pyproject.toml +2 -2
  10. fractal_server-2.14.0a14/fractal_server/__init__.py +0 -1
  11. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/LICENSE +0 -0
  12. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/README.md +0 -0
  13. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/__main__.py +0 -0
  14. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/alembic.ini +0 -0
  15. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/__init__.py +0 -0
  16. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/db/__init__.py +0 -0
  17. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/history/__init__.py +0 -0
  18. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/models/__init__.py +0 -0
  19. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/models/linkusergroup.py +0 -0
  20. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/models/linkuserproject.py +0 -0
  21. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/models/security.py +0 -0
  22. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/models/user_settings.py +0 -0
  23. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/models/v2/__init__.py +0 -0
  24. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/models/v2/accounting.py +0 -0
  25. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/models/v2/dataset.py +0 -0
  26. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/models/v2/history.py +0 -0
  27. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/models/v2/job.py +0 -0
  28. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/models/v2/project.py +0 -0
  29. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/models/v2/task.py +0 -0
  30. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/models/v2/task_group.py +0 -0
  31. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/models/v2/workflow.py +0 -0
  32. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/models/v2/workflowtask.py +0 -0
  33. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/routes/__init__.py +0 -0
  34. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/routes/admin/__init__.py +0 -0
  35. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/routes/admin/v2/__init__.py +0 -0
  36. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/routes/admin/v2/accounting.py +0 -0
  37. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/routes/admin/v2/impersonate.py +0 -0
  38. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/routes/admin/v2/job.py +0 -0
  39. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/routes/admin/v2/project.py +0 -0
  40. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/routes/admin/v2/task.py +0 -0
  41. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/routes/admin/v2/task_group.py +0 -0
  42. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/routes/admin/v2/task_group_lifecycle.py +0 -0
  43. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/routes/api/__init__.py +0 -0
  44. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/routes/api/v2/__init__.py +0 -0
  45. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/routes/api/v2/_aux_functions.py +0 -0
  46. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/routes/api/v2/_aux_functions_task_lifecycle.py +0 -0
  47. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/routes/api/v2/_aux_functions_tasks.py +0 -0
  48. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/routes/api/v2/dataset.py +0 -0
  49. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/routes/api/v2/images.py +0 -0
  50. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/routes/api/v2/job.py +0 -0
  51. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/routes/api/v2/project.py +0 -0
  52. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/routes/api/v2/status_legacy.py +0 -0
  53. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/routes/api/v2/submit.py +0 -0
  54. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/routes/api/v2/task.py +0 -0
  55. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/routes/api/v2/task_collection.py +0 -0
  56. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/routes/api/v2/task_collection_custom.py +0 -0
  57. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/routes/api/v2/task_group.py +0 -0
  58. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/routes/api/v2/task_group_lifecycle.py +0 -0
  59. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/routes/api/v2/verify_image_types.py +0 -0
  60. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/routes/api/v2/workflow.py +0 -0
  61. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/routes/api/v2/workflow_import.py +0 -0
  62. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/routes/api/v2/workflowtask.py +0 -0
  63. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/routes/auth/__init__.py +0 -0
  64. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/routes/auth/_aux_auth.py +0 -0
  65. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/routes/auth/current_user.py +0 -0
  66. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/routes/auth/group.py +0 -0
  67. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/routes/auth/login.py +0 -0
  68. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/routes/auth/oauth.py +0 -0
  69. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/routes/auth/register.py +0 -0
  70. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/routes/auth/router.py +0 -0
  71. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/routes/auth/users.py +0 -0
  72. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/routes/aux/__init__.py +0 -0
  73. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/routes/aux/_job.py +0 -0
  74. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/routes/aux/_runner.py +0 -0
  75. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/routes/aux/validate_user_settings.py +0 -0
  76. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/routes/pagination.py +0 -0
  77. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/runner/__init__.py +0 -0
  78. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/runner/components.py +0 -0
  79. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/runner/compress_folder.py +0 -0
  80. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/runner/exceptions.py +0 -0
  81. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/runner/executors/__init__.py +0 -0
  82. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/runner/executors/base_runner.py +0 -0
  83. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/runner/executors/local/__init__.py +0 -0
  84. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/runner/executors/local/get_local_config.py +0 -0
  85. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/runner/executors/slurm_common/__init__.py +0 -0
  86. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/runner/executors/slurm_common/_batching.py +0 -0
  87. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/runner/executors/slurm_common/_handle_exception_proxy.py +0 -0
  88. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/runner/executors/slurm_common/_job_states.py +0 -0
  89. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/runner/executors/slurm_common/_slurm_config.py +0 -0
  90. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/runner/executors/slurm_common/get_slurm_config.py +0 -0
  91. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/runner/executors/slurm_common/remote.py +0 -0
  92. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/runner/executors/slurm_common/slurm_job_task_models.py +0 -0
  93. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/runner/executors/slurm_common/utils_executors.py +0 -0
  94. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/runner/executors/slurm_ssh/__init__.py +0 -0
  95. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/runner/executors/slurm_ssh/runner.py +0 -0
  96. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/runner/executors/slurm_sudo/__init__.py +0 -0
  97. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/runner/executors/slurm_sudo/_subprocess_run_as_user.py +0 -0
  98. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/runner/executors/slurm_sudo/runner.py +0 -0
  99. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/runner/extract_archive.py +0 -0
  100. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/runner/filenames.py +0 -0
  101. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/runner/run_subprocess.py +0 -0
  102. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/runner/set_start_and_last_task_index.py +0 -0
  103. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/runner/shutdown.py +0 -0
  104. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/runner/task_files.py +0 -0
  105. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/runner/v2/__init__.py +0 -0
  106. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/runner/v2/_local.py +0 -0
  107. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/runner/v2/_slurm_ssh.py +0 -0
  108. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/runner/v2/_slurm_sudo.py +0 -0
  109. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/runner/v2/deduplicate_list.py +0 -0
  110. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/runner/v2/merge_outputs.py +0 -0
  111. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/runner/v2/runner.py +0 -0
  112. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/runner/v2/runner_functions_low_level.py +0 -0
  113. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/runner/v2/submit_workflow.py +0 -0
  114. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/runner/v2/task_interface.py +0 -0
  115. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/runner/versions.py +0 -0
  116. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/schemas/__init__.py +0 -0
  117. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/schemas/_filter_validators.py +0 -0
  118. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/schemas/_validators.py +0 -0
  119. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/schemas/user.py +0 -0
  120. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/schemas/user_group.py +0 -0
  121. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/schemas/user_settings.py +0 -0
  122. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/schemas/v2/__init__.py +0 -0
  123. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/schemas/v2/accounting.py +0 -0
  124. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/schemas/v2/dataset.py +0 -0
  125. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/schemas/v2/dumps.py +0 -0
  126. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/schemas/v2/history.py +0 -0
  127. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/schemas/v2/job.py +0 -0
  128. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/schemas/v2/manifest.py +0 -0
  129. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/schemas/v2/project.py +0 -0
  130. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/schemas/v2/status_legacy.py +0 -0
  131. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/schemas/v2/task.py +0 -0
  132. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/schemas/v2/task_collection.py +0 -0
  133. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/schemas/v2/task_group.py +0 -0
  134. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/schemas/v2/workflow.py +0 -0
  135. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/schemas/v2/workflowtask.py +0 -0
  136. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/security/__init__.py +0 -0
  137. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/security/signup_email.py +0 -0
  138. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/app/user_settings.py +0 -0
  139. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/config.py +0 -0
  140. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/data_migrations/README.md +0 -0
  141. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/data_migrations/tools.py +0 -0
  142. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/gunicorn_fractal.py +0 -0
  143. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/images/__init__.py +0 -0
  144. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/images/models.py +0 -0
  145. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/images/tools.py +0 -0
  146. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/logger.py +0 -0
  147. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/main.py +0 -0
  148. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/migrations/env.py +0 -0
  149. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/migrations/naming_convention.py +0 -0
  150. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/migrations/versions/034a469ec2eb_task_groups.py +0 -0
  151. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/migrations/versions/091b01f51f88_add_usergroup_and_linkusergroup_table.py +0 -0
  152. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/migrations/versions/19eca0dd47a9_user_settings_project_dir.py +0 -0
  153. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/migrations/versions/1eac13a26c83_drop_v1_tables.py +0 -0
  154. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/migrations/versions/316140ff7ee1_remove_usersettings_cache_dir.py +0 -0
  155. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/migrations/versions/47351f8c7ebc_drop_dataset_filters.py +0 -0
  156. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/migrations/versions/4c308bcaea2b_add_task_args_schema_and_task_args_.py +0 -0
  157. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/migrations/versions/4cedeb448a53_workflowtask_foreign_keys_not_nullables.py +0 -0
  158. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/migrations/versions/501961cfcd85_remove_link_between_v1_and_v2_tasks_.py +0 -0
  159. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/migrations/versions/50a13d6138fd_initial_schema.py +0 -0
  160. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/migrations/versions/5b6007027595_on_cascade.py +0 -0
  161. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/migrations/versions/5bf02391cfef_v2.py +0 -0
  162. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/migrations/versions/70e77f1c38b0_add_applyworkflow_first_task_index_and_.py +0 -0
  163. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/migrations/versions/71eefd1dd202_add_slurm_accounts.py +0 -0
  164. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/migrations/versions/84bf0fffde30_add_dumps_to_applyworkflow.py +0 -0
  165. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/migrations/versions/8e8f227a3e36_update_taskv2_post_2_7_0.py +0 -0
  166. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/migrations/versions/8f79bd162e35_add_docs_info_and_docs_link_to_task_.py +0 -0
  167. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/migrations/versions/94a47ea2d3ff_remove_cache_dir_slurm_user_and_slurm_.py +0 -0
  168. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/migrations/versions/97f444d47249_add_applyworkflow_project_dump.py +0 -0
  169. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/migrations/versions/99ea79d9e5d2_add_dataset_history.py +0 -0
  170. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/migrations/versions/9c5ae74c9b98_add_user_settings_table.py +0 -0
  171. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/migrations/versions/9fd26a2b0de4_add_workflow_timestamp_created.py +0 -0
  172. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/migrations/versions/a7f4d6137b53_add_workflow_dump_to_applyworkflow.py +0 -0
  173. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/migrations/versions/af1ef1c83c9b_add_accounting_tables.py +0 -0
  174. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/migrations/versions/af8673379a5c_drop_old_filter_columns.py +0 -0
  175. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/migrations/versions/d256a7379ab8_taskgroup_activity_and_venv_info_to_.py +0 -0
  176. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/migrations/versions/d4fe3708d309_make_applyworkflow_workflow_dump_non_.py +0 -0
  177. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/migrations/versions/da2cb2ac4255_user_group_viewer_paths.py +0 -0
  178. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/migrations/versions/db09233ad13a_split_filters_and_keep_old_columns.py +0 -0
  179. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/migrations/versions/e75cac726012_make_applyworkflow_start_timestamp_not_.py +0 -0
  180. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/migrations/versions/e81103413827_add_job_type_filters.py +0 -0
  181. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/migrations/versions/efa89c30e0a4_add_project_timestamp_created.py +0 -0
  182. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/migrations/versions/f384e1c0cf5d_drop_task_default_args_columns.py +0 -0
  183. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/migrations/versions/fbce16ff4e47_new_history_items.py +0 -0
  184. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/py.typed +0 -0
  185. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/ssh/__init__.py +0 -0
  186. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/ssh/_fabric.py +0 -0
  187. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/string_tools.py +0 -0
  188. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/syringe.py +0 -0
  189. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/tasks/__init__.py +0 -0
  190. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/tasks/utils.py +0 -0
  191. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/tasks/v2/__init__.py +0 -0
  192. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/tasks/v2/local/__init__.py +0 -0
  193. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/tasks/v2/local/_utils.py +0 -0
  194. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/tasks/v2/local/collect.py +0 -0
  195. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/tasks/v2/local/deactivate.py +0 -0
  196. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/tasks/v2/local/reactivate.py +0 -0
  197. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/tasks/v2/ssh/__init__.py +0 -0
  198. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/tasks/v2/ssh/_utils.py +0 -0
  199. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/tasks/v2/ssh/collect.py +0 -0
  200. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/tasks/v2/ssh/deactivate.py +0 -0
  201. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/tasks/v2/ssh/reactivate.py +0 -0
  202. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/tasks/v2/templates/1_create_venv.sh +0 -0
  203. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/tasks/v2/templates/2_pip_install.sh +0 -0
  204. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/tasks/v2/templates/3_pip_freeze.sh +0 -0
  205. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/tasks/v2/templates/4_pip_show.sh +0 -0
  206. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/tasks/v2/templates/5_get_venv_size_and_file_number.sh +0 -0
  207. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/tasks/v2/templates/6_pip_install_from_freeze.sh +0 -0
  208. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/tasks/v2/utils_background.py +0 -0
  209. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/tasks/v2/utils_database.py +0 -0
  210. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/tasks/v2/utils_package_names.py +0 -0
  211. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/tasks/v2/utils_python_interpreter.py +0 -0
  212. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/tasks/v2/utils_templates.py +0 -0
  213. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/urls.py +0 -0
  214. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/fractal_server/utils.py +0 -0
  215. {fractal_server-2.14.0a14 → fractal_server-2.14.0a16}/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.14.0a14
3
+ Version: 2.14.0a16
4
4
  Summary: Backend component of the Fractal analytics platform
5
5
  License: BSD-3-Clause
6
6
  Author: Tommaso Comparin
@@ -0,0 +1 @@
1
+ __VERSION__ = "2.14.0a16"
@@ -20,6 +20,10 @@ from fractal_server.app.routes.api.v2._aux_functions import (
20
20
  from fractal_server.app.routes.api.v2._aux_functions import (
21
21
  _get_workflowtask_or_404,
22
22
  )
23
+ from fractal_server.logger import set_logger
24
+
25
+
26
+ logger = set_logger(__name__)
23
27
 
24
28
 
25
29
  async def get_history_unit_or_404(
@@ -67,6 +71,10 @@ def read_log_file(
67
71
  dataset_id: int,
68
72
  ):
69
73
  if logfile is None or not Path(logfile).exists():
74
+ logger.debug(
75
+ f"Logs for task '{wftask.task.name}' in dataset "
76
+ f"{dataset_id} are not available ({logfile=})."
77
+ )
70
78
  return (
71
79
  f"Logs for task '{wftask.task.name}' in dataset "
72
80
  f"{dataset_id} are not available."
@@ -84,11 +84,10 @@ async def get_workflow_tasks_statuses(
84
84
  .limit(1)
85
85
  )
86
86
  latest_history_run = res.scalar_one_or_none()
87
- logger.debug( # FIXME: remove
88
- f"Given {dataset_id=} and {wftask.id}, "
89
- f"found {latest_history_run=}."
90
- )
91
87
  if latest_history_run is None:
88
+ logger.debug(
89
+ f"No HistoryRun found for {dataset_id=} and {wftask.id=}."
90
+ )
92
91
  response[wftask.id] = None
93
92
  continue
94
93
  response[wftask.id] = dict(
@@ -11,6 +11,9 @@ from fractal_server.app.runner.executors.base_runner import BaseRunner
11
11
  from fractal_server.app.runner.task_files import MULTISUBMIT_PREFIX
12
12
  from fractal_server.app.runner.task_files import SUBMIT_PREFIX
13
13
  from fractal_server.app.runner.task_files import TaskFiles
14
+ from fractal_server.app.runner.v2.db_tools import (
15
+ update_logfile_of_history_unit,
16
+ )
14
17
  from fractal_server.app.runner.v2.db_tools import update_status_of_history_unit
15
18
  from fractal_server.app.schemas.v2 import HistoryUnitStatus
16
19
  from fractal_server.logger import set_logger
@@ -69,7 +72,12 @@ class LocalRunner(BaseRunner):
69
72
  workdir_local = task_files.wftask_subfolder_local
70
73
  workdir_local.mkdir()
71
74
 
75
+ # Add prefix to task_files object
72
76
  task_files.prefix = SUBMIT_PREFIX
77
+ update_logfile_of_history_unit(
78
+ history_unit_id=history_unit_id,
79
+ logfile=task_files.log_file_local,
80
+ )
73
81
 
74
82
  # SUBMISSION PHASE
75
83
  future = self.executor.submit(
@@ -155,17 +163,35 @@ class LocalRunner(BaseRunner):
155
163
  active_futures: dict[int, Future] = {}
156
164
  for ind_within_chunk, kwargs in enumerate(list_parameters_chunk):
157
165
  positional_index = ind_chunk + ind_within_chunk
158
- current_task_files = list_task_files[positional_index]
159
- current_task_files.prefix = (
160
- f"{MULTISUBMIT_PREFIX}-{positional_index:06d}"
161
- )
166
+ list_task_files[
167
+ positional_index
168
+ ].prefix = f"{MULTISUBMIT_PREFIX}-{positional_index:06d}"
162
169
  future = self.executor.submit(
163
170
  func,
164
171
  parameters=kwargs,
165
- remote_files=current_task_files.remote_files_dict,
172
+ remote_files=list_task_files[
173
+ positional_index
174
+ ].remote_files_dict,
166
175
  )
167
176
  active_futures[positional_index] = future
168
177
 
178
+ if task_type == "parallel":
179
+ # FIXME: replace loop with a `bulk_update_history_unit`
180
+ # function
181
+ update_logfile_of_history_unit(
182
+ history_unit_id=history_unit_ids[positional_index],
183
+ logfile=list_task_files[
184
+ positional_index
185
+ ].log_file_local,
186
+ )
187
+ else:
188
+ logger.debug(
189
+ f"Unclear what logfile to associate to {task_type=} "
190
+ "within multisubmit (see issue #2382)."
191
+ )
192
+ # FIXME: Improve definition for compound tasks
193
+ pass
194
+
169
195
  while active_futures:
170
196
  # FIXME: add shutdown detection
171
197
  # if file exists: cancel all futures, and raise
@@ -23,6 +23,9 @@ from fractal_server.app.runner.filenames import SHUTDOWN_FILENAME
23
23
  from fractal_server.app.runner.task_files import MULTISUBMIT_PREFIX
24
24
  from fractal_server.app.runner.task_files import SUBMIT_PREFIX
25
25
  from fractal_server.app.runner.task_files import TaskFiles
26
+ from fractal_server.app.runner.v2.db_tools import (
27
+ update_logfile_of_history_unit,
28
+ )
26
29
  from fractal_server.app.runner.v2.db_tools import update_status_of_history_unit
27
30
  from fractal_server.app.schemas.v2 import HistoryUnitStatus
28
31
  from fractal_server.config import get_settings
@@ -225,9 +228,9 @@ class BaseSlurmRunner(BaseRunner):
225
228
  logger.info(script_lines)
226
229
 
227
230
  # Always print output of `uname -n` and `pwd`
228
- script_lines.append(
229
- '"Hostname: `uname -n`; current directory: `pwd`"\n'
230
- )
231
+ script_lines.append("Hostname: $(uname -n)\n")
232
+ script_lines.append("Current directory : $(pwd)\n")
233
+ script_lines.append('Start time: $(date + "%Y-%m-%dT%H:%M:%S%z")\n')
231
234
 
232
235
  # Complete script preamble
233
236
  script_lines.append("\n")
@@ -242,6 +245,7 @@ class BaseSlurmRunner(BaseRunner):
242
245
  )
243
246
  script_lines.append("wait\n")
244
247
  script = "\n".join(script_lines)
248
+ script_lines.append('End time: $(date + "%Y-%m-%dT%H:%M:%S%z")\n')
245
249
 
246
250
  # Write submission script
247
251
  with open(slurm_job.slurm_submission_script_local, "w") as f:
@@ -400,6 +404,10 @@ class BaseSlurmRunner(BaseRunner):
400
404
 
401
405
  # Add prefix to task_files object
402
406
  task_files.prefix = SUBMIT_PREFIX
407
+ update_logfile_of_history_unit(
408
+ history_unit_id=history_unit_id,
409
+ logfile=task_files.log_file_local,
410
+ )
403
411
 
404
412
  # Submission phase
405
413
  slurm_job = SlurmJob(
@@ -549,18 +557,17 @@ class BaseSlurmRunner(BaseRunner):
549
557
  tasks = []
550
558
  for ind_chunk, parameters in enumerate(chunk):
551
559
  index = (ind_batch * batch_size) + ind_chunk
552
- current_task_files = list_task_files[index]
553
- current_task_files.prefix = prefix
560
+ list_task_files[index].prefix = prefix
554
561
  tasks.append(
555
562
  SlurmTask(
556
563
  prefix=prefix,
557
564
  index=index,
558
- component=current_task_files.component,
565
+ component=list_task_files[index].component,
559
566
  workdir_local=workdir_local,
560
567
  workdir_remote=workdir_remote,
561
568
  parameters=parameters,
562
569
  zarr_url=parameters["zarr_url"],
563
- task_files=current_task_files,
570
+ task_files=list_task_files[index],
564
571
  ),
565
572
  )
566
573
 
@@ -575,6 +582,21 @@ class BaseSlurmRunner(BaseRunner):
575
582
  slurm_job=slurm_job,
576
583
  slurm_config=config,
577
584
  )
585
+ if task_type == "parallel":
586
+ # FIXME: replace loop with a `bulk_update_history_unit` function
587
+ for ind, task_files in enumerate(list_task_files):
588
+ update_logfile_of_history_unit(
589
+ history_unit_id=history_unit_ids[ind],
590
+ logfile=task_files.log_file_local,
591
+ )
592
+ else:
593
+ logger.debug(
594
+ f"Unclear what logfile to associate to {task_type=} "
595
+ "within multisubmit (see issue #2382)."
596
+ )
597
+ # FIXME: Improve definition for compound tasks
598
+ pass
599
+
578
600
  logger.info(f"END submission phase, {self.job_ids=}")
579
601
 
580
602
  # FIXME: replace this sleep a more precise check
@@ -3,11 +3,14 @@ from typing import Any
3
3
  from sqlalchemy.dialects.postgresql import insert as pg_insert
4
4
  from sqlalchemy.orm import Session
5
5
 
6
+ from fractal_server.app.db import get_sync_db
6
7
  from fractal_server.app.models.v2 import HistoryImageCache
7
8
  from fractal_server.app.models.v2 import HistoryRun
8
9
  from fractal_server.app.models.v2 import HistoryUnit
9
10
  from fractal_server.app.schemas.v2 import HistoryUnitStatus
10
11
 
12
+ _CHUNK_SIZE = 2_000
13
+
11
14
 
12
15
  def update_status_of_history_run(
13
16
  *,
@@ -37,7 +40,18 @@ def update_status_of_history_unit(
37
40
  db_sync.commit()
38
41
 
39
42
 
40
- _CHUNK_SIZE = 2_000
43
+ def update_logfile_of_history_unit(
44
+ *,
45
+ history_unit_id: int,
46
+ logfile: str,
47
+ ) -> None:
48
+ with next(get_sync_db()) as db_sync:
49
+ unit = db_sync.get(HistoryUnit, history_unit_id)
50
+ if unit is None:
51
+ raise ValueError(f"HistoryUnit {history_unit_id} not found.")
52
+ unit.logfile = logfile
53
+ db_sync.merge(unit)
54
+ db_sync.commit()
41
55
 
42
56
 
43
57
  def bulk_upsert_image_cache_fast(
@@ -172,7 +172,7 @@ def run_v2_task_non_parallel(
172
172
  history_unit = HistoryUnit(
173
173
  history_run_id=history_run_id,
174
174
  status=HistoryUnitStatus.SUBMITTED,
175
- logfile=task_files.log_file_local,
175
+ logfile=None,
176
176
  zarr_urls=zarr_urls,
177
177
  )
178
178
  db.add(history_unit)
@@ -275,7 +275,7 @@ def run_v2_task_parallel(
275
275
  HistoryUnit(
276
276
  history_run_id=history_run_id,
277
277
  status=HistoryUnitStatus.SUBMITTED,
278
- logfile=list_task_files[ind].log_file_local,
278
+ logfile=None,
279
279
  zarr_urls=[image["zarr_url"]],
280
280
  )
281
281
  for ind, image in enumerate(images)
@@ -401,8 +401,7 @@ def run_v2_task_compound(
401
401
  history_unit = HistoryUnit(
402
402
  history_run_id=history_run_id,
403
403
  status=HistoryUnitStatus.SUBMITTED,
404
- # FIXME: What about compute-task logs?
405
- logfile=task_files_init.log_file_local,
404
+ logfile=None,
406
405
  zarr_urls=input_image_zarr_urls,
407
406
  )
408
407
  db.add(history_unit)
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "fractal-server"
3
- version = "2.14.0a14"
3
+ version = "2.14.0a16"
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
  markers = ["container", "ssh"]
96
96
 
97
97
  [tool.bumpver]
98
- current_version = "2.14.0a14"
98
+ current_version = "2.14.0a16"
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.14.0a14"