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.
Files changed (126) hide show
  1. ciocore/VERSION +1 -1
  2. ciocore/__init__.py +23 -1
  3. ciocore/api_client.py +655 -160
  4. ciocore/auth/__init__.py +5 -3
  5. ciocore/cli.py +501 -0
  6. ciocore/common.py +15 -13
  7. ciocore/conductor_submit.py +77 -60
  8. ciocore/config.py +127 -13
  9. ciocore/data.py +162 -77
  10. ciocore/docsite/404.html +746 -0
  11. ciocore/docsite/apidoc/api_client/index.html +3605 -0
  12. ciocore/docsite/apidoc/apidoc/index.html +909 -0
  13. ciocore/docsite/apidoc/config/index.html +1652 -0
  14. ciocore/docsite/apidoc/data/index.html +1553 -0
  15. ciocore/docsite/apidoc/hardware_set/index.html +2460 -0
  16. ciocore/docsite/apidoc/package_environment/index.html +1507 -0
  17. ciocore/docsite/apidoc/package_tree/index.html +2386 -0
  18. ciocore/docsite/assets/_mkdocstrings.css +16 -0
  19. ciocore/docsite/assets/images/favicon.png +0 -0
  20. ciocore/docsite/assets/javascripts/bundle.471ce7a9.min.js +29 -0
  21. ciocore/docsite/assets/javascripts/bundle.471ce7a9.min.js.map +7 -0
  22. ciocore/docsite/assets/javascripts/lunr/min/lunr.ar.min.js +1 -0
  23. ciocore/docsite/assets/javascripts/lunr/min/lunr.da.min.js +18 -0
  24. ciocore/docsite/assets/javascripts/lunr/min/lunr.de.min.js +18 -0
  25. ciocore/docsite/assets/javascripts/lunr/min/lunr.du.min.js +18 -0
  26. ciocore/docsite/assets/javascripts/lunr/min/lunr.el.min.js +1 -0
  27. ciocore/docsite/assets/javascripts/lunr/min/lunr.es.min.js +18 -0
  28. ciocore/docsite/assets/javascripts/lunr/min/lunr.fi.min.js +18 -0
  29. ciocore/docsite/assets/javascripts/lunr/min/lunr.fr.min.js +18 -0
  30. ciocore/docsite/assets/javascripts/lunr/min/lunr.he.min.js +1 -0
  31. ciocore/docsite/assets/javascripts/lunr/min/lunr.hi.min.js +1 -0
  32. ciocore/docsite/assets/javascripts/lunr/min/lunr.hu.min.js +18 -0
  33. ciocore/docsite/assets/javascripts/lunr/min/lunr.hy.min.js +1 -0
  34. ciocore/docsite/assets/javascripts/lunr/min/lunr.it.min.js +18 -0
  35. ciocore/docsite/assets/javascripts/lunr/min/lunr.ja.min.js +1 -0
  36. ciocore/docsite/assets/javascripts/lunr/min/lunr.jp.min.js +1 -0
  37. ciocore/docsite/assets/javascripts/lunr/min/lunr.kn.min.js +1 -0
  38. ciocore/docsite/assets/javascripts/lunr/min/lunr.ko.min.js +1 -0
  39. ciocore/docsite/assets/javascripts/lunr/min/lunr.multi.min.js +1 -0
  40. ciocore/docsite/assets/javascripts/lunr/min/lunr.nl.min.js +18 -0
  41. ciocore/docsite/assets/javascripts/lunr/min/lunr.no.min.js +18 -0
  42. ciocore/docsite/assets/javascripts/lunr/min/lunr.pt.min.js +18 -0
  43. ciocore/docsite/assets/javascripts/lunr/min/lunr.ro.min.js +18 -0
  44. ciocore/docsite/assets/javascripts/lunr/min/lunr.ru.min.js +18 -0
  45. ciocore/docsite/assets/javascripts/lunr/min/lunr.sa.min.js +1 -0
  46. ciocore/docsite/assets/javascripts/lunr/min/lunr.stemmer.support.min.js +1 -0
  47. ciocore/docsite/assets/javascripts/lunr/min/lunr.sv.min.js +18 -0
  48. ciocore/docsite/assets/javascripts/lunr/min/lunr.ta.min.js +1 -0
  49. ciocore/docsite/assets/javascripts/lunr/min/lunr.te.min.js +1 -0
  50. ciocore/docsite/assets/javascripts/lunr/min/lunr.th.min.js +1 -0
  51. ciocore/docsite/assets/javascripts/lunr/min/lunr.tr.min.js +18 -0
  52. ciocore/docsite/assets/javascripts/lunr/min/lunr.vi.min.js +1 -0
  53. ciocore/docsite/assets/javascripts/lunr/min/lunr.zh.min.js +1 -0
  54. ciocore/docsite/assets/javascripts/lunr/tinyseg.js +206 -0
  55. ciocore/docsite/assets/javascripts/lunr/wordcut.js +6708 -0
  56. ciocore/docsite/assets/javascripts/workers/search.b8dbb3d2.min.js +42 -0
  57. ciocore/docsite/assets/javascripts/workers/search.b8dbb3d2.min.js.map +7 -0
  58. ciocore/docsite/assets/stylesheets/main.3cba04c6.min.css +1 -0
  59. ciocore/docsite/assets/stylesheets/main.3cba04c6.min.css.map +1 -0
  60. ciocore/docsite/assets/stylesheets/palette.06af60db.min.css +1 -0
  61. ciocore/docsite/assets/stylesheets/palette.06af60db.min.css.map +1 -0
  62. ciocore/docsite/cmdline/docs/index.html +871 -0
  63. ciocore/docsite/cmdline/downloader/index.html +934 -0
  64. ciocore/docsite/cmdline/packages/index.html +878 -0
  65. ciocore/docsite/cmdline/uploader/index.html +995 -0
  66. ciocore/docsite/how-to-guides/index.html +869 -0
  67. ciocore/docsite/index.html +895 -0
  68. ciocore/docsite/logo.png +0 -0
  69. ciocore/docsite/objects.inv +0 -0
  70. ciocore/docsite/search/search_index.json +1 -0
  71. ciocore/docsite/sitemap.xml +3 -0
  72. ciocore/docsite/sitemap.xml.gz +0 -0
  73. ciocore/docsite/stylesheets/extra.css +26 -0
  74. ciocore/docsite/stylesheets/tables.css +167 -0
  75. ciocore/downloader/base_downloader.py +644 -0
  76. ciocore/downloader/download_runner_base.py +47 -0
  77. ciocore/downloader/job_downloader.py +119 -0
  78. ciocore/{downloader.py → downloader/legacy_downloader.py} +12 -9
  79. ciocore/downloader/log.py +73 -0
  80. ciocore/downloader/logging_download_runner.py +87 -0
  81. ciocore/downloader/perpetual_downloader.py +63 -0
  82. ciocore/downloader/registry.py +97 -0
  83. ciocore/downloader/reporter.py +135 -0
  84. ciocore/exceptions.py +8 -2
  85. ciocore/file_utils.py +51 -50
  86. ciocore/hardware_set.py +449 -0
  87. ciocore/loggeria.py +89 -20
  88. ciocore/package_environment.py +110 -48
  89. ciocore/package_query.py +182 -0
  90. ciocore/package_tree.py +319 -258
  91. ciocore/retry.py +0 -0
  92. ciocore/uploader/_uploader.py +547 -364
  93. ciocore/uploader/thread_queue_job.py +176 -0
  94. ciocore/uploader/upload_stats/__init__.py +3 -4
  95. ciocore/uploader/upload_stats/stats_formats.py +10 -4
  96. ciocore/validator.py +34 -2
  97. ciocore/worker.py +174 -151
  98. ciocore-10.0.0b3.dist-info/METADATA +928 -0
  99. ciocore-10.0.0b3.dist-info/RECORD +128 -0
  100. {ciocore-5.1.1.dist-info → ciocore-10.0.0b3.dist-info}/WHEEL +1 -1
  101. ciocore-10.0.0b3.dist-info/entry_points.txt +2 -0
  102. tests/instance_type_fixtures.py +175 -0
  103. tests/package_fixtures.py +205 -0
  104. tests/test_api_client.py +297 -12
  105. tests/test_base_downloader.py +104 -0
  106. tests/test_cli.py +149 -0
  107. tests/test_common.py +1 -7
  108. tests/test_config.py +40 -18
  109. tests/test_data.py +162 -173
  110. tests/test_downloader.py +118 -0
  111. tests/test_hardware_set.py +139 -0
  112. tests/test_job_downloader.py +213 -0
  113. tests/test_package_query.py +38 -0
  114. tests/test_package_tree.py +91 -291
  115. tests/test_submit.py +44 -18
  116. tests/test_uploader.py +1 -4
  117. ciocore/__about__.py +0 -10
  118. ciocore/cli/conductor.py +0 -191
  119. ciocore/compat.py +0 -15
  120. ciocore-5.1.1.data/scripts/conductor +0 -19
  121. ciocore-5.1.1.data/scripts/conductor.bat +0 -13
  122. ciocore-5.1.1.dist-info/METADATA +0 -408
  123. ciocore-5.1.1.dist-info/RECORD +0 -47
  124. tests/mocks/api_client_mock.py +0 -51
  125. /ciocore/{cli → downloader}/__init__.py +0 -0
  126. {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,15 +0,0 @@
1
- import sys
2
- if sys.version_info < (3,):
3
- import codecs
4
- def u(x):
5
- return codecs.unicode_escape_decode(x)[0]
6
-
7
- text_type = unicode
8
- binary_type = str
9
- else:
10
- def u(x):
11
- return str(x)
12
-
13
- text_type = str
14
- binary_type = bytes
15
-
@@ -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" %*
@@ -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
-