pybiolib 1.2.561__tar.gz → 1.2.567__tar.gz

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 (125) hide show
  1. {pybiolib-1.2.561 → pybiolib-1.2.567}/PKG-INFO +1 -1
  2. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/compute_node/job_worker/executors/docker_executor.py +30 -25
  3. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/compute_node/job_worker/executors/types.py +0 -1
  4. {pybiolib-1.2.561 → pybiolib-1.2.567}/pyproject.toml +1 -1
  5. {pybiolib-1.2.561 → pybiolib-1.2.567}/LICENSE +0 -0
  6. {pybiolib-1.2.561 → pybiolib-1.2.567}/PYPI_README.md +0 -0
  7. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/__init__.py +0 -0
  8. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/_data_record/data_record.py +0 -0
  9. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/_internal/__init__.py +0 -0
  10. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/_internal/data_record/__init__.py +0 -0
  11. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/_internal/data_record/data_record.py +0 -0
  12. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/_internal/data_record/push_data.py +0 -0
  13. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/_internal/data_record/remote_storage_endpoint.py +0 -0
  14. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/_internal/file_utils.py +0 -0
  15. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/_internal/fuse_mount/__init__.py +0 -0
  16. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/_internal/fuse_mount/experiment_fuse_mount.py +0 -0
  17. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/_internal/http_client.py +0 -0
  18. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/_internal/lfs/__init__.py +0 -0
  19. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/_internal/lfs/cache.py +0 -0
  20. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/_internal/libs/__init__.py +0 -0
  21. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/_internal/libs/fusepy/__init__.py +0 -0
  22. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/_internal/push_application.py +0 -0
  23. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/_internal/runtime.py +0 -0
  24. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/_internal/types/__init__.py +0 -0
  25. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/_internal/types/app.py +0 -0
  26. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/_internal/types/data_record.py +0 -0
  27. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/_internal/types/experiment.py +0 -0
  28. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/_internal/types/file_node.py +0 -0
  29. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/_internal/types/resource.py +0 -0
  30. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/_internal/types/resource_version.py +0 -0
  31. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/_internal/types/typing.py +0 -0
  32. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/_internal/utils/__init__.py +0 -0
  33. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/_internal/utils/multinode.py +0 -0
  34. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/_runtime/runtime.py +0 -0
  35. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/api/__init__.py +0 -0
  36. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/api/client.py +0 -0
  37. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/app/__init__.py +0 -0
  38. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/app/app.py +0 -0
  39. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/app/search_apps.py +0 -0
  40. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/biolib_api_client/__init__.py +0 -0
  41. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/biolib_api_client/api_client.py +0 -0
  42. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/biolib_api_client/app_types.py +0 -0
  43. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/biolib_api_client/auth.py +0 -0
  44. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/biolib_api_client/biolib_app_api.py +0 -0
  45. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/biolib_api_client/biolib_job_api.py +0 -0
  46. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/biolib_api_client/common_types.py +0 -0
  47. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/biolib_api_client/job_types.py +0 -0
  48. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/biolib_api_client/lfs_types.py +0 -0
  49. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/biolib_api_client/user_state.py +0 -0
  50. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/biolib_binary_format/__init__.py +0 -0
  51. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/biolib_binary_format/base_bbf_package.py +0 -0
  52. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/biolib_binary_format/file_in_container.py +0 -0
  53. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/biolib_binary_format/module_input.py +0 -0
  54. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/biolib_binary_format/module_output_v2.py +0 -0
  55. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/biolib_binary_format/remote_endpoints.py +0 -0
  56. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/biolib_binary_format/remote_stream_seeker.py +0 -0
  57. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/biolib_binary_format/saved_job.py +0 -0
  58. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/biolib_binary_format/stdout_and_stderr.py +0 -0
  59. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/biolib_binary_format/system_exception.py +0 -0
  60. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/biolib_binary_format/system_status_update.py +0 -0
  61. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/biolib_binary_format/utils.py +0 -0
  62. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/biolib_docker_client/__init__.py +0 -0
  63. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/biolib_download_container.py +0 -0
  64. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/biolib_errors.py +0 -0
  65. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/biolib_logging.py +0 -0
  66. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/cli/__init__.py +0 -0
  67. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/cli/auth.py +0 -0
  68. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/cli/data_record.py +0 -0
  69. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/cli/download_container.py +0 -0
  70. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/cli/init.py +0 -0
  71. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/cli/lfs.py +0 -0
  72. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/cli/push.py +0 -0
  73. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/cli/run.py +0 -0
  74. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/cli/runtime.py +0 -0
  75. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/cli/start.py +0 -0
  76. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/compute_node/.gitignore +0 -0
  77. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/compute_node/__init__.py +0 -0
  78. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/compute_node/cloud_utils/__init__.py +0 -0
  79. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/compute_node/cloud_utils/cloud_utils.py +0 -0
  80. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/compute_node/job_worker/__init__.py +0 -0
  81. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/compute_node/job_worker/cache_state.py +0 -0
  82. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/compute_node/job_worker/cache_types.py +0 -0
  83. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/compute_node/job_worker/docker_image_cache.py +0 -0
  84. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/compute_node/job_worker/executors/__init__.py +0 -0
  85. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/compute_node/job_worker/executors/docker_types.py +0 -0
  86. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/compute_node/job_worker/executors/tars/__init__.py +0 -0
  87. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/compute_node/job_worker/job_legacy_input_wait_timeout_thread.py +0 -0
  88. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/compute_node/job_worker/job_max_runtime_timer_thread.py +0 -0
  89. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/compute_node/job_worker/job_storage.py +0 -0
  90. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/compute_node/job_worker/job_worker.py +0 -0
  91. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/compute_node/job_worker/large_file_system.py +0 -0
  92. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/compute_node/job_worker/mappings.py +0 -0
  93. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/compute_node/job_worker/utilization_reporter_thread.py +0 -0
  94. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/compute_node/job_worker/utils.py +0 -0
  95. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/compute_node/remote_host_proxy.py +0 -0
  96. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/compute_node/socker_listener_thread.py +0 -0
  97. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/compute_node/socket_sender_thread.py +0 -0
  98. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/compute_node/utils.py +0 -0
  99. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/compute_node/webserver/__init__.py +0 -0
  100. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/compute_node/webserver/gunicorn_flask_application.py +0 -0
  101. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/compute_node/webserver/webserver.py +0 -0
  102. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/compute_node/webserver/webserver_types.py +0 -0
  103. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/compute_node/webserver/webserver_utils.py +0 -0
  104. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/compute_node/webserver/worker_thread.py +0 -0
  105. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/experiments/__init__.py +0 -0
  106. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/experiments/experiment.py +0 -0
  107. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/jobs/__init__.py +0 -0
  108. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/jobs/job.py +0 -0
  109. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/jobs/job_result.py +0 -0
  110. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/jobs/types.py +0 -0
  111. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/py.typed +0 -0
  112. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/runtime/__init__.py +0 -0
  113. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/sdk/__init__.py +0 -0
  114. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/tables.py +0 -0
  115. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/templates/__init__.py +0 -0
  116. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/templates/example_app.py +0 -0
  117. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/typing_utils.py +0 -0
  118. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/user/__init__.py +0 -0
  119. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/user/sign_in.py +0 -0
  120. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/utils/__init__.py +0 -0
  121. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/utils/app_uri.py +0 -0
  122. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/utils/cache_state.py +0 -0
  123. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/utils/multipart_uploader.py +0 -0
  124. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/utils/seq_util.py +0 -0
  125. {pybiolib-1.2.561 → pybiolib-1.2.567}/biolib/utils/zip/remote_zip.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: pybiolib
3
- Version: 1.2.561
3
+ Version: 1.2.567
4
4
  Summary: BioLib Python Client
5
5
  License: MIT
6
6
  Keywords: biolib
@@ -27,7 +27,7 @@ from biolib.compute_node import utils as compute_node_utils
27
27
  from biolib.compute_node.cloud_utils import CloudUtils
28
28
  from biolib.compute_node.job_worker.docker_image_cache import DockerImageCache
29
29
  from biolib.compute_node.job_worker.executors.docker_types import DockerDiffKind
30
- from biolib.compute_node.job_worker.executors.types import LocalExecutorOptions, StatusUpdate, MetadataToSaveOutput
30
+ from biolib.compute_node.job_worker.executors.types import LocalExecutorOptions, MetadataToSaveOutput, StatusUpdate
31
31
  from biolib.compute_node.job_worker.mappings import Mappings, path_without_first_folder
32
32
  from biolib.compute_node.job_worker.utilization_reporter_thread import UtilizationReporterThread
33
33
  from biolib.compute_node.job_worker.utils import ComputeProcessException
@@ -201,9 +201,6 @@ class DockerExecutor:
201
201
  stream=True,
202
202
  )
203
203
 
204
- logger_no_user_data.debug(f'Running diff for Docker container for {job_uuid}')
205
- pre_start_diff = self._container.diff()
206
-
207
204
  logger_no_user_data.debug(f'Starting Docker container for {job_uuid}')
208
205
  startup_error_string: Optional[str] = None
209
206
  try:
@@ -218,7 +215,6 @@ class DockerExecutor:
218
215
  self._metadata_for_save_output_on_cancel = MetadataToSaveOutput(
219
216
  arguments=module_input['arguments'],
220
217
  startup_error_string=startup_error_string,
221
- pre_start_diff=pre_start_diff,
222
218
  )
223
219
 
224
220
  if self._options['job']['app_version'].get('stdout_render_type') != 'markdown':
@@ -264,7 +260,6 @@ class DockerExecutor:
264
260
  module_output_path=self._options['module_output_path'],
265
261
  stderr=full_stderr,
266
262
  stdout=full_stdout,
267
- pre_start_diff=metadata['pre_start_diff'],
268
263
  )
269
264
 
270
265
  def cleanup(self):
@@ -532,12 +527,11 @@ class DockerExecutor:
532
527
  module_output_path: str,
533
528
  stderr: bytes,
534
529
  stdout: bytes,
535
- pre_start_diff: List[Dict],
536
530
  ) -> None:
537
531
  mapped_files: List[FileInContainer] = []
538
532
  try:
539
533
  mappings = Mappings(mappings_list=self._options['module']['output_files_mappings'], arguments=arguments)
540
- changed_files: List[FileInContainer] = self._get_changed_files_in_docker_container(pre_start_diff)
534
+ changed_files: List[FileInContainer] = self._get_changed_files_in_docker_container()
541
535
 
542
536
  for file in changed_files:
543
537
  if file.is_file():
@@ -602,16 +596,35 @@ class DockerExecutor:
602
596
 
603
597
  return None
604
598
 
605
- def _get_changed_files_in_docker_container(self, pre_start_diff: List[Dict]) -> List[FileInContainer]:
599
+ def _get_changed_files_in_docker_container(self) -> List[FileInContainer]:
606
600
  from_mappings = [mapping['from_path'] for mapping in self._options['module']['output_files_mappings']]
607
- pre_start_diff_paths = [obj['Path'] for obj in pre_start_diff]
608
- post_run_diff = self._container.diff()
609
- run_diff_paths: List[str] = [
610
- obj['Path']
611
- for obj in post_run_diff
612
- if obj['Kind'] in (DockerDiffKind.CHANGED.value, DockerDiffKind.ADDED.value)
613
- and obj['Path'] not in pre_start_diff_paths
614
- ]
601
+ overlay_upper_dir_path = self._get_container_upper_dir_path()
602
+
603
+ if not overlay_upper_dir_path:
604
+ logger_no_user_data.debug(
605
+ 'Docker UpperDir not available. Falling back to container.get_archive() for file extraction'
606
+ )
607
+ post_run_diff = self._container.diff()
608
+ run_diff_paths: List[str] = [
609
+ obj['Path']
610
+ for obj in post_run_diff
611
+ if obj['Kind'] in (DockerDiffKind.CHANGED.value, DockerDiffKind.ADDED.value)
612
+ ]
613
+ else:
614
+ logger_no_user_data.debug(f'overlay_upper_dir_path={overlay_upper_dir_path}')
615
+ # Recursively find all files in overlay_upper_dir_path
616
+ run_diff_paths = []
617
+ for root, _, files in os.walk(overlay_upper_dir_path):
618
+ # Convert absolute paths to container paths
619
+ rel_path = os.path.relpath(root, overlay_upper_dir_path)
620
+ if rel_path == '.':
621
+ # Handle the root directory case
622
+ for file in files:
623
+ run_diff_paths.append(f'/{file}')
624
+ else:
625
+ # Handle subdirectories
626
+ for file in files:
627
+ run_diff_paths.append(f'/{rel_path}/{file}')
615
628
 
616
629
  known_directories = set()
617
630
  for path in run_diff_paths:
@@ -629,14 +642,6 @@ class DockerExecutor:
629
642
  return True
630
643
  return False
631
644
 
632
- overlay_upper_dir_path = self._get_container_upper_dir_path()
633
- if not overlay_upper_dir_path:
634
- logger_no_user_data.debug(
635
- 'Docker UpperDir not available. Falling back to container.get_archive() for file extraction'
636
- )
637
-
638
- logger_no_user_data.debug(f'overlay_upper_dir_path={overlay_upper_dir_path}')
639
-
640
645
  files_and_empty_dirs: List[FileInContainer] = []
641
646
  for path in run_diff_paths:
642
647
  if path not in known_directories and path_is_included_in_from_mappings(path):
@@ -46,4 +46,3 @@ class LocalExecutorOptions(TypedDict):
46
46
  class MetadataToSaveOutput(TypedDict):
47
47
  arguments: List[str]
48
48
  startup_error_string: Optional[str]
49
- pre_start_diff: List[Dict]
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "pybiolib"
3
- version = "1.2.561"
3
+ version = "1.2.567"
4
4
  description = "BioLib Python Client"
5
5
  readme = "PYPI_README.md"
6
6
  license = "MIT"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes