ciocore 5.1.1__py2.py3-none-any.whl → 10.0.0b3__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ciocore/VERSION +1 -1
- ciocore/__init__.py +23 -1
- ciocore/api_client.py +655 -160
- ciocore/auth/__init__.py +5 -3
- ciocore/cli.py +501 -0
- ciocore/common.py +15 -13
- ciocore/conductor_submit.py +77 -60
- ciocore/config.py +127 -13
- ciocore/data.py +162 -77
- ciocore/docsite/404.html +746 -0
- ciocore/docsite/apidoc/api_client/index.html +3605 -0
- ciocore/docsite/apidoc/apidoc/index.html +909 -0
- ciocore/docsite/apidoc/config/index.html +1652 -0
- ciocore/docsite/apidoc/data/index.html +1553 -0
- ciocore/docsite/apidoc/hardware_set/index.html +2460 -0
- ciocore/docsite/apidoc/package_environment/index.html +1507 -0
- ciocore/docsite/apidoc/package_tree/index.html +2386 -0
- ciocore/docsite/assets/_mkdocstrings.css +16 -0
- ciocore/docsite/assets/images/favicon.png +0 -0
- ciocore/docsite/assets/javascripts/bundle.471ce7a9.min.js +29 -0
- ciocore/docsite/assets/javascripts/bundle.471ce7a9.min.js.map +7 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.ar.min.js +1 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.da.min.js +18 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.de.min.js +18 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.du.min.js +18 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.el.min.js +1 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.es.min.js +18 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.fi.min.js +18 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.fr.min.js +18 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.he.min.js +1 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.hi.min.js +1 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.hu.min.js +18 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.hy.min.js +1 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.it.min.js +18 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.ja.min.js +1 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.jp.min.js +1 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.kn.min.js +1 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.ko.min.js +1 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.multi.min.js +1 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.nl.min.js +18 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.no.min.js +18 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.pt.min.js +18 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.ro.min.js +18 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.ru.min.js +18 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.sa.min.js +1 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.stemmer.support.min.js +1 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.sv.min.js +18 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.ta.min.js +1 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.te.min.js +1 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.th.min.js +1 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.tr.min.js +18 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.vi.min.js +1 -0
- ciocore/docsite/assets/javascripts/lunr/min/lunr.zh.min.js +1 -0
- ciocore/docsite/assets/javascripts/lunr/tinyseg.js +206 -0
- ciocore/docsite/assets/javascripts/lunr/wordcut.js +6708 -0
- ciocore/docsite/assets/javascripts/workers/search.b8dbb3d2.min.js +42 -0
- ciocore/docsite/assets/javascripts/workers/search.b8dbb3d2.min.js.map +7 -0
- ciocore/docsite/assets/stylesheets/main.3cba04c6.min.css +1 -0
- ciocore/docsite/assets/stylesheets/main.3cba04c6.min.css.map +1 -0
- ciocore/docsite/assets/stylesheets/palette.06af60db.min.css +1 -0
- ciocore/docsite/assets/stylesheets/palette.06af60db.min.css.map +1 -0
- ciocore/docsite/cmdline/docs/index.html +871 -0
- ciocore/docsite/cmdline/downloader/index.html +934 -0
- ciocore/docsite/cmdline/packages/index.html +878 -0
- ciocore/docsite/cmdline/uploader/index.html +995 -0
- ciocore/docsite/how-to-guides/index.html +869 -0
- ciocore/docsite/index.html +895 -0
- ciocore/docsite/logo.png +0 -0
- ciocore/docsite/objects.inv +0 -0
- ciocore/docsite/search/search_index.json +1 -0
- ciocore/docsite/sitemap.xml +3 -0
- ciocore/docsite/sitemap.xml.gz +0 -0
- ciocore/docsite/stylesheets/extra.css +26 -0
- ciocore/docsite/stylesheets/tables.css +167 -0
- ciocore/downloader/base_downloader.py +644 -0
- ciocore/downloader/download_runner_base.py +47 -0
- ciocore/downloader/job_downloader.py +119 -0
- ciocore/{downloader.py → downloader/legacy_downloader.py} +12 -9
- ciocore/downloader/log.py +73 -0
- ciocore/downloader/logging_download_runner.py +87 -0
- ciocore/downloader/perpetual_downloader.py +63 -0
- ciocore/downloader/registry.py +97 -0
- ciocore/downloader/reporter.py +135 -0
- ciocore/exceptions.py +8 -2
- ciocore/file_utils.py +51 -50
- ciocore/hardware_set.py +449 -0
- ciocore/loggeria.py +89 -20
- ciocore/package_environment.py +110 -48
- ciocore/package_query.py +182 -0
- ciocore/package_tree.py +319 -258
- ciocore/retry.py +0 -0
- ciocore/uploader/_uploader.py +547 -364
- ciocore/uploader/thread_queue_job.py +176 -0
- ciocore/uploader/upload_stats/__init__.py +3 -4
- ciocore/uploader/upload_stats/stats_formats.py +10 -4
- ciocore/validator.py +34 -2
- ciocore/worker.py +174 -151
- ciocore-10.0.0b3.dist-info/METADATA +928 -0
- ciocore-10.0.0b3.dist-info/RECORD +128 -0
- {ciocore-5.1.1.dist-info → ciocore-10.0.0b3.dist-info}/WHEEL +1 -1
- ciocore-10.0.0b3.dist-info/entry_points.txt +2 -0
- tests/instance_type_fixtures.py +175 -0
- tests/package_fixtures.py +205 -0
- tests/test_api_client.py +297 -12
- tests/test_base_downloader.py +104 -0
- tests/test_cli.py +149 -0
- tests/test_common.py +1 -7
- tests/test_config.py +40 -18
- tests/test_data.py +162 -173
- tests/test_downloader.py +118 -0
- tests/test_hardware_set.py +139 -0
- tests/test_job_downloader.py +213 -0
- tests/test_package_query.py +38 -0
- tests/test_package_tree.py +91 -291
- tests/test_submit.py +44 -18
- tests/test_uploader.py +1 -4
- ciocore/__about__.py +0 -10
- ciocore/cli/conductor.py +0 -191
- ciocore/compat.py +0 -15
- ciocore-5.1.1.data/scripts/conductor +0 -19
- ciocore-5.1.1.data/scripts/conductor.bat +0 -13
- ciocore-5.1.1.dist-info/METADATA +0 -408
- ciocore-5.1.1.dist-info/RECORD +0 -47
- tests/mocks/api_client_mock.py +0 -51
- /ciocore/{cli → downloader}/__init__.py +0 -0
- {ciocore-5.1.1.dist-info → ciocore-10.0.0b3.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,2386 @@
|
|
|
1
|
+
|
|
2
|
+
<!doctype html>
|
|
3
|
+
<html lang="en" class="no-js">
|
|
4
|
+
<head>
|
|
5
|
+
|
|
6
|
+
<meta charset="utf-8">
|
|
7
|
+
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
<meta name="author" content="Conductor Developers">
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
<link rel="prev" href="../hardware_set/">
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
<link rel="next" href="../package_environment/">
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
<link rel="icon" href="../../assets/images/favicon.png">
|
|
21
|
+
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.32">
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
<title>ciocore.package_tree - Conductor Core</title>
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
<link rel="stylesheet" href="../../assets/stylesheets/main.3cba04c6.min.css">
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
<link rel="stylesheet" href="../../assets/stylesheets/palette.06af60db.min.css">
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
46
|
+
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Raleway:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
|
|
47
|
+
<style>:root{--md-text-font:"Raleway";--md-code-font:"Roboto Mono"}</style>
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
<link rel="stylesheet" href="../../assets/_mkdocstrings.css">
|
|
52
|
+
|
|
53
|
+
<link rel="stylesheet" href="../../stylesheets/extra.css">
|
|
54
|
+
|
|
55
|
+
<link rel="stylesheet" href="../../stylesheets/tables.css">
|
|
56
|
+
|
|
57
|
+
<script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
</head>
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
<body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="custom" data-md-color-accent="custom">
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
|
|
78
|
+
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
|
|
79
|
+
<label class="md-overlay" for="__drawer"></label>
|
|
80
|
+
<div data-md-component="skip">
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
<a href="#ciocorepackage_tree" class="md-skip">
|
|
84
|
+
Skip to content
|
|
85
|
+
</a>
|
|
86
|
+
|
|
87
|
+
</div>
|
|
88
|
+
<div data-md-component="announce">
|
|
89
|
+
|
|
90
|
+
</div>
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
<header class="md-header md-header--shadow md-header--lifted" data-md-component="header">
|
|
98
|
+
<nav class="md-header__inner md-grid" aria-label="Header">
|
|
99
|
+
<a href="https://www.conductortech.com" title="Conductor Core" class="md-header__button md-logo" aria-label="Conductor Core" data-md-component="logo">
|
|
100
|
+
|
|
101
|
+
<img src="../../logo.png" alt="logo">
|
|
102
|
+
|
|
103
|
+
</a>
|
|
104
|
+
<label class="md-header__button md-icon" for="__drawer">
|
|
105
|
+
|
|
106
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
|
|
107
|
+
</label>
|
|
108
|
+
<div class="md-header__title" data-md-component="header-title">
|
|
109
|
+
<div class="md-header__ellipsis">
|
|
110
|
+
<div class="md-header__topic">
|
|
111
|
+
<span class="md-ellipsis">
|
|
112
|
+
Conductor Core
|
|
113
|
+
</span>
|
|
114
|
+
</div>
|
|
115
|
+
<div class="md-header__topic" data-md-component="header-topic">
|
|
116
|
+
<span class="md-ellipsis">
|
|
117
|
+
|
|
118
|
+
ciocore.package_tree
|
|
119
|
+
|
|
120
|
+
</span>
|
|
121
|
+
</div>
|
|
122
|
+
</div>
|
|
123
|
+
</div>
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
<form class="md-header__option" data-md-component="palette">
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
<input class="md-option" data-md-color-media="" data-md-color-scheme="slate" data-md-color-primary="custom" data-md-color-accent="custom" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_0">
|
|
132
|
+
|
|
133
|
+
<label class="md-header__button md-icon" title="Switch to light mode" for="__palette_1" hidden>
|
|
134
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m17.75 4.09-2.53 1.94.91 3.06-2.63-1.81-2.63 1.81.91-3.06-2.53-1.94L12.44 4l1.06-3 1.06 3 3.19.09m3.5 6.91-1.64 1.25.59 1.98-1.7-1.17-1.7 1.17.59-1.98L15.75 11l2.06-.05L18.5 9l.69 1.95 2.06.05m-2.28 4.95c.83-.08 1.72 1.1 1.19 1.85-.32.45-.66.87-1.08 1.27C15.17 23 8.84 23 4.94 19.07c-3.91-3.9-3.91-10.24 0-14.14.4-.4.82-.76 1.27-1.08.75-.53 1.93.36 1.85 1.19-.27 2.86.69 5.83 2.89 8.02a9.96 9.96 0 0 0 8.02 2.89m-1.64 2.02a12.08 12.08 0 0 1-7.8-3.47c-2.17-2.19-3.33-5-3.49-7.82-2.81 3.14-2.7 7.96.31 10.98 3.02 3.01 7.84 3.12 10.98.31Z"/></svg>
|
|
135
|
+
</label>
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
<input class="md-option" data-md-color-media="" data-md-color-scheme="default" data-md-color-primary="custom" data-md-color-accent="custom" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_1">
|
|
142
|
+
|
|
143
|
+
<label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_0" hidden>
|
|
144
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 7a5 5 0 0 1 5 5 5 5 0 0 1-5 5 5 5 0 0 1-5-5 5 5 0 0 1 5-5m0 2a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3m0-7 2.39 3.42C13.65 5.15 12.84 5 12 5c-.84 0-1.65.15-2.39.42L12 2M3.34 7l4.16-.35A7.2 7.2 0 0 0 5.94 8.5c-.44.74-.69 1.5-.83 2.29L3.34 7m.02 10 1.76-3.77a7.131 7.131 0 0 0 2.38 4.14L3.36 17M20.65 7l-1.77 3.79a7.023 7.023 0 0 0-2.38-4.15l4.15.36m-.01 10-4.14.36c.59-.51 1.12-1.14 1.54-1.86.42-.73.69-1.5.83-2.29L20.64 17M12 22l-2.41-3.44c.74.27 1.55.44 2.41.44.82 0 1.63-.17 2.37-.44L12 22Z"/></svg>
|
|
145
|
+
</label>
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
</form>
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
<script>var media,input,key,value,palette=__md_get("__palette");if(palette&&palette.color){"(prefers-color-scheme)"===palette.color.media&&(media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']"),palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent"));for([key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
<label class="md-header__button md-icon" for="__search">
|
|
157
|
+
|
|
158
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
|
|
159
|
+
</label>
|
|
160
|
+
<div class="md-search" data-md-component="search" role="dialog">
|
|
161
|
+
<label class="md-search__overlay" for="__search"></label>
|
|
162
|
+
<div class="md-search__inner" role="search">
|
|
163
|
+
<form class="md-search__form" name="search">
|
|
164
|
+
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
|
|
165
|
+
<label class="md-search__icon md-icon" for="__search">
|
|
166
|
+
|
|
167
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
|
|
168
|
+
|
|
169
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
|
|
170
|
+
</label>
|
|
171
|
+
<nav class="md-search__options" aria-label="Search">
|
|
172
|
+
|
|
173
|
+
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
|
|
174
|
+
|
|
175
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
|
|
176
|
+
</button>
|
|
177
|
+
</nav>
|
|
178
|
+
|
|
179
|
+
</form>
|
|
180
|
+
<div class="md-search__output">
|
|
181
|
+
<div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
|
|
182
|
+
<div class="md-search-result" data-md-component="search-result">
|
|
183
|
+
<div class="md-search-result__meta">
|
|
184
|
+
Initializing search
|
|
185
|
+
</div>
|
|
186
|
+
<ol class="md-search-result__list" role="presentation"></ol>
|
|
187
|
+
</div>
|
|
188
|
+
</div>
|
|
189
|
+
</div>
|
|
190
|
+
</div>
|
|
191
|
+
</div>
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
</nav>
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
<nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
|
|
199
|
+
<div class="md-grid">
|
|
200
|
+
<ul class="md-tabs__list">
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
<li class="md-tabs__item">
|
|
207
|
+
<a href="../.." class="md-tabs__link">
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
|
|
212
|
+
Overview
|
|
213
|
+
|
|
214
|
+
</a>
|
|
215
|
+
</li>
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
<li class="md-tabs__item">
|
|
226
|
+
<a href="../../cmdline/uploader/" class="md-tabs__link">
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
CLI
|
|
230
|
+
|
|
231
|
+
</a>
|
|
232
|
+
</li>
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
|
|
245
|
+
<li class="md-tabs__item md-tabs__item--active">
|
|
246
|
+
<a href="../apidoc/" class="md-tabs__link">
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
API
|
|
250
|
+
|
|
251
|
+
</a>
|
|
252
|
+
</li>
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
|
|
258
|
+
|
|
259
|
+
|
|
260
|
+
|
|
261
|
+
<li class="md-tabs__item">
|
|
262
|
+
<a href="../../how-to-guides/" class="md-tabs__link">
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
|
|
267
|
+
How to
|
|
268
|
+
|
|
269
|
+
</a>
|
|
270
|
+
</li>
|
|
271
|
+
|
|
272
|
+
|
|
273
|
+
|
|
274
|
+
</ul>
|
|
275
|
+
</div>
|
|
276
|
+
</nav>
|
|
277
|
+
|
|
278
|
+
|
|
279
|
+
</header>
|
|
280
|
+
|
|
281
|
+
<div class="md-container" data-md-component="container">
|
|
282
|
+
|
|
283
|
+
|
|
284
|
+
|
|
285
|
+
|
|
286
|
+
<main class="md-main" data-md-component="main">
|
|
287
|
+
<div class="md-main__inner md-grid">
|
|
288
|
+
|
|
289
|
+
|
|
290
|
+
|
|
291
|
+
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
|
|
292
|
+
<div class="md-sidebar__scrollwrap">
|
|
293
|
+
<div class="md-sidebar__inner">
|
|
294
|
+
|
|
295
|
+
|
|
296
|
+
|
|
297
|
+
|
|
298
|
+
|
|
299
|
+
|
|
300
|
+
<nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0">
|
|
301
|
+
<label class="md-nav__title" for="__drawer">
|
|
302
|
+
<a href="https://www.conductortech.com" title="Conductor Core" class="md-nav__button md-logo" aria-label="Conductor Core" data-md-component="logo">
|
|
303
|
+
|
|
304
|
+
<img src="../../logo.png" alt="logo">
|
|
305
|
+
|
|
306
|
+
</a>
|
|
307
|
+
Conductor Core
|
|
308
|
+
</label>
|
|
309
|
+
|
|
310
|
+
<ul class="md-nav__list" data-md-scrollfix>
|
|
311
|
+
|
|
312
|
+
|
|
313
|
+
|
|
314
|
+
|
|
315
|
+
|
|
316
|
+
|
|
317
|
+
|
|
318
|
+
<li class="md-nav__item">
|
|
319
|
+
<a href="../.." class="md-nav__link">
|
|
320
|
+
|
|
321
|
+
|
|
322
|
+
<span class="md-ellipsis">
|
|
323
|
+
Overview
|
|
324
|
+
</span>
|
|
325
|
+
|
|
326
|
+
|
|
327
|
+
</a>
|
|
328
|
+
</li>
|
|
329
|
+
|
|
330
|
+
|
|
331
|
+
|
|
332
|
+
|
|
333
|
+
|
|
334
|
+
|
|
335
|
+
|
|
336
|
+
|
|
337
|
+
|
|
338
|
+
|
|
339
|
+
|
|
340
|
+
|
|
341
|
+
|
|
342
|
+
|
|
343
|
+
|
|
344
|
+
|
|
345
|
+
<li class="md-nav__item md-nav__item--nested">
|
|
346
|
+
|
|
347
|
+
|
|
348
|
+
|
|
349
|
+
|
|
350
|
+
|
|
351
|
+
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_2" >
|
|
352
|
+
|
|
353
|
+
|
|
354
|
+
<label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
|
|
355
|
+
|
|
356
|
+
|
|
357
|
+
<span class="md-ellipsis">
|
|
358
|
+
CLI
|
|
359
|
+
</span>
|
|
360
|
+
|
|
361
|
+
|
|
362
|
+
<span class="md-nav__icon md-icon"></span>
|
|
363
|
+
</label>
|
|
364
|
+
|
|
365
|
+
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
|
|
366
|
+
<label class="md-nav__title" for="__nav_2">
|
|
367
|
+
<span class="md-nav__icon md-icon"></span>
|
|
368
|
+
CLI
|
|
369
|
+
</label>
|
|
370
|
+
<ul class="md-nav__list" data-md-scrollfix>
|
|
371
|
+
|
|
372
|
+
|
|
373
|
+
|
|
374
|
+
|
|
375
|
+
|
|
376
|
+
|
|
377
|
+
|
|
378
|
+
<li class="md-nav__item">
|
|
379
|
+
<a href="../../cmdline/uploader/" class="md-nav__link">
|
|
380
|
+
|
|
381
|
+
|
|
382
|
+
<span class="md-ellipsis">
|
|
383
|
+
Uploader
|
|
384
|
+
</span>
|
|
385
|
+
|
|
386
|
+
|
|
387
|
+
</a>
|
|
388
|
+
</li>
|
|
389
|
+
|
|
390
|
+
|
|
391
|
+
|
|
392
|
+
|
|
393
|
+
|
|
394
|
+
|
|
395
|
+
|
|
396
|
+
|
|
397
|
+
|
|
398
|
+
|
|
399
|
+
<li class="md-nav__item">
|
|
400
|
+
<a href="../../cmdline/downloader/" class="md-nav__link">
|
|
401
|
+
|
|
402
|
+
|
|
403
|
+
<span class="md-ellipsis">
|
|
404
|
+
Downloader
|
|
405
|
+
</span>
|
|
406
|
+
|
|
407
|
+
|
|
408
|
+
</a>
|
|
409
|
+
</li>
|
|
410
|
+
|
|
411
|
+
|
|
412
|
+
|
|
413
|
+
|
|
414
|
+
|
|
415
|
+
|
|
416
|
+
|
|
417
|
+
|
|
418
|
+
|
|
419
|
+
|
|
420
|
+
<li class="md-nav__item">
|
|
421
|
+
<a href="../../cmdline/packages/" class="md-nav__link">
|
|
422
|
+
|
|
423
|
+
|
|
424
|
+
<span class="md-ellipsis">
|
|
425
|
+
Packages
|
|
426
|
+
</span>
|
|
427
|
+
|
|
428
|
+
|
|
429
|
+
</a>
|
|
430
|
+
</li>
|
|
431
|
+
|
|
432
|
+
|
|
433
|
+
|
|
434
|
+
|
|
435
|
+
|
|
436
|
+
|
|
437
|
+
|
|
438
|
+
|
|
439
|
+
|
|
440
|
+
|
|
441
|
+
<li class="md-nav__item">
|
|
442
|
+
<a href="../../cmdline/docs/" class="md-nav__link">
|
|
443
|
+
|
|
444
|
+
|
|
445
|
+
<span class="md-ellipsis">
|
|
446
|
+
Docs
|
|
447
|
+
</span>
|
|
448
|
+
|
|
449
|
+
|
|
450
|
+
</a>
|
|
451
|
+
</li>
|
|
452
|
+
|
|
453
|
+
|
|
454
|
+
|
|
455
|
+
|
|
456
|
+
</ul>
|
|
457
|
+
</nav>
|
|
458
|
+
|
|
459
|
+
</li>
|
|
460
|
+
|
|
461
|
+
|
|
462
|
+
|
|
463
|
+
|
|
464
|
+
|
|
465
|
+
|
|
466
|
+
|
|
467
|
+
|
|
468
|
+
|
|
469
|
+
|
|
470
|
+
|
|
471
|
+
|
|
472
|
+
|
|
473
|
+
|
|
474
|
+
|
|
475
|
+
|
|
476
|
+
|
|
477
|
+
|
|
478
|
+
|
|
479
|
+
|
|
480
|
+
|
|
481
|
+
<li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
|
|
482
|
+
|
|
483
|
+
|
|
484
|
+
|
|
485
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" checked>
|
|
486
|
+
|
|
487
|
+
|
|
488
|
+
<label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="">
|
|
489
|
+
|
|
490
|
+
|
|
491
|
+
<span class="md-ellipsis">
|
|
492
|
+
API
|
|
493
|
+
</span>
|
|
494
|
+
|
|
495
|
+
|
|
496
|
+
<span class="md-nav__icon md-icon"></span>
|
|
497
|
+
</label>
|
|
498
|
+
|
|
499
|
+
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="true">
|
|
500
|
+
<label class="md-nav__title" for="__nav_3">
|
|
501
|
+
<span class="md-nav__icon md-icon"></span>
|
|
502
|
+
API
|
|
503
|
+
</label>
|
|
504
|
+
<ul class="md-nav__list" data-md-scrollfix>
|
|
505
|
+
|
|
506
|
+
|
|
507
|
+
|
|
508
|
+
|
|
509
|
+
|
|
510
|
+
|
|
511
|
+
|
|
512
|
+
<li class="md-nav__item">
|
|
513
|
+
<a href="../apidoc/" class="md-nav__link">
|
|
514
|
+
|
|
515
|
+
|
|
516
|
+
<span class="md-ellipsis">
|
|
517
|
+
Api Overview
|
|
518
|
+
</span>
|
|
519
|
+
|
|
520
|
+
|
|
521
|
+
</a>
|
|
522
|
+
</li>
|
|
523
|
+
|
|
524
|
+
|
|
525
|
+
|
|
526
|
+
|
|
527
|
+
|
|
528
|
+
|
|
529
|
+
|
|
530
|
+
|
|
531
|
+
|
|
532
|
+
|
|
533
|
+
<li class="md-nav__item">
|
|
534
|
+
<a href="../api_client/" class="md-nav__link">
|
|
535
|
+
|
|
536
|
+
|
|
537
|
+
<span class="md-ellipsis">
|
|
538
|
+
ciocore.api_client
|
|
539
|
+
</span>
|
|
540
|
+
|
|
541
|
+
|
|
542
|
+
</a>
|
|
543
|
+
</li>
|
|
544
|
+
|
|
545
|
+
|
|
546
|
+
|
|
547
|
+
|
|
548
|
+
|
|
549
|
+
|
|
550
|
+
|
|
551
|
+
|
|
552
|
+
|
|
553
|
+
|
|
554
|
+
<li class="md-nav__item">
|
|
555
|
+
<a href="../config/" class="md-nav__link">
|
|
556
|
+
|
|
557
|
+
|
|
558
|
+
<span class="md-ellipsis">
|
|
559
|
+
ciocore.config
|
|
560
|
+
</span>
|
|
561
|
+
|
|
562
|
+
|
|
563
|
+
</a>
|
|
564
|
+
</li>
|
|
565
|
+
|
|
566
|
+
|
|
567
|
+
|
|
568
|
+
|
|
569
|
+
|
|
570
|
+
|
|
571
|
+
|
|
572
|
+
|
|
573
|
+
|
|
574
|
+
|
|
575
|
+
<li class="md-nav__item">
|
|
576
|
+
<a href="../data/" class="md-nav__link">
|
|
577
|
+
|
|
578
|
+
|
|
579
|
+
<span class="md-ellipsis">
|
|
580
|
+
ciocore.data
|
|
581
|
+
</span>
|
|
582
|
+
|
|
583
|
+
|
|
584
|
+
</a>
|
|
585
|
+
</li>
|
|
586
|
+
|
|
587
|
+
|
|
588
|
+
|
|
589
|
+
|
|
590
|
+
|
|
591
|
+
|
|
592
|
+
|
|
593
|
+
|
|
594
|
+
|
|
595
|
+
|
|
596
|
+
<li class="md-nav__item">
|
|
597
|
+
<a href="../hardware_set/" class="md-nav__link">
|
|
598
|
+
|
|
599
|
+
|
|
600
|
+
<span class="md-ellipsis">
|
|
601
|
+
ciocore.hardware_set
|
|
602
|
+
</span>
|
|
603
|
+
|
|
604
|
+
|
|
605
|
+
</a>
|
|
606
|
+
</li>
|
|
607
|
+
|
|
608
|
+
|
|
609
|
+
|
|
610
|
+
|
|
611
|
+
|
|
612
|
+
|
|
613
|
+
|
|
614
|
+
|
|
615
|
+
|
|
616
|
+
|
|
617
|
+
|
|
618
|
+
|
|
619
|
+
<li class="md-nav__item md-nav__item--active">
|
|
620
|
+
|
|
621
|
+
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
|
|
622
|
+
|
|
623
|
+
|
|
624
|
+
|
|
625
|
+
|
|
626
|
+
|
|
627
|
+
<label class="md-nav__link md-nav__link--active" for="__toc">
|
|
628
|
+
|
|
629
|
+
|
|
630
|
+
<span class="md-ellipsis">
|
|
631
|
+
ciocore.package_tree
|
|
632
|
+
</span>
|
|
633
|
+
|
|
634
|
+
|
|
635
|
+
<span class="md-nav__icon md-icon"></span>
|
|
636
|
+
</label>
|
|
637
|
+
|
|
638
|
+
<a href="./" class="md-nav__link md-nav__link--active">
|
|
639
|
+
|
|
640
|
+
|
|
641
|
+
<span class="md-ellipsis">
|
|
642
|
+
ciocore.package_tree
|
|
643
|
+
</span>
|
|
644
|
+
|
|
645
|
+
|
|
646
|
+
</a>
|
|
647
|
+
|
|
648
|
+
|
|
649
|
+
|
|
650
|
+
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
|
651
|
+
|
|
652
|
+
|
|
653
|
+
|
|
654
|
+
|
|
655
|
+
|
|
656
|
+
|
|
657
|
+
<label class="md-nav__title" for="__toc">
|
|
658
|
+
<span class="md-nav__icon md-icon"></span>
|
|
659
|
+
Table of contents
|
|
660
|
+
</label>
|
|
661
|
+
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
|
662
|
+
|
|
663
|
+
<li class="md-nav__item">
|
|
664
|
+
<a href="#ciocore.package_tree" class="md-nav__link">
|
|
665
|
+
<span class="md-ellipsis">
|
|
666
|
+
ciocore.package_tree
|
|
667
|
+
</span>
|
|
668
|
+
</a>
|
|
669
|
+
|
|
670
|
+
</li>
|
|
671
|
+
|
|
672
|
+
<li class="md-nav__item">
|
|
673
|
+
<a href="#ciocore.package_tree.PackageTree" class="md-nav__link">
|
|
674
|
+
<span class="md-ellipsis">
|
|
675
|
+
PackageTree
|
|
676
|
+
</span>
|
|
677
|
+
</a>
|
|
678
|
+
|
|
679
|
+
<nav class="md-nav" aria-label="PackageTree">
|
|
680
|
+
<ul class="md-nav__list">
|
|
681
|
+
|
|
682
|
+
<li class="md-nav__item">
|
|
683
|
+
<a href="#ciocore.package_tree.PackageTree.__init__" class="md-nav__link">
|
|
684
|
+
<span class="md-ellipsis">
|
|
685
|
+
__init__()
|
|
686
|
+
</span>
|
|
687
|
+
</a>
|
|
688
|
+
|
|
689
|
+
</li>
|
|
690
|
+
|
|
691
|
+
<li class="md-nav__item">
|
|
692
|
+
<a href="#ciocore.package_tree.PackageTree.supported_host_names" class="md-nav__link">
|
|
693
|
+
<span class="md-ellipsis">
|
|
694
|
+
supported_host_names()
|
|
695
|
+
</span>
|
|
696
|
+
</a>
|
|
697
|
+
|
|
698
|
+
</li>
|
|
699
|
+
|
|
700
|
+
<li class="md-nav__item">
|
|
701
|
+
<a href="#ciocore.package_tree.PackageTree.supported_plugins" class="md-nav__link">
|
|
702
|
+
<span class="md-ellipsis">
|
|
703
|
+
supported_plugins()
|
|
704
|
+
</span>
|
|
705
|
+
</a>
|
|
706
|
+
|
|
707
|
+
</li>
|
|
708
|
+
|
|
709
|
+
<li class="md-nav__item">
|
|
710
|
+
<a href="#ciocore.package_tree.PackageTree.find_by_name" class="md-nav__link">
|
|
711
|
+
<span class="md-ellipsis">
|
|
712
|
+
find_by_name()
|
|
713
|
+
</span>
|
|
714
|
+
</a>
|
|
715
|
+
|
|
716
|
+
</li>
|
|
717
|
+
|
|
718
|
+
<li class="md-nav__item">
|
|
719
|
+
<a href="#ciocore.package_tree.PackageTree.find_by_path" class="md-nav__link">
|
|
720
|
+
<span class="md-ellipsis">
|
|
721
|
+
find_by_path()
|
|
722
|
+
</span>
|
|
723
|
+
</a>
|
|
724
|
+
|
|
725
|
+
</li>
|
|
726
|
+
|
|
727
|
+
<li class="md-nav__item">
|
|
728
|
+
<a href="#ciocore.package_tree.PackageTree.to_path_list" class="md-nav__link">
|
|
729
|
+
<span class="md-ellipsis">
|
|
730
|
+
to_path_list()
|
|
731
|
+
</span>
|
|
732
|
+
</a>
|
|
733
|
+
|
|
734
|
+
</li>
|
|
735
|
+
|
|
736
|
+
<li class="md-nav__item">
|
|
737
|
+
<a href="#ciocore.package_tree.PackageTree.platforms" class="md-nav__link">
|
|
738
|
+
<span class="md-ellipsis">
|
|
739
|
+
platforms()
|
|
740
|
+
</span>
|
|
741
|
+
</a>
|
|
742
|
+
|
|
743
|
+
</li>
|
|
744
|
+
|
|
745
|
+
<li class="md-nav__item">
|
|
746
|
+
<a href="#ciocore.package_tree.PackageTree.json" class="md-nav__link">
|
|
747
|
+
<span class="md-ellipsis">
|
|
748
|
+
json()
|
|
749
|
+
</span>
|
|
750
|
+
</a>
|
|
751
|
+
|
|
752
|
+
</li>
|
|
753
|
+
|
|
754
|
+
<li class="md-nav__item">
|
|
755
|
+
<a href="#ciocore.package_tree.PackageTree.as_dict" class="md-nav__link">
|
|
756
|
+
<span class="md-ellipsis">
|
|
757
|
+
as_dict()
|
|
758
|
+
</span>
|
|
759
|
+
</a>
|
|
760
|
+
|
|
761
|
+
</li>
|
|
762
|
+
|
|
763
|
+
</ul>
|
|
764
|
+
</nav>
|
|
765
|
+
|
|
766
|
+
</li>
|
|
767
|
+
|
|
768
|
+
<li class="md-nav__item">
|
|
769
|
+
<a href="#ciocore.package_tree.to_name" class="md-nav__link">
|
|
770
|
+
<span class="md-ellipsis">
|
|
771
|
+
to_name()
|
|
772
|
+
</span>
|
|
773
|
+
</a>
|
|
774
|
+
|
|
775
|
+
</li>
|
|
776
|
+
|
|
777
|
+
</ul>
|
|
778
|
+
|
|
779
|
+
</nav>
|
|
780
|
+
|
|
781
|
+
</li>
|
|
782
|
+
|
|
783
|
+
|
|
784
|
+
|
|
785
|
+
|
|
786
|
+
|
|
787
|
+
|
|
788
|
+
|
|
789
|
+
|
|
790
|
+
|
|
791
|
+
|
|
792
|
+
<li class="md-nav__item">
|
|
793
|
+
<a href="../package_environment/" class="md-nav__link">
|
|
794
|
+
|
|
795
|
+
|
|
796
|
+
<span class="md-ellipsis">
|
|
797
|
+
ciocore.package_environment
|
|
798
|
+
</span>
|
|
799
|
+
|
|
800
|
+
|
|
801
|
+
</a>
|
|
802
|
+
</li>
|
|
803
|
+
|
|
804
|
+
|
|
805
|
+
|
|
806
|
+
|
|
807
|
+
</ul>
|
|
808
|
+
</nav>
|
|
809
|
+
|
|
810
|
+
</li>
|
|
811
|
+
|
|
812
|
+
|
|
813
|
+
|
|
814
|
+
|
|
815
|
+
|
|
816
|
+
|
|
817
|
+
|
|
818
|
+
|
|
819
|
+
|
|
820
|
+
<li class="md-nav__item">
|
|
821
|
+
<a href="../../how-to-guides/" class="md-nav__link">
|
|
822
|
+
|
|
823
|
+
|
|
824
|
+
<span class="md-ellipsis">
|
|
825
|
+
How to
|
|
826
|
+
</span>
|
|
827
|
+
|
|
828
|
+
|
|
829
|
+
</a>
|
|
830
|
+
</li>
|
|
831
|
+
|
|
832
|
+
|
|
833
|
+
|
|
834
|
+
</ul>
|
|
835
|
+
</nav>
|
|
836
|
+
</div>
|
|
837
|
+
</div>
|
|
838
|
+
</div>
|
|
839
|
+
|
|
840
|
+
|
|
841
|
+
|
|
842
|
+
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
|
|
843
|
+
<div class="md-sidebar__scrollwrap">
|
|
844
|
+
<div class="md-sidebar__inner">
|
|
845
|
+
|
|
846
|
+
|
|
847
|
+
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
|
848
|
+
|
|
849
|
+
|
|
850
|
+
|
|
851
|
+
|
|
852
|
+
|
|
853
|
+
|
|
854
|
+
<label class="md-nav__title" for="__toc">
|
|
855
|
+
<span class="md-nav__icon md-icon"></span>
|
|
856
|
+
Table of contents
|
|
857
|
+
</label>
|
|
858
|
+
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
|
859
|
+
|
|
860
|
+
<li class="md-nav__item">
|
|
861
|
+
<a href="#ciocore.package_tree" class="md-nav__link">
|
|
862
|
+
<span class="md-ellipsis">
|
|
863
|
+
ciocore.package_tree
|
|
864
|
+
</span>
|
|
865
|
+
</a>
|
|
866
|
+
|
|
867
|
+
</li>
|
|
868
|
+
|
|
869
|
+
<li class="md-nav__item">
|
|
870
|
+
<a href="#ciocore.package_tree.PackageTree" class="md-nav__link">
|
|
871
|
+
<span class="md-ellipsis">
|
|
872
|
+
PackageTree
|
|
873
|
+
</span>
|
|
874
|
+
</a>
|
|
875
|
+
|
|
876
|
+
<nav class="md-nav" aria-label="PackageTree">
|
|
877
|
+
<ul class="md-nav__list">
|
|
878
|
+
|
|
879
|
+
<li class="md-nav__item">
|
|
880
|
+
<a href="#ciocore.package_tree.PackageTree.__init__" class="md-nav__link">
|
|
881
|
+
<span class="md-ellipsis">
|
|
882
|
+
__init__()
|
|
883
|
+
</span>
|
|
884
|
+
</a>
|
|
885
|
+
|
|
886
|
+
</li>
|
|
887
|
+
|
|
888
|
+
<li class="md-nav__item">
|
|
889
|
+
<a href="#ciocore.package_tree.PackageTree.supported_host_names" class="md-nav__link">
|
|
890
|
+
<span class="md-ellipsis">
|
|
891
|
+
supported_host_names()
|
|
892
|
+
</span>
|
|
893
|
+
</a>
|
|
894
|
+
|
|
895
|
+
</li>
|
|
896
|
+
|
|
897
|
+
<li class="md-nav__item">
|
|
898
|
+
<a href="#ciocore.package_tree.PackageTree.supported_plugins" class="md-nav__link">
|
|
899
|
+
<span class="md-ellipsis">
|
|
900
|
+
supported_plugins()
|
|
901
|
+
</span>
|
|
902
|
+
</a>
|
|
903
|
+
|
|
904
|
+
</li>
|
|
905
|
+
|
|
906
|
+
<li class="md-nav__item">
|
|
907
|
+
<a href="#ciocore.package_tree.PackageTree.find_by_name" class="md-nav__link">
|
|
908
|
+
<span class="md-ellipsis">
|
|
909
|
+
find_by_name()
|
|
910
|
+
</span>
|
|
911
|
+
</a>
|
|
912
|
+
|
|
913
|
+
</li>
|
|
914
|
+
|
|
915
|
+
<li class="md-nav__item">
|
|
916
|
+
<a href="#ciocore.package_tree.PackageTree.find_by_path" class="md-nav__link">
|
|
917
|
+
<span class="md-ellipsis">
|
|
918
|
+
find_by_path()
|
|
919
|
+
</span>
|
|
920
|
+
</a>
|
|
921
|
+
|
|
922
|
+
</li>
|
|
923
|
+
|
|
924
|
+
<li class="md-nav__item">
|
|
925
|
+
<a href="#ciocore.package_tree.PackageTree.to_path_list" class="md-nav__link">
|
|
926
|
+
<span class="md-ellipsis">
|
|
927
|
+
to_path_list()
|
|
928
|
+
</span>
|
|
929
|
+
</a>
|
|
930
|
+
|
|
931
|
+
</li>
|
|
932
|
+
|
|
933
|
+
<li class="md-nav__item">
|
|
934
|
+
<a href="#ciocore.package_tree.PackageTree.platforms" class="md-nav__link">
|
|
935
|
+
<span class="md-ellipsis">
|
|
936
|
+
platforms()
|
|
937
|
+
</span>
|
|
938
|
+
</a>
|
|
939
|
+
|
|
940
|
+
</li>
|
|
941
|
+
|
|
942
|
+
<li class="md-nav__item">
|
|
943
|
+
<a href="#ciocore.package_tree.PackageTree.json" class="md-nav__link">
|
|
944
|
+
<span class="md-ellipsis">
|
|
945
|
+
json()
|
|
946
|
+
</span>
|
|
947
|
+
</a>
|
|
948
|
+
|
|
949
|
+
</li>
|
|
950
|
+
|
|
951
|
+
<li class="md-nav__item">
|
|
952
|
+
<a href="#ciocore.package_tree.PackageTree.as_dict" class="md-nav__link">
|
|
953
|
+
<span class="md-ellipsis">
|
|
954
|
+
as_dict()
|
|
955
|
+
</span>
|
|
956
|
+
</a>
|
|
957
|
+
|
|
958
|
+
</li>
|
|
959
|
+
|
|
960
|
+
</ul>
|
|
961
|
+
</nav>
|
|
962
|
+
|
|
963
|
+
</li>
|
|
964
|
+
|
|
965
|
+
<li class="md-nav__item">
|
|
966
|
+
<a href="#ciocore.package_tree.to_name" class="md-nav__link">
|
|
967
|
+
<span class="md-ellipsis">
|
|
968
|
+
to_name()
|
|
969
|
+
</span>
|
|
970
|
+
</a>
|
|
971
|
+
|
|
972
|
+
</li>
|
|
973
|
+
|
|
974
|
+
</ul>
|
|
975
|
+
|
|
976
|
+
</nav>
|
|
977
|
+
</div>
|
|
978
|
+
</div>
|
|
979
|
+
</div>
|
|
980
|
+
|
|
981
|
+
|
|
982
|
+
|
|
983
|
+
<div class="md-content" data-md-component="content">
|
|
984
|
+
<article class="md-content__inner md-typeset">
|
|
985
|
+
|
|
986
|
+
|
|
987
|
+
|
|
988
|
+
|
|
989
|
+
<h1 id="ciocorepackage_tree">ciocore.package_tree</h1>
|
|
990
|
+
|
|
991
|
+
|
|
992
|
+
<div class="doc doc-object doc-module">
|
|
993
|
+
|
|
994
|
+
<a id="ciocore.package_tree"></a>
|
|
995
|
+
<div class="doc doc-contents first">
|
|
996
|
+
|
|
997
|
+
<p>A class to provide available packages as DAG structure. In reality however, the structure is just two levels deep: <strong>hosts</strong> and <strong>plugins</strong>. </p>
|
|
998
|
+
<ul>
|
|
999
|
+
<li>DCCs such as <strong>Maya</strong> and <strong>Cinema4D</strong> are top-level host packages. </li>
|
|
1000
|
+
<li>Renderers and other plugins are children of those hosts.</li>
|
|
1001
|
+
</ul>
|
|
1002
|
+
<p>Methods are provided to traverse the tree to find packages by name, version, platform and so on. If you are writing submission tools there's no need to create a Package tree directly. It is recommended to use the singleton module: <a href="/data/">ciocore.data</a>.</p>
|
|
1003
|
+
<p>The only functions you should need from this module are:</p>
|
|
1004
|
+
<ul>
|
|
1005
|
+
<li><a href="/package_tree/#ciocore.package_tree.PackageTree.supported_host_names">supported_host_names()</a></li>
|
|
1006
|
+
<li><a href="/package_tree/#ciocore.package_tree.PackageTree.supported_plugins">supported_plugins()</a></li>
|
|
1007
|
+
</ul>
|
|
1008
|
+
|
|
1009
|
+
|
|
1010
|
+
|
|
1011
|
+
<div class="doc doc-children">
|
|
1012
|
+
|
|
1013
|
+
|
|
1014
|
+
|
|
1015
|
+
|
|
1016
|
+
|
|
1017
|
+
|
|
1018
|
+
|
|
1019
|
+
|
|
1020
|
+
|
|
1021
|
+
|
|
1022
|
+
<div class="doc doc-object doc-class">
|
|
1023
|
+
|
|
1024
|
+
|
|
1025
|
+
|
|
1026
|
+
<h2 id="ciocore.package_tree.PackageTree" class="doc doc-heading">
|
|
1027
|
+
<code>
|
|
1028
|
+
PackageTree </code>
|
|
1029
|
+
|
|
1030
|
+
|
|
1031
|
+
|
|
1032
|
+
</h2>
|
|
1033
|
+
|
|
1034
|
+
<div class="doc doc-contents ">
|
|
1035
|
+
|
|
1036
|
+
|
|
1037
|
+
<details class="quote">
|
|
1038
|
+
<summary>Source code in <code>ciocore/package_tree.py</code></summary>
|
|
1039
|
+
<div class="highlight"><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">PackageTree</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
|
1040
|
+
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">packages</span><span class="p">,</span> <span class="o">*</span><span class="n">host_products</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
1041
|
+
<span class="w"> </span><span class="sd">"""Build the tree with a list of packages.</span>
|
|
1042
|
+
|
|
1043
|
+
<span class="sd"> Args:</span>
|
|
1044
|
+
<span class="sd"> packages (list): List of packages direct from the [Conductor packages endpoint](https://dashboard.conductortech.com/api/v1/ee/packages).</span>
|
|
1045
|
+
|
|
1046
|
+
<span class="sd"> *host_products: Filter the tree to contain only top-level host packages of products specified in this list and their plugins. If there are no host_products specified, and the product keyword is omitted, the tree contains all packages.</span>
|
|
1047
|
+
|
|
1048
|
+
<span class="sd"> Keyword Args:</span>
|
|
1049
|
+
<span class="sd"> product (str): Build the tree from versions of a single product and its compatible plugins. Defaults to `None`, in which case the tree is built from all packages. It is an error to specify both host_products and product. If a nonexistent product is given, the PackageTree is empty. By specifying `product`, you can build the object based on a single plugin product.</span>
|
|
1050
|
+
<span class="sd"> platforms (set): Build the tree from versions for a specific platform. Defaults to the set `{"linux", "windows"}`.</span>
|
|
1051
|
+
|
|
1052
|
+
<span class="sd"> Raises:</span>
|
|
1053
|
+
<span class="sd"> KeyError: An invalid platform was provided.</span>
|
|
1054
|
+
<span class="sd"> ValueError: Cannot choose both product and host_products.</span>
|
|
1055
|
+
|
|
1056
|
+
<span class="sd"> Example:</span>
|
|
1057
|
+
<span class="sd"> >>> from ciocore import api_client, package_tree</span>
|
|
1058
|
+
<span class="sd"> # Request packages as a flat list from Conductor.</span>
|
|
1059
|
+
<span class="sd"> >>> packages = api_client.request_software_packages()</span>
|
|
1060
|
+
<span class="sd"> # Build tree of dependencies from packages list</span>
|
|
1061
|
+
<span class="sd"> >>> pt = package_tree.PackageTree(packages, "cinema4d", "maya-io")</span>
|
|
1062
|
+
<span class="sd"> >>> for path in pt.to_path_list():</span>
|
|
1063
|
+
<span class="sd"> >>> print(path)</span>
|
|
1064
|
+
<span class="sd"> cinema4d 22.118.RB320081 linux</span>
|
|
1065
|
+
<span class="sd"> cinema4d 22.118.RB320081 linux/redshift-cinema4d 3.0.43 linux</span>
|
|
1066
|
+
<span class="sd"> cinema4d 22.118.RB320081 linux/redshift-cinema4d 3.0.45 linux</span>
|
|
1067
|
+
<span class="sd"> maya-io 2022.SP3 linux</span>
|
|
1068
|
+
<span class="sd"> """</span>
|
|
1069
|
+
|
|
1070
|
+
|
|
1071
|
+
<span class="n">platforms</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"platforms"</span><span class="p">,</span><span class="n">PLATFORMS</span><span class="p">)</span>
|
|
1072
|
+
<span class="n">product</span><span class="o">=</span><span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"product"</span><span class="p">)</span>
|
|
1073
|
+
|
|
1074
|
+
<span class="n">unknown_platforms</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">platforms</span><span class="p">)</span> <span class="o">-</span> <span class="n">PLATFORMS</span>
|
|
1075
|
+
<span class="k">if</span> <span class="n">unknown_platforms</span><span class="p">:</span>
|
|
1076
|
+
<span class="k">raise</span> <span class="ne">KeyError</span><span class="p">(</span><span class="s2">"Unrecognized platform </span><span class="si">{}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="s2">" "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">unknown_platforms</span><span class="p">)))</span>
|
|
1077
|
+
|
|
1078
|
+
<span class="k">if</span> <span class="n">product</span> <span class="ow">and</span> <span class="n">host_products</span><span class="p">:</span>
|
|
1079
|
+
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"You cannot choose both product and host_products."</span><span class="p">)</span>
|
|
1080
|
+
|
|
1081
|
+
<span class="n">packages</span> <span class="o">=</span> <span class="p">[</span><span class="n">_clean_package</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">packages</span> <span class="k">if</span> <span class="n">p</span><span class="p">[</span><span class="s2">"platform"</span><span class="p">]</span> <span class="ow">in</span> <span class="n">platforms</span><span class="p">]</span>
|
|
1082
|
+
|
|
1083
|
+
<span class="n">root_ids</span> <span class="o">=</span> <span class="p">[]</span>
|
|
1084
|
+
<span class="k">if</span> <span class="n">product</span><span class="p">:</span>
|
|
1085
|
+
<span class="n">root_ids</span> <span class="o">=</span> <span class="p">[</span><span class="n">p</span><span class="p">[</span><span class="s2">"package_id"</span><span class="p">]</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">packages</span> <span class="k">if</span> <span class="n">p</span><span class="p">[</span><span class="s2">"product"</span><span class="p">]</span> <span class="o">==</span> <span class="n">product</span><span class="p">]</span>
|
|
1086
|
+
<span class="k">else</span><span class="p">:</span>
|
|
1087
|
+
<span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">packages</span><span class="p">:</span>
|
|
1088
|
+
<span class="k">if</span> <span class="ow">not</span> <span class="n">p</span><span class="p">[</span><span class="s2">"plugin_host_product"</span><span class="p">]:</span>
|
|
1089
|
+
<span class="k">if</span> <span class="n">p</span><span class="p">[</span><span class="s2">"product"</span><span class="p">]</span> <span class="ow">in</span> <span class="n">host_products</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">host_products</span><span class="p">:</span>
|
|
1090
|
+
<span class="n">root_ids</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">[</span><span class="s2">"package_id"</span><span class="p">])</span>
|
|
1091
|
+
|
|
1092
|
+
<span class="bp">self</span><span class="o">.</span><span class="n">_tree</span> <span class="o">=</span> <span class="n">_build_tree</span><span class="p">(</span><span class="n">packages</span><span class="p">,</span> <span class="p">{</span><span class="s2">"children"</span><span class="p">:</span> <span class="p">[],</span> <span class="s2">"plugins"</span><span class="p">:</span> <span class="n">root_ids</span><span class="p">})</span>
|
|
1093
|
+
|
|
1094
|
+
<span class="k">def</span><span class="w"> </span><span class="nf">supported_host_names</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
1095
|
+
<span class="w"> </span><span class="sd">"""</span>
|
|
1096
|
+
<span class="sd"> All host names from the software tree.</span>
|
|
1097
|
+
|
|
1098
|
+
<span class="sd"> These names can be used to populate a dropdown menu. Then a single selection from that menu</span>
|
|
1099
|
+
<span class="sd"> can be used to retrieve the complete package in order to generate an environment dictionary</span>
|
|
1100
|
+
<span class="sd"> and get package IDs.</span>
|
|
1101
|
+
|
|
1102
|
+
<span class="sd"> Returns:</span>
|
|
1103
|
+
<span class="sd"> list(str): Fully qualified DCC hosts of the form: `product version platform`.</span>
|
|
1104
|
+
|
|
1105
|
+
<span class="sd"> Example:</span>
|
|
1106
|
+
<span class="sd"> >>> from ciocore import api_client, package_tree</span>
|
|
1107
|
+
<span class="sd"> >>> packages = api_client.request_software_packages()</span>
|
|
1108
|
+
<span class="sd"> >>> pt = package_tree.PackageTree(packages, product="cinema4d")</span>
|
|
1109
|
+
<span class="sd"> >>> pt.supported_host_names()</span>
|
|
1110
|
+
<span class="sd"> cinema4d 21.209.RB305619 linux</span>
|
|
1111
|
+
<span class="sd"> cinema4d 22.116.RB316423 linux</span>
|
|
1112
|
+
<span class="sd"> cinema4d 22.118.RB320081 linux</span>
|
|
1113
|
+
<span class="sd"> cinema4d 23.110.RB330286 linux</span>
|
|
1114
|
+
<span class="sd"> cinema4d 24.111 linux</span>
|
|
1115
|
+
<span class="sd"> cinema4d 24.111 windows</span>
|
|
1116
|
+
<span class="sd"> """</span>
|
|
1117
|
+
|
|
1118
|
+
<span class="n">paths</span> <span class="o">=</span> <span class="p">[]</span>
|
|
1119
|
+
<span class="k">for</span> <span class="n">pkg</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_tree</span><span class="p">[</span><span class="s2">"children"</span><span class="p">]:</span>
|
|
1120
|
+
<span class="n">paths</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">to_name</span><span class="p">(</span><span class="n">pkg</span><span class="p">))</span>
|
|
1121
|
+
<span class="k">return</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">paths</span><span class="p">)</span>
|
|
1122
|
+
|
|
1123
|
+
<span class="k">def</span><span class="w"> </span><span class="nf">supported_plugins</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">host</span><span class="p">):</span>
|
|
1124
|
+
<span class="w"> </span><span class="sd">"""</span>
|
|
1125
|
+
<span class="sd"> Find the plugins that are children of the given DCC host.</span>
|
|
1126
|
+
|
|
1127
|
+
<span class="sd"> The result does not contain platform information since we assume that plugins are compatible with the DCC host that was used to request them.</span>
|
|
1128
|
+
|
|
1129
|
+
<span class="sd"> Args:</span>
|
|
1130
|
+
<span class="sd"> host (str): Name of the DCC host, typically one of the entries returned by [supported_host_names()](/package_tree/#ciocore.package_tree.PackageTree.supported_host_names).</span>
|
|
1131
|
+
|
|
1132
|
+
<span class="sd"> Returns:</span>
|
|
1133
|
+
<span class="sd"> list(dict): Each entry contains a plugin product and a list of versions.</span>
|
|
1134
|
+
|
|
1135
|
+
<span class="sd"> Example:</span>
|
|
1136
|
+
<span class="sd"> >>> from ciocore import api_client, package_tree </span>
|
|
1137
|
+
<span class="sd"> >>> packages = api_client.request_software_packages() </span>
|
|
1138
|
+
<span class="sd"> >>> pt = package_tree.PackageTree(packages, product="cinema4d") </span>
|
|
1139
|
+
<span class="sd"> >>> name = pt.supported_host_names()[0]</span>
|
|
1140
|
+
<span class="sd"> >>> pt.supported_plugins(name)</span>
|
|
1141
|
+
<span class="sd"> [</span>
|
|
1142
|
+
<span class="sd"> {</span>
|
|
1143
|
+
<span class="sd"> "plugin": "arnold-cinema4d",</span>
|
|
1144
|
+
<span class="sd"> "versions": [</span>
|
|
1145
|
+
<span class="sd"> "3.3.2.100",</span>
|
|
1146
|
+
<span class="sd"> "3.3.3.0"</span>
|
|
1147
|
+
<span class="sd"> ]</span>
|
|
1148
|
+
<span class="sd"> },</span>
|
|
1149
|
+
<span class="sd"> {</span>
|
|
1150
|
+
<span class="sd"> "plugin": "redshift-cinema4d",</span>
|
|
1151
|
+
<span class="sd"> "versions": [</span>
|
|
1152
|
+
<span class="sd"> "2.6.54",</span>
|
|
1153
|
+
<span class="sd"> "2.6.56",</span>
|
|
1154
|
+
<span class="sd"> "3.0.21",</span>
|
|
1155
|
+
<span class="sd"> "3.0.22",</span>
|
|
1156
|
+
<span class="sd"> ],</span>
|
|
1157
|
+
<span class="sd"> },</span>
|
|
1158
|
+
<span class="sd"> ]</span>
|
|
1159
|
+
<span class="sd"> """</span>
|
|
1160
|
+
|
|
1161
|
+
<span class="k">try</span><span class="p">:</span>
|
|
1162
|
+
<span class="n">subtree</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">find_by_name</span><span class="p">(</span><span class="n">host</span><span class="p">)</span>
|
|
1163
|
+
<span class="n">plugin_versions</span> <span class="o">=</span> <span class="n">_to_path_list</span><span class="p">(</span><span class="n">subtree</span><span class="p">)</span>
|
|
1164
|
+
<span class="k">except</span> <span class="ne">TypeError</span><span class="p">:</span>
|
|
1165
|
+
<span class="k">return</span> <span class="p">[]</span>
|
|
1166
|
+
|
|
1167
|
+
<span class="k">if</span> <span class="ow">not</span> <span class="n">plugin_versions</span><span class="p">:</span>
|
|
1168
|
+
<span class="k">return</span> <span class="p">[]</span>
|
|
1169
|
+
|
|
1170
|
+
<span class="n">plugin_dict</span> <span class="o">=</span> <span class="p">{}</span>
|
|
1171
|
+
<span class="k">for</span> <span class="n">plugin</span><span class="p">,</span> <span class="n">version</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="p">[</span><span class="n">pv</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">" "</span><span class="p">)</span> <span class="k">for</span> <span class="n">pv</span> <span class="ow">in</span> <span class="n">plugin_versions</span><span class="p">]:</span>
|
|
1172
|
+
<span class="k">if</span> <span class="n">plugin</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">plugin_dict</span><span class="p">:</span>
|
|
1173
|
+
<span class="n">plugin_dict</span><span class="p">[</span><span class="n">plugin</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span>
|
|
1174
|
+
<span class="n">plugin_dict</span><span class="p">[</span><span class="n">plugin</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">version</span><span class="p">)</span>
|
|
1175
|
+
|
|
1176
|
+
<span class="c1"># convert to list so it can be sorted</span>
|
|
1177
|
+
<span class="n">plugins</span> <span class="o">=</span> <span class="p">[]</span>
|
|
1178
|
+
<span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">plugin_dict</span><span class="p">:</span>
|
|
1179
|
+
<span class="n">plugins</span><span class="o">.</span><span class="n">append</span><span class="p">({</span><span class="s2">"plugin"</span><span class="p">:</span> <span class="n">key</span><span class="p">,</span> <span class="s2">"versions"</span><span class="p">:</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">plugin_dict</span><span class="p">[</span><span class="n">key</span><span class="p">])})</span>
|
|
1180
|
+
|
|
1181
|
+
<span class="k">return</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">plugins</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="k">lambda</span> <span class="n">k</span><span class="p">:</span> <span class="n">k</span><span class="p">[</span><span class="s2">"plugin"</span><span class="p">])</span>
|
|
1182
|
+
|
|
1183
|
+
<span class="k">def</span><span class="w"> </span><span class="nf">find_by_name</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">limit</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
1184
|
+
<span class="w"> </span><span class="sd">"""</span>
|
|
1185
|
+
<span class="sd"> Search the tree for a product with the given name.</span>
|
|
1186
|
+
|
|
1187
|
+
<span class="sd"> Args:</span>
|
|
1188
|
+
<span class="sd"> name (str): The name constructed from the package using to_name(). It must be an exact match with product, version, and platform. For example: `maya 2018.0 windows`</span>
|
|
1189
|
+
|
|
1190
|
+
<span class="sd"> Keyword Args:</span>
|
|
1191
|
+
<span class="sd"> limit (int): Limit the search depth. Defaults to `None`.</span>
|
|
1192
|
+
|
|
1193
|
+
<span class="sd"> Returns:</span>
|
|
1194
|
+
<span class="sd"> object: The package that matches.</span>
|
|
1195
|
+
|
|
1196
|
+
<span class="sd"> Example:</span>
|
|
1197
|
+
<span class="sd"> >>> from ciocore import api_client, package_tree</span>
|
|
1198
|
+
<span class="sd"> >>> packages = api_client.request_software_packages()</span>
|
|
1199
|
+
<span class="sd"> >>> pt = package_tree.PackageTree(packages, product="cinema4d")</span>
|
|
1200
|
+
<span class="sd"> >>> pt.find_by_name("redshift-cinema4d 3.0.64 linux")</span>
|
|
1201
|
+
<span class="sd"> {</span>
|
|
1202
|
+
<span class="sd"> 'platform': 'linux',</span>
|
|
1203
|
+
<span class="sd"> 'plugin_host_product': 'cinema4d',</span>
|
|
1204
|
+
<span class="sd"> 'product': 'redshift-cinema4d',</span>
|
|
1205
|
+
<span class="sd"> 'major_version': '3',</span>
|
|
1206
|
+
<span class="sd"> 'release_version': '64',</span>
|
|
1207
|
+
<span class="sd"> 'vendor': 'maxon',</span>
|
|
1208
|
+
<span class="sd"> 'children': [],</span>
|
|
1209
|
+
<span class="sd"> ...</span>
|
|
1210
|
+
<span class="sd"> }</span>
|
|
1211
|
+
<span class="sd"> """</span>
|
|
1212
|
+
|
|
1213
|
+
<span class="k">return</span> <span class="n">_find_by_name</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_tree</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">limit</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
|
|
1214
|
+
|
|
1215
|
+
<span class="k">def</span><span class="w"> </span><span class="nf">find_by_path</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">path</span><span class="p">):</span>
|
|
1216
|
+
<span class="w"> </span><span class="sd">"""</span>
|
|
1217
|
+
<span class="sd"> Find the package uniquely described by the given path.</span>
|
|
1218
|
+
|
|
1219
|
+
<span class="sd"> The path is of the form returned by the to_path_list() method.</span>
|
|
1220
|
+
|
|
1221
|
+
<span class="sd"> Args:</span>
|
|
1222
|
+
<span class="sd"> path (str): The path</span>
|
|
1223
|
+
|
|
1224
|
+
<span class="sd"> Returns:</span>
|
|
1225
|
+
<span class="sd"> object: The package or None if no package exists with the given path.</span>
|
|
1226
|
+
|
|
1227
|
+
<span class="sd"> Example:</span>
|
|
1228
|
+
<span class="sd"> >>> from ciocore import api_client, package_tree, package_environment</span>
|
|
1229
|
+
<span class="sd"> >>> packages = api_client.request_software_packages()</span>
|
|
1230
|
+
<span class="sd"> >>> pt = package_tree.PackageTree(packages, product="cinema4d")</span>
|
|
1231
|
+
<span class="sd"> >>> pt.find_by_path("cinema4d 24.111 linux/redshift-cinema4d 3.0.62 linux")</span>
|
|
1232
|
+
<span class="sd"> {</span>
|
|
1233
|
+
<span class="sd"> 'platform': 'linux',</span>
|
|
1234
|
+
<span class="sd"> 'plugin_host_product': 'cinema4d',</span>
|
|
1235
|
+
<span class="sd"> 'product': 'redshift-cinema4d',</span>
|
|
1236
|
+
<span class="sd"> 'major_version': '3',</span>
|
|
1237
|
+
<span class="sd"> 'release_version': '62',</span>
|
|
1238
|
+
<span class="sd"> 'vendor': 'maxon',</span>
|
|
1239
|
+
<span class="sd"> 'children': [],</span>
|
|
1240
|
+
<span class="sd"> 'plugin_host_version': "24",</span>
|
|
1241
|
+
<span class="sd"> ...</span>
|
|
1242
|
+
<span class="sd"> }</span>
|
|
1243
|
+
<span class="sd"> """</span>
|
|
1244
|
+
<span class="k">return</span> <span class="n">_find_by_path</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_tree</span><span class="p">,</span> <span class="n">path</span><span class="p">)</span>
|
|
1245
|
+
|
|
1246
|
+
|
|
1247
|
+
<span class="k">def</span><span class="w"> </span><span class="nf">to_path_list</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
1248
|
+
<span class="w"> </span><span class="sd">"""</span>
|
|
1249
|
+
<span class="sd"> Get paths to all nodes.</span>
|
|
1250
|
+
|
|
1251
|
+
<span class="sd"> This is useful for populating a chooser to choose packages fully qualified by path.</span>
|
|
1252
|
+
<span class="sd"> Houdini's tree widget, for example, takes the below format unchanged and generates the</span>
|
|
1253
|
+
<span class="sd"> appropriate UI.</span>
|
|
1254
|
+
|
|
1255
|
+
<span class="sd"> Args:</span>
|
|
1256
|
+
<span class="sd"> name (str): Get paths below the tree represented by the name. Defaults to None (root node).</span>
|
|
1257
|
+
|
|
1258
|
+
<span class="sd"> Returns:</span>
|
|
1259
|
+
<span class="sd"> list(str): Paths to all nodes in the tree.</span>
|
|
1260
|
+
|
|
1261
|
+
<span class="sd"> Example:</span>
|
|
1262
|
+
<span class="sd"> >>> from ciocore import api_client, package_tree</span>
|
|
1263
|
+
<span class="sd"> >>> packages = api_client.request_software_packages()</span>
|
|
1264
|
+
<span class="sd"> >>> pt = package_tree.PackageTree(packages, product="cinema4d")</span>
|
|
1265
|
+
<span class="sd"> >>> pt.to_path_list()</span>
|
|
1266
|
+
<span class="sd"> cinema4d 22.118.RB320081 linux</span>
|
|
1267
|
+
<span class="sd"> cinema4d 22.118.RB320081 linux/redshift-cinema4d 3.0.43 linux</span>
|
|
1268
|
+
<span class="sd"> cinema4d 22.118.RB320081 linux/redshift-cinema4d 3.0.45 linux</span>
|
|
1269
|
+
<span class="sd"> cinema4d 22.118.RB320081 linux/redshift-cinema4d 3.0.22 linux</span>
|
|
1270
|
+
<span class="sd"> cinema4d 22.118.RB320081 linux/arnold-cinema4d 3.3.2.100 linux</span>
|
|
1271
|
+
<span class="sd"> ...</span>
|
|
1272
|
+
|
|
1273
|
+
<span class="sd"> >>> pt.to_path_list(name="cinema4d 24.111 linux")</span>
|
|
1274
|
+
<span class="sd"> redshift-cinema4d 3.0.57 linux</span>
|
|
1275
|
+
<span class="sd"> redshift-cinema4d 3.0.62 linux</span>
|
|
1276
|
+
<span class="sd"> redshift-cinema4d 3.0.45 linux</span>
|
|
1277
|
+
<span class="sd"> redshift-cinema4d 3.0.64 linux</span>
|
|
1278
|
+
<span class="sd"> """</span>
|
|
1279
|
+
<span class="k">if</span> <span class="n">name</span><span class="p">:</span>
|
|
1280
|
+
<span class="n">subtree</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">find_by_name</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
|
1281
|
+
<span class="k">return</span> <span class="n">_to_path_list</span><span class="p">(</span><span class="n">subtree</span><span class="p">)</span>
|
|
1282
|
+
<span class="k">return</span> <span class="n">_to_path_list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_tree</span><span class="p">)</span>
|
|
1283
|
+
|
|
1284
|
+
<span class="k">def</span><span class="w"> </span><span class="nf">platforms</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
1285
|
+
<span class="w"> </span><span class="sd">"""</span>
|
|
1286
|
+
<span class="sd"> Get the platforms represented by packages in the tree.</span>
|
|
1287
|
+
|
|
1288
|
+
<span class="sd"> Returns:</span>
|
|
1289
|
+
<span class="sd"> set: The set of platforms.</span>
|
|
1290
|
+
<span class="sd"> """</span>
|
|
1291
|
+
|
|
1292
|
+
<span class="c1"># No need to recurse. Plugins are assumed to be compatible with the host.</span>
|
|
1293
|
+
<span class="k">return</span> <span class="nb">set</span><span class="p">([</span><span class="n">host</span><span class="p">[</span><span class="s2">"platform"</span><span class="p">]</span> <span class="k">for</span> <span class="n">host</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_tree</span><span class="p">[</span><span class="s2">"children"</span><span class="p">]])</span>
|
|
1294
|
+
|
|
1295
|
+
<span class="k">def</span><span class="w"> </span><span class="nf">json</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
1296
|
+
<span class="w"> </span><span class="sd">"""</span>
|
|
1297
|
+
<span class="sd"> The whole tree of softwware as json.</span>
|
|
1298
|
+
|
|
1299
|
+
<span class="sd"> Returns:</span>
|
|
1300
|
+
<span class="sd"> str: JSON.</span>
|
|
1301
|
+
|
|
1302
|
+
<span class="sd"> """</span>
|
|
1303
|
+
<span class="k">return</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_tree</span><span class="p">)</span>
|
|
1304
|
+
|
|
1305
|
+
<span class="k">def</span><span class="w"> </span><span class="fm">__bool__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
1306
|
+
<span class="k">return</span> <span class="kc">True</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_tree</span><span class="p">[</span><span class="s2">"children"</span><span class="p">]</span> <span class="k">else</span> <span class="kc">False</span>
|
|
1307
|
+
|
|
1308
|
+
<span class="k">def</span><span class="w"> </span><span class="nf">as_dict</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
1309
|
+
<span class="w"> </span><span class="sd">"""</span>
|
|
1310
|
+
<span class="sd"> Returns:</span>
|
|
1311
|
+
<span class="sd"> dict: The underlying software dictionary.</span>
|
|
1312
|
+
|
|
1313
|
+
<span class="sd"> """</span>
|
|
1314
|
+
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_tree</span>
|
|
1315
|
+
</code></pre></div>
|
|
1316
|
+
</details>
|
|
1317
|
+
|
|
1318
|
+
|
|
1319
|
+
|
|
1320
|
+
<div class="doc doc-children">
|
|
1321
|
+
|
|
1322
|
+
|
|
1323
|
+
|
|
1324
|
+
|
|
1325
|
+
|
|
1326
|
+
|
|
1327
|
+
|
|
1328
|
+
|
|
1329
|
+
|
|
1330
|
+
<div class="doc doc-object doc-method">
|
|
1331
|
+
|
|
1332
|
+
|
|
1333
|
+
|
|
1334
|
+
<h3 id="ciocore.package_tree.PackageTree.__init__" class="doc doc-heading">
|
|
1335
|
+
<code class="highlight language-python"><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">packages</span><span class="p">,</span> <span class="o">*</span><span class="n">host_products</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
|
|
1336
|
+
|
|
1337
|
+
<span class="doc doc-properties">
|
|
1338
|
+
<small class="doc doc-property doc-property-special"><code>special</code></small>
|
|
1339
|
+
</span>
|
|
1340
|
+
|
|
1341
|
+
</h3>
|
|
1342
|
+
|
|
1343
|
+
<div class="doc doc-contents ">
|
|
1344
|
+
|
|
1345
|
+
<p>Build the tree with a list of packages.</p>
|
|
1346
|
+
|
|
1347
|
+
<p><strong>Parameters:</strong></p>
|
|
1348
|
+
<table>
|
|
1349
|
+
<thead>
|
|
1350
|
+
<tr>
|
|
1351
|
+
<th>Name</th>
|
|
1352
|
+
<th>Type</th>
|
|
1353
|
+
<th>Description</th>
|
|
1354
|
+
<th>Default</th>
|
|
1355
|
+
</tr>
|
|
1356
|
+
</thead>
|
|
1357
|
+
<tbody>
|
|
1358
|
+
<tr>
|
|
1359
|
+
<td><code>packages</code></td>
|
|
1360
|
+
<td><code>list</code></td>
|
|
1361
|
+
<td><p>List of packages direct from the <a href="https://dashboard.conductortech.com/api/v1/ee/packages">Conductor packages endpoint</a>.</p></td>
|
|
1362
|
+
<td><em>required</em></td>
|
|
1363
|
+
</tr>
|
|
1364
|
+
<tr>
|
|
1365
|
+
<td><code>*host_products</code></td>
|
|
1366
|
+
<td></td>
|
|
1367
|
+
<td><p>Filter the tree to contain only top-level host packages of products specified in this list and their plugins. If there are no host_products specified, and the product keyword is omitted, the tree contains all packages.</p></td>
|
|
1368
|
+
<td><code>()</code></td>
|
|
1369
|
+
</tr>
|
|
1370
|
+
</tbody>
|
|
1371
|
+
</table>
|
|
1372
|
+
<p><strong>Keyword arguments:</strong></p>
|
|
1373
|
+
<table>
|
|
1374
|
+
<thead>
|
|
1375
|
+
<tr>
|
|
1376
|
+
<th>Name</th>
|
|
1377
|
+
<th>Type</th>
|
|
1378
|
+
<th>Description</th>
|
|
1379
|
+
</tr>
|
|
1380
|
+
</thead>
|
|
1381
|
+
<tbody>
|
|
1382
|
+
<tr>
|
|
1383
|
+
<td><code>product</code></td>
|
|
1384
|
+
<td><code>str</code></td>
|
|
1385
|
+
<td><p>Build the tree from versions of a single product and its compatible plugins. Defaults to <code>None</code>, in which case the tree is built from all packages. It is an error to specify both host_products and product. If a nonexistent product is given, the PackageTree is empty. By specifying <code>product</code>, you can build the object based on a single plugin product.</p></td>
|
|
1386
|
+
</tr>
|
|
1387
|
+
<tr>
|
|
1388
|
+
<td><code>platforms</code></td>
|
|
1389
|
+
<td><code>set</code></td>
|
|
1390
|
+
<td><p>Build the tree from versions for a specific platform. Defaults to the set <code>{"linux", "windows"}</code>.</p></td>
|
|
1391
|
+
</tr>
|
|
1392
|
+
</tbody>
|
|
1393
|
+
</table>
|
|
1394
|
+
<p><strong>Exceptions:</strong></p>
|
|
1395
|
+
<table>
|
|
1396
|
+
<thead>
|
|
1397
|
+
<tr>
|
|
1398
|
+
<th>Type</th>
|
|
1399
|
+
<th>Description</th>
|
|
1400
|
+
</tr>
|
|
1401
|
+
</thead>
|
|
1402
|
+
<tbody>
|
|
1403
|
+
<tr>
|
|
1404
|
+
<td><code>KeyError</code></td>
|
|
1405
|
+
<td><p>An invalid platform was provided.</p></td>
|
|
1406
|
+
</tr>
|
|
1407
|
+
<tr>
|
|
1408
|
+
<td><code>ValueError</code></td>
|
|
1409
|
+
<td><p>Cannot choose both product and host_products.</p></td>
|
|
1410
|
+
</tr>
|
|
1411
|
+
</tbody>
|
|
1412
|
+
</table>
|
|
1413
|
+
<p><strong>Examples:</strong></p>
|
|
1414
|
+
<div class="highlight"><pre><span></span><code><span class="o">>>></span> <span class="kn">from</span><span class="w"> </span><span class="nn">ciocore</span><span class="w"> </span><span class="kn">import</span> <span class="n">api_client</span><span class="p">,</span> <span class="n">package_tree</span>
|
|
1415
|
+
<span class="c1"># Request packages as a flat list from Conductor.</span>
|
|
1416
|
+
<span class="o">>>></span> <span class="n">packages</span> <span class="o">=</span> <span class="n">api_client</span><span class="o">.</span><span class="n">request_software_packages</span><span class="p">()</span>
|
|
1417
|
+
<span class="c1"># Build tree of dependencies from packages list</span>
|
|
1418
|
+
<span class="o">>>></span> <span class="n">pt</span> <span class="o">=</span> <span class="n">package_tree</span><span class="o">.</span><span class="n">PackageTree</span><span class="p">(</span><span class="n">packages</span><span class="p">,</span> <span class="s2">"cinema4d"</span><span class="p">,</span> <span class="s2">"maya-io"</span><span class="p">)</span>
|
|
1419
|
+
<span class="o">>>></span> <span class="k">for</span> <span class="n">path</span> <span class="ow">in</span> <span class="n">pt</span><span class="o">.</span><span class="n">to_path_list</span><span class="p">():</span>
|
|
1420
|
+
<span class="o">>>></span> <span class="nb">print</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
|
|
1421
|
+
<span class="n">cinema4d</span> <span class="mf">22.118</span><span class="o">.</span><span class="n">RB320081</span> <span class="n">linux</span>
|
|
1422
|
+
<span class="n">cinema4d</span> <span class="mf">22.118</span><span class="o">.</span><span class="n">RB320081</span> <span class="n">linux</span><span class="o">/</span><span class="n">redshift</span><span class="o">-</span><span class="n">cinema4d</span> <span class="mf">3.0.43</span> <span class="n">linux</span>
|
|
1423
|
+
<span class="n">cinema4d</span> <span class="mf">22.118</span><span class="o">.</span><span class="n">RB320081</span> <span class="n">linux</span><span class="o">/</span><span class="n">redshift</span><span class="o">-</span><span class="n">cinema4d</span> <span class="mf">3.0.45</span> <span class="n">linux</span>
|
|
1424
|
+
<span class="n">maya</span><span class="o">-</span><span class="n">io</span> <span class="mf">2022.</span><span class="n">SP3</span> <span class="n">linux</span>
|
|
1425
|
+
</code></pre></div>
|
|
1426
|
+
|
|
1427
|
+
<details class="quote">
|
|
1428
|
+
<summary>Source code in <code>ciocore/package_tree.py</code></summary>
|
|
1429
|
+
<div class="highlight"><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">packages</span><span class="p">,</span> <span class="o">*</span><span class="n">host_products</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
1430
|
+
<span class="w"> </span><span class="sd">"""Build the tree with a list of packages.</span>
|
|
1431
|
+
|
|
1432
|
+
<span class="sd"> Args:</span>
|
|
1433
|
+
<span class="sd"> packages (list): List of packages direct from the [Conductor packages endpoint](https://dashboard.conductortech.com/api/v1/ee/packages).</span>
|
|
1434
|
+
|
|
1435
|
+
<span class="sd"> *host_products: Filter the tree to contain only top-level host packages of products specified in this list and their plugins. If there are no host_products specified, and the product keyword is omitted, the tree contains all packages.</span>
|
|
1436
|
+
|
|
1437
|
+
<span class="sd"> Keyword Args:</span>
|
|
1438
|
+
<span class="sd"> product (str): Build the tree from versions of a single product and its compatible plugins. Defaults to `None`, in which case the tree is built from all packages. It is an error to specify both host_products and product. If a nonexistent product is given, the PackageTree is empty. By specifying `product`, you can build the object based on a single plugin product.</span>
|
|
1439
|
+
<span class="sd"> platforms (set): Build the tree from versions for a specific platform. Defaults to the set `{"linux", "windows"}`.</span>
|
|
1440
|
+
|
|
1441
|
+
<span class="sd"> Raises:</span>
|
|
1442
|
+
<span class="sd"> KeyError: An invalid platform was provided.</span>
|
|
1443
|
+
<span class="sd"> ValueError: Cannot choose both product and host_products.</span>
|
|
1444
|
+
|
|
1445
|
+
<span class="sd"> Example:</span>
|
|
1446
|
+
<span class="sd"> >>> from ciocore import api_client, package_tree</span>
|
|
1447
|
+
<span class="sd"> # Request packages as a flat list from Conductor.</span>
|
|
1448
|
+
<span class="sd"> >>> packages = api_client.request_software_packages()</span>
|
|
1449
|
+
<span class="sd"> # Build tree of dependencies from packages list</span>
|
|
1450
|
+
<span class="sd"> >>> pt = package_tree.PackageTree(packages, "cinema4d", "maya-io")</span>
|
|
1451
|
+
<span class="sd"> >>> for path in pt.to_path_list():</span>
|
|
1452
|
+
<span class="sd"> >>> print(path)</span>
|
|
1453
|
+
<span class="sd"> cinema4d 22.118.RB320081 linux</span>
|
|
1454
|
+
<span class="sd"> cinema4d 22.118.RB320081 linux/redshift-cinema4d 3.0.43 linux</span>
|
|
1455
|
+
<span class="sd"> cinema4d 22.118.RB320081 linux/redshift-cinema4d 3.0.45 linux</span>
|
|
1456
|
+
<span class="sd"> maya-io 2022.SP3 linux</span>
|
|
1457
|
+
<span class="sd"> """</span>
|
|
1458
|
+
|
|
1459
|
+
|
|
1460
|
+
<span class="n">platforms</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"platforms"</span><span class="p">,</span><span class="n">PLATFORMS</span><span class="p">)</span>
|
|
1461
|
+
<span class="n">product</span><span class="o">=</span><span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"product"</span><span class="p">)</span>
|
|
1462
|
+
|
|
1463
|
+
<span class="n">unknown_platforms</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">platforms</span><span class="p">)</span> <span class="o">-</span> <span class="n">PLATFORMS</span>
|
|
1464
|
+
<span class="k">if</span> <span class="n">unknown_platforms</span><span class="p">:</span>
|
|
1465
|
+
<span class="k">raise</span> <span class="ne">KeyError</span><span class="p">(</span><span class="s2">"Unrecognized platform </span><span class="si">{}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="s2">" "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">unknown_platforms</span><span class="p">)))</span>
|
|
1466
|
+
|
|
1467
|
+
<span class="k">if</span> <span class="n">product</span> <span class="ow">and</span> <span class="n">host_products</span><span class="p">:</span>
|
|
1468
|
+
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"You cannot choose both product and host_products."</span><span class="p">)</span>
|
|
1469
|
+
|
|
1470
|
+
<span class="n">packages</span> <span class="o">=</span> <span class="p">[</span><span class="n">_clean_package</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">packages</span> <span class="k">if</span> <span class="n">p</span><span class="p">[</span><span class="s2">"platform"</span><span class="p">]</span> <span class="ow">in</span> <span class="n">platforms</span><span class="p">]</span>
|
|
1471
|
+
|
|
1472
|
+
<span class="n">root_ids</span> <span class="o">=</span> <span class="p">[]</span>
|
|
1473
|
+
<span class="k">if</span> <span class="n">product</span><span class="p">:</span>
|
|
1474
|
+
<span class="n">root_ids</span> <span class="o">=</span> <span class="p">[</span><span class="n">p</span><span class="p">[</span><span class="s2">"package_id"</span><span class="p">]</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">packages</span> <span class="k">if</span> <span class="n">p</span><span class="p">[</span><span class="s2">"product"</span><span class="p">]</span> <span class="o">==</span> <span class="n">product</span><span class="p">]</span>
|
|
1475
|
+
<span class="k">else</span><span class="p">:</span>
|
|
1476
|
+
<span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">packages</span><span class="p">:</span>
|
|
1477
|
+
<span class="k">if</span> <span class="ow">not</span> <span class="n">p</span><span class="p">[</span><span class="s2">"plugin_host_product"</span><span class="p">]:</span>
|
|
1478
|
+
<span class="k">if</span> <span class="n">p</span><span class="p">[</span><span class="s2">"product"</span><span class="p">]</span> <span class="ow">in</span> <span class="n">host_products</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">host_products</span><span class="p">:</span>
|
|
1479
|
+
<span class="n">root_ids</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">[</span><span class="s2">"package_id"</span><span class="p">])</span>
|
|
1480
|
+
|
|
1481
|
+
<span class="bp">self</span><span class="o">.</span><span class="n">_tree</span> <span class="o">=</span> <span class="n">_build_tree</span><span class="p">(</span><span class="n">packages</span><span class="p">,</span> <span class="p">{</span><span class="s2">"children"</span><span class="p">:</span> <span class="p">[],</span> <span class="s2">"plugins"</span><span class="p">:</span> <span class="n">root_ids</span><span class="p">})</span>
|
|
1482
|
+
</code></pre></div>
|
|
1483
|
+
</details>
|
|
1484
|
+
</div>
|
|
1485
|
+
|
|
1486
|
+
</div>
|
|
1487
|
+
|
|
1488
|
+
|
|
1489
|
+
|
|
1490
|
+
<div class="doc doc-object doc-method">
|
|
1491
|
+
|
|
1492
|
+
|
|
1493
|
+
|
|
1494
|
+
<h3 id="ciocore.package_tree.PackageTree.supported_host_names" class="doc doc-heading">
|
|
1495
|
+
<code class="highlight language-python"><span class="n">supported_host_names</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span></code>
|
|
1496
|
+
|
|
1497
|
+
|
|
1498
|
+
</h3>
|
|
1499
|
+
|
|
1500
|
+
<div class="doc doc-contents ">
|
|
1501
|
+
|
|
1502
|
+
<p>All host names from the software tree.</p>
|
|
1503
|
+
<p>These names can be used to populate a dropdown menu. Then a single selection from that menu
|
|
1504
|
+
can be used to retrieve the complete package in order to generate an environment dictionary
|
|
1505
|
+
and get package IDs.</p>
|
|
1506
|
+
|
|
1507
|
+
<p><strong>Returns:</strong></p>
|
|
1508
|
+
<table>
|
|
1509
|
+
<thead>
|
|
1510
|
+
<tr>
|
|
1511
|
+
<th>Type</th>
|
|
1512
|
+
<th>Description</th>
|
|
1513
|
+
</tr>
|
|
1514
|
+
</thead>
|
|
1515
|
+
<tbody>
|
|
1516
|
+
<tr>
|
|
1517
|
+
<td><code>list(str)</code></td>
|
|
1518
|
+
<td><p>Fully qualified DCC hosts of the form: <code>product version platform</code>.</p></td>
|
|
1519
|
+
</tr>
|
|
1520
|
+
</tbody>
|
|
1521
|
+
</table>
|
|
1522
|
+
<p><strong>Examples:</strong></p>
|
|
1523
|
+
<div class="highlight"><pre><span></span><code><span class="o">>>></span> <span class="kn">from</span><span class="w"> </span><span class="nn">ciocore</span><span class="w"> </span><span class="kn">import</span> <span class="n">api_client</span><span class="p">,</span> <span class="n">package_tree</span>
|
|
1524
|
+
<span class="o">>>></span> <span class="n">packages</span> <span class="o">=</span> <span class="n">api_client</span><span class="o">.</span><span class="n">request_software_packages</span><span class="p">()</span>
|
|
1525
|
+
<span class="o">>>></span> <span class="n">pt</span> <span class="o">=</span> <span class="n">package_tree</span><span class="o">.</span><span class="n">PackageTree</span><span class="p">(</span><span class="n">packages</span><span class="p">,</span> <span class="n">product</span><span class="o">=</span><span class="s2">"cinema4d"</span><span class="p">)</span>
|
|
1526
|
+
<span class="o">>>></span> <span class="n">pt</span><span class="o">.</span><span class="n">supported_host_names</span><span class="p">()</span>
|
|
1527
|
+
<span class="n">cinema4d</span> <span class="mf">21.209</span><span class="o">.</span><span class="n">RB305619</span> <span class="n">linux</span>
|
|
1528
|
+
<span class="n">cinema4d</span> <span class="mf">22.116</span><span class="o">.</span><span class="n">RB316423</span> <span class="n">linux</span>
|
|
1529
|
+
<span class="n">cinema4d</span> <span class="mf">22.118</span><span class="o">.</span><span class="n">RB320081</span> <span class="n">linux</span>
|
|
1530
|
+
<span class="n">cinema4d</span> <span class="mf">23.110</span><span class="o">.</span><span class="n">RB330286</span> <span class="n">linux</span>
|
|
1531
|
+
<span class="n">cinema4d</span> <span class="mf">24.111</span> <span class="n">linux</span>
|
|
1532
|
+
<span class="n">cinema4d</span> <span class="mf">24.111</span> <span class="n">windows</span>
|
|
1533
|
+
</code></pre></div>
|
|
1534
|
+
|
|
1535
|
+
<details class="quote">
|
|
1536
|
+
<summary>Source code in <code>ciocore/package_tree.py</code></summary>
|
|
1537
|
+
<div class="highlight"><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">supported_host_names</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
1538
|
+
<span class="w"> </span><span class="sd">"""</span>
|
|
1539
|
+
<span class="sd"> All host names from the software tree.</span>
|
|
1540
|
+
|
|
1541
|
+
<span class="sd"> These names can be used to populate a dropdown menu. Then a single selection from that menu</span>
|
|
1542
|
+
<span class="sd"> can be used to retrieve the complete package in order to generate an environment dictionary</span>
|
|
1543
|
+
<span class="sd"> and get package IDs.</span>
|
|
1544
|
+
|
|
1545
|
+
<span class="sd"> Returns:</span>
|
|
1546
|
+
<span class="sd"> list(str): Fully qualified DCC hosts of the form: `product version platform`.</span>
|
|
1547
|
+
|
|
1548
|
+
<span class="sd"> Example:</span>
|
|
1549
|
+
<span class="sd"> >>> from ciocore import api_client, package_tree</span>
|
|
1550
|
+
<span class="sd"> >>> packages = api_client.request_software_packages()</span>
|
|
1551
|
+
<span class="sd"> >>> pt = package_tree.PackageTree(packages, product="cinema4d")</span>
|
|
1552
|
+
<span class="sd"> >>> pt.supported_host_names()</span>
|
|
1553
|
+
<span class="sd"> cinema4d 21.209.RB305619 linux</span>
|
|
1554
|
+
<span class="sd"> cinema4d 22.116.RB316423 linux</span>
|
|
1555
|
+
<span class="sd"> cinema4d 22.118.RB320081 linux</span>
|
|
1556
|
+
<span class="sd"> cinema4d 23.110.RB330286 linux</span>
|
|
1557
|
+
<span class="sd"> cinema4d 24.111 linux</span>
|
|
1558
|
+
<span class="sd"> cinema4d 24.111 windows</span>
|
|
1559
|
+
<span class="sd"> """</span>
|
|
1560
|
+
|
|
1561
|
+
<span class="n">paths</span> <span class="o">=</span> <span class="p">[]</span>
|
|
1562
|
+
<span class="k">for</span> <span class="n">pkg</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_tree</span><span class="p">[</span><span class="s2">"children"</span><span class="p">]:</span>
|
|
1563
|
+
<span class="n">paths</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">to_name</span><span class="p">(</span><span class="n">pkg</span><span class="p">))</span>
|
|
1564
|
+
<span class="k">return</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">paths</span><span class="p">)</span>
|
|
1565
|
+
</code></pre></div>
|
|
1566
|
+
</details>
|
|
1567
|
+
</div>
|
|
1568
|
+
|
|
1569
|
+
</div>
|
|
1570
|
+
|
|
1571
|
+
|
|
1572
|
+
|
|
1573
|
+
<div class="doc doc-object doc-method">
|
|
1574
|
+
|
|
1575
|
+
|
|
1576
|
+
|
|
1577
|
+
<h3 id="ciocore.package_tree.PackageTree.supported_plugins" class="doc doc-heading">
|
|
1578
|
+
<code class="highlight language-python"><span class="n">supported_plugins</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">host</span><span class="p">)</span></code>
|
|
1579
|
+
|
|
1580
|
+
|
|
1581
|
+
</h3>
|
|
1582
|
+
|
|
1583
|
+
<div class="doc doc-contents ">
|
|
1584
|
+
|
|
1585
|
+
<p>Find the plugins that are children of the given DCC host.</p>
|
|
1586
|
+
<p>The result does not contain platform information since we assume that plugins are compatible with the DCC host that was used to request them.</p>
|
|
1587
|
+
|
|
1588
|
+
<p><strong>Parameters:</strong></p>
|
|
1589
|
+
<table>
|
|
1590
|
+
<thead>
|
|
1591
|
+
<tr>
|
|
1592
|
+
<th>Name</th>
|
|
1593
|
+
<th>Type</th>
|
|
1594
|
+
<th>Description</th>
|
|
1595
|
+
<th>Default</th>
|
|
1596
|
+
</tr>
|
|
1597
|
+
</thead>
|
|
1598
|
+
<tbody>
|
|
1599
|
+
<tr>
|
|
1600
|
+
<td><code>host</code></td>
|
|
1601
|
+
<td><code>str</code></td>
|
|
1602
|
+
<td><p>Name of the DCC host, typically one of the entries returned by <a href="/package_tree/#ciocore.package_tree.PackageTree.supported_host_names">supported_host_names()</a>.</p></td>
|
|
1603
|
+
<td><em>required</em></td>
|
|
1604
|
+
</tr>
|
|
1605
|
+
</tbody>
|
|
1606
|
+
</table>
|
|
1607
|
+
<p><strong>Returns:</strong></p>
|
|
1608
|
+
<table>
|
|
1609
|
+
<thead>
|
|
1610
|
+
<tr>
|
|
1611
|
+
<th>Type</th>
|
|
1612
|
+
<th>Description</th>
|
|
1613
|
+
</tr>
|
|
1614
|
+
</thead>
|
|
1615
|
+
<tbody>
|
|
1616
|
+
<tr>
|
|
1617
|
+
<td><code>list(dict)</code></td>
|
|
1618
|
+
<td><p>Each entry contains a plugin product and a list of versions.</p></td>
|
|
1619
|
+
</tr>
|
|
1620
|
+
</tbody>
|
|
1621
|
+
</table>
|
|
1622
|
+
<p><strong>Examples:</strong></p>
|
|
1623
|
+
<div class="highlight"><pre><span></span><code><span class="o">>>></span> <span class="kn">from</span><span class="w"> </span><span class="nn">ciocore</span><span class="w"> </span><span class="kn">import</span> <span class="n">api_client</span><span class="p">,</span> <span class="n">package_tree</span>
|
|
1624
|
+
<span class="o">>>></span> <span class="n">packages</span> <span class="o">=</span> <span class="n">api_client</span><span class="o">.</span><span class="n">request_software_packages</span><span class="p">()</span>
|
|
1625
|
+
<span class="o">>>></span> <span class="n">pt</span> <span class="o">=</span> <span class="n">package_tree</span><span class="o">.</span><span class="n">PackageTree</span><span class="p">(</span><span class="n">packages</span><span class="p">,</span> <span class="n">product</span><span class="o">=</span><span class="s2">"cinema4d"</span><span class="p">)</span>
|
|
1626
|
+
<span class="o">>>></span> <span class="n">name</span> <span class="o">=</span> <span class="n">pt</span><span class="o">.</span><span class="n">supported_host_names</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span>
|
|
1627
|
+
<span class="o">>>></span> <span class="n">pt</span><span class="o">.</span><span class="n">supported_plugins</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
|
1628
|
+
<span class="p">[</span>
|
|
1629
|
+
<span class="p">{</span>
|
|
1630
|
+
<span class="s2">"plugin"</span><span class="p">:</span> <span class="s2">"arnold-cinema4d"</span><span class="p">,</span>
|
|
1631
|
+
<span class="s2">"versions"</span><span class="p">:</span> <span class="p">[</span>
|
|
1632
|
+
<span class="s2">"3.3.2.100"</span><span class="p">,</span>
|
|
1633
|
+
<span class="s2">"3.3.3.0"</span>
|
|
1634
|
+
<span class="p">]</span>
|
|
1635
|
+
<span class="p">},</span>
|
|
1636
|
+
<span class="p">{</span>
|
|
1637
|
+
<span class="s2">"plugin"</span><span class="p">:</span> <span class="s2">"redshift-cinema4d"</span><span class="p">,</span>
|
|
1638
|
+
<span class="s2">"versions"</span><span class="p">:</span> <span class="p">[</span>
|
|
1639
|
+
<span class="s2">"2.6.54"</span><span class="p">,</span>
|
|
1640
|
+
<span class="s2">"2.6.56"</span><span class="p">,</span>
|
|
1641
|
+
<span class="s2">"3.0.21"</span><span class="p">,</span>
|
|
1642
|
+
<span class="s2">"3.0.22"</span><span class="p">,</span>
|
|
1643
|
+
<span class="p">],</span>
|
|
1644
|
+
<span class="p">},</span>
|
|
1645
|
+
<span class="p">]</span>
|
|
1646
|
+
</code></pre></div>
|
|
1647
|
+
|
|
1648
|
+
<details class="quote">
|
|
1649
|
+
<summary>Source code in <code>ciocore/package_tree.py</code></summary>
|
|
1650
|
+
<div class="highlight"><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">supported_plugins</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">host</span><span class="p">):</span>
|
|
1651
|
+
<span class="w"> </span><span class="sd">"""</span>
|
|
1652
|
+
<span class="sd"> Find the plugins that are children of the given DCC host.</span>
|
|
1653
|
+
|
|
1654
|
+
<span class="sd"> The result does not contain platform information since we assume that plugins are compatible with the DCC host that was used to request them.</span>
|
|
1655
|
+
|
|
1656
|
+
<span class="sd"> Args:</span>
|
|
1657
|
+
<span class="sd"> host (str): Name of the DCC host, typically one of the entries returned by [supported_host_names()](/package_tree/#ciocore.package_tree.PackageTree.supported_host_names).</span>
|
|
1658
|
+
|
|
1659
|
+
<span class="sd"> Returns:</span>
|
|
1660
|
+
<span class="sd"> list(dict): Each entry contains a plugin product and a list of versions.</span>
|
|
1661
|
+
|
|
1662
|
+
<span class="sd"> Example:</span>
|
|
1663
|
+
<span class="sd"> >>> from ciocore import api_client, package_tree </span>
|
|
1664
|
+
<span class="sd"> >>> packages = api_client.request_software_packages() </span>
|
|
1665
|
+
<span class="sd"> >>> pt = package_tree.PackageTree(packages, product="cinema4d") </span>
|
|
1666
|
+
<span class="sd"> >>> name = pt.supported_host_names()[0]</span>
|
|
1667
|
+
<span class="sd"> >>> pt.supported_plugins(name)</span>
|
|
1668
|
+
<span class="sd"> [</span>
|
|
1669
|
+
<span class="sd"> {</span>
|
|
1670
|
+
<span class="sd"> "plugin": "arnold-cinema4d",</span>
|
|
1671
|
+
<span class="sd"> "versions": [</span>
|
|
1672
|
+
<span class="sd"> "3.3.2.100",</span>
|
|
1673
|
+
<span class="sd"> "3.3.3.0"</span>
|
|
1674
|
+
<span class="sd"> ]</span>
|
|
1675
|
+
<span class="sd"> },</span>
|
|
1676
|
+
<span class="sd"> {</span>
|
|
1677
|
+
<span class="sd"> "plugin": "redshift-cinema4d",</span>
|
|
1678
|
+
<span class="sd"> "versions": [</span>
|
|
1679
|
+
<span class="sd"> "2.6.54",</span>
|
|
1680
|
+
<span class="sd"> "2.6.56",</span>
|
|
1681
|
+
<span class="sd"> "3.0.21",</span>
|
|
1682
|
+
<span class="sd"> "3.0.22",</span>
|
|
1683
|
+
<span class="sd"> ],</span>
|
|
1684
|
+
<span class="sd"> },</span>
|
|
1685
|
+
<span class="sd"> ]</span>
|
|
1686
|
+
<span class="sd"> """</span>
|
|
1687
|
+
|
|
1688
|
+
<span class="k">try</span><span class="p">:</span>
|
|
1689
|
+
<span class="n">subtree</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">find_by_name</span><span class="p">(</span><span class="n">host</span><span class="p">)</span>
|
|
1690
|
+
<span class="n">plugin_versions</span> <span class="o">=</span> <span class="n">_to_path_list</span><span class="p">(</span><span class="n">subtree</span><span class="p">)</span>
|
|
1691
|
+
<span class="k">except</span> <span class="ne">TypeError</span><span class="p">:</span>
|
|
1692
|
+
<span class="k">return</span> <span class="p">[]</span>
|
|
1693
|
+
|
|
1694
|
+
<span class="k">if</span> <span class="ow">not</span> <span class="n">plugin_versions</span><span class="p">:</span>
|
|
1695
|
+
<span class="k">return</span> <span class="p">[]</span>
|
|
1696
|
+
|
|
1697
|
+
<span class="n">plugin_dict</span> <span class="o">=</span> <span class="p">{}</span>
|
|
1698
|
+
<span class="k">for</span> <span class="n">plugin</span><span class="p">,</span> <span class="n">version</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="p">[</span><span class="n">pv</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">" "</span><span class="p">)</span> <span class="k">for</span> <span class="n">pv</span> <span class="ow">in</span> <span class="n">plugin_versions</span><span class="p">]:</span>
|
|
1699
|
+
<span class="k">if</span> <span class="n">plugin</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">plugin_dict</span><span class="p">:</span>
|
|
1700
|
+
<span class="n">plugin_dict</span><span class="p">[</span><span class="n">plugin</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span>
|
|
1701
|
+
<span class="n">plugin_dict</span><span class="p">[</span><span class="n">plugin</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">version</span><span class="p">)</span>
|
|
1702
|
+
|
|
1703
|
+
<span class="c1"># convert to list so it can be sorted</span>
|
|
1704
|
+
<span class="n">plugins</span> <span class="o">=</span> <span class="p">[]</span>
|
|
1705
|
+
<span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">plugin_dict</span><span class="p">:</span>
|
|
1706
|
+
<span class="n">plugins</span><span class="o">.</span><span class="n">append</span><span class="p">({</span><span class="s2">"plugin"</span><span class="p">:</span> <span class="n">key</span><span class="p">,</span> <span class="s2">"versions"</span><span class="p">:</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">plugin_dict</span><span class="p">[</span><span class="n">key</span><span class="p">])})</span>
|
|
1707
|
+
|
|
1708
|
+
<span class="k">return</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">plugins</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="k">lambda</span> <span class="n">k</span><span class="p">:</span> <span class="n">k</span><span class="p">[</span><span class="s2">"plugin"</span><span class="p">])</span>
|
|
1709
|
+
</code></pre></div>
|
|
1710
|
+
</details>
|
|
1711
|
+
</div>
|
|
1712
|
+
|
|
1713
|
+
</div>
|
|
1714
|
+
|
|
1715
|
+
|
|
1716
|
+
|
|
1717
|
+
<div class="doc doc-object doc-method">
|
|
1718
|
+
|
|
1719
|
+
|
|
1720
|
+
|
|
1721
|
+
<h3 id="ciocore.package_tree.PackageTree.find_by_name" class="doc doc-heading">
|
|
1722
|
+
<code class="highlight language-python"><span class="n">find_by_name</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">limit</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span></code>
|
|
1723
|
+
|
|
1724
|
+
|
|
1725
|
+
</h3>
|
|
1726
|
+
|
|
1727
|
+
<div class="doc doc-contents ">
|
|
1728
|
+
|
|
1729
|
+
<p>Search the tree for a product with the given name.</p>
|
|
1730
|
+
|
|
1731
|
+
<p><strong>Parameters:</strong></p>
|
|
1732
|
+
<table>
|
|
1733
|
+
<thead>
|
|
1734
|
+
<tr>
|
|
1735
|
+
<th>Name</th>
|
|
1736
|
+
<th>Type</th>
|
|
1737
|
+
<th>Description</th>
|
|
1738
|
+
<th>Default</th>
|
|
1739
|
+
</tr>
|
|
1740
|
+
</thead>
|
|
1741
|
+
<tbody>
|
|
1742
|
+
<tr>
|
|
1743
|
+
<td><code>name</code></td>
|
|
1744
|
+
<td><code>str</code></td>
|
|
1745
|
+
<td><p>The name constructed from the package using to_name(). It must be an exact match with product, version, and platform. For example: <code>maya 2018.0 windows</code></p></td>
|
|
1746
|
+
<td><em>required</em></td>
|
|
1747
|
+
</tr>
|
|
1748
|
+
</tbody>
|
|
1749
|
+
</table>
|
|
1750
|
+
<p><strong>Keyword arguments:</strong></p>
|
|
1751
|
+
<table>
|
|
1752
|
+
<thead>
|
|
1753
|
+
<tr>
|
|
1754
|
+
<th>Name</th>
|
|
1755
|
+
<th>Type</th>
|
|
1756
|
+
<th>Description</th>
|
|
1757
|
+
</tr>
|
|
1758
|
+
</thead>
|
|
1759
|
+
<tbody>
|
|
1760
|
+
<tr>
|
|
1761
|
+
<td><code>limit</code></td>
|
|
1762
|
+
<td><code>int</code></td>
|
|
1763
|
+
<td><p>Limit the search depth. Defaults to <code>None</code>.</p></td>
|
|
1764
|
+
</tr>
|
|
1765
|
+
</tbody>
|
|
1766
|
+
</table>
|
|
1767
|
+
<p><strong>Returns:</strong></p>
|
|
1768
|
+
<table>
|
|
1769
|
+
<thead>
|
|
1770
|
+
<tr>
|
|
1771
|
+
<th>Type</th>
|
|
1772
|
+
<th>Description</th>
|
|
1773
|
+
</tr>
|
|
1774
|
+
</thead>
|
|
1775
|
+
<tbody>
|
|
1776
|
+
<tr>
|
|
1777
|
+
<td><code>object</code></td>
|
|
1778
|
+
<td><p>The package that matches.</p></td>
|
|
1779
|
+
</tr>
|
|
1780
|
+
</tbody>
|
|
1781
|
+
</table>
|
|
1782
|
+
<p><strong>Examples:</strong></p>
|
|
1783
|
+
<div class="highlight"><pre><span></span><code><span class="o">>>></span> <span class="kn">from</span><span class="w"> </span><span class="nn">ciocore</span><span class="w"> </span><span class="kn">import</span> <span class="n">api_client</span><span class="p">,</span> <span class="n">package_tree</span>
|
|
1784
|
+
<span class="o">>>></span> <span class="n">packages</span> <span class="o">=</span> <span class="n">api_client</span><span class="o">.</span><span class="n">request_software_packages</span><span class="p">()</span>
|
|
1785
|
+
<span class="o">>>></span> <span class="n">pt</span> <span class="o">=</span> <span class="n">package_tree</span><span class="o">.</span><span class="n">PackageTree</span><span class="p">(</span><span class="n">packages</span><span class="p">,</span> <span class="n">product</span><span class="o">=</span><span class="s2">"cinema4d"</span><span class="p">)</span>
|
|
1786
|
+
<span class="o">>>></span> <span class="n">pt</span><span class="o">.</span><span class="n">find_by_name</span><span class="p">(</span><span class="s2">"redshift-cinema4d 3.0.64 linux"</span><span class="p">)</span>
|
|
1787
|
+
<span class="p">{</span>
|
|
1788
|
+
<span class="s1">'platform'</span><span class="p">:</span> <span class="s1">'linux'</span><span class="p">,</span>
|
|
1789
|
+
<span class="s1">'plugin_host_product'</span><span class="p">:</span> <span class="s1">'cinema4d'</span><span class="p">,</span>
|
|
1790
|
+
<span class="s1">'product'</span><span class="p">:</span> <span class="s1">'redshift-cinema4d'</span><span class="p">,</span>
|
|
1791
|
+
<span class="s1">'major_version'</span><span class="p">:</span> <span class="s1">'3'</span><span class="p">,</span>
|
|
1792
|
+
<span class="s1">'release_version'</span><span class="p">:</span> <span class="s1">'64'</span><span class="p">,</span>
|
|
1793
|
+
<span class="s1">'vendor'</span><span class="p">:</span> <span class="s1">'maxon'</span><span class="p">,</span>
|
|
1794
|
+
<span class="s1">'children'</span><span class="p">:</span> <span class="p">[],</span>
|
|
1795
|
+
<span class="o">...</span>
|
|
1796
|
+
<span class="p">}</span>
|
|
1797
|
+
</code></pre></div>
|
|
1798
|
+
|
|
1799
|
+
<details class="quote">
|
|
1800
|
+
<summary>Source code in <code>ciocore/package_tree.py</code></summary>
|
|
1801
|
+
<div class="highlight"><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">find_by_name</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">limit</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
1802
|
+
<span class="w"> </span><span class="sd">"""</span>
|
|
1803
|
+
<span class="sd"> Search the tree for a product with the given name.</span>
|
|
1804
|
+
|
|
1805
|
+
<span class="sd"> Args:</span>
|
|
1806
|
+
<span class="sd"> name (str): The name constructed from the package using to_name(). It must be an exact match with product, version, and platform. For example: `maya 2018.0 windows`</span>
|
|
1807
|
+
|
|
1808
|
+
<span class="sd"> Keyword Args:</span>
|
|
1809
|
+
<span class="sd"> limit (int): Limit the search depth. Defaults to `None`.</span>
|
|
1810
|
+
|
|
1811
|
+
<span class="sd"> Returns:</span>
|
|
1812
|
+
<span class="sd"> object: The package that matches.</span>
|
|
1813
|
+
|
|
1814
|
+
<span class="sd"> Example:</span>
|
|
1815
|
+
<span class="sd"> >>> from ciocore import api_client, package_tree</span>
|
|
1816
|
+
<span class="sd"> >>> packages = api_client.request_software_packages()</span>
|
|
1817
|
+
<span class="sd"> >>> pt = package_tree.PackageTree(packages, product="cinema4d")</span>
|
|
1818
|
+
<span class="sd"> >>> pt.find_by_name("redshift-cinema4d 3.0.64 linux")</span>
|
|
1819
|
+
<span class="sd"> {</span>
|
|
1820
|
+
<span class="sd"> 'platform': 'linux',</span>
|
|
1821
|
+
<span class="sd"> 'plugin_host_product': 'cinema4d',</span>
|
|
1822
|
+
<span class="sd"> 'product': 'redshift-cinema4d',</span>
|
|
1823
|
+
<span class="sd"> 'major_version': '3',</span>
|
|
1824
|
+
<span class="sd"> 'release_version': '64',</span>
|
|
1825
|
+
<span class="sd"> 'vendor': 'maxon',</span>
|
|
1826
|
+
<span class="sd"> 'children': [],</span>
|
|
1827
|
+
<span class="sd"> ...</span>
|
|
1828
|
+
<span class="sd"> }</span>
|
|
1829
|
+
<span class="sd"> """</span>
|
|
1830
|
+
|
|
1831
|
+
<span class="k">return</span> <span class="n">_find_by_name</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_tree</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">limit</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
|
|
1832
|
+
</code></pre></div>
|
|
1833
|
+
</details>
|
|
1834
|
+
</div>
|
|
1835
|
+
|
|
1836
|
+
</div>
|
|
1837
|
+
|
|
1838
|
+
|
|
1839
|
+
|
|
1840
|
+
<div class="doc doc-object doc-method">
|
|
1841
|
+
|
|
1842
|
+
|
|
1843
|
+
|
|
1844
|
+
<h3 id="ciocore.package_tree.PackageTree.find_by_path" class="doc doc-heading">
|
|
1845
|
+
<code class="highlight language-python"><span class="n">find_by_path</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">path</span><span class="p">)</span></code>
|
|
1846
|
+
|
|
1847
|
+
|
|
1848
|
+
</h3>
|
|
1849
|
+
|
|
1850
|
+
<div class="doc doc-contents ">
|
|
1851
|
+
|
|
1852
|
+
<p>Find the package uniquely described by the given path.</p>
|
|
1853
|
+
<p>The path is of the form returned by the to_path_list() method.</p>
|
|
1854
|
+
|
|
1855
|
+
<p><strong>Parameters:</strong></p>
|
|
1856
|
+
<table>
|
|
1857
|
+
<thead>
|
|
1858
|
+
<tr>
|
|
1859
|
+
<th>Name</th>
|
|
1860
|
+
<th>Type</th>
|
|
1861
|
+
<th>Description</th>
|
|
1862
|
+
<th>Default</th>
|
|
1863
|
+
</tr>
|
|
1864
|
+
</thead>
|
|
1865
|
+
<tbody>
|
|
1866
|
+
<tr>
|
|
1867
|
+
<td><code>path</code></td>
|
|
1868
|
+
<td><code>str</code></td>
|
|
1869
|
+
<td><p>The path</p></td>
|
|
1870
|
+
<td><em>required</em></td>
|
|
1871
|
+
</tr>
|
|
1872
|
+
</tbody>
|
|
1873
|
+
</table>
|
|
1874
|
+
<p><strong>Returns:</strong></p>
|
|
1875
|
+
<table>
|
|
1876
|
+
<thead>
|
|
1877
|
+
<tr>
|
|
1878
|
+
<th>Type</th>
|
|
1879
|
+
<th>Description</th>
|
|
1880
|
+
</tr>
|
|
1881
|
+
</thead>
|
|
1882
|
+
<tbody>
|
|
1883
|
+
<tr>
|
|
1884
|
+
<td><code>object</code></td>
|
|
1885
|
+
<td><p>The package or None if no package exists with the given path.</p></td>
|
|
1886
|
+
</tr>
|
|
1887
|
+
</tbody>
|
|
1888
|
+
</table>
|
|
1889
|
+
<p><strong>Examples:</strong></p>
|
|
1890
|
+
<div class="highlight"><pre><span></span><code><span class="o">>>></span> <span class="kn">from</span><span class="w"> </span><span class="nn">ciocore</span><span class="w"> </span><span class="kn">import</span> <span class="n">api_client</span><span class="p">,</span> <span class="n">package_tree</span><span class="p">,</span> <span class="n">package_environment</span>
|
|
1891
|
+
<span class="o">>>></span> <span class="n">packages</span> <span class="o">=</span> <span class="n">api_client</span><span class="o">.</span><span class="n">request_software_packages</span><span class="p">()</span>
|
|
1892
|
+
<span class="o">>>></span> <span class="n">pt</span> <span class="o">=</span> <span class="n">package_tree</span><span class="o">.</span><span class="n">PackageTree</span><span class="p">(</span><span class="n">packages</span><span class="p">,</span> <span class="n">product</span><span class="o">=</span><span class="s2">"cinema4d"</span><span class="p">)</span>
|
|
1893
|
+
<span class="o">>>></span> <span class="n">pt</span><span class="o">.</span><span class="n">find_by_path</span><span class="p">(</span><span class="s2">"cinema4d 24.111 linux/redshift-cinema4d 3.0.62 linux"</span><span class="p">)</span>
|
|
1894
|
+
<span class="p">{</span>
|
|
1895
|
+
<span class="s1">'platform'</span><span class="p">:</span> <span class="s1">'linux'</span><span class="p">,</span>
|
|
1896
|
+
<span class="s1">'plugin_host_product'</span><span class="p">:</span> <span class="s1">'cinema4d'</span><span class="p">,</span>
|
|
1897
|
+
<span class="s1">'product'</span><span class="p">:</span> <span class="s1">'redshift-cinema4d'</span><span class="p">,</span>
|
|
1898
|
+
<span class="s1">'major_version'</span><span class="p">:</span> <span class="s1">'3'</span><span class="p">,</span>
|
|
1899
|
+
<span class="s1">'release_version'</span><span class="p">:</span> <span class="s1">'62'</span><span class="p">,</span>
|
|
1900
|
+
<span class="s1">'vendor'</span><span class="p">:</span> <span class="s1">'maxon'</span><span class="p">,</span>
|
|
1901
|
+
<span class="s1">'children'</span><span class="p">:</span> <span class="p">[],</span>
|
|
1902
|
+
<span class="s1">'plugin_host_version'</span><span class="p">:</span> <span class="s2">"24"</span><span class="p">,</span>
|
|
1903
|
+
<span class="o">...</span>
|
|
1904
|
+
<span class="p">}</span>
|
|
1905
|
+
</code></pre></div>
|
|
1906
|
+
|
|
1907
|
+
<details class="quote">
|
|
1908
|
+
<summary>Source code in <code>ciocore/package_tree.py</code></summary>
|
|
1909
|
+
<div class="highlight"><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">find_by_path</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">path</span><span class="p">):</span>
|
|
1910
|
+
<span class="w"> </span><span class="sd">"""</span>
|
|
1911
|
+
<span class="sd"> Find the package uniquely described by the given path.</span>
|
|
1912
|
+
|
|
1913
|
+
<span class="sd"> The path is of the form returned by the to_path_list() method.</span>
|
|
1914
|
+
|
|
1915
|
+
<span class="sd"> Args:</span>
|
|
1916
|
+
<span class="sd"> path (str): The path</span>
|
|
1917
|
+
|
|
1918
|
+
<span class="sd"> Returns:</span>
|
|
1919
|
+
<span class="sd"> object: The package or None if no package exists with the given path.</span>
|
|
1920
|
+
|
|
1921
|
+
<span class="sd"> Example:</span>
|
|
1922
|
+
<span class="sd"> >>> from ciocore import api_client, package_tree, package_environment</span>
|
|
1923
|
+
<span class="sd"> >>> packages = api_client.request_software_packages()</span>
|
|
1924
|
+
<span class="sd"> >>> pt = package_tree.PackageTree(packages, product="cinema4d")</span>
|
|
1925
|
+
<span class="sd"> >>> pt.find_by_path("cinema4d 24.111 linux/redshift-cinema4d 3.0.62 linux")</span>
|
|
1926
|
+
<span class="sd"> {</span>
|
|
1927
|
+
<span class="sd"> 'platform': 'linux',</span>
|
|
1928
|
+
<span class="sd"> 'plugin_host_product': 'cinema4d',</span>
|
|
1929
|
+
<span class="sd"> 'product': 'redshift-cinema4d',</span>
|
|
1930
|
+
<span class="sd"> 'major_version': '3',</span>
|
|
1931
|
+
<span class="sd"> 'release_version': '62',</span>
|
|
1932
|
+
<span class="sd"> 'vendor': 'maxon',</span>
|
|
1933
|
+
<span class="sd"> 'children': [],</span>
|
|
1934
|
+
<span class="sd"> 'plugin_host_version': "24",</span>
|
|
1935
|
+
<span class="sd"> ...</span>
|
|
1936
|
+
<span class="sd"> }</span>
|
|
1937
|
+
<span class="sd"> """</span>
|
|
1938
|
+
<span class="k">return</span> <span class="n">_find_by_path</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_tree</span><span class="p">,</span> <span class="n">path</span><span class="p">)</span>
|
|
1939
|
+
</code></pre></div>
|
|
1940
|
+
</details>
|
|
1941
|
+
</div>
|
|
1942
|
+
|
|
1943
|
+
</div>
|
|
1944
|
+
|
|
1945
|
+
|
|
1946
|
+
|
|
1947
|
+
<div class="doc doc-object doc-method">
|
|
1948
|
+
|
|
1949
|
+
|
|
1950
|
+
|
|
1951
|
+
<h3 id="ciocore.package_tree.PackageTree.to_path_list" class="doc doc-heading">
|
|
1952
|
+
<code class="highlight language-python"><span class="n">to_path_list</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span></code>
|
|
1953
|
+
|
|
1954
|
+
|
|
1955
|
+
</h3>
|
|
1956
|
+
|
|
1957
|
+
<div class="doc doc-contents ">
|
|
1958
|
+
|
|
1959
|
+
<p>Get paths to all nodes.</p>
|
|
1960
|
+
<p>This is useful for populating a chooser to choose packages fully qualified by path.
|
|
1961
|
+
Houdini's tree widget, for example, takes the below format unchanged and generates the
|
|
1962
|
+
appropriate UI.</p>
|
|
1963
|
+
|
|
1964
|
+
<p><strong>Parameters:</strong></p>
|
|
1965
|
+
<table>
|
|
1966
|
+
<thead>
|
|
1967
|
+
<tr>
|
|
1968
|
+
<th>Name</th>
|
|
1969
|
+
<th>Type</th>
|
|
1970
|
+
<th>Description</th>
|
|
1971
|
+
<th>Default</th>
|
|
1972
|
+
</tr>
|
|
1973
|
+
</thead>
|
|
1974
|
+
<tbody>
|
|
1975
|
+
<tr>
|
|
1976
|
+
<td><code>name</code></td>
|
|
1977
|
+
<td><code>str</code></td>
|
|
1978
|
+
<td><p>Get paths below the tree represented by the name. Defaults to None (root node).</p></td>
|
|
1979
|
+
<td><code>None</code></td>
|
|
1980
|
+
</tr>
|
|
1981
|
+
</tbody>
|
|
1982
|
+
</table>
|
|
1983
|
+
<p><strong>Returns:</strong></p>
|
|
1984
|
+
<table>
|
|
1985
|
+
<thead>
|
|
1986
|
+
<tr>
|
|
1987
|
+
<th>Type</th>
|
|
1988
|
+
<th>Description</th>
|
|
1989
|
+
</tr>
|
|
1990
|
+
</thead>
|
|
1991
|
+
<tbody>
|
|
1992
|
+
<tr>
|
|
1993
|
+
<td><code>list(str)</code></td>
|
|
1994
|
+
<td><p>Paths to all nodes in the tree.</p></td>
|
|
1995
|
+
</tr>
|
|
1996
|
+
</tbody>
|
|
1997
|
+
</table>
|
|
1998
|
+
<p><strong>Examples:</strong></p>
|
|
1999
|
+
<div class="highlight"><pre><span></span><code><span class="o">>>></span> <span class="kn">from</span><span class="w"> </span><span class="nn">ciocore</span><span class="w"> </span><span class="kn">import</span> <span class="n">api_client</span><span class="p">,</span> <span class="n">package_tree</span>
|
|
2000
|
+
<span class="o">>>></span> <span class="n">packages</span> <span class="o">=</span> <span class="n">api_client</span><span class="o">.</span><span class="n">request_software_packages</span><span class="p">()</span>
|
|
2001
|
+
<span class="o">>>></span> <span class="n">pt</span> <span class="o">=</span> <span class="n">package_tree</span><span class="o">.</span><span class="n">PackageTree</span><span class="p">(</span><span class="n">packages</span><span class="p">,</span> <span class="n">product</span><span class="o">=</span><span class="s2">"cinema4d"</span><span class="p">)</span>
|
|
2002
|
+
<span class="o">>>></span> <span class="n">pt</span><span class="o">.</span><span class="n">to_path_list</span><span class="p">()</span>
|
|
2003
|
+
<span class="n">cinema4d</span> <span class="mf">22.118</span><span class="o">.</span><span class="n">RB320081</span> <span class="n">linux</span>
|
|
2004
|
+
<span class="n">cinema4d</span> <span class="mf">22.118</span><span class="o">.</span><span class="n">RB320081</span> <span class="n">linux</span><span class="o">/</span><span class="n">redshift</span><span class="o">-</span><span class="n">cinema4d</span> <span class="mf">3.0.43</span> <span class="n">linux</span>
|
|
2005
|
+
<span class="n">cinema4d</span> <span class="mf">22.118</span><span class="o">.</span><span class="n">RB320081</span> <span class="n">linux</span><span class="o">/</span><span class="n">redshift</span><span class="o">-</span><span class="n">cinema4d</span> <span class="mf">3.0.45</span> <span class="n">linux</span>
|
|
2006
|
+
<span class="n">cinema4d</span> <span class="mf">22.118</span><span class="o">.</span><span class="n">RB320081</span> <span class="n">linux</span><span class="o">/</span><span class="n">redshift</span><span class="o">-</span><span class="n">cinema4d</span> <span class="mf">3.0.22</span> <span class="n">linux</span>
|
|
2007
|
+
<span class="n">cinema4d</span> <span class="mf">22.118</span><span class="o">.</span><span class="n">RB320081</span> <span class="n">linux</span><span class="o">/</span><span class="n">arnold</span><span class="o">-</span><span class="n">cinema4d</span> <span class="mf">3.3.2.100</span> <span class="n">linux</span>
|
|
2008
|
+
<span class="o">...</span>
|
|
2009
|
+
</code></pre></div>
|
|
2010
|
+
<div class="highlight"><pre><span></span><code><span class="o">>>></span> <span class="n">pt</span><span class="o">.</span><span class="n">to_path_list</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="s2">"cinema4d 24.111 linux"</span><span class="p">)</span>
|
|
2011
|
+
<span class="n">redshift</span><span class="o">-</span><span class="n">cinema4d</span> <span class="mf">3.0.57</span> <span class="n">linux</span>
|
|
2012
|
+
<span class="n">redshift</span><span class="o">-</span><span class="n">cinema4d</span> <span class="mf">3.0.62</span> <span class="n">linux</span>
|
|
2013
|
+
<span class="n">redshift</span><span class="o">-</span><span class="n">cinema4d</span> <span class="mf">3.0.45</span> <span class="n">linux</span>
|
|
2014
|
+
<span class="n">redshift</span><span class="o">-</span><span class="n">cinema4d</span> <span class="mf">3.0.64</span> <span class="n">linux</span>
|
|
2015
|
+
</code></pre></div>
|
|
2016
|
+
|
|
2017
|
+
<details class="quote">
|
|
2018
|
+
<summary>Source code in <code>ciocore/package_tree.py</code></summary>
|
|
2019
|
+
<div class="highlight"><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">to_path_list</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
2020
|
+
<span class="w"> </span><span class="sd">"""</span>
|
|
2021
|
+
<span class="sd"> Get paths to all nodes.</span>
|
|
2022
|
+
|
|
2023
|
+
<span class="sd"> This is useful for populating a chooser to choose packages fully qualified by path.</span>
|
|
2024
|
+
<span class="sd"> Houdini's tree widget, for example, takes the below format unchanged and generates the</span>
|
|
2025
|
+
<span class="sd"> appropriate UI.</span>
|
|
2026
|
+
|
|
2027
|
+
<span class="sd"> Args:</span>
|
|
2028
|
+
<span class="sd"> name (str): Get paths below the tree represented by the name. Defaults to None (root node).</span>
|
|
2029
|
+
|
|
2030
|
+
<span class="sd"> Returns:</span>
|
|
2031
|
+
<span class="sd"> list(str): Paths to all nodes in the tree.</span>
|
|
2032
|
+
|
|
2033
|
+
<span class="sd"> Example:</span>
|
|
2034
|
+
<span class="sd"> >>> from ciocore import api_client, package_tree</span>
|
|
2035
|
+
<span class="sd"> >>> packages = api_client.request_software_packages()</span>
|
|
2036
|
+
<span class="sd"> >>> pt = package_tree.PackageTree(packages, product="cinema4d")</span>
|
|
2037
|
+
<span class="sd"> >>> pt.to_path_list()</span>
|
|
2038
|
+
<span class="sd"> cinema4d 22.118.RB320081 linux</span>
|
|
2039
|
+
<span class="sd"> cinema4d 22.118.RB320081 linux/redshift-cinema4d 3.0.43 linux</span>
|
|
2040
|
+
<span class="sd"> cinema4d 22.118.RB320081 linux/redshift-cinema4d 3.0.45 linux</span>
|
|
2041
|
+
<span class="sd"> cinema4d 22.118.RB320081 linux/redshift-cinema4d 3.0.22 linux</span>
|
|
2042
|
+
<span class="sd"> cinema4d 22.118.RB320081 linux/arnold-cinema4d 3.3.2.100 linux</span>
|
|
2043
|
+
<span class="sd"> ...</span>
|
|
2044
|
+
|
|
2045
|
+
<span class="sd"> >>> pt.to_path_list(name="cinema4d 24.111 linux")</span>
|
|
2046
|
+
<span class="sd"> redshift-cinema4d 3.0.57 linux</span>
|
|
2047
|
+
<span class="sd"> redshift-cinema4d 3.0.62 linux</span>
|
|
2048
|
+
<span class="sd"> redshift-cinema4d 3.0.45 linux</span>
|
|
2049
|
+
<span class="sd"> redshift-cinema4d 3.0.64 linux</span>
|
|
2050
|
+
<span class="sd"> """</span>
|
|
2051
|
+
<span class="k">if</span> <span class="n">name</span><span class="p">:</span>
|
|
2052
|
+
<span class="n">subtree</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">find_by_name</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
|
2053
|
+
<span class="k">return</span> <span class="n">_to_path_list</span><span class="p">(</span><span class="n">subtree</span><span class="p">)</span>
|
|
2054
|
+
<span class="k">return</span> <span class="n">_to_path_list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_tree</span><span class="p">)</span>
|
|
2055
|
+
</code></pre></div>
|
|
2056
|
+
</details>
|
|
2057
|
+
</div>
|
|
2058
|
+
|
|
2059
|
+
</div>
|
|
2060
|
+
|
|
2061
|
+
|
|
2062
|
+
|
|
2063
|
+
<div class="doc doc-object doc-method">
|
|
2064
|
+
|
|
2065
|
+
|
|
2066
|
+
|
|
2067
|
+
<h3 id="ciocore.package_tree.PackageTree.platforms" class="doc doc-heading">
|
|
2068
|
+
<code class="highlight language-python"><span class="n">platforms</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span></code>
|
|
2069
|
+
|
|
2070
|
+
|
|
2071
|
+
</h3>
|
|
2072
|
+
|
|
2073
|
+
<div class="doc doc-contents ">
|
|
2074
|
+
|
|
2075
|
+
<p>Get the platforms represented by packages in the tree.</p>
|
|
2076
|
+
|
|
2077
|
+
<p><strong>Returns:</strong></p>
|
|
2078
|
+
<table>
|
|
2079
|
+
<thead>
|
|
2080
|
+
<tr>
|
|
2081
|
+
<th>Type</th>
|
|
2082
|
+
<th>Description</th>
|
|
2083
|
+
</tr>
|
|
2084
|
+
</thead>
|
|
2085
|
+
<tbody>
|
|
2086
|
+
<tr>
|
|
2087
|
+
<td><code>set</code></td>
|
|
2088
|
+
<td><p>The set of platforms.</p></td>
|
|
2089
|
+
</tr>
|
|
2090
|
+
</tbody>
|
|
2091
|
+
</table>
|
|
2092
|
+
<details class="quote">
|
|
2093
|
+
<summary>Source code in <code>ciocore/package_tree.py</code></summary>
|
|
2094
|
+
<div class="highlight"><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">platforms</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
2095
|
+
<span class="w"> </span><span class="sd">"""</span>
|
|
2096
|
+
<span class="sd"> Get the platforms represented by packages in the tree.</span>
|
|
2097
|
+
|
|
2098
|
+
<span class="sd"> Returns:</span>
|
|
2099
|
+
<span class="sd"> set: The set of platforms.</span>
|
|
2100
|
+
<span class="sd"> """</span>
|
|
2101
|
+
|
|
2102
|
+
<span class="c1"># No need to recurse. Plugins are assumed to be compatible with the host.</span>
|
|
2103
|
+
<span class="k">return</span> <span class="nb">set</span><span class="p">([</span><span class="n">host</span><span class="p">[</span><span class="s2">"platform"</span><span class="p">]</span> <span class="k">for</span> <span class="n">host</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_tree</span><span class="p">[</span><span class="s2">"children"</span><span class="p">]])</span>
|
|
2104
|
+
</code></pre></div>
|
|
2105
|
+
</details>
|
|
2106
|
+
</div>
|
|
2107
|
+
|
|
2108
|
+
</div>
|
|
2109
|
+
|
|
2110
|
+
|
|
2111
|
+
|
|
2112
|
+
<div class="doc doc-object doc-method">
|
|
2113
|
+
|
|
2114
|
+
|
|
2115
|
+
|
|
2116
|
+
<h3 id="ciocore.package_tree.PackageTree.json" class="doc doc-heading">
|
|
2117
|
+
<code class="highlight language-python"><span class="n">json</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span></code>
|
|
2118
|
+
|
|
2119
|
+
|
|
2120
|
+
</h3>
|
|
2121
|
+
|
|
2122
|
+
<div class="doc doc-contents ">
|
|
2123
|
+
|
|
2124
|
+
<p>The whole tree of softwware as json.</p>
|
|
2125
|
+
|
|
2126
|
+
<p><strong>Returns:</strong></p>
|
|
2127
|
+
<table>
|
|
2128
|
+
<thead>
|
|
2129
|
+
<tr>
|
|
2130
|
+
<th>Type</th>
|
|
2131
|
+
<th>Description</th>
|
|
2132
|
+
</tr>
|
|
2133
|
+
</thead>
|
|
2134
|
+
<tbody>
|
|
2135
|
+
<tr>
|
|
2136
|
+
<td><code>str</code></td>
|
|
2137
|
+
<td><p>JSON.</p></td>
|
|
2138
|
+
</tr>
|
|
2139
|
+
</tbody>
|
|
2140
|
+
</table>
|
|
2141
|
+
<details class="quote">
|
|
2142
|
+
<summary>Source code in <code>ciocore/package_tree.py</code></summary>
|
|
2143
|
+
<div class="highlight"><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">json</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
2144
|
+
<span class="w"> </span><span class="sd">"""</span>
|
|
2145
|
+
<span class="sd"> The whole tree of softwware as json.</span>
|
|
2146
|
+
|
|
2147
|
+
<span class="sd"> Returns:</span>
|
|
2148
|
+
<span class="sd"> str: JSON.</span>
|
|
2149
|
+
|
|
2150
|
+
<span class="sd"> """</span>
|
|
2151
|
+
<span class="k">return</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_tree</span><span class="p">)</span>
|
|
2152
|
+
</code></pre></div>
|
|
2153
|
+
</details>
|
|
2154
|
+
</div>
|
|
2155
|
+
|
|
2156
|
+
</div>
|
|
2157
|
+
|
|
2158
|
+
|
|
2159
|
+
|
|
2160
|
+
|
|
2161
|
+
<div class="doc doc-object doc-method">
|
|
2162
|
+
|
|
2163
|
+
|
|
2164
|
+
|
|
2165
|
+
<h3 id="ciocore.package_tree.PackageTree.as_dict" class="doc doc-heading">
|
|
2166
|
+
<code class="highlight language-python"><span class="n">as_dict</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span></code>
|
|
2167
|
+
|
|
2168
|
+
|
|
2169
|
+
</h3>
|
|
2170
|
+
|
|
2171
|
+
<div class="doc doc-contents ">
|
|
2172
|
+
|
|
2173
|
+
|
|
2174
|
+
<p><strong>Returns:</strong></p>
|
|
2175
|
+
<table>
|
|
2176
|
+
<thead>
|
|
2177
|
+
<tr>
|
|
2178
|
+
<th>Type</th>
|
|
2179
|
+
<th>Description</th>
|
|
2180
|
+
</tr>
|
|
2181
|
+
</thead>
|
|
2182
|
+
<tbody>
|
|
2183
|
+
<tr>
|
|
2184
|
+
<td><code>dict</code></td>
|
|
2185
|
+
<td><p>The underlying software dictionary.</p></td>
|
|
2186
|
+
</tr>
|
|
2187
|
+
</tbody>
|
|
2188
|
+
</table>
|
|
2189
|
+
<details class="quote">
|
|
2190
|
+
<summary>Source code in <code>ciocore/package_tree.py</code></summary>
|
|
2191
|
+
<div class="highlight"><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">as_dict</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
2192
|
+
<span class="w"> </span><span class="sd">"""</span>
|
|
2193
|
+
<span class="sd"> Returns:</span>
|
|
2194
|
+
<span class="sd"> dict: The underlying software dictionary.</span>
|
|
2195
|
+
|
|
2196
|
+
<span class="sd"> """</span>
|
|
2197
|
+
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_tree</span>
|
|
2198
|
+
</code></pre></div>
|
|
2199
|
+
</details>
|
|
2200
|
+
</div>
|
|
2201
|
+
|
|
2202
|
+
</div>
|
|
2203
|
+
|
|
2204
|
+
|
|
2205
|
+
|
|
2206
|
+
|
|
2207
|
+
|
|
2208
|
+
</div>
|
|
2209
|
+
|
|
2210
|
+
</div>
|
|
2211
|
+
|
|
2212
|
+
</div>
|
|
2213
|
+
|
|
2214
|
+
|
|
2215
|
+
|
|
2216
|
+
|
|
2217
|
+
<div class="doc doc-object doc-function">
|
|
2218
|
+
|
|
2219
|
+
|
|
2220
|
+
|
|
2221
|
+
<h2 id="ciocore.package_tree.to_name" class="doc doc-heading">
|
|
2222
|
+
<code class="highlight language-python"><span class="n">to_name</span><span class="p">(</span><span class="n">pkg</span><span class="p">)</span></code>
|
|
2223
|
+
|
|
2224
|
+
|
|
2225
|
+
</h2>
|
|
2226
|
+
|
|
2227
|
+
<div class="doc doc-contents ">
|
|
2228
|
+
|
|
2229
|
+
<p>Generate a name like <code>houdini 16.5.323 linux</code> or <code>maya 2016.SP3 linux</code>.</p>
|
|
2230
|
+
<p>This name is derived from the product and version fields in a package. Note: It is not
|
|
2231
|
+
necessarily possible to go the other way and extract version fields from the name.</p>
|
|
2232
|
+
|
|
2233
|
+
<p><strong>Parameters:</strong></p>
|
|
2234
|
+
<table>
|
|
2235
|
+
<thead>
|
|
2236
|
+
<tr>
|
|
2237
|
+
<th>Name</th>
|
|
2238
|
+
<th>Type</th>
|
|
2239
|
+
<th>Description</th>
|
|
2240
|
+
<th>Default</th>
|
|
2241
|
+
</tr>
|
|
2242
|
+
</thead>
|
|
2243
|
+
<tbody>
|
|
2244
|
+
<tr>
|
|
2245
|
+
<td><code>pkg</code></td>
|
|
2246
|
+
<td><code>object</code></td>
|
|
2247
|
+
<td><p>An object with product, platform, and all version fields.</p></td>
|
|
2248
|
+
<td><em>required</em></td>
|
|
2249
|
+
</tr>
|
|
2250
|
+
</tbody>
|
|
2251
|
+
</table>
|
|
2252
|
+
<p><strong>Returns:</strong></p>
|
|
2253
|
+
<table>
|
|
2254
|
+
<thead>
|
|
2255
|
+
<tr>
|
|
2256
|
+
<th>Type</th>
|
|
2257
|
+
<th>Description</th>
|
|
2258
|
+
</tr>
|
|
2259
|
+
</thead>
|
|
2260
|
+
<tbody>
|
|
2261
|
+
<tr>
|
|
2262
|
+
<td><code>str</code></td>
|
|
2263
|
+
<td><p>The package name.</p></td>
|
|
2264
|
+
</tr>
|
|
2265
|
+
</tbody>
|
|
2266
|
+
</table>
|
|
2267
|
+
<p><strong>Examples:</strong></p>
|
|
2268
|
+
<div class="highlight"><pre><span></span><code><span class="o">>>></span> <span class="kn">from</span><span class="w"> </span><span class="nn">ciocore</span><span class="w"> </span><span class="kn">import</span> <span class="n">api_client</span><span class="p">,</span> <span class="n">package_tree</span>
|
|
2269
|
+
<span class="o">>>></span> <span class="n">packages</span> <span class="o">=</span> <span class="n">api_client</span><span class="o">.</span><span class="n">request_software_packages</span><span class="p">()</span>
|
|
2270
|
+
<span class="o">>>></span> <span class="n">package_tree</span><span class="o">.</span><span class="n">to_name</span><span class="p">(</span><span class="n">packages</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
|
2271
|
+
<span class="n">redshift</span><span class="o">-</span><span class="n">maya</span> <span class="mf">3.0.64</span> <span class="n">linux</span>
|
|
2272
|
+
</code></pre></div>
|
|
2273
|
+
|
|
2274
|
+
<details class="quote">
|
|
2275
|
+
<summary>Source code in <code>ciocore/package_tree.py</code></summary>
|
|
2276
|
+
<div class="highlight"><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">to_name</span><span class="p">(</span><span class="n">pkg</span><span class="p">):</span>
|
|
2277
|
+
<span class="w"> </span><span class="sd">"""</span>
|
|
2278
|
+
<span class="sd"> Generate a name like `houdini 16.5.323 linux` or `maya 2016.SP3 linux`.</span>
|
|
2279
|
+
|
|
2280
|
+
<span class="sd"> This name is derived from the product and version fields in a package. Note: It is not</span>
|
|
2281
|
+
<span class="sd"> necessarily possible to go the other way and extract version fields from the name.</span>
|
|
2282
|
+
|
|
2283
|
+
<span class="sd"> Args:</span>
|
|
2284
|
+
<span class="sd"> pkg (object): An object with product, platform, and all version fields.</span>
|
|
2285
|
+
|
|
2286
|
+
<span class="sd"> Returns:</span>
|
|
2287
|
+
<span class="sd"> str: The package name.</span>
|
|
2288
|
+
|
|
2289
|
+
<span class="sd"> Examples:</span>
|
|
2290
|
+
<span class="sd"> >>> from ciocore import api_client, package_tree</span>
|
|
2291
|
+
<span class="sd"> >>> packages = api_client.request_software_packages()</span>
|
|
2292
|
+
<span class="sd"> >>> package_tree.to_name(packages[0])</span>
|
|
2293
|
+
<span class="sd"> redshift-maya 3.0.64 linux</span>
|
|
2294
|
+
|
|
2295
|
+
<span class="sd"> """</span>
|
|
2296
|
+
|
|
2297
|
+
<span class="n">version_parts</span> <span class="o">=</span> <span class="p">[</span>
|
|
2298
|
+
<span class="n">pkg</span><span class="p">[</span><span class="s2">"major_version"</span><span class="p">],</span>
|
|
2299
|
+
<span class="n">pkg</span><span class="p">[</span><span class="s2">"minor_version"</span><span class="p">],</span>
|
|
2300
|
+
<span class="n">pkg</span><span class="p">[</span><span class="s2">"release_version"</span><span class="p">],</span>
|
|
2301
|
+
<span class="n">pkg</span><span class="p">[</span><span class="s2">"build_version"</span><span class="p">],</span>
|
|
2302
|
+
<span class="p">]</span>
|
|
2303
|
+
<span class="n">version_string</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"."</span><span class="p">)</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="n">p</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">version_parts</span> <span class="k">if</span> <span class="n">p</span><span class="p">])</span>
|
|
2304
|
+
<span class="k">if</span> <span class="n">pkg</span><span class="p">[</span><span class="s2">"platform"</span><span class="p">]</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">PLATFORMS</span><span class="p">:</span>
|
|
2305
|
+
<span class="k">raise</span> <span class="ne">KeyError</span><span class="p">(</span><span class="s2">"Invalid platform: </span><span class="si">{}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">pkg</span><span class="p">[</span><span class="s2">"platform"</span><span class="p">]))</span>
|
|
2306
|
+
<span class="k">return</span> <span class="s2">" "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="nb">filter</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="p">[</span><span class="n">pkg</span><span class="p">[</span><span class="s2">"product"</span><span class="p">],</span> <span class="n">version_string</span><span class="p">,</span> <span class="n">pkg</span><span class="p">[</span><span class="s2">"platform"</span><span class="p">]]))</span>
|
|
2307
|
+
</code></pre></div>
|
|
2308
|
+
</details>
|
|
2309
|
+
</div>
|
|
2310
|
+
|
|
2311
|
+
</div>
|
|
2312
|
+
|
|
2313
|
+
|
|
2314
|
+
|
|
2315
|
+
|
|
2316
|
+
|
|
2317
|
+
|
|
2318
|
+
</div>
|
|
2319
|
+
|
|
2320
|
+
</div>
|
|
2321
|
+
|
|
2322
|
+
</div>
|
|
2323
|
+
|
|
2324
|
+
|
|
2325
|
+
|
|
2326
|
+
|
|
2327
|
+
|
|
2328
|
+
|
|
2329
|
+
|
|
2330
|
+
|
|
2331
|
+
|
|
2332
|
+
|
|
2333
|
+
|
|
2334
|
+
|
|
2335
|
+
|
|
2336
|
+
</article>
|
|
2337
|
+
</div>
|
|
2338
|
+
|
|
2339
|
+
|
|
2340
|
+
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
|
|
2341
|
+
</div>
|
|
2342
|
+
|
|
2343
|
+
<button type="button" class="md-top md-icon" data-md-component="top" hidden>
|
|
2344
|
+
|
|
2345
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12Z"/></svg>
|
|
2346
|
+
Back to top
|
|
2347
|
+
</button>
|
|
2348
|
+
|
|
2349
|
+
</main>
|
|
2350
|
+
|
|
2351
|
+
<footer class="md-footer">
|
|
2352
|
+
|
|
2353
|
+
<div class="md-footer-meta md-typeset">
|
|
2354
|
+
<div class="md-footer-meta__inner md-grid">
|
|
2355
|
+
<div class="md-copyright">
|
|
2356
|
+
|
|
2357
|
+
<div class="md-copyright__highlight">
|
|
2358
|
+
Copyright © 2023, CoreWeave.
|
|
2359
|
+
</div>
|
|
2360
|
+
|
|
2361
|
+
|
|
2362
|
+
Made with
|
|
2363
|
+
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
|
|
2364
|
+
Material for MkDocs
|
|
2365
|
+
</a>
|
|
2366
|
+
|
|
2367
|
+
</div>
|
|
2368
|
+
|
|
2369
|
+
</div>
|
|
2370
|
+
</div>
|
|
2371
|
+
</footer>
|
|
2372
|
+
|
|
2373
|
+
</div>
|
|
2374
|
+
<div class="md-dialog" data-md-component="dialog">
|
|
2375
|
+
<div class="md-dialog__inner md-typeset"></div>
|
|
2376
|
+
</div>
|
|
2377
|
+
|
|
2378
|
+
|
|
2379
|
+
<script id="__config" type="application/json">{"base": "../..", "features": ["navigation.expand", "navigation.instant", "navigation.tabs", "navigation.tabs.sticky", "navigation.tracking", "navigation.top"], "search": "../../assets/javascripts/workers/search.b8dbb3d2.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
|
|
2380
|
+
|
|
2381
|
+
|
|
2382
|
+
<script src="../../assets/javascripts/bundle.471ce7a9.min.js"></script>
|
|
2383
|
+
|
|
2384
|
+
|
|
2385
|
+
</body>
|
|
2386
|
+
</html>
|