fractal-server 2.5.0a0__tar.gz → 2.5.0a1__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 (214) hide show
  1. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/PKG-INFO +1 -1
  2. fractal_server-2.5.0a1/fractal_server/__init__.py +1 -0
  3. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/routes/auth/_aux_auth.py +11 -5
  4. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/routes/auth/current_user.py +5 -1
  5. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/routes/auth/users.py +9 -8
  6. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/schemas/user.py +17 -0
  7. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/pyproject.toml +2 -2
  8. fractal_server-2.5.0a0/fractal_server/__init__.py +0 -1
  9. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/LICENSE +0 -0
  10. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/README.md +0 -0
  11. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/__main__.py +0 -0
  12. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/alembic.ini +0 -0
  13. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/__init__.py +0 -0
  14. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/db/__init__.py +0 -0
  15. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/models/__init__.py +0 -0
  16. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/models/linkusergroup.py +0 -0
  17. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/models/linkuserproject.py +0 -0
  18. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/models/security.py +0 -0
  19. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/models/v1/__init__.py +0 -0
  20. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/models/v1/dataset.py +0 -0
  21. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/models/v1/job.py +0 -0
  22. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/models/v1/project.py +0 -0
  23. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/models/v1/state.py +0 -0
  24. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/models/v1/task.py +0 -0
  25. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/models/v1/workflow.py +0 -0
  26. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/models/v2/__init__.py +0 -0
  27. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/models/v2/collection_state.py +0 -0
  28. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/models/v2/dataset.py +0 -0
  29. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/models/v2/job.py +0 -0
  30. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/models/v2/project.py +0 -0
  31. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/models/v2/task.py +0 -0
  32. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/models/v2/workflow.py +0 -0
  33. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/models/v2/workflowtask.py +0 -0
  34. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/routes/__init__.py +0 -0
  35. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/routes/admin/__init__.py +0 -0
  36. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/routes/admin/v1.py +0 -0
  37. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/routes/admin/v2.py +0 -0
  38. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/routes/api/__init__.py +0 -0
  39. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/routes/api/v1/__init__.py +0 -0
  40. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/routes/api/v1/_aux_functions.py +0 -0
  41. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/routes/api/v1/dataset.py +0 -0
  42. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/routes/api/v1/job.py +0 -0
  43. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/routes/api/v1/project.py +0 -0
  44. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/routes/api/v1/task.py +0 -0
  45. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/routes/api/v1/task_collection.py +0 -0
  46. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/routes/api/v1/workflow.py +0 -0
  47. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/routes/api/v1/workflowtask.py +0 -0
  48. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/routes/api/v2/__init__.py +0 -0
  49. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/routes/api/v2/_aux_functions.py +0 -0
  50. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/routes/api/v2/dataset.py +0 -0
  51. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/routes/api/v2/images.py +0 -0
  52. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/routes/api/v2/job.py +0 -0
  53. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/routes/api/v2/project.py +0 -0
  54. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/routes/api/v2/status.py +0 -0
  55. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/routes/api/v2/submit.py +0 -0
  56. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/routes/api/v2/task.py +0 -0
  57. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/routes/api/v2/task_collection.py +0 -0
  58. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/routes/api/v2/task_collection_custom.py +0 -0
  59. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/routes/api/v2/workflow.py +0 -0
  60. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/routes/api/v2/workflowtask.py +0 -0
  61. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/routes/auth/__init__.py +0 -0
  62. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/routes/auth/group.py +0 -0
  63. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/routes/auth/group_names.py +0 -0
  64. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/routes/auth/login.py +0 -0
  65. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/routes/auth/oauth.py +0 -0
  66. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/routes/auth/register.py +0 -0
  67. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/routes/auth/router.py +0 -0
  68. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/routes/aux/__init__.py +0 -0
  69. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/routes/aux/_job.py +0 -0
  70. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/routes/aux/_runner.py +0 -0
  71. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/.gitignore +0 -0
  72. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/__init__.py +0 -0
  73. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/async_wrap.py +0 -0
  74. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/components.py +0 -0
  75. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/compress_folder.py +0 -0
  76. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/exceptions.py +0 -0
  77. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/executors/__init__.py +0 -0
  78. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/executors/slurm/__init__.py +0 -0
  79. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/executors/slurm/_batching.py +0 -0
  80. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/executors/slurm/_slurm_config.py +0 -0
  81. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/executors/slurm/remote.py +0 -0
  82. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/executors/slurm/ssh/__init__.py +0 -0
  83. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/executors/slurm/ssh/_executor_wait_thread.py +0 -0
  84. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/executors/slurm/ssh/_slurm_job.py +0 -0
  85. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/executors/slurm/ssh/executor.py +0 -0
  86. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/executors/slurm/sudo/__init__.py +0 -0
  87. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/executors/slurm/sudo/_check_jobs_status.py +0 -0
  88. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/executors/slurm/sudo/_executor_wait_thread.py +0 -0
  89. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/executors/slurm/sudo/_subprocess_run_as_user.py +0 -0
  90. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/executors/slurm/sudo/executor.py +0 -0
  91. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/extract_archive.py +0 -0
  92. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/filenames.py +0 -0
  93. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/run_subprocess.py +0 -0
  94. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/set_start_and_last_task_index.py +0 -0
  95. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/shutdown.py +0 -0
  96. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/task_files.py +0 -0
  97. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/v1/__init__.py +0 -0
  98. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/v1/_common.py +0 -0
  99. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/v1/_local/__init__.py +0 -0
  100. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/v1/_local/_local_config.py +0 -0
  101. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/v1/_local/_submit_setup.py +0 -0
  102. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/v1/_local/executor.py +0 -0
  103. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/v1/_slurm/__init__.py +0 -0
  104. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/v1/_slurm/_submit_setup.py +0 -0
  105. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/v1/_slurm/get_slurm_config.py +0 -0
  106. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/v1/common.py +0 -0
  107. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/v1/handle_failed_job.py +0 -0
  108. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/v2/__init__.py +0 -0
  109. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/v2/_local/__init__.py +0 -0
  110. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/v2/_local/_local_config.py +0 -0
  111. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/v2/_local/_submit_setup.py +0 -0
  112. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/v2/_local/executor.py +0 -0
  113. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/v2/_local_experimental/__init__.py +0 -0
  114. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/v2/_local_experimental/_local_config.py +0 -0
  115. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/v2/_local_experimental/_submit_setup.py +0 -0
  116. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/v2/_local_experimental/executor.py +0 -0
  117. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/v2/_slurm_common/__init__.py +0 -0
  118. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/v2/_slurm_common/get_slurm_config.py +0 -0
  119. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/v2/_slurm_ssh/__init__.py +0 -0
  120. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/v2/_slurm_ssh/_submit_setup.py +0 -0
  121. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/v2/_slurm_sudo/__init__.py +0 -0
  122. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/v2/_slurm_sudo/_submit_setup.py +0 -0
  123. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/v2/deduplicate_list.py +0 -0
  124. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/v2/handle_failed_job.py +0 -0
  125. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/v2/merge_outputs.py +0 -0
  126. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/v2/runner.py +0 -0
  127. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/v2/runner_functions.py +0 -0
  128. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/v2/runner_functions_low_level.py +0 -0
  129. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/v2/task_interface.py +0 -0
  130. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/runner/versions.py +0 -0
  131. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/schemas/__init__.py +0 -0
  132. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/schemas/_validators.py +0 -0
  133. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/schemas/user_group.py +0 -0
  134. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/schemas/v1/__init__.py +0 -0
  135. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/schemas/v1/applyworkflow.py +0 -0
  136. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/schemas/v1/dataset.py +0 -0
  137. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/schemas/v1/dumps.py +0 -0
  138. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/schemas/v1/manifest.py +0 -0
  139. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/schemas/v1/project.py +0 -0
  140. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/schemas/v1/state.py +0 -0
  141. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/schemas/v1/task.py +0 -0
  142. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/schemas/v1/task_collection.py +0 -0
  143. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/schemas/v1/workflow.py +0 -0
  144. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/schemas/v2/__init__.py +0 -0
  145. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/schemas/v2/dataset.py +0 -0
  146. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/schemas/v2/dumps.py +0 -0
  147. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/schemas/v2/job.py +0 -0
  148. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/schemas/v2/manifest.py +0 -0
  149. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/schemas/v2/project.py +0 -0
  150. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/schemas/v2/status.py +0 -0
  151. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/schemas/v2/task.py +0 -0
  152. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/schemas/v2/task_collection.py +0 -0
  153. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/schemas/v2/workflow.py +0 -0
  154. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/schemas/v2/workflowtask.py +0 -0
  155. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/app/security/__init__.py +0 -0
  156. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/config.py +0 -0
  157. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/data_migrations/2_4_0.py +0 -0
  158. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/data_migrations/README.md +0 -0
  159. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/gunicorn_fractal.py +0 -0
  160. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/images/__init__.py +0 -0
  161. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/images/models.py +0 -0
  162. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/images/tools.py +0 -0
  163. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/logger.py +0 -0
  164. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/main.py +0 -0
  165. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/migrations/README +0 -0
  166. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/migrations/env.py +0 -0
  167. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/migrations/naming_convention.py +0 -0
  168. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/migrations/script.py.mako +0 -0
  169. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/migrations/versions/091b01f51f88_add_usergroup_and_linkusergroup_table.py +0 -0
  170. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/migrations/versions/4c308bcaea2b_add_task_args_schema_and_task_args_.py +0 -0
  171. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/migrations/versions/4cedeb448a53_workflowtask_foreign_keys_not_nullables.py +0 -0
  172. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/migrations/versions/501961cfcd85_remove_link_between_v1_and_v2_tasks_.py +0 -0
  173. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/migrations/versions/50a13d6138fd_initial_schema.py +0 -0
  174. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/migrations/versions/5bf02391cfef_v2.py +0 -0
  175. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/migrations/versions/70e77f1c38b0_add_applyworkflow_first_task_index_and_.py +0 -0
  176. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/migrations/versions/71eefd1dd202_add_slurm_accounts.py +0 -0
  177. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/migrations/versions/84bf0fffde30_add_dumps_to_applyworkflow.py +0 -0
  178. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/migrations/versions/8f79bd162e35_add_docs_info_and_docs_link_to_task_.py +0 -0
  179. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/migrations/versions/97f444d47249_add_applyworkflow_project_dump.py +0 -0
  180. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/migrations/versions/99ea79d9e5d2_add_dataset_history.py +0 -0
  181. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/migrations/versions/9fd26a2b0de4_add_workflow_timestamp_created.py +0 -0
  182. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/migrations/versions/a7f4d6137b53_add_workflow_dump_to_applyworkflow.py +0 -0
  183. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/migrations/versions/d4fe3708d309_make_applyworkflow_workflow_dump_non_.py +0 -0
  184. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/migrations/versions/e75cac726012_make_applyworkflow_start_timestamp_not_.py +0 -0
  185. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/migrations/versions/efa89c30e0a4_add_project_timestamp_created.py +0 -0
  186. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/migrations/versions/f384e1c0cf5d_drop_task_default_args_columns.py +0 -0
  187. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/py.typed +0 -0
  188. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/ssh/__init__.py +0 -0
  189. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/ssh/_fabric.py +0 -0
  190. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/string_tools.py +0 -0
  191. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/syringe.py +0 -0
  192. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/tasks/__init__.py +0 -0
  193. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/tasks/utils.py +0 -0
  194. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/tasks/v1/_TaskCollectPip.py +0 -0
  195. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/tasks/v1/__init__.py +0 -0
  196. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/tasks/v1/background_operations.py +0 -0
  197. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/tasks/v1/endpoint_operations.py +0 -0
  198. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/tasks/v1/get_collection_data.py +0 -0
  199. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/tasks/v1/utils.py +0 -0
  200. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/tasks/v2/_TaskCollectPip.py +0 -0
  201. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/tasks/v2/__init__.py +0 -0
  202. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/tasks/v2/_venv_pip.py +0 -0
  203. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/tasks/v2/background_operations.py +0 -0
  204. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/tasks/v2/background_operations_ssh.py +0 -0
  205. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/tasks/v2/endpoint_operations.py +0 -0
  206. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/tasks/v2/templates/_1_create_venv.sh +0 -0
  207. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/tasks/v2/templates/_2_upgrade_pip.sh +0 -0
  208. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/tasks/v2/templates/_3_pip_install.sh +0 -0
  209. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/tasks/v2/templates/_4_pip_freeze.sh +0 -0
  210. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/tasks/v2/templates/_5_pip_show.sh +0 -0
  211. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/tasks/v2/utils.py +0 -0
  212. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/urls.py +0 -0
  213. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/utils.py +0 -0
  214. {fractal_server-2.5.0a0 → fractal_server-2.5.0a1}/fractal_server/zip_tools.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: fractal-server
3
- Version: 2.5.0a0
3
+ Version: 2.5.0a1
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
@@ -0,0 +1 @@
1
+ __VERSION__ = "2.5.0a1"
@@ -32,7 +32,11 @@ async def _get_single_user_with_group_names(
32
32
  res = await db.execute(stm_groups)
33
33
  groups = res.scalars().unique().all()
34
34
  group_names = [group.name for group in groups]
35
- return UserRead(**user.model_dump(), group_names=group_names)
35
+ return UserRead(
36
+ **user.model_dump(),
37
+ group_names=group_names,
38
+ oauth_accounts=user.oauth_accounts,
39
+ )
36
40
 
37
41
 
38
42
  async def _get_single_user_with_group_ids(
@@ -53,7 +57,11 @@ async def _get_single_user_with_group_ids(
53
57
  res = await db.execute(stm_links)
54
58
  links = res.scalars().unique().all()
55
59
  group_ids = [link.group_id for link in links]
56
- return UserRead(**user.model_dump(), group_ids=group_ids)
60
+ return UserRead(
61
+ **user.model_dump(),
62
+ group_ids=group_ids,
63
+ oauth_accounts=user.oauth_accounts,
64
+ )
57
65
 
58
66
 
59
67
  async def _get_single_group_with_user_ids(
@@ -97,9 +105,7 @@ async def _user_or_404(user_id: int, db: AsyncSession) -> UserOAuth:
97
105
  user_id: ID of the user
98
106
  db: Async db session
99
107
  """
100
- stm = select(UserOAuth).where(UserOAuth.id == user_id)
101
- res = await db.execute(stm)
102
- user = res.scalars().unique().one_or_none()
108
+ user = await db.get(UserOAuth, user_id, populate_existing=True)
103
109
  if user is None:
104
110
  raise HTTPException(
105
111
  status_code=status.HTTP_404_NOT_FOUND, detail="User not found."
@@ -51,9 +51,13 @@ async def patch_current_user(
51
51
  # NOTE: here it would be relevant to catch an `InvalidPasswordException`
52
52
  # (from `fastapi_users.exceptions`), if we were to allow users change
53
53
  # their own password
54
+
54
55
  user = await user_manager.update(update, current_user, safe=True)
55
- patched_user = schemas.model_validate(UserOAuth, user)
56
+ validated_user = schemas.model_validate(UserOAuth, user)
56
57
 
58
+ patched_user = await db.get(
59
+ UserOAuth, validated_user.id, populate_existing=True
60
+ )
57
61
  patched_user_with_groups = await _get_single_user_with_group_names(
58
62
  patched_user, db
59
63
  )
@@ -43,10 +43,8 @@ async def get_user(
43
43
  ) -> UserRead:
44
44
  user = await _user_or_404(user_id, db)
45
45
  if group_ids:
46
- user_with_group_ids = await _get_single_user_with_group_ids(user, db)
47
- return user_with_group_ids
48
- else:
49
- return user
46
+ user = await _get_single_user_with_group_ids(user, db)
47
+ return user
50
48
 
51
49
 
52
50
  @router_users.patch("/users/{user_id}/", response_model=UserRead)
@@ -127,9 +125,7 @@ async def patch_user(
127
125
  status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
128
126
  detail=error_msg,
129
127
  )
130
-
131
128
  patched_user = user_to_patch
132
-
133
129
  elif edit_attributes:
134
130
  # Modify user attributes
135
131
  try:
@@ -142,7 +138,10 @@ async def patch_user(
142
138
  safe=False,
143
139
  request=None,
144
140
  )
145
- patched_user = schemas.model_validate(UserOAuth, user)
141
+ validated_user = schemas.model_validate(UserOAuth, user)
142
+ patched_user = await db.get(
143
+ UserOAuth, validated_user.id, populate_existing=True
144
+ )
146
145
  except exceptions.InvalidPasswordException as e:
147
146
  raise HTTPException(
148
147
  status_code=status.HTTP_400_BAD_REQUEST,
@@ -189,9 +188,11 @@ async def list_users(
189
188
  # https://github.com/fractal-analytics-platform/fractal-server/issues/1742
190
189
  for ind, user in enumerate(user_list):
191
190
  user_list[ind] = dict(
192
- user.model_dump(),
191
+ **user.model_dump(),
192
+ oauth_accounts=user.oauth_accounts,
193
193
  group_ids=[
194
194
  link.group_id for link in links if link.user_id == user.id
195
195
  ],
196
196
  )
197
+
197
198
  return user_list
@@ -20,6 +20,22 @@ __all__ = (
20
20
  )
21
21
 
22
22
 
23
+ class OAuthAccountRead(BaseModel):
24
+ """
25
+ Schema for storing essential `OAuthAccount` information within
26
+ `UserRead.oauth_accounts`.
27
+
28
+ Attributes:
29
+ id: ID of the row in fractal-owned `oauthaccount` table.
30
+ account_email: Email associated to OAuth account
31
+ oauth_name: Name of the OAuth provider (e.g. `github`)
32
+ """
33
+
34
+ id: int
35
+ account_email: str
36
+ oauth_name: str
37
+
38
+
23
39
  class UserRead(schemas.BaseUser[int]):
24
40
  """
25
41
  Schema for `User` read from database.
@@ -37,6 +53,7 @@ class UserRead(schemas.BaseUser[int]):
37
53
  slurm_accounts: list[str]
38
54
  group_names: Optional[list[str]] = None
39
55
  group_ids: Optional[list[int]] = None
56
+ oauth_accounts: list[OAuthAccountRead]
40
57
 
41
58
 
42
59
  class UserUpdate(schemas.BaseUserUpdate):
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "fractal-server"
3
- version = "2.5.0a0"
3
+ version = "2.5.0a1"
4
4
  description = "Server component of the Fractal analytics platform"
5
5
  authors = [
6
6
  "Tommaso Comparin <tommaso.comparin@exact-lab.it>",
@@ -92,7 +92,7 @@ filterwarnings = [
92
92
  ]
93
93
 
94
94
  [tool.bumpver]
95
- current_version = "2.5.0a0"
95
+ current_version = "2.5.0a1"
96
96
  version_pattern = "MAJOR.MINOR.PATCH[PYTAGNUM]"
97
97
  commit_message = "bump version {old_version} -> {new_version}"
98
98
  commit = true
@@ -1 +0,0 @@
1
- __VERSION__ = "2.5.0a0"