fractal-server 2.11.0a9__py3-none-any.whl → 2.11.0a10__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__ = "2.11.0a9"
1
+ __VERSION__ = "2.11.0a10"
@@ -1,4 +1,6 @@
1
+ import asyncio
1
2
  from pathlib import Path
3
+ from typing import Iterator
2
4
  from typing import Optional
3
5
 
4
6
  from fastapi import APIRouter
@@ -24,6 +26,14 @@ from ._aux_functions import _get_workflow_check_owner
24
26
  from fractal_server.app.models import UserOAuth
25
27
  from fractal_server.app.routes.auth import current_active_user
26
28
 
29
+
30
+ # https://docs.python.org/3/library/asyncio-task.html#asyncio.to_thread
31
+ # This moves the function execution to a separate thread,
32
+ # preventing it from blocking the event loop.
33
+ async def zip_folder_threaded(folder: str) -> Iterator[bytes]:
34
+ return await asyncio.to_thread(_zip_folder_to_byte_stream_iterator, folder)
35
+
36
+
27
37
  router = APIRouter()
28
38
 
29
39
 
@@ -128,8 +138,11 @@ async def download_job_logs(
128
138
  )
129
139
  job = output["job"]
130
140
  zip_name = f"{Path(job.working_dir).name}_archive.zip"
141
+
142
+ zip_bytes_iterator = await zip_folder_threaded(job.working_dir)
143
+
131
144
  return StreamingResponse(
132
- _zip_folder_to_byte_stream_iterator(folder=job.working_dir),
145
+ zip_bytes_iterator,
133
146
  media_type="application/x-zip-compressed",
134
147
  headers={"Content-Disposition": f"attachment;filename={zip_name}"},
135
148
  )
@@ -180,7 +180,7 @@ class WorkflowTaskImportV2(BaseModel, extra=Extra.forbid):
180
180
  args_non_parallel: Optional[dict[str, Any]] = None
181
181
  args_parallel: Optional[dict[str, Any]] = None
182
182
  type_filters: Optional[dict[str, bool]] = None
183
- filters: Optional[dict[str, Any]] = None
183
+ input_filters: Optional[dict[str, Any]] = None
184
184
 
185
185
  task: Union[TaskImportV2, TaskImportV2Legacy]
186
186
 
@@ -191,7 +191,7 @@ class WorkflowTaskImportV2(BaseModel, extra=Extra.forbid):
191
191
  Transform legacy filters (created with fractal-server<2.11.0)
192
192
  into type filters
193
193
  """
194
- if values.get("filters") is not None:
194
+ if values.get("input_filters") is not None:
195
195
  if "type_filters" in values.keys():
196
196
  raise ValueError(
197
197
  "Cannot set filters both through the legacy field "
@@ -201,13 +201,15 @@ class WorkflowTaskImportV2(BaseModel, extra=Extra.forbid):
201
201
  else:
202
202
  # As of 2.11.0, WorkflowTask do not have attribute filters
203
203
  # any more.
204
- if values["filters"]["attributes"] != {}:
204
+ if values["input_filters"]["attributes"] != {}:
205
205
  raise ValueError(
206
206
  "Cannot set attribute filters for WorkflowTasks."
207
207
  )
208
208
  # Convert legacy filters.types into new type_filters
209
- values["type_filters"] = values["filters"].get("types", {})
210
- values["filters"] = None
209
+ values["type_filters"] = values["input_filters"].get(
210
+ "types", {}
211
+ )
212
+ values["input_filters"] = None
211
213
 
212
214
  return values
213
215
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: fractal-server
3
- Version: 2.11.0a9
3
+ Version: 2.11.0a10
4
4
  Summary: Backend component of the Fractal analytics platform
5
5
  Home-page: https://github.com/fractal-analytics-platform/fractal-server
6
6
  License: BSD-3-Clause
@@ -1,4 +1,4 @@
1
- fractal_server/__init__.py,sha256=Cq36Bza-Whq5ZsTq5ttVGI_RHoX8KyV7NfthnFizHn8,25
1
+ fractal_server/__init__.py,sha256=clpVem1dBwk8HjXFnS1878guQBQS-4Cvk0DBQPNJpWQ,26
2
2
  fractal_server/__main__.py,sha256=D2YTmSowmXNyvqOjW_HeItCZT2UliWlySl_owicaZg0,8026
3
3
  fractal_server/alembic.ini,sha256=MWwi7GzjzawI9cCAK1LW7NxIBQDUqD12-ptJoq5JpP0,3153
4
4
  fractal_server/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -48,7 +48,7 @@ fractal_server/app/routes/api/v2/_aux_functions_task_lifecycle.py,sha256=c8eqPXd
48
48
  fractal_server/app/routes/api/v2/_aux_functions_tasks.py,sha256=uhNSs-jcS7ndIUFKiOC1yrDiViw3uvKEXi9UL04BMks,11642
49
49
  fractal_server/app/routes/api/v2/dataset.py,sha256=Y6uZz--YSEGgnPYu05rZ9sr1Ug08bNl2v1h3VeApBe8,9441
50
50
  fractal_server/app/routes/api/v2/images.py,sha256=0qkItqPrAvWEaK3YHUmCCrKrO_tQuzAPf4Te0q8mON8,8832
51
- fractal_server/app/routes/api/v2/job.py,sha256=Bga2Kz1OjvDIdxZObWaaXVhNIhC_5JKhKRjEH2_ayEE,5157
51
+ fractal_server/app/routes/api/v2/job.py,sha256=m89FTh9Px25oXCeWj2k2NdGWQaO2oxMh-6lZppcsJOY,5551
52
52
  fractal_server/app/routes/api/v2/project.py,sha256=eWYFJ7F2ZYQcpi-_n-rhPF-Q4gJhzYBsVGYFhHZZXAE,6653
53
53
  fractal_server/app/routes/api/v2/status.py,sha256=_cDZW-ESYw6zpf-lLFFqko5bLpKhqKrCM6yv1OfqxN4,6300
54
54
  fractal_server/app/routes/api/v2/submit.py,sha256=UMPhWwk4FqZmYtVEu6WLPkSr6a2R4wwgPPeVrx0zRME,8622
@@ -160,7 +160,7 @@ fractal_server/app/schemas/v2/task.py,sha256=9W4xe-p19pbLpjsNJrYVIMpkrlwuCxGAJNO
160
160
  fractal_server/app/schemas/v2/task_collection.py,sha256=9c_yyFcVBXdAZpQQniy1bROhYnQT7G1BflOpMY1joPE,6250
161
161
  fractal_server/app/schemas/v2/task_group.py,sha256=zZfvAH7c3MZC4_An09TMuOkNE_e1Z9XsYEnmN-axHdU,3217
162
162
  fractal_server/app/schemas/v2/workflow.py,sha256=-KWvXnbHBFA3pj5n7mfSyLKJQSqkJmoziIEe7mpLl3M,1875
163
- fractal_server/app/schemas/v2/workflowtask.py,sha256=RLAoKIpc7WFYp20N3Pr6lUu6BkOHpPf4Yvs77FH_Uzg,7658
163
+ fractal_server/app/schemas/v2/workflowtask.py,sha256=xjFTmnKuHSetJvN-9k_GTMbPKwPg-J00zUkc_96QO7E,7726
164
164
  fractal_server/app/security/__init__.py,sha256=qn6idYgl-p5HWea0gTVnz4JnkoxGEkmQjPzvKpDWT0I,14035
165
165
  fractal_server/app/security/signup_email.py,sha256=DrL51UdTSrgjleynMD5CRZwTSOpPrZ96fasRV0fvxDE,1165
166
166
  fractal_server/app/user_settings.py,sha256=OP1yiYKtPadxwM51_Q0hdPk3z90TCN4z1BLpQsXyWiU,1316
@@ -241,8 +241,8 @@ fractal_server/tasks/v2/utils_templates.py,sha256=07TZpJ0Mh_A4lXVXrrH2o1VLFFGwxe
241
241
  fractal_server/urls.py,sha256=QjIKAC1a46bCdiPMu3AlpgFbcv6a4l3ABcd5xz190Og,471
242
242
  fractal_server/utils.py,sha256=PMwrxWFxRTQRl1b9h-NRIbFGPKqpH_hXnkAT3NfZdpY,3571
243
243
  fractal_server/zip_tools.py,sha256=GjDgo_sf6V_DDg6wWeBlZu5zypIxycn_l257p_YVKGc,4876
244
- fractal_server-2.11.0a9.dist-info/LICENSE,sha256=QKAharUuhxL58kSoLizKJeZE3mTCBnX6ucmz8W0lxlk,1576
245
- fractal_server-2.11.0a9.dist-info/METADATA,sha256=xTEE_9-GBVNq4xonqeNLqXtQ62YJvN9IR8ExYa_L9bc,4564
246
- fractal_server-2.11.0a9.dist-info/WHEEL,sha256=RaoafKOydTQ7I_I3JTrPCg6kUmTgtm4BornzOqyEfJ8,88
247
- fractal_server-2.11.0a9.dist-info/entry_points.txt,sha256=8tV2kynvFkjnhbtDnxAqImL6HMVKsopgGfew0DOp5UY,58
248
- fractal_server-2.11.0a9.dist-info/RECORD,,
244
+ fractal_server-2.11.0a10.dist-info/LICENSE,sha256=QKAharUuhxL58kSoLizKJeZE3mTCBnX6ucmz8W0lxlk,1576
245
+ fractal_server-2.11.0a10.dist-info/METADATA,sha256=oQdGPsnAFNH-PEtO239jJjVsxCDWPztSto5qizFAxbw,4565
246
+ fractal_server-2.11.0a10.dist-info/WHEEL,sha256=RaoafKOydTQ7I_I3JTrPCg6kUmTgtm4BornzOqyEfJ8,88
247
+ fractal_server-2.11.0a10.dist-info/entry_points.txt,sha256=8tV2kynvFkjnhbtDnxAqImL6HMVKsopgGfew0DOp5UY,58
248
+ fractal_server-2.11.0a10.dist-info/RECORD,,