pybiolib 1.1.2109__tar.gz → 1.1.2119__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 (119) hide show
  1. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/PKG-INFO +1 -1
  2. pybiolib-1.1.2119/biolib/_internal/types/__init__.py +1 -0
  3. pybiolib-1.1.2119/biolib/_internal/types/resources.py +14 -0
  4. pybiolib-1.1.2119/biolib/_internal/types/typing.py +7 -0
  5. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/app/app.py +2 -0
  6. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/biolib_api_client/biolib_job_api.py +6 -0
  7. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/experiments/experiment.py +21 -2
  8. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/jobs/job.py +3 -0
  9. pybiolib-1.1.2119/biolib/typing_utils.py +2 -0
  10. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/pyproject.toml +1 -1
  11. pybiolib-1.1.2109/biolib/typing_utils.py +0 -7
  12. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/LICENSE +0 -0
  13. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/README.md +0 -0
  14. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/__init__.py +0 -0
  15. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/_data_record/data_record.py +0 -0
  16. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/_internal/__init__.py +0 -0
  17. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/_internal/data_record/__init__.py +0 -0
  18. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/_internal/data_record/data_record.py +0 -0
  19. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/_internal/data_record/remote_storage_endpoint.py +0 -0
  20. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/_internal/file_utils.py +0 -0
  21. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/_internal/fuse_mount/__init__.py +0 -0
  22. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/_internal/fuse_mount/experiment_fuse_mount.py +0 -0
  23. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/_internal/http_client.py +0 -0
  24. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/_internal/lfs/__init__.py +0 -0
  25. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/_internal/lfs/cache.py +0 -0
  26. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/_internal/libs/__init__.py +0 -0
  27. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/_internal/libs/fusepy/__init__.py +0 -0
  28. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/_internal/push_application.py +0 -0
  29. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/_internal/runtime.py +0 -0
  30. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/_internal/utils/__init__.py +0 -0
  31. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/_runtime/runtime.py +0 -0
  32. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/api/__init__.py +0 -0
  33. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/api/client.py +0 -0
  34. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/app/__init__.py +0 -0
  35. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/app/search_apps.py +0 -0
  36. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/biolib_api_client/__init__.py +0 -0
  37. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/biolib_api_client/api_client.py +0 -0
  38. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/biolib_api_client/app_types.py +0 -0
  39. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/biolib_api_client/auth.py +0 -0
  40. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/biolib_api_client/biolib_app_api.py +0 -0
  41. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/biolib_api_client/common_types.py +0 -0
  42. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/biolib_api_client/job_types.py +0 -0
  43. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/biolib_api_client/lfs_types.py +0 -0
  44. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/biolib_api_client/user_state.py +0 -0
  45. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/biolib_binary_format/__init__.py +0 -0
  46. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/biolib_binary_format/base_bbf_package.py +0 -0
  47. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/biolib_binary_format/file_in_container.py +0 -0
  48. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/biolib_binary_format/module_input.py +0 -0
  49. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/biolib_binary_format/module_output_v2.py +0 -0
  50. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/biolib_binary_format/remote_endpoints.py +0 -0
  51. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/biolib_binary_format/remote_stream_seeker.py +0 -0
  52. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/biolib_binary_format/saved_job.py +0 -0
  53. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/biolib_binary_format/stdout_and_stderr.py +0 -0
  54. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/biolib_binary_format/system_exception.py +0 -0
  55. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/biolib_binary_format/system_status_update.py +0 -0
  56. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/biolib_binary_format/utils.py +0 -0
  57. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/biolib_docker_client/__init__.py +0 -0
  58. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/biolib_download_container.py +0 -0
  59. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/biolib_errors.py +0 -0
  60. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/biolib_logging.py +0 -0
  61. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/cli/__init__.py +0 -0
  62. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/cli/auth.py +0 -0
  63. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/cli/data_record.py +0 -0
  64. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/cli/download_container.py +0 -0
  65. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/cli/init.py +0 -0
  66. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/cli/lfs.py +0 -0
  67. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/cli/push.py +0 -0
  68. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/cli/run.py +0 -0
  69. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/cli/runtime.py +0 -0
  70. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/cli/start.py +0 -0
  71. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/compute_node/.gitignore +0 -0
  72. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/compute_node/__init__.py +0 -0
  73. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/compute_node/cloud_utils/__init__.py +0 -0
  74. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/compute_node/cloud_utils/cloud_utils.py +0 -0
  75. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/compute_node/job_worker/__init__.py +0 -0
  76. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/compute_node/job_worker/cache_state.py +0 -0
  77. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/compute_node/job_worker/cache_types.py +0 -0
  78. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/compute_node/job_worker/docker_image_cache.py +0 -0
  79. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/compute_node/job_worker/executors/__init__.py +0 -0
  80. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/compute_node/job_worker/executors/docker_executor.py +0 -0
  81. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/compute_node/job_worker/executors/docker_types.py +0 -0
  82. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/compute_node/job_worker/executors/tars/__init__.py +0 -0
  83. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/compute_node/job_worker/executors/types.py +0 -0
  84. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/compute_node/job_worker/job_legacy_input_wait_timeout_thread.py +0 -0
  85. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/compute_node/job_worker/job_max_runtime_timer_thread.py +0 -0
  86. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/compute_node/job_worker/job_storage.py +0 -0
  87. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/compute_node/job_worker/job_worker.py +0 -0
  88. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/compute_node/job_worker/large_file_system.py +0 -0
  89. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/compute_node/job_worker/mappings.py +0 -0
  90. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/compute_node/job_worker/utilization_reporter_thread.py +0 -0
  91. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/compute_node/job_worker/utils.py +0 -0
  92. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/compute_node/remote_host_proxy.py +0 -0
  93. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/compute_node/socker_listener_thread.py +0 -0
  94. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/compute_node/socket_sender_thread.py +0 -0
  95. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/compute_node/utils.py +0 -0
  96. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/compute_node/webserver/__init__.py +0 -0
  97. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/compute_node/webserver/gunicorn_flask_application.py +0 -0
  98. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/compute_node/webserver/webserver.py +0 -0
  99. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/compute_node/webserver/webserver_types.py +0 -0
  100. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/compute_node/webserver/webserver_utils.py +0 -0
  101. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/compute_node/webserver/worker_thread.py +0 -0
  102. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/experiments/__init__.py +0 -0
  103. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/experiments/types.py +0 -0
  104. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/jobs/__init__.py +0 -0
  105. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/jobs/job_result.py +0 -0
  106. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/jobs/types.py +0 -0
  107. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/runtime/__init__.py +0 -0
  108. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/sdk/__init__.py +0 -0
  109. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/tables.py +0 -0
  110. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/templates/__init__.py +0 -0
  111. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/templates/example_app.py +0 -0
  112. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/user/__init__.py +0 -0
  113. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/user/sign_in.py +0 -0
  114. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/utils/__init__.py +0 -0
  115. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/utils/app_uri.py +0 -0
  116. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/utils/cache_state.py +0 -0
  117. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/utils/multipart_uploader.py +0 -0
  118. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/utils/seq_util.py +0 -0
  119. {pybiolib-1.1.2109 → pybiolib-1.1.2119}/biolib/utils/zip/remote_zip.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pybiolib
3
- Version: 1.1.2109
3
+ Version: 1.1.2119
4
4
  Summary: BioLib Python Client
5
5
  Home-page: https://github.com/biolib
6
6
  License: MIT
@@ -0,0 +1 @@
1
+ from .resources import * # noqa: F403
@@ -0,0 +1,14 @@
1
+ from .typing import Optional, TypedDict
2
+
3
+
4
+ class ExperimentDict(TypedDict):
5
+ job_count: int
6
+ job_running_count: int
7
+
8
+
9
+ class ResourceDict(TypedDict):
10
+ created_at: str
11
+ experiment: Optional[ExperimentDict]
12
+ name: str
13
+ uri: str
14
+ uuid: str
@@ -0,0 +1,7 @@
1
+ import sys
2
+
3
+ # import and expose everything from the typing module
4
+ from typing import * # noqa:F403 pylint: disable=wildcard-import, unused-wildcard-import
5
+
6
+ if sys.version_info < (3, 8): # noqa: UP036
7
+ from typing_extensions import Literal, TypedDict # pylint: disable=unused-import
@@ -56,6 +56,7 @@ class BioLibApp:
56
56
  result_prefix: Optional[str] = None,
57
57
  timeout: Optional[int] = None,
58
58
  notify: bool = False,
59
+ machine_count: Optional[int] = None,
59
60
  ) -> Job:
60
61
  if not experiment_id:
61
62
  experiment = Experiment.get_experiment_in_context()
@@ -85,6 +86,7 @@ class BioLibApp:
85
86
  override_command=override_command,
86
87
  result_prefix=result_prefix,
87
88
  timeout=timeout,
89
+ requested_machine_count=machine_count,
88
90
  )
89
91
  if blocking:
90
92
  # TODO: Deprecate utils.STREAM_STDOUT and always stream logs by simply calling job.stream_logs()
@@ -46,6 +46,7 @@ class BiolibJobApi:
46
46
  experiment_uuid: Optional[str] = None,
47
47
  timeout: Optional[int] = None,
48
48
  notify: bool = False,
49
+ requested_machine_count: Optional[int] = None,
49
50
  ):
50
51
  data = {
51
52
  'app_version_id': app_version_id,
@@ -73,6 +74,9 @@ class BiolibJobApi:
73
74
  'requested_machine': machine
74
75
  })
75
76
 
77
+ if requested_machine_count:
78
+ data.update({'requested_machine_count': requested_machine_count})
79
+
76
80
  if experiment_uuid:
77
81
  data['experiment_uuid'] = experiment_uuid
78
82
 
@@ -156,6 +160,7 @@ class BiolibJobApi:
156
160
  caller_job_uuid: Optional[str] = None,
157
161
  requested_timeout_seconds: Optional[int] = None,
158
162
  notify: bool = False,
163
+ requested_machine_count: Optional[int] = None,
159
164
  ) -> Dict:
160
165
  job_dict: Dict = biolib.api.client.post(
161
166
  path='/jobs/create_job_with_data/',
@@ -171,6 +176,7 @@ class BiolibJobApi:
171
176
  'client-version': BIOLIB_PACKAGE_VERSION,
172
177
  'experiment-uuid': experiment_uuid,
173
178
  'requested-machine': requested_machine,
179
+ 'requested-machine-count': str(requested_machine_count) if requested_machine_count else None,
174
180
  'result-name-prefix': result_name_prefix,
175
181
  'requested-timeout-seconds': str(requested_timeout_seconds) if requested_timeout_seconds else None,
176
182
  'notify': 'true' if notify else 'false',
@@ -1,6 +1,7 @@
1
1
  import time
2
2
  from collections import OrderedDict
3
3
 
4
+ import biolib._internal.types as _types
4
5
  from biolib import api
5
6
  from biolib._internal.http_client import HttpError
6
7
  from biolib.biolib_errors import BioLibError, NotFound
@@ -23,8 +24,11 @@ class Experiment:
23
24
  }
24
25
  )
25
26
 
26
- def __init__(self, uri: str):
27
- self._experiment_dict: ExperimentDict = self._get_or_create_by_uri(uri)
27
+ def __init__(self, uri: str, _experiment_dict: Optional[ExperimentDict] = None):
28
+ if not _experiment_dict:
29
+ self._experiment_dict: ExperimentDict = self._get_or_create_by_uri(uri)
30
+ else:
31
+ self._experiment_dict = _experiment_dict
28
32
 
29
33
  def __enter__(self):
30
34
  Experiment._BIOLIB_EXPERIMENTS.append(self)
@@ -62,6 +66,21 @@ class Experiment:
62
66
  title='Experiments',
63
67
  ).print_table()
64
68
 
69
+ @staticmethod
70
+ def get_by_uri(uri: str) -> 'Experiment':
71
+ resource_dict: _types.ResourceDict = api.client.get('/resources/', params={'uri': uri}).json()
72
+ if not resource_dict['experiment']:
73
+ raise ValueError('Resource from URI is not an experiment')
74
+
75
+ legacy_experiment_dict = ExperimentDict(
76
+ created_at=resource_dict['created_at'],
77
+ job_count=resource_dict['experiment']['job_count'],
78
+ job_running_count=resource_dict['experiment']['job_running_count'],
79
+ name=resource_dict['name'],
80
+ uuid=resource_dict['uuid'],
81
+ )
82
+ return Experiment(uri=resource_dict['uri'], _experiment_dict=legacy_experiment_dict)
83
+
65
84
  def wait(self) -> None:
66
85
  self._refetch_experiment_dict()
67
86
  while self._experiment_dict['job_running_count'] > 0:
@@ -412,6 +412,7 @@ class Job:
412
412
  result_prefix: Optional[str] = None,
413
413
  timeout: Optional[int] = None,
414
414
  notify: bool = False,
415
+ requested_machine_count: Optional[int] = None,
415
416
  ) -> 'Job':
416
417
  if len(module_input_serialized) < 500_000:
417
418
  _job_dict = BiolibJobApi.create_job_with_data(
@@ -424,6 +425,7 @@ class Job:
424
425
  requested_machine=machine,
425
426
  requested_timeout_seconds=timeout,
426
427
  result_name_prefix=result_prefix,
428
+ requested_machine_count=requested_machine_count,
427
429
  )
428
430
  return Job(cast(JobDict, _job_dict))
429
431
 
@@ -435,6 +437,7 @@ class Job:
435
437
  notify=notify,
436
438
  override_command=override_command,
437
439
  timeout=timeout,
440
+ requested_machine_count=requested_machine_count,
438
441
  )
439
442
  JobStorage.upload_module_input(job=job_dict, module_input_serialized=module_input_serialized)
440
443
  cloud_job = BiolibJobApi.create_cloud_job(job_id=job_dict['public_id'], result_name_prefix=result_prefix)
@@ -0,0 +1,2 @@
1
+ # TODO: Deprecate and later remove this file
2
+ from biolib._internal.types.typing import * # pylint: disable=wildcard-import, unused-wildcard-import
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "pybiolib"
3
- version = "1.1.2109"
3
+ version = "1.1.2119"
4
4
  description = "BioLib Python Client"
5
5
  readme = "README.md"
6
6
  license = "MIT"
@@ -1,7 +0,0 @@
1
- import sys
2
-
3
- # import and expose everything from the typing module
4
- from typing import * # pylint: disable=wildcard-import, unused-wildcard-import
5
-
6
- if sys.version_info < (3, 8):
7
- from typing_extensions import TypedDict, Literal # pylint: disable=unused-import
File without changes
File without changes