fractal-server 2.12.1__py3-none-any.whl → 2.13.0__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/models/security.py +9 -12
  3. fractal_server/app/models/v2/dataset.py +2 -2
  4. fractal_server/app/models/v2/job.py +11 -9
  5. fractal_server/app/models/v2/task.py +2 -3
  6. fractal_server/app/models/v2/task_group.py +6 -2
  7. fractal_server/app/models/v2/workflowtask.py +15 -8
  8. fractal_server/app/routes/admin/v2/task.py +1 -1
  9. fractal_server/app/routes/admin/v2/task_group.py +1 -1
  10. fractal_server/app/routes/api/v2/dataset.py +4 -4
  11. fractal_server/app/routes/api/v2/images.py +11 -11
  12. fractal_server/app/routes/api/v2/project.py +2 -2
  13. fractal_server/app/routes/api/v2/status.py +1 -1
  14. fractal_server/app/routes/api/v2/submit.py +8 -6
  15. fractal_server/app/routes/api/v2/task.py +4 -2
  16. fractal_server/app/routes/api/v2/task_collection.py +3 -2
  17. fractal_server/app/routes/api/v2/task_group.py +2 -2
  18. fractal_server/app/routes/api/v2/workflow.py +3 -3
  19. fractal_server/app/routes/api/v2/workflow_import.py +3 -3
  20. fractal_server/app/routes/api/v2/workflowtask.py +3 -1
  21. fractal_server/app/routes/auth/_aux_auth.py +4 -1
  22. fractal_server/app/routes/auth/current_user.py +3 -5
  23. fractal_server/app/routes/auth/group.py +1 -1
  24. fractal_server/app/routes/auth/users.py +2 -4
  25. fractal_server/app/routes/aux/_runner.py +1 -1
  26. fractal_server/app/routes/aux/validate_user_settings.py +1 -2
  27. fractal_server/app/runner/executors/_job_states.py +13 -0
  28. fractal_server/app/runner/executors/slurm/_slurm_config.py +26 -18
  29. fractal_server/app/runner/executors/slurm/ssh/__init__.py +0 -3
  30. fractal_server/app/runner/executors/slurm/ssh/_executor_wait_thread.py +31 -22
  31. fractal_server/app/runner/executors/slurm/ssh/_slurm_job.py +2 -5
  32. fractal_server/app/runner/executors/slurm/ssh/executor.py +21 -27
  33. fractal_server/app/runner/executors/slurm/sudo/__init__.py +0 -3
  34. fractal_server/app/runner/executors/slurm/sudo/_check_jobs_status.py +1 -2
  35. fractal_server/app/runner/executors/slurm/sudo/_executor_wait_thread.py +37 -47
  36. fractal_server/app/runner/executors/slurm/sudo/executor.py +25 -24
  37. fractal_server/app/runner/v2/__init__.py +0 -9
  38. fractal_server/app/runner/v2/_local/_local_config.py +5 -4
  39. fractal_server/app/runner/v2/_slurm_common/get_slurm_config.py +4 -4
  40. fractal_server/app/runner/v2/_slurm_sudo/__init__.py +2 -2
  41. fractal_server/app/runner/v2/deduplicate_list.py +1 -1
  42. fractal_server/app/runner/v2/runner.py +9 -4
  43. fractal_server/app/runner/v2/task_interface.py +15 -7
  44. fractal_server/app/schemas/_filter_validators.py +6 -3
  45. fractal_server/app/schemas/_validators.py +7 -5
  46. fractal_server/app/schemas/user.py +23 -18
  47. fractal_server/app/schemas/user_group.py +25 -11
  48. fractal_server/app/schemas/user_settings.py +31 -24
  49. fractal_server/app/schemas/v2/dataset.py +48 -35
  50. fractal_server/app/schemas/v2/dumps.py +16 -14
  51. fractal_server/app/schemas/v2/job.py +49 -29
  52. fractal_server/app/schemas/v2/manifest.py +32 -28
  53. fractal_server/app/schemas/v2/project.py +18 -8
  54. fractal_server/app/schemas/v2/task.py +86 -75
  55. fractal_server/app/schemas/v2/task_collection.py +41 -30
  56. fractal_server/app/schemas/v2/task_group.py +39 -20
  57. fractal_server/app/schemas/v2/workflow.py +24 -12
  58. fractal_server/app/schemas/v2/workflowtask.py +63 -61
  59. fractal_server/app/security/__init__.py +1 -1
  60. fractal_server/config.py +32 -25
  61. fractal_server/images/models.py +18 -12
  62. fractal_server/main.py +1 -1
  63. fractal_server/tasks/v2/utils_background.py +1 -1
  64. fractal_server/tasks/v2/utils_database.py +1 -1
  65. {fractal_server-2.12.1.dist-info → fractal_server-2.13.0.dist-info}/METADATA +9 -10
  66. {fractal_server-2.12.1.dist-info → fractal_server-2.13.0.dist-info}/RECORD +69 -72
  67. fractal_server/app/runner/v2/_local_experimental/__init__.py +0 -121
  68. fractal_server/app/runner/v2/_local_experimental/_local_config.py +0 -108
  69. fractal_server/app/runner/v2/_local_experimental/_submit_setup.py +0 -42
  70. fractal_server/app/runner/v2/_local_experimental/executor.py +0 -157
  71. {fractal_server-2.12.1.dist-info → fractal_server-2.13.0.dist-info}/LICENSE +0 -0
  72. {fractal_server-2.12.1.dist-info → fractal_server-2.13.0.dist-info}/WHEEL +0 -0
  73. {fractal_server-2.12.1.dist-info → fractal_server-2.13.0.dist-info}/entry_points.txt +0 -0
fractal_server/config.py CHANGED
@@ -24,11 +24,12 @@ from typing import TypeVar
24
24
  from cryptography.fernet import Fernet
25
25
  from dotenv import load_dotenv
26
26
  from pydantic import BaseModel
27
- from pydantic import BaseSettings
28
27
  from pydantic import EmailStr
29
28
  from pydantic import Field
30
- from pydantic import root_validator
31
- from pydantic import validator
29
+ from pydantic import field_validator
30
+ from pydantic import model_validator
31
+ from pydantic_settings import BaseSettings
32
+ from pydantic_settings import SettingsConfigDict
32
33
  from sqlalchemy.engine import URL
33
34
 
34
35
  import fractal_server
@@ -50,7 +51,7 @@ class MailSettings(BaseModel):
50
51
  """
51
52
 
52
53
  sender: EmailStr
53
- recipients: list[EmailStr] = Field(min_items=1)
54
+ recipients: list[EmailStr] = Field(min_length=1)
54
55
  smtp_server: str
55
56
  port: int
56
57
  encrypted_password: Optional[str] = None
@@ -97,10 +98,11 @@ class OAuthClientConfig(BaseModel):
97
98
  CLIENT_NAME: str
98
99
  CLIENT_ID: str
99
100
  CLIENT_SECRET: str
100
- OIDC_CONFIGURATION_ENDPOINT: Optional[str]
101
+ OIDC_CONFIGURATION_ENDPOINT: Optional[str] = None
101
102
  REDIRECT_URL: Optional[str] = None
102
103
 
103
- @root_validator
104
+ @model_validator(mode="before")
105
+ @classmethod
104
106
  def check_configuration(cls, values):
105
107
  if values.get("CLIENT_NAME") not in ["GOOGLE", "GITHUB"]:
106
108
  if not values.get("OIDC_CONFIGURATION_ENDPOINT"):
@@ -118,8 +120,7 @@ class Settings(BaseSettings):
118
120
  The attributes of this class are set from the environment.
119
121
  """
120
122
 
121
- class Config:
122
- case_sensitive = True
123
+ model_config = SettingsConfigDict(case_sensitive=True)
123
124
 
124
125
  PROJECT_NAME: str = "Fractal Server"
125
126
  PROJECT_VERSION: str = fractal_server.__VERSION__
@@ -136,7 +137,7 @@ class Settings(BaseSettings):
136
137
  JWT token lifetime, in seconds.
137
138
  """
138
139
 
139
- JWT_SECRET_KEY: Optional[str]
140
+ JWT_SECRET_KEY: Optional[str] = None
140
141
  """
141
142
  JWT secret
142
143
 
@@ -150,7 +151,8 @@ class Settings(BaseSettings):
150
151
  Cookie token lifetime, in seconds.
151
152
  """
152
153
 
153
- @root_validator(pre=True)
154
+ @model_validator(mode="before")
155
+ @classmethod
154
156
  def collect_oauth_clients(cls, values):
155
157
  """
156
158
  Automatic collection of OAuth Clients
@@ -198,11 +200,11 @@ class Settings(BaseSettings):
198
200
  """
199
201
  If `True`, make database operations verbose.
200
202
  """
201
- POSTGRES_USER: Optional[str]
203
+ POSTGRES_USER: Optional[str] = None
202
204
  """
203
205
  User to use when connecting to the PostgreSQL database.
204
206
  """
205
- POSTGRES_PASSWORD: Optional[str]
207
+ POSTGRES_PASSWORD: Optional[str] = None
206
208
  """
207
209
  Password to use when connecting to the PostgreSQL database.
208
210
  """
@@ -214,7 +216,7 @@ class Settings(BaseSettings):
214
216
  """
215
217
  Port number to use when connecting to the PostgreSQL server.
216
218
  """
217
- POSTGRES_DB: Optional[str]
219
+ POSTGRES_DB: Optional[str] = None
218
220
  """
219
221
  Name of the PostgreSQL database to connect to.
220
222
  """
@@ -266,13 +268,14 @@ class Settings(BaseSettings):
266
268
  default admin credentials.
267
269
  """
268
270
 
269
- FRACTAL_TASKS_DIR: Optional[Path]
271
+ FRACTAL_TASKS_DIR: Optional[Path] = None
270
272
  """
271
273
  Directory under which all the tasks will be saved (either an absolute path
272
274
  or a path relative to current working directory).
273
275
  """
274
276
 
275
- @validator("FRACTAL_TASKS_DIR", always=True)
277
+ @field_validator("FRACTAL_TASKS_DIR")
278
+ @classmethod
276
279
  def make_FRACTAL_TASKS_DIR_absolute(cls, v):
277
280
  """
278
281
  If `FRACTAL_TASKS_DIR` is a non-absolute path, make it absolute (based
@@ -289,7 +292,8 @@ class Settings(BaseSettings):
289
292
  )
290
293
  return FRACTAL_TASKS_DIR_path
291
294
 
292
- @validator("FRACTAL_RUNNER_WORKING_BASE_DIR", always=True)
295
+ @field_validator("FRACTAL_RUNNER_WORKING_BASE_DIR")
296
+ @classmethod
293
297
  def make_FRACTAL_RUNNER_WORKING_BASE_DIR_absolute(cls, v):
294
298
  """
295
299
  (Copy of make_FRACTAL_TASKS_DIR_absolute)
@@ -312,7 +316,6 @@ class Settings(BaseSettings):
312
316
 
313
317
  FRACTAL_RUNNER_BACKEND: Literal[
314
318
  "local",
315
- "local_experimental",
316
319
  "slurm",
317
320
  "slurm_ssh",
318
321
  ] = "local"
@@ -320,7 +323,7 @@ class Settings(BaseSettings):
320
323
  Select which runner backend to use.
321
324
  """
322
325
 
323
- FRACTAL_RUNNER_WORKING_BASE_DIR: Optional[Path]
326
+ FRACTAL_RUNNER_WORKING_BASE_DIR: Optional[Path] = None
324
327
  """
325
328
  Base directory for running jobs / workflows. All artifacts required to set
326
329
  up, run and tear down jobs are placed in subdirs of this directory.
@@ -333,7 +336,7 @@ class Settings(BaseSettings):
333
336
  Only logs of with this level (or higher) will appear in the console logs.
334
337
  """
335
338
 
336
- FRACTAL_LOCAL_CONFIG_FILE: Optional[Path]
339
+ FRACTAL_LOCAL_CONFIG_FILE: Optional[Path] = None
337
340
  """
338
341
  Path of JSON file with configuration for the local backend.
339
342
  """
@@ -349,7 +352,7 @@ class Settings(BaseSettings):
349
352
  Waiting time for the shutdown phase of executors
350
353
  """
351
354
 
352
- FRACTAL_SLURM_CONFIG_FILE: Optional[Path]
355
+ FRACTAL_SLURM_CONFIG_FILE: Optional[Path] = None
353
356
  """
354
357
  Path of JSON file with configuration for the SLURM backend.
355
358
  """
@@ -360,7 +363,8 @@ class Settings(BaseSettings):
360
363
  nodes. If not specified, the same interpreter that runs the server is used.
361
364
  """
362
365
 
363
- @validator("FRACTAL_SLURM_WORKER_PYTHON", always=True)
366
+ @field_validator("FRACTAL_SLURM_WORKER_PYTHON")
367
+ @classmethod
364
368
  def absolute_FRACTAL_SLURM_WORKER_PYTHON(cls, v):
365
369
  """
366
370
  If `FRACTAL_SLURM_WORKER_PYTHON` is a relative path, fail.
@@ -407,7 +411,8 @@ class Settings(BaseSettings):
407
411
  Same as `FRACTAL_TASKS_PYTHON_3_9`, for Python 3.12.
408
412
  """
409
413
 
410
- @root_validator(pre=True)
414
+ @model_validator(mode="before")
415
+ @classmethod
411
416
  def check_tasks_python(cls, values):
412
417
  """
413
418
  Perform multiple checks of the Python-interpreter variables.
@@ -511,7 +516,8 @@ class Settings(BaseSettings):
511
516
  `--no-cache-dir` is used.
512
517
  """
513
518
 
514
- @validator("FRACTAL_PIP_CACHE_DIR", always=True)
519
+ @field_validator("FRACTAL_PIP_CACHE_DIR")
520
+ @classmethod
515
521
  def absolute_FRACTAL_PIP_CACHE_DIR(cls, v):
516
522
  """
517
523
  If `FRACTAL_PIP_CACHE_DIR` is a relative path, fail.
@@ -615,7 +621,8 @@ class Settings(BaseSettings):
615
621
  """
616
622
  email_settings: Optional[MailSettings] = None
617
623
 
618
- @root_validator(pre=True)
624
+ @model_validator(mode="before")
625
+ @classmethod
619
626
  def validate_email_settings(cls, values):
620
627
  email_values = {
621
628
  k: v for k, v in values.items() if k.startswith("FRACTAL_EMAIL")
@@ -794,7 +801,7 @@ class Settings(BaseSettings):
794
801
  return False
795
802
 
796
803
  sanitized_settings = {}
797
- for k, v in self.dict().items():
804
+ for k, v in self.model_dump().items():
798
805
  if _must_be_sanitized(k):
799
806
  sanitized_settings[k] = "***"
800
807
  else:
@@ -4,7 +4,7 @@ from typing import Union
4
4
 
5
5
  from pydantic import BaseModel
6
6
  from pydantic import Field
7
- from pydantic import validator
7
+ from pydantic import field_validator
8
8
 
9
9
  from fractal_server.app.schemas._validators import valdict_keys
10
10
  from fractal_server.urls import normalize_url
@@ -30,16 +30,18 @@ class _SingleImageBase(BaseModel):
30
30
  types: dict[str, bool] = Field(default_factory=dict)
31
31
 
32
32
  # Validators
33
- _attributes = validator("attributes", allow_reuse=True)(
34
- valdict_keys("attributes")
33
+ _attributes = field_validator("attributes")(
34
+ classmethod(valdict_keys("attributes"))
35
35
  )
36
- _types = validator("types", allow_reuse=True)(valdict_keys("types"))
36
+ _types = field_validator("types")(classmethod(valdict_keys("types")))
37
37
 
38
- @validator("zarr_url")
38
+ @field_validator("zarr_url")
39
+ @classmethod
39
40
  def normalize_zarr_url(cls, v: str) -> str:
40
41
  return normalize_url(v)
41
42
 
42
- @validator("origin")
43
+ @field_validator("origin")
44
+ @classmethod
43
45
  def normalize_orig(cls, v: Optional[str]) -> Optional[str]:
44
46
  if v is not None:
45
47
  return normalize_url(v)
@@ -50,7 +52,8 @@ class SingleImageTaskOutput(_SingleImageBase):
50
52
  `SingleImageBase`, with scalar `attributes` values (`None` included).
51
53
  """
52
54
 
53
- @validator("attributes")
55
+ @field_validator("attributes")
56
+ @classmethod
54
57
  def validate_attributes(
55
58
  cls, v: dict[str, Any]
56
59
  ) -> dict[str, Union[int, float, str, bool, None]]:
@@ -69,7 +72,8 @@ class SingleImage(_SingleImageBase):
69
72
  `SingleImageBase`, with scalar `attributes` values (`None` excluded).
70
73
  """
71
74
 
72
- @validator("attributes")
75
+ @field_validator("attributes")
76
+ @classmethod
73
77
  def validate_attributes(
74
78
  cls, v: dict[str, Any]
75
79
  ) -> dict[str, Union[int, float, str, bool]]:
@@ -87,17 +91,19 @@ class SingleImageUpdate(BaseModel):
87
91
  attributes: Optional[dict[str, Any]] = None
88
92
  types: Optional[dict[str, bool]] = None
89
93
 
90
- @validator("zarr_url")
94
+ @field_validator("zarr_url")
95
+ @classmethod
91
96
  def normalize_zarr_url(cls, v: str) -> str:
92
97
  return normalize_url(v)
93
98
 
94
- @validator("attributes")
99
+ @field_validator("attributes")
100
+ @classmethod
95
101
  def validate_attributes(
96
102
  cls, v: dict[str, Any]
97
103
  ) -> dict[str, Union[int, float, str, bool]]:
98
104
  if v is not None:
99
105
  # validate keys
100
- valdict_keys("attributes")(v)
106
+ valdict_keys("attributes")(cls, v)
101
107
  # validate values
102
108
  for key, value in v.items():
103
109
  if not isinstance(value, (int, float, str, bool)):
@@ -108,4 +114,4 @@ class SingleImageUpdate(BaseModel):
108
114
  )
109
115
  return v
110
116
 
111
- _types = validator("types", allow_reuse=True)(valdict_keys("types"))
117
+ _types = field_validator("types")(classmethod(valdict_keys("types")))
fractal_server/main.py CHANGED
@@ -67,7 +67,7 @@ def check_settings() -> None:
67
67
 
68
68
  logger = set_logger("fractal_server_settings")
69
69
  logger.debug("Fractal Settings:")
70
- for key, value in settings.dict().items():
70
+ for key, value in settings.model_dump().items():
71
71
  if any(s in key.upper() for s in ["PASSWORD", "SECRET", "KEY"]):
72
72
  value = "*****"
73
73
  logger.debug(f" {key}: {value}")
@@ -106,7 +106,7 @@ def _prepare_tasks_metadata(
106
106
  ] = f"{python_bin.as_posix()} {parallel_path.as_posix()}"
107
107
  # Create object
108
108
  task_obj = TaskCreateV2(
109
- **_task.dict(
109
+ **_task.model_dump(
110
110
  exclude={
111
111
  "executable_non_parallel",
112
112
  "executable_parallel",
@@ -33,7 +33,7 @@ def create_db_tasks_and_update_task_group(
33
33
  """
34
34
  actual_task_list = [
35
35
  TaskV2(
36
- **task.dict(),
36
+ **task.model_dump(),
37
37
  type=_get_task_type(task),
38
38
  )
39
39
  for task in task_list
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: fractal-server
3
- Version: 2.12.1
3
+ Version: 2.13.0
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
@@ -13,22 +13,21 @@ Classifier: Programming Language :: Python :: 3.10
13
13
  Classifier: Programming Language :: Python :: 3.11
14
14
  Classifier: Programming Language :: Python :: 3.12
15
15
  Requires-Dist: alembic (>=1.13.1,<2.0.0)
16
- Requires-Dist: cloudpickle (>=3.0.0,<3.1.0)
17
- Requires-Dist: clusterfutures (==0.5)
18
- Requires-Dist: cryptography (>=44.0.0,<44.1.0)
16
+ Requires-Dist: cloudpickle (>=3.1.0,<3.2.0)
17
+ Requires-Dist: cryptography (>=44.0.1,<44.1.0)
19
18
  Requires-Dist: fabric (>=3.2.2,<3.3.0)
20
19
  Requires-Dist: fastapi (>=0.115.0,<0.116.0)
21
20
  Requires-Dist: fastapi-users[oauth] (>=14,<15)
22
- Requires-Dist: gunicorn (>=21.2,<23.0)
23
- Requires-Dist: packaging (>=23.2.0,<24.0.0)
24
- Requires-Dist: psutil (==5.9.8)
21
+ Requires-Dist: gunicorn (>=23.0,<24.0)
22
+ Requires-Dist: packaging (>=24.0.0,<25.0.0)
25
23
  Requires-Dist: psycopg[binary] (>=3.1.0,<4.0.0)
26
- Requires-Dist: pydantic (>=1.10.8,<2)
24
+ Requires-Dist: pydantic (>=2.10.0,<2.11.0)
25
+ Requires-Dist: pydantic-settings (>=2.7.0)
27
26
  Requires-Dist: python-dotenv (>=1.0.0,<1.1.0)
28
27
  Requires-Dist: sqlalchemy[asyncio] (>=2.0.23,<2.1)
29
- Requires-Dist: sqlmodel (==0.0.21)
28
+ Requires-Dist: sqlmodel (==0.0.22)
30
29
  Requires-Dist: uvicorn (>=0.29.0,<0.35.0)
31
- Requires-Dist: uvicorn-worker (==0.2.0)
30
+ Requires-Dist: uvicorn-worker (==0.3.0)
32
31
  Project-URL: Documentation, https://fractal-analytics-platform.github.io/fractal-server
33
32
  Project-URL: Repository, https://github.com/fractal-analytics-platform/fractal-server
34
33
  Project-URL: changelog, https://github.com/fractal-analytics-platform/fractal-server/blob/main/CHANGELOG.md
@@ -1,4 +1,4 @@
1
- fractal_server/__init__.py,sha256=xmnpQEc5CF2JQ6rKqQzxa_0Lpy_QA2cHgLGOu73fTGo,23
1
+ fractal_server/__init__.py,sha256=9ob5spirSIHc6BZ8Gib1GW_SY2DX0L2EX7f1ZzmBmCE,23
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
@@ -6,74 +6,75 @@ fractal_server/app/db/__init__.py,sha256=wup2wcOkyOh8Vd0Xm76PZn_naxeMqaL4eF8DHHX
6
6
  fractal_server/app/models/__init__.py,sha256=xJWiGAwpXmCpnFMC4c_HTqoUCzMOXrakoGLUH_uMvdA,415
7
7
  fractal_server/app/models/linkusergroup.py,sha256=LWTUfhH2uAnn_4moK7QdRUIHWtpw-hPZuW-5jClv_OE,610
8
8
  fractal_server/app/models/linkuserproject.py,sha256=hvaxh3Lkiy2uUCwB8gvn8RorCpvxSSdzWdCS_U1GL7g,315
9
- fractal_server/app/models/security.py,sha256=kLvarGwG1CxvtbpV2HkkOobzHU5Ia0PHyNzHghKSEx4,3751
9
+ fractal_server/app/models/security.py,sha256=mMb_HiwWY74QZrs9xuyno0CVSmk4GYQWk5FxGixr8SU,3860
10
10
  fractal_server/app/models/user_settings.py,sha256=Y-ZV-uZAFLZqXxy8c5_Qeh_F7zQuZDWOgLpU6Zs6iqU,1316
11
11
  fractal_server/app/models/v2/__init__.py,sha256=63THGEZQlxWcosGCI74SEvJU7wOoOn1j1byTjf4NFOI,526
12
- fractal_server/app/models/v2/dataset.py,sha256=RuqTHXWEgs4A3OSk8Pq9DTq9Xr7w1IJNnyXhOzrDiR0,1509
13
- fractal_server/app/models/v2/job.py,sha256=BMmu5oXdZvN7jEIAMZvQMB3PQBcCYzxn6Qm6HdRWre4,1725
12
+ fractal_server/app/models/v2/dataset.py,sha256=O5_6YfNeX6JM7PUcEZhbeV4JCvuAhFCQbOOuefpVnqc,1544
13
+ fractal_server/app/models/v2/job.py,sha256=L0P1mrztMqqb-6qdPEbuHXhCsf2mxVUct_ehcXrREGg,1844
14
14
  fractal_server/app/models/v2/project.py,sha256=rAHoh5KfYwIaW7rTX0_O0jvWmxEvfo1BafvmcXuSSRk,786
15
- fractal_server/app/models/v2/task.py,sha256=jebD28Pz8tGcsWCItxj6uKjcD8BMMnnU8dqYhvhEB6c,1520
16
- fractal_server/app/models/v2/task_group.py,sha256=Sd-fb7EN18eOxrS-RT4ekczLWp-tQcbX5C4LrcmjoIM,3443
15
+ fractal_server/app/models/v2/task.py,sha256=8KEROaadgccXRZIP7EriBp2j1FgzYkgiirOi5_fG79M,1494
16
+ fractal_server/app/models/v2/task_group.py,sha256=f-JiqAQAmXP2LOVKQM7Yq3qcEjI1KA-HFYsyLpBASGs,3499
17
17
  fractal_server/app/models/v2/workflow.py,sha256=YBgFGCziUgU0aJ5EM3Svu9W2c46AewZO9VBlFCHiSps,1069
18
- fractal_server/app/models/v2/workflowtask.py,sha256=sBnKiEx9KqhprUaZVY6R8lyfCdwRaX8obYm6bXdn6_E,1119
18
+ fractal_server/app/models/v2/workflowtask.py,sha256=919L2jCm9y57MXiezGBb28uiXpxyiSHwA_DkDF9OVjg,1226
19
19
  fractal_server/app/routes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
20
  fractal_server/app/routes/admin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
21
  fractal_server/app/routes/admin/v2/__init__.py,sha256=KYrw0COmmMuIMp7c6YcYRXah4tEYplCWeROnPK1VTeg,681
22
22
  fractal_server/app/routes/admin/v2/job.py,sha256=cbkFIRIIXaWmNsUFI7RAu8HpQ0mWn_bgoxtvWZxr-IA,7624
23
23
  fractal_server/app/routes/admin/v2/project.py,sha256=luy-yiGX1JYTdPm1hpIdDUUqPm8xHuipLy9k2X6zu74,1223
24
- fractal_server/app/routes/admin/v2/task.py,sha256=gShC2EAOYa0qTB69EXTDXz5Y375QoarOLv9T9vfntAE,4368
25
- fractal_server/app/routes/admin/v2/task_group.py,sha256=DncrOAB4q-v3BAmxg35m4EohleriW_FLGE5gpW_Or08,8120
24
+ 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
26
26
  fractal_server/app/routes/admin/v2/task_group_lifecycle.py,sha256=0e0ZJ_k75TVHaT2o8Xk33DPDSgh-eBhZf-y4y7t-Adg,9429
27
27
  fractal_server/app/routes/api/__init__.py,sha256=2IDheFi0OFdsUg7nbUiyahqybvpgXqeHUXIL2QtWrQQ,641
28
28
  fractal_server/app/routes/api/v2/__init__.py,sha256=w4c9WzagaVV5d4TWBX5buu5ENk8jf3YftMQYmhavz9Q,2172
29
29
  fractal_server/app/routes/api/v2/_aux_functions.py,sha256=NJ6_1biN_hhIEK1w8Vj6XhLmdkQ5kMVd_MX5JC_nHLU,11524
30
30
  fractal_server/app/routes/api/v2/_aux_functions_task_lifecycle.py,sha256=c8eqPXdMhc3nIixX50B1Ka5n7LgbOZm2JbEs7lICQ04,6767
31
31
  fractal_server/app/routes/api/v2/_aux_functions_tasks.py,sha256=uhNSs-jcS7ndIUFKiOC1yrDiViw3uvKEXi9UL04BMks,11642
32
- fractal_server/app/routes/api/v2/dataset.py,sha256=Y6uZz--YSEGgnPYu05rZ9sr1Ug08bNl2v1h3VeApBe8,9441
33
- fractal_server/app/routes/api/v2/images.py,sha256=LjAl0m4blWHda9rW_30MPYipEzU_JH6uhMf91X6CfWE,8478
32
+ fractal_server/app/routes/api/v2/dataset.py,sha256=tyZjoncjzWd3Bl3t1vBFNMIY1FVo0z23aagdFlNKX0Q,9465
33
+ fractal_server/app/routes/api/v2/images.py,sha256=32sSDSWri_A8uQHcdbVTPvGGEjj9vk5ILj8q0-2jLX8,8507
34
34
  fractal_server/app/routes/api/v2/job.py,sha256=m89FTh9Px25oXCeWj2k2NdGWQaO2oxMh-6lZppcsJOY,5551
35
- fractal_server/app/routes/api/v2/project.py,sha256=eWYFJ7F2ZYQcpi-_n-rhPF-Q4gJhzYBsVGYFhHZZXAE,6653
36
- fractal_server/app/routes/api/v2/status.py,sha256=_cDZW-ESYw6zpf-lLFFqko5bLpKhqKrCM6yv1OfqxN4,6300
37
- fractal_server/app/routes/api/v2/submit.py,sha256=UMPhWwk4FqZmYtVEu6WLPkSr6a2R4wwgPPeVrx0zRME,8622
38
- fractal_server/app/routes/api/v2/task.py,sha256=K0ik33t7vL8BAK5S7fqyJDNdRK4stGqb_73bSa8tvPE,7159
39
- fractal_server/app/routes/api/v2/task_collection.py,sha256=9p8w9UnN6RFszC1ohy9Uo3I4HIMVdfD8fYGWuQqzxMU,12682
35
+ 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
38
+ fractal_server/app/routes/api/v2/task.py,sha256=z3_SxsXoKsbM9GGNJUdIiZisQwAJSBqvCc7thaJIOTU,7191
39
+ fractal_server/app/routes/api/v2/task_collection.py,sha256=IDNF6sjDuU37HIQ0TuQA-TZIuf7nfHAQXUUNmkrlhLM,12706
40
40
  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=4o2N0z7jK7VUVlJZMM4GveCCc4JKxYJx9-PMmsYIlJQ,8256
41
+ fractal_server/app/routes/api/v2/task_group.py,sha256=LjX2X1sfqr3xlqhH8lfJmFG5ecpEzK_jCV548pU7s24,8268
42
42
  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=P8KfngooIRHu3QyNIKMOngERztZRuBbQGVsT2ow2550,11671
44
- fractal_server/app/routes/api/v2/workflow_import.py,sha256=DHoHZvxndJQav6l_p5JJW9c9pSRlMEm7bv62h0M5evI,11187
45
- fractal_server/app/routes/api/v2/workflowtask.py,sha256=coYBy-21CbJNIkpmwC84BtPTw3r4DYBrBwaFWiM0dJA,11335
43
+ fractal_server/app/routes/api/v2/workflow.py,sha256=Z71EI_WdLnaI0Z5OXy9RaAk_0xN9EHkhR5qieLtM8t0,11689
44
+ 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
46
46
  fractal_server/app/routes/auth/__init__.py,sha256=fao6CS0WiAjHDTvBzgBVV_bSXFpEAeDBF6Z6q7rRkPc,1658
47
- fractal_server/app/routes/auth/_aux_auth.py,sha256=ifkNocTYatBSMYGwiR14qohmvR9SfMldceiEj6uJBrU,4783
48
- fractal_server/app/routes/auth/current_user.py,sha256=I3aVY5etWAJ_SH6t65Mj5TjvB2X8sAGuu1KG7FxLyPU,5883
49
- fractal_server/app/routes/auth/group.py,sha256=EBwR-eiTfHSZUbsbrhjKTWTiwPkGPLFYhuHi7ifDbfY,8358
47
+ fractal_server/app/routes/auth/_aux_auth.py,sha256=UZgauY0V6mSqjte_sYI1cBl2h8bcbLaeWzgpl1jdJlk,4883
48
+ fractal_server/app/routes/auth/current_user.py,sha256=FUegTahlxT3BdPVCQYir0-ogg2YAaZ1DYuLcE_5NC9Y,5906
49
+ fractal_server/app/routes/auth/group.py,sha256=EblxNVNTiPQj82eMaxNxf3OqoAbRLOExxCnm1-8C-k0,8364
50
50
  fractal_server/app/routes/auth/login.py,sha256=tSu6OBLOieoBtMZB4JkBAdEgH2Y8KqPGSbwy7NIypIo,566
51
51
  fractal_server/app/routes/auth/oauth.py,sha256=AnFHbjqL2AgBX3eksI931xD6RTtmbciHBEuGf9YJLjU,1895
52
52
  fractal_server/app/routes/auth/register.py,sha256=DlHq79iOvGd_gt2v9uwtsqIKeO6i_GKaW59VIkllPqY,587
53
53
  fractal_server/app/routes/auth/router.py,sha256=tzJrygXFZlmV_uWelVqTOJMEH-3Fr7ydwlgx1LxRjxY,527
54
- fractal_server/app/routes/auth/users.py,sha256=kZv-Ls224WBFiuvVeM584LhYq_BLz6HQ9HpWbWQxRRM,7808
54
+ fractal_server/app/routes/auth/users.py,sha256=Zr1Bsa7Hpricb_1uFwKPCtgt3PzGnP0TaMLMdpbQDNs,7825
55
55
  fractal_server/app/routes/aux/__init__.py,sha256=LR4bR7RunHAK6jc9IR2bReQd-BdXADdnDccXI4uGeGY,731
56
56
  fractal_server/app/routes/aux/_job.py,sha256=XWyWpOObcV55YyK7uzGRlaslmPDCBZy4hiSZBpoa_bg,616
57
- fractal_server/app/routes/aux/_runner.py,sha256=FdCVla5DxGAZ__aB7Z8dEJzD_RIeh5tftjrPyqkr8N8,895
58
- fractal_server/app/routes/aux/validate_user_settings.py,sha256=Y8eubau0julkwVYB5nA83nDtxh_7RU9Iq0zAhb_dXLA,2351
57
+ fractal_server/app/routes/aux/_runner.py,sha256=spNudutueHTBJPhm55RlOuYzb31DhyheSjl2rk6dloM,873
58
+ fractal_server/app/routes/aux/validate_user_settings.py,sha256=FLVi__8YFcm_6c_K5uMQo7raWWXQLBcZtx8yaPO4jaE,2301
59
59
  fractal_server/app/runner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
60
60
  fractal_server/app/runner/components.py,sha256=ZF8ct_Ky5k8IAcrmpYOZ-bc6OBgdELEighYVqFDEbZg,119
61
61
  fractal_server/app/runner/compress_folder.py,sha256=HSc1tv7x2DBjBoXwugZlC79rm9GNBIWtQKK9yWn5ZBI,3991
62
62
  fractal_server/app/runner/exceptions.py,sha256=_qZ_t8O4umAdJ1ikockiF5rDJuxnEskrGrLjZcnQl7A,4159
63
63
  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
64
65
  fractal_server/app/runner/executors/slurm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
65
66
  fractal_server/app/runner/executors/slurm/_batching.py,sha256=3mfeFuYm3UA4EXh4VWuqZTF-dcINECZgTHoPOaOszDo,8840
66
- fractal_server/app/runner/executors/slurm/_slurm_config.py,sha256=Qa5UgcMZfYEj95dMA5GF3WgNx8zQ_XH6ufNYYmhI4rs,15684
67
+ fractal_server/app/runner/executors/slurm/_slurm_config.py,sha256=8iZW8VdK0xvI9wZtXjRIlgnoI8hPmCqgcuX-IWIY18g,15866
67
68
  fractal_server/app/runner/executors/slurm/remote.py,sha256=wLziIsGdSMiO-jIXM8x77JRK82g_2hx0iBKTiMghuIo,5852
68
- fractal_server/app/runner/executors/slurm/ssh/__init__.py,sha256=Cjn1rYvljddi96tAwS-qqGkNfOcfPzjChdaEZEObCcM,65
69
- fractal_server/app/runner/executors/slurm/ssh/_executor_wait_thread.py,sha256=bKo5Ja0IGxJWpPWyh9dN0AG-PwzTDZzD5LyaEHB3YU4,3742
70
- fractal_server/app/runner/executors/slurm/ssh/_slurm_job.py,sha256=rWPE_sZUNCMw5IWvZo9N1hlzoiasYoddS-wlBj4wMU4,4449
71
- fractal_server/app/runner/executors/slurm/ssh/executor.py,sha256=eX-HPmb6gDy2WLBn5llF-Pb6U10_gTtIE09wT7rHF7w,53862
72
- fractal_server/app/runner/executors/slurm/sudo/__init__.py,sha256=Cjn1rYvljddi96tAwS-qqGkNfOcfPzjChdaEZEObCcM,65
73
- fractal_server/app/runner/executors/slurm/sudo/_check_jobs_status.py,sha256=wAgwpVcr6JIslKHOuS0FhRa_6T1KCManyRJqA-fifzw,1909
74
- fractal_server/app/runner/executors/slurm/sudo/_executor_wait_thread.py,sha256=uRRyVHQtK9McHCB6OsjYfDnQsu2E8At9K_UYb_pe2pg,4682
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
75
76
  fractal_server/app/runner/executors/slurm/sudo/_subprocess_run_as_user.py,sha256=g8wqUjSicN17UZVXlfaMomYZ-xOIbBu1oE7HdJTzfvw,5218
76
- fractal_server/app/runner/executors/slurm/sudo/executor.py,sha256=Z5lcyXOr9LNz1yFEHlu7StAIpZdK2BkiUZbX6Fh7QVY,48513
77
+ fractal_server/app/runner/executors/slurm/sudo/executor.py,sha256=3V0u3d5IMDoVSxkk76FVz7857iix1Sfi2VVi6aI2O5U,48559
77
78
  fractal_server/app/runner/executors/slurm/utils_executors.py,sha256=naPyJI0I3lD-sYHbSXbMFGUBK4h_SggA5V91Z1Ch1Xg,1416
78
79
  fractal_server/app/runner/extract_archive.py,sha256=tLpjDrX47OjTNhhoWvm6iNukg8KoieWyTb7ZfvE9eWU,2483
79
80
  fractal_server/app/runner/filenames.py,sha256=lPnxKHtdRizr6FqG3zOdjDPyWA7GoaJGTtiuJV0gA8E,70
@@ -81,59 +82,55 @@ fractal_server/app/runner/run_subprocess.py,sha256=c3JbYXq3hX2aaflQU19qJ5Xs6J6oX
81
82
  fractal_server/app/runner/set_start_and_last_task_index.py,sha256=-q4zVybAj8ek2XlbENKlfOAJ39hT_zoJoZkqzDqiAMY,1254
82
83
  fractal_server/app/runner/shutdown.py,sha256=9pfSKHDNdIcm0eY-opgRTi7y0HmvfPmYiu9JR6Idark,2082
83
84
  fractal_server/app/runner/task_files.py,sha256=sd_MpJ01C8c9QTO8GzGMidFGdlq_hXX_ARDRhd_YMnI,3762
84
- fractal_server/app/runner/v2/__init__.py,sha256=1V4uocFaZQAQ1f01UEV8XjXo_9gNjiWgchsHfsm_TZM,15229
85
+ fractal_server/app/runner/v2/__init__.py,sha256=hA5WyFh1GI2p56D86tf-8BFE9Dcj8f4Ua-X0XTbJIfQ,14770
85
86
  fractal_server/app/runner/v2/_local/__init__.py,sha256=QnQ9jfqpzShzjp6H7rfVx9Sqp03J1JB6fCpwNx2MDOw,5119
86
- fractal_server/app/runner/v2/_local/_local_config.py,sha256=9oi209Dlp35ANfxb_DISqmMKKc6DPaMsmYVWbZLseME,3630
87
+ fractal_server/app/runner/v2/_local/_local_config.py,sha256=L54CYrkCyzwgUUra-YhnYR7fy2nyMl6GGu3-4hjoZ4U,3653
87
88
  fractal_server/app/runner/v2/_local/_submit_setup.py,sha256=MucNOo8Er0F5ZIwH7CnTeXgnFMc6d3pKPkv563QNVi0,1630
88
89
  fractal_server/app/runner/v2/_local/executor.py,sha256=QrJlD77G6q4WohoJQO7XXbvi2RlCUsNvMnPDEZIoAqA,3620
89
- fractal_server/app/runner/v2/_local_experimental/__init__.py,sha256=d-9NkwoeUtvV7l_-7CUzmxgYQxMcyoK1-CrVcoyPgs8,4840
90
- fractal_server/app/runner/v2/_local_experimental/_local_config.py,sha256=QiS5ODe-iGmUQdIT8QgpbyMc7-ZpIRv1V_f2q3qfPQ8,3211
91
- fractal_server/app/runner/v2/_local_experimental/_submit_setup.py,sha256=we7r-sQf0CJ9gxbfbgHcYdC6pKjx8eXweljIjthxkv8,1212
92
- fractal_server/app/runner/v2/_local_experimental/executor.py,sha256=plvEqqdcXOSohYsQoykYlyDwCING7OO5h-4XAZtwdPs,5503
93
90
  fractal_server/app/runner/v2/_slurm_common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
94
- fractal_server/app/runner/v2/_slurm_common/get_slurm_config.py,sha256=UdkoFF0HF_TdKbay-d9bjkxT2ltcOE5i8H_FoOu64HU,6202
91
+ fractal_server/app/runner/v2/_slurm_common/get_slurm_config.py,sha256=21Tl70L8oyo3H_r0vXW6KO9pq2IKEiV5ZkshsPsBjzI,6226
95
92
  fractal_server/app/runner/v2/_slurm_ssh/__init__.py,sha256=wDW58jBPcmOUeBMcuaOqTz1ElEqiyQn9ar7zp2xCPX4,3274
96
93
  fractal_server/app/runner/v2/_slurm_ssh/_submit_setup.py,sha256=a5_FDPH_yxYmrjAjMRLgh_Y4DSG3mRslCLQodGM3-t4,2838
97
- fractal_server/app/runner/v2/_slurm_sudo/__init__.py,sha256=8n2ezm74PEpijjLi92SO60GZ7AMixX1zWsAtx9qoqio,2913
94
+ fractal_server/app/runner/v2/_slurm_sudo/__init__.py,sha256=16P_3nDRtXztBf0-JOZzNmpnp164kgzRTADaLX733NI,2921
98
95
  fractal_server/app/runner/v2/_slurm_sudo/_submit_setup.py,sha256=a5_FDPH_yxYmrjAjMRLgh_Y4DSG3mRslCLQodGM3-t4,2838
99
- fractal_server/app/runner/v2/deduplicate_list.py,sha256=-imwO7OB7ATADEnqVbTElUwoY0YIJCTf_SbWJNN9OZg,639
96
+ fractal_server/app/runner/v2/deduplicate_list.py,sha256=IVTE4abBU1bUprFTkxrTfYKnvkNTanWQ-KWh_etiT08,645
100
97
  fractal_server/app/runner/v2/handle_failed_job.py,sha256=-zFWw4d208bQEFUF_sAdH2LdHEARyg1FC8BENr1SjhU,2045
101
98
  fractal_server/app/runner/v2/merge_outputs.py,sha256=D1L4Taieq9i71SPQyNc1kMokgHh-sV_MqF3bv7QMDBc,907
102
- fractal_server/app/runner/v2/runner.py,sha256=ll0-nglUytoxDnMwMRgjY2901UnFb37bkSsxWK1KLA0,11595
99
+ fractal_server/app/runner/v2/runner.py,sha256=EzmoF_7K6n1w1vo2hM12h2EppWW6WyrpT_MmCBbFlCw,11778
103
100
  fractal_server/app/runner/v2/runner_functions.py,sha256=BLREIcQaE6FSc2AEJyZuiYk6rGazEz_9gprUqUZDljs,9488
104
101
  fractal_server/app/runner/v2/runner_functions_low_level.py,sha256=1fWvQ6YZUUnDhO_mipXC5hnaT-zK-GHxg8ayoxZX82k,3648
105
- fractal_server/app/runner/v2/task_interface.py,sha256=d6HPwPzrytUMVjExTU6fuCEwtvvWGRaSje0iXcRD45w,1728
102
+ fractal_server/app/runner/v2/task_interface.py,sha256=e1GGQSYd0MyBj1EZvEVzqv-HpVE4YffXOq82WLrCaOc,1866
106
103
  fractal_server/app/runner/versions.py,sha256=dSaPRWqmFPHjg20kTCHmi_dmGNcCETflDtDLronNanU,852
107
104
  fractal_server/app/schemas/__init__.py,sha256=stURAU_t3AOBaH0HSUbV-GKhlPKngnnIMoqWc3orFyI,135
108
- fractal_server/app/schemas/_filter_validators.py,sha256=0wJuZzMa-hJsMCEMxtBalW3lSk1Qey25uSVmS7GVcPM,1534
109
- fractal_server/app/schemas/_validators.py,sha256=wS09d8hX7mN91C8_BF9jfB8rgBbuAmmZ1BAmLKi3BU8,2974
110
- fractal_server/app/schemas/user.py,sha256=icjox9gK_invW44Nh_L4CvqfRa92qghyQhmevyg09nQ,2243
111
- fractal_server/app/schemas/user_group.py,sha256=t30Kd07PY43G_AqFDb8vjdInTeLeU9WvFZDx8fVLPSI,1750
112
- fractal_server/app/schemas/user_settings.py,sha256=re7ZFS8BLjR9MdIoZNRt2DNPc7znCgDpEYFKr8ZsAZg,2980
105
+ fractal_server/app/schemas/_filter_validators.py,sha256=Gkf2USrkuxZx1TWeeMRmhgfmG60AAIDQfbaWslLsvJQ,1572
106
+ fractal_server/app/schemas/_validators.py,sha256=ap0VWJzOfPcq_tbH3sglZClkuinNvMjRq9fhTIdn-zk,3029
107
+ fractal_server/app/schemas/user.py,sha256=vLijVyPIQJdpFc36S6qK2XtSKMzfkhULN1nBsb9tV18,2407
108
+ fractal_server/app/schemas/user_group.py,sha256=Uao1igRYflBu7Dg6Zs0kaFU3zBFJzIwDLrkFfaJk6z8,2176
109
+ fractal_server/app/schemas/user_settings.py,sha256=4XeXQ3rnDS1UvLPd9hvh-WVSbzBGcMDjChfiZ_WGi-w,3134
113
110
  fractal_server/app/schemas/v2/__init__.py,sha256=IT2a6fbRx3rt8h6jri_4gZWzTN9EVXewiWoIuBcZ-xA,2618
114
- fractal_server/app/schemas/v2/dataset.py,sha256=FKzQyMBAdFo9hnR4HzXQML7VbkM8YlKE4OLKjpo-Pdw,5085
115
- fractal_server/app/schemas/v2/dumps.py,sha256=Yiyma6pMnEk1c-Ekf0e-IWgM20_R4qWyHuoqfdc6brE,1635
116
- fractal_server/app/schemas/v2/job.py,sha256=qIisYTznE1mU6z65zxbOqSTOlkeFvncqbFLzyVyN12Y,3589
117
- fractal_server/app/schemas/v2/manifest.py,sha256=Uqtd7DbyOkf9bxBOKkU7Sv7nToBIFGUcfjY7rd5iO7c,6981
118
- fractal_server/app/schemas/v2/project.py,sha256=ABv9LSLVCq1QYthEhBvZOTn_4DFEC-7cH28tFGFdM7I,589
111
+ fractal_server/app/schemas/v2/dataset.py,sha256=FRJI1hWEjj7M_QhAq3mhWkmJ5lMKOtr1pXcUq-bH-Gk,5517
112
+ fractal_server/app/schemas/v2/dumps.py,sha256=2GUjoqeblUvrSoojBz5odoUUf53IABtbY_5GvFZoMVc,1782
113
+ fractal_server/app/schemas/v2/job.py,sha256=Dp_RRiC5uvJqq1fAJlBXztAFA-tS5FWuRnUbTnLtL6M,4226
114
+ fractal_server/app/schemas/v2/manifest.py,sha256=AhUkv3ZfoUffdcpHKOuUTmcZa-0G5Y53hp-O4UaTkG0,7133
115
+ fractal_server/app/schemas/v2/project.py,sha256=uqBreoS0UAkbVEJJS2HkSdjCCWfFIkv6N70TWk9HgxA,868
119
116
  fractal_server/app/schemas/v2/status.py,sha256=SQaUpQkjFq5c5k5J4rOjNhuQaDOEg8lksPhkKmPU5VU,332
120
- fractal_server/app/schemas/v2/task.py,sha256=9W4xe-p19pbLpjsNJrYVIMpkrlwuCxGAJNO_gl0TfMc,6879
121
- fractal_server/app/schemas/v2/task_collection.py,sha256=9c_yyFcVBXdAZpQQniy1bROhYnQT7G1BflOpMY1joPE,6250
122
- fractal_server/app/schemas/v2/task_group.py,sha256=zZfvAH7c3MZC4_An09TMuOkNE_e1Z9XsYEnmN-axHdU,3217
123
- fractal_server/app/schemas/v2/workflow.py,sha256=-KWvXnbHBFA3pj5n7mfSyLKJQSqkJmoziIEe7mpLl3M,1875
124
- fractal_server/app/schemas/v2/workflowtask.py,sha256=xjFTmnKuHSetJvN-9k_GTMbPKwPg-J00zUkc_96QO7E,7726
125
- fractal_server/app/security/__init__.py,sha256=UyNjQc19cTNl-NwGyWwQs_-Yd22niHo86rIE-s-3czg,14087
117
+ fractal_server/app/schemas/v2/task.py,sha256=OUCNQQUULmWSOdPm8Dz8E0ivG1XOcvO4dxz-osSa9R0,7248
118
+ fractal_server/app/schemas/v2/task_collection.py,sha256=NFIcfTAhFN5LMxmyJCat7CKxUXq2CLEuWl5Hs0siZl8,6561
119
+ fractal_server/app/schemas/v2/task_group.py,sha256=vFF850kJRmmcxt2sn7nrhm-OWJHRhYu_XOQP5LNiXyU,3850
120
+ fractal_server/app/schemas/v2/workflow.py,sha256=qmKJZ9xZ6-sN41XdocZ7K6hum_pUfaMuKOJs_TlFCRQ,2211
121
+ fractal_server/app/schemas/v2/workflowtask.py,sha256=qMvwlnFCsnyD8uv8HJ4cFy2-QMm2ETUFlTIbxIFUWxk,8056
122
+ fractal_server/app/security/__init__.py,sha256=8dg7vBzLjU43p_eGoHuFBO97FtIDtNnbJJ5mzVSVRNI,14094
126
123
  fractal_server/app/security/signup_email.py,sha256=CR1VbsGFNshxsWquLDZPbUAYnGzkCHeJChtncq63RBc,1434
127
124
  fractal_server/app/user_settings.py,sha256=OP1yiYKtPadxwM51_Q0hdPk3z90TCN4z1BLpQsXyWiU,1316
128
- fractal_server/config.py,sha256=kK6mf4uPNd95N-oKlkc6eSsjLkBQHv57jGYuGvZKmko,28495
125
+ fractal_server/config.py,sha256=qNhfBYRAGFjT7rcg_LPLQXexzxWydJr4kHyrWaWoMew,28753
129
126
  fractal_server/data_migrations/README.md,sha256=_3AEFvDg9YkybDqCLlFPdDmGJvr6Tw7HRI14aZ3LOIw,398
130
127
  fractal_server/data_migrations/tools.py,sha256=LeMeASwYGtEqd-3wOLle6WARdTGAimoyMmRbbJl-hAM,572
131
128
  fractal_server/gunicorn_fractal.py,sha256=u6U01TLGlXgq1v8QmEpLih3QnsInZD7CqphgJ_GrGzc,1230
132
129
  fractal_server/images/__init__.py,sha256=-_wjoKtSX02P1KjDxDP_EXKvmbONTRmbf7iGVTsyBpM,154
133
- fractal_server/images/models.py,sha256=t4zcUFmWxhAzGgy7kkxs9Ctq8SAhVs0v910UcXcHIUw,3349
130
+ fractal_server/images/models.py,sha256=jdGKMPi8WlO9Kvns4grIOU5LjujnvwIGjMFMC0wNy08,3501
134
131
  fractal_server/images/tools.py,sha256=4kfPAFJJnvg7fM-cL0JMx97Dc1Npva_0ghitEji3JUU,3407
135
132
  fractal_server/logger.py,sha256=5Z3rfsFwl8UysVljTOaaIvt8Pyp6CVH492ez3jE8WAw,5113
136
- fractal_server/main.py,sha256=yziIqi9AaecYYx9hVsaB5nzSpsgnOSSMvQOa0n30SBI,4555
133
+ fractal_server/main.py,sha256=FD9KzTTsXTQnTW0z3Hu7y0Nj_oAkBeZEInKDXFd4hjE,4561
137
134
  fractal_server/migrations/env.py,sha256=nfyBpMIOT3kny6t-b-tUjyRjZ4k906bb1_wCQ7me1BI,1353
138
135
  fractal_server/migrations/naming_convention.py,sha256=htbKrVdetx3pklowb_9Cdo5RqeF0fJ740DNecY5de_M,265
139
136
  fractal_server/migrations/versions/034a469ec2eb_task_groups.py,sha256=vrPhC8hfFu1c4HmLHNZyCuqEfecFD8-bWc49bXMNes0,6199
@@ -189,16 +186,16 @@ fractal_server/tasks/v2/templates/3_pip_freeze.sh,sha256=JldREScEBI4cD_qjfX4UK7V
189
186
  fractal_server/tasks/v2/templates/4_pip_show.sh,sha256=84NGHlg6JIbrQktgGKyfGsggPFzy6RBJuOmIpPUhsrw,1747
190
187
  fractal_server/tasks/v2/templates/5_get_venv_size_and_file_number.sh,sha256=q-6ZUvA6w6FDVEoSd9O63LaJ9tKZc7qAFH72SGPrd_k,284
191
188
  fractal_server/tasks/v2/templates/6_pip_install_from_freeze.sh,sha256=A2y8RngEjAcRhG-_owA6P7tAdrS_AszFuGXnaeMV8u0,1122
192
- fractal_server/tasks/v2/utils_background.py,sha256=tikXhggqxdU7EnKdx2co3UwinlDazEjfOPQOXtO58zs,4240
193
- fractal_server/tasks/v2/utils_database.py,sha256=g5m3sNPZKQ3AjflhPURDlAppQcIS5T1A8a1macdswBA,1268
189
+ fractal_server/tasks/v2/utils_background.py,sha256=6wM7Z6zedsR8oVGwrJ-HN2Hj1b7BgmaSBdvuB_r9hI8,4246
190
+ fractal_server/tasks/v2/utils_database.py,sha256=iLbwkxMxTCgpyKe1JQzdfIR3zBfxohgmLwSdGps1AUo,1274
194
191
  fractal_server/tasks/v2/utils_package_names.py,sha256=RDg__xrvQs4ieeVzmVdMcEh95vGQYrv9Hfal-5EDBM8,2393
195
192
  fractal_server/tasks/v2/utils_python_interpreter.py,sha256=5_wrlrTqXyo1YuLZvAW9hrSoh5MyLOzdPVUlUwM7uDQ,955
196
193
  fractal_server/tasks/v2/utils_templates.py,sha256=07TZpJ0Mh_A4lXVXrrH2o1VLFFGwxeRumA6DdgMgCWk,2947
197
194
  fractal_server/urls.py,sha256=QjIKAC1a46bCdiPMu3AlpgFbcv6a4l3ABcd5xz190Og,471
198
195
  fractal_server/utils.py,sha256=PMwrxWFxRTQRl1b9h-NRIbFGPKqpH_hXnkAT3NfZdpY,3571
199
196
  fractal_server/zip_tools.py,sha256=GjDgo_sf6V_DDg6wWeBlZu5zypIxycn_l257p_YVKGc,4876
200
- fractal_server-2.12.1.dist-info/LICENSE,sha256=QKAharUuhxL58kSoLizKJeZE3mTCBnX6ucmz8W0lxlk,1576
201
- fractal_server-2.12.1.dist-info/METADATA,sha256=m7gJftwPSx3KP-HzIgYY_4a7m8zs-I8yGuQlW_HedKE,4570
202
- fractal_server-2.12.1.dist-info/WHEEL,sha256=RaoafKOydTQ7I_I3JTrPCg6kUmTgtm4BornzOqyEfJ8,88
203
- fractal_server-2.12.1.dist-info/entry_points.txt,sha256=8tV2kynvFkjnhbtDnxAqImL6HMVKsopgGfew0DOp5UY,58
204
- fractal_server-2.12.1.dist-info/RECORD,,
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,,