geoseeq 0.5.6a14__tar.gz → 0.5.6a16__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (93) hide show
  1. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/PKG-INFO +1 -1
  2. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/cli/main.py +18 -2
  3. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/cli/upload/upload.py +4 -2
  4. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/result/file_upload.py +8 -2
  5. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/upload_download_manager.py +7 -3
  6. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq.egg-info/PKG-INFO +1 -1
  7. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/pyproject.toml +1 -1
  8. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/LICENSE +0 -0
  9. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/README.md +0 -0
  10. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/__init__.py +0 -0
  11. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/app.py +0 -0
  12. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/blob_constructors.py +0 -0
  13. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/bulk_creators.py +0 -0
  14. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/cli/__init__.py +0 -0
  15. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/cli/constants.py +0 -0
  16. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/cli/copy.py +0 -0
  17. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/cli/detail.py +0 -0
  18. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/cli/download.py +0 -0
  19. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/cli/fastq_utils.py +0 -0
  20. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/cli/get_eula.py +0 -0
  21. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/cli/manage.py +0 -0
  22. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/cli/progress_bar.py +0 -0
  23. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/cli/run.py +0 -0
  24. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/cli/search.py +0 -0
  25. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/cli/shared_params/__init__.py +0 -0
  26. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/cli/shared_params/common_state.py +0 -0
  27. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/cli/shared_params/config.py +0 -0
  28. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/cli/shared_params/id_handlers.py +0 -0
  29. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/cli/shared_params/obj_getters.py +0 -0
  30. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/cli/shared_params/opts_and_args.py +0 -0
  31. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/cli/upload/__init__.py +0 -0
  32. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/cli/upload/upload_advanced.py +0 -0
  33. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/cli/upload/upload_reads.py +0 -0
  34. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/cli/user.py +0 -0
  35. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/cli/utils.py +0 -0
  36. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/cli/view.py +0 -0
  37. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/constants.py +0 -0
  38. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/contrib/__init__.py +0 -0
  39. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/contrib/ncbi/__init__.py +0 -0
  40. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/contrib/ncbi/api.py +0 -0
  41. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/contrib/ncbi/bioproject.py +0 -0
  42. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/contrib/ncbi/cli.py +0 -0
  43. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/contrib/ncbi/setup_logging.py +0 -0
  44. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/file_system_cache.py +0 -0
  45. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/id_constructors/__init__.py +0 -0
  46. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/id_constructors/from_blobs.py +0 -0
  47. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/id_constructors/from_ids.py +0 -0
  48. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/id_constructors/from_names.py +0 -0
  49. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/id_constructors/from_uuids.py +0 -0
  50. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/id_constructors/resolvers.py +0 -0
  51. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/id_constructors/utils.py +0 -0
  52. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/knex.py +0 -0
  53. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/organization.py +0 -0
  54. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/pipeline.py +0 -0
  55. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/plotting/__init__.py +0 -0
  56. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/plotting/constants.py +0 -0
  57. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/plotting/highcharts.py +0 -0
  58. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/plotting/map/__init__.py +0 -0
  59. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/plotting/map/base_layer.py +0 -0
  60. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/plotting/map/map.py +0 -0
  61. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/plotting/map/overlay.py +0 -0
  62. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/plotting/selectable.py +0 -0
  63. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/project.py +0 -0
  64. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/remote_object.py +0 -0
  65. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/result/__init__.py +0 -0
  66. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/result/bioinfo.py +0 -0
  67. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/result/file_download.py +0 -0
  68. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/result/result_file.py +0 -0
  69. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/result/result_folder.py +0 -0
  70. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/result/utils.py +0 -0
  71. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/sample.py +0 -0
  72. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/search.py +0 -0
  73. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/user.py +0 -0
  74. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/utils.py +0 -0
  75. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/vc/__init__.py +0 -0
  76. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/vc/checksum.py +0 -0
  77. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/vc/cli.py +0 -0
  78. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/vc/clone.py +0 -0
  79. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/vc/constants.py +0 -0
  80. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/vc/vc_cache.py +0 -0
  81. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/vc/vc_dir.py +0 -0
  82. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/vc/vc_sample.py +0 -0
  83. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/vc/vc_stub.py +0 -0
  84. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq/work_orders.py +0 -0
  85. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq.egg-info/SOURCES.txt +0 -0
  86. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq.egg-info/dependency_links.txt +0 -0
  87. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq.egg-info/entry_points.txt +0 -0
  88. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/geoseeq.egg-info/top_level.txt +0 -0
  89. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/setup.cfg +0 -0
  90. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/setup.py +0 -0
  91. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/tests/__init__.py +0 -0
  92. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/tests/test_api_client.py +0 -0
  93. {geoseeq-0.5.6a14 → geoseeq-0.5.6a16}/tests/test_plotting.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: geoseeq
3
- Version: 0.5.6a14
3
+ Version: 0.5.6a16
4
4
  Summary: GeoSeeq command line tools and python API
5
5
  Author: David C. Danko
6
6
  Author-email: "David C. Danko" <dcdanko@biotia.io>
@@ -53,7 +53,7 @@ def version():
53
53
  Use of this tool implies acceptance of the GeoSeeq End User License Agreement.
54
54
  Run `geoseeq eula show` to view the EULA.
55
55
  """
56
- click.echo('0.5.6a14') # remember to update setup
56
+ click.echo('0.5.6a16') # remember to update setup
57
57
 
58
58
 
59
59
  @main.group('advanced')
@@ -101,4 +101,20 @@ def cli_config(yes, api_token, endpoint, profile, overwrite):
101
101
  click.echo('You must accept the EULA to use the GeoSeeq API.')
102
102
  return
103
103
  set_profile(api_token, endpoint=endpoint, profile=profile, overwrite=overwrite)
104
- click.echo(f'Profile configured.')
104
+ click.echo(f'Profile configured.')
105
+
106
+
107
+ @main.command('clear-cache')
108
+ @yes_option
109
+ def cli_clear_cache(yes):
110
+ """Clear the local cache.
111
+
112
+ ---
113
+
114
+ Use of this tool implies acceptance of the GeoSeeq End User License Agreement.
115
+ Run `geoseeq eula show` to view the EULA.
116
+ """
117
+ from geoseeq.file_system_cache import GEOSEEQ_CACHE_DIR
118
+ import shutil
119
+ if yes or click.confirm('Are you sure you want to clear the cache?'):
120
+ shutil.rmtree(GEOSEEQ_CACHE_DIR, ignore_errors=True)
@@ -40,6 +40,7 @@ hidden_option = click.option('--hidden/--no-hidden', default=False, help='Upload
40
40
  @click.option('--cores', default=1, help='Number of uploads to run in parallel', show_default=True)
41
41
  @click.option('--threads-per-upload', default=4, help='Number of threads used to upload each file', show_default=True)
42
42
  @click.option('--num-retries', default=3, help='Number of times to retry a failed upload', show_default=True)
43
+ @click.option('--chunk-size-mb', default=-1, help='Size of chunks to upload in MB', show_default=True)
43
44
  @ignore_errors_option
44
45
  @yes_option
45
46
  @private_option
@@ -52,7 +53,7 @@ hidden_option = click.option('--hidden/--no-hidden', default=False, help='Upload
52
53
  show_default=True)
53
54
  @folder_id_arg
54
55
  @click.argument('file_paths', type=click.Path(exists=True), nargs=-1)
55
- def cli_upload_file(state, cores, threads_per_upload, num_retries, ignore_errors, yes, private, link_type, recursive, hidden, no_new_versions, geoseeq_file_name, folder_id, file_paths):
56
+ def cli_upload_file(state, cores, threads_per_upload, num_retries, chunk_size_mb, ignore_errors, yes, private, link_type, recursive, hidden, no_new_versions, geoseeq_file_name, folder_id, file_paths):
56
57
  """Upload files to GeoSeeq.
57
58
 
58
59
  This command uploads files to either a sample or project on GeoSeeq. It can be used to upload
@@ -121,7 +122,8 @@ def cli_upload_file(state, cores, threads_per_upload, num_retries, ignore_errors
121
122
  use_cache=state.use_cache,
122
123
  num_retries=num_retries,
123
124
  ignore_errors=ignore_errors,
124
- session=knex.new_session(),
125
+ session=None, #knex.new_session(),
126
+ chunk_size_mb=chunk_size_mb if chunk_size_mb > 0 else None,
125
127
  )
126
128
  for geoseeq_file_name, file_path in name_pairs:
127
129
  if isfile(file_path):
@@ -175,6 +175,7 @@ class ResultFileUpload:
175
175
  attempts = 0
176
176
  while attempts < max_retries:
177
177
  try:
178
+ # url = url.replace("s3.wasabisys.com", "s3.us-east-1.wasabisys.com")
178
179
  logger.debug(f"Uploading part {num + 1} to {url}. Size: {len(file_chunk)} bytes.")
179
180
  if session:
180
181
  http_response = session.put(url, data=file_chunk)
@@ -192,7 +193,7 @@ class ResultFileUpload:
192
193
  raise e
193
194
 
194
195
  retry_time = min(8 ** attempts, 120) # exponential backoff, max 120s
195
- retry_time *= 0.8 + (random() * 0.4) # randomize to avoid thundering herd
196
+ retry_time *= 0.6 + (random() * 0.8) # randomize to avoid thundering herd
196
197
  logger.debug(f"Retrying upload for part {num + 1} in {retry_time} seconds.")
197
198
  time.sleep(retry_time)
198
199
 
@@ -250,7 +251,7 @@ class ResultFileUpload:
250
251
  filepath,
251
252
  file_size,
252
253
  optional_fields=None,
253
- chunk_size=FIVE_MB,
254
+ chunk_size=None,
254
255
  max_retries=3,
255
256
  session=None,
256
257
  progress_tracker=None,
@@ -259,6 +260,11 @@ class ResultFileUpload:
259
260
  ):
260
261
  """Upload a file to S3 using the multipart upload process."""
261
262
  logger.info(f"Uploading {filepath} to S3 using multipart upload.")
263
+ if not chunk_size:
264
+ chunk_size = FIVE_MB
265
+ if file_size >= 10 * FIVE_MB:
266
+ chunk_size = 5 * FIVE_MB
267
+ logger.debug(f"Using chunk size of {chunk_size} bytes.")
262
268
  resumable_upload_tracker = None
263
269
  if use_cache and file_size > 10 * FIVE_MB: # only use resumable upload tracker for larger files
264
270
  resumable_upload_tracker = ResumableUploadTracker(filepath, chunk_size)
@@ -22,7 +22,8 @@ def _upload_one_file(args):
22
22
  (result_file, filepath, session, progress_tracker,
23
23
  link_type, overwrite, log_level, parallel_uploads,
24
24
  use_cache, no_new_versions, threads_per_upload,
25
- num_retries, ignore_errors) = args
25
+ num_retries, ignore_errors, chunk_size_mb) = args
26
+ chunk_size = chunk_size_mb * 1024 * 1024 if chunk_size_mb else None
26
27
  if parallel_uploads:
27
28
  _make_in_process_logger(log_level)
28
29
  try:
@@ -31,7 +32,7 @@ def _upload_one_file(args):
31
32
  result_file.upload_file(
32
33
  filepath,
33
34
  session=session, overwrite=overwrite, progress_tracker=progress_tracker,
34
- threads=threads_per_upload, use_cache=use_cache,
35
+ threads=threads_per_upload, use_cache=use_cache, chunk_size=chunk_size,
35
36
  no_new_versions=no_new_versions, max_retries=num_retries,
36
37
  )
37
38
  else:
@@ -57,6 +58,7 @@ class GeoSeeqUploadManager:
57
58
  no_new_versions=False,
58
59
  num_retries=3,
59
60
  ignore_errors=False,
61
+ chunk_size_mb=5,
60
62
  use_cache=True):
61
63
  self.session = session
62
64
  self.n_parallel_uploads = n_parallel_uploads
@@ -70,6 +72,7 @@ class GeoSeeqUploadManager:
70
72
  self.threads_per_upload = threads_per_upload
71
73
  self.num_retries = num_retries
72
74
  self.ignore_errors = ignore_errors
75
+ self.chunk_size_mb = chunk_size_mb
73
76
 
74
77
  def add_result_file(self, result_file, local_path):
75
78
  self._result_files.append((result_file, local_path))
@@ -95,7 +98,8 @@ class GeoSeeqUploadManager:
95
98
  self.session, self.progress_tracker_factory(local_path),
96
99
  self.link_type, self.overwrite, self.log_level,
97
100
  self.n_parallel_uploads > 1, self.use_cache, self.no_new_versions,
98
- self.threads_per_upload, self.num_retries, self.ignore_errors
101
+ self.threads_per_upload, self.num_retries, self.ignore_errors,
102
+ self.chunk_size_mb,
99
103
  ) for result_file, local_path in self._result_files
100
104
  ]
101
105
  out = []
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: geoseeq
3
- Version: 0.5.6a14
3
+ Version: 0.5.6a16
4
4
  Summary: GeoSeeq command line tools and python API
5
5
  Author: David C. Danko
6
6
  Author-email: "David C. Danko" <dcdanko@biotia.io>
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "geoseeq"
7
- version = "0.5.6a14"
7
+ version = "0.5.6a16"
8
8
  authors = [
9
9
  { name="David C. Danko", email="dcdanko@biotia.io" },
10
10
  ]
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes