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.

Binary file
ciocore/package_tree.py CHANGED
@@ -290,6 +290,10 @@ class PackageTree(object):
290
290
  def __bool__(self):
291
291
  return True if self._tree["children"] else False
292
292
 
293
+ def __nonzero__(self):
294
+ # Python 2.7
295
+ return self.__bool__()
296
+
293
297
  def as_dict(self):
294
298
  """
295
299
  Returns:
@@ -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 and not self.manager.error:
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
- num_active_threads = len([thd for thd in worker_threads if thd.is_alive()])
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.0.0b2
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>=2.31.0
13
- Requires-Dist: pyjwt==2.9.0
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=e7b7GJz44Hd6emuQcgfrIGtfwzF3N98xAT6OKsX1sRE,12
1
+ ciocore/VERSION,sha256=TCUlj36m9-VV6atKK8EETx-2I8BQY_6CSKTVDGTHeqo,12
2
2
  ciocore/__init__.py,sha256=aTP7LeeosQA8BZE67gDV4jgfTK5zxmwZRjiTRu_ZWj0,646
3
- ciocore/api_client.py,sha256=XuTON9guZ8a4DMJlU2U2O3RHkimriXG20NJMNi-LGCY,32902
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=FDKHxYZS8ZAkz3hpjMYFy-P8hwU1V9w4wA7gNqhruqs,15569
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=3C4KJuBTdeqvMWdBn3cRnTju5dUjNKG0OGtHp0SZ4l8,21613
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=kwrVA-e-YnpIkhePqDzoqyW7P-aZd0a6d9_dx9Mdv08,127
29
- ciocore/docsite/apidoc/api_client/index.html,sha256=_aLYBFhVNk2VtDAoC7vTeKisdh2BVN39VnVvlk4SlAk,188875
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=5_4vV8x_GmpsyWHnMP62gBaAcdzfM7L-mP7uQKh_DH4,109054
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=_jxoQQikc4cA_9YiODWM6TBSyWdgReOMtlZpSbB1fi0,189108
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=40nzqO5DuFi4sx31VvjWxZPNkrWsWqM9jtFVxs_-o3o,37479
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=isntMDs3QTyTWdghBa_LbFAiC7ydZD1RWb655oEZo24,14452
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=5N9xeeGVuwN4kcjIg30eBliUD8PePzCNNLuLipGuTgk,410
109
- tests/test_config.py,sha256=iiMPwoVA9C3vvGGR6_gKKMbYkSxheNLdljeOA-iPrJU,13295
110
- tests/test_data.py,sha256=u9XS4xOXugKNwuHBuQl3TxjZi7zybs6X9yq40r6XbzY,5388
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=v75ciL-C0XjiO7wUFQvYBZj0UoqhYOmTLa8TiUyhKqw,5769
119
- tests/test_uploader.py,sha256=JGp6GEyqRXRtbQSb-IW-cCX_BzNotWdCbnJnLwZvpUM,2869
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.0.0b2.dist-info/METADATA,sha256=7bbe60ozciKLWntbeZqWmTh_jtrOAPpmoiLN4s-p6Io,18918
124
- ciocore-9.0.0b2.dist-info/WHEEL,sha256=qUzzGenXXuJTzyjFah76kDVqDvnk-YDzY00svnrl84w,109
125
- ciocore-9.0.0b2.dist-info/entry_points.txt,sha256=cCqcALMYbC4d8545V9w0Zysfg9MVuKWhzDQ2er4UfGE,47
126
- ciocore-9.0.0b2.dist-info/top_level.txt,sha256=SvlM5JlqULzAz00JZWfiUhfjhqDzYzSWssA87zdJl0o,14
127
- ciocore-9.0.0b2.dist-info/RECORD,,
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
@@ -7,7 +7,10 @@ import json
7
7
  import sys
8
8
  import unittest
9
9
 
10
- from unittest import mock
10
+ try:
11
+ from unittest import mock
12
+ except ImportError:
13
+ import mock
11
14
 
12
15
  from ciocore import api_client
13
16
 
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
- from unittest import mock
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
@@ -5,7 +5,10 @@
5
5
 
6
6
  import unittest
7
7
 
8
- from unittest import mock
8
+ try:
9
+ from unittest import mock
10
+ except ImportError:
11
+ import mock
9
12
 
10
13
  from ciocore import data
11
14
 
tests/test_submit.py CHANGED
@@ -5,7 +5,10 @@
5
5
 
6
6
  import unittest
7
7
 
8
- from unittest.mock import MagicMock, patch
8
+ try:
9
+ from unittest.mock import MagicMock, patch
10
+ except ImportError:
11
+ from mock import MagicMock, patch
9
12
 
10
13
 
11
14
  def get_required_args():
tests/test_uploader.py CHANGED
@@ -1,7 +1,10 @@
1
1
  import unittest
2
2
  import sys
3
3
 
4
- from unittest import mock
4
+ try:
5
+ from unittest import mock
6
+ except ImportError:
7
+ import mock
5
8
 
6
9
  PY3 = sys.version_info >= (3, 0)
7
10
  BUILTIN_OPEN = "builtins.open" if PY3 else "__builtin__.open"