ciocore 9.0.0b2__py2.py3-none-any.whl → 9.1.0b1__py2.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.
Potentially problematic release.
This version of ciocore might be problematic. Click here for more details.
- ciocore/VERSION +1 -1
- ciocore/api_client.py +2 -3
- ciocore/compat.py +15 -0
- ciocore/docsite/apidoc/api_client/index.html +2 -3
- ciocore/docsite/apidoc/package_tree/index.html +5 -0
- ciocore/docsite/search/search_index.json +1 -1
- ciocore/docsite/sitemap.xml.gz +0 -0
- ciocore/package_tree.py +4 -0
- ciocore/uploader/_uploader.py +27 -2
- ciocore/uploader/thread_queue_job.py +101 -0
- ciocore/worker.py +5 -1
- {ciocore-9.0.0b2.dist-info → ciocore-9.1.0b1.dist-info}/METADATA +7 -6
- {ciocore-9.0.0b2.dist-info → ciocore-9.1.0b1.dist-info}/RECORD +22 -20
- tests/test_api_client.py +4 -1
- tests/test_common.py +11 -1
- tests/test_config.py +4 -1
- tests/test_data.py +4 -1
- tests/test_submit.py +4 -1
- tests/test_uploader.py +4 -1
- {ciocore-9.0.0b2.dist-info → ciocore-9.1.0b1.dist-info}/WHEEL +0 -0
- {ciocore-9.0.0b2.dist-info → ciocore-9.1.0b1.dist-info}/entry_points.txt +0 -0
- {ciocore-9.0.0b2.dist-info → ciocore-9.1.0b1.dist-info}/top_level.txt +0 -0
ciocore/docsite/sitemap.xml.gz
CHANGED
|
Binary file
|
ciocore/package_tree.py
CHANGED
ciocore/uploader/_uploader.py
CHANGED
|
@@ -2,6 +2,7 @@ import datetime
|
|
|
2
2
|
import json
|
|
3
3
|
import logging
|
|
4
4
|
import os
|
|
5
|
+
import pathlib
|
|
5
6
|
import requests.exceptions
|
|
6
7
|
import sys
|
|
7
8
|
import time
|
|
@@ -760,6 +761,31 @@ class Uploader(object):
|
|
|
760
761
|
file_map = {path: None for path in processed_filepaths}
|
|
761
762
|
self.handle_upload_response(project=None, upload_files=file_map)
|
|
762
763
|
|
|
764
|
+
if common.SIGINT_EXIT or self.cancel:
|
|
765
|
+
print("\nUpload cancelled\n")
|
|
766
|
+
|
|
767
|
+
else:
|
|
768
|
+
print("\nUpload of {} file completed\n".format(len(file_map)))
|
|
769
|
+
|
|
770
|
+
error_messages = []
|
|
771
|
+
|
|
772
|
+
for exception in self.error_messages:
|
|
773
|
+
error_messages.append(str(exception[1]))
|
|
774
|
+
print("".join(traceback.format_tb(exception[2])))
|
|
775
|
+
logger.error("".join(traceback.format_tb(exception[2])))
|
|
776
|
+
|
|
777
|
+
if error_messages:
|
|
778
|
+
|
|
779
|
+
log_file = loggeria.LOG_PATH
|
|
780
|
+
sys.stderr.write("\nError uploading files:\n")
|
|
781
|
+
|
|
782
|
+
for err_msg in error_messages:
|
|
783
|
+
sys.stderr.write("\t{}\n".format(err_msg))
|
|
784
|
+
|
|
785
|
+
sys.stderr.write("\nSee log {} for more details\n\n".format(log_file))
|
|
786
|
+
|
|
787
|
+
self.error_messages = []
|
|
788
|
+
|
|
763
789
|
def handle_upload_response(self, project, upload_files, upload_id=None):
|
|
764
790
|
"""
|
|
765
791
|
This is a really confusing method and should probably be split into to clear logic
|
|
@@ -818,8 +844,7 @@ class Uploader(object):
|
|
|
818
844
|
time.sleep(5)
|
|
819
845
|
|
|
820
846
|
# Shutdown the manager once all jobs are done
|
|
821
|
-
if not self.cancel
|
|
822
|
-
logger.debug("Waiting for Manager to join")
|
|
847
|
+
if not (self.cancel or self.manager.error or common.SIGINT_EXIT):
|
|
823
848
|
self.manager.join()
|
|
824
849
|
|
|
825
850
|
upload_stats = UploadStats.create(
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
from ciocore import loggeria
|
|
3
|
+
|
|
4
|
+
logger = logging.getLogger("{}.uploader".format(loggeria.CONDUCTOR_LOGGER_NAME))
|
|
5
|
+
|
|
6
|
+
class ThreadQueueJob():
|
|
7
|
+
pass
|
|
8
|
+
|
|
9
|
+
class UploadThreadQueueJob(ThreadQueueJob):
|
|
10
|
+
|
|
11
|
+
def __init__(self, path, file_size, presigned_url, file_md5=None, upload_id=None, part_size=None, total_parts=1, part_index=1, kms_key_name=None):
|
|
12
|
+
|
|
13
|
+
super().__init__()
|
|
14
|
+
|
|
15
|
+
self.path = path
|
|
16
|
+
self.file_size = file_size
|
|
17
|
+
self.upload_id = upload_id
|
|
18
|
+
self.presigned_url = presigned_url
|
|
19
|
+
self.file_md5 = file_md5
|
|
20
|
+
self.part_size = part_size
|
|
21
|
+
self.part_index = part_index
|
|
22
|
+
self.total_parts = total_parts
|
|
23
|
+
self.kms_key_name = kms_key_name
|
|
24
|
+
|
|
25
|
+
logger.info("Creating %s (%s): %s", str(self.__class__), str(self), str(self.__dict__))
|
|
26
|
+
|
|
27
|
+
def is_multipart(self):
|
|
28
|
+
return self.total_parts != 1
|
|
29
|
+
|
|
30
|
+
def is_vendor_aws(self):
|
|
31
|
+
return "amazonaws" in self.presigned_url
|
|
32
|
+
|
|
33
|
+
def is_vendor_cw(self):
|
|
34
|
+
return "coreweave" in self.presigned_url
|
|
35
|
+
|
|
36
|
+
@classmethod
|
|
37
|
+
def create_from_response(cls, response):
|
|
38
|
+
|
|
39
|
+
new_thread_queue_jobs = []
|
|
40
|
+
|
|
41
|
+
for part_type, file_request_list in response.items():
|
|
42
|
+
|
|
43
|
+
for file_request in file_request_list:
|
|
44
|
+
if part_type == "multiPartURLs":
|
|
45
|
+
|
|
46
|
+
for part in file_request["parts"]:
|
|
47
|
+
new_tqj = cls( path=file_request['filePath'],
|
|
48
|
+
file_size = file_request['filePath'],
|
|
49
|
+
presigned_url = file_request['preSignedURL'],
|
|
50
|
+
file_md5 = file_request['preSignedURL'],
|
|
51
|
+
upload_id = file_request['preSignedURL'],
|
|
52
|
+
part_size = file_request['preSignedURL'],
|
|
53
|
+
part_index = file_request['preSignedURL'])
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
else:
|
|
57
|
+
new_tqj = cls( path=file_request['filePath'],
|
|
58
|
+
file_size = file_request['filePath'],
|
|
59
|
+
presigned_url = file_request['preSignedURL'])
|
|
60
|
+
|
|
61
|
+
new_thread_queue_jobs.append(new_tqj)
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
class MultiPartThreadQueueJob(ThreadQueueJob):
|
|
66
|
+
|
|
67
|
+
def __init__(self, path, md5, total_parts=1, part_index=1):
|
|
68
|
+
|
|
69
|
+
super().__init__()
|
|
70
|
+
|
|
71
|
+
self.upload_id = None
|
|
72
|
+
self.md5 = md5
|
|
73
|
+
self.project = None
|
|
74
|
+
self.path = path
|
|
75
|
+
self.part_index = part_index
|
|
76
|
+
self.etag = None
|
|
77
|
+
self.total_parts = total_parts
|
|
78
|
+
|
|
79
|
+
logger.info("Creating %s (%s): %s", str(self.__class__), str(self), str(self.__dict__))
|
|
80
|
+
|
|
81
|
+
def is_multipart(self):
|
|
82
|
+
return self.total_parts != 1
|
|
83
|
+
|
|
84
|
+
# def __str__(self):
|
|
85
|
+
# return
|
|
86
|
+
|
|
87
|
+
@staticmethod
|
|
88
|
+
def aggregate_parts(parts):
|
|
89
|
+
"""
|
|
90
|
+
Helper function to take all the parts of a multipart upload and put
|
|
91
|
+
them into a format that's expected for the HTTP call.
|
|
92
|
+
"""
|
|
93
|
+
|
|
94
|
+
completed_parts_payload = []
|
|
95
|
+
|
|
96
|
+
for part in parts:
|
|
97
|
+
completed_parts_payload.append({'partNumber': part.part,
|
|
98
|
+
'etag': part.etag}
|
|
99
|
+
)
|
|
100
|
+
|
|
101
|
+
return completed_parts_payload
|
ciocore/worker.py
CHANGED
|
@@ -621,7 +621,11 @@ class JobManager():
|
|
|
621
621
|
q_size = self.work_queues[index].qsize()
|
|
622
622
|
worker_threads = self.workers[index].threads
|
|
623
623
|
|
|
624
|
-
|
|
624
|
+
# thread.isAlive() was renamed to is_alive() in Python 3.9
|
|
625
|
+
try:
|
|
626
|
+
num_active_threads = len([thd for thd in worker_threads if thd.isAlive()])
|
|
627
|
+
except AttributeError:
|
|
628
|
+
num_active_threads = len([thd for thd in worker_threads if thd.is_alive()])
|
|
625
629
|
|
|
626
630
|
msg += '%s \titems in queue: %s' % (q_size, worker_class.__name__)
|
|
627
631
|
msg += '\t\t%s threads' % num_active_threads
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: ciocore
|
|
3
|
-
Version: 9.
|
|
3
|
+
Version: 9.1.0b1
|
|
4
4
|
Summary: Core functionality for Conductor's client tools
|
|
5
5
|
Home-page: https://github.com/ConductorTechnologies/ciocore
|
|
6
6
|
Author: conductor
|
|
@@ -9,8 +9,9 @@ Classifier: Operating System :: OS Independent
|
|
|
9
9
|
Classifier: Programming Language :: Python
|
|
10
10
|
Classifier: Topic :: Multimedia :: Graphics :: 3D Rendering
|
|
11
11
|
Description-Content-Type: text/markdown
|
|
12
|
-
Requires-Dist: requests
|
|
13
|
-
Requires-Dist: pyjwt==
|
|
12
|
+
Requires-Dist: requests[use_chardet_on_py3]==2.28.1
|
|
13
|
+
Requires-Dist: pyjwt==1.7.1
|
|
14
|
+
Requires-Dist: future>=0.18.2
|
|
14
15
|
Requires-Dist: cioseq<1.0.0,>=0.4.1
|
|
15
16
|
Requires-Dist: Click<9.0.0,>=8.1.3
|
|
16
17
|
Requires-Dist: markdown<4.0.0,>=3.5.2
|
|
@@ -51,10 +52,10 @@ See [CONTRIBUTING](CONTRIBUTING.md)
|
|
|
51
52
|
## Changelog
|
|
52
53
|
|
|
53
54
|
## Unreleased:
|
|
55
|
+
* Adds required changes to parallelize multi-part uploads
|
|
56
|
+
* Cleans up the output when explicit paths are uploaded
|
|
57
|
+
* Fixes logic so managers doesn't erroneously try and call join a second time if cancelled
|
|
54
58
|
|
|
55
|
-
* 9.0.0-beta.1
|
|
56
|
-
* Use the new required jwt parameters
|
|
57
|
-
* Removing py2.7 compatibility
|
|
58
59
|
|
|
59
60
|
## Version:8.3.2 -- 01 Oct 2024
|
|
60
61
|
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
ciocore/VERSION,sha256=
|
|
1
|
+
ciocore/VERSION,sha256=TCUlj36m9-VV6atKK8EETx-2I8BQY_6CSKTVDGTHeqo,12
|
|
2
2
|
ciocore/__init__.py,sha256=aTP7LeeosQA8BZE67gDV4jgfTK5zxmwZRjiTRu_ZWj0,646
|
|
3
|
-
ciocore/api_client.py,sha256=
|
|
3
|
+
ciocore/api_client.py,sha256=SBxEwAiwn2XtH7T_ipefUbWhczXjoNdNbQBur1RV-Bw,32810
|
|
4
4
|
ciocore/cli.py,sha256=jZ1lOKQiUcrMhsVmD9SVmPMFwHtgDF4SaoAf2-PBS54,15449
|
|
5
5
|
ciocore/client_db.py,sha256=tTz3bl2xeDPPcYSDS3g3QgV_xYihJMx0Kj6OeN2klK0,12978
|
|
6
6
|
ciocore/common.py,sha256=mBIS6KiYoQsjWe6aIFUGRRvCMl8BIN2kmLZ4J8icap8,14982
|
|
7
|
+
ciocore/compat.py,sha256=5uEXPSog_jxsDMaHBswAKEtfyXT25VgU6WNGIhz9PHU,256
|
|
7
8
|
ciocore/conductor_submit.py,sha256=bxvzdyNzscAOOOsqTvAYh5DQsTWyCQJNb16Mf-n_F0M,9702
|
|
8
9
|
ciocore/config.py,sha256=rCL7kaFn1tYgSglN8q9Wx6SwMpoXTq0BMQGwPRVwVIg,8973
|
|
9
10
|
ciocore/data.py,sha256=Ji0qUk8nJXBNakoHSqBiVx8O58SbZXyt273SHlEDn3U,7027
|
|
@@ -13,11 +14,11 @@ ciocore/hardware_set.py,sha256=FlRQiGCLRcSW7Oko_gzgVK8ZqJ_J92eT8e_AleAbS2E,17047
|
|
|
13
14
|
ciocore/loggeria.py,sha256=dk8n899TYFiMTD2gjjj8oiumJkPtCus0a_IY2GORAvU,15251
|
|
14
15
|
ciocore/package_environment.py,sha256=MEHV7jfs3NJIEYCIaW8JfJdBmelvPHZMmBzPlXETiRo,7808
|
|
15
16
|
ciocore/package_query.py,sha256=hWi_JmRieZ8f2Ji5JR7tQnHnm29Ktb88scbIXNsDu-8,6181
|
|
16
|
-
ciocore/package_tree.py,sha256=
|
|
17
|
+
ciocore/package_tree.py,sha256=vkORKXxQ7dO8l0_96eFwm-5AUVL0rP9bhgWYhW_v3lo,15649
|
|
17
18
|
ciocore/post_install.py,sha256=zu5Ctz2ANbKD-f5G2ODLIhKkWENBi4F3UKKu50OEWrg,1000
|
|
18
19
|
ciocore/retry.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
19
20
|
ciocore/validator.py,sha256=f_K7gxz122W_i5AxVx6dKhckOygl8TnmQiVj7tyX5zw,2344
|
|
20
|
-
ciocore/worker.py,sha256=
|
|
21
|
+
ciocore/worker.py,sha256=YnE0mGqkky9uxPMyDRmvdt1p1ER_GN39AeZPIGw6f4U,21832
|
|
21
22
|
ciocore/auth/__init__.py,sha256=cdS-xZzMq41yXM5cz8sUlcYgo8CJYh8HcCCWmhbDgf0,606
|
|
22
23
|
ciocore/auth/server.py,sha256=8btX9-EokUl6q55V8muDmEV2tvvbTBD0BHeWFbwkzUc,3892
|
|
23
24
|
ciocore/docsite/404.html,sha256=xP-mZwn-87pnlkD-paIYzdXDLQr7DS551KflVdFfrCk,17207
|
|
@@ -25,14 +26,14 @@ ciocore/docsite/index.html,sha256=NEK4HaX2yaetTajVtQuTmS9C5cPnkAtxgeKEj7wQ9t0,20
|
|
|
25
26
|
ciocore/docsite/logo.png,sha256=gArgFFWdw8w985-0TkuGIgU_pW9sziEMZdqytXb5WLo,2825
|
|
26
27
|
ciocore/docsite/objects.inv,sha256=XwmLactPEWWC4fAWqHNPBXGsluRxLLTrwDLQqq51ONY,775
|
|
27
28
|
ciocore/docsite/sitemap.xml,sha256=M_V85zl0y2adRvzJAnoCxlZH_Hl7TLnIb1A-6l_xGmI,109
|
|
28
|
-
ciocore/docsite/sitemap.xml.gz,sha256=
|
|
29
|
-
ciocore/docsite/apidoc/api_client/index.html,sha256=
|
|
29
|
+
ciocore/docsite/sitemap.xml.gz,sha256=mThGdpcFPBqhVOOM7T3lZOZMuSVSoDrSjqxs4psAmeY,127
|
|
30
|
+
ciocore/docsite/apidoc/api_client/index.html,sha256=TvoSl4iqdXhBVfesDxe_sBPA6G-Jt1-gpWA40xXspa0,188372
|
|
30
31
|
ciocore/docsite/apidoc/apidoc/index.html,sha256=GOSvv6KZPOtgekgshRE4j7aDvJkkaiBQLwA_By9J94g,26171
|
|
31
32
|
ciocore/docsite/apidoc/config/index.html,sha256=WDqy4MLR3EMp9T_2-Z9Op61rTFkvb0aTWmtjiR8sbjA,72559
|
|
32
33
|
ciocore/docsite/apidoc/data/index.html,sha256=vjC5u7wcm2ryOW28GctA9ZG6dXgBTkMJLLomJ9Kqxo0,50850
|
|
33
34
|
ciocore/docsite/apidoc/hardware_set/index.html,sha256=SpYg-lwuCvfLPbNIIM7aQL2jGt-NA5wlVMlIKixGwBo,123042
|
|
34
35
|
ciocore/docsite/apidoc/package_environment/index.html,sha256=V6_ah3V1_4_aOwJbEcITCdwuHxe1vGtfn0maRrbflUs,69248
|
|
35
|
-
ciocore/docsite/apidoc/package_tree/index.html,sha256=
|
|
36
|
+
ciocore/docsite/apidoc/package_tree/index.html,sha256=60Ir6X1Q9k17bQCqozXzuMAcSVuu6DuC5zGfBk4LLnw,109393
|
|
36
37
|
ciocore/docsite/assets/_mkdocstrings.css,sha256=K3bqYEmxlOHQ3-M11JNbBWHCBDBLarkFRm8HuEYrAG4,341
|
|
37
38
|
ciocore/docsite/assets/images/favicon.png,sha256=AjhUxD_Eslt5XuSVHIAZ494Fk__rb5GLXR8qm0elfP4,1870
|
|
38
39
|
ciocore/docsite/assets/javascripts/bundle.4e31edb1.min.js,sha256=vMxCR_BtNIcbmbPV6j8Z-YDLQ9ckt4RzvGuzCTg034s,97250
|
|
@@ -80,7 +81,7 @@ ciocore/docsite/cmdline/downloader/index.html,sha256=nygj-0GQmpD79B5AxHjwzQxOFv8
|
|
|
80
81
|
ciocore/docsite/cmdline/packages/index.html,sha256=_kXB85PBAgrqW09OerYpxnJuyERHMbcLn6qBGRdyHwk,20923
|
|
81
82
|
ciocore/docsite/cmdline/uploader/index.html,sha256=vuQ06Gys9Eoxs87PXlqnM5AgB6Ag00BlDIy6oaprjis,25123
|
|
82
83
|
ciocore/docsite/how-to-guides/index.html,sha256=KifCHl2S3RfPBZhP1UXwUNWuhcXPlPPqM4Gk6rVGhjQ,20100
|
|
83
|
-
ciocore/docsite/search/search_index.json,sha256=
|
|
84
|
+
ciocore/docsite/search/search_index.json,sha256=vBLU-rkC0pxOPX0O3MNKXRKGfgsaS1-91KsV17Gf9SY,189092
|
|
84
85
|
ciocore/docsite/stylesheets/extra.css,sha256=_Cxe9Dhg1BBi6Kqaz_iZD9z9VyqxA9vtONRjP4PVic0,354
|
|
85
86
|
ciocore/docsite/stylesheets/tables.css,sha256=LE_zwGRxGcdPIy-9QiVPecOzlEBSqZb_WP5vDkFE0ZM,3235
|
|
86
87
|
ciocore/downloader/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -94,7 +95,8 @@ ciocore/downloader/perpetual_downloader.py,sha256=cD7lnBH75-c-ZVVPHZc1vSnDhgJOnG
|
|
|
94
95
|
ciocore/downloader/registry.py,sha256=_JIOuqpWkJkgJGN33nt-DCvqN9Gw3xeFhzPq4RUxIoE,2903
|
|
95
96
|
ciocore/downloader/reporter.py,sha256=p1NK9k6iQ-jt7lRvZR0xFz0cGb2yo8tQcjlvYKR9SWM,4501
|
|
96
97
|
ciocore/uploader/__init__.py,sha256=hxRFJf5Lo86rtRObFXSjjot8nybQd-SebSfYCbgZwow,24
|
|
97
|
-
ciocore/uploader/_uploader.py,sha256=
|
|
98
|
+
ciocore/uploader/_uploader.py,sha256=Xz1sos76FK-BKsgPuErlKQ8HsCAtBKp3pLbCtRVrr9E,38250
|
|
99
|
+
ciocore/uploader/thread_queue_job.py,sha256=MzOcetttfWtDfwy-M0_ARwUf8_OjaGjyy-dA_WgNTPE,3416
|
|
98
100
|
ciocore/uploader/upload_stats/__init__.py,sha256=Lg1y4zq1i0cwc6Hh2K1TAQDYymLff49W-uIo1xjcvdI,5309
|
|
99
101
|
ciocore/uploader/upload_stats/stats_formats.py,sha256=giNirtObU66VALWghPFSRhg3q_vw5MvESsnXhb_I3y8,2402
|
|
100
102
|
tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -102,12 +104,12 @@ tests/extra_env_fixtures.py,sha256=8qvU4d8SXGKzRVNR5whVqKCQOwOVMiFVfbKBAjxa2gE,1
|
|
|
102
104
|
tests/instance_type_fixtures.py,sha256=uIzQduqKQVgjllMuyXaYnRC-pwqk5lnTx3NY2M5Nujo,4320
|
|
103
105
|
tests/package_fixtures.py,sha256=od7ZHofG8ubpQ3PqlUsrcHBcbmD3qVWih9eiIg1WtSQ,5361
|
|
104
106
|
tests/project_fixtures.py,sha256=iBm_th_JtAw76vlNu7Jjhh9tLH4oOaNi-MgtPzCV7yQ,138
|
|
105
|
-
tests/test_api_client.py,sha256=
|
|
107
|
+
tests/test_api_client.py,sha256=4jhj-YrBPcLj7XZn3ngguau2DPxpCYGMSuqPJ3hW0GQ,14497
|
|
106
108
|
tests/test_base_downloader.py,sha256=SS7tWKv2ZZhpUDk4UCg1TkrNrpntjSewgzLl1mEubSE,3603
|
|
107
109
|
tests/test_cli.py,sha256=_WTs2SWlEgd6wtg1hmOBlFnbWVdFLvqp0KqNhy-y2e8,5532
|
|
108
|
-
tests/test_common.py,sha256=
|
|
109
|
-
tests/test_config.py,sha256
|
|
110
|
-
tests/test_data.py,sha256=
|
|
110
|
+
tests/test_common.py,sha256=tY_-SY-JmJX09UehFs9RIDqZ785AmhfTl6eVKJeIUFY,763
|
|
111
|
+
tests/test_config.py,sha256=-_G682Ss3Zr1FmcMkjla1zAZprX2tQKpKc5_wD28rII,13340
|
|
112
|
+
tests/test_data.py,sha256=NIBXpCjG3Os3vpc1CkiVONrebro8D_jqQyJ0N3kbucU,5433
|
|
111
113
|
tests/test_downloader.py,sha256=hceljsjnuvk5Vk5X4mHgavIEcpbv8ylPwpz7rTwJ-aE,4721
|
|
112
114
|
tests/test_hardware_set.py,sha256=hW7A_suyYdU7WkB7qoHSBPLxaAP2CKqI0i_ULfO5GeY,4408
|
|
113
115
|
tests/test_imports_2and3.py,sha256=ehqpRYPVY7djBcb8OT_cnh86iCJJ9wuMWnfSR9RHxmY,507
|
|
@@ -115,13 +117,13 @@ tests/test_job_downloader.py,sha256=_dZqyLZhc2Bq2n7-skERfodHx1JgFyHw8TamHp6ID9I,
|
|
|
115
117
|
tests/test_package_environment.py,sha256=CdiC2PDVSnbcwTb4fsDTWqGYSzs1n5ca2KMoyISckGA,5893
|
|
116
118
|
tests/test_package_query.py,sha256=LZqvCrGkWs0lMtIMumjDatX0ypeYYvabh_k1R0A6sS0,1451
|
|
117
119
|
tests/test_package_tree.py,sha256=K2kzJwRHCr6ojc4MZHjdH7VtmvG5O97OoH6vzwAE9GQ,6780
|
|
118
|
-
tests/test_submit.py,sha256=
|
|
119
|
-
tests/test_uploader.py,sha256=
|
|
120
|
+
tests/test_submit.py,sha256=ppijBcpLXeHUZh7UXyClxLalSV6cTfKb6Ygw5zXQPKo,5836
|
|
121
|
+
tests/test_uploader.py,sha256=B1llTJt_fqR6e_V_Jxfw9z73QgkFlEPU87xLYGzt-TQ,2914
|
|
120
122
|
tests/test_validator.py,sha256=2fY66ayNc08PGyj2vTI-V_1yeCWJDngkj2zkUM5TTCI,1526
|
|
121
123
|
tests/mocks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
122
124
|
tests/mocks/glob.py,sha256=J2MH7nqi6NJOHuGdVWxhfeBd700_Ckj6cLh_8jSNkfg,215
|
|
123
|
-
ciocore-9.
|
|
124
|
-
ciocore-9.
|
|
125
|
-
ciocore-9.
|
|
126
|
-
ciocore-9.
|
|
127
|
-
ciocore-9.
|
|
125
|
+
ciocore-9.1.0b1.dist-info/METADATA,sha256=jd_61cbX9eiHy2SgX19hXCdf-gqvcvaOJP_gOwZVG-M,19085
|
|
126
|
+
ciocore-9.1.0b1.dist-info/WHEEL,sha256=qUzzGenXXuJTzyjFah76kDVqDvnk-YDzY00svnrl84w,109
|
|
127
|
+
ciocore-9.1.0b1.dist-info/entry_points.txt,sha256=cCqcALMYbC4d8545V9w0Zysfg9MVuKWhzDQ2er4UfGE,47
|
|
128
|
+
ciocore-9.1.0b1.dist-info/top_level.txt,sha256=SvlM5JlqULzAz00JZWfiUhfjhqDzYzSWssA87zdJl0o,14
|
|
129
|
+
ciocore-9.1.0b1.dist-info/RECORD,,
|
tests/test_api_client.py
CHANGED
tests/test_common.py
CHANGED
|
@@ -9,7 +9,17 @@ FILES_PATH = os.path.join(os.path.dirname(__file__), "files")
|
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
class TestMd5(unittest.TestCase):
|
|
12
|
-
|
|
12
|
+
|
|
13
|
+
# def test_get_base64_md5_is_correct_md5(self):
|
|
14
|
+
# from ciocore import common
|
|
15
|
+
# fn1 = os.path.join(FILES_PATH, "one")
|
|
16
|
+
# md5=common.get_base64_md5(fn1)
|
|
17
|
+
# if os.name == "nt":
|
|
18
|
+
# self.assertEqual(md5, "w8F8opHbdwHIozghPc63XA==")
|
|
19
|
+
# else:
|
|
20
|
+
# self.assertEqual(md5, "9iVbsBxkj+lncU1SqJ6OnA==")
|
|
21
|
+
|
|
22
|
+
|
|
13
23
|
def test_get_base64_md5_is_correct_type(self):
|
|
14
24
|
from ciocore import common
|
|
15
25
|
from builtins import str
|
tests/test_config.py
CHANGED
|
@@ -6,7 +6,10 @@ import sys
|
|
|
6
6
|
import os
|
|
7
7
|
import logging
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
try:
|
|
10
|
+
from unittest import mock
|
|
11
|
+
except ImportError:
|
|
12
|
+
import mock
|
|
10
13
|
|
|
11
14
|
APIKEY = '{"auth_provider_x509_cert_url": "https://www.exampleapis.com/oauth2/v1/certs", "auth_uri": "https://accounts.example.com/o/oauth2/auth", "client_email": "account-5641301770895360@eloquent-vector-104019.iam.gserviceaccount.com", "client_id": "106815243682887997903", "client_x509_cert_url": "https://www.exampleapis.com/robot/v1/metadata/x509/account-5641301770895360%40eloquent-vector-104019.iam.gserviceaccount.com", "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDcadqRWyd7VpYN\n804fEn07qlqNXU0ihz6g2dfbj9gzZDhHGVCI5QvPFskAQcV91k8cDdFu380m+sh1\nz9wlcdaM/lksRV/DRJiV76qrqyrNi0gSekZUuYhSsyMWUGvG4aSbf5BzVf1j8W4I\nUArH+ht5pgdSjowNc4zQIqmMH2XY+Ntr+NysBBfIv1PI6GoHFgDYOTSzsvz0qFYS\nWuonYGTjzNz4CY9Yh5ki8iq0/ijKzpUWeRUkpK9uF7WBoxrj3EyFFHejtfhVX2l0\n2KxrIF0kkmy5nmxVUck76FqdQ6vyvaHudREd3z/08hgdYogemQUTKFE/0LQmKuBV\nIJipPvORAgMBAAECggEAZvPMozN8LBikC00XstzMgRePp1MqydN5NeG6+TPlrQ+F\nV/RjkSXHT8oZRdTy3dXB6t0rc4n2xdvC0YCvGBBlwkK1vT+EPO2oBfTF99yCKDME\nDZlui3mDyvkgjPYweVuBKx65Bp5mNo4ZMqnMd18EAVxDM9UgZtIPtlJSdoBd7qtk\nyCGr03l+SV0krmvPV+KS9vyDOg/7Km5gMhTMaIveNyS1pG6AmZ0ggQA5djg/P2iF\nxGwYdvfADY5cBzg0OG5ELv9hvyA4CKN6RLfYv3JJS2gbNaMknjmsjaM/p0LtE2HL\n+uFPL0ZjoMwV3BlEFQIHwhNWS63H43ISBa1/2XvGPwKBgQDw4a4kQ9+Ce3edWonz\n3Fm/3no+HrMSVjbv28qphAHMFrSUdbMejQm4QSbNeOW1pEcVvW21u8tYagrJEsaU\ns4DulFXRep36teVDWpc1FrNowWEPPVeC8CO74VfssK1h2Itqis8JPbzXOcNtSH9+\nAg1EvrB9XnyEvJuM6GOGo3juTwKBgQDqP058+H3iSZe6al4P6Ib3g/82nr2dHeN5\n4xxGu1fzTMNX5lopbNji6tQcsMoMVPdOvCQy5c0PEUbvo7mxfZ8fOZwgBjIcXbYg\nzIJkPTSv7nxSE5M5lW5juzLkdq2k5k0qt9ByWuWEA3PSn/DEANa5888phSCoJSw/\nPjpwHhZoHwKBgQDCoQbMxI6e5lYCrToT8PIPhpptAO8dnM2sxoGcsE2ncp0b63H7\n+GdnGjVZBhtMxdyt4y33DjLCUIRAbUxIsDU4EGC67oEhJsGEx3iva5Uwyjc7UgwY\nfyHQV8ZsN2EQUyBqyJd6VwjzOff+n/prfQrthcoisiqYMbDZjJeGHSXEHwKBgAo4\nBsmG4Z78jOTx/PZ+s1ya4ohUdnsjMahAkxw20ghoIeF0yBwkhnWnvucdg0L0dfF2\nXbHmuoJcw5ZyswgeLdHj5n6zJn58TBS0Nz/+N40xPzUpa3PIpA8vvHGhB8Q408b4\nS9yhQH/40pWuqocybiugijoKd7k+HecIZO49MccLAoGBAPDScJHSxKPW6wJKjxDC\nXXWWQ2flbwv4Sja487QV/trWMSRnHJHnCVHqv/F7ThPaoHM+MJSzrJ7wr/CJhk0H\noEt+0Rn6qPd/A36bSjTfXMFLXWi75ovek+IJGKxr7B46jrcS/oe1XIIOlV1+OvOY\nVoO6vgYkPhpMkth2hyZ/luea\n-----END PRIVATE KEY-----\n", "private_key_id": "3dfe3bdc40d4dc431d283bf22feb113c9b622dd3", "project_id": "eloquent-vector-104019", "token_uri": "https://oauth2.exampleapis.com/token", "type": "service_account"}'
|
|
12
15
|
|
tests/test_data.py
CHANGED
tests/test_submit.py
CHANGED
tests/test_uploader.py
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|