fractal-server 2.6.4__py3-none-any.whl → 2.7.0a0__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 (28) hide show
  1. fractal_server/__init__.py +1 -1
  2. fractal_server/app/models/v2/__init__.py +2 -0
  3. fractal_server/app/models/v2/task.py +27 -0
  4. fractal_server/app/routes/api/v2/__init__.py +4 -0
  5. fractal_server/app/routes/api/v2/_aux_functions.py +0 -61
  6. fractal_server/app/routes/api/v2/_aux_functions_tasks.py +209 -0
  7. fractal_server/app/routes/api/v2/submit.py +16 -3
  8. fractal_server/app/routes/api/v2/task.py +59 -72
  9. fractal_server/app/routes/api/v2/task_collection.py +20 -4
  10. fractal_server/app/routes/api/v2/task_collection_custom.py +44 -18
  11. fractal_server/app/routes/api/v2/task_group.py +130 -0
  12. fractal_server/app/routes/api/v2/workflow.py +24 -3
  13. fractal_server/app/routes/api/v2/workflowtask.py +4 -7
  14. fractal_server/app/routes/auth/_aux_auth.py +42 -0
  15. fractal_server/app/schemas/v2/__init__.py +5 -0
  16. fractal_server/app/schemas/v2/task.py +2 -1
  17. fractal_server/app/schemas/v2/task_group.py +23 -0
  18. fractal_server/app/schemas/v2/workflow.py +5 -0
  19. fractal_server/app/schemas/v2/workflowtask.py +4 -0
  20. fractal_server/migrations/versions/7cf1baae8fb4_task_group_v2.py +66 -0
  21. fractal_server/tasks/v2/background_operations.py +16 -35
  22. fractal_server/tasks/v2/background_operations_ssh.py +15 -2
  23. fractal_server/tasks/v2/database_operations.py +54 -0
  24. {fractal_server-2.6.4.dist-info → fractal_server-2.7.0a0.dist-info}/METADATA +1 -1
  25. {fractal_server-2.6.4.dist-info → fractal_server-2.7.0a0.dist-info}/RECORD +28 -23
  26. {fractal_server-2.6.4.dist-info → fractal_server-2.7.0a0.dist-info}/LICENSE +0 -0
  27. {fractal_server-2.6.4.dist-info → fractal_server-2.7.0a0.dist-info}/WHEEL +0 -0
  28. {fractal_server-2.6.4.dist-info → fractal_server-2.7.0a0.dist-info}/entry_points.txt +0 -0
@@ -2,17 +2,19 @@ import json
2
2
  import os
3
3
  from pathlib import Path
4
4
  from tempfile import TemporaryDirectory
5
+ from typing import Optional
5
6
 
6
7
  from sqlalchemy.orm.attributes import flag_modified
7
8
 
8
9
  from ...app.models.v2 import CollectionStateV2
9
10
  from ._TaskCollectPip import _TaskCollectPip
10
11
  from .background_operations import _handle_failure
11
- from .background_operations import _insert_tasks
12
12
  from .background_operations import _prepare_tasks_metadata
13
13
  from .background_operations import _set_collection_state_data_status
14
+ from .database_operations import create_db_task_group_and_tasks
14
15
  from fractal_server.app.db import get_sync_db
15
16
  from fractal_server.app.schemas.v2 import CollectionStatusV2
17
+ from fractal_server.app.schemas.v2 import TaskGroupCreateV2
16
18
  from fractal_server.app.schemas.v2.manifest import ManifestV2
17
19
  from fractal_server.config import get_settings
18
20
  from fractal_server.logger import get_logger
@@ -108,10 +110,13 @@ def _customize_and_run_template(
108
110
 
109
111
 
110
112
  def background_collect_pip_ssh(
113
+ *,
111
114
  state_id: int,
112
115
  task_pkg: _TaskCollectPip,
113
116
  fractal_ssh: FractalSSH,
114
117
  tasks_base_dir: str,
118
+ user_id: int,
119
+ user_group_id: Optional[int],
115
120
  ) -> None:
116
121
  """
117
122
  Collect a task package over SSH
@@ -310,7 +315,15 @@ def background_collect_pip_ssh(
310
315
  package_root=Path(package_root_remote),
311
316
  python_bin=Path(python_bin),
312
317
  )
313
- _insert_tasks(task_list=task_list, db=db)
318
+
319
+ create_db_task_group_and_tasks(
320
+ task_list=task_list,
321
+ task_group_obj=TaskGroupCreateV2(),
322
+ user_id=user_id,
323
+ user_group_id=user_group_id,
324
+ db=db,
325
+ )
326
+
314
327
  logger.debug("collecting - END")
315
328
 
316
329
  # Finalize (write metadata to DB)
@@ -0,0 +1,54 @@
1
+ from typing import Optional
2
+
3
+ from sqlalchemy.orm import Session as DBSyncSession
4
+
5
+ from fractal_server.app.models.v2 import TaskGroupV2
6
+ from fractal_server.app.models.v2 import TaskV2
7
+ from fractal_server.app.schemas.v2 import TaskCreateV2
8
+ from fractal_server.app.schemas.v2 import TaskGroupCreateV2
9
+
10
+
11
+ def _get_task_type(task: TaskCreateV2) -> str:
12
+ if task.command_non_parallel is None:
13
+ return "parallel"
14
+ elif task.command_parallel is None:
15
+ return "non_parallel"
16
+ else:
17
+ return "compound"
18
+
19
+
20
+ def create_db_task_group_and_tasks(
21
+ *,
22
+ task_list: list[TaskCreateV2],
23
+ task_group_obj: TaskGroupCreateV2,
24
+ user_id: int,
25
+ db: DBSyncSession,
26
+ user_group_id: Optional[int] = None,
27
+ ) -> TaskGroupV2:
28
+ """
29
+ Create a `TaskGroupV2` with N `TaskV2`s, and insert them into the database.
30
+
31
+ Arguments:
32
+ task_group:
33
+ task_list:
34
+ user_id:
35
+ user_group_id: Can be `None`
36
+ db: A synchronous database session
37
+ """
38
+ actual_task_list = [
39
+ TaskV2(
40
+ **task.dict(),
41
+ type=_get_task_type(task),
42
+ )
43
+ for task in task_list
44
+ ]
45
+ task_group = TaskGroupV2(
46
+ user_id=user_id,
47
+ user_group_id=user_group_id,
48
+ task_list=actual_task_list,
49
+ **task_group_obj.dict(),
50
+ )
51
+ db.add(task_group)
52
+ db.commit()
53
+ db.refresh(task_group)
54
+ return task_group
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: fractal-server
3
- Version: 2.6.4
3
+ Version: 2.7.0a0
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=3HDGieLq1s25BWP9M9gIGiIzlQ7oJfSC0HfKaBGgnj8,22
1
+ fractal_server/__init__.py,sha256=ZS0eSCN-H2wC1jN2xuEEQO0H7w40xuoUIC5HTgQKC2o,24
2
2
  fractal_server/__main__.py,sha256=WcBAkmVE9aH5mDI6wGkVmPAql2N5Vyk0A-7zuUl8WX0,6122
3
3
  fractal_server/alembic.ini,sha256=MWwi7GzjzawI9cCAK1LW7NxIBQDUqD12-ptJoq5JpP0,3153
4
4
  fractal_server/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -15,12 +15,12 @@ fractal_server/app/models/v1/project.py,sha256=JG7b5J9CzVNxua4MaMYpfB57xt2qjbXr5
15
15
  fractal_server/app/models/v1/state.py,sha256=m9gMZqqnm3oDpJNJp-Lht4kM7oO7pcEI7sL1g7LFvWU,1043
16
16
  fractal_server/app/models/v1/task.py,sha256=uFXam7eu3Ye1Yt7_g7llCzY8BetmDRilsq5hR2C1Zbg,2640
17
17
  fractal_server/app/models/v1/workflow.py,sha256=dnY5eMaOe3oZv8arn00RNX9qVkBtTLG-vYdWXcQuyo4,3950
18
- fractal_server/app/models/v2/__init__.py,sha256=uLzdInqATSwi0bS_V4vKB-TqFrOFaXuxCAbU73c0f24,473
18
+ fractal_server/app/models/v2/__init__.py,sha256=yvIE6kuqYEoF_kuCjl1AIjpMRi0VuTDWRJaaEzs9RQ8,522
19
19
  fractal_server/app/models/v2/collection_state.py,sha256=nxb042i8tt8rCpmgbFJoBCYWU-34m0HdUfO9YurTp8k,588
20
20
  fractal_server/app/models/v2/dataset.py,sha256=-7sxHEw4IIAvF_uSan7tA3o8hvoakBkQ0SRvqS2iOQU,1455
21
21
  fractal_server/app/models/v2/job.py,sha256=ypJmN-qspkKBGhBG7Mt-HypSQqcQ2EmB4Bzzb2-y550,1535
22
22
  fractal_server/app/models/v2/project.py,sha256=rAHoh5KfYwIaW7rTX0_O0jvWmxEvfo1BafvmcXuSSRk,786
23
- fractal_server/app/models/v2/task.py,sha256=Esf2j9c-0pGYjdbb__Ptpdx7NCAKVxqbQMoza524miU,1286
23
+ fractal_server/app/models/v2/task.py,sha256=JuRo18JBiHxuujux0Uw-AWzj8L0ln2ZMJA7zQn4KQU8,2074
24
24
  fractal_server/app/models/v2/workflow.py,sha256=YBgFGCziUgU0aJ5EM3Svu9W2c46AewZO9VBlFCHiSps,1069
25
25
  fractal_server/app/models/v2/workflowtask.py,sha256=iDuJYk8kp4PNqGmbKRtGI7y-QsbjkNd_gDsbMzL4i-g,1274
26
26
  fractal_server/app/routes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -37,21 +37,23 @@ fractal_server/app/routes/api/v1/task.py,sha256=eW89nMCjpD4G6tHXDo2qGBKqWaPirjH6
37
37
  fractal_server/app/routes/api/v1/task_collection.py,sha256=VYxhtd_idBppgJM7-FCHikI2OKMAIz05fhV_TsJpWI8,9060
38
38
  fractal_server/app/routes/api/v1/workflow.py,sha256=2T93DuEnSshaDCue-JPmjuvGCtbk6lt9pFMuPt783t8,11217
39
39
  fractal_server/app/routes/api/v1/workflowtask.py,sha256=OYYConwJbmNULDw5I3T-UbSJKrbbBiAHbbBeVcpoFKQ,5785
40
- fractal_server/app/routes/api/v2/__init__.py,sha256=301enf_GsL27_CnG6lSbMIeoz9-rrb3R2iDSs5pk4q8,1650
41
- fractal_server/app/routes/api/v2/_aux_functions.py,sha256=mAsJs3QeCrIYKmkXo5aqhrGCbyvbPg_fqZWQNJ-vI8o,13746
40
+ fractal_server/app/routes/api/v2/__init__.py,sha256=_2Yce3aFT-t2FF_Yk_KbNgmG4FJKXlY3QTqib64yhIs,1807
41
+ fractal_server/app/routes/api/v2/_aux_functions.py,sha256=ayRA66dnsaVGGhCsFJ4sbaseQSXo5bGbnwjOs4oCdKI,11893
42
+ fractal_server/app/routes/api/v2/_aux_functions_tasks.py,sha256=1s_zuQUd4lPL2jqb7nPRP3ZcII6A4EmvX1Gi8xxxWHo,5713
42
43
  fractal_server/app/routes/api/v2/dataset.py,sha256=Eilf_BAGjicIhqUiVwI86jlW45ineA5sVzxXW4b2GoQ,8329
43
44
  fractal_server/app/routes/api/v2/images.py,sha256=JR1rR6qEs81nacjriOXAOBQjAbCXF4Ew7M7mkWdxBU0,7920
44
45
  fractal_server/app/routes/api/v2/job.py,sha256=Bga2Kz1OjvDIdxZObWaaXVhNIhC_5JKhKRjEH2_ayEE,5157
45
46
  fractal_server/app/routes/api/v2/project.py,sha256=eWYFJ7F2ZYQcpi-_n-rhPF-Q4gJhzYBsVGYFhHZZXAE,6653
46
47
  fractal_server/app/routes/api/v2/status.py,sha256=6N9DSZ4iFqbZImorWfEAPoyoFUgEruo4Hweqo0x0xXU,6435
47
- fractal_server/app/routes/api/v2/submit.py,sha256=SVTV9wGC_mrKWHHxWtjvsdtiRzOeSRlw2PlDYLk66Ew,9006
48
- fractal_server/app/routes/api/v2/task.py,sha256=XDKNmin-gyLpA6eVgh89OdrNq92Vkrtxjr8VI-PIV2E,8548
49
- fractal_server/app/routes/api/v2/task_collection.py,sha256=3ugtkrlrFWvLSHXomF0oOg2Ayg2ige1gr5F51BCQEL4,12950
50
- fractal_server/app/routes/api/v2/task_collection_custom.py,sha256=Q9vVicfY_VJKLu7yBox2KnBSiPBDZxAnoxykWmwD8X0,6291
51
- fractal_server/app/routes/api/v2/workflow.py,sha256=rMCcclz9aJAMSVLncUdSDGrgkKbn4KOCZTqZtqs2HDY,10428
52
- fractal_server/app/routes/api/v2/workflowtask.py,sha256=-3-c8DDnxGjMwWbX_h5V5OLaC_iCLXYzwWKBUaL-5wE,7060
48
+ fractal_server/app/routes/api/v2/submit.py,sha256=h7mjmea_VNCriGiA4HRuyxLHlvd9aGfTAFXK3bSsvzc,9422
49
+ fractal_server/app/routes/api/v2/task.py,sha256=CZQjI5IKxeN23YTu3eTjPuPcO6BSmcAXQR3Pcy0WSuQ,7828
50
+ fractal_server/app/routes/api/v2/task_collection.py,sha256=9trKrJDuaKKgdn-mG06VuFpyObhbcCD8AstaxN4lAOM,13507
51
+ fractal_server/app/routes/api/v2/task_collection_custom.py,sha256=T3RoxQWmJVipEdXSjbD_Zdw_mc3IIYT3aDLZIQ_StIM,7272
52
+ fractal_server/app/routes/api/v2/task_group.py,sha256=jTPXYohA1x9y4u5HWRs_1h3tgjPzlnkMHEG7vqealSA,3855
53
+ fractal_server/app/routes/api/v2/workflow.py,sha256=q4_sFCSw-_1oC4FENv_HIInDF_2uJG5QXqiH9Ns_ZK4,11330
54
+ fractal_server/app/routes/api/v2/workflowtask.py,sha256=TIOePM13uK3GKVhtGK2wBB341ZFheBYQKTfXuPfdymE,6999
53
55
  fractal_server/app/routes/auth/__init__.py,sha256=fao6CS0WiAjHDTvBzgBVV_bSXFpEAeDBF6Z6q7rRkPc,1658
54
- fractal_server/app/routes/auth/_aux_auth.py,sha256=a3DCj6_tekf4Bfu8Kax9uxVGbTuVsONgki7E6AJUN_8,3269
56
+ fractal_server/app/routes/auth/_aux_auth.py,sha256=TN98qypik2pwcRpnlVQ9VOBFEW5HBOLqkpD5PgaOT44,4661
55
57
  fractal_server/app/routes/auth/current_user.py,sha256=s3R1O53Qnow1LqDW-UpkYvfKKSJwLrDWGeMtsIEMUNs,4462
56
58
  fractal_server/app/routes/auth/group.py,sha256=eT-1c0Ow8KbYkKEMQ5ebhEAeRixwJs2kQW45UIutH5w,5833
57
59
  fractal_server/app/routes/auth/group_names.py,sha256=zvYDfhxKlDmbSr-oLXYy6WUVkPPTvzH6ZJtuoNdGZbE,960
@@ -139,17 +141,18 @@ fractal_server/app/schemas/v1/state.py,sha256=GYeOE_1PtDOgu5W4t_3gw3DBHXH2aCGzIN
139
141
  fractal_server/app/schemas/v1/task.py,sha256=7BxOZ_qoRQ8n3YbQpDvB7VMcxB5fSYQmR5RLIWhuJ5U,3704
140
142
  fractal_server/app/schemas/v1/task_collection.py,sha256=uvq9bcMaGD_qHsh7YtcpoSAkVAbw12eY4DocIO3MKOg,3057
141
143
  fractal_server/app/schemas/v1/workflow.py,sha256=tuOs5E5Q_ozA8if7YPZ07cQjzqB_QMkBS4u92qo4Ro0,4618
142
- fractal_server/app/schemas/v2/__init__.py,sha256=kmM4NfSGIL0I4xVtnmMST20kfVo3nBBG-Ssk8vJAvLs,1979
144
+ fractal_server/app/schemas/v2/__init__.py,sha256=BHbRPSBLjGaCpmjd8OJSycKhBLfZY5b1lj0z9sLR17o,2273
143
145
  fractal_server/app/schemas/v2/dataset.py,sha256=dLT52tV4dSf2HrFNak4vdQEn8PT_04IUrGnd2z-AXIU,2599
144
146
  fractal_server/app/schemas/v2/dumps.py,sha256=ZrJCHTv9oU2QMNjPUSBO3DIPRO3qDvbxpAGpernpf-Q,1720
145
147
  fractal_server/app/schemas/v2/job.py,sha256=zfF9K3v4jWUJ7M482ta2CkqUJ4tVT4XfVt60p9IRhP0,3250
146
148
  fractal_server/app/schemas/v2/manifest.py,sha256=N37IWohcfO3_y2l8rVM0h_1nZq7m4Izxk9iL1vtwBJw,6243
147
149
  fractal_server/app/schemas/v2/project.py,sha256=u7S4B-bote1oGjzAGiZ-DuQIyeRAGqJsI71Tc1EtYE0,736
148
150
  fractal_server/app/schemas/v2/status.py,sha256=SQaUpQkjFq5c5k5J4rOjNhuQaDOEg8lksPhkKmPU5VU,332
149
- fractal_server/app/schemas/v2/task.py,sha256=XsN8w1Szs8BrxxRtKyWCHKjN4Od-Kmlhi769JEplL-M,4804
151
+ fractal_server/app/schemas/v2/task.py,sha256=TpMBinf3Mf2Kqlj1IgiHkf6Blob_bjXyIM-7xgK7XqY,4814
150
152
  fractal_server/app/schemas/v2/task_collection.py,sha256=_utBv7_kcRJCbPdWezasU8GrikI_QFPKeIl4vyAgDd4,6155
151
- fractal_server/app/schemas/v2/workflow.py,sha256=Zzx3e-qgkH8le0FUmAx9UrV5PWd7bj14PPXUh_zgZXM,1827
152
- fractal_server/app/schemas/v2/workflowtask.py,sha256=TN-mdkuE_EWet9Wk-xFrUwIt_tXYcw88WOKMnUcchKk,5665
153
+ fractal_server/app/schemas/v2/task_group.py,sha256=8A4MgLgSIRBdb5Q10Ae7RmsRdZkVtGRxD6cIdn8Gjho,419
154
+ fractal_server/app/schemas/v2/workflow.py,sha256=7jqZhGn6plFSU8EkQsvvnDMh5N8m7GouRt1DIXmweIA,1986
155
+ fractal_server/app/schemas/v2/workflowtask.py,sha256=t29n7TM2Z_bcFC8RKor694dcU_cGaasUSuX4Q9oQikY,5758
153
156
  fractal_server/app/security/__init__.py,sha256=V1NOWlmaFZHMR6SrkMl62jyAuqYONyo8lyGvR6UZesM,12312
154
157
  fractal_server/app/user_settings.py,sha256=aZgQ3i0JkHfgwLGW1ee6Gzr1ae3IioFfJKKSsSS8Svk,1312
155
158
  fractal_server/config.py,sha256=gX0aYwDwbC5y7JNorifON84YMveubb7XTb4sH14N3KM,23667
@@ -173,6 +176,7 @@ fractal_server/migrations/versions/50a13d6138fd_initial_schema.py,sha256=zwXegXs
173
176
  fractal_server/migrations/versions/5bf02391cfef_v2.py,sha256=axhNkr_H6R4rRbY7oGYazNbFvPXeSyBDWFVbKNmiqs8,8433
174
177
  fractal_server/migrations/versions/70e77f1c38b0_add_applyworkflow_first_task_index_and_.py,sha256=Q-DsMzG3IcUV2Ol1dhJWosDvKERamBE6QvA2zzS5zpQ,1632
175
178
  fractal_server/migrations/versions/71eefd1dd202_add_slurm_accounts.py,sha256=mbWuCkTpRAdGbRhW7lhXs_e5S6O37UAcCN6JfoY5H8A,1353
179
+ fractal_server/migrations/versions/7cf1baae8fb4_task_group_v2.py,sha256=793xuEk8Pr28q1Hfe9_qNWWtU6ysXYdOFVRUPO_MB1o,1996
176
180
  fractal_server/migrations/versions/84bf0fffde30_add_dumps_to_applyworkflow.py,sha256=NSCuhANChsg76vBkShBl-9tQ4VEHubOjtAv1etHhlvY,2684
177
181
  fractal_server/migrations/versions/8f79bd162e35_add_docs_info_and_docs_link_to_task_.py,sha256=6pgODDtyAxevZvAJBj9IJ41inhV1RpwbpZr_qfPPu1A,1115
178
182
  fractal_server/migrations/versions/94a47ea2d3ff_remove_cache_dir_slurm_user_and_slurm_.py,sha256=yL3-Hvzw5jBLKj4LFP1z5ofZE9L9W3tLwYtPNW7z4ko,1508
@@ -202,8 +206,9 @@ fractal_server/tasks/v1/utils.py,sha256=J9oKys-82OehBxOon5wWl3CxjVBgYWeVEEyWGVFn
202
206
  fractal_server/tasks/v2/_TaskCollectPip.py,sha256=kWQNMNZ8OEddkYhmhsk3E6ArcaD7qe4vsjYYx9vbrUg,4900
203
207
  fractal_server/tasks/v2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
204
208
  fractal_server/tasks/v2/_venv_pip.py,sha256=6NCItfeWgO9BDnlfhoCfiUG5UCGGz_SJz4Mfn4Jg_nk,6489
205
- fractal_server/tasks/v2/background_operations.py,sha256=CQwQon5RKAXrjsN255Okh5dcT0R45axgqoPW3EB-v_Q,11527
206
- fractal_server/tasks/v2/background_operations_ssh.py,sha256=K2_MLmHaYBIyT9PfeLsA5JpNH6V1SHczNdQI6hH71GM,14112
209
+ fractal_server/tasks/v2/background_operations.py,sha256=Z-AlIIYGbwoZMQgpAM_4PDgh3w5xk-cwrJXwcOiJk_M,11171
210
+ fractal_server/tasks/v2/background_operations_ssh.py,sha256=Tw-vuGbxjvXF90QSbkvoRzxSGYLdjGUDO6n0tKHML1s,14494
211
+ fractal_server/tasks/v2/database_operations.py,sha256=_55kLUMWuOYQANuN0QDtDt-GWby4hDKPJp5NOB4ZoxA,1396
207
212
  fractal_server/tasks/v2/endpoint_operations.py,sha256=gT38pl5TEH6WNWOtg4Itegt2lTJJI6YRa7fEj9Y4x2s,4226
208
213
  fractal_server/tasks/v2/templates/_1_create_venv.sh,sha256=5uW0ETYxl5xiQEXP107zgq8V_-vf3k5NzMMj1hSLjas,1015
209
214
  fractal_server/tasks/v2/templates/_2_upgrade_pip.sh,sha256=ca5Yng6JgJYu-a4QrsIsatwUmrLdRWBKw7_VJrY7WLY,555
@@ -214,8 +219,8 @@ fractal_server/tasks/v2/utils.py,sha256=JOyCacb6MNvrwfLNTyLwcz8y79J29YuJeJ2MK5kq
214
219
  fractal_server/urls.py,sha256=5o_qq7PzKKbwq12NHSQZDmDitn5RAOeQ4xufu-2v9Zk,448
215
220
  fractal_server/utils.py,sha256=b7WwFdcFZ8unyT65mloFToYuEDXpQoHRcmRNqrhd_dQ,2115
216
221
  fractal_server/zip_tools.py,sha256=xYpzBshysD2nmxkD5WLYqMzPYUcCRM3kYy-7n9bJL-U,4426
217
- fractal_server-2.6.4.dist-info/LICENSE,sha256=QKAharUuhxL58kSoLizKJeZE3mTCBnX6ucmz8W0lxlk,1576
218
- fractal_server-2.6.4.dist-info/METADATA,sha256=P-YpGYfcb14PaWovFUZmZRKGEXyGXPCYOfgKybmI0Jg,4628
219
- fractal_server-2.6.4.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
220
- fractal_server-2.6.4.dist-info/entry_points.txt,sha256=8tV2kynvFkjnhbtDnxAqImL6HMVKsopgGfew0DOp5UY,58
221
- fractal_server-2.6.4.dist-info/RECORD,,
222
+ fractal_server-2.7.0a0.dist-info/LICENSE,sha256=QKAharUuhxL58kSoLizKJeZE3mTCBnX6ucmz8W0lxlk,1576
223
+ fractal_server-2.7.0a0.dist-info/METADATA,sha256=2AODEnxq0BSIyIof4wmwTTDXE21-DCtH8QtGzts8V0U,4630
224
+ fractal_server-2.7.0a0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
225
+ fractal_server-2.7.0a0.dist-info/entry_points.txt,sha256=8tV2kynvFkjnhbtDnxAqImL6HMVKsopgGfew0DOp5UY,58
226
+ fractal_server-2.7.0a0.dist-info/RECORD,,