pybiolib 1.1.1566__tar.gz → 1.1.1571__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 (104) hide show
  1. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/PKG-INFO +1 -1
  2. pybiolib-1.1.1571/biolib/biolib_binary_format/remote_endpoints.py +32 -0
  3. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/utils/seq_util.py +13 -4
  4. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/pyproject.toml +1 -1
  5. pybiolib-1.1.1566/biolib/biolib_binary_format/remote_endpoints.py +0 -30
  6. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/LICENSE +0 -0
  7. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/README.md +0 -0
  8. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/__init__.py +0 -0
  9. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/api/__init__.py +0 -0
  10. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/api/client.py +0 -0
  11. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/api/http_client.py +0 -0
  12. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/app/__init__.py +0 -0
  13. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/app/app.py +0 -0
  14. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/app/search_apps.py +0 -0
  15. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/biolib_api_client/__init__.py +0 -0
  16. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/biolib_api_client/api_client.py +0 -0
  17. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/biolib_api_client/app_types.py +0 -0
  18. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/biolib_api_client/auth.py +0 -0
  19. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/biolib_api_client/biolib_account_api.py +0 -0
  20. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/biolib_api_client/biolib_app_api.py +0 -0
  21. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/biolib_api_client/biolib_job_api.py +0 -0
  22. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/biolib_api_client/biolib_large_file_system_api.py +0 -0
  23. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/biolib_api_client/common_types.py +0 -0
  24. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/biolib_api_client/job_types.py +0 -0
  25. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/biolib_api_client/lfs_types.py +0 -0
  26. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/biolib_api_client/user_state.py +0 -0
  27. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/biolib_binary_format/__init__.py +0 -0
  28. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/biolib_binary_format/base_bbf_package.py +0 -0
  29. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/biolib_binary_format/file_in_container.py +0 -0
  30. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/biolib_binary_format/module_input.py +0 -0
  31. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/biolib_binary_format/module_output_v2.py +0 -0
  32. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/biolib_binary_format/remote_stream_seeker.py +0 -0
  33. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/biolib_binary_format/saved_job.py +0 -0
  34. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/biolib_binary_format/stdout_and_stderr.py +0 -0
  35. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/biolib_binary_format/system_exception.py +0 -0
  36. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/biolib_binary_format/system_status_update.py +0 -0
  37. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/biolib_binary_format/utils.py +0 -0
  38. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/biolib_docker_client/__init__.py +0 -0
  39. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/biolib_download_container.py +0 -0
  40. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/biolib_errors.py +0 -0
  41. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/biolib_logging.py +0 -0
  42. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/biolib_push.py +0 -0
  43. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/cli/__init__.py +0 -0
  44. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/cli/download_container.py +0 -0
  45. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/cli/init.py +0 -0
  46. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/cli/lfs.py +0 -0
  47. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/cli/push.py +0 -0
  48. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/cli/run.py +0 -0
  49. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/cli/runtime.py +0 -0
  50. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/cli/start.py +0 -0
  51. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/compute_node/.gitignore +0 -0
  52. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/compute_node/__init__.py +0 -0
  53. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/compute_node/cloud_utils/__init__.py +0 -0
  54. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/compute_node/cloud_utils/cloud_utils.py +0 -0
  55. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/compute_node/job_worker/__init__.py +0 -0
  56. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/compute_node/job_worker/cache_state.py +0 -0
  57. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/compute_node/job_worker/cache_types.py +0 -0
  58. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/compute_node/job_worker/docker_image_cache.py +0 -0
  59. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/compute_node/job_worker/executors/__init__.py +0 -0
  60. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/compute_node/job_worker/executors/docker_executor.py +0 -0
  61. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/compute_node/job_worker/executors/docker_types.py +0 -0
  62. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/compute_node/job_worker/executors/tars/__init__.py +0 -0
  63. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/compute_node/job_worker/executors/types.py +0 -0
  64. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/compute_node/job_worker/job_legacy_input_wait_timeout_thread.py +0 -0
  65. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/compute_node/job_worker/job_max_runtime_timer_thread.py +0 -0
  66. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/compute_node/job_worker/job_storage.py +0 -0
  67. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/compute_node/job_worker/job_worker.py +0 -0
  68. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/compute_node/job_worker/large_file_system.py +0 -0
  69. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/compute_node/job_worker/mappings.py +0 -0
  70. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/compute_node/job_worker/utilization_reporter_thread.py +0 -0
  71. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/compute_node/job_worker/utils.py +0 -0
  72. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/compute_node/remote_host_proxy.py +0 -0
  73. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/compute_node/socker_listener_thread.py +0 -0
  74. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/compute_node/socket_sender_thread.py +0 -0
  75. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/compute_node/utils.py +0 -0
  76. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/compute_node/webserver/__init__.py +0 -0
  77. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/compute_node/webserver/gunicorn_flask_application.py +0 -0
  78. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/compute_node/webserver/webserver.py +0 -0
  79. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/compute_node/webserver/webserver_types.py +0 -0
  80. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/compute_node/webserver/webserver_utils.py +0 -0
  81. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/compute_node/webserver/worker_thread.py +0 -0
  82. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/experiments/__init__.py +0 -0
  83. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/experiments/experiment.py +0 -0
  84. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/experiments/types.py +0 -0
  85. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/jobs/__init__.py +0 -0
  86. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/jobs/job.py +0 -0
  87. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/jobs/job_result.py +0 -0
  88. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/jobs/types.py +0 -0
  89. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/lfs/__init__.py +0 -0
  90. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/lfs/cache.py +0 -0
  91. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/lfs/utils.py +0 -0
  92. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/runtime/__init__.py +0 -0
  93. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/runtime/results.py +0 -0
  94. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/tables.py +0 -0
  95. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/templates/__init__.py +0 -0
  96. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/templates/example_app.py +0 -0
  97. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/typing_utils.py +0 -0
  98. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/user/__init__.py +0 -0
  99. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/user/sign_in.py +0 -0
  100. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/utils/__init__.py +0 -0
  101. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/utils/app_uri.py +0 -0
  102. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/utils/cache_state.py +0 -0
  103. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/biolib/utils/multipart_uploader.py +0 -0
  104. {pybiolib-1.1.1566 → pybiolib-1.1.1571}/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.1566
3
+ Version: 1.1.1571
4
4
  Summary: BioLib Python Client
5
5
  Home-page: https://github.com/biolib
6
6
  License: MIT
@@ -0,0 +1,32 @@
1
+ from datetime import datetime, timedelta
2
+ # from urllib.parse import urlparse, parse_qs
3
+
4
+ from biolib.biolib_logging import logger
5
+
6
+ from biolib.biolib_api_client.biolib_job_api import BiolibJobApi
7
+ from biolib.biolib_binary_format.utils import RemoteEndpoint
8
+
9
+
10
+ class RemoteJobStorageResultEndpoint(RemoteEndpoint):
11
+ def __init__(self, job_id: str, job_auth_token: str):
12
+ self._job_id = job_id
13
+ self._job_auth_token = job_auth_token
14
+ self._expires_at = None
15
+ self._presigned_url = None
16
+
17
+ def get_remote_url(self):
18
+ if not self._presigned_url or datetime.utcnow() > self._expires_at:
19
+ self._presigned_url = BiolibJobApi.get_job_storage_download_url(
20
+ job_auth_token=self._job_auth_token,
21
+ job_uuid=self._job_id,
22
+ storage_type='results'
23
+ )
24
+ self._expires_at = datetime.utcnow() + timedelta(minutes=8)
25
+ # TODO: Use expires at from url
26
+ # parsed_url = urlparse(self._presigned_url)
27
+ # query_params = parse_qs(parsed_url.query)
28
+ # time_at_generation = datetime.datetime.strptime(query_params['X-Amz-Date'][0], '%Y%m%dT%H%M%SZ')
29
+ # self._expires_at = time_at_generation + timedelta(seconds=int(query_params['X-Amz-Expires'][0]))
30
+ logger.debug(f'Job "{self._job_id}" fetched presigned URL with expiry at {self._expires_at.isoformat()}')
31
+
32
+ return self._presigned_url
@@ -17,7 +17,11 @@ class SeqUtilRecord:
17
17
 
18
18
  class SeqUtil:
19
19
  @staticmethod
20
- def parse_fasta(file_name: str, default_header: Optional[str] = None) -> List[SeqUtilRecord]:
20
+ def parse_fasta(
21
+ file_name: str,
22
+ default_header: Optional[str] = None,
23
+ run_validation: bool = True
24
+ ) -> List[SeqUtilRecord]:
21
25
  with open(file_name, 'r') as file_handle:
22
26
  data = file_handle.read().strip()
23
27
 
@@ -56,9 +60,14 @@ class SeqUtil:
56
60
  sequence_id = header_line[0]
57
61
  description = sequence_data_splitted[0][len(sequence_id):].strip()
58
62
  sequence = "".join([seq.strip().upper() for seq in sequence_data_splitted[1:]])
59
- invalid_sequence_characters = find_invalid_sequence_characters(sequence)
60
- if len(invalid_sequence_characters) > 0:
61
- raise Exception(f'Error: Invalid charater ("{invalid_sequence_characters[0]}") found in sequence.')
63
+
64
+ if run_validation:
65
+ invalid_sequence_characters = find_invalid_sequence_characters(sequence)
66
+ if len(invalid_sequence_characters) > 0:
67
+ raise Exception(
68
+ f'Error: Invalid character ("{invalid_sequence_characters[0]}") found in sequence {sequence_id}'
69
+ )
70
+
62
71
  parsed_sequences.append(
63
72
  SeqUtilRecord(sequence=sequence, sequence_id=sequence_id, description=description)
64
73
  )
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "pybiolib"
3
- version = "1.1.1566"
3
+ version = "1.1.1571"
4
4
  description = "BioLib Python Client"
5
5
  readme = "README.md"
6
6
  license = "MIT"
@@ -1,30 +0,0 @@
1
- import datetime
2
- from urllib.parse import urlparse, parse_qs
3
-
4
- from biolib.biolib_logging import logger
5
-
6
- from biolib.biolib_api_client.biolib_job_api import BiolibJobApi
7
- from biolib.biolib_binary_format.utils import RemoteEndpoint
8
-
9
-
10
- class RemoteJobStorageResultEndpoint(RemoteEndpoint):
11
- def __init__(self, job_id: str, job_auth_token: str):
12
- self._job_id = job_id
13
- self._job_auth_token = job_auth_token
14
- self._expires_at = None
15
- self.presigned_url = None
16
-
17
- def get_remote_url(self):
18
- if not self.presigned_url or datetime.datetime.now() > self._expires_at:
19
- self.presigned_url = BiolibJobApi.get_job_storage_download_url(
20
- job_auth_token=self._job_auth_token,
21
- job_uuid=self._job_id,
22
- storage_type='results'
23
- )
24
- parsed_url = urlparse(self.presigned_url)
25
- query_params = parse_qs(parsed_url.query)
26
- time_at_generation = datetime.datetime.strptime(query_params['X-Amz-Date'][0], '%Y%m%dT%H%M%SZ')
27
- self._expires_at = time_at_generation + datetime.timedelta(seconds=int(query_params['X-Amz-Expires'][0]))
28
- logger.debug(f'Job "{self._job_id}" fetched presigned URL with expiry at {self._expires_at.isoformat()}')
29
-
30
- return self.presigned_url
File without changes
File without changes