fractal-server 2.13.0__py3-none-any.whl → 2.14.0a0__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 (73) hide show
  1. fractal_server/__init__.py +1 -1
  2. fractal_server/app/history/__init__.py +4 -0
  3. fractal_server/app/history/image_updates.py +142 -0
  4. fractal_server/app/history/status_enum.py +16 -0
  5. fractal_server/app/models/v2/__init__.py +9 -1
  6. fractal_server/app/models/v2/accounting.py +35 -0
  7. fractal_server/app/models/v2/history.py +53 -0
  8. fractal_server/app/routes/admin/v2/__init__.py +4 -0
  9. fractal_server/app/routes/admin/v2/accounting.py +108 -0
  10. fractal_server/app/routes/admin/v2/impersonate.py +35 -0
  11. fractal_server/app/routes/admin/v2/job.py +5 -13
  12. fractal_server/app/routes/admin/v2/task_group.py +4 -12
  13. fractal_server/app/routes/api/v2/__init__.py +2 -2
  14. fractal_server/app/routes/api/v2/_aux_functions.py +78 -0
  15. fractal_server/app/routes/api/v2/_aux_functions_task_lifecycle.py +3 -3
  16. fractal_server/app/routes/api/v2/dataset.py +12 -9
  17. fractal_server/app/routes/api/v2/history.py +247 -0
  18. fractal_server/app/routes/api/v2/submit.py +1 -0
  19. fractal_server/app/routes/api/v2/task_group.py +2 -5
  20. fractal_server/app/routes/api/v2/workflow.py +18 -3
  21. fractal_server/app/routes/api/v2/workflowtask.py +22 -0
  22. fractal_server/app/routes/aux/__init__.py +0 -20
  23. fractal_server/app/runner/executors/base_runner.py +114 -0
  24. fractal_server/app/runner/{v2/_local → executors/local}/_local_config.py +3 -3
  25. fractal_server/app/runner/executors/local/_submit_setup.py +54 -0
  26. fractal_server/app/runner/executors/local/runner.py +200 -0
  27. fractal_server/app/runner/executors/{slurm → slurm_common}/_batching.py +1 -1
  28. fractal_server/app/runner/executors/{slurm → slurm_common}/_slurm_config.py +3 -3
  29. fractal_server/app/runner/{v2/_slurm_ssh → executors/slurm_common}/_submit_setup.py +13 -12
  30. fractal_server/app/runner/{v2/_slurm_common → executors/slurm_common}/get_slurm_config.py +9 -15
  31. fractal_server/app/runner/executors/{slurm/ssh → slurm_ssh}/_executor_wait_thread.py +1 -1
  32. fractal_server/app/runner/executors/{slurm/ssh → slurm_ssh}/_slurm_job.py +1 -1
  33. fractal_server/app/runner/executors/{slurm/ssh → slurm_ssh}/executor.py +13 -14
  34. fractal_server/app/runner/executors/{slurm/sudo → slurm_sudo}/_check_jobs_status.py +11 -9
  35. fractal_server/app/runner/executors/{slurm/sudo → slurm_sudo}/_executor_wait_thread.py +3 -3
  36. fractal_server/app/runner/executors/{slurm/sudo → slurm_sudo}/_subprocess_run_as_user.py +2 -68
  37. fractal_server/app/runner/executors/slurm_sudo/runner.py +632 -0
  38. fractal_server/app/runner/task_files.py +70 -96
  39. fractal_server/app/runner/v2/__init__.py +9 -19
  40. fractal_server/app/runner/v2/_local.py +84 -0
  41. fractal_server/app/runner/v2/{_slurm_ssh/__init__.py → _slurm_ssh.py} +12 -13
  42. fractal_server/app/runner/v2/{_slurm_sudo/__init__.py → _slurm_sudo.py} +12 -12
  43. fractal_server/app/runner/v2/runner.py +106 -31
  44. fractal_server/app/runner/v2/runner_functions.py +88 -64
  45. fractal_server/app/runner/v2/runner_functions_low_level.py +20 -20
  46. fractal_server/app/schemas/v2/__init__.py +1 -0
  47. fractal_server/app/schemas/v2/accounting.py +18 -0
  48. fractal_server/app/schemas/v2/dataset.py +0 -17
  49. fractal_server/app/schemas/v2/history.py +23 -0
  50. fractal_server/config.py +58 -52
  51. fractal_server/migrations/versions/8223fcef886c_image_status.py +63 -0
  52. fractal_server/migrations/versions/87cd72a537a2_add_historyitem_table.py +68 -0
  53. fractal_server/migrations/versions/af1ef1c83c9b_add_accounting_tables.py +57 -0
  54. fractal_server/tasks/v2/utils_background.py +1 -1
  55. {fractal_server-2.13.0.dist-info → fractal_server-2.14.0a0.dist-info}/METADATA +1 -1
  56. {fractal_server-2.13.0.dist-info → fractal_server-2.14.0a0.dist-info}/RECORD +66 -55
  57. fractal_server/app/routes/api/v2/status.py +0 -168
  58. fractal_server/app/runner/executors/slurm/sudo/executor.py +0 -1281
  59. fractal_server/app/runner/v2/_local/__init__.py +0 -129
  60. fractal_server/app/runner/v2/_local/_submit_setup.py +0 -52
  61. fractal_server/app/runner/v2/_local/executor.py +0 -100
  62. fractal_server/app/runner/v2/_slurm_sudo/_submit_setup.py +0 -83
  63. fractal_server/app/runner/v2/handle_failed_job.py +0 -59
  64. /fractal_server/app/runner/executors/{slurm → local}/__init__.py +0 -0
  65. /fractal_server/app/runner/executors/{slurm/ssh → slurm_common}/__init__.py +0 -0
  66. /fractal_server/app/runner/executors/{_job_states.py → slurm_common/_job_states.py} +0 -0
  67. /fractal_server/app/runner/executors/{slurm → slurm_common}/remote.py +0 -0
  68. /fractal_server/app/runner/executors/{slurm → slurm_common}/utils_executors.py +0 -0
  69. /fractal_server/app/runner/executors/{slurm/sudo → slurm_ssh}/__init__.py +0 -0
  70. /fractal_server/app/runner/{v2/_slurm_common → executors/slurm_sudo}/__init__.py +0 -0
  71. {fractal_server-2.13.0.dist-info → fractal_server-2.14.0a0.dist-info}/LICENSE +0 -0
  72. {fractal_server-2.13.0.dist-info → fractal_server-2.14.0a0.dist-info}/WHEEL +0 -0
  73. {fractal_server-2.13.0.dist-info → fractal_server-2.14.0a0.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,23 @@
1
+ from datetime import datetime
2
+ from typing import Any
3
+
4
+ from pydantic import BaseModel
5
+ from pydantic import field_serializer
6
+ from pydantic.types import AwareDatetime
7
+
8
+
9
+ class HistoryItemV2Read(BaseModel):
10
+ id: int
11
+ dataset_id: int
12
+ workflowtask_id: int
13
+ timestamp_started: AwareDatetime
14
+ parameters_hash: str
15
+ num_available_images: int
16
+ num_current_images: int
17
+ images: dict[str, str]
18
+ workflowtask_dump: dict[str, Any]
19
+ task_group_dump: dict[str, Any]
20
+
21
+ @field_serializer("timestamp_started")
22
+ def serialize_datetime(v: datetime) -> str:
23
+ return v.isoformat()
fractal_server/config.py CHANGED
@@ -611,74 +611,80 @@ class Settings(BaseSettings):
611
611
  """
612
612
  Comma-separated list of recipients of the OAuth-signup emails.
613
613
  """
614
- FRACTAL_EMAIL_USE_STARTTLS: Optional[bool] = True
614
+ FRACTAL_EMAIL_USE_STARTTLS: Literal["true", "false"] = "true"
615
615
  """
616
616
  Whether to use StartTLS when using the SMTP server.
617
+ Accepted values: 'true', 'false'.
617
618
  """
618
- FRACTAL_EMAIL_USE_LOGIN: Optional[bool] = True
619
+ FRACTAL_EMAIL_USE_LOGIN: Literal["true", "false"] = "true"
619
620
  """
620
621
  Whether to use login when using the SMTP server.
622
+ If 'true', FRACTAL_EMAIL_PASSWORD and FRACTAL_EMAIL_PASSWORD_KEY must be
623
+ provided.
624
+ Accepted values: 'true', 'false'.
621
625
  """
622
626
  email_settings: Optional[MailSettings] = None
623
627
 
624
- @model_validator(mode="before")
625
- @classmethod
626
- def validate_email_settings(cls, values):
627
- email_values = {
628
- k: v for k, v in values.items() if k.startswith("FRACTAL_EMAIL")
629
- }
630
- if email_values:
631
-
632
- def assert_key(key: str):
633
- if key not in email_values:
634
- raise ValueError(f"Missing '{key}'")
635
-
636
- assert_key("FRACTAL_EMAIL_SENDER")
637
- assert_key("FRACTAL_EMAIL_SMTP_SERVER")
638
- assert_key("FRACTAL_EMAIL_SMTP_PORT")
639
- assert_key("FRACTAL_EMAIL_INSTANCE_NAME")
640
- assert_key("FRACTAL_EMAIL_RECIPIENTS")
628
+ @model_validator(mode="after")
629
+ def validate_email_settings(self):
630
+ email_values = [
631
+ self.FRACTAL_EMAIL_SENDER,
632
+ self.FRACTAL_EMAIL_SMTP_SERVER,
633
+ self.FRACTAL_EMAIL_SMTP_PORT,
634
+ self.FRACTAL_EMAIL_INSTANCE_NAME,
635
+ self.FRACTAL_EMAIL_RECIPIENTS,
636
+ ]
637
+ if len(set(email_values)) == 1:
638
+ # All required EMAIL attributes are None
639
+ pass
640
+ elif None in email_values:
641
+ # Not all required EMAIL attributes are set
642
+ error_msg = (
643
+ "Invalid FRACTAL_EMAIL configuration. "
644
+ f"Given values: {email_values}."
645
+ )
646
+ raise ValueError(error_msg)
647
+ else:
648
+ use_starttls = self.FRACTAL_EMAIL_USE_STARTTLS == "true"
649
+ use_login = self.FRACTAL_EMAIL_USE_LOGIN == "true"
641
650
 
642
- if email_values.get("FRACTAL_EMAIL_USE_LOGIN", True):
643
- if "FRACTAL_EMAIL_PASSWORD" not in email_values:
651
+ if use_login:
652
+ if self.FRACTAL_EMAIL_PASSWORD is None:
644
653
  raise ValueError(
645
- "'FRACTAL_EMAIL_USE_LOGIN' is True but "
654
+ "'FRACTAL_EMAIL_USE_LOGIN' is 'true' but "
646
655
  "'FRACTAL_EMAIL_PASSWORD' is not provided."
647
656
  )
648
- elif "FRACTAL_EMAIL_PASSWORD_KEY" not in email_values:
657
+ if self.FRACTAL_EMAIL_PASSWORD_KEY is None:
649
658
  raise ValueError(
650
- "'FRACTAL_EMAIL_USE_LOGIN' is True but "
659
+ "'FRACTAL_EMAIL_USE_LOGIN' is 'true' but "
651
660
  "'FRACTAL_EMAIL_PASSWORD_KEY' is not provided."
652
661
  )
653
- else:
654
- try:
655
- (
656
- Fernet(email_values["FRACTAL_EMAIL_PASSWORD_KEY"])
657
- .decrypt(email_values["FRACTAL_EMAIL_PASSWORD"])
658
- .decode("utf-8")
659
- )
660
- except Exception as e:
661
- raise ValueError(
662
- "Invalid pair (FRACTAL_EMAIL_PASSWORD, "
663
- "FRACTAL_EMAIL_PASSWORD_KEY). "
664
- f"Original error: {str(e)}."
665
- )
662
+ try:
663
+ (
664
+ Fernet(self.FRACTAL_EMAIL_PASSWORD_KEY)
665
+ .decrypt(self.FRACTAL_EMAIL_PASSWORD)
666
+ .decode("utf-8")
667
+ )
668
+ except Exception as e:
669
+ raise ValueError(
670
+ "Invalid pair (FRACTAL_EMAIL_PASSWORD, "
671
+ "FRACTAL_EMAIL_PASSWORD_KEY). "
672
+ f"Original error: {str(e)}."
673
+ )
666
674
 
667
- values["email_settings"] = MailSettings(
668
- sender=email_values["FRACTAL_EMAIL_SENDER"],
669
- recipients=email_values["FRACTAL_EMAIL_RECIPIENTS"].split(","),
670
- smtp_server=email_values["FRACTAL_EMAIL_SMTP_SERVER"],
671
- port=email_values["FRACTAL_EMAIL_SMTP_PORT"],
672
- encrypted_password=email_values.get("FRACTAL_EMAIL_PASSWORD"),
673
- encryption_key=email_values.get("FRACTAL_EMAIL_PASSWORD_KEY"),
674
- instance_name=email_values["FRACTAL_EMAIL_INSTANCE_NAME"],
675
- use_starttls=email_values.get(
676
- "FRACTAL_EMAIL_USE_STARTTLS", True
677
- ),
678
- use_login=email_values.get("FRACTAL_EMAIL_USE_LOGIN", True),
675
+ self.email_settings = MailSettings(
676
+ sender=self.FRACTAL_EMAIL_SENDER,
677
+ recipients=self.FRACTAL_EMAIL_RECIPIENTS.split(","),
678
+ smtp_server=self.FRACTAL_EMAIL_SMTP_SERVER,
679
+ port=self.FRACTAL_EMAIL_SMTP_PORT,
680
+ encrypted_password=self.FRACTAL_EMAIL_PASSWORD,
681
+ encryption_key=self.FRACTAL_EMAIL_PASSWORD_KEY,
682
+ instance_name=self.FRACTAL_EMAIL_INSTANCE_NAME,
683
+ use_starttls=use_starttls,
684
+ use_login=use_login,
679
685
  )
680
686
 
681
- return values
687
+ return self
682
688
 
683
689
  ###########################################################################
684
690
  # BUSINESS LOGIC
@@ -699,7 +705,7 @@ class Settings(BaseSettings):
699
705
 
700
706
  info = f"FRACTAL_RUNNER_BACKEND={self.FRACTAL_RUNNER_BACKEND}"
701
707
  if self.FRACTAL_RUNNER_BACKEND == "slurm":
702
- from fractal_server.app.runner.executors.slurm._slurm_config import ( # noqa: E501
708
+ from fractal_server.app.runner.executors.slurm_common._slurm_config import ( # noqa: E501
703
709
  load_slurm_config_file,
704
710
  )
705
711
 
@@ -729,7 +735,7 @@ class Settings(BaseSettings):
729
735
  f"Must set FRACTAL_SLURM_WORKER_PYTHON when {info}"
730
736
  )
731
737
 
732
- from fractal_server.app.runner.executors.slurm._slurm_config import ( # noqa: E501
738
+ from fractal_server.app.runner.executors.slurm_common._slurm_config import ( # noqa: E501
733
739
  load_slurm_config_file,
734
740
  )
735
741
 
@@ -0,0 +1,63 @@
1
+ """image status
2
+
3
+ Revision ID: 8223fcef886c
4
+ Revises: 87cd72a537a2
5
+ Create Date: 2025-02-24 11:32:22.267338
6
+
7
+ """
8
+ import sqlalchemy as sa
9
+ import sqlmodel
10
+ from alembic import op
11
+
12
+
13
+ # revision identifiers, used by Alembic.
14
+ revision = "8223fcef886c"
15
+ down_revision = "87cd72a537a2"
16
+ branch_labels = None
17
+ depends_on = None
18
+
19
+
20
+ def upgrade() -> None:
21
+ # ### commands auto generated by Alembic - please adjust! ###
22
+ op.create_table(
23
+ "imagestatus",
24
+ sa.Column(
25
+ "zarr_url", sqlmodel.sql.sqltypes.AutoString(), nullable=False
26
+ ),
27
+ sa.Column("workflowtask_id", sa.Integer(), nullable=False),
28
+ sa.Column("dataset_id", sa.Integer(), nullable=False),
29
+ sa.Column(
30
+ "parameters_hash",
31
+ sqlmodel.sql.sqltypes.AutoString(),
32
+ nullable=False,
33
+ ),
34
+ sa.Column(
35
+ "status", sqlmodel.sql.sqltypes.AutoString(), nullable=False
36
+ ),
37
+ sa.Column(
38
+ "logfile", sqlmodel.sql.sqltypes.AutoString(), nullable=False
39
+ ),
40
+ sa.ForeignKeyConstraint(
41
+ ["dataset_id"],
42
+ ["datasetv2.id"],
43
+ name=op.f("fk_imagestatus_dataset_id_datasetv2"),
44
+ ),
45
+ sa.ForeignKeyConstraint(
46
+ ["workflowtask_id"],
47
+ ["workflowtaskv2.id"],
48
+ name=op.f("fk_imagestatus_workflowtask_id_workflowtaskv2"),
49
+ ),
50
+ sa.PrimaryKeyConstraint(
51
+ "zarr_url",
52
+ "workflowtask_id",
53
+ "dataset_id",
54
+ name=op.f("pk_imagestatus"),
55
+ ),
56
+ )
57
+ # ### end Alembic commands ###
58
+
59
+
60
+ def downgrade() -> None:
61
+ # ### commands auto generated by Alembic - please adjust! ###
62
+ op.drop_table("imagestatus")
63
+ # ### end Alembic commands ###
@@ -0,0 +1,68 @@
1
+ """Add HistoryItem table
2
+
3
+ Revision ID: 87cd72a537a2
4
+ Revises: af1ef1c83c9b
5
+ Create Date: 2025-02-18 10:48:16.401995
6
+
7
+ """
8
+ import sqlalchemy as sa
9
+ import sqlmodel
10
+ from alembic import op
11
+ from sqlalchemy.dialects import postgresql
12
+
13
+ # revision identifiers, used by Alembic.
14
+ revision = "87cd72a537a2"
15
+ down_revision = "af1ef1c83c9b"
16
+ branch_labels = None
17
+ depends_on = None
18
+
19
+
20
+ def upgrade() -> None:
21
+ # ### commands auto generated by Alembic - please adjust! ###
22
+ op.create_table(
23
+ "historyitemv2",
24
+ sa.Column("id", sa.Integer(), nullable=False),
25
+ sa.Column("dataset_id", sa.Integer(), nullable=False),
26
+ sa.Column("workflowtask_id", sa.Integer(), nullable=True),
27
+ sa.Column(
28
+ "timestamp_started", sa.DateTime(timezone=True), nullable=False
29
+ ),
30
+ sa.Column(
31
+ "workflowtask_dump",
32
+ postgresql.JSONB(astext_type=sa.Text()),
33
+ nullable=False,
34
+ ),
35
+ sa.Column(
36
+ "task_group_dump",
37
+ postgresql.JSONB(astext_type=sa.Text()),
38
+ nullable=False,
39
+ ),
40
+ sa.Column(
41
+ "parameters_hash",
42
+ sqlmodel.sql.sqltypes.AutoString(),
43
+ nullable=False,
44
+ ),
45
+ sa.Column("num_available_images", sa.Integer(), nullable=False),
46
+ sa.Column("num_current_images", sa.Integer(), nullable=False),
47
+ sa.Column(
48
+ "images", postgresql.JSONB(astext_type=sa.Text()), nullable=False
49
+ ),
50
+ sa.ForeignKeyConstraint(
51
+ ["dataset_id"],
52
+ ["datasetv2.id"],
53
+ name=op.f("fk_historyitemv2_dataset_id_datasetv2"),
54
+ ),
55
+ sa.ForeignKeyConstraint(
56
+ ["workflowtask_id"],
57
+ ["workflowtaskv2.id"],
58
+ name=op.f("fk_historyitemv2_workflowtask_id_workflowtaskv2"),
59
+ ),
60
+ sa.PrimaryKeyConstraint("id", name=op.f("pk_historyitemv2")),
61
+ )
62
+ # ### end Alembic commands ###
63
+
64
+
65
+ def downgrade() -> None:
66
+ # ### commands auto generated by Alembic - please adjust! ###
67
+ op.drop_table("historyitemv2")
68
+ # ### end Alembic commands ###
@@ -0,0 +1,57 @@
1
+ """Add accounting tables
2
+
3
+ Revision ID: af1ef1c83c9b
4
+ Revises: 1eac13a26c83
5
+ Create Date: 2025-02-17 14:22:32.701581
6
+
7
+ """
8
+ import sqlalchemy as sa
9
+ from alembic import op
10
+ from sqlalchemy.dialects import postgresql
11
+
12
+ # revision identifiers, used by Alembic.
13
+ revision = "af1ef1c83c9b"
14
+ down_revision = "1eac13a26c83"
15
+ branch_labels = None
16
+ depends_on = None
17
+
18
+
19
+ def upgrade() -> None:
20
+ # ### commands auto generated by Alembic - please adjust! ###
21
+ op.create_table(
22
+ "accountingrecord",
23
+ sa.Column("id", sa.Integer(), nullable=False),
24
+ sa.Column("user_id", sa.Integer(), nullable=False),
25
+ sa.Column("timestamp", sa.DateTime(timezone=True), nullable=False),
26
+ sa.Column("num_tasks", sa.Integer(), nullable=False),
27
+ sa.Column("num_new_images", sa.Integer(), nullable=False),
28
+ sa.ForeignKeyConstraint(
29
+ ["user_id"],
30
+ ["user_oauth.id"],
31
+ name=op.f("fk_accountingrecord_user_id_user_oauth"),
32
+ ),
33
+ sa.PrimaryKeyConstraint("id", name=op.f("pk_accountingrecord")),
34
+ )
35
+ op.create_table(
36
+ "accountingrecordslurm",
37
+ sa.Column("id", sa.Integer(), nullable=False),
38
+ sa.Column("user_id", sa.Integer(), nullable=False),
39
+ sa.Column("timestamp", sa.DateTime(timezone=True), nullable=False),
40
+ sa.Column(
41
+ "slurm_job_ids", postgresql.ARRAY(sa.Integer()), nullable=True
42
+ ),
43
+ sa.ForeignKeyConstraint(
44
+ ["user_id"],
45
+ ["user_oauth.id"],
46
+ name=op.f("fk_accountingrecordslurm_user_id_user_oauth"),
47
+ ),
48
+ sa.PrimaryKeyConstraint("id", name=op.f("pk_accountingrecordslurm")),
49
+ )
50
+ # ### end Alembic commands ###
51
+
52
+
53
+ def downgrade() -> None:
54
+ # ### commands auto generated by Alembic - please adjust! ###
55
+ op.drop_table("accountingrecordslurm")
56
+ op.drop_table("accountingrecord")
57
+ # ### end Alembic commands ###
@@ -34,7 +34,7 @@ def fail_and_cleanup(
34
34
  db: DBSyncSession,
35
35
  ):
36
36
  logger = get_logger(logger_name)
37
- logger.error(
37
+ logger.warning(
38
38
  f"Task {task_group_activity.action} failed. "
39
39
  f"Original error: {str(exception)}"
40
40
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: fractal-server
3
- Version: 2.13.0
3
+ Version: 2.14.0a0
4
4
  Summary: Backend component of the Fractal analytics platform
5
5
  Home-page: https://github.com/fractal-analytics-platform/fractal-server
6
6
  License: BSD-3-Clause
@@ -1,15 +1,20 @@
1
- fractal_server/__init__.py,sha256=9ob5spirSIHc6BZ8Gib1GW_SY2DX0L2EX7f1ZzmBmCE,23
1
+ fractal_server/__init__.py,sha256=-BpqXrn9rdBZ9nskTf9w2keznxwwl_s4iKTWVW5MXlA,25
2
2
  fractal_server/__main__.py,sha256=igfS2XL3e8JycuhASl2vsYuIPma0MG0cfPPFRuQfh14,6906
3
3
  fractal_server/alembic.ini,sha256=MWwi7GzjzawI9cCAK1LW7NxIBQDUqD12-ptJoq5JpP0,3153
4
4
  fractal_server/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
5
  fractal_server/app/db/__init__.py,sha256=wup2wcOkyOh8Vd0Xm76PZn_naxeMqaL4eF8DHHXTGlI,2889
6
+ fractal_server/app/history/__init__.py,sha256=bisQpsMCFmtQGhIsf9ES0HdEuH4DYkPxVO7SlvxaWTY,239
7
+ fractal_server/app/history/image_updates.py,sha256=7fwZ11NBi3hfjdCl-6C3rA6bIXx0lITHtKMkjsSCRLs,3948
8
+ fractal_server/app/history/status_enum.py,sha256=xBBLHQY2Z105b2_HVU9DVRgdEVbbjLm6l4kkcV0Q1Sk,275
6
9
  fractal_server/app/models/__init__.py,sha256=xJWiGAwpXmCpnFMC4c_HTqoUCzMOXrakoGLUH_uMvdA,415
7
10
  fractal_server/app/models/linkusergroup.py,sha256=LWTUfhH2uAnn_4moK7QdRUIHWtpw-hPZuW-5jClv_OE,610
8
11
  fractal_server/app/models/linkuserproject.py,sha256=hvaxh3Lkiy2uUCwB8gvn8RorCpvxSSdzWdCS_U1GL7g,315
9
12
  fractal_server/app/models/security.py,sha256=mMb_HiwWY74QZrs9xuyno0CVSmk4GYQWk5FxGixr8SU,3860
10
13
  fractal_server/app/models/user_settings.py,sha256=Y-ZV-uZAFLZqXxy8c5_Qeh_F7zQuZDWOgLpU6Zs6iqU,1316
11
- fractal_server/app/models/v2/__init__.py,sha256=63THGEZQlxWcosGCI74SEvJU7wOoOn1j1byTjf4NFOI,526
14
+ fractal_server/app/models/v2/__init__.py,sha256=VNoK2OUB8_IPvZoItLOxup84ZMNslO7j30jojNS2lI0,774
15
+ fractal_server/app/models/v2/accounting.py,sha256=f2ALxfKKBNxFLJTtC2-YqRepVK253x68y7zkD2V_Nls,1115
12
16
  fractal_server/app/models/v2/dataset.py,sha256=O5_6YfNeX6JM7PUcEZhbeV4JCvuAhFCQbOOuefpVnqc,1544
17
+ fractal_server/app/models/v2/history.py,sha256=MFr4Z29RLIFSPH5M8GhgDMaXOz4SMAiC1MZmaC4kLk4,1528
13
18
  fractal_server/app/models/v2/job.py,sha256=L0P1mrztMqqb-6qdPEbuHXhCsf2mxVUct_ehcXrREGg,1844
14
19
  fractal_server/app/models/v2/project.py,sha256=rAHoh5KfYwIaW7rTX0_O0jvWmxEvfo1BafvmcXuSSRk,786
15
20
  fractal_server/app/models/v2/task.py,sha256=8KEROaadgccXRZIP7EriBp2j1FgzYkgiirOi5_fG79M,1494
@@ -18,31 +23,33 @@ fractal_server/app/models/v2/workflow.py,sha256=YBgFGCziUgU0aJ5EM3Svu9W2c46AewZO
18
23
  fractal_server/app/models/v2/workflowtask.py,sha256=919L2jCm9y57MXiezGBb28uiXpxyiSHwA_DkDF9OVjg,1226
19
24
  fractal_server/app/routes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
25
  fractal_server/app/routes/admin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
- fractal_server/app/routes/admin/v2/__init__.py,sha256=KYrw0COmmMuIMp7c6YcYRXah4tEYplCWeROnPK1VTeg,681
22
- fractal_server/app/routes/admin/v2/job.py,sha256=cbkFIRIIXaWmNsUFI7RAu8HpQ0mWn_bgoxtvWZxr-IA,7624
26
+ fractal_server/app/routes/admin/v2/__init__.py,sha256=_5lqb6-M8-fZqE1HRMep6pAFYRUKMxrvbZOKs-RXWkw,933
27
+ fractal_server/app/routes/admin/v2/accounting.py,sha256=ueTGk9748d-gNorqCkkhddgGKzgpWVZQ4G0Loobl7eQ,3788
28
+ fractal_server/app/routes/admin/v2/impersonate.py,sha256=gc4lshfEPFR6W2asH7aKu6hqE6chzusdhAUVV9p51eU,1131
29
+ fractal_server/app/routes/admin/v2/job.py,sha256=4soc-5d99QEsir7U9AqpofgaGggSBwgMm7mXW5LBvSI,7439
23
30
  fractal_server/app/routes/admin/v2/project.py,sha256=luy-yiGX1JYTdPm1hpIdDUUqPm8xHuipLy9k2X6zu74,1223
24
31
  fractal_server/app/routes/admin/v2/task.py,sha256=h6O_DLYgp7KMExydPRO-1UsvsYj8S52E3CjslDNJZnA,4375
25
- fractal_server/app/routes/admin/v2/task_group.py,sha256=QD7Ui8bMJW698YAlhejWKj_ywjMwt8jymWppl2HnkLU,8126
32
+ fractal_server/app/routes/admin/v2/task_group.py,sha256=XTjdqgABXZcx9EenaoqSmHh12BXSentUus3SV0oxBMs,7929
26
33
  fractal_server/app/routes/admin/v2/task_group_lifecycle.py,sha256=0e0ZJ_k75TVHaT2o8Xk33DPDSgh-eBhZf-y4y7t-Adg,9429
27
34
  fractal_server/app/routes/api/__init__.py,sha256=2IDheFi0OFdsUg7nbUiyahqybvpgXqeHUXIL2QtWrQQ,641
28
- fractal_server/app/routes/api/v2/__init__.py,sha256=w4c9WzagaVV5d4TWBX5buu5ENk8jf3YftMQYmhavz9Q,2172
29
- fractal_server/app/routes/api/v2/_aux_functions.py,sha256=NJ6_1biN_hhIEK1w8Vj6XhLmdkQ5kMVd_MX5JC_nHLU,11524
30
- fractal_server/app/routes/api/v2/_aux_functions_task_lifecycle.py,sha256=c8eqPXdMhc3nIixX50B1Ka5n7LgbOZm2JbEs7lICQ04,6767
35
+ fractal_server/app/routes/api/v2/__init__.py,sha256=S7zOeoLkD6Sss1JLRQxeQWPSXKMX2yaIVhLQUw0PDh0,2176
36
+ fractal_server/app/routes/api/v2/_aux_functions.py,sha256=m4gqcOAatwShBmUeiSSF-I_rIRY-bHRSjEfmvnGU0AA,13498
37
+ fractal_server/app/routes/api/v2/_aux_functions_task_lifecycle.py,sha256=qdXCb6IP8-qPEAxGZKljtjIqNzIAyRaAsQSRi5VqFHM,6773
31
38
  fractal_server/app/routes/api/v2/_aux_functions_tasks.py,sha256=uhNSs-jcS7ndIUFKiOC1yrDiViw3uvKEXi9UL04BMks,11642
32
- fractal_server/app/routes/api/v2/dataset.py,sha256=tyZjoncjzWd3Bl3t1vBFNMIY1FVo0z23aagdFlNKX0Q,9465
39
+ fractal_server/app/routes/api/v2/dataset.py,sha256=gS5169eJRGHBQNUnkDB75Bv3Kg8Ql-tMVw5_FAxUEKc,9664
40
+ fractal_server/app/routes/api/v2/history.py,sha256=Np2TzTLstOKhrbqTsxak8Z1uvafsrGU2EHIflzgHfXQ,8093
33
41
  fractal_server/app/routes/api/v2/images.py,sha256=32sSDSWri_A8uQHcdbVTPvGGEjj9vk5ILj8q0-2jLX8,8507
34
42
  fractal_server/app/routes/api/v2/job.py,sha256=m89FTh9Px25oXCeWj2k2NdGWQaO2oxMh-6lZppcsJOY,5551
35
43
  fractal_server/app/routes/api/v2/project.py,sha256=3kMp1ValIVwY-qogfRNgWmSMk0jgsk1VJlY8MhwvH1Q,6665
36
- fractal_server/app/routes/api/v2/status.py,sha256=Ls_TMPBE_pqOFsO1XBWf8NDSoQkle45XuI7clKwGouQ,6305
37
- fractal_server/app/routes/api/v2/submit.py,sha256=a2Jo9kEvFCAD8L1mHPkk5aj_xPWfrXrT0o-wf758z1s,8599
44
+ fractal_server/app/routes/api/v2/submit.py,sha256=K4OjcSg476JXIeeMUaYdTDk8Qpj5IO5UULvfErI7Y5Y,8624
38
45
  fractal_server/app/routes/api/v2/task.py,sha256=z3_SxsXoKsbM9GGNJUdIiZisQwAJSBqvCc7thaJIOTU,7191
39
46
  fractal_server/app/routes/api/v2/task_collection.py,sha256=IDNF6sjDuU37HIQ0TuQA-TZIuf7nfHAQXUUNmkrlhLM,12706
40
47
  fractal_server/app/routes/api/v2/task_collection_custom.py,sha256=cctW61-C2QYF2KXluS15lLhZJS_kt30Ca6UGLFO32z0,6207
41
- fractal_server/app/routes/api/v2/task_group.py,sha256=LjX2X1sfqr3xlqhH8lfJmFG5ecpEzK_jCV548pU7s24,8268
48
+ fractal_server/app/routes/api/v2/task_group.py,sha256=j3zDvVZizB7NWEgVgZU42JCXETkaVkk2ImJPr0jS7BQ,8164
42
49
  fractal_server/app/routes/api/v2/task_group_lifecycle.py,sha256=3o9bCC8ubMwffQPPaxQZy-CjH9IB2RkIReIecI6L2_w,9300
43
- fractal_server/app/routes/api/v2/workflow.py,sha256=Z71EI_WdLnaI0Z5OXy9RaAk_0xN9EHkhR5qieLtM8t0,11689
50
+ fractal_server/app/routes/api/v2/workflow.py,sha256=R-wnT9tWTSbaNobGcfgLdk-4pbfbxoBwKZd1JRZXsSU,12223
44
51
  fractal_server/app/routes/api/v2/workflow_import.py,sha256=INmnhlMEBJp-vHPR0f940DANPmIidts3OfcooeM_aNA,11205
45
- fractal_server/app/routes/api/v2/workflowtask.py,sha256=2Yxnis2O7X52e5DKa1GH-0-uPx2rKXSzPZKnEhi7cBY,11355
52
+ fractal_server/app/routes/api/v2/workflowtask.py,sha256=89yLpSzdr7Mv3wRmdMt71CSC3hclrVUP56UVtfTQHOQ,12152
46
53
  fractal_server/app/routes/auth/__init__.py,sha256=fao6CS0WiAjHDTvBzgBVV_bSXFpEAeDBF6Z6q7rRkPc,1658
47
54
  fractal_server/app/routes/auth/_aux_auth.py,sha256=UZgauY0V6mSqjte_sYI1cBl2h8bcbLaeWzgpl1jdJlk,4883
48
55
  fractal_server/app/routes/auth/current_user.py,sha256=FUegTahlxT3BdPVCQYir0-ogg2YAaZ1DYuLcE_5NC9Y,5906
@@ -52,7 +59,7 @@ fractal_server/app/routes/auth/oauth.py,sha256=AnFHbjqL2AgBX3eksI931xD6RTtmbciHB
52
59
  fractal_server/app/routes/auth/register.py,sha256=DlHq79iOvGd_gt2v9uwtsqIKeO6i_GKaW59VIkllPqY,587
53
60
  fractal_server/app/routes/auth/router.py,sha256=tzJrygXFZlmV_uWelVqTOJMEH-3Fr7ydwlgx1LxRjxY,527
54
61
  fractal_server/app/routes/auth/users.py,sha256=Zr1Bsa7Hpricb_1uFwKPCtgt3PzGnP0TaMLMdpbQDNs,7825
55
- fractal_server/app/routes/aux/__init__.py,sha256=LR4bR7RunHAK6jc9IR2bReQd-BdXADdnDccXI4uGeGY,731
62
+ fractal_server/app/routes/aux/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
56
63
  fractal_server/app/routes/aux/_job.py,sha256=XWyWpOObcV55YyK7uzGRlaslmPDCBZy4hiSZBpoa_bg,616
57
64
  fractal_server/app/routes/aux/_runner.py,sha256=spNudutueHTBJPhm55RlOuYzb31DhyheSjl2rk6dloM,873
58
65
  fractal_server/app/routes/aux/validate_user_settings.py,sha256=FLVi__8YFcm_6c_K5uMQo7raWWXQLBcZtx8yaPO4jaE,2301
@@ -61,44 +68,43 @@ fractal_server/app/runner/components.py,sha256=ZF8ct_Ky5k8IAcrmpYOZ-bc6OBgdELEig
61
68
  fractal_server/app/runner/compress_folder.py,sha256=HSc1tv7x2DBjBoXwugZlC79rm9GNBIWtQKK9yWn5ZBI,3991
62
69
  fractal_server/app/runner/exceptions.py,sha256=_qZ_t8O4umAdJ1ikockiF5rDJuxnEskrGrLjZcnQl7A,4159
63
70
  fractal_server/app/runner/executors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
64
- fractal_server/app/runner/executors/_job_states.py,sha256=nuV-Zba38kDrRESOVB3gaGbrSPZc4q7YGichQaeqTW0,238
65
- fractal_server/app/runner/executors/slurm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
66
- fractal_server/app/runner/executors/slurm/_batching.py,sha256=3mfeFuYm3UA4EXh4VWuqZTF-dcINECZgTHoPOaOszDo,8840
67
- fractal_server/app/runner/executors/slurm/_slurm_config.py,sha256=8iZW8VdK0xvI9wZtXjRIlgnoI8hPmCqgcuX-IWIY18g,15866
68
- fractal_server/app/runner/executors/slurm/remote.py,sha256=wLziIsGdSMiO-jIXM8x77JRK82g_2hx0iBKTiMghuIo,5852
69
- fractal_server/app/runner/executors/slurm/ssh/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
70
- fractal_server/app/runner/executors/slurm/ssh/_executor_wait_thread.py,sha256=RsksZxMX41WCB53EfDj6Q34k61hv6raKJwCbmCs2OvM,3746
71
- fractal_server/app/runner/executors/slurm/ssh/_slurm_job.py,sha256=o9YZ-HslaMN1wbTYt6rNiOHA200Ptm27fKNOxTgjpxA,4399
72
- fractal_server/app/runner/executors/slurm/ssh/executor.py,sha256=CKdmm-jlInZ0B5oZZalYKIO0_qoBRm_SOlGkY8wgfyI,53658
73
- fractal_server/app/runner/executors/slurm/sudo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
74
- fractal_server/app/runner/executors/slurm/sudo/_check_jobs_status.py,sha256=ZlIjLU6NKyACGxBqtBw3-QAWVJKkYv6LICFZ2luJv9k,1912
75
- fractal_server/app/runner/executors/slurm/sudo/_executor_wait_thread.py,sha256=UiuONKeIwT7U7Ne68mOhlndb7MD2aHEuXzGd2zpdMrU,4062
76
- fractal_server/app/runner/executors/slurm/sudo/_subprocess_run_as_user.py,sha256=g8wqUjSicN17UZVXlfaMomYZ-xOIbBu1oE7HdJTzfvw,5218
77
- fractal_server/app/runner/executors/slurm/sudo/executor.py,sha256=3V0u3d5IMDoVSxkk76FVz7857iix1Sfi2VVi6aI2O5U,48559
78
- fractal_server/app/runner/executors/slurm/utils_executors.py,sha256=naPyJI0I3lD-sYHbSXbMFGUBK4h_SggA5V91Z1Ch1Xg,1416
71
+ fractal_server/app/runner/executors/base_runner.py,sha256=uUA4hGeNF6d8IYZ80nueq7PSjuliWiFpyxnhTKBk0U4,3721
72
+ fractal_server/app/runner/executors/local/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
73
+ fractal_server/app/runner/executors/local/_local_config.py,sha256=8dyg2Gh8L2FlG_jJRYLMkcMgVHGEY2w7DME9aaKXFFo,3688
74
+ fractal_server/app/runner/executors/local/_submit_setup.py,sha256=6h4DVcVgzL8Oubw83zixvya4ljmNSXlG0Kp8a01OBLc,1440
75
+ fractal_server/app/runner/executors/local/runner.py,sha256=tEI3qe9UQKgqNoY6gkP1b2O1yRw3VGTiPTDKztrCt2I,7577
76
+ fractal_server/app/runner/executors/slurm_common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
77
+ fractal_server/app/runner/executors/slurm_common/_batching.py,sha256=ZY020JZlDS5mfpgpWTChQkyHU7iLE5kx2HVd57_C6XA,8850
78
+ fractal_server/app/runner/executors/slurm_common/_job_states.py,sha256=nuV-Zba38kDrRESOVB3gaGbrSPZc4q7YGichQaeqTW0,238
79
+ fractal_server/app/runner/executors/slurm_common/_slurm_config.py,sha256=yqcjAlYF_Gasv0b013cg3vz7abmjIHIgOwei7bCojuk,15896
80
+ fractal_server/app/runner/executors/slurm_common/_submit_setup.py,sha256=crbfAAvXbxe_9PaokXkkVdPV65lSCFbInZ0RlT6uyHI,2746
81
+ fractal_server/app/runner/executors/slurm_common/get_slurm_config.py,sha256=GwdJsEAP9vEBA-FkOGSRHHeRUv1E6bmKZwWyO5Daa70,5994
82
+ fractal_server/app/runner/executors/slurm_common/remote.py,sha256=wLziIsGdSMiO-jIXM8x77JRK82g_2hx0iBKTiMghuIo,5852
83
+ fractal_server/app/runner/executors/slurm_common/utils_executors.py,sha256=naPyJI0I3lD-sYHbSXbMFGUBK4h_SggA5V91Z1Ch1Xg,1416
84
+ fractal_server/app/runner/executors/slurm_ssh/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
85
+ fractal_server/app/runner/executors/slurm_ssh/_executor_wait_thread.py,sha256=lnW8dNNPqqbpQvojVBQaNJm4wN3Qkw02RWBZ1w68Hyw,3755
86
+ fractal_server/app/runner/executors/slurm_ssh/_slurm_job.py,sha256=IL1C52dezEiincVX2yKryNiPHi4YOMURNLdQO_QPdGw,4406
87
+ fractal_server/app/runner/executors/slurm_ssh/executor.py,sha256=JW6zguEy9XsHebSPt_JTK4Kw78r5rlbDEipSOxOqoHk,53660
88
+ fractal_server/app/runner/executors/slurm_sudo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
89
+ fractal_server/app/runner/executors/slurm_sudo/_check_jobs_status.py,sha256=eZd9lxbObsqc1M3B96IGMJ-1oC0jo8lBOX4Nto97VvE,2036
90
+ fractal_server/app/runner/executors/slurm_sudo/_executor_wait_thread.py,sha256=7CaMarvaKFCq3RcyqW5CABng_3b3QaS2pmTzVRDgm3I,4077
91
+ fractal_server/app/runner/executors/slurm_sudo/_subprocess_run_as_user.py,sha256=O1bNg1DiSDJmQE0RmOk2Ii47DagiXp5ryd0R6KxO2OM,3177
92
+ fractal_server/app/runner/executors/slurm_sudo/runner.py,sha256=JFVGb0K7w0l6kuy4QjIey_3M4indQUwvqbflzdW9Gi8,21256
79
93
  fractal_server/app/runner/extract_archive.py,sha256=tLpjDrX47OjTNhhoWvm6iNukg8KoieWyTb7ZfvE9eWU,2483
80
94
  fractal_server/app/runner/filenames.py,sha256=lPnxKHtdRizr6FqG3zOdjDPyWA7GoaJGTtiuJV0gA8E,70
81
95
  fractal_server/app/runner/run_subprocess.py,sha256=c3JbYXq3hX2aaflQU19qJ5Xs6J6oXGNvnTEoAfv2bxc,959
82
96
  fractal_server/app/runner/set_start_and_last_task_index.py,sha256=-q4zVybAj8ek2XlbENKlfOAJ39hT_zoJoZkqzDqiAMY,1254
83
97
  fractal_server/app/runner/shutdown.py,sha256=9pfSKHDNdIcm0eY-opgRTi7y0HmvfPmYiu9JR6Idark,2082
84
- fractal_server/app/runner/task_files.py,sha256=sd_MpJ01C8c9QTO8GzGMidFGdlq_hXX_ARDRhd_YMnI,3762
85
- fractal_server/app/runner/v2/__init__.py,sha256=hA5WyFh1GI2p56D86tf-8BFE9Dcj8f4Ua-X0XTbJIfQ,14770
86
- fractal_server/app/runner/v2/_local/__init__.py,sha256=QnQ9jfqpzShzjp6H7rfVx9Sqp03J1JB6fCpwNx2MDOw,5119
87
- fractal_server/app/runner/v2/_local/_local_config.py,sha256=L54CYrkCyzwgUUra-YhnYR7fy2nyMl6GGu3-4hjoZ4U,3653
88
- fractal_server/app/runner/v2/_local/_submit_setup.py,sha256=MucNOo8Er0F5ZIwH7CnTeXgnFMc6d3pKPkv563QNVi0,1630
89
- fractal_server/app/runner/v2/_local/executor.py,sha256=QrJlD77G6q4WohoJQO7XXbvi2RlCUsNvMnPDEZIoAqA,3620
90
- fractal_server/app/runner/v2/_slurm_common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
91
- fractal_server/app/runner/v2/_slurm_common/get_slurm_config.py,sha256=21Tl70L8oyo3H_r0vXW6KO9pq2IKEiV5ZkshsPsBjzI,6226
92
- fractal_server/app/runner/v2/_slurm_ssh/__init__.py,sha256=wDW58jBPcmOUeBMcuaOqTz1ElEqiyQn9ar7zp2xCPX4,3274
93
- fractal_server/app/runner/v2/_slurm_ssh/_submit_setup.py,sha256=a5_FDPH_yxYmrjAjMRLgh_Y4DSG3mRslCLQodGM3-t4,2838
94
- fractal_server/app/runner/v2/_slurm_sudo/__init__.py,sha256=16P_3nDRtXztBf0-JOZzNmpnp164kgzRTADaLX733NI,2921
95
- fractal_server/app/runner/v2/_slurm_sudo/_submit_setup.py,sha256=a5_FDPH_yxYmrjAjMRLgh_Y4DSG3mRslCLQodGM3-t4,2838
98
+ fractal_server/app/runner/task_files.py,sha256=5enzBqiQct1AUGwrGX-rxFCxnhW3SPYIUylMYwyVfrE,2482
99
+ fractal_server/app/runner/v2/__init__.py,sha256=fExxP-EQEaXADncxX45DPG9GVlJNjKwnK9yBBjJFqGA,14245
100
+ fractal_server/app/runner/v2/_local.py,sha256=Zas2RS_f9mfdkXszBpzISHylLX1bX8pFuoLA1fHLFqQ,2945
101
+ fractal_server/app/runner/v2/_slurm_ssh.py,sha256=6NzRy3Yp84DHhsRHie2NI_UXhhiAusY4nOdTYlhqJOw,3226
102
+ fractal_server/app/runner/v2/_slurm_sudo.py,sha256=iQ_BwvS88sMzd1vAce_9MOjC8YzZq7rHx2YUpkVRWXQ,2913
96
103
  fractal_server/app/runner/v2/deduplicate_list.py,sha256=IVTE4abBU1bUprFTkxrTfYKnvkNTanWQ-KWh_etiT08,645
97
- fractal_server/app/runner/v2/handle_failed_job.py,sha256=-zFWw4d208bQEFUF_sAdH2LdHEARyg1FC8BENr1SjhU,2045
98
104
  fractal_server/app/runner/v2/merge_outputs.py,sha256=D1L4Taieq9i71SPQyNc1kMokgHh-sV_MqF3bv7QMDBc,907
99
- fractal_server/app/runner/v2/runner.py,sha256=EzmoF_7K6n1w1vo2hM12h2EppWW6WyrpT_MmCBbFlCw,11778
100
- fractal_server/app/runner/v2/runner_functions.py,sha256=BLREIcQaE6FSc2AEJyZuiYk6rGazEz_9gprUqUZDljs,9488
101
- fractal_server/app/runner/v2/runner_functions_low_level.py,sha256=1fWvQ6YZUUnDhO_mipXC5hnaT-zK-GHxg8ayoxZX82k,3648
105
+ fractal_server/app/runner/v2/runner.py,sha256=YPzuo4QfXm9nVmZinF3qI1w1AlJwpZ1wVNboyhyTyU4,14456
106
+ fractal_server/app/runner/v2/runner_functions.py,sha256=EBY64v0NC_fdgKUqZQqCp8XZtPbwVo21P1eXS6Y0AUc,10456
107
+ fractal_server/app/runner/v2/runner_functions_low_level.py,sha256=dvvRK7od8iQ8vdPf80uGUxs3i5i0buGjCodBxSjZ7PQ,3671
102
108
  fractal_server/app/runner/v2/task_interface.py,sha256=e1GGQSYd0MyBj1EZvEVzqv-HpVE4YffXOq82WLrCaOc,1866
103
109
  fractal_server/app/runner/versions.py,sha256=dSaPRWqmFPHjg20kTCHmi_dmGNcCETflDtDLronNanU,852
104
110
  fractal_server/app/schemas/__init__.py,sha256=stURAU_t3AOBaH0HSUbV-GKhlPKngnnIMoqWc3orFyI,135
@@ -107,9 +113,11 @@ fractal_server/app/schemas/_validators.py,sha256=ap0VWJzOfPcq_tbH3sglZClkuinNvMj
107
113
  fractal_server/app/schemas/user.py,sha256=vLijVyPIQJdpFc36S6qK2XtSKMzfkhULN1nBsb9tV18,2407
108
114
  fractal_server/app/schemas/user_group.py,sha256=Uao1igRYflBu7Dg6Zs0kaFU3zBFJzIwDLrkFfaJk6z8,2176
109
115
  fractal_server/app/schemas/user_settings.py,sha256=4XeXQ3rnDS1UvLPd9hvh-WVSbzBGcMDjChfiZ_WGi-w,3134
110
- fractal_server/app/schemas/v2/__init__.py,sha256=IT2a6fbRx3rt8h6jri_4gZWzTN9EVXewiWoIuBcZ-xA,2618
111
- fractal_server/app/schemas/v2/dataset.py,sha256=FRJI1hWEjj7M_QhAq3mhWkmJ5lMKOtr1pXcUq-bH-Gk,5517
116
+ fractal_server/app/schemas/v2/__init__.py,sha256=pjRUOJwZGzsDbBbxfnCgQgShs5V8SaHRqwIQDW3STpY,2676
117
+ fractal_server/app/schemas/v2/accounting.py,sha256=Wylt7uWTiDIFlHJOh4XEtYitk2FjFlmnodDrJDxcr0E,397
118
+ fractal_server/app/schemas/v2/dataset.py,sha256=xo7Y3fq5ThMVBp6xDVypdG-EmGfBX_vWVRs66u2pC34,5157
112
119
  fractal_server/app/schemas/v2/dumps.py,sha256=2GUjoqeblUvrSoojBz5odoUUf53IABtbY_5GvFZoMVc,1782
120
+ fractal_server/app/schemas/v2/history.py,sha256=OHwRIbOIjBiiTYUNZYsHTdEXJHff17JRizQ8pf1e0vk,601
113
121
  fractal_server/app/schemas/v2/job.py,sha256=Dp_RRiC5uvJqq1fAJlBXztAFA-tS5FWuRnUbTnLtL6M,4226
114
122
  fractal_server/app/schemas/v2/manifest.py,sha256=AhUkv3ZfoUffdcpHKOuUTmcZa-0G5Y53hp-O4UaTkG0,7133
115
123
  fractal_server/app/schemas/v2/project.py,sha256=uqBreoS0UAkbVEJJS2HkSdjCCWfFIkv6N70TWk9HgxA,868
@@ -122,7 +130,7 @@ fractal_server/app/schemas/v2/workflowtask.py,sha256=qMvwlnFCsnyD8uv8HJ4cFy2-QMm
122
130
  fractal_server/app/security/__init__.py,sha256=8dg7vBzLjU43p_eGoHuFBO97FtIDtNnbJJ5mzVSVRNI,14094
123
131
  fractal_server/app/security/signup_email.py,sha256=CR1VbsGFNshxsWquLDZPbUAYnGzkCHeJChtncq63RBc,1434
124
132
  fractal_server/app/user_settings.py,sha256=OP1yiYKtPadxwM51_Q0hdPk3z90TCN4z1BLpQsXyWiU,1316
125
- fractal_server/config.py,sha256=qNhfBYRAGFjT7rcg_LPLQXexzxWydJr4kHyrWaWoMew,28753
133
+ fractal_server/config.py,sha256=Lc1lgN4J1sTeE5kdWm3b2ltDYtTzyzmuA6ms1T1ZboI,28824
126
134
  fractal_server/data_migrations/README.md,sha256=_3AEFvDg9YkybDqCLlFPdDmGJvr6Tw7HRI14aZ3LOIw,398
127
135
  fractal_server/data_migrations/tools.py,sha256=LeMeASwYGtEqd-3wOLle6WARdTGAimoyMmRbbJl-hAM,572
128
136
  fractal_server/gunicorn_fractal.py,sha256=u6U01TLGlXgq1v8QmEpLih3QnsInZD7CqphgJ_GrGzc,1230
@@ -145,7 +153,9 @@ fractal_server/migrations/versions/50a13d6138fd_initial_schema.py,sha256=zwXegXs
145
153
  fractal_server/migrations/versions/5bf02391cfef_v2.py,sha256=axhNkr_H6R4rRbY7oGYazNbFvPXeSyBDWFVbKNmiqs8,8433
146
154
  fractal_server/migrations/versions/70e77f1c38b0_add_applyworkflow_first_task_index_and_.py,sha256=Q-DsMzG3IcUV2Ol1dhJWosDvKERamBE6QvA2zzS5zpQ,1632
147
155
  fractal_server/migrations/versions/71eefd1dd202_add_slurm_accounts.py,sha256=mbWuCkTpRAdGbRhW7lhXs_e5S6O37UAcCN6JfoY5H8A,1353
156
+ fractal_server/migrations/versions/8223fcef886c_image_status.py,sha256=Nhlw22F9w1Obh-Tte6787Fyglb4NuQwdJQeO-HlkqSs,1743
148
157
  fractal_server/migrations/versions/84bf0fffde30_add_dumps_to_applyworkflow.py,sha256=NSCuhANChsg76vBkShBl-9tQ4VEHubOjtAv1etHhlvY,2684
158
+ fractal_server/migrations/versions/87cd72a537a2_add_historyitem_table.py,sha256=xxAftQYyQ2C_7qiuPcG5FeVmhFQGznxfCglsfk2CjiU,2092
149
159
  fractal_server/migrations/versions/8e8f227a3e36_update_taskv2_post_2_7_0.py,sha256=68y9-fpSuKx6KPtM_9n8Ho0I1qwa8IoG-yJqXUYQrGg,1111
150
160
  fractal_server/migrations/versions/8f79bd162e35_add_docs_info_and_docs_link_to_task_.py,sha256=6pgODDtyAxevZvAJBj9IJ41inhV1RpwbpZr_qfPPu1A,1115
151
161
  fractal_server/migrations/versions/94a47ea2d3ff_remove_cache_dir_slurm_user_and_slurm_.py,sha256=yL3-Hvzw5jBLKj4LFP1z5ofZE9L9W3tLwYtPNW7z4ko,1508
@@ -154,6 +164,7 @@ fractal_server/migrations/versions/99ea79d9e5d2_add_dataset_history.py,sha256=0i
154
164
  fractal_server/migrations/versions/9c5ae74c9b98_add_user_settings_table.py,sha256=syONdZNf4-OnAcWIsbzXpYwpXPsXZ4SsmjwVvmVG0PU,2256
155
165
  fractal_server/migrations/versions/9fd26a2b0de4_add_workflow_timestamp_created.py,sha256=4l1AHGUsa0ONoJVZlr3fTXw_xbbQ8O7wlD92Az2aRfM,1849
156
166
  fractal_server/migrations/versions/a7f4d6137b53_add_workflow_dump_to_applyworkflow.py,sha256=ekDUML7ILpmdoqEclKbEUdyLi4uw9HSG_sTjG2hp_JE,867
167
+ fractal_server/migrations/versions/af1ef1c83c9b_add_accounting_tables.py,sha256=BftudWuSGvKGBzIL5AMb3yWkgTAuaKPBGsYcOzp_gLQ,1899
157
168
  fractal_server/migrations/versions/af8673379a5c_drop_old_filter_columns.py,sha256=9sLd0F7nO5chHHm7RZ4wBA-9bvWomS-av_odKwODADM,1551
158
169
  fractal_server/migrations/versions/d256a7379ab8_taskgroup_activity_and_venv_info_to_.py,sha256=HN3_Pk8G81SzdYjg4K1RZAyjKSlsZGvcYE2nWOUbwxQ,3861
159
170
  fractal_server/migrations/versions/d4fe3708d309_make_applyworkflow_workflow_dump_non_.py,sha256=6cHEZFuTXiQg9yu32Y3RH1XAl71av141WQ6UMbiITIg,949
@@ -186,7 +197,7 @@ fractal_server/tasks/v2/templates/3_pip_freeze.sh,sha256=JldREScEBI4cD_qjfX4UK7V
186
197
  fractal_server/tasks/v2/templates/4_pip_show.sh,sha256=84NGHlg6JIbrQktgGKyfGsggPFzy6RBJuOmIpPUhsrw,1747
187
198
  fractal_server/tasks/v2/templates/5_get_venv_size_and_file_number.sh,sha256=q-6ZUvA6w6FDVEoSd9O63LaJ9tKZc7qAFH72SGPrd_k,284
188
199
  fractal_server/tasks/v2/templates/6_pip_install_from_freeze.sh,sha256=A2y8RngEjAcRhG-_owA6P7tAdrS_AszFuGXnaeMV8u0,1122
189
- fractal_server/tasks/v2/utils_background.py,sha256=6wM7Z6zedsR8oVGwrJ-HN2Hj1b7BgmaSBdvuB_r9hI8,4246
200
+ fractal_server/tasks/v2/utils_background.py,sha256=W_RvihI1aiYPJNsPo8z4wKuA_bPs0UT2huzLihRpjU4,4248
190
201
  fractal_server/tasks/v2/utils_database.py,sha256=iLbwkxMxTCgpyKe1JQzdfIR3zBfxohgmLwSdGps1AUo,1274
191
202
  fractal_server/tasks/v2/utils_package_names.py,sha256=RDg__xrvQs4ieeVzmVdMcEh95vGQYrv9Hfal-5EDBM8,2393
192
203
  fractal_server/tasks/v2/utils_python_interpreter.py,sha256=5_wrlrTqXyo1YuLZvAW9hrSoh5MyLOzdPVUlUwM7uDQ,955
@@ -194,8 +205,8 @@ fractal_server/tasks/v2/utils_templates.py,sha256=07TZpJ0Mh_A4lXVXrrH2o1VLFFGwxe
194
205
  fractal_server/urls.py,sha256=QjIKAC1a46bCdiPMu3AlpgFbcv6a4l3ABcd5xz190Og,471
195
206
  fractal_server/utils.py,sha256=PMwrxWFxRTQRl1b9h-NRIbFGPKqpH_hXnkAT3NfZdpY,3571
196
207
  fractal_server/zip_tools.py,sha256=GjDgo_sf6V_DDg6wWeBlZu5zypIxycn_l257p_YVKGc,4876
197
- fractal_server-2.13.0.dist-info/LICENSE,sha256=QKAharUuhxL58kSoLizKJeZE3mTCBnX6ucmz8W0lxlk,1576
198
- fractal_server-2.13.0.dist-info/METADATA,sha256=YY5WVT35OWNC2Ilx_EIBFAIfd7KXo5xZjDEVfe04R-E,4548
199
- fractal_server-2.13.0.dist-info/WHEEL,sha256=RaoafKOydTQ7I_I3JTrPCg6kUmTgtm4BornzOqyEfJ8,88
200
- fractal_server-2.13.0.dist-info/entry_points.txt,sha256=8tV2kynvFkjnhbtDnxAqImL6HMVKsopgGfew0DOp5UY,58
201
- fractal_server-2.13.0.dist-info/RECORD,,
208
+ fractal_server-2.14.0a0.dist-info/LICENSE,sha256=QKAharUuhxL58kSoLizKJeZE3mTCBnX6ucmz8W0lxlk,1576
209
+ fractal_server-2.14.0a0.dist-info/METADATA,sha256=mbF86y24zVVZ18m50gnS2ghCXEDjqktpK5DWwv7Tok0,4550
210
+ fractal_server-2.14.0a0.dist-info/WHEEL,sha256=RaoafKOydTQ7I_I3JTrPCg6kUmTgtm4BornzOqyEfJ8,88
211
+ fractal_server-2.14.0a0.dist-info/entry_points.txt,sha256=8tV2kynvFkjnhbtDnxAqImL6HMVKsopgGfew0DOp5UY,58
212
+ fractal_server-2.14.0a0.dist-info/RECORD,,