ciocore 5.1.1__py2.py3-none-any.whl → 10.0.0b3__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.
- ciocore/VERSION +1 -1
- ciocore/__init__.py +23 -1
- ciocore/api_client.py +655 -160
- ciocore/auth/__init__.py +5 -3
- ciocore/cli.py +501 -0
- ciocore/common.py +15 -13
- ciocore/conductor_submit.py +77 -60
- ciocore/config.py +127 -13
- ciocore/data.py +162 -77
- ciocore/docsite/404.html +746 -0
- ciocore/docsite/apidoc/api_client/index.html +3605 -0
- ciocore/docsite/apidoc/apidoc/index.html +909 -0
- ciocore/docsite/apidoc/config/index.html +1652 -0
- ciocore/docsite/apidoc/data/index.html +1553 -0
- ciocore/docsite/apidoc/hardware_set/index.html +2460 -0
- ciocore/docsite/apidoc/package_environment/index.html +1507 -0
- ciocore/docsite/apidoc/package_tree/index.html +2386 -0
- ciocore/docsite/assets/_mkdocstrings.css +16 -0
- ciocore/docsite/assets/images/favicon.png +0 -0
- ciocore/docsite/assets/javascripts/bundle.471ce7a9.min.js +29 -0
- ciocore/docsite/assets/javascripts/bundle.471ce7a9.min.js.map +7 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.ar.min.js +1 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.da.min.js +18 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.de.min.js +18 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.du.min.js +18 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.el.min.js +1 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.es.min.js +18 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.fi.min.js +18 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.fr.min.js +18 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.he.min.js +1 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.hi.min.js +1 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.hu.min.js +18 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.hy.min.js +1 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.it.min.js +18 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.ja.min.js +1 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.jp.min.js +1 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.kn.min.js +1 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.ko.min.js +1 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.multi.min.js +1 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.nl.min.js +18 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.no.min.js +18 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.pt.min.js +18 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.ro.min.js +18 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.ru.min.js +18 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.sa.min.js +1 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.stemmer.support.min.js +1 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.sv.min.js +18 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.ta.min.js +1 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.te.min.js +1 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.th.min.js +1 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.tr.min.js +18 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.vi.min.js +1 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.zh.min.js +1 -0
- ciocore/docsite/assets/javascripts/lunr/tinyseg.js +206 -0
- ciocore/docsite/assets/javascripts/lunr/wordcut.js +6708 -0
- ciocore/docsite/assets/javascripts/workers/search.b8dbb3d2.min.js +42 -0
- ciocore/docsite/assets/javascripts/workers/search.b8dbb3d2.min.js.map +7 -0
- ciocore/docsite/assets/stylesheets/main.3cba04c6.min.css +1 -0
- ciocore/docsite/assets/stylesheets/main.3cba04c6.min.css.map +1 -0
- ciocore/docsite/assets/stylesheets/palette.06af60db.min.css +1 -0
- ciocore/docsite/assets/stylesheets/palette.06af60db.min.css.map +1 -0
- ciocore/docsite/cmdline/docs/index.html +871 -0
- ciocore/docsite/cmdline/downloader/index.html +934 -0
- ciocore/docsite/cmdline/packages/index.html +878 -0
- ciocore/docsite/cmdline/uploader/index.html +995 -0
- ciocore/docsite/how-to-guides/index.html +869 -0
- ciocore/docsite/index.html +895 -0
- ciocore/docsite/logo.png +0 -0
- ciocore/docsite/objects.inv +0 -0
- ciocore/docsite/search/search_index.json +1 -0
- ciocore/docsite/sitemap.xml +3 -0
- ciocore/docsite/sitemap.xml.gz +0 -0
- ciocore/docsite/stylesheets/extra.css +26 -0
- ciocore/docsite/stylesheets/tables.css +167 -0
- ciocore/downloader/base_downloader.py +644 -0
- ciocore/downloader/download_runner_base.py +47 -0
- ciocore/downloader/job_downloader.py +119 -0
- ciocore/{downloader.py → downloader/legacy_downloader.py} +12 -9
- ciocore/downloader/log.py +73 -0
- ciocore/downloader/logging_download_runner.py +87 -0
- ciocore/downloader/perpetual_downloader.py +63 -0
- ciocore/downloader/registry.py +97 -0
- ciocore/downloader/reporter.py +135 -0
- ciocore/exceptions.py +8 -2
- ciocore/file_utils.py +51 -50
- ciocore/hardware_set.py +449 -0
- ciocore/loggeria.py +89 -20
- ciocore/package_environment.py +110 -48
- ciocore/package_query.py +182 -0
- ciocore/package_tree.py +319 -258
- ciocore/retry.py +0 -0
- ciocore/uploader/_uploader.py +547 -364
- ciocore/uploader/thread_queue_job.py +176 -0
- ciocore/uploader/upload_stats/__init__.py +3 -4
- ciocore/uploader/upload_stats/stats_formats.py +10 -4
- ciocore/validator.py +34 -2
- ciocore/worker.py +174 -151
- ciocore-10.0.0b3.dist-info/METADATA +928 -0
- ciocore-10.0.0b3.dist-info/RECORD +128 -0
- {ciocore-5.1.1.dist-info → ciocore-10.0.0b3.dist-info}/WHEEL +1 -1
- ciocore-10.0.0b3.dist-info/entry_points.txt +2 -0
- tests/instance_type_fixtures.py +175 -0
- tests/package_fixtures.py +205 -0
- tests/test_api_client.py +297 -12
- tests/test_base_downloader.py +104 -0
- tests/test_cli.py +149 -0
- tests/test_common.py +1 -7
- tests/test_config.py +40 -18
- tests/test_data.py +162 -173
- tests/test_downloader.py +118 -0
- tests/test_hardware_set.py +139 -0
- tests/test_job_downloader.py +213 -0
- tests/test_package_query.py +38 -0
- tests/test_package_tree.py +91 -291
- tests/test_submit.py +44 -18
- tests/test_uploader.py +1 -4
- ciocore/__about__.py +0 -10
- ciocore/cli/conductor.py +0 -191
- ciocore/compat.py +0 -15
- ciocore-5.1.1.data/scripts/conductor +0 -19
- ciocore-5.1.1.data/scripts/conductor.bat +0 -13
- ciocore-5.1.1.dist-info/METADATA +0 -408
- ciocore-5.1.1.dist-info/RECORD +0 -47
- tests/mocks/api_client_mock.py +0 -51
- /ciocore/{cli → downloader}/__init__.py +0 -0
- {ciocore-5.1.1.dist-info → ciocore-10.0.0b3.dist-info}/top_level.txt +0 -0
ciocore/cli/conductor.py
DELETED
|
@@ -1,191 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python
|
|
2
|
-
# Use absolute imports to avoid a "conductor" name clash (this module name vs conductor package).
|
|
3
|
-
from __future__ import absolute_import
|
|
4
|
-
|
|
5
|
-
import argparse
|
|
6
|
-
import os
|
|
7
|
-
import sys
|
|
8
|
-
|
|
9
|
-
sys.path.append(os.path.dirname(os.path.dirname(__file__)))
|
|
10
|
-
|
|
11
|
-
from ciocore import downloader, uploader, loggeria, config
|
|
12
|
-
|
|
13
|
-
def parse_args():
|
|
14
|
-
cfg = config.config().config
|
|
15
|
-
|
|
16
|
-
# Create a parent parser. Arguments that are common across all subparsers can be added to this parser
|
|
17
|
-
parent_parser = argparse.ArgumentParser(add_help=False)
|
|
18
|
-
|
|
19
|
-
# create the main parser. Not sure why this parser is required, but got parsing tracebacks when excluding it (it gets confused about the arguments provided)
|
|
20
|
-
parser = argparse.ArgumentParser(description="description")
|
|
21
|
-
subparsers = parser.add_subparsers(title="actions")
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
#############################
|
|
25
|
-
# UPLOADER PARSER
|
|
26
|
-
#############################
|
|
27
|
-
uploader_parser_desciption = "parse uploader arguments"
|
|
28
|
-
uploader_parser_help = ""
|
|
29
|
-
|
|
30
|
-
uploader_parser = subparsers.add_parser("uploader", parents=[parent_parser],
|
|
31
|
-
help=uploader_parser_help,
|
|
32
|
-
description=uploader_parser_desciption,
|
|
33
|
-
formatter_class=argparse.RawTextHelpFormatter)
|
|
34
|
-
|
|
35
|
-
uploader_parser.add_argument("--database_filepath",
|
|
36
|
-
help=("The filepath to the local md5 caching database. If no filepath "
|
|
37
|
-
"is specified, the database will be created in a temp directory"))
|
|
38
|
-
|
|
39
|
-
uploader_parser.add_argument("--location",
|
|
40
|
-
help=('An optional string to indicate which location this uploader '
|
|
41
|
-
'executable should register as. This option is only relevant '
|
|
42
|
-
'for conductor accounts which submits jobs from different locations '
|
|
43
|
-
'(e.g. differing geographic locations or office locations that have differing file systems).'
|
|
44
|
-
' Typically each location would have its own conductor uploader process running. This location '
|
|
45
|
-
'string allows each uploader to target specific upload jobs (files to upload) that are appropriate '
|
|
46
|
-
'for it. This is potentially useful as each location may have differing file systems '
|
|
47
|
-
'available to it (e.g. uploader1 has /filesystem1 available to it, but uploader2 only '
|
|
48
|
-
'has /filesystem2 available to it). In this case uploader1 should only upload files '
|
|
49
|
-
'that exist on /filesystem1 and uploader2 should only upload files that exist on /filesystem2. '
|
|
50
|
-
'This is achieved by including a location argument (such as "location1" or "location2") '
|
|
51
|
-
'when submitting jobs, as well as when launching this uploader command.'))
|
|
52
|
-
|
|
53
|
-
uploader_parser.add_argument("--md5_caching",
|
|
54
|
-
help=("Use cached md5s. This can dramatically improve the uploading "
|
|
55
|
-
"times, as md5 checking can be very time consuming. Caching md5s "
|
|
56
|
-
"allows subsequent uploads (of the same files) to skip the "
|
|
57
|
-
"md5 generation process (if the files appear to not have been "
|
|
58
|
-
"modified since the last time they were submitted). The cache is "
|
|
59
|
-
"stored locally and uses a file's modification time and file size "
|
|
60
|
-
"to intelligently guess whether the file has changed. Set this "
|
|
61
|
-
"flag to False if there is concern that files may not be getting "
|
|
62
|
-
"re-uploaded properly"),
|
|
63
|
-
choices=[False, True],
|
|
64
|
-
type=cast_to_bool,
|
|
65
|
-
default=None)
|
|
66
|
-
|
|
67
|
-
uploader_parser.add_argument("--log_level",
|
|
68
|
-
choices=loggeria.LEVELS,
|
|
69
|
-
help="The logging level to display")
|
|
70
|
-
|
|
71
|
-
uploader_parser.add_argument("--log_dir",
|
|
72
|
-
help=("When provided, will write a log file to "
|
|
73
|
-
"the provided directory. This will be a "
|
|
74
|
-
"rotating log, creating a new log file "
|
|
75
|
-
"everyday, while storing the last 7 days "
|
|
76
|
-
"of logs"))
|
|
77
|
-
|
|
78
|
-
uploader_parser.add_argument("--thread_count",
|
|
79
|
-
type=int,
|
|
80
|
-
default=cfg["thread_count"],
|
|
81
|
-
help=('The number of threads that should download simultaneously'))
|
|
82
|
-
|
|
83
|
-
uploader_parser.set_defaults(func=run_uploader)
|
|
84
|
-
|
|
85
|
-
#############################
|
|
86
|
-
# DOWNLOADER PARSER
|
|
87
|
-
#############################
|
|
88
|
-
|
|
89
|
-
downloader_parser_desciption = "parse downloader arguments"
|
|
90
|
-
downloader_parser_help = ""
|
|
91
|
-
|
|
92
|
-
downloader_parser = subparsers.add_parser("downloader", parents=[parent_parser],
|
|
93
|
-
help=downloader_parser_help,
|
|
94
|
-
description=downloader_parser_desciption,
|
|
95
|
-
formatter_class=argparse.RawTextHelpFormatter)
|
|
96
|
-
|
|
97
|
-
downloader_parser.add_argument("--job_id",
|
|
98
|
-
help=("The job id(s) to download. When specified "
|
|
99
|
-
"will only download those jobs and terminate "
|
|
100
|
-
"afterwards"),
|
|
101
|
-
action='append')
|
|
102
|
-
|
|
103
|
-
downloader_parser.add_argument("--task_id",
|
|
104
|
-
help="Manually download output for specific tasks - use a comma-separated list of tasks if you wish")
|
|
105
|
-
|
|
106
|
-
downloader_parser.add_argument("--output",
|
|
107
|
-
help="Override for the output directory")
|
|
108
|
-
|
|
109
|
-
downloader_parser.add_argument("--location",
|
|
110
|
-
help=('An optional string to indicate which location this downloader '
|
|
111
|
-
'executable should register as. This option is only relevant for '
|
|
112
|
-
'conductor accounts which submits jobs from different locations '
|
|
113
|
-
'(e.g. differing geographic locations or office locations that '
|
|
114
|
-
'have differing file systems). Typically each location would '
|
|
115
|
-
'have its own conductor downloader process running. This location '
|
|
116
|
-
'argument allows each downloader to target specific jobs (to '
|
|
117
|
-
'download upon job-completion) that match its appropriate location. '
|
|
118
|
-
'Essentially this allows the location of which a job was submitted '
|
|
119
|
-
'from to also be the destination in which to deliver completed '
|
|
120
|
-
'renders to (which would typically be the desired behavior).'))
|
|
121
|
-
|
|
122
|
-
downloader_parser.add_argument("--project",
|
|
123
|
-
help=('An optional string to indicate which project that this downloader executable should register as.'))
|
|
124
|
-
|
|
125
|
-
downloader_parser.add_argument("--log_level",
|
|
126
|
-
choices=loggeria.LEVELS,
|
|
127
|
-
default=cfg["log_level"],
|
|
128
|
-
help="The logging level to display")
|
|
129
|
-
|
|
130
|
-
downloader_parser.add_argument("--log_dir",
|
|
131
|
-
help=("When provided, will write a log file to "
|
|
132
|
-
"the provided directory. This will be a "
|
|
133
|
-
"rotating log, creating a new log file "
|
|
134
|
-
"everyday, while storing the last 7 days "
|
|
135
|
-
"of logs"))
|
|
136
|
-
|
|
137
|
-
downloader_parser.add_argument("--thread_count",
|
|
138
|
-
type=int,
|
|
139
|
-
default=cfg["thread_count"],
|
|
140
|
-
help=('The number of threads that should download simultaneously'))
|
|
141
|
-
|
|
142
|
-
downloader_parser.add_argument("--alt",
|
|
143
|
-
help=('Run an alternative version of the downloader'),
|
|
144
|
-
action='store_true')
|
|
145
|
-
|
|
146
|
-
downloader_parser.set_defaults(func=run_downloader)
|
|
147
|
-
|
|
148
|
-
return parser.parse_args()
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
def cast_to_bool(string):
|
|
152
|
-
'''
|
|
153
|
-
Ensure that the argument provided is either "True" or "False (or "true" or
|
|
154
|
-
"false") and convert that argument to an actual bool value (True or False).
|
|
155
|
-
'''
|
|
156
|
-
string_lower = string.lower()
|
|
157
|
-
if string_lower == "true":
|
|
158
|
-
return True
|
|
159
|
-
elif string_lower == "false":
|
|
160
|
-
return False
|
|
161
|
-
raise argparse.ArgumentTypeError('Argument must be True or False')
|
|
162
|
-
|
|
163
|
-
def run_uploader(args):
|
|
164
|
-
uploader.run_uploader(args)
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
def run_downloader(args):
|
|
168
|
-
'''
|
|
169
|
-
Convert the argparse Namespace object to a dictionary and run the downloader
|
|
170
|
-
with the given args.
|
|
171
|
-
'''
|
|
172
|
-
# Convert Namespace args object to args dict
|
|
173
|
-
args_dict = vars(args)
|
|
174
|
-
|
|
175
|
-
if args_dict.get("task_id") and not args_dict.get("job_id"):
|
|
176
|
-
raise argparse.ArgumentTypeError('Must supply a job_id with task_id.')
|
|
177
|
-
|
|
178
|
-
# New downloader broke in python 3. It was used only for linux and in
|
|
179
|
-
# daemon mode, so for now we'll use the old downloader for everything.
|
|
180
|
-
|
|
181
|
-
return downloader.run_downloader(args_dict)
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
def main():
|
|
185
|
-
args = parse_args()
|
|
186
|
-
args.func(args)
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
if __name__ == '__main__':
|
|
190
|
-
main()
|
|
191
|
-
|
ciocore/compat.py
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
#!python
|
|
2
|
-
# -*- coding: utf-8 -*-
|
|
3
|
-
# WHY CHANGE
|
|
4
|
-
|
|
5
|
-
# DO NOT SORT IMPORTS
|
|
6
|
-
import os
|
|
7
|
-
import re
|
|
8
|
-
import sys
|
|
9
|
-
|
|
10
|
-
CIO_DIR = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
|
|
11
|
-
sys.path.insert(0, CIO_DIR)
|
|
12
|
-
|
|
13
|
-
print("Inserted {} into sys.path".format(CIO_DIR))
|
|
14
|
-
|
|
15
|
-
from ciocore.cli.conductor import main
|
|
16
|
-
|
|
17
|
-
if __name__ == '__main__':
|
|
18
|
-
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
|
19
|
-
sys.exit(main())
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
@echo off
|
|
2
|
-
|
|
3
|
-
echo Looking for Python...
|
|
4
|
-
|
|
5
|
-
WHERE python.exe
|
|
6
|
-
if ERRORLEVEL 1 (
|
|
7
|
-
echo WARNING: python.exe not found.
|
|
8
|
-
echo Please find or install Python and add it to your Path variable. Then run this command again.
|
|
9
|
-
echo If you don't want to add python to your Path, then you can use the full path to a Python installation.
|
|
10
|
-
echo Example: "C:\some\tools\python\python.exe" "%~dp0conductor %*
|
|
11
|
-
exit /b
|
|
12
|
-
)
|
|
13
|
-
python.exe "%~dp0\conductor" %*
|
ciocore-5.1.1.dist-info/METADATA
DELETED
|
@@ -1,408 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.1
|
|
2
|
-
Name: ciocore
|
|
3
|
-
Version: 5.1.1
|
|
4
|
-
Summary: Core functionality for Conductor's client tools
|
|
5
|
-
Home-page: https://github.com/ConductorTechnologies/ciocore
|
|
6
|
-
Author: conductor
|
|
7
|
-
Author-email: info@conductortech.com
|
|
8
|
-
License: UNKNOWN
|
|
9
|
-
Platform: UNKNOWN
|
|
10
|
-
Classifier: Operating System :: OS Independent
|
|
11
|
-
Classifier: Programming Language :: Python
|
|
12
|
-
Classifier: Topic :: Multimedia :: Graphics :: 3D Rendering
|
|
13
|
-
Description-Content-Type: text/markdown
|
|
14
|
-
Requires-Dist: pyjwt (==1.7.1)
|
|
15
|
-
Requires-Dist: requests (<=2.25.1,>=2.10.0)
|
|
16
|
-
Requires-Dist: future (>=0.18.2)
|
|
17
|
-
|
|
18
|
-
# Conductor Core
|
|
19
|
-
|
|
20
|
-
Common Python libraries for Conductor Cloud rendering service.
|
|
21
|
-
|
|
22
|
-
## Install
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
**To install the latest version.**
|
|
26
|
-
```bash
|
|
27
|
-
pip install --upgrade ciocore --target=$HOME/Conductor
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
**To install a specific version, for example 0.1.0.**
|
|
31
|
-
```bash
|
|
32
|
-
pip install --upgrade --force-reinstall ciocore==0.1.0 --target=$HOME/Conductor
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
Run the conductor command to confirm the package was installed.
|
|
36
|
-
```
|
|
37
|
-
$HOME/ConductorStaging/bin/conductor --help
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
To use the Python API, you must either set the PYTHONPATH or pip install, possibly to a virtualenv.
|
|
41
|
-
|
|
42
|
-
Option 1. PYTHONPATH
|
|
43
|
-
```bash
|
|
44
|
-
export PYTHONPATH=${HOME}/Conductor && python
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
Option 2. Pip install to venv.
|
|
48
|
-
|
|
49
|
-
```bash
|
|
50
|
-
# Create.
|
|
51
|
-
python3.9 -m venv ~/venvs/cioapi
|
|
52
|
-
|
|
53
|
-
# activate
|
|
54
|
-
. ~/venvs/cioapi/bin/activate
|
|
55
|
-
|
|
56
|
-
pip install --upgrade .
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
Example API usage from.
|
|
62
|
-
```
|
|
63
|
-
from ciocore import api_client
|
|
64
|
-
|
|
65
|
-
print api_client.request_software_packages()[0]
|
|
66
|
-
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
## Contributing
|
|
70
|
-
|
|
71
|
-
Clone the repo.
|
|
72
|
-
|
|
73
|
-
```
|
|
74
|
-
git clone git@github.com:ConductorTechnologies/ciocore.git
|
|
75
|
-
cd ciocore
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
Set up a clean virtual envirionment for development (optional).
|
|
79
|
-
|
|
80
|
-
```
|
|
81
|
-
python -m virtualenv venv
|
|
82
|
-
. ./venv/bin/activate
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
Install development dependencies
|
|
86
|
-
```
|
|
87
|
-
pip install -r requirements_dev.txt
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
Run the automated tests
|
|
91
|
-
```
|
|
92
|
-
tox
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
Build and install from this directory into to a convenient location for testing.
|
|
96
|
-
```
|
|
97
|
-
pip install --upgrade . --target=$HOME/ConductorStaging
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
See above for information on the conductor command and the Python API.
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
## License
|
|
104
|
-
[MIT](https://choosealicense.com/licenses/mit)
|
|
105
|
-
|
|
106
|
-
## Changelog
|
|
107
|
-
|
|
108
|
-
### Version:5.1.1 -- 05 Apr 2022
|
|
109
|
-
|
|
110
|
-
* Ensures the base64 strings are represented as strings. [be95b83]
|
|
111
|
-
|
|
112
|
-
### Version:5.1.0 -- 05 Apr 2022
|
|
113
|
-
|
|
114
|
-
* Adds registering the uploader and downloader for the user agent. [18a0a7c]
|
|
115
|
-
* Adds the user-agent http header to all requests. [6b452c5]
|
|
116
|
-
|
|
117
|
-
### Version:5.0.1 -- 31 Mar 2022
|
|
118
|
-
|
|
119
|
-
* In developer mode we add X drive letter if submitting to a windows target. [bc91524]
|
|
120
|
-
* Adds Packagetree platform filtering.
|
|
121
|
-
* Add all=true to the r4equest for packages in order to get Windows packages included. [2735781]
|
|
122
|
-
* ciocore.data singleton ensures that no windows -packages are provided if there are no windows
|
|
123
|
-
instance types, and vice versa.
|
|
124
|
-
* Remove urllib constraint because pip complained. Might have to add this back if we get weird breakages. [4e34359]
|
|
125
|
-
|
|
126
|
-
### Version:5.0.0-rc.1 -- 18 Mar 2022
|
|
127
|
-
|
|
128
|
-
* This version contains breaking changes. Clients should be upgraded.
|
|
129
|
-
* PackageTree now supports platform suffixes.
|
|
130
|
-
* The singleton that brings together inst_types and packages now filter's each automatically based on platforms provided by the other.
|
|
131
|
-
* Improvements to PackageEnvironment, including a constraint to prevent a merge_policy change, and platform detection for correct path separator.
|
|
132
|
-
* Better validation for the value of the CONDUCTOR_URL variable.
|
|
133
|
-
* Several uploader improvements, including support for reporting progress to external threads and gracefull cancelling the upload process.
|
|
134
|
-
|
|
135
|
-
### Version:4.0.7 -- 10 Mar 2022
|
|
136
|
-
|
|
137
|
-
* Adds a flag to propogate log properties. [dc12f84]
|
|
138
|
-
|
|
139
|
-
### Version:4.0.6 -- 03 Mar 2022
|
|
140
|
-
|
|
141
|
-
* Removes automatic setup of logging. adds an option to disable console logging during setup. [9194b4b]
|
|
142
|
-
|
|
143
|
-
### Version:3.4.1 -- 03 Mar 2022
|
|
144
|
-
|
|
145
|
-
* Adds a centralized py2/3 compatible reload logic. [1f5db2a]
|
|
146
|
-
* Avoid validators being duplicated
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
### Version:3.2.4 -- 27 Jan 2022
|
|
150
|
-
|
|
151
|
-
* Corrects very poor downloader performance in Python3 when runing in daemon mode.
|
|
152
|
-
|
|
153
|
-
### Version:3.2.3 -- 13 Jan 2022
|
|
154
|
-
|
|
155
|
-
* Repaired broken uploader args resolution. Specifically, md5 caching was None by default, which was treated as OFF. [615bfbe]
|
|
156
|
-
|
|
157
|
-
### Version:3.1.0 -- 16 Nov 2021
|
|
158
|
-
|
|
159
|
-
* Adds a post_install script to reset the shebang. This avoids errors that could occur when the
|
|
160
|
-
Python installation in Companion is changed or removed. [3918011]
|
|
161
|
-
* Conductor cmd-line now asks for python 3. [093d9ea]
|
|
162
|
-
|
|
163
|
-
### Version:3.0.11 -- 21 Oct 2021
|
|
164
|
-
|
|
165
|
-
* Rename original downloader to downloader and remove linux daemon downloader version. [6b54566]
|
|
166
|
-
* Use a fallback folder for downloads if the output folder doesn't exist. Also support a comma
|
|
167
|
-
separated task id list. [fb40e8d]
|
|
168
|
-
* conductor command finds python on Windows in a cleaner way now. [0ab3261]
|
|
169
|
-
|
|
170
|
-
### Version:3.0.10 -- 01 Sep 2021
|
|
171
|
-
|
|
172
|
-
* The Windows bat command is simplified. It just tries to use python.exe in the path, and if it fails it provides some help. [0ab3261]
|
|
173
|
-
|
|
174
|
-
### Version:3.0.9 -- 27 Aug 2021
|
|
175
|
-
|
|
176
|
-
* Fixes a bug where DCCs on Windows using Python2 would fail to upload because the result of a file
|
|
177
|
-
stat size was a long, and long was erroneousl removed from the type check while converting to python 3 compatibility.
|
|
178
|
-
|
|
179
|
-
### Version:3.0.7 -- 03 Aug 2021
|
|
180
|
-
|
|
181
|
-
* Fix urllib version because of an error when using proxies. See https://stackoverflow.com/a/66669839/179412 [b89593e]
|
|
182
|
-
* Keep auth_url for backwards compat. [1bfe5ed]
|
|
183
|
-
* Eliminate use of project_url such as atomic-light-001. [b687f7a]
|
|
184
|
-
|
|
185
|
-
### Version:3.0.6 -- 20 Jul 2021
|
|
186
|
-
|
|
187
|
-
* Fixed a bug where filenames and md5s were failing assertions in py2 based hosts, like C4DR21 and Maya2019. [0ad6a88]
|
|
188
|
-
|
|
189
|
-
### Version:3.0.5 -- 19 Jul 2021
|
|
190
|
-
|
|
191
|
-
* Requests exceptions attrs changed, so we now use a try except block for both eventualities. [5f198c8]
|
|
192
|
-
* Keep requests under 2.25.1 for m19 because chardet is replaced in 2.26.0 with a buggy replacement charset_normalizer. [f5ebadb]
|
|
193
|
-
|
|
194
|
-
### Version:3.0.4 -- 17 Jul 2021
|
|
195
|
-
|
|
196
|
-
* Fixed bug where server.py global vars were not reset at start of an auth run(). This caused a
|
|
197
|
-
problem when credentials were manually deleted during a single python session, which could happen
|
|
198
|
-
if we suggest that course of action in a support session. [6b4132c]
|
|
199
|
-
|
|
200
|
-
### Version:3.0.3 -- 12 Jul 2021
|
|
201
|
-
|
|
202
|
-
* Threading Isalive function was renamed to is_alive in py 3.9, so we now try both. [0070709]
|
|
203
|
-
* Disable multiprocessing cached bearer token in order to work around a bug in c4d24, where the app
|
|
204
|
-
itself would respawn recursively if our plugin was registered.
|
|
205
|
-
[27afab9]
|
|
206
|
-
* Use any python version to run the conductor command. Shebang looks for python, not python2. [fd13011]
|
|
207
|
-
* Fix bug in pkgs and add windows path support. [fb7a71e]
|
|
208
|
-
|
|
209
|
-
### Version:3.0.2 -- 27 Jun 2021
|
|
210
|
-
|
|
211
|
-
* Remove the index.html file in favour of an inline string. [05fab98]
|
|
212
|
-
|
|
213
|
-
### Version:3.0.1 -- 20 Jun 2021
|
|
214
|
-
|
|
215
|
-
* Removes dependency on builtins which caused an error when running through Python2.7 [a37b118]
|
|
216
|
-
* Better spawning for conductor command on Windows. It now searches the path for Python versions
|
|
217
|
-
with a preference for Python3 [ed11102]
|
|
218
|
-
* Config is no longer a singleton instantiated on initialization. It can be force refreshed,
|
|
219
|
-
although that functionality is not yet utilized. [1407582]
|
|
220
|
-
|
|
221
|
-
### Version:2.0.1 -- 10 Jun 2021
|
|
222
|
-
|
|
223
|
-
* Adds Python 3 support for VFX Platform (CY2020) Maya2022, C4d23 etc. [fa5005b]
|
|
224
|
-
|
|
225
|
-
### Version:1.0.3 -- 10 Jun 2021
|
|
226
|
-
|
|
227
|
-
* Restored the please-close-your-browser index.html page that appears after authentication. [ba11cb1]
|
|
228
|
-
|
|
229
|
-
### Version:1.0.2 -- 29 Apr 2021
|
|
230
|
-
|
|
231
|
-
* Fix logging - use const for logger name. [38111bf]
|
|
232
|
-
* Adds get_api_key_from_variable function. [cd57428]
|
|
233
|
-
|
|
234
|
-
### Version:1.0.0 -- 07 Apr 2021
|
|
235
|
-
|
|
236
|
-
* Version 1.0.0 is not backward compatible with older versions. The functionality from sequence, gpath, and expander has been extracted to separate Py3 compatible packages. [25c64c6]
|
|
237
|
-
|
|
238
|
-
### Version:0.3.0 -- 23 Mar 2021
|
|
239
|
-
|
|
240
|
-
* Gpath supports dollar brace variables for context expansion. [ff2fae9]
|
|
241
|
-
|
|
242
|
-
### Version:0.2.26 -- 11 Mar 2021
|
|
243
|
-
|
|
244
|
-
* Better local dev flow and instructions. [4566a0b]
|
|
245
|
-
|
|
246
|
-
### Version:0.2.25 -- 11 Mar 2021
|
|
247
|
-
|
|
248
|
-
* Adds skulk to deps. [4c2dc89]
|
|
249
|
-
* Developer install instructions.. [b9afd1d]
|
|
250
|
-
|
|
251
|
-
### Version:0.2.20 -- 11 Mar 2021
|
|
252
|
-
|
|
253
|
-
* Set up repo for Circle CI deploy. [e111736]
|
|
254
|
-
|
|
255
|
-
### Version:0.2.19 -- 24 Feb 2021
|
|
256
|
-
|
|
257
|
-
* Adds basename modifiers to expander. Example, use `<basename scenefile>` instead of `<scenename>` [daf1af3]
|
|
258
|
-
|
|
259
|
-
### Version:0.2.18 -- 15 Jan 2021
|
|
260
|
-
|
|
261
|
-
* Adds expression resolution to expander class. [cbeb64e]
|
|
262
|
-
* Unc support (#16)
|
|
263
|
-
|
|
264
|
-
### Version:0.2.16 -- 07 Jan 2021
|
|
265
|
-
|
|
266
|
-
* Gpath supports UNC paths. [7333433]
|
|
267
|
-
|
|
268
|
-
### Version:0.2.15 -- 06 Nov 2020
|
|
269
|
-
|
|
270
|
-
* Developer can switch between using test-fixtures and the real API within one session by using data.set_fixtures_dir() method. As a result, the DISK_CACHE env var is no longer used and has been deleted. [226b860]
|
|
271
|
-
|
|
272
|
-
### Version:0.2.14 -- 21 Oct 2020
|
|
273
|
-
|
|
274
|
-
* Repair windows command line executable. Added a bat file so that it is no longer necessary to call python explicitly. [cf9f19f]
|
|
275
|
-
|
|
276
|
-
### Version:0.2.13 -- 08 Oct 2020
|
|
277
|
-
|
|
278
|
-
* Adds README and CHANGELOG to PyPi description. [97a07dd]
|
|
279
|
-
|
|
280
|
-
### Version:0.2.12 -- 04 Oct 2020
|
|
281
|
-
|
|
282
|
-
* Catch unimplemented thread_count. [c64ad79]
|
|
283
|
-
|
|
284
|
-
### Version:0.2.11 -- 01 Oct 2020
|
|
285
|
-
|
|
286
|
-
* Package environment now allows exclusive override. [481851b]
|
|
287
|
-
* Allow relative paths that start with letter, colon - it could happen. [241fc68]
|
|
288
|
-
|
|
289
|
-
### Version:0.2.10 -- 08 Sep 2020
|
|
290
|
-
|
|
291
|
-
* Gpath allow colons in paths. [9c19d3a]
|
|
292
|
-
|
|
293
|
-
### Version:0.2.9 -- 06 Sep 2020
|
|
294
|
-
|
|
295
|
-
* Sequence consumers must use factory. [01a7dd7]
|
|
296
|
-
|
|
297
|
-
### Version:0.2.8 -- 03 Sep 2020
|
|
298
|
-
|
|
299
|
-
* Tidy and remove dependency on future. [0c2f72c]
|
|
300
|
-
|
|
301
|
-
### Version:0.2.7 -- 28 Aug 2020
|
|
302
|
-
|
|
303
|
-
* Adds cycle_progressions chunk strategy for improved scout frame distribution. [9b42288]
|
|
304
|
-
* Remove yaml config (#8)
|
|
305
|
-
* Remove config file references
|
|
306
|
-
* Adds jwt domain validation for credentials file so token is renewed when switching Google projects.
|
|
307
|
-
* Api_url defaults to same domain as auth_url
|
|
308
|
-
|
|
309
|
-
### Version:0.2.6 -- 18 Aug 2020
|
|
310
|
-
|
|
311
|
-
* Adds jwt domain validation for creds file. [0042b2b]
|
|
312
|
-
* Remove config file references. [451896b]
|
|
313
|
-
|
|
314
|
-
### Version:0.2.5 -- 11 Aug 2020
|
|
315
|
-
|
|
316
|
-
* Production release
|
|
317
|
-
|
|
318
|
-
### Version:0.2.4 -- 11 Aug 2020
|
|
319
|
-
|
|
320
|
-
* Removed redshift package ids hack. [8d11367]
|
|
321
|
-
|
|
322
|
-
### Version:0.2.3 -- 10 Aug 2020
|
|
323
|
-
|
|
324
|
-
* Adds remove_missing files method to Gpath. [3b96796]
|
|
325
|
-
* Adds validators base class. [c91ffc9] [b074cce]
|
|
326
|
-
|
|
327
|
-
### Version:0.2.2 -- 08 Aug 2020
|
|
328
|
-
|
|
329
|
-
* Temp workarounds for missing plugin-host links in packages
|
|
330
|
-
* Remove "shared" request.session object. (#293)
|
|
331
|
-
* Update httpbatchworker docstring (#291)
|
|
332
|
-
* File api refactor multipart and tcp connection pooling (#290)
|
|
333
|
-
* Multipart updates to workers
|
|
334
|
-
* Add make_preapred_request for s3 calls to remove transfer-encoding header being added. update descriptions and v2 endpoints. Add content-length for s3 calls. don't return response object on s3 calls which can cause a build up of memory due to jobworker, return headers or none.
|
|
335
|
-
* Add metric_store increments for aws presigned and multipart, cannot use chunked reader since generator does not have len function.
|
|
336
|
-
* Use httpbatchworker response to avoid additional os.stat calls. [7c76c46]
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
### Version:0.2.0 -- 01 Aug 2020
|
|
340
|
-
|
|
341
|
-
* Use explicit entry point script. [dfd9da3]
|
|
342
|
-
* The coredata singleton that holds instance_types, projects, and software must now be initialized with software product. This is to avoid having to specify the product on every call to data(). [db0fcb0]
|
|
343
|
-
* Expander context made public to indicate to other objects that they may retrieve the context. [a457aa1]
|
|
344
|
-
|
|
345
|
-
### Version:0.1.15 -- 27 Jul 2020
|
|
346
|
-
|
|
347
|
-
* Made post install script runnable. [8dce89f]
|
|
348
|
-
|
|
349
|
-
### Version:0.1.14 -- 27 Jul 2020
|
|
350
|
-
|
|
351
|
-
* Simplified post install script - no longer interactive. [6bba8af]
|
|
352
|
-
|
|
353
|
-
### Version:0.1.13 -- 26 Jul 2020
|
|
354
|
-
|
|
355
|
-
* Refactored post install setup script. [3fbba5e]
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
### Version:0.1.12 -- 25 Jul 2020
|
|
359
|
-
|
|
360
|
-
* Setup can accept cmdline args for non-wizard mode. [f195b7d]
|
|
361
|
-
* Adds safe mode to expander. [95f6cfd]
|
|
362
|
-
|
|
363
|
-
### Version:0.1.11 -- 22 Jul 2020
|
|
364
|
-
|
|
365
|
-
* Adds Setup wizard to make installation easier. [a06d610]
|
|
366
|
-
|
|
367
|
-
### Version:0.1.10 -- 21 Jul 2020
|
|
368
|
-
|
|
369
|
-
* Use cio to differentiate from conductor. [3f49451]
|
|
370
|
-
* Projects and instance types sorted for fixtures. [4a0f833]
|
|
371
|
-
|
|
372
|
-
### Version:0.1.9 -- 10 Jul 2020
|
|
373
|
-
|
|
374
|
-
* Implement data singletons here and remove from conductor-maya. [d31aeaa]
|
|
375
|
-
|
|
376
|
-
### Version:0.1.8 -- 06 Jul 2020
|
|
377
|
-
|
|
378
|
-
* Repair some path list issues found while adding remove method. [7368cc2]
|
|
379
|
-
|
|
380
|
-
### Version:0.1.7 -- 04 Jul 2020
|
|
381
|
-
|
|
382
|
-
* Adds a remove method to pathlist. [5712d2c]
|
|
383
|
-
* Wip configure script. [e7f6ea9]
|
|
384
|
-
|
|
385
|
-
### Version:0.1.6 -- 29 Jun 2020
|
|
386
|
-
|
|
387
|
-
* Fix bad path to conductor cmd. [5be12af]
|
|
388
|
-
* Packages: Remove tree property and make _tree -> tree. [1e6ae34]
|
|
389
|
-
|
|
390
|
-
### Version:0.1.5 -- 22 Jun 2020
|
|
391
|
-
|
|
392
|
-
* Remove src. [a366047]
|
|
393
|
-
* Newline in requirements. [a4cd9d3]
|
|
394
|
-
* Missing member. [b2bfb6d]
|
|
395
|
-
* Fix tests. [c9498c9]
|
|
396
|
-
* Imports ciocore. [916651e]
|
|
397
|
-
* Flatten. [c88afae]
|
|
398
|
-
* Flatter hierarchy. [6906e23]
|
|
399
|
-
* Slug means local slug. [0db16e0]
|
|
400
|
-
* Init declare namespace. [84d16b3]
|
|
401
|
-
* Use underscore name. [1aae967]
|
|
402
|
-
* Correct namespace config. [22a09f3]
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
### Version:0.1.4 -- 14 Jun 2020
|
|
406
|
-
|
|
407
|
-
* Ignore build dir. [8080df5]
|
|
408
|
-
|