geoseeq 0.5.6a8__py3-none-any.whl → 0.5.6a10__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.
- geoseeq/cli/download.py +8 -3
- geoseeq/cli/main.py +1 -1
- geoseeq/cli/shared_params/opts_and_args.py +1 -1
- geoseeq/cli/upload/upload.py +7 -3
- geoseeq/cli/upload/upload_reads.py +6 -3
- geoseeq/result/file_upload.py +15 -7
- geoseeq/result/result_file.py +8 -0
- geoseeq/upload_download_manager.py +11 -3
- {geoseeq-0.5.6a8.dist-info → geoseeq-0.5.6a10.dist-info}/METADATA +1 -1
- {geoseeq-0.5.6a8.dist-info → geoseeq-0.5.6a10.dist-info}/RECORD +14 -14
- {geoseeq-0.5.6a8.dist-info → geoseeq-0.5.6a10.dist-info}/LICENSE +0 -0
- {geoseeq-0.5.6a8.dist-info → geoseeq-0.5.6a10.dist-info}/WHEEL +0 -0
- {geoseeq-0.5.6a8.dist-info → geoseeq-0.5.6a10.dist-info}/entry_points.txt +0 -0
- {geoseeq-0.5.6a8.dist-info → geoseeq-0.5.6a10.dist-info}/top_level.txt +0 -0
geoseeq/cli/download.py
CHANGED
@@ -97,13 +97,14 @@ def cli_download_metadata(state, sample_ids):
|
|
97
97
|
|
98
98
|
|
99
99
|
cores_option = click.option('--cores', default=1, help='Number of downloads to run in parallel')
|
100
|
-
|
100
|
+
head_option = click.option('--head', default=None, type=int, help='Download the first N bytes of each file')
|
101
101
|
|
102
102
|
@cli_download.command("files")
|
103
103
|
@use_common_state
|
104
104
|
@cores_option
|
105
105
|
@click.option("--target-dir", default=".")
|
106
106
|
@yes_option
|
107
|
+
@head_option
|
107
108
|
@click.option("--download/--urls-only", default=True, help="Download files or just print urls")
|
108
109
|
@click.option("--folder-type", type=click.Choice(['all', 'sample', 'project'], case_sensitive=False), default="all", help='Download files from sample folders, project folders, or both')
|
109
110
|
@click.option("--folder-name", multiple=True, help='Filter folders for names that include this string. Case insensitive.')
|
@@ -120,6 +121,7 @@ def cli_download_files(
|
|
120
121
|
sample_name_includes,
|
121
122
|
target_dir,
|
122
123
|
yes,
|
124
|
+
head,
|
123
125
|
folder_type,
|
124
126
|
folder_name,
|
125
127
|
file_name,
|
@@ -213,6 +215,7 @@ def cli_download_files(
|
|
213
215
|
ignore_errors=ignore_errors,
|
214
216
|
log_level=state.log_level,
|
215
217
|
progress_tracker_factory=PBarManager().get_new_bar,
|
218
|
+
head=head,
|
216
219
|
)
|
217
220
|
for fname, url in response["links"].items():
|
218
221
|
download_manager.add_download(url, join(target_dir, fname))
|
@@ -230,11 +233,12 @@ def cli_download_files(
|
|
230
233
|
@cores_option
|
231
234
|
@click.option("-t", "--target-dir", default=".")
|
232
235
|
@yes_option
|
236
|
+
@head_option
|
233
237
|
@click.option("--download/--urls-only", default=True, help="Download files or just print urls")
|
234
238
|
@ignore_errors_option
|
235
239
|
@click.option('--hidden/--no-hidden', default=True, help='Download hidden files in folder')
|
236
240
|
@folder_ids_arg
|
237
|
-
def cli_download_folders(state, cores, target_dir, yes, download, ignore_errors, hidden, folder_ids):
|
241
|
+
def cli_download_folders(state, cores, target_dir, yes, head, download, ignore_errors, hidden, folder_ids):
|
238
242
|
"""Download entire folders from GeoSeeq.
|
239
243
|
|
240
244
|
This command downloads folders directly based on their ID. This is used for "manual"
|
@@ -267,6 +271,7 @@ def cli_download_folders(state, cores, target_dir, yes, download, ignore_errors,
|
|
267
271
|
ignore_errors=ignore_errors,
|
268
272
|
log_level=state.log_level,
|
269
273
|
progress_tracker_factory=PBarManager().get_new_bar,
|
274
|
+
head=head,
|
270
275
|
)
|
271
276
|
for result_folder in result_folders:
|
272
277
|
download_manager.add_result_folder_download(
|
@@ -286,7 +291,7 @@ def cli_download_folders(state, cores, target_dir, yes, download, ignore_errors,
|
|
286
291
|
@click.option("-n", "--file-name", multiple=True, help="File name to use for downloaded files. If set you must specify once per ID.")
|
287
292
|
@yes_option
|
288
293
|
@click.option("--download/--urls-only", default=True, help="Download files or just print urls")
|
289
|
-
@
|
294
|
+
@head_option
|
290
295
|
@ignore_errors_option
|
291
296
|
@click.argument("ids", nargs=-1)
|
292
297
|
def cli_download_ids(state, cores, target_dir, file_name, yes, download, head, ignore_errors, ids):
|
geoseeq/cli/main.py
CHANGED
@@ -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.
|
56
|
+
click.echo('0.5.6a10') # remember to update setup
|
57
57
|
|
58
58
|
|
59
59
|
@main.group('advanced')
|
@@ -2,7 +2,7 @@ import click
|
|
2
2
|
|
3
3
|
dryrun_option = click.option('--dryrun/--wetrun', default=False, help='Print what will be created without actually creating it')
|
4
4
|
overwrite_option = click.option('--overwrite/--no-overwrite', default=False, help='Overwrite existing samples, files, and data')
|
5
|
-
|
5
|
+
no_new_versions_option = click.option('--no-new-versions/--new-versions', default=False, help='Do not create new versions of the data')
|
6
6
|
def module_option(options, use_default=True, default=None):
|
7
7
|
if use_default:
|
8
8
|
default = default or options[0]
|
geoseeq/cli/upload/upload.py
CHANGED
@@ -24,6 +24,7 @@ from geoseeq.cli.shared_params import (
|
|
24
24
|
handle_project_id,
|
25
25
|
project_or_sample_id_arg,
|
26
26
|
handle_project_or_sample_id,
|
27
|
+
no_new_versions_option,
|
27
28
|
)
|
28
29
|
from geoseeq.upload_download_manager import GeoSeeqUploadManager
|
29
30
|
|
@@ -41,11 +42,12 @@ hidden_option = click.option('--hidden/--no-hidden', default=False, help='Upload
|
|
41
42
|
@link_option
|
42
43
|
@recursive_option
|
43
44
|
@hidden_option
|
45
|
+
@no_new_versions_option
|
44
46
|
@click.option('-n', '--geoseeq-file-name', default=None, multiple=True,
|
45
47
|
help='Specify a different name for the file on GeoSeeq than the local file name.')
|
46
48
|
@folder_id_arg
|
47
49
|
@click.argument('file_paths', type=click.Path(exists=True), nargs=-1)
|
48
|
-
def cli_upload_file(state, cores, yes, private, link_type, recursive, hidden, geoseeq_file_name, folder_id, file_paths):
|
50
|
+
def cli_upload_file(state, cores, yes, private, link_type, recursive, hidden, no_new_versions, geoseeq_file_name, folder_id, file_paths):
|
49
51
|
"""Upload files to GeoSeeq.
|
50
52
|
|
51
53
|
This command uploads files to either a sample or project on GeoSeeq. It can be used to upload
|
@@ -107,7 +109,7 @@ def cli_upload_file(state, cores, yes, private, link_type, recursive, hidden, ge
|
|
107
109
|
link_type=link_type,
|
108
110
|
progress_tracker_factory=PBarManager().get_new_bar,
|
109
111
|
log_level=state.log_level,
|
110
|
-
|
112
|
+
no_new_versions=no_new_versions,
|
111
113
|
use_cache=state.use_cache,
|
112
114
|
)
|
113
115
|
for geoseeq_file_name, file_path in name_pairs:
|
@@ -131,9 +133,10 @@ def cli_upload_file(state, cores, yes, private, link_type, recursive, hidden, ge
|
|
131
133
|
@private_option
|
132
134
|
@recursive_option
|
133
135
|
@hidden_option
|
136
|
+
@no_new_versions_option
|
134
137
|
@project_or_sample_id_arg
|
135
138
|
@click.argument('folder_names', type=click.Path(exists=True), nargs=-1)
|
136
|
-
def cli_upload_folder(state, cores, yes, private, recursive, hidden, project_or_sample_id, folder_names):
|
139
|
+
def cli_upload_folder(state, cores, yes, private, recursive, hidden, no_new_versions, project_or_sample_id, folder_names):
|
137
140
|
knex = state.get_knex()
|
138
141
|
root_obj = handle_project_or_sample_id(knex, project_or_sample_id, yes=yes, private=private)
|
139
142
|
upload_manager = GeoSeeqUploadManager(
|
@@ -143,6 +146,7 @@ def cli_upload_folder(state, cores, yes, private, recursive, hidden, project_or_
|
|
143
146
|
log_level=logging.INFO,
|
144
147
|
overwrite=True,
|
145
148
|
use_cache=state.use_cache,
|
149
|
+
no_new_versions=no_new_versions,
|
146
150
|
)
|
147
151
|
for folder_name in folder_names:
|
148
152
|
result_folder = root_obj.result_folder(folder_name).idem()
|
@@ -15,6 +15,7 @@ from geoseeq.cli.shared_params import (
|
|
15
15
|
overwrite_option,
|
16
16
|
yes_option,
|
17
17
|
use_common_state,
|
18
|
+
no_new_versions_option
|
18
19
|
)
|
19
20
|
from geoseeq.upload_download_manager import GeoSeeqUploadManager
|
20
21
|
|
@@ -85,7 +86,7 @@ def _group_files(knex, filepaths, module_name, regex, yes):
|
|
85
86
|
return groups
|
86
87
|
|
87
88
|
|
88
|
-
def _do_upload(groups, module_name, link_type, lib, filepaths, overwrite, cores, state):
|
89
|
+
def _do_upload(groups, module_name, link_type, lib, filepaths, overwrite, no_new_versions, cores, state):
|
89
90
|
|
90
91
|
with requests.Session() as session:
|
91
92
|
upload_manager = GeoSeeqUploadManager(
|
@@ -96,6 +97,7 @@ def _do_upload(groups, module_name, link_type, lib, filepaths, overwrite, cores,
|
|
96
97
|
overwrite=overwrite,
|
97
98
|
progress_tracker_factory=PBarManager().get_new_bar,
|
98
99
|
use_cache=state.use_cache,
|
100
|
+
no_new_versions=no_new_versions,
|
99
101
|
)
|
100
102
|
for group in groups:
|
101
103
|
sample = lib.sample(group['sample_name']).idem()
|
@@ -139,10 +141,11 @@ def flatten_list_of_fastqs(filepaths):
|
|
139
141
|
@click.option('--regex', default=None, help='An optional regex to use to extract sample names from the file names')
|
140
142
|
@private_option
|
141
143
|
@link_option
|
144
|
+
@no_new_versions_option
|
142
145
|
@module_option(FASTQ_MODULE_NAMES)
|
143
146
|
@project_id_arg
|
144
147
|
@click.argument('fastq_files', type=click.Path(exists=True), nargs=-1)
|
145
|
-
def cli_upload_reads_wizard(state, cores, overwrite, yes, regex, private, link_type, module_name, project_id, fastq_files):
|
148
|
+
def cli_upload_reads_wizard(state, cores, overwrite, yes, regex, private, link_type, no_new_versions, module_name, project_id, fastq_files):
|
146
149
|
"""Upload fastq read files to GeoSeeq.
|
147
150
|
|
148
151
|
This command automatically groups files by their sample name, lane number
|
@@ -196,4 +199,4 @@ def cli_upload_reads_wizard(state, cores, overwrite, yes, regex, private, link_t
|
|
196
199
|
click.echo(f'Found {len(filepaths)} files to upload.', err=True)
|
197
200
|
regex = _get_regex(knex, filepaths, module_name, proj, regex)
|
198
201
|
groups = _group_files(knex, filepaths, module_name, regex, yes)
|
199
|
-
_do_upload(groups, module_name, link_type, proj, filepaths, overwrite, cores, state)
|
202
|
+
_do_upload(groups, module_name, link_type, proj, filepaths, overwrite, no_new_versions, cores, state)
|
geoseeq/result/file_upload.py
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
import time
|
3
3
|
import json
|
4
4
|
import os
|
5
|
-
from os.path import basename, getsize, join, dirname, isfile
|
5
|
+
from os.path import basename, getsize, join, dirname, isfile, getctime
|
6
6
|
from pathlib import Path
|
7
7
|
|
8
8
|
import requests
|
@@ -49,7 +49,7 @@ class ResumableUploadTracker:
|
|
49
49
|
self.filepath = filepath
|
50
50
|
self.tracker_file = join(
|
51
51
|
GEOSEEQ_CACHE_DIR, 'upload',
|
52
|
-
tracker_file_prefix + f".{chunk_size}." + basename(filepath)
|
52
|
+
tracker_file_prefix + f".{chunk_size}.{getsize(filepath)}." + basename(filepath)
|
53
53
|
)
|
54
54
|
try:
|
55
55
|
os.makedirs(dirname(self.tracker_file), exist_ok=True)
|
@@ -64,7 +64,7 @@ class ResumableUploadTracker:
|
|
64
64
|
return
|
65
65
|
if self.upload_started:
|
66
66
|
raise GeoseeqGeneralError("Upload has already started.")
|
67
|
-
blob = dict(upload_id=upload_id, urls=urls)
|
67
|
+
blob = dict(upload_id=upload_id, urls=urls, start_time=time.time())
|
68
68
|
serialized = json.dumps(blob)
|
69
69
|
with open(self.tracker_file, "w") as f:
|
70
70
|
f.write(serialized + "\n")
|
@@ -89,6 +89,11 @@ class ResumableUploadTracker:
|
|
89
89
|
with open(self.tracker_file, "r") as f:
|
90
90
|
header_blob = json.loads(f.readline())
|
91
91
|
self.upload_id, self.urls = header_blob["upload_id"], header_blob["urls"]
|
92
|
+
start_time = header_blob["start_time"]
|
93
|
+
if (time.time() - start_time) > (60 * 60 * 23):
|
94
|
+
logger.warning(f"Tracker file {self.tracker_file} is too old. Deleting.")
|
95
|
+
os.remove(self.tracker_file)
|
96
|
+
return
|
92
97
|
self.upload_started = True
|
93
98
|
for line in f:
|
94
99
|
blob = json.loads(line)
|
@@ -161,14 +166,15 @@ class ResultFileUpload:
|
|
161
166
|
http_response.raise_for_status()
|
162
167
|
logger.debug(f"Upload for part {num + 1} succeeded.")
|
163
168
|
break
|
164
|
-
except requests.exceptions.HTTPError:
|
165
|
-
logger.
|
169
|
+
except (requests.exceptions.HTTPError, requests.exceptions.SSLError, requests.exceptions.ConnectionError) as e:
|
170
|
+
logger.debug(
|
166
171
|
f"Upload for part {num + 1} failed. Attempt {attempts + 1} of {max_retries}."
|
167
172
|
)
|
168
173
|
attempts += 1
|
169
174
|
if attempts == max_retries:
|
170
|
-
raise
|
175
|
+
raise e
|
171
176
|
time.sleep(10**attempts) # exponential backoff, (10 ** 2)s default max
|
177
|
+
|
172
178
|
etag = http_response.headers["ETag"].replace('"', "")
|
173
179
|
blob = {"ETag": etag, "PartNumber": num + 1}
|
174
180
|
if resumable_upload_tracker:
|
@@ -260,10 +266,12 @@ class ResultFileUpload:
|
|
260
266
|
logger.info(f'Finished Upload for "{filepath}"')
|
261
267
|
return self
|
262
268
|
|
263
|
-
def upload_file(self, filepath, multipart_thresh=FIVE_MB, overwrite=True, **kwargs):
|
269
|
+
def upload_file(self, filepath, multipart_thresh=FIVE_MB, overwrite=True, no_new_versions=False, **kwargs):
|
264
270
|
if self.exists() and not overwrite:
|
265
271
|
raise GeoseeqGeneralError(f"Overwrite is set to False and file {self.uuid} already exists.")
|
266
272
|
self.idem()
|
273
|
+
if no_new_versions and self.has_downloadable_file():
|
274
|
+
raise GeoseeqGeneralError(f"File {self} already has a downloadable file. Not uploading a new version.")
|
267
275
|
resolved_path = Path(filepath).resolve()
|
268
276
|
file_size = getsize(resolved_path)
|
269
277
|
return self.multipart_upload_file(filepath, file_size, **kwargs)
|
geoseeq/result/result_file.py
CHANGED
@@ -53,6 +53,14 @@ class ResultFile(RemoteObject, ResultFileUpload, ResultFileDownload):
|
|
53
53
|
obj_type = "sample" if self.canon_url() == "sample_ar_fields" else "project"
|
54
54
|
brn = f"brn:{self.knex.instance_code()}:{obj_type}_result_field:{self.uuid}"
|
55
55
|
|
56
|
+
def has_downloadable_file(self):
|
57
|
+
"""Return True if this field has a downloadable file."""
|
58
|
+
try:
|
59
|
+
self.download(head=10, cache=False)
|
60
|
+
return True
|
61
|
+
except Exception as e:
|
62
|
+
return False
|
63
|
+
|
56
64
|
def nested_url(self):
|
57
65
|
escaped_name = urllib.parse.quote(self.name, safe="")
|
58
66
|
return self.parent.nested_url() + f"/fields/{escaped_name}"
|
@@ -19,12 +19,18 @@ def _make_in_process_logger(log_level):
|
|
19
19
|
|
20
20
|
|
21
21
|
def _upload_one_file(args):
|
22
|
-
result_file, filepath, session, progress_tracker,
|
22
|
+
(result_file, filepath, session, progress_tracker,
|
23
|
+
link_type, overwrite, log_level, parallel_uploads,
|
24
|
+
use_cache, no_new_versions) = args
|
23
25
|
if parallel_uploads:
|
24
26
|
_make_in_process_logger(log_level)
|
25
27
|
if link_type == 'upload':
|
26
28
|
# TODO: check checksums to see if the file is the same
|
27
|
-
result_file.upload_file(
|
29
|
+
result_file.upload_file(
|
30
|
+
filepath,
|
31
|
+
session=session, overwrite=overwrite, progress_tracker=progress_tracker,
|
32
|
+
threads=4, use_cache=use_cache, no_new_versions=no_new_versions
|
33
|
+
)
|
28
34
|
else:
|
29
35
|
result_file.link_file(link_type, filepath)
|
30
36
|
return result_file
|
@@ -39,6 +45,7 @@ class GeoSeeqUploadManager:
|
|
39
45
|
progress_tracker_factory=None,
|
40
46
|
log_level=logging.WARNING,
|
41
47
|
overwrite=True,
|
48
|
+
no_new_versions=False,
|
42
49
|
use_cache=True):
|
43
50
|
self.session = session
|
44
51
|
self.n_parallel_uploads = n_parallel_uploads
|
@@ -47,6 +54,7 @@ class GeoSeeqUploadManager:
|
|
47
54
|
self.link_type = link_type
|
48
55
|
self.overwrite = overwrite
|
49
56
|
self._result_files = []
|
57
|
+
self.no_new_versions = no_new_versions
|
50
58
|
self.use_cache = use_cache
|
51
59
|
|
52
60
|
def add_result_file(self, result_file, local_path):
|
@@ -72,7 +80,7 @@ class GeoSeeqUploadManager:
|
|
72
80
|
result_file, local_path,
|
73
81
|
self.session, self.progress_tracker_factory(local_path),
|
74
82
|
self.link_type, self.overwrite, self.log_level,
|
75
|
-
self.n_parallel_uploads > 1, self.use_cache
|
83
|
+
self.n_parallel_uploads > 1, self.use_cache, self.no_new_versions
|
76
84
|
) for result_file, local_path in self._result_files
|
77
85
|
]
|
78
86
|
out = []
|
@@ -11,7 +11,7 @@ geoseeq/project.py,sha256=-9Y2ik0-BpT3iqh89v8VQBbdadhI58oaUP9oZK8oetc,13741
|
|
11
11
|
geoseeq/remote_object.py,sha256=Es-JlAz8iLRmCpAzh1MOwUh2MqtbuQM-p8wHIBAqNlQ,7131
|
12
12
|
geoseeq/sample.py,sha256=whgEVk6GnDJJLjn5uTOqFqRtVxZD3BgjTo7brAC5noU,7981
|
13
13
|
geoseeq/search.py,sha256=gawad6Cx5FxJBPlYkXWb-UKAO-UC0_yhvyU9Ca1kaNI,3388
|
14
|
-
geoseeq/upload_download_manager.py,sha256=
|
14
|
+
geoseeq/upload_download_manager.py,sha256=BGaEBAKu05CqftwRu3BjzL6FvcHp_w122yOS3LVVzd4,7423
|
15
15
|
geoseeq/user.py,sha256=tol8i1UGLRrbMw5jeJDnna1ikRgrCDd50Jxz0a1lSgg,690
|
16
16
|
geoseeq/utils.py,sha256=PDRiEQIZYTcfEV9AYvloQVvfqs5JaebcFZodAa2SUW8,3577
|
17
17
|
geoseeq/work_orders.py,sha256=5uLVVfdKE8qh4gGaHkdBpXJGRTujuSg59knWCqEET4A,8071
|
@@ -19,10 +19,10 @@ geoseeq/cli/__init__.py,sha256=4WnK87K5seRK3SGJAxNWnQTqyg5uBhdhrOrzB1D4b3M,24
|
|
19
19
|
geoseeq/cli/constants.py,sha256=Do5AUf9lMO9_P8KpFJ3XwwFBAWsxSjZ6sx9_QEGyC_c,176
|
20
20
|
geoseeq/cli/copy.py,sha256=02U9kdrAIbbM8MlRMLL6p-LMYFSuRObE3h5jyvcL__M,2275
|
21
21
|
geoseeq/cli/detail.py,sha256=q8Suu-j2k18knfSVFG-SWWGNsKM-n8y9RMA3LcIIi9Y,4132
|
22
|
-
geoseeq/cli/download.py,sha256=
|
22
|
+
geoseeq/cli/download.py,sha256=_upzZo08K0fAPbEsyi1uN0HGNUaY1pl6OoGPcWmvSUY,17765
|
23
23
|
geoseeq/cli/fastq_utils.py,sha256=-bmeQLaiMBm57zWOF0R5OlWTU0_3sh1JBC1RYw2BOFM,3083
|
24
24
|
geoseeq/cli/get_eula.py,sha256=79mbUwyiF7O1r0g6UTxG9kJGQEqKuH805E6eLkPC6Y4,997
|
25
|
-
geoseeq/cli/main.py,sha256=
|
25
|
+
geoseeq/cli/main.py,sha256=xbSTOVLf1iFdw-aUu6l_UEVeiVrPgi9Liylt5UjNRzU,3260
|
26
26
|
geoseeq/cli/manage.py,sha256=wGXAcVaXqE5JQEU8Jh6OlHr02nB396bpS_SFcOZdrEo,5929
|
27
27
|
geoseeq/cli/progress_bar.py,sha256=p1Xl01nkYxSBZCB30ue2verIIi22W93m3ZAMAxipD0g,738
|
28
28
|
geoseeq/cli/run.py,sha256=bx2AV6VIqOSTlxUda78xl0XxcZ8TXlQx02-e7iLQPwI,3838
|
@@ -35,11 +35,11 @@ geoseeq/cli/shared_params/common_state.py,sha256=jiHZtL3TATMjEoqhbO7HT8KkLJr1QPs
|
|
35
35
|
geoseeq/cli/shared_params/config.py,sha256=HQ0xQh_jdt3EKI5VXYqQXzo-s8Rm6YlziMyVX-kg598,1072
|
36
36
|
geoseeq/cli/shared_params/id_handlers.py,sha256=501K9sCVkI0YGDQ62vXk_DM5lMMDrdB5spIS3cw9x9U,9299
|
37
37
|
geoseeq/cli/shared_params/obj_getters.py,sha256=ZSkt6LnDkVFlNVYKgLrjzg60-6BthZMr3eeD3HNqzac,2741
|
38
|
-
geoseeq/cli/shared_params/opts_and_args.py,sha256=
|
38
|
+
geoseeq/cli/shared_params/opts_and_args.py,sha256=LrDkv9WtUryM4uUMXPRk04-EBcTQ7q5V6Yu-XRDUvvA,2083
|
39
39
|
geoseeq/cli/upload/__init__.py,sha256=3C9_S9t7chmYU-2ot89NV03x-EtmsjibulErKaU9w1k,627
|
40
|
-
geoseeq/cli/upload/upload.py,sha256=
|
40
|
+
geoseeq/cli/upload/upload.py,sha256=vbUslOSPf8EDYFzFxukE4EFK_h8nfMYNbSczR2AJNxk,9203
|
41
41
|
geoseeq/cli/upload/upload_advanced.py,sha256=Jq5eGe-wOdrzxGWVwaFPg0BAJcW0YSx_eHEmYjJeKuA,3434
|
42
|
-
geoseeq/cli/upload/upload_reads.py,sha256=
|
42
|
+
geoseeq/cli/upload/upload_reads.py,sha256=iInPDnfgEuLa8E4gfENFaZ_Uhxfv1Zfkc38iPvTsTwg,7450
|
43
43
|
geoseeq/contrib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
44
44
|
geoseeq/contrib/ncbi/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
45
45
|
geoseeq/contrib/ncbi/api.py,sha256=WQeLoGA_-Zha-QeSO8_i7HpvXyD8UkV0qc5okm11KiA,1056
|
@@ -64,8 +64,8 @@ geoseeq/plotting/map/overlay.py,sha256=4VmxqOESTQra9tPr8b8OLEUhJSit9lNipabeSznEY
|
|
64
64
|
geoseeq/result/__init__.py,sha256=IFHIyRV8ZzuKIfwfze1SXgcKwNMcSgMAknLHMkwjXIU,356
|
65
65
|
geoseeq/result/bioinfo.py,sha256=QQtbyogrdro9avJSN0713sxLVnVeA24mFw3hWtKDKyw,1782
|
66
66
|
geoseeq/result/file_download.py,sha256=XQA5bdQJJSZIgbFcN09OvVdLq12fnA98kPCIONAkLk0,5568
|
67
|
-
geoseeq/result/file_upload.py,sha256=
|
68
|
-
geoseeq/result/result_file.py,sha256=
|
67
|
+
geoseeq/result/file_upload.py,sha256=D8gbdsyzw5ztjT7Vmq4InxKhyl7l8n2leH4GYVD-seM,12109
|
68
|
+
geoseeq/result/result_file.py,sha256=1Yj9fkZhds3J-tay6eNH2-EHi00MovHGV1M80_ckHD8,8677
|
69
69
|
geoseeq/result/result_folder.py,sha256=6porOXPh7Tpxw3oX5yMRPYQzNCGYqszqmFJd3SwQmTc,11122
|
70
70
|
geoseeq/result/utils.py,sha256=C-CxGzB3WddlnRiqFSkrY78I_m0yFgNqsTBRzGU-y8Q,2772
|
71
71
|
geoseeq/vc/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -80,9 +80,9 @@ geoseeq/vc/vc_stub.py,sha256=IQr8dI0zsWKVAeY_5ybDD6n49_3othcgfHS3P0O9tuY,3110
|
|
80
80
|
tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
81
81
|
tests/test_api_client.py,sha256=TS5njc5pcPP_Ycy-ljcfPVT1hQRBsFVdQ0lCqBmoesU,12810
|
82
82
|
tests/test_plotting.py,sha256=TcTu-2ARr8sxZJ7wPQxmbs3-gHw7uRvsgrhhhg0qKik,784
|
83
|
-
geoseeq-0.5.
|
84
|
-
geoseeq-0.5.
|
85
|
-
geoseeq-0.5.
|
86
|
-
geoseeq-0.5.
|
87
|
-
geoseeq-0.5.
|
88
|
-
geoseeq-0.5.
|
83
|
+
geoseeq-0.5.6a10.dist-info/LICENSE,sha256=IuhIl1XCxXLPLJT_coN1CNqQU4Khlq7x4IdW7ioOJD8,1067
|
84
|
+
geoseeq-0.5.6a10.dist-info/METADATA,sha256=RKguQ4reNa4rH6Pv20JBMCbyo2inLjKcO5VFkcCgyxg,4806
|
85
|
+
geoseeq-0.5.6a10.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
86
|
+
geoseeq-0.5.6a10.dist-info/entry_points.txt,sha256=yF-6KDM8zXib4Al0qn49TX-qM7PUkWUIcYtsgt36rjM,45
|
87
|
+
geoseeq-0.5.6a10.dist-info/top_level.txt,sha256=zZk7mmeaqAYqFJG8nq2DTgSQPbflRjJwkDIhNURPDEU,14
|
88
|
+
geoseeq-0.5.6a10.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|