pybiolib 1.2.108__tar.gz → 1.2.110.dev1__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 (123) hide show
  1. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/PKG-INFO +1 -1
  2. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/_internal/push_application.py +8 -2
  3. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/biolib_api_client/biolib_app_api.py +25 -21
  4. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/pyproject.toml +1 -1
  5. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/LICENSE +0 -0
  6. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/PYPI_README.md +0 -0
  7. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/__init__.py +0 -0
  8. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/_data_record/data_record.py +0 -0
  9. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/_internal/__init__.py +0 -0
  10. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/_internal/data_record/__init__.py +0 -0
  11. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/_internal/data_record/data_record.py +0 -0
  12. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/_internal/data_record/push_data.py +0 -0
  13. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/_internal/data_record/remote_storage_endpoint.py +0 -0
  14. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/_internal/file_utils.py +0 -0
  15. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/_internal/fuse_mount/__init__.py +0 -0
  16. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/_internal/fuse_mount/experiment_fuse_mount.py +0 -0
  17. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/_internal/http_client.py +0 -0
  18. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/_internal/lfs/__init__.py +0 -0
  19. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/_internal/lfs/cache.py +0 -0
  20. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/_internal/libs/__init__.py +0 -0
  21. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/_internal/libs/fusepy/__init__.py +0 -0
  22. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/_internal/runtime.py +0 -0
  23. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/_internal/types/__init__.py +0 -0
  24. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/_internal/types/app.py +0 -0
  25. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/_internal/types/data_record.py +0 -0
  26. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/_internal/types/experiment.py +0 -0
  27. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/_internal/types/resource.py +0 -0
  28. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/_internal/types/resource_version.py +0 -0
  29. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/_internal/types/typing.py +0 -0
  30. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/_internal/utils/__init__.py +0 -0
  31. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/_internal/utils/multinode.py +0 -0
  32. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/_runtime/runtime.py +0 -0
  33. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/api/__init__.py +0 -0
  34. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/api/client.py +0 -0
  35. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/app/__init__.py +0 -0
  36. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/app/app.py +0 -0
  37. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/app/search_apps.py +0 -0
  38. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/biolib_api_client/__init__.py +0 -0
  39. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/biolib_api_client/api_client.py +0 -0
  40. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/biolib_api_client/app_types.py +0 -0
  41. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/biolib_api_client/auth.py +0 -0
  42. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/biolib_api_client/biolib_job_api.py +0 -0
  43. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/biolib_api_client/common_types.py +0 -0
  44. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/biolib_api_client/job_types.py +0 -0
  45. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/biolib_api_client/lfs_types.py +0 -0
  46. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/biolib_api_client/user_state.py +0 -0
  47. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/biolib_binary_format/__init__.py +0 -0
  48. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/biolib_binary_format/base_bbf_package.py +0 -0
  49. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/biolib_binary_format/file_in_container.py +0 -0
  50. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/biolib_binary_format/module_input.py +0 -0
  51. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/biolib_binary_format/module_output_v2.py +0 -0
  52. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/biolib_binary_format/remote_endpoints.py +0 -0
  53. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/biolib_binary_format/remote_stream_seeker.py +0 -0
  54. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/biolib_binary_format/saved_job.py +0 -0
  55. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/biolib_binary_format/stdout_and_stderr.py +0 -0
  56. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/biolib_binary_format/system_exception.py +0 -0
  57. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/biolib_binary_format/system_status_update.py +0 -0
  58. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/biolib_binary_format/utils.py +0 -0
  59. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/biolib_docker_client/__init__.py +0 -0
  60. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/biolib_download_container.py +0 -0
  61. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/biolib_errors.py +0 -0
  62. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/biolib_logging.py +0 -0
  63. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/cli/__init__.py +0 -0
  64. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/cli/auth.py +0 -0
  65. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/cli/data_record.py +0 -0
  66. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/cli/download_container.py +0 -0
  67. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/cli/init.py +0 -0
  68. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/cli/lfs.py +0 -0
  69. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/cli/push.py +0 -0
  70. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/cli/run.py +0 -0
  71. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/cli/runtime.py +0 -0
  72. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/cli/start.py +0 -0
  73. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/compute_node/.gitignore +0 -0
  74. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/compute_node/__init__.py +0 -0
  75. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/compute_node/cloud_utils/__init__.py +0 -0
  76. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/compute_node/cloud_utils/cloud_utils.py +0 -0
  77. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/compute_node/job_worker/__init__.py +0 -0
  78. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/compute_node/job_worker/cache_state.py +0 -0
  79. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/compute_node/job_worker/cache_types.py +0 -0
  80. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/compute_node/job_worker/docker_image_cache.py +0 -0
  81. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/compute_node/job_worker/executors/__init__.py +0 -0
  82. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/compute_node/job_worker/executors/docker_executor.py +0 -0
  83. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/compute_node/job_worker/executors/docker_types.py +0 -0
  84. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/compute_node/job_worker/executors/tars/__init__.py +0 -0
  85. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/compute_node/job_worker/executors/types.py +0 -0
  86. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/compute_node/job_worker/job_legacy_input_wait_timeout_thread.py +0 -0
  87. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/compute_node/job_worker/job_max_runtime_timer_thread.py +0 -0
  88. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/compute_node/job_worker/job_storage.py +0 -0
  89. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/compute_node/job_worker/job_worker.py +0 -0
  90. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/compute_node/job_worker/large_file_system.py +0 -0
  91. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/compute_node/job_worker/mappings.py +0 -0
  92. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/compute_node/job_worker/utilization_reporter_thread.py +0 -0
  93. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/compute_node/job_worker/utils.py +0 -0
  94. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/compute_node/remote_host_proxy.py +0 -0
  95. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/compute_node/socker_listener_thread.py +0 -0
  96. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/compute_node/socket_sender_thread.py +0 -0
  97. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/compute_node/utils.py +0 -0
  98. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/compute_node/webserver/__init__.py +0 -0
  99. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/compute_node/webserver/gunicorn_flask_application.py +0 -0
  100. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/compute_node/webserver/webserver.py +0 -0
  101. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/compute_node/webserver/webserver_types.py +0 -0
  102. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/compute_node/webserver/webserver_utils.py +0 -0
  103. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/compute_node/webserver/worker_thread.py +0 -0
  104. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/experiments/__init__.py +0 -0
  105. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/experiments/experiment.py +0 -0
  106. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/jobs/__init__.py +0 -0
  107. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/jobs/job.py +0 -0
  108. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/jobs/job_result.py +0 -0
  109. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/jobs/types.py +0 -0
  110. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/runtime/__init__.py +0 -0
  111. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/sdk/__init__.py +0 -0
  112. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/tables.py +0 -0
  113. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/templates/__init__.py +0 -0
  114. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/templates/example_app.py +0 -0
  115. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/typing_utils.py +0 -0
  116. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/user/__init__.py +0 -0
  117. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/user/sign_in.py +0 -0
  118. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/utils/__init__.py +0 -0
  119. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/utils/app_uri.py +0 -0
  120. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/utils/cache_state.py +0 -0
  121. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/utils/multipart_uploader.py +0 -0
  122. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/biolib/utils/seq_util.py +0 -0
  123. {pybiolib-1.2.108 → pybiolib-1.2.110.dev1}/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.2.108
3
+ Version: 1.2.110.dev1
4
4
  Summary: BioLib Python Client
5
5
  Home-page: https://github.com/biolib
6
6
  License: MIT
@@ -78,6 +78,13 @@ def push_application(
78
78
  app_version_to_copy_images_from: Optional[str],
79
79
  is_dev_version: Optional[bool],
80
80
  ):
81
+ app_uri_parts = app_uri.split(':')
82
+ if len(app_uri_parts) > 2:
83
+ raise BioLibError('Invalid URI only a single colon allowed')
84
+
85
+ app_uri_to_fetch = app_uri_parts[0]
86
+ semantic_version = app_uri_parts[1] if len(app_uri_parts) == 2 else None
87
+
81
88
  app_path_absolute = Path(app_path).resolve()
82
89
 
83
90
  api_client = BiolibApiClient.get()
@@ -177,8 +184,6 @@ def push_application(
177
184
  source_files_zip_bytes = b''.join(byte_iterator)
178
185
  os.chdir(original_directory)
179
186
 
180
- # TODO: Raise exception if app_uri contains version
181
- app_uri_to_fetch = app_uri
182
187
  if app_version_to_copy_images_from and app_version_to_copy_images_from != 'active':
183
188
  # Get app with `app_version_to_copy_images_from` in app_uri_to_fetch to get the app version public id.
184
189
  app_uri_to_fetch += f':{app_version_to_copy_images_from}'
@@ -187,6 +192,7 @@ def push_application(
187
192
  app = app_response['app']
188
193
  # push new app version
189
194
  new_app_version_json = BiolibAppApi.push_app_version(
195
+ semantic_version=semantic_version,
190
196
  app_id=app['public_id'],
191
197
  app_name=app['name'],
192
198
  author=app['account_handle'],
@@ -1,29 +1,29 @@
1
1
  import mimetypes
2
+ import os
2
3
  import random
3
4
  import re
4
- import os
5
5
  import subprocess
6
6
 
7
7
  import biolib.api
8
8
  from biolib import biolib_errors
9
9
  from biolib._internal.http_client import HttpError
10
- from biolib.typing_utils import Optional
11
10
  from biolib.biolib_api_client import AppGetResponse
12
11
  from biolib.biolib_logging import logger
12
+ from biolib.typing_utils import Optional
13
13
 
14
14
 
15
15
  def encode_multipart(data, files):
16
16
  boundary = f'----------{random.randint(0, 1000000000)}'
17
17
  line_array = []
18
18
 
19
- for (key, value) in data.items():
20
- if not value is None:
19
+ for key, value in data.items():
20
+ if value is not None:
21
21
  line_array.append(f'--{boundary}')
22
22
  line_array.append(f'Content-Disposition: form-data; name="{key}"')
23
23
  line_array.append('')
24
24
  line_array.append(value)
25
25
 
26
- for (key, (filename, value)) in files.items():
26
+ for key, (filename, value) in files.items():
27
27
  line_array.append(f'--{boundary}')
28
28
  line_array.append(f'Content-Disposition: form-data; name="{key}"; filename="{filename}"')
29
29
  line_array.append(f'Content-Type: {mimetypes.guess_type(filename)[0] or "application/octet-stream"}')
@@ -63,7 +63,6 @@ def _get_git_repository_url() -> str:
63
63
 
64
64
 
65
65
  class BiolibAppApi:
66
-
67
66
  @staticmethod
68
67
  def get_by_uri(uri: str) -> AppGetResponse:
69
68
  # Replace protocol with @ (if supplied)
@@ -84,26 +83,31 @@ class BiolibAppApi:
84
83
 
85
84
  @staticmethod
86
85
  def push_app_version(
87
- app_id,
88
- zip_binary,
89
- author,
90
- app_name,
91
- set_as_active,
92
- app_version_id_to_copy_images_from: Optional[str],
86
+ app_id,
87
+ zip_binary,
88
+ author,
89
+ app_name,
90
+ set_as_active,
91
+ app_version_id_to_copy_images_from: Optional[str],
92
+ semantic_version: Optional[str],
93
93
  ):
94
94
  try:
95
+ data = {
96
+ 'app': app_id,
97
+ 'set_as_active': 'true' if set_as_active else 'false',
98
+ 'state': 'published',
99
+ 'app_version_id_to_copy_images_from': app_version_id_to_copy_images_from,
100
+ 'git_branch_name': _get_git_branch_name(),
101
+ 'git_repository_url': _get_git_repository_url(),
102
+ }
103
+ if semantic_version:
104
+ data['semantic_version'] = semantic_version
105
+
95
106
  content_type, data_encoded = encode_multipart(
96
- data={
97
- 'app': app_id,
98
- 'set_as_active': 'true' if set_as_active else 'false',
99
- 'state': 'published',
100
- 'app_version_id_to_copy_images_from': app_version_id_to_copy_images_from,
101
- 'git_branch_name': _get_git_branch_name(),
102
- 'git_repository_url': _get_git_repository_url(),
103
- },
107
+ data=data,
104
108
  files={
105
109
  'source_files_zip': ('source_files.zip', zip_binary),
106
- }
110
+ },
107
111
  )
108
112
  response = biolib.api.client.post(
109
113
  path='/app_versions/',
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "pybiolib"
3
- version = "1.2.108"
3
+ version = "1.2.110.dev1"
4
4
  description = "BioLib Python Client"
5
5
  readme = "PYPI_README.md"
6
6
  license = "MIT"
File without changes