fractal-server 2.18.4__py3-none-any.whl → 2.18.6__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.
- fractal_server/__init__.py +1 -1
- fractal_server/app/db/__init__.py +1 -7
- fractal_server/app/routes/admin/v2/job.py +0 -2
- fractal_server/app/routes/api/v2/images.py +0 -1
- fractal_server/app/routes/api/v2/job.py +0 -3
- fractal_server/app/routes/api/v2/project.py +0 -3
- fractal_server/app/routes/api/v2/task.py +0 -3
- fractal_server/app/routes/api/v2/task_group.py +1 -0
- fractal_server/app/routes/api/v2/workflow.py +0 -2
- fractal_server/app/routes/api/v2/workflowtask.py +0 -1
- fractal_server/app/routes/auth/oauth.py +3 -1
- fractal_server/app/routes/auth/viewer_paths.py +11 -7
- fractal_server/app/security/signup_email.py +2 -1
- fractal_server/images/tools.py +1 -1
- fractal_server/runner/executors/local/runner.py +2 -0
- fractal_server/runner/executors/slurm_ssh/runner.py +5 -0
- fractal_server/runner/executors/slurm_sudo/runner.py +5 -0
- fractal_server/runner/v2/runner.py +0 -1
- fractal_server/runner/v2/submit_workflow.py +0 -1
- {fractal_server-2.18.4.dist-info → fractal_server-2.18.6.dist-info}/METADATA +6 -6
- {fractal_server-2.18.4.dist-info → fractal_server-2.18.6.dist-info}/RECORD +24 -24
- {fractal_server-2.18.4.dist-info → fractal_server-2.18.6.dist-info}/WHEEL +1 -1
- {fractal_server-2.18.4.dist-info → fractal_server-2.18.6.dist-info}/entry_points.txt +0 -0
- {fractal_server-2.18.4.dist-info → fractal_server-2.18.6.dist-info}/licenses/LICENSE +0 -0
fractal_server/__init__.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__VERSION__ = "2.18.
|
|
1
|
+
__VERSION__ = "2.18.6"
|
|
@@ -54,7 +54,6 @@ class DB:
|
|
|
54
54
|
cls._engine_async,
|
|
55
55
|
class_=AsyncSession,
|
|
56
56
|
expire_on_commit=False,
|
|
57
|
-
future=True,
|
|
58
57
|
)
|
|
59
58
|
|
|
60
59
|
@classmethod
|
|
@@ -68,12 +67,7 @@ class DB:
|
|
|
68
67
|
pool_pre_ping=True,
|
|
69
68
|
)
|
|
70
69
|
|
|
71
|
-
cls._sync_session_maker = sessionmaker(
|
|
72
|
-
bind=cls._engine_sync,
|
|
73
|
-
autocommit=False,
|
|
74
|
-
autoflush=False,
|
|
75
|
-
future=True,
|
|
76
|
-
)
|
|
70
|
+
cls._sync_session_maker = sessionmaker(cls._engine_sync)
|
|
77
71
|
|
|
78
72
|
@classmethod
|
|
79
73
|
async def get_async_db(cls) -> AsyncGenerator[AsyncSession, None]:
|
|
@@ -176,7 +176,6 @@ async def view_single_job(
|
|
|
176
176
|
status_code=status.HTTP_404_NOT_FOUND,
|
|
177
177
|
detail=f"Job {job_id} not found",
|
|
178
178
|
)
|
|
179
|
-
await db.close()
|
|
180
179
|
|
|
181
180
|
if show_tmp_logs and (job.status == JobStatusType.SUBMITTED):
|
|
182
181
|
try:
|
|
@@ -249,7 +248,6 @@ async def update_job(
|
|
|
249
248
|
|
|
250
249
|
await db.commit()
|
|
251
250
|
await db.refresh(job)
|
|
252
|
-
await db.close()
|
|
253
251
|
return job
|
|
254
252
|
|
|
255
253
|
|
|
@@ -59,7 +59,6 @@ async def get_user_jobs(
|
|
|
59
59
|
)
|
|
60
60
|
res = await db.execute(stm)
|
|
61
61
|
job_list = res.scalars().all()
|
|
62
|
-
await db.close()
|
|
63
62
|
if not log:
|
|
64
63
|
for job in job_list:
|
|
65
64
|
setattr(job, "log", None)
|
|
@@ -152,7 +151,6 @@ async def read_job(
|
|
|
152
151
|
db=db,
|
|
153
152
|
)
|
|
154
153
|
job = output["job"]
|
|
155
|
-
await db.close()
|
|
156
154
|
|
|
157
155
|
if show_tmp_logs and (job.status == JobStatusType.SUBMITTED):
|
|
158
156
|
try:
|
|
@@ -222,7 +220,6 @@ async def get_job_list(
|
|
|
222
220
|
.order_by(JobV2.start_timestamp.desc())
|
|
223
221
|
)
|
|
224
222
|
job_list = res.scalars().all()
|
|
225
|
-
await db.close()
|
|
226
223
|
if not log:
|
|
227
224
|
for job in job_list:
|
|
228
225
|
setattr(job, "log", None)
|
|
@@ -47,7 +47,6 @@ async def get_list_project(
|
|
|
47
47
|
)
|
|
48
48
|
res = await db.execute(stm)
|
|
49
49
|
project_list = res.scalars().all()
|
|
50
|
-
await db.close()
|
|
51
50
|
return project_list
|
|
52
51
|
|
|
53
52
|
|
|
@@ -107,7 +106,6 @@ async def read_project(
|
|
|
107
106
|
required_permissions=ProjectPermissions.READ,
|
|
108
107
|
db=db,
|
|
109
108
|
)
|
|
110
|
-
await db.close()
|
|
111
109
|
return project
|
|
112
110
|
|
|
113
111
|
|
|
@@ -136,7 +134,6 @@ async def update_project(
|
|
|
136
134
|
|
|
137
135
|
await db.commit()
|
|
138
136
|
await db.refresh(project)
|
|
139
|
-
await db.close()
|
|
140
137
|
return project
|
|
141
138
|
|
|
142
139
|
|
|
@@ -77,7 +77,6 @@ async def get_list_task(
|
|
|
77
77
|
stm = stm.order_by(TaskV2.id)
|
|
78
78
|
res = await db.execute(stm)
|
|
79
79
|
task_list = list(res.scalars().all())
|
|
80
|
-
await db.close()
|
|
81
80
|
if args_schema is False:
|
|
82
81
|
for task in task_list:
|
|
83
82
|
setattr(task, "args_schema_parallel", None)
|
|
@@ -133,7 +132,6 @@ async def patch_task(
|
|
|
133
132
|
|
|
134
133
|
await db.commit()
|
|
135
134
|
await db.refresh(db_task)
|
|
136
|
-
await db.close()
|
|
137
135
|
return db_task
|
|
138
136
|
|
|
139
137
|
|
|
@@ -216,7 +214,6 @@ async def create_task(
|
|
|
216
214
|
db.add(db_task_group)
|
|
217
215
|
await db.commit()
|
|
218
216
|
await db.refresh(db_task)
|
|
219
|
-
await db.close()
|
|
220
217
|
|
|
221
218
|
return db_task
|
|
222
219
|
|
|
@@ -163,6 +163,7 @@ async def get_task_group_list(
|
|
|
163
163
|
if args_schema is False:
|
|
164
164
|
for taskgroup in task_groups:
|
|
165
165
|
for task in taskgroup.task_list:
|
|
166
|
+
db.expunge(task) # See issue 3101
|
|
166
167
|
setattr(task, "args_schema_non_parallel", None)
|
|
167
168
|
setattr(task, "args_schema_parallel", None)
|
|
168
169
|
|
|
@@ -89,7 +89,6 @@ async def create_workflow(
|
|
|
89
89
|
db.add(db_workflow)
|
|
90
90
|
await db.commit()
|
|
91
91
|
await db.refresh(db_workflow)
|
|
92
|
-
await db.close()
|
|
93
92
|
return db_workflow
|
|
94
93
|
|
|
95
94
|
|
|
@@ -189,7 +188,6 @@ async def update_workflow(
|
|
|
189
188
|
|
|
190
189
|
await db.commit()
|
|
191
190
|
await db.refresh(workflow)
|
|
192
|
-
await db.close()
|
|
193
191
|
|
|
194
192
|
wftask_list_with_warnings = await _add_warnings_to_workflow_tasks(
|
|
195
193
|
wftask_list=workflow.task_list, user_id=user.id, db=db
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
from typing import override
|
|
2
|
+
|
|
1
3
|
from fastapi import APIRouter
|
|
2
4
|
from httpx_oauth.clients.github import GitHubOAuth2
|
|
3
5
|
from httpx_oauth.clients.google import GoogleOAuth2
|
|
@@ -25,7 +27,7 @@ class FractalOpenID(OpenID):
|
|
|
25
27
|
super().__init__(**kwargs)
|
|
26
28
|
self.email_claim = email_claim
|
|
27
29
|
|
|
28
|
-
|
|
30
|
+
@override
|
|
29
31
|
async def get_id_email(self, token: str) -> tuple[str, str | None]:
|
|
30
32
|
"""
|
|
31
33
|
Identical to the parent-class method (httpx-oauth version 0.16.1),
|
|
@@ -23,9 +23,12 @@ async def get_current_user_allowed_viewer_paths(
|
|
|
23
23
|
) -> list[str]:
|
|
24
24
|
"""
|
|
25
25
|
Returns the allowed viewer paths for current user.
|
|
26
|
-
"""
|
|
27
|
-
authorized_paths = current_user.project_dirs.copy()
|
|
28
26
|
|
|
27
|
+
NOTE: `include_shared_projects` is an obsolete query-parameter name,
|
|
28
|
+
because it does not make a difference between owners/guests. A better
|
|
29
|
+
naming would be e.g. `include_zarr_dirs`, but it would require a fix
|
|
30
|
+
in `fractal-web` as well.
|
|
31
|
+
"""
|
|
29
32
|
if include_shared_projects:
|
|
30
33
|
res = await db.execute(
|
|
31
34
|
select(DatasetV2.zarr_dir)
|
|
@@ -36,8 +39,9 @@ async def get_current_user_allowed_viewer_paths(
|
|
|
36
39
|
.where(LinkUserProjectV2.user_id == current_user.id)
|
|
37
40
|
.where(LinkUserProjectV2.is_verified.is_(True))
|
|
38
41
|
)
|
|
39
|
-
|
|
40
|
-
# Note that `project_dirs` and the `
|
|
41
|
-
# common elements, and then
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
authorized_zarr_dirs = list(res.unique().scalars().all())
|
|
43
|
+
# Note that `project_dirs` and the `authorized_zarr_dirs` may have some
|
|
44
|
+
# common elements, and then the response may include non-unique items.
|
|
45
|
+
return current_user.project_dirs + authorized_zarr_dirs
|
|
46
|
+
else:
|
|
47
|
+
return current_user.project_dirs
|
|
@@ -13,7 +13,7 @@ def send_fractal_email_or_log_failure(
|
|
|
13
13
|
subject: str,
|
|
14
14
|
msg: str,
|
|
15
15
|
email_settings: PublicEmailSettings | None,
|
|
16
|
-
):
|
|
16
|
+
) -> None:
|
|
17
17
|
"""
|
|
18
18
|
Send an email using the specified settings, or log about failure.
|
|
19
19
|
"""
|
|
@@ -22,6 +22,7 @@ def send_fractal_email_or_log_failure(
|
|
|
22
22
|
logger.error(
|
|
23
23
|
f"Cannot send email with {subject=}, because {email_settings=}."
|
|
24
24
|
)
|
|
25
|
+
return
|
|
25
26
|
|
|
26
27
|
try:
|
|
27
28
|
logger.info(f"START sending email with {subject=}.")
|
fractal_server/images/tools.py
CHANGED
|
@@ -117,7 +117,7 @@ def merge_type_filters(
|
|
|
117
117
|
f"`{task_input_types}` (from task) "
|
|
118
118
|
f"and `{wftask_type_filters}` (from workflowtask)."
|
|
119
119
|
)
|
|
120
|
-
merged_dict = task_input_types
|
|
120
|
+
merged_dict = task_input_types.copy()
|
|
121
121
|
merged_dict.update(wftask_type_filters)
|
|
122
122
|
return merged_dict
|
|
123
123
|
|
|
@@ -3,6 +3,7 @@ from concurrent.futures import Future
|
|
|
3
3
|
from concurrent.futures import ThreadPoolExecutor
|
|
4
4
|
from pathlib import Path
|
|
5
5
|
from typing import Any
|
|
6
|
+
from typing import override
|
|
6
7
|
|
|
7
8
|
from fractal_server.app.db import get_sync_db
|
|
8
9
|
from fractal_server.app.models import Profile
|
|
@@ -91,6 +92,7 @@ class LocalRunner(BaseRunner):
|
|
|
91
92
|
)
|
|
92
93
|
return self.executor.__exit__(exc_type, exc_val, exc_tb)
|
|
93
94
|
|
|
95
|
+
@override
|
|
94
96
|
def submit(
|
|
95
97
|
self,
|
|
96
98
|
*,
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import time
|
|
2
2
|
from pathlib import Path
|
|
3
|
+
from typing import override
|
|
3
4
|
|
|
4
5
|
from fractal_server.app.models import Profile
|
|
5
6
|
from fractal_server.app.models import Resource
|
|
@@ -64,9 +65,11 @@ class SlurmSSHRunner(BaseSlurmRunner):
|
|
|
64
65
|
slurm_account=slurm_account,
|
|
65
66
|
)
|
|
66
67
|
|
|
68
|
+
@override
|
|
67
69
|
def _mkdir_local_folder(self, folder: str) -> None:
|
|
68
70
|
Path(folder).mkdir(parents=True)
|
|
69
71
|
|
|
72
|
+
@override
|
|
70
73
|
def _mkdir_remote_folder(self, folder: str):
|
|
71
74
|
self.fractal_ssh.mkdir(
|
|
72
75
|
folder=folder,
|
|
@@ -169,6 +172,7 @@ class SlurmSSHRunner(BaseSlurmRunner):
|
|
|
169
172
|
t_1 = time.perf_counter()
|
|
170
173
|
logger.info(f"[_fetch_artifacts] End - elapsed={t_1 - t_0:.3f} s")
|
|
171
174
|
|
|
175
|
+
@override
|
|
172
176
|
def _run_remote_cmd(self, cmd: str) -> str:
|
|
173
177
|
stdout = self.fractal_ssh.run_command(cmd=cmd)
|
|
174
178
|
return stdout
|
|
@@ -232,6 +236,7 @@ class SlurmSSHRunner(BaseSlurmRunner):
|
|
|
232
236
|
|
|
233
237
|
logger.debug("[_send_many_job_inputs] END.")
|
|
234
238
|
|
|
239
|
+
@override
|
|
235
240
|
def run_squeue(self, *, job_ids: list[str]) -> str:
|
|
236
241
|
"""
|
|
237
242
|
Run `squeue` for a set of SLURM job IDs.
|
|
@@ -4,6 +4,7 @@ import shlex
|
|
|
4
4
|
import subprocess # nosec
|
|
5
5
|
from concurrent.futures import ThreadPoolExecutor
|
|
6
6
|
from pathlib import Path
|
|
7
|
+
from typing import override
|
|
7
8
|
|
|
8
9
|
from fractal_server.app.models import Profile
|
|
9
10
|
from fractal_server.app.models import Resource
|
|
@@ -85,11 +86,13 @@ class SlurmSudoRunner(BaseSlurmRunner):
|
|
|
85
86
|
slurm_account=slurm_account,
|
|
86
87
|
)
|
|
87
88
|
|
|
89
|
+
@override
|
|
88
90
|
def _mkdir_local_folder(self, folder: str) -> None:
|
|
89
91
|
original_umask = os.umask(0)
|
|
90
92
|
Path(folder).mkdir(parents=True, mode=0o755)
|
|
91
93
|
os.umask(original_umask)
|
|
92
94
|
|
|
95
|
+
@override
|
|
93
96
|
def _mkdir_remote_folder(self, folder: str) -> None:
|
|
94
97
|
_mkdir_as_user(folder=folder, user=self.slurm_user)
|
|
95
98
|
|
|
@@ -164,6 +167,7 @@ class SlurmSudoRunner(BaseSlurmRunner):
|
|
|
164
167
|
)
|
|
165
168
|
logger.debug("[_fetch_artifacts] END.")
|
|
166
169
|
|
|
170
|
+
@override
|
|
167
171
|
def _run_remote_cmd(self, cmd: str) -> str:
|
|
168
172
|
res = _run_command_as_user(
|
|
169
173
|
cmd=cmd,
|
|
@@ -172,6 +176,7 @@ class SlurmSudoRunner(BaseSlurmRunner):
|
|
|
172
176
|
)
|
|
173
177
|
return res.stdout
|
|
174
178
|
|
|
179
|
+
@override
|
|
175
180
|
def run_squeue(self, *, job_ids: list[str]) -> str:
|
|
176
181
|
"""
|
|
177
182
|
Run `squeue` for a set of SLURM job IDs.
|
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fractal-server
|
|
3
|
-
Version: 2.18.
|
|
3
|
+
Version: 2.18.6
|
|
4
4
|
Summary: Backend component of the Fractal analytics platform
|
|
5
5
|
Author: Tommaso Comparin, Marco Franzon, Yuri Chiucconi, Jacopo Nespolo
|
|
6
6
|
Author-email: Tommaso Comparin <tommaso.comparin@exact-lab.it>, Marco Franzon <marco.franzon@exact-lab.it>, Yuri Chiucconi <yuri.chiucconi@exact-lab.it>, Jacopo Nespolo <jacopo.nespolo@exact-lab.it>
|
|
7
7
|
License-Expression: BSD-3-Clause
|
|
8
8
|
License-File: LICENSE
|
|
9
|
-
Requires-Dist: fastapi>=0.
|
|
10
|
-
Requires-Dist: sqlmodel==0.0.
|
|
9
|
+
Requires-Dist: fastapi>=0.128.0,<0.129.0
|
|
10
|
+
Requires-Dist: sqlmodel==0.0.31
|
|
11
11
|
Requires-Dist: sqlalchemy[asyncio]>=2.0.23,<2.1
|
|
12
12
|
Requires-Dist: fastapi-users[oauth]>=15,<16
|
|
13
13
|
Requires-Dist: alembic>=1.13.1,<2.0.0
|
|
14
|
-
Requires-Dist: uvicorn>=0.
|
|
14
|
+
Requires-Dist: uvicorn>=0.40.0,<0.41.0
|
|
15
15
|
Requires-Dist: uvicorn-worker==0.4.0
|
|
16
16
|
Requires-Dist: pydantic>=2.12.0,<2.13.0
|
|
17
|
-
Requires-Dist: pydantic-settings==2.
|
|
17
|
+
Requires-Dist: pydantic-settings==2.12.0
|
|
18
18
|
Requires-Dist: packaging>=25.0.0,<26.0.0
|
|
19
19
|
Requires-Dist: fabric>=3.2.2,<3.3.0
|
|
20
20
|
Requires-Dist: gunicorn>=23.0,<24.0
|
|
21
21
|
Requires-Dist: psycopg[binary]>=3.1.0,<4.0.0
|
|
22
22
|
Requires-Dist: tomli-w>=1.2.0,<1.3.0
|
|
23
|
-
Requires-Python: >=3.
|
|
23
|
+
Requires-Python: >=3.12, <3.15
|
|
24
24
|
Project-URL: changelog, https://github.com/fractal-analytics-platform/fractal-server/blob/main/CHANGELOG.md
|
|
25
25
|
Project-URL: documentation, https://fractal-analytics-platform.github.io/fractal-server
|
|
26
26
|
Project-URL: homepage, https://github.com/fractal-analytics-platform/fractal-server
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
fractal_server/__init__.py,sha256=
|
|
1
|
+
fractal_server/__init__.py,sha256=8bUDUYK1WiiLbGAi77y3BEN7scczf-cXLjHQfvbdlHc,23
|
|
2
2
|
fractal_server/__main__.py,sha256=QeKoAgqoiozLJDa8kSVe-Aso1WWgrk1yLUYWS8RxZVM,11405
|
|
3
3
|
fractal_server/alembic.ini,sha256=MWwi7GzjzawI9cCAK1LW7NxIBQDUqD12-ptJoq5JpP0,3153
|
|
4
4
|
fractal_server/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
5
|
-
fractal_server/app/db/__init__.py,sha256=
|
|
5
|
+
fractal_server/app/db/__init__.py,sha256=2b8wF-EBkEgFwWNoRD_ZKbfIf4eRCg74Epgwe2BA_dw,2697
|
|
6
6
|
fractal_server/app/models/__init__.py,sha256=oglUT1A1lLhXy2GFz3XsQ7wqkyfs3NXRtuNov-gOHXM,368
|
|
7
7
|
fractal_server/app/models/linkusergroup.py,sha256=3KkkE4QIUAlTrBAZs_tVy0pGvAxUAq6yOEjflct_z2M,678
|
|
8
8
|
fractal_server/app/models/linkuserproject.py,sha256=Bk0VzjzG7RbnVnOwrztqxKIPxz_AsUynXVxyMWHCbXA,1109
|
|
@@ -25,7 +25,7 @@ fractal_server/app/routes/admin/v2/__init__.py,sha256=VF4wg09fvz6gVgIFe-r7LoCU9t
|
|
|
25
25
|
fractal_server/app/routes/admin/v2/_aux_functions.py,sha256=fqA5sUCFuD2iVANQt2WUUfVOEVz5egQA7inzUKYGCw0,1684
|
|
26
26
|
fractal_server/app/routes/admin/v2/accounting.py,sha256=xNXyQYpa0K0bOjd5WNVKfU6zBhvT2-Xgrx2F4vdS9C0,3512
|
|
27
27
|
fractal_server/app/routes/admin/v2/impersonate.py,sha256=ictDjuvBr3iLv3YtwkVRMNQRq5qtPAeAXbbC7STSsEg,1125
|
|
28
|
-
fractal_server/app/routes/admin/v2/job.py,sha256=
|
|
28
|
+
fractal_server/app/routes/admin/v2/job.py,sha256=VaVMUrHV7edHyjp2rsqoWf-wh5zlXFM-VjXIlxBnwG0,10795
|
|
29
29
|
fractal_server/app/routes/admin/v2/profile.py,sha256=DwLlA9K3hkl9BqzyifIDiaWeHOM_N_17kqB5CSJOhSI,3165
|
|
30
30
|
fractal_server/app/routes/admin/v2/resource.py,sha256=c2z6b_D_W6_dqVnxNF8F8OdlI5Z4asex8Zgfwzjbi2Q,6330
|
|
31
31
|
fractal_server/app/routes/admin/v2/sharing.py,sha256=x7RtbDPapyENEU_s4-glPoEeEOxxj2VBgduVQ1V7wkE,3796
|
|
@@ -43,33 +43,33 @@ fractal_server/app/routes/api/v2/_aux_functions_tasks.py,sha256=Hrumknv0vH5VX7SF
|
|
|
43
43
|
fractal_server/app/routes/api/v2/_aux_task_group_disambiguation.py,sha256=vdvMTa3San1HMTzctN5Vk7zxpqe4ccByrFBQyHfgWW8,4889
|
|
44
44
|
fractal_server/app/routes/api/v2/dataset.py,sha256=HZGJezPqzbU1PYlFZfQSOj-ONmhtitCv6I7SDORGiPg,8515
|
|
45
45
|
fractal_server/app/routes/api/v2/history.py,sha256=-aLwLhDLDqwKFy3JrM1vFswyBPdolMXlH3sS7OiQsK8,18339
|
|
46
|
-
fractal_server/app/routes/api/v2/images.py,sha256=
|
|
47
|
-
fractal_server/app/routes/api/v2/job.py,sha256=
|
|
46
|
+
fractal_server/app/routes/api/v2/images.py,sha256=gaLHglxN9VwhNQP6uD9Ij-qaMJWC6zFcj_TcM1V8_AI,8245
|
|
47
|
+
fractal_server/app/routes/api/v2/job.py,sha256=nrfus2bD49Ww4E6I3vTCrOqRnXjnsHMk4KxtKYCrIp0,7352
|
|
48
48
|
fractal_server/app/routes/api/v2/pre_submission_checks.py,sha256=Cs_ODoRWmkbSJJhlIE7pQh9JuJGXZTAr-EVF6wqKNGA,5215
|
|
49
|
-
fractal_server/app/routes/api/v2/project.py,sha256=
|
|
49
|
+
fractal_server/app/routes/api/v2/project.py,sha256=sRlmNntaTm7LYCwjVhgnpYE0O8gCWDjOwIR6k2hoMUM,5748
|
|
50
50
|
fractal_server/app/routes/api/v2/sharing.py,sha256=MvegcF3xaT9nztVwLiUisp4B8IrKRa2LVlSR2GGTqYk,9398
|
|
51
51
|
fractal_server/app/routes/api/v2/status_legacy.py,sha256=XfU7sJS3luPziGzGxjiLmrLe4P-8OyBU7hTdcYmcyB8,6026
|
|
52
52
|
fractal_server/app/routes/api/v2/submit.py,sha256=YCeMLXhHzouQbjR_Rh3Rdw-htBGOpznEeWIdAVf3AIk,9570
|
|
53
|
-
fractal_server/app/routes/api/v2/task.py,sha256=
|
|
53
|
+
fractal_server/app/routes/api/v2/task.py,sha256=uIVjb_J-kGu38ddy7lsYFHVF2lT1FyJtT1J1CM6AsVU,7437
|
|
54
54
|
fractal_server/app/routes/api/v2/task_collection.py,sha256=DC_qI7cv-4eT2be8opcU3LfkzXjNvLoo4FPCfT77UM0,12348
|
|
55
55
|
fractal_server/app/routes/api/v2/task_collection_custom.py,sha256=gzllPiZp94rNfmAZMegS0B6wZZa-JPvqrapsWb9dyeY,6920
|
|
56
56
|
fractal_server/app/routes/api/v2/task_collection_pixi.py,sha256=wed_nciaJrDFfjhUiORTnsStWUSk3wfQUehsZUurwgk,7172
|
|
57
|
-
fractal_server/app/routes/api/v2/task_group.py,sha256=
|
|
57
|
+
fractal_server/app/routes/api/v2/task_group.py,sha256=2ocRRQ1dTzrGl01hIsl39vP3ckRuBJqy2Usg19Hkw2Q,8365
|
|
58
58
|
fractal_server/app/routes/api/v2/task_group_lifecycle.py,sha256=T0nDJpqZl1SEzp-Jtwf8YY0rJVTNis4Lv7CQXY8CH-Y,10523
|
|
59
59
|
fractal_server/app/routes/api/v2/task_version_update.py,sha256=W6UXmh2ngqMBkSSHyP3eOyakd6y7rBFTbDq4jd45QaM,8487
|
|
60
|
-
fractal_server/app/routes/api/v2/workflow.py,sha256=
|
|
60
|
+
fractal_server/app/routes/api/v2/workflow.py,sha256=TFmZsojPqcxawNC6PdgfDrgapG9808Lj6f9Gdzp5eSc,10752
|
|
61
61
|
fractal_server/app/routes/api/v2/workflow_import.py,sha256=mf5u2q9XRDOGa0-gbDmJKNsJj9zbBdzkJvrWRz2CEyY,9646
|
|
62
|
-
fractal_server/app/routes/api/v2/workflowtask.py,sha256=
|
|
62
|
+
fractal_server/app/routes/api/v2/workflowtask.py,sha256=QZSRiH2vy8W-Tns8aBRGD9rl81XRyaltB8UKHOtRIC4,8233
|
|
63
63
|
fractal_server/app/routes/auth/__init__.py,sha256=RghfjGuu0RTW8RxBCvaePx9KErO4rTkI96XgbtbeSJU,2337
|
|
64
64
|
fractal_server/app/routes/auth/_aux_auth.py,sha256=gKdYTWUzxcU44Iep787zReWwdAs4kW5baNDXCPmiKn8,9195
|
|
65
65
|
fractal_server/app/routes/auth/current_user.py,sha256=uDWttWo9isG69Jv1EGnnr2Ki5ZGd0D76jgjVDQMkn8c,3251
|
|
66
66
|
fractal_server/app/routes/auth/group.py,sha256=uR98vdQHH-7BFl-Czj85ESPxT2yQymy4qtagaMrnUPU,6491
|
|
67
67
|
fractal_server/app/routes/auth/login.py,sha256=buVa5Y8T0cd_SW1CqC-zMv-3SfPxGJknf7MYlUyKOl0,567
|
|
68
|
-
fractal_server/app/routes/auth/oauth.py,sha256=
|
|
68
|
+
fractal_server/app/routes/auth/oauth.py,sha256=dOt1bWz1viW36CAnHVLmLkYzdCHUMdOhdTNgoQp-VvU,3663
|
|
69
69
|
fractal_server/app/routes/auth/register.py,sha256=IiUJhgY0ZrTs0RlBRRjoTv4wF5Gb3eXTInFV-dXkpsE,615
|
|
70
70
|
fractal_server/app/routes/auth/router.py,sha256=Zip_fw9qJWtoXWjluznschyrCKb2n_rf3xWarSXMkgI,692
|
|
71
71
|
fractal_server/app/routes/auth/users.py,sha256=5BagdH1dz-ZoXdvTgIo9QWBNFPW3p1pIZfY9BBu4eds,7397
|
|
72
|
-
fractal_server/app/routes/auth/viewer_paths.py,sha256=
|
|
72
|
+
fractal_server/app/routes/auth/viewer_paths.py,sha256=uDIwP3AWjLOskG2ZSMUokmn6DWJX2NSviG6k4hiJRSU,1911
|
|
73
73
|
fractal_server/app/routes/aux/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
74
74
|
fractal_server/app/routes/aux/_job.py,sha256=n-UhONvomKyKkQDDqd0lFh2kCMhlCGXpfdMNW39R1E4,644
|
|
75
75
|
fractal_server/app/routes/aux/_runner.py,sha256=-SvcXCVEV7Mb6q4PbbxuTCCruX6sAlR5QGXk9CzBVv8,979
|
|
@@ -96,7 +96,7 @@ fractal_server/app/schemas/v2/task_group.py,sha256=sbg6AkvonU7F_-QC4G9kDxO6YVcz7
|
|
|
96
96
|
fractal_server/app/schemas/v2/workflow.py,sha256=87Aa92H6ceBbkDUsDhDqVNJyuBZuVRRAgFqNeg_djwE,1738
|
|
97
97
|
fractal_server/app/schemas/v2/workflowtask.py,sha256=1k56KHwzZDZGjl7FG1yslj-MKtKKR5fZ5RKGlJbopNc,3608
|
|
98
98
|
fractal_server/app/security/__init__.py,sha256=sblIH9DFCt_iyk22WzV6k4LuKdbvNPtS1HqPCHIiBJ4,18363
|
|
99
|
-
fractal_server/app/security/signup_email.py,sha256=
|
|
99
|
+
fractal_server/app/security/signup_email.py,sha256=R69U5eTi9X7gZHSTfZ26SaHMQAeqReYEpGnB8r3AVig,1992
|
|
100
100
|
fractal_server/app/shutdown.py,sha256=bfEmf6Xdc906ES0zDDWsihmd6neQpGFyIc7qnadnNu8,2283
|
|
101
101
|
fractal_server/config/__init__.py,sha256=WvcoE3qiY1qnkumv3qspcemCFw5iFG5NkSFR78vN4ks,562
|
|
102
102
|
fractal_server/config/_data.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -111,7 +111,7 @@ fractal_server/gunicorn_fractal.py,sha256=u6U01TLGlXgq1v8QmEpLih3QnsInZD7CqphgJ_
|
|
|
111
111
|
fractal_server/images/__init__.py,sha256=-_wjoKtSX02P1KjDxDP_EXKvmbONTRmbf7iGVTsyBpM,154
|
|
112
112
|
fractal_server/images/models.py,sha256=5wtUmX3hRy8vyOb4SgezuIWcwUaB69HyXHg4zFMJkvk,1198
|
|
113
113
|
fractal_server/images/status_tools.py,sha256=Is2QWThbLCrVJuI0NpGv7TcWs1T8z8q_8Qsidr3TdBU,4932
|
|
114
|
-
fractal_server/images/tools.py,sha256=
|
|
114
|
+
fractal_server/images/tools.py,sha256=4U5Sc5f9ci55W4VLJ7diQrO6gPcw7WKunZQkp3AefMk,4161
|
|
115
115
|
fractal_server/logger.py,sha256=9EhRdgPnGdbJ51vxhOD42K0iaDRhKx7wuikpHoh9kzY,5302
|
|
116
116
|
fractal_server/main.py,sha256=vCDvUndmLIkxUX8EAtyA4Wu9YiIHGZge5J37Yn2U5R4,6537
|
|
117
117
|
fractal_server/migrations/env.py,sha256=nfyBpMIOT3kny6t-b-tUjyRjZ4k906bb1_wCQ7me1BI,1353
|
|
@@ -185,7 +185,7 @@ fractal_server/runner/executors/base_runner.py,sha256=h8uE5gr6zFEwpjhasJDc-eNTMI
|
|
|
185
185
|
fractal_server/runner/executors/call_command_wrapper.py,sha256=yLFfwkYdfGAp6TSLx0omymW3IxaDNdxV-DDk-3oqNx0,1828
|
|
186
186
|
fractal_server/runner/executors/local/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
187
187
|
fractal_server/runner/executors/local/get_local_config.py,sha256=oI32JawlG3ixYdjxJDRfT0sreEnoHekhiAHzlejl2aM,1694
|
|
188
|
-
fractal_server/runner/executors/local/runner.py,sha256=
|
|
188
|
+
fractal_server/runner/executors/local/runner.py,sha256=aad4Q0mLFh5Sb0Naqj0zgpNHd5som_-T85qLcMlPrcs,12339
|
|
189
189
|
fractal_server/runner/executors/slurm_common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
190
190
|
fractal_server/runner/executors/slurm_common/_batching.py,sha256=YQjWRTDI1e6NeLe1R-1QWlt49i42M9ILeExEjdjgy48,8348
|
|
191
191
|
fractal_server/runner/executors/slurm_common/_job_states.py,sha256=nuV-Zba38kDrRESOVB3gaGbrSPZc4q7YGichQaeqTW0,238
|
|
@@ -196,11 +196,11 @@ fractal_server/runner/executors/slurm_common/slurm_config.py,sha256=m65hJ4NJfk74
|
|
|
196
196
|
fractal_server/runner/executors/slurm_common/slurm_job_task_models.py,sha256=VeX40CvU5fckUpSyXlzb3EDE9xxPXkT2sZKLXq_6Ooc,3493
|
|
197
197
|
fractal_server/runner/executors/slurm_ssh/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
198
198
|
fractal_server/runner/executors/slurm_ssh/run_subprocess.py,sha256=SyW6t4egvbiARph2YkFjc88Hj94fCamZVi50L7ph8VM,996
|
|
199
|
-
fractal_server/runner/executors/slurm_ssh/runner.py,sha256=
|
|
199
|
+
fractal_server/runner/executors/slurm_ssh/runner.py,sha256=6_5alEk5bEtFMuJfGSSkJ6RlUs3bsPXl0IlQTDXfsts,10407
|
|
200
200
|
fractal_server/runner/executors/slurm_ssh/tar_commands.py,sha256=83etlsQ_dYvGVrKqlgyOYXnRFWSwf4VRISANsYMVxkQ,1763
|
|
201
201
|
fractal_server/runner/executors/slurm_sudo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
202
202
|
fractal_server/runner/executors/slurm_sudo/_subprocess_run_as_user.py,sha256=OaC_aOupXnU873FvBt8xfBrz41yVyTxh3fU9_vxq0dY,2567
|
|
203
|
-
fractal_server/runner/executors/slurm_sudo/runner.py,sha256=
|
|
203
|
+
fractal_server/runner/executors/slurm_sudo/runner.py,sha256=AKPQGDJrVWT_JtVQK6DDrtyGrTWUEkzn86PbfCbxiPI,6121
|
|
204
204
|
fractal_server/runner/filenames.py,sha256=lPnxKHtdRizr6FqG3zOdjDPyWA7GoaJGTtiuJV0gA8E,70
|
|
205
205
|
fractal_server/runner/set_start_and_last_task_index.py,sha256=NsioSzfEpGyo9ZKrV5KsbxeI7d5V3tE678Y3IAo5rHM,1218
|
|
206
206
|
fractal_server/runner/task_files.py,sha256=n54A1x0MQRGSgqhzOTE-TPzEGJymUhQIUV9ApcVCV9M,4318
|
|
@@ -211,9 +211,9 @@ fractal_server/runner/v2/_slurm_sudo.py,sha256=UsB1P6AZB0L1QrBvR2Lq9FoJaxnhbakLA
|
|
|
211
211
|
fractal_server/runner/v2/db_tools.py,sha256=twqFWVENkxWCYglb__BAXASDuJppwHE-VxdEUC67mq0,3317
|
|
212
212
|
fractal_server/runner/v2/deduplicate_list.py,sha256=TWxHDucal0VZPswy_H7IFaEb4ddGnpl_QBwJ8g9Ybug,668
|
|
213
213
|
fractal_server/runner/v2/merge_outputs.py,sha256=0ahaSwdMFAoEhxVaEaO9nSJuKIcWg9pDZ356ktSHcC0,897
|
|
214
|
-
fractal_server/runner/v2/runner.py,sha256=
|
|
214
|
+
fractal_server/runner/v2/runner.py,sha256=aKz5ocgsMcUUsvaz00db8cWbBHMBA_g_PJhwV973pdY,20884
|
|
215
215
|
fractal_server/runner/v2/runner_functions.py,sha256=1wW2ByskwPtx_mhyJiCpKMXDnDyZ_y5fDWv8hktFZXI,19564
|
|
216
|
-
fractal_server/runner/v2/submit_workflow.py,sha256=
|
|
216
|
+
fractal_server/runner/v2/submit_workflow.py,sha256=FSqXF0_BzhNMRGqYxdjwSVD5rdonk4fTL6Fkp31O_fQ,11867
|
|
217
217
|
fractal_server/runner/v2/task_interface.py,sha256=ftPPpOU16rbJD8q-QV7o_3ey8W7MQTFuWJiYUr4OmF4,2532
|
|
218
218
|
fractal_server/runner/versions.py,sha256=uz59Dxj7BphnFnr-p0kyaZRH0h4w5Xkd0UJNVGtt4ds,474
|
|
219
219
|
fractal_server/ssh/__init__.py,sha256=sVUmzxf7_DuXG1xoLQ1_00fo5NPhi2LJipSmU5EAkPs,124
|
|
@@ -267,8 +267,8 @@ fractal_server/types/validators/_workflow_task_arguments_validators.py,sha256=zt
|
|
|
267
267
|
fractal_server/urls.py,sha256=QjIKAC1a46bCdiPMu3AlpgFbcv6a4l3ABcd5xz190Og,471
|
|
268
268
|
fractal_server/utils.py,sha256=-rjg8QTXQcKweXjn0NcmETFs1_uM9PGnbl0Q7c4ERPM,2181
|
|
269
269
|
fractal_server/zip_tools.py,sha256=Uhn-ax4_9g1PJ32BdyaX30hFpAeVOv2tZYTUK-zVn1E,5719
|
|
270
|
-
fractal_server-2.18.
|
|
271
|
-
fractal_server-2.18.
|
|
272
|
-
fractal_server-2.18.
|
|
273
|
-
fractal_server-2.18.
|
|
274
|
-
fractal_server-2.18.
|
|
270
|
+
fractal_server-2.18.6.dist-info/licenses/LICENSE,sha256=QKAharUuhxL58kSoLizKJeZE3mTCBnX6ucmz8W0lxlk,1576
|
|
271
|
+
fractal_server-2.18.6.dist-info/WHEEL,sha256=eycQt0QpYmJMLKpE3X9iDk8R04v2ZF0x82ogq-zP6bQ,79
|
|
272
|
+
fractal_server-2.18.6.dist-info/entry_points.txt,sha256=3TpdcjmETRYWJxFyAh3z-9955EWua9jdkSnBwxES1uE,60
|
|
273
|
+
fractal_server-2.18.6.dist-info/METADATA,sha256=8kWN7fybjXbZX3Ull8rBcymWRBDqGRGkNlsSupUCyuM,4183
|
|
274
|
+
fractal_server-2.18.6.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|