fractal-server 2.17.1a1__py3-none-any.whl → 2.17.2__py3-none-any.whl

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 (203) hide show
  1. fractal_server/__init__.py +1 -1
  2. fractal_server/__main__.py +19 -18
  3. fractal_server/app/db/__init__.py +3 -3
  4. fractal_server/app/models/__init__.py +1 -0
  5. fractal_server/app/models/linkuserproject.py +3 -1
  6. fractal_server/app/models/security.py +21 -3
  7. fractal_server/app/models/v2/__init__.py +3 -1
  8. fractal_server/app/models/v2/accounting.py +9 -1
  9. fractal_server/app/models/v2/dataset.py +5 -1
  10. fractal_server/app/models/v2/history.py +15 -1
  11. fractal_server/app/models/v2/job.py +4 -0
  12. fractal_server/app/models/v2/profile.py +29 -0
  13. fractal_server/app/models/v2/project.py +4 -10
  14. fractal_server/app/models/v2/resource.py +4 -0
  15. fractal_server/app/models/v2/task_group.py +4 -3
  16. fractal_server/app/models/v2/workflow.py +2 -1
  17. fractal_server/app/routes/admin/v2/__init__.py +1 -2
  18. fractal_server/app/routes/admin/v2/accounting.py +1 -1
  19. fractal_server/app/routes/admin/v2/job.py +9 -9
  20. fractal_server/app/routes/admin/v2/profile.py +3 -2
  21. fractal_server/app/routes/admin/v2/resource.py +5 -5
  22. fractal_server/app/routes/admin/v2/task.py +28 -18
  23. fractal_server/app/routes/admin/v2/task_group.py +0 -1
  24. fractal_server/app/routes/admin/v2/task_group_lifecycle.py +1 -2
  25. fractal_server/app/routes/api/__init__.py +1 -0
  26. fractal_server/app/routes/api/v2/__init__.py +5 -6
  27. fractal_server/app/routes/api/v2/_aux_functions.py +70 -63
  28. fractal_server/app/routes/api/v2/_aux_functions_history.py +43 -20
  29. fractal_server/app/routes/api/v2/_aux_functions_task_lifecycle.py +2 -4
  30. fractal_server/app/routes/api/v2/_aux_functions_tasks.py +5 -7
  31. fractal_server/app/routes/api/v2/_aux_task_group_disambiguation.py +1 -2
  32. fractal_server/app/routes/api/v2/dataset.py +13 -32
  33. fractal_server/app/routes/api/v2/history.py +35 -21
  34. fractal_server/app/routes/api/v2/images.py +3 -2
  35. fractal_server/app/routes/api/v2/job.py +17 -14
  36. fractal_server/app/routes/api/v2/pre_submission_checks.py +5 -4
  37. fractal_server/app/routes/api/v2/project.py +22 -17
  38. fractal_server/app/routes/api/v2/status_legacy.py +12 -11
  39. fractal_server/app/routes/api/v2/submit.py +11 -12
  40. fractal_server/app/routes/api/v2/task.py +4 -3
  41. fractal_server/app/routes/api/v2/task_collection.py +28 -30
  42. fractal_server/app/routes/api/v2/task_collection_custom.py +8 -7
  43. fractal_server/app/routes/api/v2/task_collection_pixi.py +1 -2
  44. fractal_server/app/routes/api/v2/task_group.py +7 -6
  45. fractal_server/app/routes/api/v2/task_group_lifecycle.py +6 -6
  46. fractal_server/app/routes/api/v2/task_version_update.py +13 -12
  47. fractal_server/app/routes/api/v2/workflow.py +14 -31
  48. fractal_server/app/routes/api/v2/workflow_import.py +17 -19
  49. fractal_server/app/routes/api/v2/workflowtask.py +10 -12
  50. fractal_server/app/routes/auth/__init__.py +1 -3
  51. fractal_server/app/routes/auth/_aux_auth.py +1 -2
  52. fractal_server/app/routes/auth/current_user.py +4 -5
  53. fractal_server/app/routes/auth/group.py +7 -5
  54. fractal_server/app/routes/auth/login.py +1 -0
  55. fractal_server/app/routes/auth/oauth.py +4 -3
  56. fractal_server/app/routes/auth/register.py +4 -2
  57. fractal_server/app/routes/auth/users.py +10 -10
  58. fractal_server/app/routes/aux/_job.py +1 -1
  59. fractal_server/app/routes/aux/_runner.py +2 -2
  60. fractal_server/app/routes/pagination.py +1 -1
  61. fractal_server/app/schemas/user.py +3 -3
  62. fractal_server/app/schemas/v2/accounting.py +11 -0
  63. fractal_server/app/schemas/v2/dataset.py +28 -4
  64. fractal_server/app/schemas/v2/dumps.py +1 -0
  65. fractal_server/app/schemas/v2/manifest.py +4 -3
  66. fractal_server/app/schemas/v2/profile.py +53 -2
  67. fractal_server/app/schemas/v2/resource.py +109 -13
  68. fractal_server/app/schemas/v2/task.py +0 -1
  69. fractal_server/app/schemas/v2/task_collection.py +1 -1
  70. fractal_server/app/schemas/v2/workflowtask.py +4 -3
  71. fractal_server/app/security/__init__.py +4 -7
  72. fractal_server/app/security/signup_email.py +4 -5
  73. fractal_server/config/_data.py +36 -25
  74. fractal_server/config/_database.py +19 -20
  75. fractal_server/config/_email.py +30 -38
  76. fractal_server/config/_main.py +33 -52
  77. fractal_server/config/_oauth.py +17 -21
  78. fractal_server/exceptions.py +4 -0
  79. fractal_server/images/models.py +3 -3
  80. fractal_server/images/status_tools.py +4 -2
  81. fractal_server/logger.py +1 -1
  82. fractal_server/main.py +4 -3
  83. fractal_server/migrations/versions/034a469ec2eb_task_groups.py +4 -8
  84. fractal_server/migrations/versions/091b01f51f88_add_usergroup_and_linkusergroup_table.py +1 -1
  85. fractal_server/migrations/versions/0f5f85bb2ae7_add_pre_pinned_packages.py +1 -0
  86. fractal_server/migrations/versions/19eca0dd47a9_user_settings_project_dir.py +1 -1
  87. fractal_server/migrations/versions/1a83a5260664_rename.py +1 -1
  88. fractal_server/migrations/versions/1eac13a26c83_drop_v1_tables.py +1 -0
  89. fractal_server/migrations/versions/316140ff7ee1_remove_usersettings_cache_dir.py +1 -1
  90. fractal_server/migrations/versions/40d6d6511b20_add_index_to_history_models.py +47 -0
  91. fractal_server/migrations/versions/45fbb391d7af_make_resource_id_fk_non_nullable.py +1 -1
  92. fractal_server/migrations/versions/47351f8c7ebc_drop_dataset_filters.py +1 -0
  93. fractal_server/migrations/versions/49d0856e9569_drop_table.py +2 -3
  94. fractal_server/migrations/versions/4c308bcaea2b_add_task_args_schema_and_task_args_.py +1 -1
  95. fractal_server/migrations/versions/4cedeb448a53_workflowtask_foreign_keys_not_nullables.py +1 -1
  96. fractal_server/migrations/versions/501961cfcd85_remove_link_between_v1_and_v2_tasks_.py +2 -1
  97. fractal_server/migrations/versions/50a13d6138fd_initial_schema.py +7 -19
  98. fractal_server/migrations/versions/5bf02391cfef_v2.py +4 -10
  99. fractal_server/migrations/versions/70e77f1c38b0_add_applyworkflow_first_task_index_and_.py +1 -0
  100. fractal_server/migrations/versions/71eefd1dd202_add_slurm_accounts.py +1 -1
  101. fractal_server/migrations/versions/7673fe18c05d_remove_project_dir_server_default.py +1 -1
  102. fractal_server/migrations/versions/791ce783d3d8_add_indices.py +1 -1
  103. fractal_server/migrations/versions/83bc2ad3ffcc_2_17_0.py +1 -0
  104. fractal_server/migrations/versions/84bf0fffde30_add_dumps_to_applyworkflow.py +1 -0
  105. fractal_server/migrations/versions/8e8f227a3e36_update_taskv2_post_2_7_0.py +2 -4
  106. fractal_server/migrations/versions/8f79bd162e35_add_docs_info_and_docs_link_to_task_.py +1 -1
  107. fractal_server/migrations/versions/94a47ea2d3ff_remove_cache_dir_slurm_user_and_slurm_.py +1 -0
  108. fractal_server/migrations/versions/969d84257cac_add_historyrun_task_id.py +1 -1
  109. fractal_server/migrations/versions/97f444d47249_add_applyworkflow_project_dump.py +1 -1
  110. fractal_server/migrations/versions/981d588fe248_add_executor_error_log.py +1 -1
  111. fractal_server/migrations/versions/99ea79d9e5d2_add_dataset_history.py +2 -4
  112. fractal_server/migrations/versions/9c5ae74c9b98_add_user_settings_table.py +1 -1
  113. fractal_server/migrations/versions/9db60297b8b2_set_ondelete.py +1 -1
  114. fractal_server/migrations/versions/9fd26a2b0de4_add_workflow_timestamp_created.py +1 -1
  115. fractal_server/migrations/versions/a7f4d6137b53_add_workflow_dump_to_applyworkflow.py +1 -1
  116. fractal_server/migrations/versions/af1ef1c83c9b_add_accounting_tables.py +1 -0
  117. fractal_server/migrations/versions/af8673379a5c_drop_old_filter_columns.py +1 -0
  118. fractal_server/migrations/versions/b1e7f7a1ff71_task_group_for_pixi.py +1 -1
  119. fractal_server/migrations/versions/b3ffb095f973_json_to_jsonb.py +1 -0
  120. fractal_server/migrations/versions/c90a7c76e996_job_id_in_history_run.py +1 -1
  121. fractal_server/migrations/versions/caba9fb1ea5e_drop_useroauth_user_settings_id.py +1 -1
  122. fractal_server/migrations/versions/d256a7379ab8_taskgroup_activity_and_venv_info_to_.py +4 -9
  123. fractal_server/migrations/versions/d4fe3708d309_make_applyworkflow_workflow_dump_non_.py +1 -0
  124. fractal_server/migrations/versions/da2cb2ac4255_user_group_viewer_paths.py +1 -1
  125. fractal_server/migrations/versions/db09233ad13a_split_filters_and_keep_old_columns.py +1 -0
  126. fractal_server/migrations/versions/e0e717ae2f26_delete_linkuserproject_ondelete_project.py +50 -0
  127. fractal_server/migrations/versions/e75cac726012_make_applyworkflow_start_timestamp_not_.py +1 -0
  128. fractal_server/migrations/versions/e81103413827_add_job_type_filters.py +1 -1
  129. fractal_server/migrations/versions/efa89c30e0a4_add_project_timestamp_created.py +1 -0
  130. fractal_server/migrations/versions/f37aceb45062_make_historyunit_logfile_required.py +1 -1
  131. fractal_server/migrations/versions/f384e1c0cf5d_drop_task_default_args_columns.py +1 -0
  132. fractal_server/migrations/versions/fbce16ff4e47_new_history_items.py +4 -9
  133. fractal_server/runner/config/_local.py +8 -5
  134. fractal_server/runner/config/_slurm.py +37 -33
  135. fractal_server/runner/config/slurm_mem_to_MB.py +0 -1
  136. fractal_server/runner/executors/base_runner.py +29 -4
  137. fractal_server/runner/executors/local/get_local_config.py +1 -0
  138. fractal_server/runner/executors/local/runner.py +14 -13
  139. fractal_server/runner/executors/slurm_common/_batching.py +5 -10
  140. fractal_server/runner/executors/slurm_common/base_slurm_runner.py +53 -27
  141. fractal_server/runner/executors/slurm_common/get_slurm_config.py +14 -7
  142. fractal_server/runner/executors/slurm_common/remote.py +3 -1
  143. fractal_server/runner/executors/slurm_common/slurm_config.py +1 -0
  144. fractal_server/runner/executors/slurm_common/slurm_job_task_models.py +1 -3
  145. fractal_server/runner/executors/slurm_ssh/runner.py +16 -11
  146. fractal_server/runner/executors/slurm_ssh/tar_commands.py +1 -0
  147. fractal_server/runner/executors/slurm_sudo/_subprocess_run_as_user.py +1 -0
  148. fractal_server/runner/executors/slurm_sudo/runner.py +16 -11
  149. fractal_server/runner/task_files.py +9 -3
  150. fractal_server/runner/v2/_local.py +9 -4
  151. fractal_server/runner/v2/_slurm_ssh.py +11 -5
  152. fractal_server/runner/v2/_slurm_sudo.py +11 -5
  153. fractal_server/runner/v2/db_tools.py +0 -1
  154. fractal_server/runner/v2/deduplicate_list.py +2 -1
  155. fractal_server/runner/v2/runner.py +11 -14
  156. fractal_server/runner/v2/runner_functions.py +11 -14
  157. fractal_server/runner/v2/submit_workflow.py +7 -6
  158. fractal_server/ssh/_fabric.py +6 -13
  159. fractal_server/string_tools.py +0 -1
  160. fractal_server/syringe.py +1 -1
  161. fractal_server/tasks/config/_pixi.py +1 -1
  162. fractal_server/tasks/config/_python.py +16 -9
  163. fractal_server/tasks/utils.py +0 -1
  164. fractal_server/tasks/v2/local/_utils.py +1 -1
  165. fractal_server/tasks/v2/local/collect.py +10 -12
  166. fractal_server/tasks/v2/local/collect_pixi.py +9 -10
  167. fractal_server/tasks/v2/local/deactivate.py +7 -8
  168. fractal_server/tasks/v2/local/deactivate_pixi.py +4 -4
  169. fractal_server/tasks/v2/local/delete.py +1 -3
  170. fractal_server/tasks/v2/local/reactivate.py +7 -7
  171. fractal_server/tasks/v2/local/reactivate_pixi.py +7 -7
  172. fractal_server/tasks/v2/ssh/_utils.py +3 -3
  173. fractal_server/tasks/v2/ssh/collect.py +14 -19
  174. fractal_server/tasks/v2/ssh/collect_pixi.py +17 -19
  175. fractal_server/tasks/v2/ssh/deactivate.py +10 -8
  176. fractal_server/tasks/v2/ssh/deactivate_pixi.py +6 -5
  177. fractal_server/tasks/v2/ssh/delete.py +7 -5
  178. fractal_server/tasks/v2/ssh/reactivate.py +11 -11
  179. fractal_server/tasks/v2/ssh/reactivate_pixi.py +8 -9
  180. fractal_server/tasks/v2/templates/1_create_venv.sh +2 -0
  181. fractal_server/tasks/v2/templates/2_pip_install.sh +2 -0
  182. fractal_server/tasks/v2/templates/3_pip_freeze.sh +2 -0
  183. fractal_server/tasks/v2/templates/4_pip_show.sh +2 -0
  184. fractal_server/tasks/v2/templates/5_get_venv_size_and_file_number.sh +3 -1
  185. fractal_server/tasks/v2/templates/6_pip_install_from_freeze.sh +2 -0
  186. fractal_server/tasks/v2/templates/pixi_1_extract.sh +2 -0
  187. fractal_server/tasks/v2/templates/pixi_2_install.sh +2 -0
  188. fractal_server/tasks/v2/templates/pixi_3_post_install.sh +2 -0
  189. fractal_server/tasks/v2/utils_background.py +3 -3
  190. fractal_server/tasks/v2/utils_package_names.py +1 -2
  191. fractal_server/tasks/v2/utils_pixi.py +1 -3
  192. fractal_server/types/__init__.py +76 -1
  193. fractal_server/types/validators/_common_validators.py +1 -3
  194. fractal_server/types/validators/_workflow_task_arguments_validators.py +1 -2
  195. fractal_server/utils.py +1 -0
  196. fractal_server/zip_tools.py +34 -0
  197. {fractal_server-2.17.1a1.dist-info → fractal_server-2.17.2.dist-info}/METADATA +1 -1
  198. fractal_server-2.17.2.dist-info/RECORD +265 -0
  199. fractal_server/app/routes/admin/v2/project.py +0 -41
  200. fractal_server-2.17.1a1.dist-info/RECORD +0 -264
  201. {fractal_server-2.17.1a1.dist-info → fractal_server-2.17.2.dist-info}/WHEEL +0 -0
  202. {fractal_server-2.17.1a1.dist-info → fractal_server-2.17.2.dist-info}/entry_points.txt +0 -0
  203. {fractal_server-2.17.1a1.dist-info → fractal_server-2.17.2.dist-info}/licenses/LICENSE +0 -0
@@ -5,6 +5,7 @@ Revises: 1a83a5260664
5
5
  Create Date: 2025-09-10 14:36:06.028179
6
6
 
7
7
  """
8
+
8
9
  import sqlalchemy as sa
9
10
  from alembic import op
10
11
  from sqlalchemy.dialects import postgresql
@@ -5,11 +5,11 @@ Revises: 8e8f227a3e36
5
5
  Create Date: 2024-10-30 14:34:28.219355
6
6
 
7
7
  """
8
+
8
9
  import sqlalchemy as sa
9
10
  import sqlmodel
10
11
  from alembic import op
11
12
 
12
-
13
13
  # revision identifiers, used by Alembic.
14
14
  revision = "19eca0dd47a9"
15
15
  down_revision = "8e8f227a3e36"
@@ -5,8 +5,8 @@ Revises: b3ffb095f973
5
5
  Create Date: 2025-09-10 14:16:51.202765
6
6
 
7
7
  """
8
- from alembic import op
9
8
 
9
+ from alembic import op
10
10
 
11
11
  # revision identifiers, used by Alembic.
12
12
  revision = "1a83a5260664"
@@ -5,6 +5,7 @@ Revises: af8673379a5c
5
5
  Create Date: 2025-01-10 13:17:47.838607
6
6
 
7
7
  """
8
+
8
9
  import logging
9
10
 
10
11
  from alembic import op
@@ -5,10 +5,10 @@ Revises: d256a7379ab8
5
5
  Create Date: 2024-12-03 10:15:53.255958
6
6
 
7
7
  """
8
+
8
9
  import sqlalchemy as sa
9
10
  from alembic import op
10
11
 
11
-
12
12
  # revision identifiers, used by Alembic.
13
13
  revision = "316140ff7ee1"
14
14
  down_revision = "d256a7379ab8"
@@ -0,0 +1,47 @@
1
+ """add index to history models
2
+
3
+ Revision ID: 40d6d6511b20
4
+ Revises: 7673fe18c05d
5
+ Create Date: 2025-11-14 10:34:12.300920
6
+
7
+ """
8
+
9
+ from alembic import op
10
+
11
+ # revision identifiers, used by Alembic.
12
+ revision = "40d6d6511b20"
13
+ down_revision = "7673fe18c05d"
14
+ branch_labels = None
15
+ depends_on = None
16
+
17
+
18
+ def upgrade() -> None:
19
+ # ### commands auto generated by Alembic - please adjust! ###
20
+ with op.batch_alter_table("historyimagecache", schema=None) as batch_op:
21
+ batch_op.create_index(
22
+ batch_op.f("ix_historyimagecache_latest_history_unit_id"),
23
+ ["latest_history_unit_id"],
24
+ unique=False,
25
+ )
26
+
27
+ with op.batch_alter_table("historyunit", schema=None) as batch_op:
28
+ batch_op.create_index(
29
+ batch_op.f("ix_historyunit_history_run_id"),
30
+ ["history_run_id"],
31
+ unique=False,
32
+ )
33
+
34
+ # ### end Alembic commands ###
35
+
36
+
37
+ def downgrade() -> None:
38
+ # ### commands auto generated by Alembic - please adjust! ###
39
+ with op.batch_alter_table("historyunit", schema=None) as batch_op:
40
+ batch_op.drop_index(batch_op.f("ix_historyunit_history_run_id"))
41
+
42
+ with op.batch_alter_table("historyimagecache", schema=None) as batch_op:
43
+ batch_op.drop_index(
44
+ batch_op.f("ix_historyimagecache_latest_history_unit_id")
45
+ )
46
+
47
+ # ### end Alembic commands ###
@@ -5,10 +5,10 @@ Revises: caba9fb1ea5e
5
5
  Create Date: 2025-11-11 16:39:12.813766
6
6
 
7
7
  """
8
+
8
9
  import sqlalchemy as sa
9
10
  from alembic import op
10
11
 
11
-
12
12
  # revision identifiers, used by Alembic.
13
13
  revision = "45fbb391d7af"
14
14
  down_revision = "caba9fb1ea5e"
@@ -5,6 +5,7 @@ Revises: fbce16ff4e47
5
5
  Create Date: 2025-03-26 11:10:17.869028
6
6
 
7
7
  """
8
+
8
9
  import sqlalchemy as sa
9
10
  from alembic import op
10
11
  from sqlalchemy.dialects import postgresql
@@ -5,6 +5,7 @@ Revises: 45fbb391d7af
5
5
  Create Date: 2025-11-11 16:39:41.497832
6
6
 
7
7
  """
8
+
8
9
  import sqlalchemy as sa
9
10
  from alembic import op
10
11
  from sqlalchemy.dialects import postgresql
@@ -34,9 +35,7 @@ def downgrade() -> None:
34
35
  autoincrement=False,
35
36
  nullable=False,
36
37
  ),
37
- sa.Column(
38
- "ssh_host", sa.VARCHAR(), autoincrement=False, nullable=True
39
- ),
38
+ sa.Column("ssh_host", sa.VARCHAR(), autoincrement=False, nullable=True),
40
39
  sa.Column(
41
40
  "ssh_username", sa.VARCHAR(), autoincrement=False, nullable=True
42
41
  ),
@@ -5,11 +5,11 @@ Revises: 50a13d6138fd
5
5
  Create Date: 2023-05-29 17:09:02.492639
6
6
 
7
7
  """
8
+
8
9
  import sqlalchemy as sa
9
10
  import sqlmodel
10
11
  from alembic import op
11
12
 
12
-
13
13
  # revision identifiers, used by Alembic.
14
14
  revision = "4c308bcaea2b"
15
15
  down_revision = "50a13d6138fd"
@@ -5,10 +5,10 @@ Revises: efa89c30e0a4
5
5
  Create Date: 2024-01-16 13:57:47.891931
6
6
 
7
7
  """
8
+
8
9
  import sqlalchemy as sa
9
10
  from alembic import op
10
11
 
11
-
12
12
  # revision identifiers, used by Alembic.
13
13
  revision = "4cedeb448a53"
14
14
  down_revision = "efa89c30e0a4"
@@ -5,6 +5,7 @@ Revises: 5bf02391cfef
5
5
  Create Date: 2024-09-09 14:15:34.415926
6
6
 
7
7
  """
8
+
8
9
  import sqlalchemy as sa
9
10
  from alembic import op
10
11
 
@@ -36,8 +37,8 @@ def upgrade() -> None:
36
37
  # NOTE: in sqlite, the `drop_index` command fails if the existing table
37
38
  # has zero rows, while it succeeds if there are already some rows
38
39
  if op.get_bind().dialect.name == "sqlite":
39
- import sqlite3
40
40
  import logging
41
+ import sqlite3
41
42
 
42
43
  logger = logging.getLogger("alembic.runtime.migration")
43
44
  logger.warning(
@@ -5,11 +5,11 @@ Revises:
5
5
  Create Date: 2023-05-29 12:14:56.670243
6
6
 
7
7
  """
8
+
8
9
  import sqlalchemy as sa
9
10
  import sqlmodel
10
11
  from alembic import op
11
12
 
12
-
13
13
  # revision identifiers, used by Alembic.
14
14
  revision = "50a13d6138fd"
15
15
  down_revision = None
@@ -37,9 +37,7 @@ def upgrade() -> None:
37
37
  "task",
38
38
  sa.Column("default_args", sa.JSON(), nullable=True),
39
39
  sa.Column("meta", sa.JSON(), nullable=True),
40
- sa.Column(
41
- "source", sqlmodel.sql.sqltypes.AutoString(), nullable=False
42
- ),
40
+ sa.Column("source", sqlmodel.sql.sqltypes.AutoString(), nullable=False),
43
41
  sa.Column("id", sa.Integer(), nullable=False),
44
42
  sa.Column("name", sqlmodel.sql.sqltypes.AutoString(), nullable=False),
45
43
  sa.Column(
@@ -52,9 +50,7 @@ def upgrade() -> None:
52
50
  "output_type", sqlmodel.sql.sqltypes.AutoString(), nullable=False
53
51
  ),
54
52
  sa.Column("owner", sqlmodel.sql.sqltypes.AutoString(), nullable=True),
55
- sa.Column(
56
- "version", sqlmodel.sql.sqltypes.AutoString(), nullable=True
57
- ),
53
+ sa.Column("version", sqlmodel.sql.sqltypes.AutoString(), nullable=True),
58
54
  sa.PrimaryKeyConstraint("id"),
59
55
  sa.UniqueConstraint("source"),
60
56
  )
@@ -163,9 +159,7 @@ def upgrade() -> None:
163
159
  )
164
160
  op.create_table(
165
161
  "applyworkflow",
166
- sa.Column(
167
- "start_timestamp", sa.DateTime(timezone=True), nullable=True
168
- ),
162
+ sa.Column("start_timestamp", sa.DateTime(timezone=True), nullable=True),
169
163
  sa.Column("end_timestamp", sa.DateTime(timezone=True), nullable=True),
170
164
  sa.Column(
171
165
  "worker_init", sqlmodel.sql.sqltypes.AutoString(), nullable=True
@@ -183,9 +177,7 @@ def upgrade() -> None:
183
177
  sqlmodel.sql.sqltypes.AutoString(),
184
178
  nullable=True,
185
179
  ),
186
- sa.Column(
187
- "status", sqlmodel.sql.sqltypes.AutoString(), nullable=False
188
- ),
180
+ sa.Column("status", sqlmodel.sql.sqltypes.AutoString(), nullable=False),
189
181
  sa.Column("log", sqlmodel.sql.sqltypes.AutoString(), nullable=True),
190
182
  sa.ForeignKeyConstraint(
191
183
  ["input_dataset_id"],
@@ -243,12 +235,8 @@ def downgrade() -> None:
243
235
  op.drop_table("resource")
244
236
  op.drop_table("applyworkflow")
245
237
  op.drop_table("workflow")
246
- op.drop_index(
247
- op.f("ix_oauthaccount_oauth_name"), table_name="oauthaccount"
248
- )
249
- op.drop_index(
250
- op.f("ix_oauthaccount_account_id"), table_name="oauthaccount"
251
- )
238
+ op.drop_index(op.f("ix_oauthaccount_oauth_name"), table_name="oauthaccount")
239
+ op.drop_index(op.f("ix_oauthaccount_account_id"), table_name="oauthaccount")
252
240
  op.drop_table("oauthaccount")
253
241
  op.drop_table("linkuserproject")
254
242
  op.drop_table("dataset")
@@ -5,11 +5,11 @@ Revises: 9fd26a2b0de4
5
5
  Create Date: 2024-04-18 10:35:19.067833
6
6
 
7
7
  """
8
+
8
9
  import sqlalchemy as sa
9
10
  import sqlmodel
10
11
  from alembic import op
11
12
 
12
-
13
13
  # revision identifiers, used by Alembic.
14
14
  revision = "5bf02391cfef"
15
15
  down_revision = "9fd26a2b0de4"
@@ -50,9 +50,7 @@ def upgrade() -> None:
50
50
  sqlmodel.sql.sqltypes.AutoString(),
51
51
  nullable=True,
52
52
  ),
53
- sa.Column(
54
- "source", sqlmodel.sql.sqltypes.AutoString(), nullable=False
55
- ),
53
+ sa.Column("source", sqlmodel.sql.sqltypes.AutoString(), nullable=False),
56
54
  sa.Column(
57
55
  "meta_non_parallel", sa.JSON(), server_default="{}", nullable=False
58
56
  ),
@@ -60,9 +58,7 @@ def upgrade() -> None:
60
58
  "meta_parallel", sa.JSON(), server_default="{}", nullable=False
61
59
  ),
62
60
  sa.Column("owner", sqlmodel.sql.sqltypes.AutoString(), nullable=True),
63
- sa.Column(
64
- "version", sqlmodel.sql.sqltypes.AutoString(), nullable=True
65
- ),
61
+ sa.Column("version", sqlmodel.sql.sqltypes.AutoString(), nullable=True),
66
62
  sa.Column("args_schema_non_parallel", sa.JSON(), nullable=True),
67
63
  sa.Column("args_schema_parallel", sa.JSON(), nullable=True),
68
64
  sa.Column(
@@ -166,9 +162,7 @@ def upgrade() -> None:
166
162
  "start_timestamp", sa.DateTime(timezone=True), nullable=False
167
163
  ),
168
164
  sa.Column("end_timestamp", sa.DateTime(timezone=True), nullable=True),
169
- sa.Column(
170
- "status", sqlmodel.sql.sqltypes.AutoString(), nullable=False
171
- ),
165
+ sa.Column("status", sqlmodel.sql.sqltypes.AutoString(), nullable=False),
172
166
  sa.Column("log", sqlmodel.sql.sqltypes.AutoString(), nullable=True),
173
167
  sa.ForeignKeyConstraint(
174
168
  ["dataset_id"],
@@ -5,6 +5,7 @@ Revises: f384e1c0cf5d
5
5
  Create Date: 2023-07-17 11:39:47.679582
6
6
 
7
7
  """
8
+
8
9
  import sqlalchemy as sa
9
10
  from alembic import op
10
11
  from sqlalchemy.sql import column
@@ -5,11 +5,11 @@ Revises: d4fe3708d309
5
5
  Create Date: 2023-12-05 12:36:44.100065
6
6
 
7
7
  """
8
+
8
9
  import sqlalchemy as sa
9
10
  import sqlmodel
10
11
  from alembic import op
11
12
 
12
-
13
13
  # revision identifiers, used by Alembic.
14
14
  revision = "71eefd1dd202"
15
15
  down_revision = "d4fe3708d309"
@@ -5,8 +5,8 @@ Revises: 49d0856e9569
5
5
  Create Date: 2025-11-11 16:50:20.079193
6
6
 
7
7
  """
8
- from alembic import op
9
8
 
9
+ from alembic import op
10
10
 
11
11
  # revision identifiers, used by Alembic.
12
12
  revision = "7673fe18c05d"
@@ -5,8 +5,8 @@ Revises: 969d84257cac
5
5
  Create Date: 2025-06-03 09:32:30.757651
6
6
 
7
7
  """
8
- from alembic import op
9
8
 
9
+ from alembic import op
10
10
 
11
11
  # revision identifiers, used by Alembic.
12
12
  revision = "791ce783d3d8"
@@ -5,6 +5,7 @@ Revises: 981d588fe248
5
5
  Create Date: 2025-10-30 14:16:53.639006
6
6
 
7
7
  """
8
+
8
9
  import sqlalchemy as sa
9
10
  import sqlmodel
10
11
  from alembic import op
@@ -5,6 +5,7 @@ Revises: 99ea79d9e5d2
5
5
  Create Date: 2023-10-26 16:11:44.061971
6
6
 
7
7
  """
8
+
8
9
  import sqlalchemy as sa
9
10
  from alembic import op
10
11
 
@@ -5,10 +5,10 @@ Revises: 034a469ec2eb
5
5
  Create Date: 2024-10-29 09:01:33.075251
6
6
 
7
7
  """
8
+
8
9
  import sqlalchemy as sa
9
10
  from alembic import op
10
11
 
11
-
12
12
  # revision identifiers, used by Alembic.
13
13
  revision = "8e8f227a3e36"
14
14
  down_revision = "034a469ec2eb"
@@ -31,9 +31,7 @@ def downgrade() -> None:
31
31
  # ### commands auto generated by Alembic - please adjust! ###
32
32
  with op.batch_alter_table("taskv2", schema=None) as batch_op:
33
33
  batch_op.add_column(
34
- sa.Column(
35
- "owner", sa.VARCHAR(), autoincrement=False, nullable=True
36
- )
34
+ sa.Column("owner", sa.VARCHAR(), autoincrement=False, nullable=True)
37
35
  )
38
36
  batch_op.alter_column(
39
37
  "taskgroupv2_id", existing_type=sa.INTEGER(), nullable=True
@@ -5,11 +5,11 @@ Revises: a7f4d6137b53
5
5
  Create Date: 2023-08-01 14:13:15.322398
6
6
 
7
7
  """
8
+
8
9
  import sqlalchemy as sa
9
10
  import sqlmodel
10
11
  from alembic import op
11
12
 
12
-
13
13
  # revision identifiers, used by Alembic.
14
14
  revision = "8f79bd162e35"
15
15
  down_revision = "a7f4d6137b53"
@@ -5,6 +5,7 @@ Revises: 9c5ae74c9b98
5
5
  Create Date: 2024-09-25 09:33:18.014831
6
6
 
7
7
  """
8
+
8
9
  import sqlalchemy as sa
9
10
  from alembic import op
10
11
  from sqlalchemy.dialects import postgresql
@@ -5,10 +5,10 @@ Revises: c90a7c76e996
5
5
  Create Date: 2025-05-13 11:17:22.089308
6
6
 
7
7
  """
8
+
8
9
  import sqlalchemy as sa
9
10
  from alembic import op
10
11
 
11
-
12
12
  # revision identifiers, used by Alembic.
13
13
  revision = "969d84257cac"
14
14
  down_revision = "c90a7c76e996"
@@ -5,10 +5,10 @@ Revises: 71eefd1dd202
5
5
  Create Date: 2023-12-05 15:36:48.573358
6
6
 
7
7
  """
8
+
8
9
  import sqlalchemy as sa
9
10
  from alembic import op
10
11
 
11
-
12
12
  # revision identifiers, used by Alembic.
13
13
  revision = "97f444d47249"
14
14
  down_revision = "71eefd1dd202"
@@ -5,11 +5,11 @@ Revises: 0f5f85bb2ae7
5
5
  Create Date: 2025-09-15 08:31:10.363449
6
6
 
7
7
  """
8
+
8
9
  import sqlalchemy as sa
9
10
  import sqlmodel
10
11
  from alembic import op
11
12
 
12
-
13
13
  # revision identifiers, used by Alembic.
14
14
  revision = "981d588fe248"
15
15
  down_revision = "0f5f85bb2ae7"
@@ -5,10 +5,10 @@ Revises: 8f79bd162e35
5
5
  Create Date: 2023-10-16 09:45:15.132185
6
6
 
7
7
  """
8
+
8
9
  import sqlalchemy as sa
9
10
  from alembic import op
10
11
 
11
-
12
12
  # revision identifiers, used by Alembic.
13
13
  revision = "99ea79d9e5d2"
14
14
  down_revision = "8f79bd162e35"
@@ -20,9 +20,7 @@ def upgrade() -> None:
20
20
  # ### commands auto generated by Alembic - please adjust! ###
21
21
  with op.batch_alter_table("dataset", schema=None) as batch_op:
22
22
  batch_op.add_column(
23
- sa.Column(
24
- "history", sa.JSON(), server_default="[]", nullable=False
25
- )
23
+ sa.Column("history", sa.JSON(), server_default="[]", nullable=False)
26
24
  )
27
25
 
28
26
  # ### end Alembic commands ###
@@ -5,11 +5,11 @@ Revises: d9a140db5d42
5
5
  Create Date: 2024-09-24 12:01:13.393326
6
6
 
7
7
  """
8
+
8
9
  import sqlalchemy as sa
9
10
  import sqlmodel
10
11
  from alembic import op
11
12
 
12
-
13
13
  # revision identifiers, used by Alembic.
14
14
  revision = "9c5ae74c9b98"
15
15
  down_revision = "d9a140db5d42"
@@ -5,8 +5,8 @@ Revises: e81103413827
5
5
  Create Date: 2025-04-07 13:13:14.596394
6
6
 
7
7
  """
8
- from alembic import op
9
8
 
9
+ from alembic import op
10
10
 
11
11
  # revision identifiers, used by Alembic.
12
12
  revision = "9db60297b8b2"
@@ -5,13 +5,13 @@ Revises: efa89c30e0a4
5
5
  Create Date: 2024-01-11 09:31:20.950090
6
6
 
7
7
  """
8
+
8
9
  from datetime import datetime
9
10
  from datetime import timezone
10
11
 
11
12
  import sqlalchemy as sa
12
13
  from alembic import op
13
14
 
14
-
15
15
  # revision identifiers, used by Alembic.
16
16
  revision = "9fd26a2b0de4"
17
17
  down_revision = "4cedeb448a53"
@@ -5,10 +5,10 @@ Revises: 70e77f1c38b0
5
5
  Create Date: 2023-07-24 16:53:02.569582
6
6
 
7
7
  """
8
+
8
9
  import sqlalchemy as sa
9
10
  from alembic import op
10
11
 
11
-
12
12
  # revision identifiers, used by Alembic.
13
13
  revision = "a7f4d6137b53"
14
14
  down_revision = "70e77f1c38b0"
@@ -5,6 +5,7 @@ Revises: 1eac13a26c83
5
5
  Create Date: 2025-02-17 14:22:32.701581
6
6
 
7
7
  """
8
+
8
9
  import sqlalchemy as sa
9
10
  from alembic import op
10
11
  from sqlalchemy.dialects import postgresql
@@ -5,6 +5,7 @@ Revises: db09233ad13a
5
5
  Create Date: 2025-01-30 14:44:04.302795
6
6
 
7
7
  """
8
+
8
9
  import sqlalchemy as sa
9
10
  from alembic import op
10
11
  from sqlalchemy.dialects import postgresql
@@ -5,11 +5,11 @@ Revises: 791ce783d3d8
5
5
  Create Date: 2025-05-29 16:31:17.565973
6
6
 
7
7
  """
8
+
8
9
  import sqlalchemy as sa
9
10
  import sqlmodel
10
11
  from alembic import op
11
12
 
12
-
13
13
  # revision identifiers, used by Alembic.
14
14
  revision = "b1e7f7a1ff71"
15
15
  down_revision = "791ce783d3d8"
@@ -5,6 +5,7 @@ Revises: b1e7f7a1ff71
5
5
  Create Date: 2025-06-19 10:12:06.699107
6
6
 
7
7
  """
8
+
8
9
  import sqlalchemy as sa
9
10
  from alembic import op
10
11
  from sqlalchemy.dialects import postgresql
@@ -5,10 +5,10 @@ Revises: f37aceb45062
5
5
  Create Date: 2025-04-16 10:44:30.219309
6
6
 
7
7
  """
8
+
8
9
  import sqlalchemy as sa
9
10
  from alembic import op
10
11
 
11
-
12
12
  # revision identifiers, used by Alembic.
13
13
  revision = "c90a7c76e996"
14
14
  down_revision = "f37aceb45062"
@@ -5,10 +5,10 @@ Revises: 83bc2ad3ffcc
5
5
  Create Date: 2025-11-11 16:38:27.243693
6
6
 
7
7
  """
8
+
8
9
  import sqlalchemy as sa
9
10
  from alembic import op
10
11
 
11
-
12
12
  # revision identifiers, used by Alembic.
13
13
  revision = "caba9fb1ea5e"
14
14
  down_revision = "83bc2ad3ffcc"
@@ -5,6 +5,7 @@ Revises: 19eca0dd47a9
5
5
  Create Date: 2024-11-20 15:01:52.659832
6
6
 
7
7
  """
8
+
8
9
  import sqlalchemy as sa
9
10
  import sqlmodel
10
11
  from alembic import op
@@ -33,16 +34,10 @@ def upgrade() -> None:
33
34
  sa.Column(
34
35
  "version", sqlmodel.sql.sqltypes.AutoString(), nullable=False
35
36
  ),
36
- sa.Column(
37
- "status", sqlmodel.sql.sqltypes.AutoString(), nullable=False
38
- ),
39
- sa.Column(
40
- "action", sqlmodel.sql.sqltypes.AutoString(), nullable=False
41
- ),
37
+ sa.Column("status", sqlmodel.sql.sqltypes.AutoString(), nullable=False),
38
+ sa.Column("action", sqlmodel.sql.sqltypes.AutoString(), nullable=False),
42
39
  sa.Column("log", sqlmodel.sql.sqltypes.AutoString(), nullable=True),
43
- sa.Column(
44
- "timestamp_ended", sa.DateTime(timezone=True), nullable=True
45
- ),
40
+ sa.Column("timestamp_ended", sa.DateTime(timezone=True), nullable=True),
46
41
  sa.ForeignKeyConstraint(
47
42
  ["taskgroupv2_id"],
48
43
  ["taskgroupv2.id"],
@@ -5,6 +5,7 @@ Revises: e75cac726012
5
5
  Create Date: 2023-11-30 14:58:23.917824
6
6
 
7
7
  """
8
+
8
9
  import sqlalchemy as sa
9
10
  from alembic import op
10
11
 
@@ -5,10 +5,10 @@ Revises: 94a47ea2d3ff
5
5
  Create Date: 2024-09-26 14:39:26.135101
6
6
 
7
7
  """
8
+
8
9
  import sqlalchemy as sa
9
10
  from alembic import op
10
11
 
11
-
12
12
  # revision identifiers, used by Alembic.
13
13
  revision = "da2cb2ac4255"
14
14
  down_revision = "94a47ea2d3ff"
@@ -5,6 +5,7 @@ Revises: 316140ff7ee1
5
5
  Create Date: 2025-01-14 14:50:46.007222
6
6
 
7
7
  """
8
+
8
9
  import sqlalchemy as sa
9
10
  from alembic import op
10
11
  from sqlalchemy.dialects import postgresql