pybiolib 1.1.2017__tar.gz → 1.1.2025__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 (113) hide show
  1. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/PKG-INFO +1 -1
  2. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/_internal/data_record/data_record.py +9 -6
  3. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/experiments/experiment.py +29 -8
  4. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/pyproject.toml +1 -1
  5. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/LICENSE +0 -0
  6. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/README.md +0 -0
  7. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/__init__.py +0 -0
  8. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/_internal/__init__.py +0 -0
  9. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/_internal/data_record/__init__.py +0 -0
  10. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/_internal/data_record/remote_storage_endpoint.py +0 -0
  11. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/_internal/fuse_mount/__init__.py +0 -0
  12. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/_internal/fuse_mount/experiment_fuse_mount.py +0 -0
  13. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/_internal/http_client.py +0 -0
  14. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/_internal/libs/__init__.py +0 -0
  15. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/_internal/libs/fusepy/__init__.py +0 -0
  16. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/_internal/push_application.py +0 -0
  17. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/_internal/runtime.py +0 -0
  18. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/_internal/utils/__init__.py +0 -0
  19. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/api/__init__.py +0 -0
  20. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/api/client.py +0 -0
  21. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/app/__init__.py +0 -0
  22. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/app/app.py +0 -0
  23. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/app/search_apps.py +0 -0
  24. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/biolib_api_client/__init__.py +0 -0
  25. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/biolib_api_client/api_client.py +0 -0
  26. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/biolib_api_client/app_types.py +0 -0
  27. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/biolib_api_client/auth.py +0 -0
  28. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/biolib_api_client/biolib_app_api.py +0 -0
  29. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/biolib_api_client/biolib_job_api.py +0 -0
  30. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/biolib_api_client/common_types.py +0 -0
  31. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/biolib_api_client/job_types.py +0 -0
  32. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/biolib_api_client/lfs_types.py +0 -0
  33. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/biolib_api_client/user_state.py +0 -0
  34. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/biolib_binary_format/__init__.py +0 -0
  35. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/biolib_binary_format/base_bbf_package.py +0 -0
  36. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/biolib_binary_format/file_in_container.py +0 -0
  37. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/biolib_binary_format/module_input.py +0 -0
  38. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/biolib_binary_format/module_output_v2.py +0 -0
  39. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/biolib_binary_format/remote_endpoints.py +0 -0
  40. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/biolib_binary_format/remote_stream_seeker.py +0 -0
  41. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/biolib_binary_format/saved_job.py +0 -0
  42. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/biolib_binary_format/stdout_and_stderr.py +0 -0
  43. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/biolib_binary_format/system_exception.py +0 -0
  44. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/biolib_binary_format/system_status_update.py +0 -0
  45. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/biolib_binary_format/utils.py +0 -0
  46. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/biolib_docker_client/__init__.py +0 -0
  47. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/biolib_download_container.py +0 -0
  48. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/biolib_errors.py +0 -0
  49. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/biolib_logging.py +0 -0
  50. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/cli/__init__.py +0 -0
  51. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/cli/auth.py +0 -0
  52. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/cli/data_record.py +0 -0
  53. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/cli/download_container.py +0 -0
  54. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/cli/init.py +0 -0
  55. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/cli/lfs.py +0 -0
  56. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/cli/push.py +0 -0
  57. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/cli/run.py +0 -0
  58. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/cli/runtime.py +0 -0
  59. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/cli/start.py +0 -0
  60. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/compute_node/.gitignore +0 -0
  61. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/compute_node/__init__.py +0 -0
  62. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/compute_node/cloud_utils/__init__.py +0 -0
  63. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/compute_node/cloud_utils/cloud_utils.py +0 -0
  64. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/compute_node/job_worker/__init__.py +0 -0
  65. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/compute_node/job_worker/cache_state.py +0 -0
  66. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/compute_node/job_worker/cache_types.py +0 -0
  67. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/compute_node/job_worker/docker_image_cache.py +0 -0
  68. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/compute_node/job_worker/executors/__init__.py +0 -0
  69. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/compute_node/job_worker/executors/docker_executor.py +0 -0
  70. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/compute_node/job_worker/executors/docker_types.py +0 -0
  71. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/compute_node/job_worker/executors/tars/__init__.py +0 -0
  72. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/compute_node/job_worker/executors/types.py +0 -0
  73. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/compute_node/job_worker/job_legacy_input_wait_timeout_thread.py +0 -0
  74. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/compute_node/job_worker/job_max_runtime_timer_thread.py +0 -0
  75. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/compute_node/job_worker/job_storage.py +0 -0
  76. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/compute_node/job_worker/job_worker.py +0 -0
  77. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/compute_node/job_worker/large_file_system.py +0 -0
  78. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/compute_node/job_worker/mappings.py +0 -0
  79. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/compute_node/job_worker/utilization_reporter_thread.py +0 -0
  80. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/compute_node/job_worker/utils.py +0 -0
  81. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/compute_node/remote_host_proxy.py +0 -0
  82. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/compute_node/socker_listener_thread.py +0 -0
  83. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/compute_node/socket_sender_thread.py +0 -0
  84. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/compute_node/utils.py +0 -0
  85. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/compute_node/webserver/__init__.py +0 -0
  86. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/compute_node/webserver/gunicorn_flask_application.py +0 -0
  87. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/compute_node/webserver/webserver.py +0 -0
  88. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/compute_node/webserver/webserver_types.py +0 -0
  89. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/compute_node/webserver/webserver_utils.py +0 -0
  90. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/compute_node/webserver/worker_thread.py +0 -0
  91. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/experiments/__init__.py +0 -0
  92. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/experiments/types.py +0 -0
  93. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/jobs/__init__.py +0 -0
  94. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/jobs/job.py +0 -0
  95. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/jobs/job_result.py +0 -0
  96. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/jobs/types.py +0 -0
  97. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/lfs/__init__.py +0 -0
  98. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/lfs/cache.py +0 -0
  99. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/lfs/utils.py +0 -0
  100. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/runtime/__init__.py +0 -0
  101. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/sdk/__init__.py +0 -0
  102. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/tables.py +0 -0
  103. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/templates/__init__.py +0 -0
  104. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/templates/example_app.py +0 -0
  105. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/typing_utils.py +0 -0
  106. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/user/__init__.py +0 -0
  107. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/user/sign_in.py +0 -0
  108. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/utils/__init__.py +0 -0
  109. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/utils/app_uri.py +0 -0
  110. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/utils/cache_state.py +0 -0
  111. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/utils/multipart_uploader.py +0 -0
  112. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/biolib/utils/seq_util.py +0 -0
  113. {pybiolib-1.1.2017 → pybiolib-1.1.2025}/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.2017
3
+ Version: 1.1.2025
4
4
  Summary: BioLib Python Client
5
5
  Home-page: https://github.com/biolib
6
6
  License: MIT
@@ -22,11 +22,6 @@ PathFilter = Union[str, Callable[[str], bool]]
22
22
  class DataRecord:
23
23
  def __init__(self, uri: str):
24
24
  self._uri = uri
25
- uri_parsed = parse_app_uri(uri, use_account_as_name_default=False)
26
- if not uri_parsed['app_name']:
27
- raise ValueError('Expected parameter "uri" to contain resource name')
28
-
29
- self._name = uri_parsed['app_name']
30
25
 
31
26
  def __repr__(self):
32
27
  return f'DataRecord: {self._uri}'
@@ -37,7 +32,11 @@ class DataRecord:
37
32
 
38
33
  @property
39
34
  def name(self) -> str:
40
- return self._name
35
+ uri_parsed = parse_app_uri(self.uri, use_account_as_name_default=False)
36
+ if not uri_parsed['app_name']:
37
+ raise ValueError('Expected parameter "uri" to contain resource name')
38
+
39
+ return uri_parsed['app_name']
41
40
 
42
41
  def list_files(self, path_filter: Optional[PathFilter] = None) -> List[LazyLoadedFile]:
43
42
  app_response: AppGetResponse = api_client.get(path='/app/', params={'uri': self._uri}).json()
@@ -76,6 +75,10 @@ class DataRecord:
76
75
  def save_files(self, output_dir: str, path_filter: Optional[PathFilter] = None) -> None:
77
76
  self.download_files(output_dir=output_dir, path_filter=path_filter)
78
77
 
78
+ def update(self, data_path: str) -> None:
79
+ assert os.path.isdir(data_path), f'The path "{data_path}" is not a directory.'
80
+ self._uri = lfs.push_large_file_system(lfs_uri=self._uri, input_dir=data_path)
81
+
79
82
  @staticmethod
80
83
  def create(destination: str, data_path: str, name: Optional[str] = None) -> 'DataRecord':
81
84
  assert os.path.isdir(data_path), f'The path "{data_path}" is not a directory.'
@@ -2,7 +2,8 @@ import time
2
2
  from collections import OrderedDict
3
3
 
4
4
  from biolib import api
5
- from biolib.biolib_errors import BioLibError
5
+ from biolib._internal.http_client import HttpError
6
+ from biolib.biolib_errors import BioLibError, NotFound
6
7
  from biolib.experiments.types import ExperimentDict
7
8
  from biolib.jobs.job import Job
8
9
  from biolib.jobs.types import JobsPaginatedResponse
@@ -22,8 +23,8 @@ class Experiment:
22
23
  }
23
24
  )
24
25
 
25
- def __init__(self, name: str):
26
- self._experiment_dict: ExperimentDict = self._create_in_backend_or_get_experiment_dict(name)
26
+ def __init__(self, uri: str):
27
+ self._experiment_dict: ExperimentDict = self._get_or_create_by_uri(uri)
27
28
 
28
29
  def __enter__(self):
29
30
  Experiment._BIOLIB_EXPERIMENTS.append(self)
@@ -151,13 +152,33 @@ class Experiment:
151
152
 
152
153
  return jobs
153
154
 
154
- def rename(self, new_name: str) -> None:
155
- api.client.patch(f'/apps/{self.uuid}/', data={'name': new_name}, params={'resource_type': 'experiment'})
155
+ def rename(self, name: Optional[str] = None, destination: Optional[str] = None) -> None:
156
+ if destination:
157
+ try:
158
+ account_id = api.client.get(path=f'/account/{destination}/').json()['uuid']
159
+ except HttpError as error:
160
+ if error.code == 404:
161
+ raise NotFound(f'Destination "{destination}" not found.') from None
162
+ else:
163
+ raise error
164
+
165
+ api.client.patch(
166
+ path=f'/apps/{self.uuid}/',
167
+ data={'account_id': account_id},
168
+ params={'resource_type': 'experiment'},
169
+ )
170
+
171
+ if name:
172
+ api.client.patch(path=f'/apps/{self.uuid}/', data={'name': name}, params={'resource_type': 'experiment'})
173
+
156
174
  self._refetch_experiment_dict()
157
175
 
158
- def _create_in_backend_or_get_experiment_dict(self, name: str) -> ExperimentDict:
159
- # This endpoint returns experiment dict if already created
160
- experiment_dict: ExperimentDict = api.client.post(path='/experiments/', data={'name': name}).json()
176
+ @staticmethod
177
+ def _get_or_create_by_uri(uri: str) -> ExperimentDict:
178
+ experiment_dict: ExperimentDict = api.client.post(
179
+ path='/experiments/',
180
+ data={'uri' if '/' in uri else 'name': uri},
181
+ ).json()
161
182
  return experiment_dict
162
183
 
163
184
  def _refetch_experiment_dict(self) -> None:
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "pybiolib"
3
- version = "1.1.2017"
3
+ version = "1.1.2025"
4
4
  description = "BioLib Python Client"
5
5
  readme = "README.md"
6
6
  license = "MIT"
File without changes
File without changes