geoseeq 0.5.6a13__tar.gz → 0.5.6a15__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.6a13 → geoseeq-0.5.6a15}/PKG-INFO +1 -1
  2. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/cli/main.py +1 -1
  3. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/cli/upload/upload.py +4 -1
  4. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/knex.py +3 -0
  5. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/result/file_upload.py +3 -2
  6. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/upload_download_manager.py +7 -3
  7. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq.egg-info/PKG-INFO +1 -1
  8. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/pyproject.toml +1 -1
  9. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/LICENSE +0 -0
  10. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/README.md +0 -0
  11. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/__init__.py +0 -0
  12. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/app.py +0 -0
  13. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/blob_constructors.py +0 -0
  14. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/bulk_creators.py +0 -0
  15. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/cli/__init__.py +0 -0
  16. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/cli/constants.py +0 -0
  17. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/cli/copy.py +0 -0
  18. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/cli/detail.py +0 -0
  19. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/cli/download.py +0 -0
  20. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/cli/fastq_utils.py +0 -0
  21. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/cli/get_eula.py +0 -0
  22. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/cli/manage.py +0 -0
  23. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/cli/progress_bar.py +0 -0
  24. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/cli/run.py +0 -0
  25. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/cli/search.py +0 -0
  26. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/cli/shared_params/__init__.py +0 -0
  27. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/cli/shared_params/common_state.py +0 -0
  28. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/cli/shared_params/config.py +0 -0
  29. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/cli/shared_params/id_handlers.py +0 -0
  30. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/cli/shared_params/obj_getters.py +0 -0
  31. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/cli/shared_params/opts_and_args.py +0 -0
  32. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/cli/upload/__init__.py +0 -0
  33. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/cli/upload/upload_advanced.py +0 -0
  34. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/cli/upload/upload_reads.py +0 -0
  35. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/cli/user.py +0 -0
  36. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/cli/utils.py +0 -0
  37. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/cli/view.py +0 -0
  38. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/constants.py +0 -0
  39. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/contrib/__init__.py +0 -0
  40. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/contrib/ncbi/__init__.py +0 -0
  41. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/contrib/ncbi/api.py +0 -0
  42. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/contrib/ncbi/bioproject.py +0 -0
  43. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/contrib/ncbi/cli.py +0 -0
  44. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/contrib/ncbi/setup_logging.py +0 -0
  45. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/file_system_cache.py +0 -0
  46. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/id_constructors/__init__.py +0 -0
  47. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/id_constructors/from_blobs.py +0 -0
  48. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/id_constructors/from_ids.py +0 -0
  49. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/id_constructors/from_names.py +0 -0
  50. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/id_constructors/from_uuids.py +0 -0
  51. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/id_constructors/resolvers.py +0 -0
  52. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/id_constructors/utils.py +0 -0
  53. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/organization.py +0 -0
  54. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/pipeline.py +0 -0
  55. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/plotting/__init__.py +0 -0
  56. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/plotting/constants.py +0 -0
  57. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/plotting/highcharts.py +0 -0
  58. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/plotting/map/__init__.py +0 -0
  59. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/plotting/map/base_layer.py +0 -0
  60. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/plotting/map/map.py +0 -0
  61. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/plotting/map/overlay.py +0 -0
  62. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/plotting/selectable.py +0 -0
  63. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/project.py +0 -0
  64. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/remote_object.py +0 -0
  65. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/result/__init__.py +0 -0
  66. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/result/bioinfo.py +0 -0
  67. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/result/file_download.py +0 -0
  68. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/result/result_file.py +0 -0
  69. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/result/result_folder.py +0 -0
  70. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/result/utils.py +0 -0
  71. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/sample.py +0 -0
  72. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/search.py +0 -0
  73. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/user.py +0 -0
  74. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/utils.py +0 -0
  75. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/vc/__init__.py +0 -0
  76. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/vc/checksum.py +0 -0
  77. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/vc/cli.py +0 -0
  78. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/vc/clone.py +0 -0
  79. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/vc/constants.py +0 -0
  80. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/vc/vc_cache.py +0 -0
  81. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/vc/vc_dir.py +0 -0
  82. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/vc/vc_sample.py +0 -0
  83. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/vc/vc_stub.py +0 -0
  84. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq/work_orders.py +0 -0
  85. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq.egg-info/SOURCES.txt +0 -0
  86. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq.egg-info/dependency_links.txt +0 -0
  87. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq.egg-info/entry_points.txt +0 -0
  88. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/geoseeq.egg-info/top_level.txt +0 -0
  89. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/setup.cfg +0 -0
  90. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/setup.py +0 -0
  91. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/tests/__init__.py +0 -0
  92. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/tests/test_api_client.py +0 -0
  93. {geoseeq-0.5.6a13 → geoseeq-0.5.6a15}/tests/test_plotting.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: geoseeq
3
- Version: 0.5.6a13
3
+ Version: 0.5.6a15
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.6a13') # remember to update setup
56
+ click.echo('0.5.6a15') # remember to update setup
57
57
 
58
58
 
59
59
  @main.group('advanced')
@@ -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=5, 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,6 +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,
125
+ session=knex.new_session(),
126
+ chunk_size_mb=chunk_size_mb,
124
127
  )
125
128
  for geoseeq_file_name, file_path in name_pairs:
126
129
  if isfile(file_path):
@@ -96,6 +96,9 @@ class Knex:
96
96
  sess.auth = self.auth
97
97
  sess.verify = self._verify
98
98
  return sess
99
+
100
+ def new_session(self):
101
+ return self._new_session()
99
102
 
100
103
  def _set_verify(self):
101
104
  try:
@@ -184,15 +184,16 @@ class ResultFileUpload:
184
184
  logger.debug(f"Upload for part {num + 1} succeeded.")
185
185
  break
186
186
  except (requests.exceptions.HTTPError, requests.exceptions.SSLError, requests.exceptions.ConnectionError) as e:
187
+ attempts += 1
187
188
  logger.debug(
188
- f"Upload for part {num + 1} failed. Attempt {attempts + 1} of {max_retries}."
189
+ f"Upload for part {num + 1} failed. Attempt {attempts} of {max_retries}. Error: {e}"
189
190
  )
190
- attempts += 1
191
191
  if attempts >= max_retries:
192
192
  raise e
193
193
 
194
194
  retry_time = min(8 ** attempts, 120) # exponential backoff, max 120s
195
195
  retry_time *= 0.8 + (random() * 0.4) # randomize to avoid thundering herd
196
+ logger.debug(f"Retrying upload for part {num + 1} in {retry_time} seconds.")
196
197
  time.sleep(retry_time)
197
198
 
198
199
  etag = http_response.headers["ETag"].replace('"', "")
@@ -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
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.6a13
3
+ Version: 0.5.6a15
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.6a13"
7
+ version = "0.5.6a15"
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