fractal-server 1.4.0a4__py3-none-any.whl → 1.4.0a6__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/routes/api/v1/dataset.py +6 -6
- fractal_server/app/routes/api/v1/job.py +2 -2
- fractal_server/app/routes/api/v1/project.py +3 -3
- fractal_server/app/routes/api/v1/task.py +3 -3
- fractal_server/app/routes/api/v1/task_collection.py +1 -1
- fractal_server/app/routes/api/v1/workflow.py +4 -4
- fractal_server/app/routes/api/v1/workflowtask.py +3 -3
- fractal_server/app/routes/auth.py +14 -1
- fractal_server/app/schemas/applyworkflow.py +4 -5
- {fractal_server-1.4.0a4.dist-info → fractal_server-1.4.0a6.dist-info}/METADATA +1 -1
- {fractal_server-1.4.0a4.dist-info → fractal_server-1.4.0a6.dist-info}/RECORD +15 -15
- {fractal_server-1.4.0a4.dist-info → fractal_server-1.4.0a6.dist-info}/LICENSE +0 -0
- {fractal_server-1.4.0a4.dist-info → fractal_server-1.4.0a6.dist-info}/WHEEL +0 -0
- {fractal_server-1.4.0a4.dist-info → fractal_server-1.4.0a6.dist-info}/entry_points.txt +0 -0
fractal_server/__init__.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
__VERSION__ = "1.4.
|
1
|
+
__VERSION__ = "1.4.0a6"
|
@@ -81,7 +81,7 @@ async def read_dataset_list(
|
|
81
81
|
|
82
82
|
|
83
83
|
@router.get(
|
84
|
-
"/project/{project_id}/dataset/{dataset_id}",
|
84
|
+
"/project/{project_id}/dataset/{dataset_id}/",
|
85
85
|
response_model=DatasetRead,
|
86
86
|
)
|
87
87
|
async def read_dataset(
|
@@ -105,7 +105,7 @@ async def read_dataset(
|
|
105
105
|
|
106
106
|
|
107
107
|
@router.patch(
|
108
|
-
"/project/{project_id}/dataset/{dataset_id}",
|
108
|
+
"/project/{project_id}/dataset/{dataset_id}/",
|
109
109
|
response_model=DatasetRead,
|
110
110
|
)
|
111
111
|
async def update_dataset(
|
@@ -143,7 +143,7 @@ async def update_dataset(
|
|
143
143
|
|
144
144
|
|
145
145
|
@router.delete(
|
146
|
-
"/project/{project_id}/dataset/{dataset_id}",
|
146
|
+
"/project/{project_id}/dataset/{dataset_id}/",
|
147
147
|
status_code=204,
|
148
148
|
)
|
149
149
|
async def delete_dataset(
|
@@ -246,7 +246,7 @@ async def get_resource_list(
|
|
246
246
|
|
247
247
|
|
248
248
|
@router.patch(
|
249
|
-
"/project/{project_id}/dataset/{dataset_id}/resource/{resource_id}",
|
249
|
+
"/project/{project_id}/dataset/{dataset_id}/resource/{resource_id}/",
|
250
250
|
response_model=ResourceRead,
|
251
251
|
)
|
252
252
|
async def update_resource(
|
@@ -287,7 +287,7 @@ async def update_resource(
|
|
287
287
|
|
288
288
|
|
289
289
|
@router.delete(
|
290
|
-
"/project/{project_id}/dataset/{dataset_id}/resource/{resource_id}",
|
290
|
+
"/project/{project_id}/dataset/{dataset_id}/resource/{resource_id}/",
|
291
291
|
status_code=204,
|
292
292
|
)
|
293
293
|
async def delete_resource(
|
@@ -481,7 +481,7 @@ async def get_workflowtask_status(
|
|
481
481
|
return response_body
|
482
482
|
|
483
483
|
|
484
|
-
@router.get("/
|
484
|
+
@router.get("/dataset/", response_model=list[DatasetRead])
|
485
485
|
async def get_user_datasets(
|
486
486
|
user: User = Depends(current_active_user),
|
487
487
|
) -> list[DatasetRead]:
|
@@ -27,7 +27,7 @@ from ._aux_functions import _get_workflow_check_owner
|
|
27
27
|
router = APIRouter()
|
28
28
|
|
29
29
|
|
30
|
-
@router.get("/
|
30
|
+
@router.get("/job/", response_model=list[ApplyWorkflowRead])
|
31
31
|
async def get_user_jobs(
|
32
32
|
user: User = Depends(current_active_user),
|
33
33
|
) -> list[ApplyWorkflowRead]:
|
@@ -66,7 +66,7 @@ async def get_workflow_jobs(
|
|
66
66
|
|
67
67
|
|
68
68
|
@router.get(
|
69
|
-
"/project/{project_id}/job/{job_id}",
|
69
|
+
"/project/{project_id}/job/{job_id}/",
|
70
70
|
response_model=ApplyWorkflowRead,
|
71
71
|
)
|
72
72
|
async def read_job(
|
@@ -95,7 +95,7 @@ async def create_project(
|
|
95
95
|
return db_project
|
96
96
|
|
97
97
|
|
98
|
-
@router.get("/{project_id}", response_model=ProjectRead)
|
98
|
+
@router.get("/{project_id}/", response_model=ProjectRead)
|
99
99
|
async def read_project(
|
100
100
|
project_id: int,
|
101
101
|
user: User = Depends(current_active_user),
|
@@ -111,7 +111,7 @@ async def read_project(
|
|
111
111
|
return project
|
112
112
|
|
113
113
|
|
114
|
-
@router.patch("/{project_id}", response_model=ProjectRead)
|
114
|
+
@router.patch("/{project_id}/", response_model=ProjectRead)
|
115
115
|
async def update_project(
|
116
116
|
project_id: int,
|
117
117
|
project_update: ProjectUpdate,
|
@@ -137,7 +137,7 @@ async def update_project(
|
|
137
137
|
return project
|
138
138
|
|
139
139
|
|
140
|
-
@router.delete("/{project_id}", status_code=204)
|
140
|
+
@router.delete("/{project_id}/", status_code=204)
|
141
141
|
async def delete_project(
|
142
142
|
project_id: int,
|
143
143
|
user: User = Depends(current_active_user),
|
@@ -42,7 +42,7 @@ async def get_list_task(
|
|
42
42
|
return task_list
|
43
43
|
|
44
44
|
|
45
|
-
@router.get("/{task_id}", response_model=TaskRead)
|
45
|
+
@router.get("/{task_id}/", response_model=TaskRead)
|
46
46
|
async def get_task(
|
47
47
|
task_id: int,
|
48
48
|
user: User = Depends(current_active_user),
|
@@ -60,7 +60,7 @@ async def get_task(
|
|
60
60
|
return task
|
61
61
|
|
62
62
|
|
63
|
-
@router.patch("/{task_id}", response_model=TaskRead)
|
63
|
+
@router.patch("/{task_id}/", response_model=TaskRead)
|
64
64
|
async def patch_task(
|
65
65
|
task_id: int,
|
66
66
|
task_update: TaskUpdate,
|
@@ -151,7 +151,7 @@ async def create_task(
|
|
151
151
|
return db_task
|
152
152
|
|
153
153
|
|
154
|
-
@router.delete("/{task_id}", status_code=204)
|
154
|
+
@router.delete("/{task_id}/", status_code=204)
|
155
155
|
async def delete_task(
|
156
156
|
task_id: int,
|
157
157
|
user: User = Depends(current_active_user),
|
@@ -307,7 +307,7 @@ async def collect_tasks_pip(
|
|
307
307
|
return state
|
308
308
|
|
309
309
|
|
310
|
-
@router.get("/collect/{state_id}", response_model=StateRead)
|
310
|
+
@router.get("/collect/{state_id}/", response_model=StateRead)
|
311
311
|
async def check_collection_status(
|
312
312
|
state_id: int,
|
313
313
|
user: User = Depends(current_active_user),
|
@@ -93,7 +93,7 @@ async def create_workflow(
|
|
93
93
|
|
94
94
|
|
95
95
|
@router.get(
|
96
|
-
"/project/{project_id}/workflow/{workflow_id}",
|
96
|
+
"/project/{project_id}/workflow/{workflow_id}/",
|
97
97
|
response_model=WorkflowRead,
|
98
98
|
)
|
99
99
|
async def read_workflow(
|
@@ -114,7 +114,7 @@ async def read_workflow(
|
|
114
114
|
|
115
115
|
|
116
116
|
@router.patch(
|
117
|
-
"/project/{project_id}/workflow/{workflow_id}",
|
117
|
+
"/project/{project_id}/workflow/{workflow_id}/",
|
118
118
|
response_model=WorkflowRead,
|
119
119
|
)
|
120
120
|
async def update_workflow(
|
@@ -166,7 +166,7 @@ async def update_workflow(
|
|
166
166
|
|
167
167
|
|
168
168
|
@router.delete(
|
169
|
-
"/project/{project_id}/workflow/{workflow_id}",
|
169
|
+
"/project/{project_id}/workflow/{workflow_id}/",
|
170
170
|
status_code=status.HTTP_204_NO_CONTENT,
|
171
171
|
)
|
172
172
|
async def delete_workflow(
|
@@ -314,7 +314,7 @@ async def import_workflow(
|
|
314
314
|
return db_workflow
|
315
315
|
|
316
316
|
|
317
|
-
@router.get("/
|
317
|
+
@router.get("/workflow/", response_model=list[WorkflowRead])
|
318
318
|
async def get_user_workflows(
|
319
319
|
user: User = Depends(current_active_user),
|
320
320
|
) -> list[WorkflowRead]:
|
@@ -75,7 +75,7 @@ async def create_workflowtask(
|
|
75
75
|
|
76
76
|
|
77
77
|
@router.get(
|
78
|
-
"/project/{project_id}/workflow/{workflow_id}/wftask/{workflow_task_id}",
|
78
|
+
"/project/{project_id}/workflow/{workflow_id}/wftask/{workflow_task_id}/",
|
79
79
|
response_model=WorkflowTaskRead,
|
80
80
|
)
|
81
81
|
async def read_workflowtask(
|
@@ -96,7 +96,7 @@ async def read_workflowtask(
|
|
96
96
|
|
97
97
|
|
98
98
|
@router.patch(
|
99
|
-
"/project/{project_id}/workflow/{workflow_id}/wftask/{workflow_task_id}",
|
99
|
+
"/project/{project_id}/workflow/{workflow_id}/wftask/{workflow_task_id}/",
|
100
100
|
response_model=WorkflowTaskRead,
|
101
101
|
)
|
102
102
|
async def update_workflowtask(
|
@@ -152,7 +152,7 @@ async def update_workflowtask(
|
|
152
152
|
|
153
153
|
|
154
154
|
@router.delete(
|
155
|
-
"/project/{project_id}/workflow/{workflow_id}/wftask/{workflow_task_id}",
|
155
|
+
"/project/{project_id}/workflow/{workflow_id}/wftask/{workflow_task_id}/",
|
156
156
|
status_code=status.HTTP_204_NO_CONTENT,
|
157
157
|
)
|
158
158
|
async def delete_workflowtask(
|
@@ -39,8 +39,15 @@ router_auth.include_router(
|
|
39
39
|
router_auth.include_router(
|
40
40
|
fastapi_users.get_verify_router(UserRead),
|
41
41
|
)
|
42
|
+
|
43
|
+
# Include users routes, after removing DELETE endpoint (ref
|
44
|
+
# https://github.com/fastapi-users/fastapi-users/discussions/606)
|
45
|
+
users_router = fastapi_users.get_users_router(UserRead, UserUpdate)
|
46
|
+
users_router.routes = [
|
47
|
+
route for route in users_router.routes if route.name != "users:delete_user"
|
48
|
+
]
|
42
49
|
router_auth.include_router(
|
43
|
-
|
50
|
+
users_router,
|
44
51
|
prefix="/users",
|
45
52
|
dependencies=[Depends(current_active_superuser)],
|
46
53
|
)
|
@@ -119,3 +126,9 @@ for client_config in settings.OAUTH_CLIENTS_CONFIG:
|
|
119
126
|
),
|
120
127
|
prefix=f"/{client_name}",
|
121
128
|
)
|
129
|
+
|
130
|
+
|
131
|
+
# Add trailing slash to all routes' paths
|
132
|
+
for route in router_auth.routes:
|
133
|
+
if not route.path.endswith("/"):
|
134
|
+
route.path = f"{route.path}/"
|
@@ -1,13 +1,12 @@
|
|
1
1
|
from datetime import datetime
|
2
2
|
from enum import Enum
|
3
|
+
from typing import Any
|
3
4
|
from typing import Optional
|
4
5
|
|
5
6
|
from pydantic import BaseModel
|
6
7
|
from pydantic import validator
|
7
8
|
|
8
9
|
from ._validators import valstr
|
9
|
-
from .dataset import DatasetRead
|
10
|
-
from .workflow import WorkflowRead
|
11
10
|
|
12
11
|
__all__ = (
|
13
12
|
"_ApplyWorkflowBase",
|
@@ -128,11 +127,11 @@ class ApplyWorkflowRead(_ApplyWorkflowBase):
|
|
128
127
|
project_id: Optional[int]
|
129
128
|
user_email: str
|
130
129
|
workflow_id: Optional[int]
|
131
|
-
workflow_dump: Optional[
|
130
|
+
workflow_dump: Optional[dict[str, Any]]
|
132
131
|
input_dataset_id: Optional[int]
|
133
|
-
input_dataset_dump: Optional[
|
132
|
+
input_dataset_dump: Optional[dict[str, Any]]
|
134
133
|
output_dataset_id: Optional[int]
|
135
|
-
output_dataset_dump: Optional[
|
134
|
+
output_dataset_dump: Optional[dict[str, Any]]
|
136
135
|
start_timestamp: datetime
|
137
136
|
end_timestamp: Optional[datetime]
|
138
137
|
status: str
|
@@ -1,4 +1,4 @@
|
|
1
|
-
fractal_server/__init__.py,sha256=
|
1
|
+
fractal_server/__init__.py,sha256=f8Dtud26HpKHjrFuYNUkxKp-XbpCyKJlfttQZjwzDrE,24
|
2
2
|
fractal_server/__main__.py,sha256=znijcImbcEC4P26ICOhEJ9VY3_5vWdMwQcl-WP25sYA,2202
|
3
3
|
fractal_server/alembic.ini,sha256=MWwi7GzjzawI9cCAK1LW7NxIBQDUqD12-ptJoq5JpP0,3153
|
4
4
|
fractal_server/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -16,14 +16,14 @@ fractal_server/app/routes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJW
|
|
16
16
|
fractal_server/app/routes/api/__init__.py,sha256=EVyZrEq3I_1643QGTPCC5lgCp4xH_auYbrFfogTm4pc,315
|
17
17
|
fractal_server/app/routes/api/v1/__init__.py,sha256=V4nhYyMIqhlJxbotLTYikq_ghb6KID0ZKOOYaOq7C-g,944
|
18
18
|
fractal_server/app/routes/api/v1/_aux_functions.py,sha256=9uh5MNGQyLg3HgSNp2ZrfMfJ_rv6WPN1oznmrWgaYmQ,10139
|
19
|
-
fractal_server/app/routes/api/v1/dataset.py,sha256=
|
20
|
-
fractal_server/app/routes/api/v1/job.py,sha256=
|
21
|
-
fractal_server/app/routes/api/v1/project.py,sha256=
|
22
|
-
fractal_server/app/routes/api/v1/task.py,sha256=
|
23
|
-
fractal_server/app/routes/api/v1/task_collection.py,sha256=
|
24
|
-
fractal_server/app/routes/api/v1/workflow.py,sha256=
|
25
|
-
fractal_server/app/routes/api/v1/workflowtask.py,sha256=
|
26
|
-
fractal_server/app/routes/auth.py,sha256=
|
19
|
+
fractal_server/app/routes/api/v1/dataset.py,sha256=_P8SUXEs5Gh-a82QR06xyZ_F6eX6R_CxmBduNXEeERY,14968
|
20
|
+
fractal_server/app/routes/api/v1/job.py,sha256=07nrsWvPcV-DkFybiMKgHLVDp_CFeFx6pnEKnBNrvL4,5382
|
21
|
+
fractal_server/app/routes/api/v1/project.py,sha256=uP-p9rghQBQ_vRZ2hUw_bT21WVLpqdgJNdxN6z367YI,11417
|
22
|
+
fractal_server/app/routes/api/v1/task.py,sha256=PUPB1pGsWRUrGAyFCKG_AMcLW3IQzIsAhfA3FB1FS_Q,5595
|
23
|
+
fractal_server/app/routes/api/v1/task_collection.py,sha256=bMnhrMkI_45Bttd6J9j_CEmpjQZCV5mTy8_j1Ca8xQg,11724
|
24
|
+
fractal_server/app/routes/api/v1/workflow.py,sha256=rXU-wyU8SFJ7t6tNl2dCiugXzMjFpYV_ljTcYQrC8NE,9819
|
25
|
+
fractal_server/app/routes/api/v1/workflowtask.py,sha256=ZXmZBymcQgt838Bywoxcy6M0l1z2uatHJxq_e45-8T0,5432
|
26
|
+
fractal_server/app/routes/auth.py,sha256=XEerBzlHE7b4XfB6Bk0qYj6edRM6yFZr3UosLzjfvt8,3816
|
27
27
|
fractal_server/app/routes/monitoring.py,sha256=JYE9wxluDamJUiUrbluU9CHc97_7wmuOM4ENg0fvGg8,6747
|
28
28
|
fractal_server/app/runner/.gitignore,sha256=ytzN_oyHWXrGU7iFAtoHSTUbM6Rn6kG0Zkddg0xZk6s,16
|
29
29
|
fractal_server/app/runner/__init__.py,sha256=WNMxT9XFEocPOdJRN6FfMek-LecOpBYXfJxmxupMRUE,13597
|
@@ -45,7 +45,7 @@ fractal_server/app/runner/common.py,sha256=nz0ZuIro0iwZm-OV-e-Y-PrtgKcLK0d7Brzeb
|
|
45
45
|
fractal_server/app/runner/handle_failed_job.py,sha256=PKgJARHjXyv33sDsl7oTINdcTu7EwmFmIkp38RqAE3Q,4641
|
46
46
|
fractal_server/app/schemas/__init__.py,sha256=th51Dzbe94xatOIMVheqlq0rVFy8oI1CHRfzCbjiTSg,1859
|
47
47
|
fractal_server/app/schemas/_validators.py,sha256=7YEbgrnGRpzkLMfZzQNfczEmcNnO__SmVOaBHhzaiXE,1819
|
48
|
-
fractal_server/app/schemas/applyworkflow.py,sha256=
|
48
|
+
fractal_server/app/schemas/applyworkflow.py,sha256=zzQy_vxWjzUE0WnZHQWQBU7GB0a8ZkBczZidl32WOY0,3911
|
49
49
|
fractal_server/app/schemas/dataset.py,sha256=PPqGTsRQ5JEwkiM4NcjPYFckxnCdi_Zov-bWXDm1LUk,3092
|
50
50
|
fractal_server/app/schemas/json_schemas/manifest.json,sha256=yXYKHbYXPYSkSXMTLfTpfCUGBtmQuPTk1xuSXscdba4,1787
|
51
51
|
fractal_server/app/schemas/manifest.py,sha256=xxTd39dAXMK9Ox1y-p3gbyg0zd5udW99pV4JngCUGwM,3819
|
@@ -76,8 +76,8 @@ fractal_server/syringe.py,sha256=3qSMW3YaMKKnLdgnooAINOPxnCOxP7y2jeAQYB21Gdo,278
|
|
76
76
|
fractal_server/tasks/__init__.py,sha256=Wzuxf5EoH1v0fYzRpAZHG_S-Z9f6DmbIsuSvllBCGvc,72
|
77
77
|
fractal_server/tasks/collection.py,sha256=POKvQyS5G5ySybH0r0v21I_ZQ5AREe9kAqr_uFfGyaU,17627
|
78
78
|
fractal_server/utils.py,sha256=b7WwFdcFZ8unyT65mloFToYuEDXpQoHRcmRNqrhd_dQ,2115
|
79
|
-
fractal_server-1.4.
|
80
|
-
fractal_server-1.4.
|
81
|
-
fractal_server-1.4.
|
82
|
-
fractal_server-1.4.
|
83
|
-
fractal_server-1.4.
|
79
|
+
fractal_server-1.4.0a6.dist-info/LICENSE,sha256=QKAharUuhxL58kSoLizKJeZE3mTCBnX6ucmz8W0lxlk,1576
|
80
|
+
fractal_server-1.4.0a6.dist-info/METADATA,sha256=uEKvn9e4l-C6qeB5z6wCLq7skQibIIrDPvjryYEVkMk,3773
|
81
|
+
fractal_server-1.4.0a6.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
|
82
|
+
fractal_server-1.4.0a6.dist-info/entry_points.txt,sha256=8tV2kynvFkjnhbtDnxAqImL6HMVKsopgGfew0DOp5UY,58
|
83
|
+
fractal_server-1.4.0a6.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|