fractal-server 2.14.0a2__py3-none-any.whl → 2.14.0a4__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 (57) hide show
  1. fractal_server/__init__.py +1 -1
  2. fractal_server/__main__.py +3 -1
  3. fractal_server/app/history/__init__.py +4 -4
  4. fractal_server/app/history/image_updates.py +124 -142
  5. fractal_server/app/history/status_enum.py +2 -2
  6. fractal_server/app/models/v2/__init__.py +6 -4
  7. fractal_server/app/models/v2/history.py +44 -20
  8. fractal_server/app/routes/admin/v2/task.py +1 -1
  9. fractal_server/app/routes/api/__init__.py +1 -1
  10. fractal_server/app/routes/api/v2/__init__.py +4 -0
  11. fractal_server/app/routes/api/v2/_aux_functions_history.py +49 -0
  12. fractal_server/app/routes/api/v2/dataset.py +0 -12
  13. fractal_server/app/routes/api/v2/history.py +302 -176
  14. fractal_server/app/routes/api/v2/project.py +1 -26
  15. fractal_server/app/routes/api/v2/status_legacy.py +168 -0
  16. fractal_server/app/routes/api/v2/workflow.py +2 -17
  17. fractal_server/app/routes/api/v2/workflowtask.py +41 -71
  18. fractal_server/app/routes/auth/oauth.py +5 -3
  19. fractal_server/app/runner/executors/base_runner.py +2 -1
  20. fractal_server/app/runner/executors/local/_submit_setup.py +5 -13
  21. fractal_server/app/runner/executors/local/runner.py +10 -55
  22. fractal_server/app/runner/executors/slurm_common/_slurm_config.py +1 -1
  23. fractal_server/app/runner/executors/slurm_common/get_slurm_config.py +1 -1
  24. fractal_server/app/runner/executors/slurm_common/remote.py +1 -1
  25. fractal_server/app/runner/executors/slurm_sudo/runner.py +171 -108
  26. fractal_server/app/runner/v2/__init__.py +2 -22
  27. fractal_server/app/runner/v2/_slurm_ssh.py +1 -1
  28. fractal_server/app/runner/v2/_slurm_sudo.py +1 -1
  29. fractal_server/app/runner/v2/runner.py +47 -59
  30. fractal_server/app/runner/v2/runner_functions.py +185 -69
  31. fractal_server/app/schemas/_validators.py +13 -24
  32. fractal_server/app/schemas/user.py +10 -7
  33. fractal_server/app/schemas/user_settings.py +9 -21
  34. fractal_server/app/schemas/v2/dataset.py +8 -6
  35. fractal_server/app/schemas/v2/job.py +9 -5
  36. fractal_server/app/schemas/v2/manifest.py +3 -7
  37. fractal_server/app/schemas/v2/project.py +9 -7
  38. fractal_server/app/schemas/v2/task.py +41 -77
  39. fractal_server/app/schemas/v2/task_collection.py +14 -32
  40. fractal_server/app/schemas/v2/task_group.py +10 -9
  41. fractal_server/app/schemas/v2/workflow.py +10 -11
  42. fractal_server/app/security/__init__.py +3 -3
  43. fractal_server/app/security/signup_email.py +2 -2
  44. fractal_server/config.py +33 -34
  45. fractal_server/migrations/versions/fbce16ff4e47_new_history_items.py +120 -0
  46. fractal_server/tasks/v2/templates/2_pip_install.sh +1 -1
  47. fractal_server/tasks/v2/templates/4_pip_show.sh +1 -1
  48. fractal_server/tasks/v2/utils_templates.py +6 -0
  49. {fractal_server-2.14.0a2.dist-info → fractal_server-2.14.0a4.dist-info}/METADATA +1 -1
  50. {fractal_server-2.14.0a2.dist-info → fractal_server-2.14.0a4.dist-info}/RECORD +53 -54
  51. fractal_server/app/runner/executors/slurm_sudo/_executor_wait_thread.py +0 -130
  52. fractal_server/app/schemas/v2/history.py +0 -23
  53. fractal_server/migrations/versions/87cd72a537a2_add_historyitem_table.py +0 -68
  54. fractal_server/migrations/versions/954ddc64425a_image_status.py +0 -63
  55. {fractal_server-2.14.0a2.dist-info → fractal_server-2.14.0a4.dist-info}/LICENSE +0 -0
  56. {fractal_server-2.14.0a2.dist-info → fractal_server-2.14.0a4.dist-info}/WHEEL +0 -0
  57. {fractal_server-2.14.0a2.dist-info → fractal_server-2.14.0a4.dist-info}/entry_points.txt +0 -0
@@ -24,7 +24,7 @@ FastAPIUsers with Barer Token and cookie transports and register local routes.
24
24
  Then, for each OAuth client defined in the Fractal Settings configuration, it
25
25
  registers the client and the relative routes.
26
26
 
27
- All routes are registerd under the `auth/` prefix.
27
+ All routes are registered under the `auth/` prefix.
28
28
  """
29
29
  import contextlib
30
30
  from typing import Any
@@ -296,7 +296,7 @@ async def _create_first_user(
296
296
  Private method to create the first fractal-server user
297
297
 
298
298
  Create a user with the given default arguments and return a message with
299
- the relevant informations. If the user alredy exists, for example after a
299
+ the relevant information. If the user already exists, for example after a
300
300
  restart, it returns a message to inform that user already exists.
301
301
 
302
302
  **WARNING**: This function is only meant to create the first user, and then
@@ -312,7 +312,7 @@ async def _create_first_user(
312
312
  email: New user's email
313
313
  password: New user's password
314
314
  is_superuser: `True` if the new user is a superuser
315
- is_verified: `True` if the new user is verifie
315
+ is_verified: `True` if the new user is verified
316
316
  username:
317
317
  """
318
318
  function_logger = set_logger("fractal_server.create_first_user")
@@ -36,8 +36,8 @@ def mail_new_oauth_signup(msg: str, email_settings: MailSettings):
36
36
  server.ehlo()
37
37
  if email_settings.use_login:
38
38
  password = (
39
- Fernet(email_settings.encryption_key)
40
- .decrypt(email_settings.encrypted_password)
39
+ Fernet(email_settings.encryption_key.get_secret_value())
40
+ .decrypt(email_settings.encrypted_password.get_secret_value())
41
41
  .decode("utf-8")
42
42
  )
43
43
  server.login(user=email_settings.sender, password=password)
fractal_server/config.py CHANGED
@@ -28,6 +28,7 @@ from pydantic import EmailStr
28
28
  from pydantic import Field
29
29
  from pydantic import field_validator
30
30
  from pydantic import model_validator
31
+ from pydantic import SecretStr
31
32
  from pydantic_settings import BaseSettings
32
33
  from pydantic_settings import SettingsConfigDict
33
34
  from sqlalchemy.engine import URL
@@ -54,8 +55,8 @@ class MailSettings(BaseModel):
54
55
  recipients: list[EmailStr] = Field(min_length=1)
55
56
  smtp_server: str
56
57
  port: int
57
- encrypted_password: Optional[str] = None
58
- encryption_key: Optional[str] = None
58
+ encrypted_password: Optional[SecretStr] = None
59
+ encryption_key: Optional[SecretStr] = None
59
60
  instance_name: str
60
61
  use_starttls: bool
61
62
  use_login: bool
@@ -97,7 +98,7 @@ class OAuthClientConfig(BaseModel):
97
98
 
98
99
  CLIENT_NAME: str
99
100
  CLIENT_ID: str
100
- CLIENT_SECRET: str
101
+ CLIENT_SECRET: SecretStr
101
102
  OIDC_CONFIGURATION_ENDPOINT: Optional[str] = None
102
103
  REDIRECT_URL: Optional[str] = None
103
104
 
@@ -137,7 +138,7 @@ class Settings(BaseSettings):
137
138
  JWT token lifetime, in seconds.
138
139
  """
139
140
 
140
- JWT_SECRET_KEY: Optional[str] = None
141
+ JWT_SECRET_KEY: Optional[SecretStr] = None
141
142
  """
142
143
  JWT secret
143
144
 
@@ -204,7 +205,7 @@ class Settings(BaseSettings):
204
205
  """
205
206
  User to use when connecting to the PostgreSQL database.
206
207
  """
207
- POSTGRES_PASSWORD: Optional[str] = None
208
+ POSTGRES_PASSWORD: Optional[SecretStr] = None
208
209
  """
209
210
  Password to use when connecting to the PostgreSQL database.
210
211
  """
@@ -223,10 +224,15 @@ class Settings(BaseSettings):
223
224
 
224
225
  @property
225
226
  def DATABASE_ASYNC_URL(self) -> URL:
227
+ if self.POSTGRES_PASSWORD is None:
228
+ password = None
229
+ else:
230
+ password = self.POSTGRES_PASSWORD.get_secret_value()
231
+
226
232
  url = URL.create(
227
233
  drivername="postgresql+psycopg",
228
234
  username=self.POSTGRES_USER,
229
- password=self.POSTGRES_PASSWORD,
235
+ password=password,
230
236
  host=self.POSTGRES_HOST,
231
237
  port=self.POSTGRES_PORT,
232
238
  database=self.POSTGRES_DB,
@@ -250,7 +256,7 @@ class Settings(BaseSettings):
250
256
  default admin credentials.
251
257
  """
252
258
 
253
- FRACTAL_DEFAULT_ADMIN_PASSWORD: str = "1234"
259
+ FRACTAL_DEFAULT_ADMIN_PASSWORD: SecretStr = "1234"
254
260
  """
255
261
  Admin default password, used upon creation of the first superuser during
256
262
  server startup.
@@ -579,21 +585,21 @@ class Settings(BaseSettings):
579
585
  """
580
586
  Address of the OAuth-signup email sender.
581
587
  """
582
- FRACTAL_EMAIL_PASSWORD: Optional[str] = None
588
+ FRACTAL_EMAIL_PASSWORD: Optional[SecretStr] = None
583
589
  """
584
590
  Password for the OAuth-signup email sender.
585
591
  """
586
- FRACTAL_EMAIL_PASSWORD_KEY: Optional[str] = None
592
+ FRACTAL_EMAIL_PASSWORD_KEY: Optional[SecretStr] = None
587
593
  """
588
594
  Key value for `cryptography.fernet` decrypt
589
595
  """
590
596
  FRACTAL_EMAIL_SMTP_SERVER: Optional[str] = None
591
597
  """
592
- SMPT server for the OAuth-signup emails.
598
+ SMTP server for the OAuth-signup emails.
593
599
  """
594
600
  FRACTAL_EMAIL_SMTP_PORT: Optional[int] = None
595
601
  """
596
- SMPT server port for the OAuth-signup emails.
602
+ SMTP server port for the OAuth-signup emails.
597
603
  """
598
604
  FRACTAL_EMAIL_INSTANCE_NAME: Optional[str] = None
599
605
  """
@@ -653,8 +659,12 @@ class Settings(BaseSettings):
653
659
  )
654
660
  try:
655
661
  (
656
- Fernet(self.FRACTAL_EMAIL_PASSWORD_KEY)
657
- .decrypt(self.FRACTAL_EMAIL_PASSWORD)
662
+ Fernet(
663
+ self.FRACTAL_EMAIL_PASSWORD_KEY.get_secret_value()
664
+ )
665
+ .decrypt(
666
+ self.FRACTAL_EMAIL_PASSWORD.get_secret_value()
667
+ )
658
668
  .decode("utf-8")
659
669
  )
660
670
  except Exception as e:
@@ -663,14 +673,22 @@ class Settings(BaseSettings):
663
673
  "FRACTAL_EMAIL_PASSWORD_KEY). "
664
674
  f"Original error: {str(e)}."
665
675
  )
676
+ password = self.FRACTAL_EMAIL_PASSWORD.get_secret_value()
677
+ else:
678
+ password = None
679
+
680
+ if self.FRACTAL_EMAIL_PASSWORD_KEY is not None:
681
+ key = self.FRACTAL_EMAIL_PASSWORD_KEY.get_secret_value()
682
+ else:
683
+ key = None
666
684
 
667
685
  self.email_settings = MailSettings(
668
686
  sender=self.FRACTAL_EMAIL_SENDER,
669
687
  recipients=self.FRACTAL_EMAIL_RECIPIENTS.split(","),
670
688
  smtp_server=self.FRACTAL_EMAIL_SMTP_SERVER,
671
689
  port=self.FRACTAL_EMAIL_SMTP_PORT,
672
- encrypted_password=self.FRACTAL_EMAIL_PASSWORD,
673
- encryption_key=self.FRACTAL_EMAIL_PASSWORD_KEY,
690
+ encrypted_password=password,
691
+ encryption_key=key,
674
692
  instance_name=self.FRACTAL_EMAIL_INSTANCE_NAME,
675
693
  use_starttls=use_starttls,
676
694
  use_login=use_login,
@@ -788,25 +806,6 @@ class Settings(BaseSettings):
788
806
  self.check_db()
789
807
  self.check_runner()
790
808
 
791
- def get_sanitized(self) -> dict:
792
- def _must_be_sanitized(string) -> bool:
793
- if not string.upper().startswith("FRACTAL") or any(
794
- s in string.upper()
795
- for s in ["PASSWORD", "SECRET", "PWD", "TOKEN", "KEY"]
796
- ):
797
- return True
798
- else:
799
- return False
800
-
801
- sanitized_settings = {}
802
- for k, v in self.model_dump().items():
803
- if _must_be_sanitized(k):
804
- sanitized_settings[k] = "***"
805
- else:
806
- sanitized_settings[k] = v
807
-
808
- return sanitized_settings
809
-
810
809
 
811
810
  def get_settings(settings=Settings()) -> Settings:
812
811
  return settings
@@ -0,0 +1,120 @@
1
+ """new history items
2
+
3
+ Revision ID: fbce16ff4e47
4
+ Revises: af1ef1c83c9b
5
+ Create Date: 2025-03-14 15:25:01.083619
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 = "fbce16ff4e47"
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
+ "historyrun",
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
+ "workflowtask_dump",
29
+ postgresql.JSONB(astext_type=sa.Text()),
30
+ nullable=False,
31
+ ),
32
+ sa.Column(
33
+ "task_group_dump",
34
+ postgresql.JSONB(astext_type=sa.Text()),
35
+ nullable=False,
36
+ ),
37
+ sa.Column(
38
+ "timestamp_started", sa.DateTime(timezone=True), nullable=False
39
+ ),
40
+ sa.Column(
41
+ "status", sqlmodel.sql.sqltypes.AutoString(), nullable=False
42
+ ),
43
+ sa.Column("num_available_images", sa.Integer(), nullable=False),
44
+ sa.ForeignKeyConstraint(
45
+ ["dataset_id"],
46
+ ["datasetv2.id"],
47
+ name=op.f("fk_historyrun_dataset_id_datasetv2"),
48
+ ondelete="CASCADE",
49
+ ),
50
+ sa.ForeignKeyConstraint(
51
+ ["workflowtask_id"],
52
+ ["workflowtaskv2.id"],
53
+ name=op.f("fk_historyrun_workflowtask_id_workflowtaskv2"),
54
+ ondelete="SET NULL",
55
+ ),
56
+ sa.PrimaryKeyConstraint("id", name=op.f("pk_historyrun")),
57
+ )
58
+ op.create_table(
59
+ "historyunit",
60
+ sa.Column("id", sa.Integer(), nullable=False),
61
+ sa.Column("history_run_id", sa.Integer(), nullable=False),
62
+ sa.Column(
63
+ "logfile", sqlmodel.sql.sqltypes.AutoString(), nullable=True
64
+ ),
65
+ sa.Column(
66
+ "status", sqlmodel.sql.sqltypes.AutoString(), nullable=False
67
+ ),
68
+ sa.Column("zarr_urls", postgresql.ARRAY(sa.String()), nullable=True),
69
+ sa.ForeignKeyConstraint(
70
+ ["history_run_id"],
71
+ ["historyrun.id"],
72
+ name=op.f("fk_historyunit_history_run_id_historyrun"),
73
+ ondelete="CASCADE",
74
+ ),
75
+ sa.PrimaryKeyConstraint("id", name=op.f("pk_historyunit")),
76
+ )
77
+ op.create_table(
78
+ "historyimagecache",
79
+ sa.Column(
80
+ "zarr_url", sqlmodel.sql.sqltypes.AutoString(), nullable=False
81
+ ),
82
+ sa.Column("dataset_id", sa.Integer(), nullable=False),
83
+ sa.Column("workflowtask_id", sa.Integer(), nullable=False),
84
+ sa.Column("latest_history_unit_id", sa.Integer(), nullable=False),
85
+ sa.ForeignKeyConstraint(
86
+ ["dataset_id"],
87
+ ["datasetv2.id"],
88
+ name=op.f("fk_historyimagecache_dataset_id_datasetv2"),
89
+ ondelete="CASCADE",
90
+ ),
91
+ sa.ForeignKeyConstraint(
92
+ ["latest_history_unit_id"],
93
+ ["historyunit.id"],
94
+ name=op.f(
95
+ "fk_historyimagecache_latest_history_unit_id_historyunit"
96
+ ),
97
+ ondelete="CASCADE",
98
+ ),
99
+ sa.ForeignKeyConstraint(
100
+ ["workflowtask_id"],
101
+ ["workflowtaskv2.id"],
102
+ name=op.f("fk_historyimagecache_workflowtask_id_workflowtaskv2"),
103
+ ondelete="CASCADE",
104
+ ),
105
+ sa.PrimaryKeyConstraint(
106
+ "zarr_url",
107
+ "dataset_id",
108
+ "workflowtask_id",
109
+ name=op.f("pk_historyimagecache"),
110
+ ),
111
+ )
112
+ # ### end Alembic commands ###
113
+
114
+
115
+ def downgrade() -> None:
116
+ # ### commands auto generated by Alembic - please adjust! ###
117
+ op.drop_table("historyimagecache")
118
+ op.drop_table("historyunit")
119
+ op.drop_table("historyrun")
120
+ # ### end Alembic commands ###
@@ -25,7 +25,7 @@ echo
25
25
 
26
26
  # Install package
27
27
  write_log "START install ${INSTALL_STRING}"
28
- "$VENVPYTHON" -m pip install --no-cache-dir "$INSTALL_STRING"
28
+ "$VENVPYTHON" -m pip install ${FRACTAL_PIP_CACHE_DIR_ARG} "$INSTALL_STRING"
29
29
  write_log "END install ${INSTALL_STRING}"
30
30
  echo
31
31
 
@@ -20,7 +20,7 @@ echo
20
20
  # FIXME: only run pip-show once!
21
21
 
22
22
  # Extract information about paths
23
- # WARNING: this block will fail for paths which inlcude whitespace characters
23
+ # WARNING: this block will fail for paths which include whitespace characters
24
24
  write_log "START pip show"
25
25
  $VENVPYTHON -m pip show ${PACKAGE_NAME}
26
26
  write_log "END pip show"
@@ -2,12 +2,15 @@ from pathlib import Path
2
2
 
3
3
  from fractal_server.app.models.v2 import TaskGroupV2
4
4
  from fractal_server.config import get_settings
5
+ from fractal_server.logger import set_logger
5
6
  from fractal_server.syringe import Inject
6
7
 
7
8
  TEMPLATES_DIR = Path(__file__).parent / "templates"
8
9
 
9
10
  SCRIPTS_SUBFOLDER = "scripts"
10
11
 
12
+ logger = set_logger(__name__)
13
+
11
14
 
12
15
  def customize_template(
13
16
  *,
@@ -87,4 +90,7 @@ def get_collection_replacements(
87
90
  task_group.pinned_package_versions_string,
88
91
  ),
89
92
  ]
93
+ logger.info(
94
+ f"Cache-dir argument for `pip install`: {settings.PIP_CACHE_DIR_ARG}"
95
+ )
90
96
  return replacements
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: fractal-server
3
- Version: 2.14.0a2
3
+ Version: 2.14.0a4
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,20 +1,20 @@
1
- fractal_server/__init__.py,sha256=dWQvRQS4d6bb0CHJ35U72icZFcp1aPaXkJMRU7U2UPk,25
2
- fractal_server/__main__.py,sha256=igfS2XL3e8JycuhASl2vsYuIPma0MG0cfPPFRuQfh14,6906
1
+ fractal_server/__init__.py,sha256=7tAxXkNvimqYIX0U_oeIYOmpP_2NjEN3fI6It2ac4-s,25
2
+ fractal_server/__main__.py,sha256=rkM8xjY1KeS3l63irB8yCrlVobR-73uDapC4wvrIlxI,6957
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
+ fractal_server/app/history/__init__.py,sha256=ZF-5wb_NH_7SJkUiVkYq2X0MJAy1fFnYBRpgPfEirjo,234
7
+ fractal_server/app/history/image_updates.py,sha256=ToY3yENMM6OdWUuFPG5F7qsLefrsaPqyRDFHaimsaHI,4188
8
+ fractal_server/app/history/status_enum.py,sha256=umznsG4-ZunCLz2ks3Gb-K_s1irwd4ibOJ8vJ2Z0C-M,235
9
9
  fractal_server/app/models/__init__.py,sha256=xJWiGAwpXmCpnFMC4c_HTqoUCzMOXrakoGLUH_uMvdA,415
10
10
  fractal_server/app/models/linkusergroup.py,sha256=LWTUfhH2uAnn_4moK7QdRUIHWtpw-hPZuW-5jClv_OE,610
11
11
  fractal_server/app/models/linkuserproject.py,sha256=hvaxh3Lkiy2uUCwB8gvn8RorCpvxSSdzWdCS_U1GL7g,315
12
12
  fractal_server/app/models/security.py,sha256=mMb_HiwWY74QZrs9xuyno0CVSmk4GYQWk5FxGixr8SU,3860
13
13
  fractal_server/app/models/user_settings.py,sha256=Y-ZV-uZAFLZqXxy8c5_Qeh_F7zQuZDWOgLpU6Zs6iqU,1316
14
- fractal_server/app/models/v2/__init__.py,sha256=VNoK2OUB8_IPvZoItLOxup84ZMNslO7j30jojNS2lI0,774
14
+ fractal_server/app/models/v2/__init__.py,sha256=vjHwek7-IXmaZZL9VF0nD30YL9ca4wNc8P4RXJK_kDc,832
15
15
  fractal_server/app/models/v2/accounting.py,sha256=f2ALxfKKBNxFLJTtC2-YqRepVK253x68y7zkD2V_Nls,1115
16
16
  fractal_server/app/models/v2/dataset.py,sha256=O5_6YfNeX6JM7PUcEZhbeV4JCvuAhFCQbOOuefpVnqc,1544
17
- fractal_server/app/models/v2/history.py,sha256=SqD6Va7h7LUzSzf_yz_iTcDQpivxif6hy--Rls_yekw,1538
17
+ fractal_server/app/models/v2/history.py,sha256=C0pqn_S5yqc8PjayoyRNcsk5Mt_SxvHitdQznuxJvGM,2044
18
18
  fractal_server/app/models/v2/job.py,sha256=L0P1mrztMqqb-6qdPEbuHXhCsf2mxVUct_ehcXrREGg,1844
19
19
  fractal_server/app/models/v2/project.py,sha256=rAHoh5KfYwIaW7rTX0_O0jvWmxEvfo1BafvmcXuSSRk,786
20
20
  fractal_server/app/models/v2/task.py,sha256=8KEROaadgccXRZIP7EriBp2j1FgzYkgiirOi5_fG79M,1494
@@ -28,34 +28,36 @@ fractal_server/app/routes/admin/v2/accounting.py,sha256=UDMPD9DMhMBcu4UsEOEtKMCG
28
28
  fractal_server/app/routes/admin/v2/impersonate.py,sha256=gc4lshfEPFR6W2asH7aKu6hqE6chzusdhAUVV9p51eU,1131
29
29
  fractal_server/app/routes/admin/v2/job.py,sha256=4soc-5d99QEsir7U9AqpofgaGggSBwgMm7mXW5LBvSI,7439
30
30
  fractal_server/app/routes/admin/v2/project.py,sha256=luy-yiGX1JYTdPm1hpIdDUUqPm8xHuipLy9k2X6zu74,1223
31
- fractal_server/app/routes/admin/v2/task.py,sha256=h6O_DLYgp7KMExydPRO-1UsvsYj8S52E3CjslDNJZnA,4375
31
+ fractal_server/app/routes/admin/v2/task.py,sha256=QOwgyDU9m7T_wLMwkdgfFaoMjNxcDg6zMVpngxhUvqk,4374
32
32
  fractal_server/app/routes/admin/v2/task_group.py,sha256=XTjdqgABXZcx9EenaoqSmHh12BXSentUus3SV0oxBMs,7929
33
33
  fractal_server/app/routes/admin/v2/task_group_lifecycle.py,sha256=0e0ZJ_k75TVHaT2o8Xk33DPDSgh-eBhZf-y4y7t-Adg,9429
34
- fractal_server/app/routes/api/__init__.py,sha256=2IDheFi0OFdsUg7nbUiyahqybvpgXqeHUXIL2QtWrQQ,641
35
- fractal_server/app/routes/api/v2/__init__.py,sha256=S7zOeoLkD6Sss1JLRQxeQWPSXKMX2yaIVhLQUw0PDh0,2176
34
+ fractal_server/app/routes/api/__init__.py,sha256=B8l6PSAhR10iZqHEiyTat-_0tkeKdrCigIE6DJGP5b8,638
35
+ fractal_server/app/routes/api/v2/__init__.py,sha256=Q65mxJOfuexzj53m6IB5fNl9PDec-Asu97W0bBxrRMM,2324
36
36
  fractal_server/app/routes/api/v2/_aux_functions.py,sha256=pmYbsHjJexb5-zMCJQLNStmU_95ZfeEIBpoCJx4GFIY,13480
37
+ fractal_server/app/routes/api/v2/_aux_functions_history.py,sha256=dGr9mhuE1kJPx8RNDwFplCWBunV1Zh0QxNQbssGAqMI,1341
37
38
  fractal_server/app/routes/api/v2/_aux_functions_task_lifecycle.py,sha256=qdXCb6IP8-qPEAxGZKljtjIqNzIAyRaAsQSRi5VqFHM,6773
38
39
  fractal_server/app/routes/api/v2/_aux_functions_tasks.py,sha256=uhNSs-jcS7ndIUFKiOC1yrDiViw3uvKEXi9UL04BMks,11642
39
- fractal_server/app/routes/api/v2/dataset.py,sha256=gS5169eJRGHBQNUnkDB75Bv3Kg8Ql-tMVw5_FAxUEKc,9664
40
- fractal_server/app/routes/api/v2/history.py,sha256=VTyZA6wAC3Uc-AfaaoQ-RsQdzZKIMkhSX142lwTI1tc,9260
40
+ fractal_server/app/routes/api/v2/dataset.py,sha256=osoWJIA5SZH4aAr-0TG6Uc3877wzsgCLB_Oek59hRjk,9230
41
+ fractal_server/app/routes/api/v2/history.py,sha256=GPok8bYnagGPjNmoHvdLm2h-lirsd2ROUlMt2OjIoKM,12911
41
42
  fractal_server/app/routes/api/v2/images.py,sha256=wUhYomNLGtJTtu_pD2oQorcH2LISxo64Wxo6ogc4IXc,8185
42
43
  fractal_server/app/routes/api/v2/job.py,sha256=m89FTh9Px25oXCeWj2k2NdGWQaO2oxMh-6lZppcsJOY,5551
43
- fractal_server/app/routes/api/v2/project.py,sha256=mYTahW8udrfCbnVYrKPX2VPyT3kFjYScE500jZZz8e4,7827
44
+ fractal_server/app/routes/api/v2/project.py,sha256=hMvL9QLPUcAAiPGy6ta2LBLTVRozJsfvBPl5D06_MHg,6666
45
+ fractal_server/app/routes/api/v2/status_legacy.py,sha256=sJLHGGHI9so_Sa4-8JuhMGBPeE6n4K2DmDuiw6IB4XY,6317
44
46
  fractal_server/app/routes/api/v2/submit.py,sha256=K4OjcSg476JXIeeMUaYdTDk8Qpj5IO5UULvfErI7Y5Y,8624
45
47
  fractal_server/app/routes/api/v2/task.py,sha256=z3_SxsXoKsbM9GGNJUdIiZisQwAJSBqvCc7thaJIOTU,7191
46
48
  fractal_server/app/routes/api/v2/task_collection.py,sha256=IDNF6sjDuU37HIQ0TuQA-TZIuf7nfHAQXUUNmkrlhLM,12706
47
49
  fractal_server/app/routes/api/v2/task_collection_custom.py,sha256=cctW61-C2QYF2KXluS15lLhZJS_kt30Ca6UGLFO32z0,6207
48
50
  fractal_server/app/routes/api/v2/task_group.py,sha256=j3zDvVZizB7NWEgVgZU42JCXETkaVkk2ImJPr0jS7BQ,8164
49
51
  fractal_server/app/routes/api/v2/task_group_lifecycle.py,sha256=3o9bCC8ubMwffQPPaxQZy-CjH9IB2RkIReIecI6L2_w,9300
50
- fractal_server/app/routes/api/v2/workflow.py,sha256=R-wnT9tWTSbaNobGcfgLdk-4pbfbxoBwKZd1JRZXsSU,12223
52
+ fractal_server/app/routes/api/v2/workflow.py,sha256=U3iZX5IiFAJ20-R8IjlYToOdm9gXsmtr1lW7ASEH9P8,11689
51
53
  fractal_server/app/routes/api/v2/workflow_import.py,sha256=INmnhlMEBJp-vHPR0f940DANPmIidts3OfcooeM_aNA,11205
52
- fractal_server/app/routes/api/v2/workflowtask.py,sha256=89yLpSzdr7Mv3wRmdMt71CSC3hclrVUP56UVtfTQHOQ,12152
54
+ fractal_server/app/routes/api/v2/workflowtask.py,sha256=pi4oxWszNgWkDm6oQavanmq4_P5kpcgN3Dfjz9XAuV8,11063
53
55
  fractal_server/app/routes/auth/__init__.py,sha256=fao6CS0WiAjHDTvBzgBVV_bSXFpEAeDBF6Z6q7rRkPc,1658
54
56
  fractal_server/app/routes/auth/_aux_auth.py,sha256=UZgauY0V6mSqjte_sYI1cBl2h8bcbLaeWzgpl1jdJlk,4883
55
57
  fractal_server/app/routes/auth/current_user.py,sha256=FUegTahlxT3BdPVCQYir0-ogg2YAaZ1DYuLcE_5NC9Y,5906
56
58
  fractal_server/app/routes/auth/group.py,sha256=EblxNVNTiPQj82eMaxNxf3OqoAbRLOExxCnm1-8C-k0,8364
57
59
  fractal_server/app/routes/auth/login.py,sha256=tSu6OBLOieoBtMZB4JkBAdEgH2Y8KqPGSbwy7NIypIo,566
58
- fractal_server/app/routes/auth/oauth.py,sha256=AnFHbjqL2AgBX3eksI931xD6RTtmbciHBEuGf9YJLjU,1895
60
+ fractal_server/app/routes/auth/oauth.py,sha256=KCtJHSzemC4S8AfX9bLLdVhlF1nU4DOyox-sNQtcWew,1978
59
61
  fractal_server/app/routes/auth/register.py,sha256=DlHq79iOvGd_gt2v9uwtsqIKeO6i_GKaW59VIkllPqY,587
60
62
  fractal_server/app/routes/auth/router.py,sha256=tzJrygXFZlmV_uWelVqTOJMEH-3Fr7ydwlgx1LxRjxY,527
61
63
  fractal_server/app/routes/auth/users.py,sha256=Zr1Bsa7Hpricb_1uFwKPCtgt3PzGnP0TaMLMdpbQDNs,7825
@@ -69,18 +71,18 @@ fractal_server/app/runner/components.py,sha256=ZF8ct_Ky5k8IAcrmpYOZ-bc6OBgdELEig
69
71
  fractal_server/app/runner/compress_folder.py,sha256=HSc1tv7x2DBjBoXwugZlC79rm9GNBIWtQKK9yWn5ZBI,3991
70
72
  fractal_server/app/runner/exceptions.py,sha256=_qZ_t8O4umAdJ1ikockiF5rDJuxnEskrGrLjZcnQl7A,4159
71
73
  fractal_server/app/runner/executors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
72
- fractal_server/app/runner/executors/base_runner.py,sha256=uUA4hGeNF6d8IYZ80nueq7PSjuliWiFpyxnhTKBk0U4,3721
74
+ fractal_server/app/runner/executors/base_runner.py,sha256=0E3gbSndXdEAxZwFCiZXrUd8tjEmvLa_ztPBGMJXtUw,3742
73
75
  fractal_server/app/runner/executors/local/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
74
76
  fractal_server/app/runner/executors/local/_local_config.py,sha256=8dyg2Gh8L2FlG_jJRYLMkcMgVHGEY2w7DME9aaKXFFo,3688
75
- fractal_server/app/runner/executors/local/_submit_setup.py,sha256=6h4DVcVgzL8Oubw83zixvya4ljmNSXlG0Kp8a01OBLc,1440
76
- fractal_server/app/runner/executors/local/runner.py,sha256=tEI3qe9UQKgqNoY6gkP1b2O1yRw3VGTiPTDKztrCt2I,7577
77
+ fractal_server/app/runner/executors/local/_submit_setup.py,sha256=pDc9Q6axXL8_5JAV0byXzGOLOB0bZF88_L9LZykOgwM,1220
78
+ fractal_server/app/runner/executors/local/runner.py,sha256=Iy5Pc8rdkj7IGcwUbkO_UgZNDytXtfMysYtMSu_dlY0,5498
77
79
  fractal_server/app/runner/executors/slurm_common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
78
80
  fractal_server/app/runner/executors/slurm_common/_batching.py,sha256=ZY020JZlDS5mfpgpWTChQkyHU7iLE5kx2HVd57_C6XA,8850
79
81
  fractal_server/app/runner/executors/slurm_common/_job_states.py,sha256=nuV-Zba38kDrRESOVB3gaGbrSPZc4q7YGichQaeqTW0,238
80
- fractal_server/app/runner/executors/slurm_common/_slurm_config.py,sha256=yqcjAlYF_Gasv0b013cg3vz7abmjIHIgOwei7bCojuk,15896
82
+ fractal_server/app/runner/executors/slurm_common/_slurm_config.py,sha256=fZaFUUXqDH0p3DndCFUpFqTqyD2tMVCuSYgYLAycpVw,15897
81
83
  fractal_server/app/runner/executors/slurm_common/_submit_setup.py,sha256=crbfAAvXbxe_9PaokXkkVdPV65lSCFbInZ0RlT6uyHI,2746
82
- fractal_server/app/runner/executors/slurm_common/get_slurm_config.py,sha256=GwdJsEAP9vEBA-FkOGSRHHeRUv1E6bmKZwWyO5Daa70,5994
83
- fractal_server/app/runner/executors/slurm_common/remote.py,sha256=wLziIsGdSMiO-jIXM8x77JRK82g_2hx0iBKTiMghuIo,5852
84
+ fractal_server/app/runner/executors/slurm_common/get_slurm_config.py,sha256=-fAX1DZMB5RZnyYanIJD72mWOJAPkh21jd4loDXKJw4,5994
85
+ fractal_server/app/runner/executors/slurm_common/remote.py,sha256=iXLu4d-bWzn7qmDaOjKFkcuaSHLjPESAMSLcg6c99fc,5852
84
86
  fractal_server/app/runner/executors/slurm_common/utils_executors.py,sha256=naPyJI0I3lD-sYHbSXbMFGUBK4h_SggA5V91Z1Ch1Xg,1416
85
87
  fractal_server/app/runner/executors/slurm_ssh/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
86
88
  fractal_server/app/runner/executors/slurm_ssh/_executor_wait_thread.py,sha256=lnW8dNNPqqbpQvojVBQaNJm4wN3Qkw02RWBZ1w68Hyw,3755
@@ -88,50 +90,48 @@ fractal_server/app/runner/executors/slurm_ssh/_slurm_job.py,sha256=IL1C52dezEiin
88
90
  fractal_server/app/runner/executors/slurm_ssh/executor.py,sha256=JW6zguEy9XsHebSPt_JTK4Kw78r5rlbDEipSOxOqoHk,53660
89
91
  fractal_server/app/runner/executors/slurm_sudo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
90
92
  fractal_server/app/runner/executors/slurm_sudo/_check_jobs_status.py,sha256=eZd9lxbObsqc1M3B96IGMJ-1oC0jo8lBOX4Nto97VvE,2036
91
- fractal_server/app/runner/executors/slurm_sudo/_executor_wait_thread.py,sha256=7CaMarvaKFCq3RcyqW5CABng_3b3QaS2pmTzVRDgm3I,4077
92
93
  fractal_server/app/runner/executors/slurm_sudo/_subprocess_run_as_user.py,sha256=O1bNg1DiSDJmQE0RmOk2Ii47DagiXp5ryd0R6KxO2OM,3177
93
- fractal_server/app/runner/executors/slurm_sudo/runner.py,sha256=JFVGb0K7w0l6kuy4QjIey_3M4indQUwvqbflzdW9Gi8,21256
94
+ fractal_server/app/runner/executors/slurm_sudo/runner.py,sha256=VOWd8bYzCU8C6TziZN7VUurX52lbvNDWLZ2Ht3uvnGc,24057
94
95
  fractal_server/app/runner/extract_archive.py,sha256=tLpjDrX47OjTNhhoWvm6iNukg8KoieWyTb7ZfvE9eWU,2483
95
96
  fractal_server/app/runner/filenames.py,sha256=lPnxKHtdRizr6FqG3zOdjDPyWA7GoaJGTtiuJV0gA8E,70
96
97
  fractal_server/app/runner/run_subprocess.py,sha256=c3JbYXq3hX2aaflQU19qJ5Xs6J6oXGNvnTEoAfv2bxc,959
97
98
  fractal_server/app/runner/set_start_and_last_task_index.py,sha256=-q4zVybAj8ek2XlbENKlfOAJ39hT_zoJoZkqzDqiAMY,1254
98
99
  fractal_server/app/runner/shutdown.py,sha256=9pfSKHDNdIcm0eY-opgRTi7y0HmvfPmYiu9JR6Idark,2082
99
100
  fractal_server/app/runner/task_files.py,sha256=5enzBqiQct1AUGwrGX-rxFCxnhW3SPYIUylMYwyVfrE,2482
100
- fractal_server/app/runner/v2/__init__.py,sha256=fExxP-EQEaXADncxX45DPG9GVlJNjKwnK9yBBjJFqGA,14245
101
+ fractal_server/app/runner/v2/__init__.py,sha256=ro5C4ro7gXuV-H7p8SrV90vBsS52IfukWn-b2FxJ9F4,13293
101
102
  fractal_server/app/runner/v2/_local.py,sha256=Zas2RS_f9mfdkXszBpzISHylLX1bX8pFuoLA1fHLFqQ,2945
102
- fractal_server/app/runner/v2/_slurm_ssh.py,sha256=6NzRy3Yp84DHhsRHie2NI_UXhhiAusY4nOdTYlhqJOw,3226
103
- fractal_server/app/runner/v2/_slurm_sudo.py,sha256=iQ_BwvS88sMzd1vAce_9MOjC8YzZq7rHx2YUpkVRWXQ,2913
103
+ fractal_server/app/runner/v2/_slurm_ssh.py,sha256=5w_lwQzySx-R3kVg2Bf-21n5JpWjJAgMtYP2BROvWJo,3227
104
+ fractal_server/app/runner/v2/_slurm_sudo.py,sha256=CzWUeC6at_Sj-wU1myjA68ZRKMiLZYBTLv9I9odUxBU,2914
104
105
  fractal_server/app/runner/v2/deduplicate_list.py,sha256=IVTE4abBU1bUprFTkxrTfYKnvkNTanWQ-KWh_etiT08,645
105
106
  fractal_server/app/runner/v2/merge_outputs.py,sha256=D1L4Taieq9i71SPQyNc1kMokgHh-sV_MqF3bv7QMDBc,907
106
- fractal_server/app/runner/v2/runner.py,sha256=YPzuo4QfXm9nVmZinF3qI1w1AlJwpZ1wVNboyhyTyU4,14456
107
- fractal_server/app/runner/v2/runner_functions.py,sha256=EBY64v0NC_fdgKUqZQqCp8XZtPbwVo21P1eXS6Y0AUc,10456
107
+ fractal_server/app/runner/v2/runner.py,sha256=25kOKm4B7_BhUlg7Dh0yzIcJ2izugA_WFNhVf06O0Y4,13970
108
+ fractal_server/app/runner/v2/runner_functions.py,sha256=PQC5wsi-o3AlFZbk3EeIZ_9KMBLQxYleMDi7CYcXySE,14473
108
109
  fractal_server/app/runner/v2/runner_functions_low_level.py,sha256=dvvRK7od8iQ8vdPf80uGUxs3i5i0buGjCodBxSjZ7PQ,3671
109
110
  fractal_server/app/runner/v2/task_interface.py,sha256=e1GGQSYd0MyBj1EZvEVzqv-HpVE4YffXOq82WLrCaOc,1866
110
111
  fractal_server/app/runner/versions.py,sha256=dSaPRWqmFPHjg20kTCHmi_dmGNcCETflDtDLronNanU,852
111
112
  fractal_server/app/schemas/__init__.py,sha256=stURAU_t3AOBaH0HSUbV-GKhlPKngnnIMoqWc3orFyI,135
112
113
  fractal_server/app/schemas/_filter_validators.py,sha256=Gkf2USrkuxZx1TWeeMRmhgfmG60AAIDQfbaWslLsvJQ,1572
113
- fractal_server/app/schemas/_validators.py,sha256=ap0VWJzOfPcq_tbH3sglZClkuinNvMjRq9fhTIdn-zk,3029
114
- fractal_server/app/schemas/user.py,sha256=vLijVyPIQJdpFc36S6qK2XtSKMzfkhULN1nBsb9tV18,2407
114
+ fractal_server/app/schemas/_validators.py,sha256=ZzTlTTzRATzf9Snx4Xp67aDmG77GaM2ewssFtlxQaaY,2680
115
+ fractal_server/app/schemas/user.py,sha256=oCftAKeHdFFowpLyh1G-RiylR8cIO7fTn0PkT5xjs0E,2494
115
116
  fractal_server/app/schemas/user_group.py,sha256=Uao1igRYflBu7Dg6Zs0kaFU3zBFJzIwDLrkFfaJk6z8,2176
116
- fractal_server/app/schemas/user_settings.py,sha256=4XeXQ3rnDS1UvLPd9hvh-WVSbzBGcMDjChfiZ_WGi-w,3134
117
+ fractal_server/app/schemas/user_settings.py,sha256=z7hx54yTrWfjo98oX_1lkeRh1UGrC1dSRH6yIOpnCsY,2772
117
118
  fractal_server/app/schemas/v2/__init__.py,sha256=pjRUOJwZGzsDbBbxfnCgQgShs5V8SaHRqwIQDW3STpY,2676
118
119
  fractal_server/app/schemas/v2/accounting.py,sha256=Wylt7uWTiDIFlHJOh4XEtYitk2FjFlmnodDrJDxcr0E,397
119
- fractal_server/app/schemas/v2/dataset.py,sha256=xo7Y3fq5ThMVBp6xDVypdG-EmGfBX_vWVRs66u2pC34,5157
120
+ fractal_server/app/schemas/v2/dataset.py,sha256=9yc-tte70yPPk4CSfy2imykYVbCW8-23K499pi9z2e0,5206
120
121
  fractal_server/app/schemas/v2/dumps.py,sha256=2GUjoqeblUvrSoojBz5odoUUf53IABtbY_5GvFZoMVc,1782
121
- fractal_server/app/schemas/v2/history.py,sha256=OHwRIbOIjBiiTYUNZYsHTdEXJHff17JRizQ8pf1e0vk,601
122
- fractal_server/app/schemas/v2/job.py,sha256=Dp_RRiC5uvJqq1fAJlBXztAFA-tS5FWuRnUbTnLtL6M,4226
123
- fractal_server/app/schemas/v2/manifest.py,sha256=AhUkv3ZfoUffdcpHKOuUTmcZa-0G5Y53hp-O4UaTkG0,7133
124
- fractal_server/app/schemas/v2/project.py,sha256=uqBreoS0UAkbVEJJS2HkSdjCCWfFIkv6N70TWk9HgxA,868
122
+ fractal_server/app/schemas/v2/job.py,sha256=KhxQOfncpE_SAu7Wed8CXS2G6onh0v875GkotBvKBTY,4304
123
+ fractal_server/app/schemas/v2/manifest.py,sha256=tMNKtwVUBhVyAmBHK6f2agzvdKuYhuTP-e2cG9t66y0,7045
124
+ fractal_server/app/schemas/v2/project.py,sha256=ulgCmUnX0w-0jrSjVYIT7sxeK95CSNGh2msXydhsgYI,885
125
125
  fractal_server/app/schemas/v2/status.py,sha256=SQaUpQkjFq5c5k5J4rOjNhuQaDOEg8lksPhkKmPU5VU,332
126
- fractal_server/app/schemas/v2/task.py,sha256=OUCNQQUULmWSOdPm8Dz8E0ivG1XOcvO4dxz-osSa9R0,7248
127
- fractal_server/app/schemas/v2/task_collection.py,sha256=NFIcfTAhFN5LMxmyJCat7CKxUXq2CLEuWl5Hs0siZl8,6561
128
- fractal_server/app/schemas/v2/task_group.py,sha256=vFF850kJRmmcxt2sn7nrhm-OWJHRhYu_XOQP5LNiXyU,3850
129
- fractal_server/app/schemas/v2/workflow.py,sha256=qmKJZ9xZ6-sN41XdocZ7K6hum_pUfaMuKOJs_TlFCRQ,2211
126
+ fractal_server/app/schemas/v2/task.py,sha256=lPXxhwvPLjXuoZGdVSLZq3wTChfBbP7V-uTEpQa1HoU,5753
127
+ fractal_server/app/schemas/v2/task_collection.py,sha256=dLu4sy-su5k5vDJqCZdJMW8mLT5TX2SV60l_RAvKhwY,5930
128
+ fractal_server/app/schemas/v2/task_group.py,sha256=A3SFHNHLKPJyrnDz-wbnQvycetafKltp6UsH1u-euwA,3850
129
+ fractal_server/app/schemas/v2/workflow.py,sha256=ZpM43zTMyLRnEUtkbr_J5DYP00NwjItaC8gweB7GGAA,2172
130
130
  fractal_server/app/schemas/v2/workflowtask.py,sha256=qMvwlnFCsnyD8uv8HJ4cFy2-QMm2ETUFlTIbxIFUWxk,8056
131
- fractal_server/app/security/__init__.py,sha256=8dg7vBzLjU43p_eGoHuFBO97FtIDtNnbJJ5mzVSVRNI,14094
132
- fractal_server/app/security/signup_email.py,sha256=CR1VbsGFNshxsWquLDZPbUAYnGzkCHeJChtncq63RBc,1434
131
+ fractal_server/app/security/__init__.py,sha256=e2cveg5hQpieGD3bSPd5GTOMthvJ-HXH3buSb9WVfEU,14096
132
+ fractal_server/app/security/signup_email.py,sha256=Xd6QYxcdmg0PHpDwmUE8XQmPcOj3Xjy5oROcIMhmltM,1472
133
133
  fractal_server/app/user_settings.py,sha256=OP1yiYKtPadxwM51_Q0hdPk3z90TCN4z1BLpQsXyWiU,1316
134
- fractal_server/config.py,sha256=-ZcGmK-3tppIQCD13aKNSiom7u0XQgil_nis37HKjTA,28549
134
+ fractal_server/config.py,sha256=mdVsXHo3bCBMyTErro2kN2CKV2547XTHWoaAAiawq94,28561
135
135
  fractal_server/data_migrations/README.md,sha256=_3AEFvDg9YkybDqCLlFPdDmGJvr6Tw7HRI14aZ3LOIw,398
136
136
  fractal_server/data_migrations/tools.py,sha256=LeMeASwYGtEqd-3wOLle6WARdTGAimoyMmRbbJl-hAM,572
137
137
  fractal_server/gunicorn_fractal.py,sha256=u6U01TLGlXgq1v8QmEpLih3QnsInZD7CqphgJ_GrGzc,1230
@@ -155,11 +155,9 @@ fractal_server/migrations/versions/5bf02391cfef_v2.py,sha256=axhNkr_H6R4rRbY7oGY
155
155
  fractal_server/migrations/versions/70e77f1c38b0_add_applyworkflow_first_task_index_and_.py,sha256=Q-DsMzG3IcUV2Ol1dhJWosDvKERamBE6QvA2zzS5zpQ,1632
156
156
  fractal_server/migrations/versions/71eefd1dd202_add_slurm_accounts.py,sha256=mbWuCkTpRAdGbRhW7lhXs_e5S6O37UAcCN6JfoY5H8A,1353
157
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
159
158
  fractal_server/migrations/versions/8e8f227a3e36_update_taskv2_post_2_7_0.py,sha256=68y9-fpSuKx6KPtM_9n8Ho0I1qwa8IoG-yJqXUYQrGg,1111
160
159
  fractal_server/migrations/versions/8f79bd162e35_add_docs_info_and_docs_link_to_task_.py,sha256=6pgODDtyAxevZvAJBj9IJ41inhV1RpwbpZr_qfPPu1A,1115
161
160
  fractal_server/migrations/versions/94a47ea2d3ff_remove_cache_dir_slurm_user_and_slurm_.py,sha256=yL3-Hvzw5jBLKj4LFP1z5ofZE9L9W3tLwYtPNW7z4ko,1508
162
- fractal_server/migrations/versions/954ddc64425a_image_status.py,sha256=cPjuGTztDkjvhVQDO8i41qAmG5O2CgKNUfV_PRK9Pck,1742
163
161
  fractal_server/migrations/versions/97f444d47249_add_applyworkflow_project_dump.py,sha256=eKTZm3EgUgapXBxO0RuHkEfTKic-TZG3ADaMpGLuc0k,1057
164
162
  fractal_server/migrations/versions/99ea79d9e5d2_add_dataset_history.py,sha256=0im6TxDr53sKKcjiPgeH4ftVRGnRXZSh2lPbRQ1Ir9w,883
165
163
  fractal_server/migrations/versions/9c5ae74c9b98_add_user_settings_table.py,sha256=syONdZNf4-OnAcWIsbzXpYwpXPsXZ4SsmjwVvmVG0PU,2256
@@ -174,6 +172,7 @@ fractal_server/migrations/versions/db09233ad13a_split_filters_and_keep_old_colum
174
172
  fractal_server/migrations/versions/e75cac726012_make_applyworkflow_start_timestamp_not_.py,sha256=lOggSvzGWqQvnxxFuSM6W50Ui49R918A-uBuiZJ0pNM,963
175
173
  fractal_server/migrations/versions/efa89c30e0a4_add_project_timestamp_created.py,sha256=jilQW3QIqYQ4Q6hCnUiG7UtNMpA41ujqrB3tPFiPM1Q,1221
176
174
  fractal_server/migrations/versions/f384e1c0cf5d_drop_task_default_args_columns.py,sha256=9BwqUS9Gf7UW_KjrzHbtViC880qhD452KAytkHWWZyk,746
175
+ fractal_server/migrations/versions/fbce16ff4e47_new_history_items.py,sha256=TDWCaIoM0Q4SpRWmR9zr_rdp3lJXhCfBPTMhtrP5xYE,3950
177
176
  fractal_server/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
178
177
  fractal_server/ssh/__init__.py,sha256=sVUmzxf7_DuXG1xoLQ1_00fo5NPhi2LJipSmU5EAkPs,124
179
178
  fractal_server/ssh/_fabric.py,sha256=lNy4IX1I4We6VoWa4Bz4fUPuApLMSoejpyE6I3jDZeM,22869
@@ -193,21 +192,21 @@ fractal_server/tasks/v2/ssh/collect.py,sha256=-wqqGMapjD1hQz1vphwXmZaD4qzziMetc6
193
192
  fractal_server/tasks/v2/ssh/deactivate.py,sha256=EAVH2HtyvmIFXqUwsGYhlJcAcVh_MvIOaKDY8AyBODw,11400
194
193
  fractal_server/tasks/v2/ssh/reactivate.py,sha256=8Rnbbny7TjMEAHhboqfgxBVZZK5UNNmh4Ud-0y3jaVM,7970
195
194
  fractal_server/tasks/v2/templates/1_create_venv.sh,sha256=PK0jdHKtQpda1zULebBaVPORt4t6V17wa4N1ohcj5ac,548
196
- fractal_server/tasks/v2/templates/2_pip_install.sh,sha256=Gpk2io8u9YaflFUlQu2NgkDQw5AA4m4AOVG1sB4yrHQ,1822
195
+ fractal_server/tasks/v2/templates/2_pip_install.sh,sha256=Md2LPt3BJ7IfN0USF2uivl4rP8OwbzJOUepGAr_Cicg,1836
197
196
  fractal_server/tasks/v2/templates/3_pip_freeze.sh,sha256=JldREScEBI4cD_qjfX4UK7V4aI-FnX9ZvVNxgpSOBFc,168
198
- fractal_server/tasks/v2/templates/4_pip_show.sh,sha256=84NGHlg6JIbrQktgGKyfGsggPFzy6RBJuOmIpPUhsrw,1747
197
+ fractal_server/tasks/v2/templates/4_pip_show.sh,sha256=qm1vPy6AkKhWDjCJGXS8LqCLYO3KsAyRK325ZsFcF6U,1747
199
198
  fractal_server/tasks/v2/templates/5_get_venv_size_and_file_number.sh,sha256=q-6ZUvA6w6FDVEoSd9O63LaJ9tKZc7qAFH72SGPrd_k,284
200
199
  fractal_server/tasks/v2/templates/6_pip_install_from_freeze.sh,sha256=A2y8RngEjAcRhG-_owA6P7tAdrS_AszFuGXnaeMV8u0,1122
201
200
  fractal_server/tasks/v2/utils_background.py,sha256=W_RvihI1aiYPJNsPo8z4wKuA_bPs0UT2huzLihRpjU4,4248
202
201
  fractal_server/tasks/v2/utils_database.py,sha256=iLbwkxMxTCgpyKe1JQzdfIR3zBfxohgmLwSdGps1AUo,1274
203
202
  fractal_server/tasks/v2/utils_package_names.py,sha256=RDg__xrvQs4ieeVzmVdMcEh95vGQYrv9Hfal-5EDBM8,2393
204
203
  fractal_server/tasks/v2/utils_python_interpreter.py,sha256=5_wrlrTqXyo1YuLZvAW9hrSoh5MyLOzdPVUlUwM7uDQ,955
205
- fractal_server/tasks/v2/utils_templates.py,sha256=07TZpJ0Mh_A4lXVXrrH2o1VLFFGwxeRumA6DdgMgCWk,2947
204
+ fractal_server/tasks/v2/utils_templates.py,sha256=Kc_nSzdlV6KIsO0CQSPs1w70zLyENPqJeTQEFiz4bOg,3124
206
205
  fractal_server/urls.py,sha256=QjIKAC1a46bCdiPMu3AlpgFbcv6a4l3ABcd5xz190Og,471
207
206
  fractal_server/utils.py,sha256=PMwrxWFxRTQRl1b9h-NRIbFGPKqpH_hXnkAT3NfZdpY,3571
208
207
  fractal_server/zip_tools.py,sha256=GjDgo_sf6V_DDg6wWeBlZu5zypIxycn_l257p_YVKGc,4876
209
- fractal_server-2.14.0a2.dist-info/LICENSE,sha256=QKAharUuhxL58kSoLizKJeZE3mTCBnX6ucmz8W0lxlk,1576
210
- fractal_server-2.14.0a2.dist-info/METADATA,sha256=t9JaZ6P-FKFHdGcvOagYEK-agbJKuVojh4CiE6pdFRc,4550
211
- fractal_server-2.14.0a2.dist-info/WHEEL,sha256=RaoafKOydTQ7I_I3JTrPCg6kUmTgtm4BornzOqyEfJ8,88
212
- fractal_server-2.14.0a2.dist-info/entry_points.txt,sha256=8tV2kynvFkjnhbtDnxAqImL6HMVKsopgGfew0DOp5UY,58
213
- fractal_server-2.14.0a2.dist-info/RECORD,,
208
+ fractal_server-2.14.0a4.dist-info/LICENSE,sha256=QKAharUuhxL58kSoLizKJeZE3mTCBnX6ucmz8W0lxlk,1576
209
+ fractal_server-2.14.0a4.dist-info/METADATA,sha256=dnHmj3wrxhQa2uhKzb4A9tJ2sSWtvj6kPEiTSO26NBQ,4550
210
+ fractal_server-2.14.0a4.dist-info/WHEEL,sha256=RaoafKOydTQ7I_I3JTrPCg6kUmTgtm4BornzOqyEfJ8,88
211
+ fractal_server-2.14.0a4.dist-info/entry_points.txt,sha256=8tV2kynvFkjnhbtDnxAqImL6HMVKsopgGfew0DOp5UY,58
212
+ fractal_server-2.14.0a4.dist-info/RECORD,,