fractal-server 2.18.1__py3-none-any.whl → 2.18.2__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.18.1"
1
+ __VERSION__ = "2.18.2"
@@ -71,8 +71,6 @@ class TaskGroupV2(SQLModel, table=True):
71
71
  )
72
72
  env_info: str | None = None
73
73
  venv_path: str | None = None
74
- venv_size_in_kB: int | None = None
75
- venv_file_number: int | None = None
76
74
 
77
75
  active: bool = True
78
76
  timestamp_created: datetime = Field(
@@ -19,6 +19,7 @@ from fractal_server.app.routes.api.v2._aux_functions import _get_workflow_or_404
19
19
  from fractal_server.app.routes.api.v2._aux_functions import (
20
20
  _get_workflowtask_or_404,
21
21
  )
22
+ from fractal_server.app.schemas.v2.job import JobStatusType
22
23
  from fractal_server.app.schemas.v2.sharing import ProjectPermissions
23
24
  from fractal_server.logger import set_logger
24
25
  from fractal_server.zip_tools import _read_single_file_from_zip
@@ -70,6 +71,7 @@ def read_log_file(
70
71
  dataset_id: int,
71
72
  logfile: str,
72
73
  job_working_dir: str,
74
+ job_status: JobStatusType,
73
75
  ) -> str:
74
76
  """
75
77
  Returns the contents of a Job's log file, either directly from the working
@@ -93,12 +95,18 @@ def read_log_file(
93
95
  return _read_single_file_from_zip(
94
96
  file_path=relative_logfile, archive_path=archive_path
95
97
  )
96
-
97
98
  else:
98
- logger.error(
99
- f"Error while retrieving logs for {logfile=} and "
100
- f"{archive_path=}: both files do not exist."
101
- )
99
+ match job_status:
100
+ case JobStatusType.SUBMITTED:
101
+ logger.info(
102
+ f"Neither {logfile=} nor {archive_path=} exist "
103
+ "(for submitted job)."
104
+ )
105
+ case _:
106
+ logger.warning(
107
+ f"Error while retrieving logs for {logfile=} and "
108
+ f"{archive_path=}."
109
+ )
102
110
  return (
103
111
  f"Logs for task '{task_name}' in dataset "
104
112
  f"{dataset_id} are not available."
@@ -458,11 +458,11 @@ async def get_image_log(
458
458
 
459
459
  # Get job.working_dir
460
460
  res = await db.execute(
461
- select(JobV2.working_dir)
461
+ select(JobV2.working_dir, JobV2.status)
462
462
  .join(HistoryRun, HistoryRun.job_id == JobV2.id)
463
463
  .where(HistoryRun.id == history_unit.history_run_id)
464
464
  )
465
- job_working_dir = res.scalar_one_or_none()
465
+ job_working_dir, job_status = res.one()
466
466
 
467
467
  # Get log or placeholder text
468
468
  log = read_log_file(
@@ -470,6 +470,7 @@ async def get_image_log(
470
470
  task_name=wftask.task.name,
471
471
  dataset_id=request_data.dataset_id,
472
472
  job_working_dir=job_working_dir,
473
+ job_status=job_status,
473
474
  )
474
475
  return JSONResponse(content=log)
475
476
 
@@ -525,6 +526,7 @@ async def get_history_unit_log(
525
526
  task_name=wftask.task.name,
526
527
  dataset_id=dataset_id,
527
528
  job_working_dir=job.working_dir,
529
+ job_status=job.status,
528
530
  )
529
531
  return JSONResponse(content=log)
530
532
 
@@ -54,7 +54,8 @@ async def get_user_jobs(
54
54
  LinkUserProjectV2, LinkUserProjectV2.project_id == JobV2.project_id
55
55
  )
56
56
  .where(LinkUserProjectV2.user_id == user.id)
57
- .where(LinkUserProjectV2.is_owner.is_(True))
57
+ .where(LinkUserProjectV2.is_verified.is_(True))
58
+ .order_by(JobV2.start_timestamp.desc())
58
59
  )
59
60
  res = await db.execute(stm)
60
61
  job_list = res.scalars().all()
@@ -86,8 +87,11 @@ async def get_workflow_jobs(
86
87
  required_permissions=ProjectPermissions.READ,
87
88
  db=db,
88
89
  )
89
- stm = select(JobV2).where(JobV2.workflow_id == workflow_id)
90
- res = await db.execute(stm)
90
+ res = await db.execute(
91
+ select(JobV2)
92
+ .where(JobV2.workflow_id == workflow_id)
93
+ .order_by(JobV2.start_timestamp.desc())
94
+ )
91
95
  job_list = res.scalars().all()
92
96
  return job_list
93
97
 
@@ -212,8 +216,11 @@ async def get_job_list(
212
216
  db=db,
213
217
  )
214
218
 
215
- stm = select(JobV2).where(JobV2.project_id == project.id)
216
- res = await db.execute(stm)
219
+ res = await db.execute(
220
+ select(JobV2)
221
+ .where(JobV2.project_id == project.id)
222
+ .order_by(JobV2.start_timestamp.desc())
223
+ )
217
224
  job_list = res.scalars().all()
218
225
  await db.close()
219
226
  if not log:
@@ -84,9 +84,6 @@ class TaskGroupRead(BaseModel):
84
84
  pinned_package_versions_pre: dict[str, str] = Field(default_factory=dict)
85
85
  pinned_package_versions_post: dict[str, str] = Field(default_factory=dict)
86
86
 
87
- venv_size_in_kB: int | None = None
88
- venv_file_number: int | None = None
89
-
90
87
  active: bool
91
88
  timestamp_created: AwareDatetime
92
89
  timestamp_last_used: AwareDatetime
@@ -0,0 +1,48 @@
1
+ """Drop TaskGroup venv size and files number
2
+
3
+ Revision ID: 068496367952
4
+ Revises: b7477cc98f45
5
+ Create Date: 2025-12-10 15:24:47.720796
6
+
7
+ """
8
+
9
+ import sqlalchemy as sa
10
+ from alembic import op
11
+
12
+ # revision identifiers, used by Alembic.
13
+ revision = "068496367952"
14
+ down_revision = "b7477cc98f45"
15
+ branch_labels = None
16
+ depends_on = None
17
+
18
+
19
+ def upgrade() -> None:
20
+ # ### commands auto generated by Alembic - please adjust! ###
21
+ with op.batch_alter_table("taskgroupv2", schema=None) as batch_op:
22
+ batch_op.drop_column("venv_size_in_kB")
23
+ batch_op.drop_column("venv_file_number")
24
+
25
+ # ### end Alembic commands ###
26
+
27
+
28
+ def downgrade() -> None:
29
+ # ### commands auto generated by Alembic - please adjust! ###
30
+ with op.batch_alter_table("taskgroupv2", schema=None) as batch_op:
31
+ batch_op.add_column(
32
+ sa.Column(
33
+ "venv_file_number",
34
+ sa.INTEGER(),
35
+ autoincrement=False,
36
+ nullable=True,
37
+ )
38
+ )
39
+ batch_op.add_column(
40
+ sa.Column(
41
+ "venv_size_in_kB",
42
+ sa.INTEGER(),
43
+ autoincrement=False,
44
+ nullable=True,
45
+ )
46
+ )
47
+
48
+ # ### end Alembic commands ###
@@ -174,15 +174,6 @@ def collect_local(
174
174
  activity.log = get_current_log(log_file_path)
175
175
  activity = add_commit_refresh(obj=activity, db=db)
176
176
 
177
- # Run script 5
178
- venv_info = _customize_and_run_template(
179
- template_filename="5_get_venv_size_and_file_number.sh",
180
- **common_args,
181
- )
182
- venv_size, venv_file_number = venv_info.split()
183
- activity.log = get_current_log(log_file_path)
184
- activity = add_commit_refresh(obj=activity, db=db)
185
-
186
177
  pkg_attrs = parse_script_pip_show_stdout(stdout)
187
178
  for key, value in pkg_attrs.items():
188
179
  logger.debug(f"Parsed from pip-show: {key}={value}")
@@ -241,18 +232,10 @@ def collect_local(
241
232
  logger.info("create_db_tasks_and_update_task_group - end")
242
233
 
243
234
  # Update task_group data
244
- logger.info(
245
- "Add env_info, venv_size and venv_file_number "
246
- "to TaskGroupV2 - start"
247
- )
235
+ logger.info("Add env_info to TaskGroupV2 - start")
248
236
  task_group.env_info = pip_freeze_stdout
249
- task_group.venv_size_in_kB = int(venv_size)
250
- task_group.venv_file_number = int(venv_file_number)
251
237
  task_group = add_commit_refresh(obj=task_group, db=db)
252
- logger.info(
253
- "Add env_info, venv_size and venv_file_number "
254
- "to TaskGroupV2 - end"
255
- )
238
+ logger.info("Add env_info to TaskGroupV2 - end")
256
239
 
257
240
  # Finalize (write metadata to DB)
258
241
  logger.info("finalising - START")
@@ -175,8 +175,6 @@ def collect_local_pixi(
175
175
  # Parse stdout
176
176
  parsed_output = parse_collect_stdout(stdout)
177
177
  package_root = parsed_output["package_root"]
178
- venv_size = parsed_output["venv_size"]
179
- venv_file_number = parsed_output["venv_file_number"]
180
178
  project_python_wrapper = parsed_output["project_python_wrapper"]
181
179
 
182
180
  # Make task folder 755
@@ -220,23 +218,15 @@ def collect_local_pixi(
220
218
  logger.info("create_db_tasks_and_update_task_group - end")
221
219
 
222
220
  # Update task_group data
223
- logger.info(
224
- "Add env_info, venv_size and venv_file_number "
225
- "to TaskGroupV2 - start"
226
- )
221
+ logger.info("Add env_info to TaskGroupV2 - start")
227
222
  with Path(source_dir, "pixi.lock").open() as f:
228
223
  pixi_lock_contents = f.read()
229
224
 
230
225
  # NOTE: see issue 2626 about whether to keep `pixi.lock` files
231
226
  # in the database
232
227
  task_group.env_info = pixi_lock_contents
233
- task_group.venv_size_in_kB = int(venv_size)
234
- task_group.venv_file_number = int(venv_file_number)
235
228
  task_group = add_commit_refresh(obj=task_group, db=db)
236
- logger.info(
237
- "Add env_info, venv_size and venv_file_number "
238
- "to TaskGroupV2 - end"
239
- )
229
+ logger.info("Add env_info to TaskGroupV2 - end")
240
230
 
241
231
  # Finalize (write metadata to DB)
242
232
  logger.info("finalising - START")
@@ -121,7 +121,7 @@ def reactivate_local(
121
121
 
122
122
  logger.debug("start - install from pip freeze")
123
123
  _customize_and_run_template(
124
- template_filename="6_pip_install_from_freeze.sh",
124
+ template_filename="5_pip_install_from_freeze.sh",
125
125
  **common_args,
126
126
  )
127
127
  logger.debug("end - install from pip freeze")
@@ -211,15 +211,6 @@ def collect_ssh(
211
211
  activity.log = get_current_log(log_file_path)
212
212
  activity = add_commit_refresh(obj=activity, db=db)
213
213
 
214
- # Run script 5
215
- venv_info = _customize_and_run_template(
216
- template_filename="5_get_venv_size_and_file_number.sh",
217
- **common_args,
218
- )
219
- venv_size, venv_file_number = venv_info.split()
220
- activity.log = get_current_log(log_file_path)
221
- activity = add_commit_refresh(obj=activity, db=db)
222
-
223
214
  pkg_attrs = parse_script_pip_show_stdout(stdout)
224
215
 
225
216
  for key, value in pkg_attrs.items():
@@ -275,18 +266,10 @@ def collect_ssh(
275
266
  logger.info("create_db_tasks_and_update_task_group - end")
276
267
 
277
268
  # Update task_group data
278
- logger.info(
279
- "Add env_info, venv_size and venv_file_number "
280
- "to TaskGroupV2 - start"
281
- )
269
+ logger.info("Add env_info to TaskGroupV2 - start")
282
270
  task_group.env_info = pip_freeze_stdout
283
- task_group.venv_size_in_kB = int(venv_size)
284
- task_group.venv_file_number = int(venv_file_number)
285
271
  task_group = add_commit_refresh(obj=task_group, db=db)
286
- logger.info(
287
- "Add env_info, venv_size and venv_file_number "
288
- "to TaskGroupV2 - end"
289
- )
272
+ logger.info("Add env_info to TaskGroupV2 - end")
290
273
 
291
274
  # Finalize (write metadata to DB)
292
275
  logger.info("finalising - START")
@@ -266,8 +266,6 @@ def collect_ssh_pixi(
266
266
  # Parse stdout
267
267
  parsed_output = parse_collect_stdout(stdout)
268
268
  package_root_remote = parsed_output["package_root"]
269
- venv_size = parsed_output["venv_size"]
270
- venv_file_number = parsed_output["venv_file_number"]
271
269
  project_python_wrapper = parsed_output[
272
270
  "project_python_wrapper"
273
271
  ]
@@ -312,18 +310,10 @@ def collect_ssh_pixi(
312
310
  )
313
311
 
314
312
  # Update task_group data
315
- logger.info(
316
- "Add env_info, venv_size and venv_file_number "
317
- "to TaskGroupV2 - start"
318
- )
313
+ logger.info("Add env_info to TaskGroupV2 - start")
319
314
  task_group.env_info = pixi_lock_contents
320
- task_group.venv_size_in_kB = int(venv_size)
321
- task_group.venv_file_number = int(venv_file_number)
322
315
  task_group = add_commit_refresh(obj=task_group, db=db)
323
- logger.info(
324
- "Add env_info, venv_size and venv_file_number "
325
- "to TaskGroupV2 - end"
326
- )
316
+ logger.info("Add env_info to TaskGroupV2 - end")
327
317
 
328
318
  # Finalize (write metadata to DB)
329
319
  logger.info("finalising - START")
@@ -167,7 +167,7 @@ def reactivate_ssh(
167
167
 
168
168
  logger.info("start - install from pip freeze")
169
169
  _customize_and_run_template(
170
- template_filename="6_pip_install_from_freeze.sh",
170
+ template_filename="5_pip_install_from_freeze.sh",
171
171
  **common_args,
172
172
  )
173
173
  logger.info("end - install from pip freeze")
@@ -66,12 +66,6 @@ PACKAGE_FOLDER=$(bash "${FIND_PACKAGE_FOLDER_SCRIPT}")
66
66
  write_log "Package folder: ${PACKAGE_FOLDER}"
67
67
  echo
68
68
 
69
- ENV_DISK_USAGE=$(du -sk "${PACKAGE_DIR}" | cut -f1)
70
- ENV_FILE_NUMBER=$(find "${PACKAGE_DIR}" -type f | wc -l)
71
- write_log "Disk usage: ${ENV_DISK_USAGE}"
72
- write_log "Number of files: ${ENV_FILE_NUMBER}"
73
- echo
74
-
75
69
  TIME_END=$(date +%s)
76
70
  write_log "Elapsed: $((TIME_END - TIME_START)) seconds"
77
71
  write_log "All ok, exit."
@@ -12,8 +12,6 @@ SOURCE_DIR_NAME = "source_dir"
12
12
 
13
13
  class ParsedOutput(TypedDict):
14
14
  package_root: str
15
- venv_size: str
16
- venv_file_number: str
17
15
  project_python_wrapper: str
18
16
 
19
17
 
@@ -23,8 +21,6 @@ def parse_collect_stdout(stdout: str) -> ParsedOutput:
23
21
  """
24
22
  searches = [
25
23
  ("Package folder:", "package_root"),
26
- ("Disk usage:", "venv_size"),
27
- ("Number of files:", "venv_file_number"),
28
24
  ("Project Python wrapper:", "project_python_wrapper"),
29
25
  ]
30
26
  stdout_lines = stdout.splitlines()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fractal-server
3
- Version: 2.18.1
3
+ Version: 2.18.2
4
4
  Summary: Backend component of the Fractal analytics platform
5
5
  License-Expression: BSD-3-Clause
6
6
  License-File: LICENSE
@@ -1,4 +1,4 @@
1
- fractal_server/__init__.py,sha256=BKsIdxrz9PsV9xvr1HmK94dmxX69wjDyrYRY53MjstQ,23
1
+ fractal_server/__init__.py,sha256=SYVCzme8G5fCPQcTLY-LEETzoVBgUiF6qN26Eofya8M,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
@@ -16,7 +16,7 @@ fractal_server/app/models/v2/profile.py,sha256=YajSmV4J_-zC4RX917s-A_lJt4mxYdPRV
16
16
  fractal_server/app/models/v2/project.py,sha256=VvLXrgzKYLH585mYg_txrO8q3JoSoSEy4XkWjex4sDU,585
17
17
  fractal_server/app/models/v2/resource.py,sha256=XaHlJj9CladIahkrpywWXn8JBSx7_qEHp_wnkFuQ0rU,3896
18
18
  fractal_server/app/models/v2/task.py,sha256=iBIQB8POQE5MyKvLZhw7jZWlBhbrThzCDzRTcgiAczQ,1493
19
- fractal_server/app/models/v2/task_group.py,sha256=ud5c_Cncp3hz7_FLiEUvO2VD8h9KtBQljyjR6GQK0D0,4674
19
+ fractal_server/app/models/v2/task_group.py,sha256=C03LGKIO61Asj7Qz7qeIrZwWdfzoXBliLCeb9jzT5WI,4595
20
20
  fractal_server/app/models/v2/workflow.py,sha256=AsL7p8UMGbow--21IG2lYZnOjQ--m85dRWaNCHqb35I,1069
21
21
  fractal_server/app/models/v2/workflowtask.py,sha256=qkTc-hcFLpJUVsEUbnDq2BJL0qg9jagy2doZeusF1ek,1266
22
22
  fractal_server/app/routes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -35,16 +35,16 @@ fractal_server/app/routes/admin/v2/task_group_lifecycle.py,sha256=LkHSQVXRRUkicp
35
35
  fractal_server/app/routes/api/__init__.py,sha256=GaNOm1elJLldHNWZ482qlvETLAXhdJ8u_X6kGxMmwQs,1409
36
36
  fractal_server/app/routes/api/v2/__init__.py,sha256=_J8ekQqNGJ3DC1mKum8m8SNOcv66oZ7A260MFjcEtGE,2710
37
37
  fractal_server/app/routes/api/v2/_aux_functions.py,sha256=pxXcauCMZEVKkft8nOCK_Nq5m7hkx7BVUXch_j2KVtg,15131
38
- fractal_server/app/routes/api/v2/_aux_functions_history.py,sha256=RhKheO2mdSpA0PYGPuDfr8XTaE4e8LkuKeVJlilNtko,5683
38
+ fractal_server/app/routes/api/v2/_aux_functions_history.py,sha256=vB8AwSBf3Dp1sxpTAYtWj4s9kgAp_D5Hd1BX6Z8JTxc,6057
39
39
  fractal_server/app/routes/api/v2/_aux_functions_sharing.py,sha256=IvDII3Sl00eypdD3QRELQ4SLyC3gq6-HsXhuCx5Bp5I,2995
40
40
  fractal_server/app/routes/api/v2/_aux_functions_task_lifecycle.py,sha256=qTJdKC3nKLwLYfuKbzJW6tREmzy-dNk57xcmvgi_UDA,8529
41
41
  fractal_server/app/routes/api/v2/_aux_functions_task_version_update.py,sha256=PKjV7r8YsPRXoNiVSnOK4KBYVV3l_Yb_ZPrqAkMkXrQ,1182
42
42
  fractal_server/app/routes/api/v2/_aux_functions_tasks.py,sha256=Hrumknv0vH5VX7SFp8WZDzsJv_z7quvFyNoDYmYoD7A,13623
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
- fractal_server/app/routes/api/v2/history.py,sha256=5IYb6m6vmXjNU7uatEmgdXhehyKdbK98T5wAjQpNH4g,18266
45
+ fractal_server/app/routes/api/v2/history.py,sha256=-aLwLhDLDqwKFy3JrM1vFswyBPdolMXlH3sS7OiQsK8,18339
46
46
  fractal_server/app/routes/api/v2/images.py,sha256=k9wd44iwjCtEWSH9j6X6zToBwuOOo6J4FxSW7AGbPHA,8266
47
- fractal_server/app/routes/api/v2/job.py,sha256=05_uzX11wYWpGZLN159-7CFXGB9gnSDYdeLEvDAefpY,7250
47
+ fractal_server/app/routes/api/v2/job.py,sha256=lhYuUX9plbvIE5Gx1D4uWjmzPrWT9CqiqpHRSBv1-bA,7415
48
48
  fractal_server/app/routes/api/v2/pre_submission_checks.py,sha256=Cs_ODoRWmkbSJJhlIE7pQh9JuJGXZTAr-EVF6wqKNGA,5215
49
49
  fractal_server/app/routes/api/v2/project.py,sha256=z_IMJ7uDpRDXdoNF0qWMpft2lnsX6pfP244cQlyH2CU,5811
50
50
  fractal_server/app/routes/api/v2/sharing.py,sha256=MvegcF3xaT9nztVwLiUisp4B8IrKRa2LVlSR2GGTqYk,9398
@@ -92,7 +92,7 @@ fractal_server/app/schemas/v2/sharing.py,sha256=wHBiEmqhU53NokQ2rmm6xkH3lumBR6Td
92
92
  fractal_server/app/schemas/v2/status_legacy.py,sha256=ajLm2p0wNfJ_lQX9Oq3NJn0jxQj50U3eZxuRjOIdOpg,949
93
93
  fractal_server/app/schemas/v2/task.py,sha256=Fd4n6vitliOuQyoofQ0daFy25QzIoWe9NPbXanNyrrE,4351
94
94
  fractal_server/app/schemas/v2/task_collection.py,sha256=ljGnZOmYg9pQ9PbYnNxLJDf4O2BDym-BQ_cXr-NWSd4,4590
95
- fractal_server/app/schemas/v2/task_group.py,sha256=HYwgv8KQWr1A8ihdz_FTmKAymlHh4AEPyfmYOhafE24,3472
95
+ fractal_server/app/schemas/v2/task_group.py,sha256=sbg6AkvonU7F_-QC4G9kDxO6YVcz7wUPY3k3n9jYkRY,3392
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
@@ -118,6 +118,7 @@ fractal_server/main.py,sha256=vCDvUndmLIkxUX8EAtyA4Wu9YiIHGZge5J37Yn2U5R4,6537
118
118
  fractal_server/migrations/env.py,sha256=nfyBpMIOT3kny6t-b-tUjyRjZ4k906bb1_wCQ7me1BI,1353
119
119
  fractal_server/migrations/naming_convention.py,sha256=bSEMiMZeArmWKrUk-12lhnOw1pAFMg6LEl7yucohPqc,263
120
120
  fractal_server/migrations/versions/034a469ec2eb_task_groups.py,sha256=uuf0sJibC4Am1HDb_dX_Jdj2oinptlg2ojiHwCpjDCY,6155
121
+ fractal_server/migrations/versions/068496367952_drop_taskgroup_venv_size_and_files_.py,sha256=rVFmB7eO7LtOfJivNnfnniQecD8DebAWnSvYEE2yq7k,1239
121
122
  fractal_server/migrations/versions/091b01f51f88_add_usergroup_and_linkusergroup_table.py,sha256=cSz3Jc2X79dN7I-rh0OSefOd5WOJU65wNWFNMnX2LR4,1450
122
123
  fractal_server/migrations/versions/0f5f85bb2ae7_add_pre_pinned_packages.py,sha256=XH6msE3On7P7S2gz-Xec20bWAI6vR29zRT1ZafFwStI,1056
123
124
  fractal_server/migrations/versions/19eca0dd47a9_user_settings_project_dir.py,sha256=5OzcIQjTfwiqh9vK_yLQHJlNtIHxKiEPr-IjZ9iir-Y,961
@@ -228,36 +229,35 @@ fractal_server/tasks/utils.py,sha256=izZthoEmt5NcnC8ktTmbMtNnrCD8zKir37NyCfPJDX4
228
229
  fractal_server/tasks/v2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
229
230
  fractal_server/tasks/v2/local/__init__.py,sha256=2dJqJIwn9UEANg8lPFprxVLk3ug-4xYIb5pvIsqPb5s,353
230
231
  fractal_server/tasks/v2/local/_utils.py,sha256=2MerOEGvr9zR4ATUBAV4MSS-ixODqiRpS5S--r2mSMM,3487
231
- fractal_server/tasks/v2/local/collect.py,sha256=Vu64E_BhP4Pzut8Fhs0tDy91-Z9HB6Ezj1qA57W2KA8,12108
232
- fractal_server/tasks/v2/local/collect_pixi.py,sha256=uhfXd4U8tfCwItzhIizeY52EAwijbuws4a0Pw5LwuV4,11480
232
+ fractal_server/tasks/v2/local/collect.py,sha256=vjW7QYGUGzxGcf2P4bwWzz4SG_dGL9iFXc0dNtE1l1c,11383
233
+ fractal_server/tasks/v2/local/collect_pixi.py,sha256=1xCEkJ2cHA9EQ7bahVHJhEPovVIDVWxPLnemAR27ZB0,11042
233
234
  fractal_server/tasks/v2/local/deactivate.py,sha256=GWB3Krx7-FJTLa2yCUHFyQMq202_MizoPl6wcuc33D8,9946
234
235
  fractal_server/tasks/v2/local/deactivate_pixi.py,sha256=VgageDeNHaOsMR7ANpac2QtzMnaagzGzSP9jY2EHY0k,3709
235
236
  fractal_server/tasks/v2/local/delete.py,sha256=PeLbAkNEsknClZeM9Dg8rYbemmNetr6wZ7TLGLO8x-k,2941
236
- fractal_server/tasks/v2/local/reactivate.py,sha256=c8uyAKBJbAhMt2y0-GILe7IIUxbhtihh_HLxytsJr1g,6065
237
+ fractal_server/tasks/v2/local/reactivate.py,sha256=eimn5SIEW8-rGvErCrDruEZbDPriDS53WrdDzb0VS24,6065
237
238
  fractal_server/tasks/v2/local/reactivate_pixi.py,sha256=cWLe-lrwQlpQhPtKrMg5ClGVd5LVYzRpgLZQ2aC3PKU,8211
238
239
  fractal_server/tasks/v2/ssh/__init__.py,sha256=dPK6BtEZVh1GiFP05j1RKTEnZvjJez8o2KkMC2hWXaw,339
239
240
  fractal_server/tasks/v2/ssh/_pixi_slurm_ssh.py,sha256=3iixFaS5Uqhh28qAv_yBSW4YvffqIhE0LK0gQee9qjI,7448
240
241
  fractal_server/tasks/v2/ssh/_utils.py,sha256=a2oM8zh68zmcUuRLY_5y_9wA9MNd3NOM-w-P7RgwX2E,6112
241
- fractal_server/tasks/v2/ssh/collect.py,sha256=1RpAbuUKQodgDCuVOfN-DZC1uhIqHEhaVSSx3v0DwHs,14487
242
- fractal_server/tasks/v2/ssh/collect_pixi.py,sha256=9Pe-oaCu-Cih8c5vcW2Xpt9GuZYkju6otrnJldXUGfA,15861
242
+ fractal_server/tasks/v2/ssh/collect.py,sha256=LvB5PbiiPRuKL_onNj6Rn2llQ-y0-FEqQjC4TOz3wWw,13698
243
+ fractal_server/tasks/v2/ssh/collect_pixi.py,sha256=hOB4z5HT0ItZqDEQ2p4I1bGH3mWZXNWTmnx2AySQ9ds,15383
243
244
  fractal_server/tasks/v2/ssh/deactivate.py,sha256=okNPNKnym8nCE7P_M-92TDUM0nRdD_NZake34R1tHcI,12675
244
245
  fractal_server/tasks/v2/ssh/deactivate_pixi.py,sha256=tGuiOs9JXZoSmDqyEg3ZnmMkYwplkK1OkvMuGJpez00,4948
245
246
  fractal_server/tasks/v2/ssh/delete.py,sha256=hUOGah3MyeUG-jBbljvkpkwY2KkdXK-i8zV8LK2sBVQ,4459
246
- fractal_server/tasks/v2/ssh/reactivate.py,sha256=gxsgSDWVOw9reQumP92yC8SwNVcQrd4mvUh-sDoa7Uc,8528
247
+ fractal_server/tasks/v2/ssh/reactivate.py,sha256=SxJEwA8M45az1XRpnoimyjl7qNFlbDcXWwPZ8GPw5m0,8528
247
248
  fractal_server/tasks/v2/ssh/reactivate_pixi.py,sha256=7jfODVCsHkqypPaJcQ9kozgUIPVPujmzgYp3gRx8dvs,11889
248
249
  fractal_server/tasks/v2/templates/1_create_venv.sh,sha256=a9viswsex_26lNStFgTjtSM4_K1eiyA2qfSQAwhH1Pw,561
249
250
  fractal_server/tasks/v2/templates/2_pip_install.sh,sha256=IS1iXCvFTb6owHAIrvTrnPN1g7UWESkZyTTVdBBLQ3Y,2168
250
251
  fractal_server/tasks/v2/templates/3_pip_freeze.sh,sha256=oxqXMd-ZW8jtHjkwdwchbtWaoW6QHIk2Ksgreygo4no,181
251
252
  fractal_server/tasks/v2/templates/4_pip_show.sh,sha256=L4i5MHxFW8vuFOKpTLXKNyXeCZL6RlRgjBv9YfGxTQU,1697
252
- fractal_server/tasks/v2/templates/5_get_venv_size_and_file_number.sh,sha256=_I3R2pBWCMfs3MZtTKazW1sK17fV2_nRNNXHFPccpCQ,301
253
- fractal_server/tasks/v2/templates/6_pip_install_from_freeze.sh,sha256=ddF-Pz-MTvAUFoTW9Oq3Vqf1jpUtRXVSrOR_yRS13SM,995
253
+ fractal_server/tasks/v2/templates/5_pip_install_from_freeze.sh,sha256=ddF-Pz-MTvAUFoTW9Oq3Vqf1jpUtRXVSrOR_yRS13SM,995
254
254
  fractal_server/tasks/v2/templates/pixi_1_extract.sh,sha256=vRRiBhwdE0NAXxornzG4P8QlZ5vjn-f9lJTtigA_Q_g,1112
255
255
  fractal_server/tasks/v2/templates/pixi_2_install.sh,sha256=0vWP7PscdPlGwlukD752eKeQVRis4PwG2f2IhPK_8RA,1614
256
- fractal_server/tasks/v2/templates/pixi_3_post_install.sh,sha256=eiTcg-eTSo-itmeEBt5am0jSji1-2MvYamm-HqiCfO4,2514
256
+ fractal_server/tasks/v2/templates/pixi_3_post_install.sh,sha256=yN4ernZ2XQ8SBOixTyPJPaF-EV6E5sX7ea0Q5y7-mmI,2309
257
257
  fractal_server/tasks/v2/utils_background.py,sha256=w1VVFuPql8KXWdKr64iZWoykUDGtMCQA8VQFHqeObBU,4828
258
258
  fractal_server/tasks/v2/utils_database.py,sha256=Kyg-2fN0rx5eKKiFg1FtcJy82-7NAPJHEAGV1TvRkjI,1787
259
259
  fractal_server/tasks/v2/utils_package_names.py,sha256=-FAcbwBHsjyvhIK0QKue9_0xJUfRVdKMSIU_-gnLOR0,2381
260
- fractal_server/tasks/v2/utils_pixi.py,sha256=Z0FnRqVynSvXDDeFL0anz7zwKrBDLGdQxyuJdipt2DI,3411
260
+ fractal_server/tasks/v2/utils_pixi.py,sha256=w0ll5LndB0RTiZEpWokHtgKY6_dE4FKauL173_T_AZA,3278
261
261
  fractal_server/tasks/v2/utils_python_interpreter.py,sha256=36AvrMoydr9w6Rm_7hKl5QK8zYI0KIm4Pv8WHANWwjE,658
262
262
  fractal_server/tasks/v2/utils_templates.py,sha256=L5GblhIKJwyzUbCORj1et5mh-7mG19nT5kmIpxOEj90,3489
263
263
  fractal_server/types/__init__.py,sha256=ENzSmiU4niKK0CLWN0AfdzsbRsTCrUMcFeANRvNZ5aU,3721
@@ -268,8 +268,8 @@ fractal_server/types/validators/_workflow_task_arguments_validators.py,sha256=zt
268
268
  fractal_server/urls.py,sha256=QjIKAC1a46bCdiPMu3AlpgFbcv6a4l3ABcd5xz190Og,471
269
269
  fractal_server/utils.py,sha256=-rjg8QTXQcKweXjn0NcmETFs1_uM9PGnbl0Q7c4ERPM,2181
270
270
  fractal_server/zip_tools.py,sha256=Uhn-ax4_9g1PJ32BdyaX30hFpAeVOv2tZYTUK-zVn1E,5719
271
- fractal_server-2.18.1.dist-info/METADATA,sha256=iRsGxaPkJm0dyxgMSpGihfqfAbjZ3l-j3K-LcQR4Qfo,4275
272
- fractal_server-2.18.1.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
273
- fractal_server-2.18.1.dist-info/entry_points.txt,sha256=8tV2kynvFkjnhbtDnxAqImL6HMVKsopgGfew0DOp5UY,58
274
- fractal_server-2.18.1.dist-info/licenses/LICENSE,sha256=QKAharUuhxL58kSoLizKJeZE3mTCBnX6ucmz8W0lxlk,1576
275
- fractal_server-2.18.1.dist-info/RECORD,,
271
+ fractal_server-2.18.2.dist-info/METADATA,sha256=3N5kI9DAFqLXBpWAwI_OmNluYRiksN-dD3PFYB4NPe4,4275
272
+ fractal_server-2.18.2.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
273
+ fractal_server-2.18.2.dist-info/entry_points.txt,sha256=8tV2kynvFkjnhbtDnxAqImL6HMVKsopgGfew0DOp5UY,58
274
+ fractal_server-2.18.2.dist-info/licenses/LICENSE,sha256=QKAharUuhxL58kSoLizKJeZE3mTCBnX6ucmz8W0lxlk,1576
275
+ fractal_server-2.18.2.dist-info/RECORD,,
@@ -1,12 +0,0 @@
1
- #!/bin/bash
2
-
3
- set -e
4
-
5
- # Variables to be filled within fractal-server
6
- PACKAGE_ENV_DIR=__PACKAGE_ENV_DIR__
7
-
8
- # Find memory usage and file number
9
- ENV_DISK_USAGE=$(du -sk "${PACKAGE_ENV_DIR}" | cut -f1)
10
- ENV_FILE_NUMBER=$(find "${PACKAGE_ENV_DIR}" -type f | wc -l)
11
-
12
- echo "$ENV_DISK_USAGE" "$ENV_FILE_NUMBER"