pybiolib 1.2.230__py3-none-any.whl → 1.2.243__py3-none-any.whl

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.
@@ -3,6 +3,7 @@ import os
3
3
  import random
4
4
  import re
5
5
  import subprocess
6
+ import urllib.parse
6
7
 
7
8
  import biolib.api
8
9
  from biolib import biolib_errors
@@ -10,6 +11,7 @@ from biolib._internal.http_client import HttpError
10
11
  from biolib.biolib_api_client import AppGetResponse
11
12
  from biolib.biolib_logging import logger
12
13
  from biolib.typing_utils import Optional
14
+ from biolib.utils import load_base_url_from_env
13
15
 
14
16
 
15
17
  def encode_multipart(data, files):
@@ -61,15 +63,29 @@ def _get_git_repository_url() -> str:
61
63
  except BaseException:
62
64
  return ''
63
65
 
66
+ def _get_app_uri_from_str(input_str: str) -> str:
67
+ parsed_base_url = urllib.parse.urlparse(load_base_url_from_env())
68
+ parsed_uri = urllib.parse.urlparse(input_str)
69
+ if parsed_uri.netloc != '' and parsed_base_url.netloc != parsed_uri.netloc:
70
+ raise biolib_errors.ValidationError(
71
+ f'Invalid URI. The hostname "{parsed_base_url.netloc}" is not recognized.'
72
+ )
73
+ elif parsed_uri.netloc != '' and parsed_uri.path[1] != '@':
74
+ uri = f'@{parsed_uri.netloc}{parsed_uri.path}'
75
+ elif parsed_uri.netloc == '' and parsed_uri.path.startswith (parsed_base_url.netloc):
76
+ uri = f'@{parsed_uri.path}'
77
+ else:
78
+ uri = parsed_uri.path
79
+ uri = uri.strip('/')
80
+ # Replace frontend version path with app_uri compatible version (if supplied)
81
+ uri = re.sub(r'/version/(?P<version>(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*))(/)?$', r':\g<version>', uri)
82
+ return uri
83
+
64
84
 
65
85
  class BiolibAppApi:
66
86
  @staticmethod
67
87
  def get_by_uri(uri: str) -> AppGetResponse:
68
- # Replace protocol with @ (if supplied)
69
- uri = re.sub(r'^http(s)?://', '@', uri)
70
- # Replace frontend version path with app_uri compatible version (if supplied)
71
- uri = re.sub(r'/version/(?P<version>(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*))(/)?$', r':\g<version>', uri)
72
-
88
+ uri = _get_app_uri_from_str(uri)
73
89
  try:
74
90
  response = biolib.api.client.get(path='/app/', params={'uri': uri})
75
91
  app_response: AppGetResponse = response.json()
biolib/biolib_errors.py CHANGED
@@ -7,6 +7,9 @@ class BioLibError(Exception):
7
7
  super().__init__(message)
8
8
  self.message = message
9
9
 
10
+ class ValidationError(BioLibError):
11
+ def __init__(self, message: Optional[str] = None):
12
+ super().__init__(message=message or 'Invalid input.')
10
13
 
11
14
  class NotFound(BioLibError):
12
15
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pybiolib
3
- Version: 1.2.230
3
+ Version: 1.2.243
4
4
  Summary: BioLib Python Client
5
5
  Home-page: https://github.com/biolib
6
6
  License: MIT
@@ -37,7 +37,7 @@ biolib/biolib_api_client/__init__.py,sha256=E5EMa19wJoblwSdQPYrxc_BtIeRsAuO0L_jQ
37
37
  biolib/biolib_api_client/api_client.py,sha256=ciNx4ybpyKG5LEf4KQdGEz13r0jTxImyQat4_HDecD0,7373
38
38
  biolib/biolib_api_client/app_types.py,sha256=1sXz9XnLRKNALMglNdTbew7AL6OkcUan0MPdj4xQLis,2456
39
39
  biolib/biolib_api_client/auth.py,sha256=kjm0ZHnH3I8so3su2sZbBxNHYp-ZUdrZ5lwQ0K36RSw,949
40
- biolib/biolib_api_client/biolib_app_api.py,sha256=i5KPZNpopU7cqcjVfICml-31ca-1-CU_rdZgKiZt0Vs,4343
40
+ biolib/biolib_api_client/biolib_app_api.py,sha256=RUXrTxk7XKzm4wxv7NBXttuFjT60DI9vNOvkS-cjKNc,5065
41
41
  biolib/biolib_api_client/biolib_job_api.py,sha256=7bKfav3-12ewXkEUoLdCmbWdebW8148kxfGJW9SsXZI,7125
42
42
  biolib/biolib_api_client/common_types.py,sha256=RH-1KNHqUF-EkTpfPOSTt5Mq1GPdfju_cqXDesscO1I,123
43
43
  biolib/biolib_api_client/job_types.py,sha256=yBdBwjharbQJuXCi2xKMi0t_r6XxnbWnkchHekTpCJY,1351
@@ -57,7 +57,7 @@ biolib/biolib_binary_format/system_status_update.py,sha256=aOELuQ0k-GtpaZTUxYd0G
57
57
  biolib/biolib_binary_format/utils.py,sha256=jq31QEShs7TSrSKZBr8jif-bJAwVzQrqVxmymL6crpU,5453
58
58
  biolib/biolib_docker_client/__init__.py,sha256=aBfA6mtWSI5dBEfNNMD6bIZzCPloW4ghKm0wqQiljdo,1481
59
59
  biolib/biolib_download_container.py,sha256=8TmBV8iv3bCvkNlHa1SSsc4zl0wX_eaxhfnW5rvFIh8,1779
60
- biolib/biolib_errors.py,sha256=5m4lK2l39DafpoXBImEBD4EPH3ayXBX0JgtPzmGClow,689
60
+ biolib/biolib_errors.py,sha256=xtdo3ybqnc0jhd959kVmBczFdBczrFMr8cZyd4hjKLk,842
61
61
  biolib/biolib_logging.py,sha256=J3E5H_LL5k6ZUim2C8gqN7E6lCBZMTpO4tnMpOPwG9U,2854
62
62
  biolib/cli/__init__.py,sha256=0v3c_J-U0k46c5ZWeQjLG_kTaKDJm81LBxQpDO2B_aI,1286
63
63
  biolib/cli/auth.py,sha256=rpWGmXs6Fz6CGrO9K8ibPRszOdXG78Vig_boKaVCD9A,2082
@@ -120,8 +120,8 @@ biolib/utils/cache_state.py,sha256=u256F37QSRIVwqKlbnCyzAX4EMI-kl6Dwu6qwj-Qmag,3
120
120
  biolib/utils/multipart_uploader.py,sha256=XvGP1I8tQuKhAH-QugPRoEsCi9qvbRk-DVBs5PNwwJo,8452
121
121
  biolib/utils/seq_util.py,sha256=Ozk0blGtPur_D9MwShD02r_mphyQmgZkx-lOHOwnlIM,6730
122
122
  biolib/utils/zip/remote_zip.py,sha256=0wErYlxir5921agfFeV1xVjf29l9VNgGQvNlWOlj2Yc,23232
123
- pybiolib-1.2.230.dist-info/LICENSE,sha256=F2h7gf8i0agDIeWoBPXDMYScvQOz02pAWkKhTGOHaaw,1067
124
- pybiolib-1.2.230.dist-info/METADATA,sha256=pHStJR-mwTW8Plixvbbd1rtb8Msj8BmiCBOi6-ORvnY,1558
125
- pybiolib-1.2.230.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
126
- pybiolib-1.2.230.dist-info/entry_points.txt,sha256=p6DyaP_2kctxegTX23WBznnrDi4mz6gx04O5uKtRDXg,42
127
- pybiolib-1.2.230.dist-info/RECORD,,
123
+ pybiolib-1.2.243.dist-info/LICENSE,sha256=F2h7gf8i0agDIeWoBPXDMYScvQOz02pAWkKhTGOHaaw,1067
124
+ pybiolib-1.2.243.dist-info/METADATA,sha256=dy8qNUvcjUm8Fia1ShHh4Gf2jsEt56KLUOhOcbmRjg0,1558
125
+ pybiolib-1.2.243.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
126
+ pybiolib-1.2.243.dist-info/entry_points.txt,sha256=p6DyaP_2kctxegTX23WBznnrDi4mz6gx04O5uKtRDXg,42
127
+ pybiolib-1.2.243.dist-info/RECORD,,