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.
@@ -1 +1 @@
1
- __VERSION__ = "1.4.0a4"
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("/project/dataset/", response_model=list[DatasetRead])
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("/project/job/", response_model=list[ApplyWorkflowRead])
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("/project/workflow/", response_model=list[WorkflowRead])
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
- fastapi_users.get_users_router(UserRead, UserUpdate),
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[WorkflowRead]
130
+ workflow_dump: Optional[dict[str, Any]]
132
131
  input_dataset_id: Optional[int]
133
- input_dataset_dump: Optional[DatasetRead]
132
+ input_dataset_dump: Optional[dict[str, Any]]
134
133
  output_dataset_id: Optional[int]
135
- output_dataset_dump: Optional[DatasetRead]
134
+ output_dataset_dump: Optional[dict[str, Any]]
136
135
  start_timestamp: datetime
137
136
  end_timestamp: Optional[datetime]
138
137
  status: str
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: fractal-server
3
- Version: 1.4.0a4
3
+ Version: 1.4.0a6
4
4
  Summary: Server 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,4 +1,4 @@
1
- fractal_server/__init__.py,sha256=JfZWaC1BqnxbqOUgf5lHzgHzu1_rNvq5jDI6N85FkOE,24
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=UWa17aG35Cg-9YcnVWhO7ocjb7OcVobzzklmFkb6KvM,14971
20
- fractal_server/app/routes/api/v1/job.py,sha256=HrkffALjcA9Xtz5MraHBSsCL6cPulNt-1S7YnghQTNA,5389
21
- fractal_server/app/routes/api/v1/project.py,sha256=VH0rP3DBIIxpQ96iD1_R0gXKZ2otJ755A0HvEoL3yqQ,11414
22
- fractal_server/app/routes/api/v1/task.py,sha256=cJp9ucKtGfzU3jalO3A-6yMBMF-0q69Vd5n-YceKfbE,5592
23
- fractal_server/app/routes/api/v1/task_collection.py,sha256=wZI89f3jQ653IcNxn932IqHVg2bKLpHlkRP0tevvWv0,11723
24
- fractal_server/app/routes/api/v1/workflow.py,sha256=MQC5dLtf6r-aAlauiL3v9bEpJjLf-9OLJ0XgS0nLbH4,9824
25
- fractal_server/app/routes/api/v1/workflowtask.py,sha256=BW2qEEl078vPnFV3zVkvVSU9nWLKM4bAl0tMtoGqAto,5429
26
- fractal_server/app/routes/auth.py,sha256=fdrGvXYkG2oKF9q0e7WhB01z7MCTbftxt0oM-OcAcsM,3403
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=QoCJCe3tTOvLG05UGTyG6Ijpd3UnIye3snSasX1sjpc,3948
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.0a4.dist-info/LICENSE,sha256=QKAharUuhxL58kSoLizKJeZE3mTCBnX6ucmz8W0lxlk,1576
80
- fractal_server-1.4.0a4.dist-info/METADATA,sha256=gjG77QQZKX2Z6tT_RvSBx5h1XDfQVG7JxRcGd3CNG2w,3773
81
- fractal_server-1.4.0a4.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
82
- fractal_server-1.4.0a4.dist-info/entry_points.txt,sha256=8tV2kynvFkjnhbtDnxAqImL6HMVKsopgGfew0DOp5UY,58
83
- fractal_server-1.4.0a4.dist-info/RECORD,,
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,,