Ayon-Python-Api 0.2.2__tar.gz → 0.3.0__tar.gz
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.
- ayon-python-api-0.3.0/PKG-INFO +283 -0
- {ayon-python-api-0.2.2 → ayon-python-api-0.3.0}/ayon_api/__init__.py +2 -0
- {ayon-python-api-0.2.2 → ayon-python-api-0.3.0}/ayon_api/_api.py +5 -0
- {ayon-python-api-0.2.2 → ayon-python-api-0.3.0}/ayon_api/server_api.py +200 -59
- {ayon-python-api-0.2.2 → ayon-python-api-0.3.0}/ayon_api/version.py +1 -1
- ayon-python-api-0.3.0/ayon_python_api.egg-info/PKG-INFO +283 -0
- ayon-python-api-0.3.0/pyproject.toml +40 -0
- ayon-python-api-0.2.2/PKG-INFO +0 -80
- ayon-python-api-0.2.2/ayon_python_api.egg-info/PKG-INFO +0 -80
- ayon-python-api-0.2.2/pyproject.toml +0 -19
- {ayon-python-api-0.2.2 → ayon-python-api-0.3.0}/LICENSE +0 -0
- {ayon-python-api-0.2.2 → ayon-python-api-0.3.0}/README.md +0 -0
- {ayon-python-api-0.2.2 → ayon-python-api-0.3.0}/ayon_api/constants.py +0 -0
- {ayon-python-api-0.2.2 → ayon-python-api-0.3.0}/ayon_api/entity_hub.py +0 -0
- {ayon-python-api-0.2.2 → ayon-python-api-0.3.0}/ayon_api/events.py +0 -0
- {ayon-python-api-0.2.2 → ayon-python-api-0.3.0}/ayon_api/exceptions.py +0 -0
- {ayon-python-api-0.2.2 → ayon-python-api-0.3.0}/ayon_api/graphql.py +0 -0
- {ayon-python-api-0.2.2 → ayon-python-api-0.3.0}/ayon_api/graphql_queries.py +0 -0
- {ayon-python-api-0.2.2 → ayon-python-api-0.3.0}/ayon_api/operations.py +0 -0
- {ayon-python-api-0.2.2 → ayon-python-api-0.3.0}/ayon_api/thumbnails.py +0 -0
- {ayon-python-api-0.2.2 → ayon-python-api-0.3.0}/ayon_api/utils.py +0 -0
- {ayon-python-api-0.2.2 → ayon-python-api-0.3.0}/ayon_python_api.egg-info/SOURCES.txt +0 -0
- {ayon-python-api-0.2.2 → ayon-python-api-0.3.0}/ayon_python_api.egg-info/dependency_links.txt +0 -0
- {ayon-python-api-0.2.2 → ayon-python-api-0.3.0}/ayon_python_api.egg-info/requires.txt +0 -0
- {ayon-python-api-0.2.2 → ayon-python-api-0.3.0}/ayon_python_api.egg-info/top_level.txt +0 -0
- {ayon-python-api-0.2.2 → ayon-python-api-0.3.0}/setup.cfg +0 -0
- {ayon-python-api-0.2.2 → ayon-python-api-0.3.0}/setup.py +0 -0
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: ayon-python-api
|
|
3
|
+
Version: 0.3.0
|
|
4
|
+
Summary: AYON Python API
|
|
5
|
+
Home-page: https://github.com/ynput/ayon-python-api
|
|
6
|
+
Author: ynput.io
|
|
7
|
+
Author-email: "ynput.io" <info@ynput.io>
|
|
8
|
+
License: Apache License
|
|
9
|
+
Version 2.0, January 2004
|
|
10
|
+
http://www.apache.org/licenses/
|
|
11
|
+
|
|
12
|
+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
13
|
+
|
|
14
|
+
1. Definitions.
|
|
15
|
+
|
|
16
|
+
"License" shall mean the terms and conditions for use, reproduction,
|
|
17
|
+
and distribution as defined by Sections 1 through 9 of this document.
|
|
18
|
+
|
|
19
|
+
"Licensor" shall mean the copyright owner or entity authorized by
|
|
20
|
+
the copyright owner that is granting the License.
|
|
21
|
+
|
|
22
|
+
"Legal Entity" shall mean the union of the acting entity and all
|
|
23
|
+
other entities that control, are controlled by, or are under common
|
|
24
|
+
control with that entity. For the purposes of this definition,
|
|
25
|
+
"control" means (i) the power, direct or indirect, to cause the
|
|
26
|
+
direction or management of such entity, whether by contract or
|
|
27
|
+
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
28
|
+
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
29
|
+
|
|
30
|
+
"You" (or "Your") shall mean an individual or Legal Entity
|
|
31
|
+
exercising permissions granted by this License.
|
|
32
|
+
|
|
33
|
+
"Source" form shall mean the preferred form for making modifications,
|
|
34
|
+
including but not limited to software source code, documentation
|
|
35
|
+
source, and configuration files.
|
|
36
|
+
|
|
37
|
+
"Object" form shall mean any form resulting from mechanical
|
|
38
|
+
transformation or translation of a Source form, including but
|
|
39
|
+
not limited to compiled object code, generated documentation,
|
|
40
|
+
and conversions to other media types.
|
|
41
|
+
|
|
42
|
+
"Work" shall mean the work of authorship, whether in Source or
|
|
43
|
+
Object form, made available under the License, as indicated by a
|
|
44
|
+
copyright notice that is included in or attached to the work
|
|
45
|
+
(an example is provided in the Appendix below).
|
|
46
|
+
|
|
47
|
+
"Derivative Works" shall mean any work, whether in Source or Object
|
|
48
|
+
form, that is based on (or derived from) the Work and for which the
|
|
49
|
+
editorial revisions, annotations, elaborations, or other modifications
|
|
50
|
+
represent, as a whole, an original work of authorship. For the purposes
|
|
51
|
+
of this License, Derivative Works shall not include works that remain
|
|
52
|
+
separable from, or merely link (or bind by name) to the interfaces of,
|
|
53
|
+
the Work and Derivative Works thereof.
|
|
54
|
+
|
|
55
|
+
"Contribution" shall mean any work of authorship, including
|
|
56
|
+
the original version of the Work and any modifications or additions
|
|
57
|
+
to that Work or Derivative Works thereof, that is intentionally
|
|
58
|
+
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
59
|
+
or by an individual or Legal Entity authorized to submit on behalf of
|
|
60
|
+
the copyright owner. For the purposes of this definition, "submitted"
|
|
61
|
+
means any form of electronic, verbal, or written communication sent
|
|
62
|
+
to the Licensor or its representatives, including but not limited to
|
|
63
|
+
communication on electronic mailing lists, source code control systems,
|
|
64
|
+
and issue tracking systems that are managed by, or on behalf of, the
|
|
65
|
+
Licensor for the purpose of discussing and improving the Work, but
|
|
66
|
+
excluding communication that is conspicuously marked or otherwise
|
|
67
|
+
designated in writing by the copyright owner as "Not a Contribution."
|
|
68
|
+
|
|
69
|
+
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
70
|
+
on behalf of whom a Contribution has been received by Licensor and
|
|
71
|
+
subsequently incorporated within the Work.
|
|
72
|
+
|
|
73
|
+
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
74
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
75
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
76
|
+
copyright license to reproduce, prepare Derivative Works of,
|
|
77
|
+
publicly display, publicly perform, sublicense, and distribute the
|
|
78
|
+
Work and such Derivative Works in Source or Object form.
|
|
79
|
+
|
|
80
|
+
3. Grant of Patent License. Subject to the terms and conditions of
|
|
81
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
82
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
83
|
+
(except as stated in this section) patent license to make, have made,
|
|
84
|
+
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
85
|
+
where such license applies only to those patent claims licensable
|
|
86
|
+
by such Contributor that are necessarily infringed by their
|
|
87
|
+
Contribution(s) alone or by combination of their Contribution(s)
|
|
88
|
+
with the Work to which such Contribution(s) was submitted. If You
|
|
89
|
+
institute patent litigation against any entity (including a
|
|
90
|
+
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
91
|
+
or a Contribution incorporated within the Work constitutes direct
|
|
92
|
+
or contributory patent infringement, then any patent licenses
|
|
93
|
+
granted to You under this License for that Work shall terminate
|
|
94
|
+
as of the date such litigation is filed.
|
|
95
|
+
|
|
96
|
+
4. Redistribution. You may reproduce and distribute copies of the
|
|
97
|
+
Work or Derivative Works thereof in any medium, with or without
|
|
98
|
+
modifications, and in Source or Object form, provided that You
|
|
99
|
+
meet the following conditions:
|
|
100
|
+
|
|
101
|
+
(a) You must give any other recipients of the Work or
|
|
102
|
+
Derivative Works a copy of this License; and
|
|
103
|
+
|
|
104
|
+
(b) You must cause any modified files to carry prominent notices
|
|
105
|
+
stating that You changed the files; and
|
|
106
|
+
|
|
107
|
+
(c) You must retain, in the Source form of any Derivative Works
|
|
108
|
+
that You distribute, all copyright, patent, trademark, and
|
|
109
|
+
attribution notices from the Source form of the Work,
|
|
110
|
+
excluding those notices that do not pertain to any part of
|
|
111
|
+
the Derivative Works; and
|
|
112
|
+
|
|
113
|
+
(d) If the Work includes a "NOTICE" text file as part of its
|
|
114
|
+
distribution, then any Derivative Works that You distribute must
|
|
115
|
+
include a readable copy of the attribution notices contained
|
|
116
|
+
within such NOTICE file, excluding those notices that do not
|
|
117
|
+
pertain to any part of the Derivative Works, in at least one
|
|
118
|
+
of the following places: within a NOTICE text file distributed
|
|
119
|
+
as part of the Derivative Works; within the Source form or
|
|
120
|
+
documentation, if provided along with the Derivative Works; or,
|
|
121
|
+
within a display generated by the Derivative Works, if and
|
|
122
|
+
wherever such third-party notices normally appear. The contents
|
|
123
|
+
of the NOTICE file are for informational purposes only and
|
|
124
|
+
do not modify the License. You may add Your own attribution
|
|
125
|
+
notices within Derivative Works that You distribute, alongside
|
|
126
|
+
or as an addendum to the NOTICE text from the Work, provided
|
|
127
|
+
that such additional attribution notices cannot be construed
|
|
128
|
+
as modifying the License.
|
|
129
|
+
|
|
130
|
+
You may add Your own copyright statement to Your modifications and
|
|
131
|
+
may provide additional or different license terms and conditions
|
|
132
|
+
for use, reproduction, or distribution of Your modifications, or
|
|
133
|
+
for any such Derivative Works as a whole, provided Your use,
|
|
134
|
+
reproduction, and distribution of the Work otherwise complies with
|
|
135
|
+
the conditions stated in this License.
|
|
136
|
+
|
|
137
|
+
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
138
|
+
any Contribution intentionally submitted for inclusion in the Work
|
|
139
|
+
by You to the Licensor shall be under the terms and conditions of
|
|
140
|
+
this License, without any additional terms or conditions.
|
|
141
|
+
Notwithstanding the above, nothing herein shall supersede or modify
|
|
142
|
+
the terms of any separate license agreement you may have executed
|
|
143
|
+
with Licensor regarding such Contributions.
|
|
144
|
+
|
|
145
|
+
6. Trademarks. This License does not grant permission to use the trade
|
|
146
|
+
names, trademarks, service marks, or product names of the Licensor,
|
|
147
|
+
except as required for reasonable and customary use in describing the
|
|
148
|
+
origin of the Work and reproducing the content of the NOTICE file.
|
|
149
|
+
|
|
150
|
+
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
151
|
+
agreed to in writing, Licensor provides the Work (and each
|
|
152
|
+
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
153
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
154
|
+
implied, including, without limitation, any warranties or conditions
|
|
155
|
+
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
156
|
+
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
157
|
+
appropriateness of using or redistributing the Work and assume any
|
|
158
|
+
risks associated with Your exercise of permissions under this License.
|
|
159
|
+
|
|
160
|
+
8. Limitation of Liability. In no event and under no legal theory,
|
|
161
|
+
whether in tort (including negligence), contract, or otherwise,
|
|
162
|
+
unless required by applicable law (such as deliberate and grossly
|
|
163
|
+
negligent acts) or agreed to in writing, shall any Contributor be
|
|
164
|
+
liable to You for damages, including any direct, indirect, special,
|
|
165
|
+
incidental, or consequential damages of any character arising as a
|
|
166
|
+
result of this License or out of the use or inability to use the
|
|
167
|
+
Work (including but not limited to damages for loss of goodwill,
|
|
168
|
+
work stoppage, computer failure or malfunction, or any and all
|
|
169
|
+
other commercial damages or losses), even if such Contributor
|
|
170
|
+
has been advised of the possibility of such damages.
|
|
171
|
+
|
|
172
|
+
9. Accepting Warranty or Additional Liability. While redistributing
|
|
173
|
+
the Work or Derivative Works thereof, You may choose to offer,
|
|
174
|
+
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
175
|
+
or other liability obligations and/or rights consistent with this
|
|
176
|
+
License. However, in accepting such obligations, You may act only
|
|
177
|
+
on Your own behalf and on Your sole responsibility, not on behalf
|
|
178
|
+
of any other Contributor, and only if You agree to indemnify,
|
|
179
|
+
defend, and hold each Contributor harmless for any liability
|
|
180
|
+
incurred by, or claims asserted against, such Contributor by reason
|
|
181
|
+
of your accepting any such warranty or additional liability.
|
|
182
|
+
|
|
183
|
+
END OF TERMS AND CONDITIONS
|
|
184
|
+
|
|
185
|
+
APPENDIX: How to apply the Apache License to your work.
|
|
186
|
+
|
|
187
|
+
To apply the Apache License to your work, attach the following
|
|
188
|
+
boilerplate notice, with the fields enclosed by brackets "[]"
|
|
189
|
+
replaced with your own identifying information. (Don't include
|
|
190
|
+
the brackets!) The text should be enclosed in the appropriate
|
|
191
|
+
comment syntax for the file format. We also recommend that a
|
|
192
|
+
file or class name and description of purpose be included on the
|
|
193
|
+
same "printed page" as the copyright notice for easier
|
|
194
|
+
identification within third-party archives.
|
|
195
|
+
|
|
196
|
+
Copyright [yyyy] [name of copyright owner]
|
|
197
|
+
|
|
198
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
199
|
+
you may not use this file except in compliance with the License.
|
|
200
|
+
You may obtain a copy of the License at
|
|
201
|
+
|
|
202
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
203
|
+
|
|
204
|
+
Unless required by applicable law or agreed to in writing, software
|
|
205
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
206
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
207
|
+
See the License for the specific language governing permissions and
|
|
208
|
+
limitations under the License.
|
|
209
|
+
|
|
210
|
+
Project-URL: Repository, https://github.com/ynput/ayon-python-api
|
|
211
|
+
Project-URL: Changelog, https://github.com/ynput/ayon-python-api/releases
|
|
212
|
+
Keywords: AYON,ynput,OpenPype,vfx
|
|
213
|
+
Classifier: Development Status :: 3 - Alpha
|
|
214
|
+
Classifier: Programming Language :: Python
|
|
215
|
+
Classifier: Programming Language :: Python :: 2
|
|
216
|
+
Classifier: Programming Language :: Python :: 3
|
|
217
|
+
Description-Content-Type: text/markdown
|
|
218
|
+
License-File: LICENSE
|
|
219
|
+
|
|
220
|
+
# AYON server API
|
|
221
|
+
Python client for connection server. Client must be (at least for some time) Python 2 compatible because will be used in DCC that are "older".
|
|
222
|
+
|
|
223
|
+
AYON Python api should support connection to server with raw REST functions and prepared functionality for work with entities. Must not contain only functionality that can be used with core server functionality.
|
|
224
|
+
|
|
225
|
+
Module support singleton connection which is using `AYON_SERVER_URL` and `AYON_API_KEY` environment variables as source for connection. The singleton connection is using `ServerAPI` object. There can be created multiple connection to different server at one time, for that purpose use `ServerAPIBase` object.
|
|
226
|
+
|
|
227
|
+
## Install
|
|
228
|
+
AYON python api is available on PyPi:
|
|
229
|
+
|
|
230
|
+
pip install ayon-python-api
|
|
231
|
+
|
|
232
|
+
For development purposes you may follow [build](#build-wheel) guide to build and install custom wheels.
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
## Cloning the repository
|
|
236
|
+
Repository does not have submodules or special cases. Clone is simple as:
|
|
237
|
+
|
|
238
|
+
git clone git@github.com:ynput/ayon-python-api.git
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
## Build wheel
|
|
242
|
+
For wheel build is required a `wheel` module from PyPi:
|
|
243
|
+
|
|
244
|
+
pip install wheel
|
|
245
|
+
|
|
246
|
+
Open terminal and change directory to ayon-python-api repository and build wheel:
|
|
247
|
+
|
|
248
|
+
cd <REPOSITORY ROOT>/ayon-python-api
|
|
249
|
+
python setup.py sdist bdist_wheel
|
|
250
|
+
|
|
251
|
+
|
|
252
|
+
Once finished a wheel should be created in `./dist/ayon_python_api-<VERSION>-py3-none-any`.
|
|
253
|
+
|
|
254
|
+
---
|
|
255
|
+
|
|
256
|
+
### Wheel installation
|
|
257
|
+
The wheel file can be used to install using pip:
|
|
258
|
+
|
|
259
|
+
pip install <REPOSITORY ROOT>/dist/ayon_python_api-<VERSION>-py3-none-any
|
|
260
|
+
|
|
261
|
+
If pip complain that `ayon-python-api` is already installed just uninstall existing one first:
|
|
262
|
+
|
|
263
|
+
pip uninstall ayon-python-api
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
## TODOs
|
|
267
|
+
- Find more suitable name of `ServerAPI` objects (right now is used `con` or `connection`)
|
|
268
|
+
- Add all available CRUD operation on entities using REST
|
|
269
|
+
- Add folder and task changes to operations
|
|
270
|
+
- Enhance entity hub
|
|
271
|
+
- Missing docstrings in EntityHub -> especially entity arguments are missing
|
|
272
|
+
- Better order of arguments for entity classes
|
|
273
|
+
- Move entity hub to first place
|
|
274
|
+
- Skip those which are invalid for the entity and fake it for base or remove it from base
|
|
275
|
+
- Entity hub should use operations session to do changes
|
|
276
|
+
- Entity hub could also handle 'subset', 'version' and 'representation' entities
|
|
277
|
+
- Missing 'statuses' on project
|
|
278
|
+
- Missing 'status' on folders
|
|
279
|
+
- Missing assignees on tasks
|
|
280
|
+
- Pass docstrings and arguments definitions from `ServerAPI` methods to global functions
|
|
281
|
+
- Split `ServerAPI` into smaller chunks (somehow), the class has 4k+ lines of code
|
|
282
|
+
- Add .pyi stub for ServerAPI
|
|
283
|
+
- Missing websockets connection
|
|
@@ -101,6 +101,7 @@ from ._api import (
|
|
|
101
101
|
get_addon_studio_settings,
|
|
102
102
|
get_addon_project_settings,
|
|
103
103
|
get_addon_settings,
|
|
104
|
+
get_bundle_settings,
|
|
104
105
|
get_addons_studio_settings,
|
|
105
106
|
get_addons_project_settings,
|
|
106
107
|
get_addons_settings,
|
|
@@ -280,6 +281,7 @@ __all__ = (
|
|
|
280
281
|
"get_addon_studio_settings",
|
|
281
282
|
"get_addon_project_settings",
|
|
282
283
|
"get_addon_settings",
|
|
284
|
+
"get_bundle_settings",
|
|
283
285
|
"get_addons_studio_settings",
|
|
284
286
|
"get_addons_project_settings",
|
|
285
287
|
"get_addons_settings",
|
|
@@ -688,6 +688,11 @@ def get_addon_site_settings(*args, **kwargs):
|
|
|
688
688
|
return con.get_addon_site_settings(*args, **kwargs)
|
|
689
689
|
|
|
690
690
|
|
|
691
|
+
def get_bundle_settings(*args, **kwargs):
|
|
692
|
+
con = get_server_api_connection()
|
|
693
|
+
return con.get_bundle_settings(*args, **kwargs)
|
|
694
|
+
|
|
695
|
+
|
|
691
696
|
def get_addons_studio_settings(*args, **kwargs):
|
|
692
697
|
con = get_server_api_connection()
|
|
693
698
|
return con.get_addons_studio_settings(*args, **kwargs)
|
|
@@ -310,9 +310,9 @@ class ServerAPI(object):
|
|
|
310
310
|
connection is created from the same machine under same user.
|
|
311
311
|
client_version (Optional[str]): Version of client application (used in
|
|
312
312
|
desktop client application).
|
|
313
|
-
default_settings_variant (Optional[
|
|
314
|
-
default if a method for settings won't
|
|
315
|
-
'production').
|
|
313
|
+
default_settings_variant (Optional[Literal["production", "staging"]]):
|
|
314
|
+
Settings variant used by default if a method for settings won't
|
|
315
|
+
get any (by default is 'production').
|
|
316
316
|
ssl_verify (Union[bool, str, None]): Verify SSL certificate
|
|
317
317
|
Looks for env variable value 'AYON_CA_FILE' by default. If not
|
|
318
318
|
available then 'True' is used.
|
|
@@ -341,7 +341,10 @@ class ServerAPI(object):
|
|
|
341
341
|
self._access_token = token
|
|
342
342
|
self._site_id = site_id
|
|
343
343
|
self._client_version = client_version
|
|
344
|
-
self._default_settings_variant =
|
|
344
|
+
self._default_settings_variant = (
|
|
345
|
+
default_settings_variant
|
|
346
|
+
or "production"
|
|
347
|
+
)
|
|
345
348
|
|
|
346
349
|
if ssl_verify is None:
|
|
347
350
|
# Custom AYON env variable for CA file or 'True'
|
|
@@ -527,9 +530,13 @@ class ServerAPI(object):
|
|
|
527
530
|
as default variant.
|
|
528
531
|
|
|
529
532
|
Args:
|
|
530
|
-
variant (
|
|
533
|
+
variant (Literal['production', 'staging']): Settings variant name.
|
|
531
534
|
"""
|
|
532
535
|
|
|
536
|
+
if variant not in ("production", "staging"):
|
|
537
|
+
raise ValueError((
|
|
538
|
+
"Invalid variant name {}. Expected 'production' or 'staging'"
|
|
539
|
+
).format(variant))
|
|
533
540
|
self._default_settings_variant = variant
|
|
534
541
|
|
|
535
542
|
default_settings_variant = property(
|
|
@@ -2038,12 +2045,13 @@ class ServerAPI(object):
|
|
|
2038
2045
|
"""
|
|
2039
2046
|
|
|
2040
2047
|
major, minor, patch, _, _ = self.server_version_tuple
|
|
2041
|
-
if major == 0 and (minor
|
|
2048
|
+
if major == 0 and (minor > 2 or (minor == 2 and patch >= 1)):
|
|
2049
|
+
url = "desktop/dependency_packages/{}".format(filename)
|
|
2050
|
+
else:
|
|
2051
|
+
# Backwards compatibility for AYON server 0.2.0 and lower
|
|
2042
2052
|
if platform_name is None:
|
|
2043
2053
|
platform_name = platform.system().lower()
|
|
2044
2054
|
url = "dependencies/{}/{}".format(filename, platform_name)
|
|
2045
|
-
else:
|
|
2046
|
-
url = "desktop/dependency_packages/{}".format(filename)
|
|
2047
2055
|
|
|
2048
2056
|
response = self.delete(url)
|
|
2049
2057
|
if response.status != 200:
|
|
@@ -2082,12 +2090,13 @@ class ServerAPI(object):
|
|
|
2082
2090
|
"""
|
|
2083
2091
|
|
|
2084
2092
|
major, minor, patch, _, _ = self.server_version_tuple
|
|
2085
|
-
if major == 0 and (minor
|
|
2093
|
+
if major == 0 and (minor > 2 or (minor == 2 and patch >= 1)):
|
|
2094
|
+
url = "desktop/dependency_packages/{}".format(src_filename)
|
|
2095
|
+
else:
|
|
2096
|
+
# Backwards compatibility for AYON server 0.2.0 and lower
|
|
2086
2097
|
if platform_name is None:
|
|
2087
2098
|
platform_name = platform.system().lower()
|
|
2088
2099
|
url = "dependencies/{}/{}".format(src_filename, platform_name)
|
|
2089
|
-
else:
|
|
2090
|
-
url = "desktop/dependency_packages/{}".format(src_filename)
|
|
2091
2100
|
|
|
2092
2101
|
package_filepath = os.path.join(dst_directory, dst_filename)
|
|
2093
2102
|
self.download_file(
|
|
@@ -2114,12 +2123,13 @@ class ServerAPI(object):
|
|
|
2114
2123
|
"""
|
|
2115
2124
|
|
|
2116
2125
|
major, minor, patch, _, _ = self.server_version_tuple
|
|
2117
|
-
if major == 0 and (minor
|
|
2126
|
+
if major == 0 and (minor > 2 or (minor == 2 and patch >= 1)):
|
|
2127
|
+
url = "desktop/dependency_packages/{}".format(dst_filename)
|
|
2128
|
+
else:
|
|
2129
|
+
# Backwards compatibility for AYON server 0.2.0 and lower
|
|
2118
2130
|
if platform_name is None:
|
|
2119
2131
|
platform_name = platform.system().lower()
|
|
2120
2132
|
url = "dependencies/{}/{}".format(dst_filename, platform_name)
|
|
2121
|
-
else:
|
|
2122
|
-
url = "desktop/dependency_packages/{}".format(dst_filename)
|
|
2123
2133
|
|
|
2124
2134
|
self.upload_file(url, src_filepath, progress=progress)
|
|
2125
2135
|
|
|
@@ -2404,17 +2414,17 @@ class ServerAPI(object):
|
|
|
2404
2414
|
):
|
|
2405
2415
|
"""Addon studio settings.
|
|
2406
2416
|
|
|
2407
|
-
|
|
2417
|
+
Receive studio settings for specific version of an addon.
|
|
2408
2418
|
|
|
2409
|
-
|
|
2410
|
-
|
|
2411
|
-
|
|
2412
|
-
|
|
2413
|
-
|
|
2419
|
+
Args:
|
|
2420
|
+
addon_name (str): Name of addon.
|
|
2421
|
+
addon_version (str): Version of addon.
|
|
2422
|
+
variant (Optional[Literal['production', 'staging']]): Name of
|
|
2423
|
+
settings variant. Used 'default_settings_variant' by default.
|
|
2414
2424
|
|
|
2415
|
-
|
|
2425
|
+
Returns:
|
|
2416
2426
|
dict[str, Any]: Addon settings.
|
|
2417
|
-
|
|
2427
|
+
"""
|
|
2418
2428
|
|
|
2419
2429
|
if variant is None:
|
|
2420
2430
|
variant = self.default_settings_variant
|
|
@@ -2452,8 +2462,8 @@ class ServerAPI(object):
|
|
|
2452
2462
|
addon_version (str): Version of addon.
|
|
2453
2463
|
project_name (str): Name of project for which the settings are
|
|
2454
2464
|
received.
|
|
2455
|
-
variant (Optional[
|
|
2456
|
-
|
|
2465
|
+
variant (Optional[Literal['production', 'staging']]): Name of
|
|
2466
|
+
settings variant. Used 'default_settings_variant' by default.
|
|
2457
2467
|
site_id (Optional[str]): Name of site which is used for site
|
|
2458
2468
|
overrides. Is filled with connection 'site_id' attribute
|
|
2459
2469
|
if not passed.
|
|
@@ -2509,8 +2519,8 @@ class ServerAPI(object):
|
|
|
2509
2519
|
project_name (Optional[str]): Name of project for which the
|
|
2510
2520
|
settings are received. A studio settings values are received
|
|
2511
2521
|
if is 'None'.
|
|
2512
|
-
variant (Optional[
|
|
2513
|
-
|
|
2522
|
+
variant (Optional[Literal['production', 'staging']]): Name of
|
|
2523
|
+
settings variant. Used 'default_settings_variant' by default.
|
|
2514
2524
|
site_id (Optional[str]): Name of site which is used for site
|
|
2515
2525
|
overrides. Is filled with connection 'site_id' attribute
|
|
2516
2526
|
if not passed.
|
|
@@ -2560,12 +2570,106 @@ class ServerAPI(object):
|
|
|
2560
2570
|
result.raise_for_status()
|
|
2561
2571
|
return result.data
|
|
2562
2572
|
|
|
2563
|
-
def
|
|
2573
|
+
def get_bundle_settings(
|
|
2574
|
+
self,
|
|
2575
|
+
bundle_name=None,
|
|
2576
|
+
project_name=None,
|
|
2577
|
+
variant=None,
|
|
2578
|
+
site_id=None,
|
|
2579
|
+
use_site=True
|
|
2580
|
+
):
|
|
2581
|
+
"""Get complete set of settings for given data.
|
|
2582
|
+
|
|
2583
|
+
If project is not passed then studio settings are returned. If variant
|
|
2584
|
+
is not passed 'default_settings_variant' is used. If bundle name is
|
|
2585
|
+
not passed then current production/staging bundle is used, based on
|
|
2586
|
+
variant value.
|
|
2587
|
+
|
|
2588
|
+
Output contains addon settings and site settings in single dictionary.
|
|
2589
|
+
|
|
2590
|
+
TODOs:
|
|
2591
|
+
- test how it behaves if there is not any bundle.
|
|
2592
|
+
- test how it behaves if there is not any production/staging
|
|
2593
|
+
bundle.
|
|
2594
|
+
|
|
2595
|
+
Warnings:
|
|
2596
|
+
For AYON server < 0.3.0 bundle name will be ignored.
|
|
2597
|
+
|
|
2598
|
+
Example output:
|
|
2599
|
+
{
|
|
2600
|
+
"addons": [
|
|
2601
|
+
{
|
|
2602
|
+
"name": "addon-name",
|
|
2603
|
+
"version": "addon-version",
|
|
2604
|
+
"settings": {...}
|
|
2605
|
+
"siteSettings": {...}
|
|
2606
|
+
}
|
|
2607
|
+
]
|
|
2608
|
+
}
|
|
2609
|
+
|
|
2610
|
+
Returns:
|
|
2611
|
+
dict[str, Any]: All settings for single bundle.
|
|
2612
|
+
"""
|
|
2613
|
+
|
|
2614
|
+
major, minor, _, _, _ = self.server_version_tuple
|
|
2615
|
+
query_values = {
|
|
2616
|
+
key: value
|
|
2617
|
+
for key, value in (
|
|
2618
|
+
("project_name", project_name),
|
|
2619
|
+
("variant", variant or self.default_settings_variant),
|
|
2620
|
+
("bundle_name", bundle_name),
|
|
2621
|
+
)
|
|
2622
|
+
if value
|
|
2623
|
+
}
|
|
2624
|
+
if use_site:
|
|
2625
|
+
if not site_id:
|
|
2626
|
+
site_id = self.site_id
|
|
2627
|
+
if site_id:
|
|
2628
|
+
query_values["site_id"] = site_id
|
|
2629
|
+
|
|
2630
|
+
if major == 0 and minor >= 3:
|
|
2631
|
+
url = "settings"
|
|
2632
|
+
else:
|
|
2633
|
+
# Backward compatibility for AYON server < 0.3.0
|
|
2634
|
+
url = "settings/addons"
|
|
2635
|
+
query_values.pop("bundle_name", None)
|
|
2636
|
+
for new_key, old_key in (
|
|
2637
|
+
("project_name", "project"),
|
|
2638
|
+
("site_id", "site"),
|
|
2639
|
+
):
|
|
2640
|
+
if new_key in query_values:
|
|
2641
|
+
query_values[old_key] = query_values.pop(new_key)
|
|
2642
|
+
|
|
2643
|
+
query = prepare_query_string(query_values)
|
|
2644
|
+
response = self.get("{}{}".format(url, query))
|
|
2645
|
+
response.raise_for_status()
|
|
2646
|
+
return response.data
|
|
2647
|
+
|
|
2648
|
+
def get_addons_studio_settings(
|
|
2649
|
+
self,
|
|
2650
|
+
bundle_name=None,
|
|
2651
|
+
variant=None,
|
|
2652
|
+
site_id=None,
|
|
2653
|
+
use_site=True,
|
|
2654
|
+
only_values=True
|
|
2655
|
+
):
|
|
2564
2656
|
"""All addons settings in one bulk.
|
|
2565
2657
|
|
|
2658
|
+
Warnings:
|
|
2659
|
+
Behavior of this function changed with AYON server version 0.3.0.
|
|
2660
|
+
Structure of output from server changed. If using
|
|
2661
|
+
'only_values=True' then output should be same as before.
|
|
2662
|
+
|
|
2566
2663
|
Args:
|
|
2567
|
-
|
|
2568
|
-
settings
|
|
2664
|
+
bundle_name (Optional[str]): Name of bundle for which should be
|
|
2665
|
+
settings received.
|
|
2666
|
+
variant (Optional[Literal['production', 'staging']]): Name of
|
|
2667
|
+
settings variant. Used 'default_settings_variant' by default.
|
|
2668
|
+
site_id (Optional[str]): Id of site for which want to receive
|
|
2669
|
+
site overrides.
|
|
2670
|
+
use_site (bool): To force disable option of using site overrides
|
|
2671
|
+
set to 'False'. In that case won't be applied any site
|
|
2672
|
+
overrides.
|
|
2569
2673
|
only_values (Optional[bool]): Output will contain only settings
|
|
2570
2674
|
values without metadata about addons.
|
|
2571
2675
|
|
|
@@ -2573,20 +2677,28 @@ class ServerAPI(object):
|
|
|
2573
2677
|
dict[str, Any]: Settings of all addons on server.
|
|
2574
2678
|
"""
|
|
2575
2679
|
|
|
2576
|
-
|
|
2577
|
-
|
|
2578
|
-
|
|
2579
|
-
|
|
2580
|
-
|
|
2581
|
-
|
|
2582
|
-
output = response.data
|
|
2680
|
+
output = self.get_bundle_settings(
|
|
2681
|
+
bundle_name=bundle_name,
|
|
2682
|
+
variant=variant,
|
|
2683
|
+
site_id=site_id,
|
|
2684
|
+
use_site=use_site
|
|
2685
|
+
)
|
|
2583
2686
|
if only_values:
|
|
2584
|
-
|
|
2687
|
+
major, minor, patch, _, _ = self.server_version_tuple
|
|
2688
|
+
if major == 0 and minor >= 3:
|
|
2689
|
+
output = {
|
|
2690
|
+
addon["name"]: addon["settings"]
|
|
2691
|
+
for addon in output["addons"]
|
|
2692
|
+
}
|
|
2693
|
+
else:
|
|
2694
|
+
# Backward compatibility for AYON server < 0.3.0
|
|
2695
|
+
output = output["settings"]
|
|
2585
2696
|
return output
|
|
2586
2697
|
|
|
2587
2698
|
def get_addons_project_settings(
|
|
2588
2699
|
self,
|
|
2589
2700
|
project_name,
|
|
2701
|
+
bundle_name=None,
|
|
2590
2702
|
variant=None,
|
|
2591
2703
|
site_id=None,
|
|
2592
2704
|
use_site=True,
|
|
@@ -2605,11 +2717,18 @@ class ServerAPI(object):
|
|
|
2605
2717
|
argument which is by default set to 'True'. In that case output
|
|
2606
2718
|
contains only value of 'settings' key.
|
|
2607
2719
|
|
|
2720
|
+
Warnings:
|
|
2721
|
+
Behavior of this function changed with AYON server version 0.3.0.
|
|
2722
|
+
Structure of output from server changed. If using
|
|
2723
|
+
'only_values=True' then output should be same as before.
|
|
2724
|
+
|
|
2608
2725
|
Args:
|
|
2609
2726
|
project_name (str): Name of project for which are settings
|
|
2610
2727
|
received.
|
|
2611
|
-
|
|
2612
|
-
settings
|
|
2728
|
+
bundle_name (Optional[str]): Name of bundle for which should be
|
|
2729
|
+
settings received.
|
|
2730
|
+
variant (Optional[Literal['production', 'staging']]): Name of
|
|
2731
|
+
settings variant. Used 'default_settings_variant' by default.
|
|
2613
2732
|
site_id (Optional[str]): Id of site for which want to receive
|
|
2614
2733
|
site overrides.
|
|
2615
2734
|
use_site (bool): To force disable option of using site overrides
|
|
@@ -2623,27 +2742,31 @@ class ServerAPI(object):
|
|
|
2623
2742
|
project.
|
|
2624
2743
|
"""
|
|
2625
2744
|
|
|
2626
|
-
|
|
2627
|
-
"
|
|
2628
|
-
|
|
2629
|
-
|
|
2630
|
-
|
|
2631
|
-
|
|
2632
|
-
|
|
2633
|
-
|
|
2634
|
-
|
|
2635
|
-
|
|
2636
|
-
query_values["site"] = site_id
|
|
2637
|
-
query = prepare_query_string(query_values)
|
|
2638
|
-
response = self.get("settings/addons{}".format(query))
|
|
2639
|
-
response.raise_for_status()
|
|
2640
|
-
output = response.data
|
|
2745
|
+
if not project_name:
|
|
2746
|
+
raise ValueError("Project name must be passed.")
|
|
2747
|
+
|
|
2748
|
+
output = self.get_bundle_settings(
|
|
2749
|
+
project_name=project_name,
|
|
2750
|
+
bundle_name=bundle_name,
|
|
2751
|
+
variant=variant,
|
|
2752
|
+
site_id=site_id,
|
|
2753
|
+
use_site=use_site
|
|
2754
|
+
)
|
|
2641
2755
|
if only_values:
|
|
2642
|
-
|
|
2756
|
+
major, minor, patch, _, _ = self.server_version_tuple
|
|
2757
|
+
if major == 0 and minor >= 3:
|
|
2758
|
+
output = {
|
|
2759
|
+
addon["name"]: addon["settings"]
|
|
2760
|
+
for addon in output["addons"]
|
|
2761
|
+
}
|
|
2762
|
+
else:
|
|
2763
|
+
# Backward compatibility for AYON server < 0.3.0
|
|
2764
|
+
output = output["settings"]
|
|
2643
2765
|
return output
|
|
2644
2766
|
|
|
2645
2767
|
def get_addons_settings(
|
|
2646
2768
|
self,
|
|
2769
|
+
bundle_name=None,
|
|
2647
2770
|
project_name=None,
|
|
2648
2771
|
variant=None,
|
|
2649
2772
|
site_id=None,
|
|
@@ -2655,11 +2778,18 @@ class ServerAPI(object):
|
|
|
2655
2778
|
Based on 'project_name' will receive studio settings or project
|
|
2656
2779
|
settings. In case project is not passed is 'site_id' ignored.
|
|
2657
2780
|
|
|
2781
|
+
Warnings:
|
|
2782
|
+
Behavior of this function changed with AYON server version 0.3.0.
|
|
2783
|
+
Structure of output from server changed. If using
|
|
2784
|
+
'only_values=True' then output should be same as before.
|
|
2785
|
+
|
|
2658
2786
|
Args:
|
|
2787
|
+
bundle_name (Optional[str]): Name of bundle for which should be
|
|
2788
|
+
settings received.
|
|
2659
2789
|
project_name (Optional[str]): Name of project for which should be
|
|
2660
2790
|
settings received.
|
|
2661
|
-
variant (Optional[Literal[production, staging]]):
|
|
2662
|
-
|
|
2791
|
+
variant (Optional[Literal['production', 'staging']]): Name of
|
|
2792
|
+
settings variant. Used 'default_settings_variant' by default.
|
|
2663
2793
|
site_id (Optional[str]): Id of site for which want to receive
|
|
2664
2794
|
site overrides.
|
|
2665
2795
|
use_site (Optional[bool]): To force disable option of using site
|
|
@@ -2670,10 +2800,21 @@ class ServerAPI(object):
|
|
|
2670
2800
|
"""
|
|
2671
2801
|
|
|
2672
2802
|
if project_name is None:
|
|
2673
|
-
return self.get_addons_studio_settings(
|
|
2803
|
+
return self.get_addons_studio_settings(
|
|
2804
|
+
bundle_name=bundle_name,
|
|
2805
|
+
variant=variant,
|
|
2806
|
+
site_id=site_id,
|
|
2807
|
+
use_site=use_site,
|
|
2808
|
+
only_values=only_values
|
|
2809
|
+
)
|
|
2674
2810
|
|
|
2675
2811
|
return self.get_addons_project_settings(
|
|
2676
|
-
project_name,
|
|
2812
|
+
project_name=project_name,
|
|
2813
|
+
bundle_name=bundle_name,
|
|
2814
|
+
variant=variant,
|
|
2815
|
+
site_id=site_id,
|
|
2816
|
+
use_site=use_site,
|
|
2817
|
+
only_values=only_values
|
|
2677
2818
|
)
|
|
2678
2819
|
|
|
2679
2820
|
# Entity getters
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"""Package declaring Python API for Ayon server."""
|
|
2
|
-
__version__ = "0.
|
|
2
|
+
__version__ = "0.3.0"
|
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: ayon-python-api
|
|
3
|
+
Version: 0.3.0
|
|
4
|
+
Summary: AYON Python API
|
|
5
|
+
Home-page: https://github.com/ynput/ayon-python-api
|
|
6
|
+
Author: ynput.io
|
|
7
|
+
Author-email: "ynput.io" <info@ynput.io>
|
|
8
|
+
License: Apache License
|
|
9
|
+
Version 2.0, January 2004
|
|
10
|
+
http://www.apache.org/licenses/
|
|
11
|
+
|
|
12
|
+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
13
|
+
|
|
14
|
+
1. Definitions.
|
|
15
|
+
|
|
16
|
+
"License" shall mean the terms and conditions for use, reproduction,
|
|
17
|
+
and distribution as defined by Sections 1 through 9 of this document.
|
|
18
|
+
|
|
19
|
+
"Licensor" shall mean the copyright owner or entity authorized by
|
|
20
|
+
the copyright owner that is granting the License.
|
|
21
|
+
|
|
22
|
+
"Legal Entity" shall mean the union of the acting entity and all
|
|
23
|
+
other entities that control, are controlled by, or are under common
|
|
24
|
+
control with that entity. For the purposes of this definition,
|
|
25
|
+
"control" means (i) the power, direct or indirect, to cause the
|
|
26
|
+
direction or management of such entity, whether by contract or
|
|
27
|
+
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
28
|
+
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
29
|
+
|
|
30
|
+
"You" (or "Your") shall mean an individual or Legal Entity
|
|
31
|
+
exercising permissions granted by this License.
|
|
32
|
+
|
|
33
|
+
"Source" form shall mean the preferred form for making modifications,
|
|
34
|
+
including but not limited to software source code, documentation
|
|
35
|
+
source, and configuration files.
|
|
36
|
+
|
|
37
|
+
"Object" form shall mean any form resulting from mechanical
|
|
38
|
+
transformation or translation of a Source form, including but
|
|
39
|
+
not limited to compiled object code, generated documentation,
|
|
40
|
+
and conversions to other media types.
|
|
41
|
+
|
|
42
|
+
"Work" shall mean the work of authorship, whether in Source or
|
|
43
|
+
Object form, made available under the License, as indicated by a
|
|
44
|
+
copyright notice that is included in or attached to the work
|
|
45
|
+
(an example is provided in the Appendix below).
|
|
46
|
+
|
|
47
|
+
"Derivative Works" shall mean any work, whether in Source or Object
|
|
48
|
+
form, that is based on (or derived from) the Work and for which the
|
|
49
|
+
editorial revisions, annotations, elaborations, or other modifications
|
|
50
|
+
represent, as a whole, an original work of authorship. For the purposes
|
|
51
|
+
of this License, Derivative Works shall not include works that remain
|
|
52
|
+
separable from, or merely link (or bind by name) to the interfaces of,
|
|
53
|
+
the Work and Derivative Works thereof.
|
|
54
|
+
|
|
55
|
+
"Contribution" shall mean any work of authorship, including
|
|
56
|
+
the original version of the Work and any modifications or additions
|
|
57
|
+
to that Work or Derivative Works thereof, that is intentionally
|
|
58
|
+
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
59
|
+
or by an individual or Legal Entity authorized to submit on behalf of
|
|
60
|
+
the copyright owner. For the purposes of this definition, "submitted"
|
|
61
|
+
means any form of electronic, verbal, or written communication sent
|
|
62
|
+
to the Licensor or its representatives, including but not limited to
|
|
63
|
+
communication on electronic mailing lists, source code control systems,
|
|
64
|
+
and issue tracking systems that are managed by, or on behalf of, the
|
|
65
|
+
Licensor for the purpose of discussing and improving the Work, but
|
|
66
|
+
excluding communication that is conspicuously marked or otherwise
|
|
67
|
+
designated in writing by the copyright owner as "Not a Contribution."
|
|
68
|
+
|
|
69
|
+
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
70
|
+
on behalf of whom a Contribution has been received by Licensor and
|
|
71
|
+
subsequently incorporated within the Work.
|
|
72
|
+
|
|
73
|
+
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
74
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
75
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
76
|
+
copyright license to reproduce, prepare Derivative Works of,
|
|
77
|
+
publicly display, publicly perform, sublicense, and distribute the
|
|
78
|
+
Work and such Derivative Works in Source or Object form.
|
|
79
|
+
|
|
80
|
+
3. Grant of Patent License. Subject to the terms and conditions of
|
|
81
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
82
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
83
|
+
(except as stated in this section) patent license to make, have made,
|
|
84
|
+
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
85
|
+
where such license applies only to those patent claims licensable
|
|
86
|
+
by such Contributor that are necessarily infringed by their
|
|
87
|
+
Contribution(s) alone or by combination of their Contribution(s)
|
|
88
|
+
with the Work to which such Contribution(s) was submitted. If You
|
|
89
|
+
institute patent litigation against any entity (including a
|
|
90
|
+
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
91
|
+
or a Contribution incorporated within the Work constitutes direct
|
|
92
|
+
or contributory patent infringement, then any patent licenses
|
|
93
|
+
granted to You under this License for that Work shall terminate
|
|
94
|
+
as of the date such litigation is filed.
|
|
95
|
+
|
|
96
|
+
4. Redistribution. You may reproduce and distribute copies of the
|
|
97
|
+
Work or Derivative Works thereof in any medium, with or without
|
|
98
|
+
modifications, and in Source or Object form, provided that You
|
|
99
|
+
meet the following conditions:
|
|
100
|
+
|
|
101
|
+
(a) You must give any other recipients of the Work or
|
|
102
|
+
Derivative Works a copy of this License; and
|
|
103
|
+
|
|
104
|
+
(b) You must cause any modified files to carry prominent notices
|
|
105
|
+
stating that You changed the files; and
|
|
106
|
+
|
|
107
|
+
(c) You must retain, in the Source form of any Derivative Works
|
|
108
|
+
that You distribute, all copyright, patent, trademark, and
|
|
109
|
+
attribution notices from the Source form of the Work,
|
|
110
|
+
excluding those notices that do not pertain to any part of
|
|
111
|
+
the Derivative Works; and
|
|
112
|
+
|
|
113
|
+
(d) If the Work includes a "NOTICE" text file as part of its
|
|
114
|
+
distribution, then any Derivative Works that You distribute must
|
|
115
|
+
include a readable copy of the attribution notices contained
|
|
116
|
+
within such NOTICE file, excluding those notices that do not
|
|
117
|
+
pertain to any part of the Derivative Works, in at least one
|
|
118
|
+
of the following places: within a NOTICE text file distributed
|
|
119
|
+
as part of the Derivative Works; within the Source form or
|
|
120
|
+
documentation, if provided along with the Derivative Works; or,
|
|
121
|
+
within a display generated by the Derivative Works, if and
|
|
122
|
+
wherever such third-party notices normally appear. The contents
|
|
123
|
+
of the NOTICE file are for informational purposes only and
|
|
124
|
+
do not modify the License. You may add Your own attribution
|
|
125
|
+
notices within Derivative Works that You distribute, alongside
|
|
126
|
+
or as an addendum to the NOTICE text from the Work, provided
|
|
127
|
+
that such additional attribution notices cannot be construed
|
|
128
|
+
as modifying the License.
|
|
129
|
+
|
|
130
|
+
You may add Your own copyright statement to Your modifications and
|
|
131
|
+
may provide additional or different license terms and conditions
|
|
132
|
+
for use, reproduction, or distribution of Your modifications, or
|
|
133
|
+
for any such Derivative Works as a whole, provided Your use,
|
|
134
|
+
reproduction, and distribution of the Work otherwise complies with
|
|
135
|
+
the conditions stated in this License.
|
|
136
|
+
|
|
137
|
+
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
138
|
+
any Contribution intentionally submitted for inclusion in the Work
|
|
139
|
+
by You to the Licensor shall be under the terms and conditions of
|
|
140
|
+
this License, without any additional terms or conditions.
|
|
141
|
+
Notwithstanding the above, nothing herein shall supersede or modify
|
|
142
|
+
the terms of any separate license agreement you may have executed
|
|
143
|
+
with Licensor regarding such Contributions.
|
|
144
|
+
|
|
145
|
+
6. Trademarks. This License does not grant permission to use the trade
|
|
146
|
+
names, trademarks, service marks, or product names of the Licensor,
|
|
147
|
+
except as required for reasonable and customary use in describing the
|
|
148
|
+
origin of the Work and reproducing the content of the NOTICE file.
|
|
149
|
+
|
|
150
|
+
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
151
|
+
agreed to in writing, Licensor provides the Work (and each
|
|
152
|
+
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
153
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
154
|
+
implied, including, without limitation, any warranties or conditions
|
|
155
|
+
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
156
|
+
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
157
|
+
appropriateness of using or redistributing the Work and assume any
|
|
158
|
+
risks associated with Your exercise of permissions under this License.
|
|
159
|
+
|
|
160
|
+
8. Limitation of Liability. In no event and under no legal theory,
|
|
161
|
+
whether in tort (including negligence), contract, or otherwise,
|
|
162
|
+
unless required by applicable law (such as deliberate and grossly
|
|
163
|
+
negligent acts) or agreed to in writing, shall any Contributor be
|
|
164
|
+
liable to You for damages, including any direct, indirect, special,
|
|
165
|
+
incidental, or consequential damages of any character arising as a
|
|
166
|
+
result of this License or out of the use or inability to use the
|
|
167
|
+
Work (including but not limited to damages for loss of goodwill,
|
|
168
|
+
work stoppage, computer failure or malfunction, or any and all
|
|
169
|
+
other commercial damages or losses), even if such Contributor
|
|
170
|
+
has been advised of the possibility of such damages.
|
|
171
|
+
|
|
172
|
+
9. Accepting Warranty or Additional Liability. While redistributing
|
|
173
|
+
the Work or Derivative Works thereof, You may choose to offer,
|
|
174
|
+
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
175
|
+
or other liability obligations and/or rights consistent with this
|
|
176
|
+
License. However, in accepting such obligations, You may act only
|
|
177
|
+
on Your own behalf and on Your sole responsibility, not on behalf
|
|
178
|
+
of any other Contributor, and only if You agree to indemnify,
|
|
179
|
+
defend, and hold each Contributor harmless for any liability
|
|
180
|
+
incurred by, or claims asserted against, such Contributor by reason
|
|
181
|
+
of your accepting any such warranty or additional liability.
|
|
182
|
+
|
|
183
|
+
END OF TERMS AND CONDITIONS
|
|
184
|
+
|
|
185
|
+
APPENDIX: How to apply the Apache License to your work.
|
|
186
|
+
|
|
187
|
+
To apply the Apache License to your work, attach the following
|
|
188
|
+
boilerplate notice, with the fields enclosed by brackets "[]"
|
|
189
|
+
replaced with your own identifying information. (Don't include
|
|
190
|
+
the brackets!) The text should be enclosed in the appropriate
|
|
191
|
+
comment syntax for the file format. We also recommend that a
|
|
192
|
+
file or class name and description of purpose be included on the
|
|
193
|
+
same "printed page" as the copyright notice for easier
|
|
194
|
+
identification within third-party archives.
|
|
195
|
+
|
|
196
|
+
Copyright [yyyy] [name of copyright owner]
|
|
197
|
+
|
|
198
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
199
|
+
you may not use this file except in compliance with the License.
|
|
200
|
+
You may obtain a copy of the License at
|
|
201
|
+
|
|
202
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
203
|
+
|
|
204
|
+
Unless required by applicable law or agreed to in writing, software
|
|
205
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
206
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
207
|
+
See the License for the specific language governing permissions and
|
|
208
|
+
limitations under the License.
|
|
209
|
+
|
|
210
|
+
Project-URL: Repository, https://github.com/ynput/ayon-python-api
|
|
211
|
+
Project-URL: Changelog, https://github.com/ynput/ayon-python-api/releases
|
|
212
|
+
Keywords: AYON,ynput,OpenPype,vfx
|
|
213
|
+
Classifier: Development Status :: 3 - Alpha
|
|
214
|
+
Classifier: Programming Language :: Python
|
|
215
|
+
Classifier: Programming Language :: Python :: 2
|
|
216
|
+
Classifier: Programming Language :: Python :: 3
|
|
217
|
+
Description-Content-Type: text/markdown
|
|
218
|
+
License-File: LICENSE
|
|
219
|
+
|
|
220
|
+
# AYON server API
|
|
221
|
+
Python client for connection server. Client must be (at least for some time) Python 2 compatible because will be used in DCC that are "older".
|
|
222
|
+
|
|
223
|
+
AYON Python api should support connection to server with raw REST functions and prepared functionality for work with entities. Must not contain only functionality that can be used with core server functionality.
|
|
224
|
+
|
|
225
|
+
Module support singleton connection which is using `AYON_SERVER_URL` and `AYON_API_KEY` environment variables as source for connection. The singleton connection is using `ServerAPI` object. There can be created multiple connection to different server at one time, for that purpose use `ServerAPIBase` object.
|
|
226
|
+
|
|
227
|
+
## Install
|
|
228
|
+
AYON python api is available on PyPi:
|
|
229
|
+
|
|
230
|
+
pip install ayon-python-api
|
|
231
|
+
|
|
232
|
+
For development purposes you may follow [build](#build-wheel) guide to build and install custom wheels.
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
## Cloning the repository
|
|
236
|
+
Repository does not have submodules or special cases. Clone is simple as:
|
|
237
|
+
|
|
238
|
+
git clone git@github.com:ynput/ayon-python-api.git
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
## Build wheel
|
|
242
|
+
For wheel build is required a `wheel` module from PyPi:
|
|
243
|
+
|
|
244
|
+
pip install wheel
|
|
245
|
+
|
|
246
|
+
Open terminal and change directory to ayon-python-api repository and build wheel:
|
|
247
|
+
|
|
248
|
+
cd <REPOSITORY ROOT>/ayon-python-api
|
|
249
|
+
python setup.py sdist bdist_wheel
|
|
250
|
+
|
|
251
|
+
|
|
252
|
+
Once finished a wheel should be created in `./dist/ayon_python_api-<VERSION>-py3-none-any`.
|
|
253
|
+
|
|
254
|
+
---
|
|
255
|
+
|
|
256
|
+
### Wheel installation
|
|
257
|
+
The wheel file can be used to install using pip:
|
|
258
|
+
|
|
259
|
+
pip install <REPOSITORY ROOT>/dist/ayon_python_api-<VERSION>-py3-none-any
|
|
260
|
+
|
|
261
|
+
If pip complain that `ayon-python-api` is already installed just uninstall existing one first:
|
|
262
|
+
|
|
263
|
+
pip uninstall ayon-python-api
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
## TODOs
|
|
267
|
+
- Find more suitable name of `ServerAPI` objects (right now is used `con` or `connection`)
|
|
268
|
+
- Add all available CRUD operation on entities using REST
|
|
269
|
+
- Add folder and task changes to operations
|
|
270
|
+
- Enhance entity hub
|
|
271
|
+
- Missing docstrings in EntityHub -> especially entity arguments are missing
|
|
272
|
+
- Better order of arguments for entity classes
|
|
273
|
+
- Move entity hub to first place
|
|
274
|
+
- Skip those which are invalid for the entity and fake it for base or remove it from base
|
|
275
|
+
- Entity hub should use operations session to do changes
|
|
276
|
+
- Entity hub could also handle 'subset', 'version' and 'representation' entities
|
|
277
|
+
- Missing 'statuses' on project
|
|
278
|
+
- Missing 'status' on folders
|
|
279
|
+
- Missing assignees on tasks
|
|
280
|
+
- Pass docstrings and arguments definitions from `ServerAPI` methods to global functions
|
|
281
|
+
- Split `ServerAPI` into smaller chunks (somehow), the class has 4k+ lines of code
|
|
282
|
+
- Add .pyi stub for ServerAPI
|
|
283
|
+
- Missing websockets connection
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "ayon-python-api"
|
|
3
|
+
version = "0.3.0"
|
|
4
|
+
description = "AYON Python API"
|
|
5
|
+
license = {file = "LICENSE"}
|
|
6
|
+
readme = {file = "README.md", content-type = "text/markdown"}
|
|
7
|
+
authors = [
|
|
8
|
+
{name = "ynput.io", email = "info@ynput.io"}
|
|
9
|
+
]
|
|
10
|
+
keywords = ["AYON", "ynput", "OpenPype", "vfx"]
|
|
11
|
+
classifiers = [
|
|
12
|
+
"Development Status :: 3 - Alpha",
|
|
13
|
+
"Programming Language :: Python",
|
|
14
|
+
"Programming Language :: Python :: 2",
|
|
15
|
+
"Programming Language :: Python :: 3",
|
|
16
|
+
]
|
|
17
|
+
dependencies = [
|
|
18
|
+
"requests >= 2.27.1",
|
|
19
|
+
"six >= 1.15",
|
|
20
|
+
"Unidecode >= 1.2.0",
|
|
21
|
+
"appdirs >=1, <2",
|
|
22
|
+
]
|
|
23
|
+
|
|
24
|
+
[project.urls]
|
|
25
|
+
Repository = "https://github.com/ynput/ayon-python-api"
|
|
26
|
+
Changelog = "https://github.com/ynput/ayon-python-api/releases"
|
|
27
|
+
|
|
28
|
+
[build-system]
|
|
29
|
+
requires = ["poetry-core>=1.0.0"]
|
|
30
|
+
build-backend = "poetry.core.masonry.api"
|
|
31
|
+
|
|
32
|
+
[tool.poetry.dependencies]
|
|
33
|
+
python = ">=2.7,>=3.6.5"
|
|
34
|
+
requests = "^2.28.1"
|
|
35
|
+
six = "^1.15"
|
|
36
|
+
Unidecode = "1.2.0" # Python 2 support
|
|
37
|
+
appdirs = "^1.4"
|
|
38
|
+
|
|
39
|
+
[tool.poetry.dev-dependencies]
|
|
40
|
+
pytest = "^5.2"
|
ayon-python-api-0.2.2/PKG-INFO
DELETED
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.1
|
|
2
|
-
Name: ayon-python-api
|
|
3
|
-
Version: 0.2.2
|
|
4
|
-
Summary: AYON Python API
|
|
5
|
-
Home-page: https://github.com/ynput/ayon-python-api
|
|
6
|
-
Author: ynput.io
|
|
7
|
-
Author-email: info@ynput.io
|
|
8
|
-
License: Apache License (2.0)
|
|
9
|
-
Keywords: AYON,ynput,OpenPype,vfx
|
|
10
|
-
Classifier: Development Status :: 3 - Alpha
|
|
11
|
-
Classifier: Programming Language :: Python
|
|
12
|
-
Classifier: Programming Language :: Python :: 2
|
|
13
|
-
Classifier: Programming Language :: Python :: 3
|
|
14
|
-
Description-Content-Type: text/markdown
|
|
15
|
-
License-File: LICENSE
|
|
16
|
-
|
|
17
|
-
# AYON server API
|
|
18
|
-
Python client for connection server. Client must be (at least for some time) Python 2 compatible because will be used in DCC that are "older".
|
|
19
|
-
|
|
20
|
-
AYON Python api should support connection to server with raw REST functions and prepared functionality for work with entities. Must not contain only functionality that can be used with core server functionality.
|
|
21
|
-
|
|
22
|
-
Module support singleton connection which is using `AYON_SERVER_URL` and `AYON_API_KEY` environment variables as source for connection. The singleton connection is using `ServerAPI` object. There can be created multiple connection to different server at one time, for that purpose use `ServerAPIBase` object.
|
|
23
|
-
|
|
24
|
-
## Install
|
|
25
|
-
AYON python api is available on PyPi:
|
|
26
|
-
|
|
27
|
-
pip install ayon-python-api
|
|
28
|
-
|
|
29
|
-
For development purposes you may follow [build](#build-wheel) guide to build and install custom wheels.
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
## Cloning the repository
|
|
33
|
-
Repository does not have submodules or special cases. Clone is simple as:
|
|
34
|
-
|
|
35
|
-
git clone git@github.com:ynput/ayon-python-api.git
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
## Build wheel
|
|
39
|
-
For wheel build is required a `wheel` module from PyPi:
|
|
40
|
-
|
|
41
|
-
pip install wheel
|
|
42
|
-
|
|
43
|
-
Open terminal and change directory to ayon-python-api repository and build wheel:
|
|
44
|
-
|
|
45
|
-
cd <REPOSITORY ROOT>/ayon-python-api
|
|
46
|
-
python setup.py sdist bdist_wheel
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
Once finished a wheel should be created in `./dist/ayon_python_api-<VERSION>-py3-none-any`.
|
|
50
|
-
|
|
51
|
-
---
|
|
52
|
-
|
|
53
|
-
### Wheel installation
|
|
54
|
-
The wheel file can be used to install using pip:
|
|
55
|
-
|
|
56
|
-
pip install <REPOSITORY ROOT>/dist/ayon_python_api-<VERSION>-py3-none-any
|
|
57
|
-
|
|
58
|
-
If pip complain that `ayon-python-api` is already installed just uninstall existing one first:
|
|
59
|
-
|
|
60
|
-
pip uninstall ayon-python-api
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
## TODOs
|
|
64
|
-
- Find more suitable name of `ServerAPI` objects (right now is used `con` or `connection`)
|
|
65
|
-
- Add all available CRUD operation on entities using REST
|
|
66
|
-
- Add folder and task changes to operations
|
|
67
|
-
- Enhance entity hub
|
|
68
|
-
- Missing docstrings in EntityHub -> especially entity arguments are missing
|
|
69
|
-
- Better order of arguments for entity classes
|
|
70
|
-
- Move entity hub to first place
|
|
71
|
-
- Skip those which are invalid for the entity and fake it for base or remove it from base
|
|
72
|
-
- Entity hub should use operations session to do changes
|
|
73
|
-
- Entity hub could also handle 'subset', 'version' and 'representation' entities
|
|
74
|
-
- Missing 'statuses' on project
|
|
75
|
-
- Missing 'status' on folders
|
|
76
|
-
- Missing assignees on tasks
|
|
77
|
-
- Pass docstrings and arguments definitions from `ServerAPI` methods to global functions
|
|
78
|
-
- Split `ServerAPI` into smaller chunks (somehow), the class has 4k+ lines of code
|
|
79
|
-
- Add .pyi stub for ServerAPI
|
|
80
|
-
- Missing websockets connection
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.1
|
|
2
|
-
Name: ayon-python-api
|
|
3
|
-
Version: 0.2.2
|
|
4
|
-
Summary: AYON Python API
|
|
5
|
-
Home-page: https://github.com/ynput/ayon-python-api
|
|
6
|
-
Author: ynput.io
|
|
7
|
-
Author-email: info@ynput.io
|
|
8
|
-
License: Apache License (2.0)
|
|
9
|
-
Keywords: AYON,ynput,OpenPype,vfx
|
|
10
|
-
Classifier: Development Status :: 3 - Alpha
|
|
11
|
-
Classifier: Programming Language :: Python
|
|
12
|
-
Classifier: Programming Language :: Python :: 2
|
|
13
|
-
Classifier: Programming Language :: Python :: 3
|
|
14
|
-
Description-Content-Type: text/markdown
|
|
15
|
-
License-File: LICENSE
|
|
16
|
-
|
|
17
|
-
# AYON server API
|
|
18
|
-
Python client for connection server. Client must be (at least for some time) Python 2 compatible because will be used in DCC that are "older".
|
|
19
|
-
|
|
20
|
-
AYON Python api should support connection to server with raw REST functions and prepared functionality for work with entities. Must not contain only functionality that can be used with core server functionality.
|
|
21
|
-
|
|
22
|
-
Module support singleton connection which is using `AYON_SERVER_URL` and `AYON_API_KEY` environment variables as source for connection. The singleton connection is using `ServerAPI` object. There can be created multiple connection to different server at one time, for that purpose use `ServerAPIBase` object.
|
|
23
|
-
|
|
24
|
-
## Install
|
|
25
|
-
AYON python api is available on PyPi:
|
|
26
|
-
|
|
27
|
-
pip install ayon-python-api
|
|
28
|
-
|
|
29
|
-
For development purposes you may follow [build](#build-wheel) guide to build and install custom wheels.
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
## Cloning the repository
|
|
33
|
-
Repository does not have submodules or special cases. Clone is simple as:
|
|
34
|
-
|
|
35
|
-
git clone git@github.com:ynput/ayon-python-api.git
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
## Build wheel
|
|
39
|
-
For wheel build is required a `wheel` module from PyPi:
|
|
40
|
-
|
|
41
|
-
pip install wheel
|
|
42
|
-
|
|
43
|
-
Open terminal and change directory to ayon-python-api repository and build wheel:
|
|
44
|
-
|
|
45
|
-
cd <REPOSITORY ROOT>/ayon-python-api
|
|
46
|
-
python setup.py sdist bdist_wheel
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
Once finished a wheel should be created in `./dist/ayon_python_api-<VERSION>-py3-none-any`.
|
|
50
|
-
|
|
51
|
-
---
|
|
52
|
-
|
|
53
|
-
### Wheel installation
|
|
54
|
-
The wheel file can be used to install using pip:
|
|
55
|
-
|
|
56
|
-
pip install <REPOSITORY ROOT>/dist/ayon_python_api-<VERSION>-py3-none-any
|
|
57
|
-
|
|
58
|
-
If pip complain that `ayon-python-api` is already installed just uninstall existing one first:
|
|
59
|
-
|
|
60
|
-
pip uninstall ayon-python-api
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
## TODOs
|
|
64
|
-
- Find more suitable name of `ServerAPI` objects (right now is used `con` or `connection`)
|
|
65
|
-
- Add all available CRUD operation on entities using REST
|
|
66
|
-
- Add folder and task changes to operations
|
|
67
|
-
- Enhance entity hub
|
|
68
|
-
- Missing docstrings in EntityHub -> especially entity arguments are missing
|
|
69
|
-
- Better order of arguments for entity classes
|
|
70
|
-
- Move entity hub to first place
|
|
71
|
-
- Skip those which are invalid for the entity and fake it for base or remove it from base
|
|
72
|
-
- Entity hub should use operations session to do changes
|
|
73
|
-
- Entity hub could also handle 'subset', 'version' and 'representation' entities
|
|
74
|
-
- Missing 'statuses' on project
|
|
75
|
-
- Missing 'status' on folders
|
|
76
|
-
- Missing assignees on tasks
|
|
77
|
-
- Pass docstrings and arguments definitions from `ServerAPI` methods to global functions
|
|
78
|
-
- Split `ServerAPI` into smaller chunks (somehow), the class has 4k+ lines of code
|
|
79
|
-
- Add .pyi stub for ServerAPI
|
|
80
|
-
- Missing websockets connection
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
[tool.poetry]
|
|
2
|
-
name = "ayon_api"
|
|
3
|
-
version = "0.2.2"
|
|
4
|
-
description = "Python api for AYON server"
|
|
5
|
-
authors = ["ynput.io <info@ynput.io>"]
|
|
6
|
-
|
|
7
|
-
[tool.poetry.dependencies]
|
|
8
|
-
python = ">=2.7,>=3.6.5"
|
|
9
|
-
requests = "^2.28.1"
|
|
10
|
-
six = "^1.15"
|
|
11
|
-
Unidecode = "1.2.0" # Python 2 support
|
|
12
|
-
appdirs = "^1.4"
|
|
13
|
-
|
|
14
|
-
[tool.poetry.dev-dependencies]
|
|
15
|
-
pytest = "^5.2"
|
|
16
|
-
|
|
17
|
-
[build-system]
|
|
18
|
-
requires = ["poetry-core>=1.0.0"]
|
|
19
|
-
build-backend = "poetry.core.masonry.api"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ayon-python-api-0.2.2 → ayon-python-api-0.3.0}/ayon_python_api.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|