pybiolib 1.2.366__tar.gz → 1.2.408__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 (124) hide show
  1. {pybiolib-1.2.366 → pybiolib-1.2.408}/PKG-INFO +1 -1
  2. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/app/app.py +13 -3
  3. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/biolib_errors.py +9 -0
  4. {pybiolib-1.2.366 → pybiolib-1.2.408}/pyproject.toml +1 -1
  5. {pybiolib-1.2.366 → pybiolib-1.2.408}/LICENSE +0 -0
  6. {pybiolib-1.2.366 → pybiolib-1.2.408}/PYPI_README.md +0 -0
  7. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/__init__.py +0 -0
  8. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/_data_record/data_record.py +0 -0
  9. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/_internal/__init__.py +0 -0
  10. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/_internal/data_record/__init__.py +0 -0
  11. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/_internal/data_record/data_record.py +0 -0
  12. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/_internal/data_record/push_data.py +0 -0
  13. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/_internal/data_record/remote_storage_endpoint.py +0 -0
  14. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/_internal/file_utils.py +0 -0
  15. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/_internal/fuse_mount/__init__.py +0 -0
  16. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/_internal/fuse_mount/experiment_fuse_mount.py +0 -0
  17. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/_internal/http_client.py +0 -0
  18. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/_internal/lfs/__init__.py +0 -0
  19. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/_internal/lfs/cache.py +0 -0
  20. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/_internal/libs/__init__.py +0 -0
  21. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/_internal/libs/fusepy/__init__.py +0 -0
  22. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/_internal/push_application.py +0 -0
  23. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/_internal/runtime.py +0 -0
  24. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/_internal/types/__init__.py +0 -0
  25. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/_internal/types/app.py +0 -0
  26. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/_internal/types/data_record.py +0 -0
  27. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/_internal/types/experiment.py +0 -0
  28. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/_internal/types/file_node.py +0 -0
  29. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/_internal/types/resource.py +0 -0
  30. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/_internal/types/resource_version.py +0 -0
  31. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/_internal/types/typing.py +0 -0
  32. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/_internal/utils/__init__.py +0 -0
  33. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/_internal/utils/multinode.py +0 -0
  34. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/_runtime/runtime.py +0 -0
  35. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/api/__init__.py +0 -0
  36. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/api/client.py +0 -0
  37. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/app/__init__.py +0 -0
  38. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/app/search_apps.py +0 -0
  39. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/biolib_api_client/__init__.py +0 -0
  40. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/biolib_api_client/api_client.py +0 -0
  41. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/biolib_api_client/app_types.py +0 -0
  42. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/biolib_api_client/auth.py +0 -0
  43. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/biolib_api_client/biolib_app_api.py +0 -0
  44. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/biolib_api_client/biolib_job_api.py +0 -0
  45. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/biolib_api_client/common_types.py +0 -0
  46. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/biolib_api_client/job_types.py +0 -0
  47. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/biolib_api_client/lfs_types.py +0 -0
  48. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/biolib_api_client/user_state.py +0 -0
  49. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/biolib_binary_format/__init__.py +0 -0
  50. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/biolib_binary_format/base_bbf_package.py +0 -0
  51. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/biolib_binary_format/file_in_container.py +0 -0
  52. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/biolib_binary_format/module_input.py +0 -0
  53. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/biolib_binary_format/module_output_v2.py +0 -0
  54. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/biolib_binary_format/remote_endpoints.py +0 -0
  55. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/biolib_binary_format/remote_stream_seeker.py +0 -0
  56. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/biolib_binary_format/saved_job.py +0 -0
  57. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/biolib_binary_format/stdout_and_stderr.py +0 -0
  58. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/biolib_binary_format/system_exception.py +0 -0
  59. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/biolib_binary_format/system_status_update.py +0 -0
  60. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/biolib_binary_format/utils.py +0 -0
  61. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/biolib_docker_client/__init__.py +0 -0
  62. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/biolib_download_container.py +0 -0
  63. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/biolib_logging.py +0 -0
  64. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/cli/__init__.py +0 -0
  65. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/cli/auth.py +0 -0
  66. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/cli/data_record.py +0 -0
  67. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/cli/download_container.py +0 -0
  68. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/cli/init.py +0 -0
  69. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/cli/lfs.py +0 -0
  70. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/cli/push.py +0 -0
  71. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/cli/run.py +0 -0
  72. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/cli/runtime.py +0 -0
  73. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/cli/start.py +0 -0
  74. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/compute_node/.gitignore +0 -0
  75. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/compute_node/__init__.py +0 -0
  76. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/compute_node/cloud_utils/__init__.py +0 -0
  77. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/compute_node/cloud_utils/cloud_utils.py +0 -0
  78. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/compute_node/job_worker/__init__.py +0 -0
  79. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/compute_node/job_worker/cache_state.py +0 -0
  80. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/compute_node/job_worker/cache_types.py +0 -0
  81. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/compute_node/job_worker/docker_image_cache.py +0 -0
  82. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/compute_node/job_worker/executors/__init__.py +0 -0
  83. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/compute_node/job_worker/executors/docker_executor.py +0 -0
  84. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/compute_node/job_worker/executors/docker_types.py +0 -0
  85. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/compute_node/job_worker/executors/tars/__init__.py +0 -0
  86. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/compute_node/job_worker/executors/types.py +0 -0
  87. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/compute_node/job_worker/job_legacy_input_wait_timeout_thread.py +0 -0
  88. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/compute_node/job_worker/job_max_runtime_timer_thread.py +0 -0
  89. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/compute_node/job_worker/job_storage.py +0 -0
  90. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/compute_node/job_worker/job_worker.py +0 -0
  91. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/compute_node/job_worker/large_file_system.py +0 -0
  92. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/compute_node/job_worker/mappings.py +0 -0
  93. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/compute_node/job_worker/utilization_reporter_thread.py +0 -0
  94. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/compute_node/job_worker/utils.py +0 -0
  95. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/compute_node/remote_host_proxy.py +0 -0
  96. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/compute_node/socker_listener_thread.py +0 -0
  97. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/compute_node/socket_sender_thread.py +0 -0
  98. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/compute_node/utils.py +0 -0
  99. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/compute_node/webserver/__init__.py +0 -0
  100. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/compute_node/webserver/gunicorn_flask_application.py +0 -0
  101. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/compute_node/webserver/webserver.py +0 -0
  102. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/compute_node/webserver/webserver_types.py +0 -0
  103. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/compute_node/webserver/webserver_utils.py +0 -0
  104. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/compute_node/webserver/worker_thread.py +0 -0
  105. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/experiments/__init__.py +0 -0
  106. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/experiments/experiment.py +0 -0
  107. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/jobs/__init__.py +0 -0
  108. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/jobs/job.py +0 -0
  109. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/jobs/job_result.py +0 -0
  110. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/jobs/types.py +0 -0
  111. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/runtime/__init__.py +0 -0
  112. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/sdk/__init__.py +0 -0
  113. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/tables.py +0 -0
  114. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/templates/__init__.py +0 -0
  115. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/templates/example_app.py +0 -0
  116. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/typing_utils.py +0 -0
  117. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/user/__init__.py +0 -0
  118. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/user/sign_in.py +0 -0
  119. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/utils/__init__.py +0 -0
  120. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/utils/app_uri.py +0 -0
  121. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/utils/cache_state.py +0 -0
  122. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/utils/multipart_uploader.py +0 -0
  123. {pybiolib-1.2.366 → pybiolib-1.2.408}/biolib/utils/seq_util.py +0 -0
  124. {pybiolib-1.2.366 → pybiolib-1.2.408}/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.366
3
+ Version: 1.2.408
4
4
  Summary: BioLib Python Client
5
5
  License: MIT
6
6
  Keywords: biolib
@@ -11,7 +11,7 @@ from biolib.biolib_api_client.app_types import App, AppVersion
11
11
  from biolib.biolib_api_client.biolib_app_api import BiolibAppApi
12
12
  from biolib.biolib_api_client.biolib_job_api import BiolibJobApi
13
13
  from biolib.biolib_binary_format import ModuleInput
14
- from biolib.biolib_errors import BioLibError
14
+ from biolib.biolib_errors import BioLibError, JobResultNonZeroExitCodeError
15
15
  from biolib.biolib_logging import logger
16
16
  from biolib.compute_node.job_worker.job_worker import JobWorker
17
17
  from biolib.experiments.experiment import Experiment
@@ -59,10 +59,15 @@ class BioLibApp:
59
59
  machine_count: Optional[int] = None,
60
60
  experiment: Optional[str] = None,
61
61
  temporary_client_secrets: Optional[Dict[str, str]] = None,
62
+ check: bool = False,
63
+ stream_logs: bool = False,
62
64
  ) -> Job:
63
65
  if experiment_id and experiment:
64
66
  raise ValueError('Only one of experiment_id and experiment can be specified')
65
67
 
68
+ if check and not blocking:
69
+ raise ValueError('The argument "check" cannot be True when blocking is False')
70
+
66
71
  if not experiment_id:
67
72
  experiment_instance = Experiment(experiment) if experiment else Experiment.get_experiment_in_context()
68
73
  experiment_id = experiment_instance.uuid if experiment_instance else None
@@ -100,10 +105,15 @@ class BioLibApp:
100
105
  utils.STREAM_STDOUT = True
101
106
 
102
107
  enable_print = bool(
103
- utils.STREAM_STDOUT
108
+ (utils.STREAM_STDOUT or stream_logs)
104
109
  and (self._app_version.get('main_output_file') or self._app_version.get('stdout_render_type') == 'text')
105
110
  )
106
- job._stream_logs(enable_print=enable_print) # pylint: disable=protected-access
111
+ job._stream_logs(enable_print=enable_print) # pylint: disable=protected-access
112
+
113
+ if check:
114
+ exit_code = job.get_exit_code()
115
+ if exit_code != 0:
116
+ raise JobResultNonZeroExitCodeError(exit_code)
107
117
 
108
118
  return job
109
119
 
@@ -43,3 +43,12 @@ class JobResultNotFound(JobResultError):
43
43
 
44
44
  class JobResultPermissionError(JobResultError):
45
45
  pass
46
+
47
+
48
+ class JobResultNonZeroExitCodeError(JobResultError):
49
+ """Raised when an app returns a non-zero exit code and check=True."""
50
+ def __init__(self, exit_code: int, message: Optional[str] = None):
51
+ self.exit_code = exit_code
52
+ super().__init__(
53
+ message or f'App returned non-zero exit code: {exit_code}'
54
+ )
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "pybiolib"
3
- version = "1.2.366"
3
+ version = "1.2.408"
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