pybiolib 1.1.1673__tar.gz → 1.1.1682__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 (105) hide show
  1. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/PKG-INFO +1 -1
  2. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/biolib_api_client/biolib_app_api.py +51 -22
  3. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/pyproject.toml +1 -1
  4. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/LICENSE +0 -0
  5. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/README.md +0 -0
  6. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/__init__.py +0 -0
  7. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/_internal/__init__.py +0 -0
  8. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/_internal/http_client.py +0 -0
  9. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/_internal/push_application.py +0 -0
  10. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/api/__init__.py +0 -0
  11. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/api/client.py +0 -0
  12. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/app/__init__.py +0 -0
  13. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/app/app.py +0 -0
  14. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/app/search_apps.py +0 -0
  15. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/biolib_api_client/__init__.py +0 -0
  16. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/biolib_api_client/api_client.py +0 -0
  17. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/biolib_api_client/app_types.py +0 -0
  18. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/biolib_api_client/auth.py +0 -0
  19. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/biolib_api_client/biolib_account_api.py +0 -0
  20. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/biolib_api_client/biolib_job_api.py +0 -0
  21. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/biolib_api_client/biolib_large_file_system_api.py +0 -0
  22. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/biolib_api_client/common_types.py +0 -0
  23. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/biolib_api_client/job_types.py +0 -0
  24. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/biolib_api_client/lfs_types.py +0 -0
  25. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/biolib_api_client/user_state.py +0 -0
  26. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/biolib_binary_format/__init__.py +0 -0
  27. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/biolib_binary_format/base_bbf_package.py +0 -0
  28. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/biolib_binary_format/file_in_container.py +0 -0
  29. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/biolib_binary_format/module_input.py +0 -0
  30. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/biolib_binary_format/module_output_v2.py +0 -0
  31. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/biolib_binary_format/remote_endpoints.py +0 -0
  32. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/biolib_binary_format/remote_stream_seeker.py +0 -0
  33. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/biolib_binary_format/saved_job.py +0 -0
  34. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/biolib_binary_format/stdout_and_stderr.py +0 -0
  35. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/biolib_binary_format/system_exception.py +0 -0
  36. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/biolib_binary_format/system_status_update.py +0 -0
  37. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/biolib_binary_format/utils.py +0 -0
  38. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/biolib_docker_client/__init__.py +0 -0
  39. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/biolib_download_container.py +0 -0
  40. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/biolib_errors.py +0 -0
  41. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/biolib_logging.py +0 -0
  42. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/cli/__init__.py +0 -0
  43. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/cli/download_container.py +0 -0
  44. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/cli/init.py +0 -0
  45. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/cli/lfs.py +0 -0
  46. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/cli/push.py +0 -0
  47. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/cli/run.py +0 -0
  48. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/cli/runtime.py +0 -0
  49. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/cli/start.py +0 -0
  50. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/compute_node/.gitignore +0 -0
  51. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/compute_node/__init__.py +0 -0
  52. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/compute_node/cloud_utils/__init__.py +0 -0
  53. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/compute_node/cloud_utils/cloud_utils.py +0 -0
  54. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/compute_node/job_worker/__init__.py +0 -0
  55. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/compute_node/job_worker/cache_state.py +0 -0
  56. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/compute_node/job_worker/cache_types.py +0 -0
  57. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/compute_node/job_worker/docker_image_cache.py +0 -0
  58. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/compute_node/job_worker/executors/__init__.py +0 -0
  59. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/compute_node/job_worker/executors/docker_executor.py +0 -0
  60. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/compute_node/job_worker/executors/docker_types.py +0 -0
  61. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/compute_node/job_worker/executors/tars/__init__.py +0 -0
  62. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/compute_node/job_worker/executors/types.py +0 -0
  63. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/compute_node/job_worker/job_legacy_input_wait_timeout_thread.py +0 -0
  64. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/compute_node/job_worker/job_max_runtime_timer_thread.py +0 -0
  65. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/compute_node/job_worker/job_storage.py +0 -0
  66. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/compute_node/job_worker/job_worker.py +0 -0
  67. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/compute_node/job_worker/large_file_system.py +0 -0
  68. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/compute_node/job_worker/mappings.py +0 -0
  69. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/compute_node/job_worker/utilization_reporter_thread.py +0 -0
  70. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/compute_node/job_worker/utils.py +0 -0
  71. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/compute_node/remote_host_proxy.py +0 -0
  72. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/compute_node/socker_listener_thread.py +0 -0
  73. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/compute_node/socket_sender_thread.py +0 -0
  74. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/compute_node/utils.py +0 -0
  75. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/compute_node/webserver/__init__.py +0 -0
  76. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/compute_node/webserver/gunicorn_flask_application.py +0 -0
  77. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/compute_node/webserver/webserver.py +0 -0
  78. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/compute_node/webserver/webserver_types.py +0 -0
  79. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/compute_node/webserver/webserver_utils.py +0 -0
  80. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/compute_node/webserver/worker_thread.py +0 -0
  81. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/experiments/__init__.py +0 -0
  82. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/experiments/experiment.py +0 -0
  83. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/experiments/types.py +0 -0
  84. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/jobs/__init__.py +0 -0
  85. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/jobs/job.py +0 -0
  86. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/jobs/job_result.py +0 -0
  87. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/jobs/types.py +0 -0
  88. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/lfs/__init__.py +0 -0
  89. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/lfs/cache.py +0 -0
  90. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/lfs/utils.py +0 -0
  91. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/runtime/__init__.py +0 -0
  92. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/runtime/results.py +0 -0
  93. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/sdk/__init__.py +0 -0
  94. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/tables.py +0 -0
  95. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/templates/__init__.py +0 -0
  96. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/templates/example_app.py +0 -0
  97. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/typing_utils.py +0 -0
  98. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/user/__init__.py +0 -0
  99. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/user/sign_in.py +0 -0
  100. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/utils/__init__.py +0 -0
  101. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/utils/app_uri.py +0 -0
  102. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/utils/cache_state.py +0 -0
  103. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/utils/multipart_uploader.py +0 -0
  104. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/biolib/utils/seq_util.py +0 -0
  105. {pybiolib-1.1.1673 → pybiolib-1.1.1682}/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.1673
3
+ Version: 1.1.1682
4
4
  Summary: BioLib Python Client
5
5
  Home-page: https://github.com/biolib
6
6
  License: MIT
@@ -1,17 +1,42 @@
1
+ import mimetypes
2
+ import random
1
3
  import re
2
4
  import os
3
5
  import subprocess
4
6
 
5
- import requests
7
+ from requests.exceptions import HTTPError
6
8
 
7
9
  import biolib.api
8
10
  from biolib import biolib_errors
9
11
  from biolib.typing_utils import Optional
10
- from biolib.biolib_api_client.auth import BearerAuth
11
- from biolib.biolib_api_client import BiolibApiClient, AppGetResponse
12
- from biolib.biolib_errors import BioLibError
12
+ from biolib.biolib_api_client import AppGetResponse
13
13
  from biolib.biolib_logging import logger
14
14
 
15
+ def encode_multipart(data, files):
16
+ boundary = f'----------{random.randint(0, 1000000000)}'
17
+ line_array = []
18
+
19
+ for (key, value) in data.items():
20
+ if not value is None:
21
+ line_array.append(f'--{boundary}')
22
+ line_array.append(f'Content-Disposition: form-data; name="{key}"')
23
+ line_array.append('')
24
+ line_array.append(value)
25
+
26
+ for (key, (filename, value)) in files.items():
27
+ line_array.append(f'--{boundary}')
28
+ line_array.append(f'Content-Disposition: form-data; name="{key}"; filename="{filename}"')
29
+ line_array.append(f'Content-Type: {mimetypes.guess_type(filename)[0] or "application/octet-stream"}')
30
+ line_array.append('')
31
+ line_array.append('')
32
+ line_array.append(value)
33
+
34
+ line_array.append(f'--{boundary}--')
35
+ line_array.append('')
36
+
37
+ data_encoded = b'\r\n'.join([line.encode() if isinstance(line, str) else line for line in line_array])
38
+ return 'multipart/form-data; boundary={}'.format(boundary), data_encoded
39
+
15
40
 
16
41
  def _get_git_branch_name() -> str:
17
42
  try:
@@ -51,7 +76,7 @@ class BiolibAppApi:
51
76
  app_response: AppGetResponse = response.json()
52
77
  return app_response
53
78
 
54
- except requests.exceptions.HTTPError as error:
79
+ except HTTPError as error:
55
80
  if error.response.status_code == 404:
56
81
  raise biolib_errors.NotFound(f'Application {uri} not found.') from None
57
82
 
@@ -69,24 +94,28 @@ class BiolibAppApi:
69
94
  set_as_active,
70
95
  app_version_id_to_copy_images_from: Optional[str],
71
96
  ):
72
- response = requests.post(
73
- f'{BiolibApiClient.get().base_url}/api/app_versions/',
74
- files={
75
- 'source_files_zip': zip_binary,
76
- },
77
- data={
78
- 'app': app_id,
79
- 'set_as_active': 'true' if set_as_active else 'false',
80
- 'state': 'published',
81
- 'app_version_id_to_copy_images_from': app_version_id_to_copy_images_from,
82
- 'git_branch_name': _get_git_branch_name(),
83
- 'git_repository_url': _get_git_repository_url(),
84
- },
85
- auth=BearerAuth(BiolibApiClient.get().access_token)
86
- )
87
- if not response.ok:
97
+ try:
98
+ content_type, data_encoded = encode_multipart(
99
+ data={
100
+ 'app': app_id,
101
+ 'set_as_active': 'true' if set_as_active else 'false',
102
+ 'state': 'published',
103
+ 'app_version_id_to_copy_images_from': app_version_id_to_copy_images_from,
104
+ 'git_branch_name': _get_git_branch_name(),
105
+ 'git_repository_url': _get_git_repository_url(),
106
+ },
107
+ files={
108
+ 'source_files_zip': ('source_files.zip', zip_binary),
109
+ }
110
+ )
111
+ response = biolib.api.client.post(
112
+ path='/app_versions/',
113
+ data=data_encoded,
114
+ headers={'Content-Type': content_type},
115
+ )
116
+ except Exception as error:
88
117
  logger.error(f'Push failed for {author}/{app_name}:')
89
- raise BioLibError(response.text)
118
+ raise error
90
119
 
91
120
  # TODO: When response includes the version number, print the URL for the new app version
92
121
  logger.info(f'Initialized new app version for {author}/{app_name}.')
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "pybiolib"
3
- version = "1.1.1673"
3
+ version = "1.1.1682"
4
4
  description = "BioLib Python Client"
5
5
  readme = "README.md"
6
6
  license = "MIT"
File without changes
File without changes