ciocore 5.1.1__py2.py3-none-any.whl → 10.0.0b3__py2.py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. ciocore/VERSION +1 -1
  2. ciocore/__init__.py +23 -1
  3. ciocore/api_client.py +655 -160
  4. ciocore/auth/__init__.py +5 -3
  5. ciocore/cli.py +501 -0
  6. ciocore/common.py +15 -13
  7. ciocore/conductor_submit.py +77 -60
  8. ciocore/config.py +127 -13
  9. ciocore/data.py +162 -77
  10. ciocore/docsite/404.html +746 -0
  11. ciocore/docsite/apidoc/api_client/index.html +3605 -0
  12. ciocore/docsite/apidoc/apidoc/index.html +909 -0
  13. ciocore/docsite/apidoc/config/index.html +1652 -0
  14. ciocore/docsite/apidoc/data/index.html +1553 -0
  15. ciocore/docsite/apidoc/hardware_set/index.html +2460 -0
  16. ciocore/docsite/apidoc/package_environment/index.html +1507 -0
  17. ciocore/docsite/apidoc/package_tree/index.html +2386 -0
  18. ciocore/docsite/assets/_mkdocstrings.css +16 -0
  19. ciocore/docsite/assets/images/favicon.png +0 -0
  20. ciocore/docsite/assets/javascripts/bundle.471ce7a9.min.js +29 -0
  21. ciocore/docsite/assets/javascripts/bundle.471ce7a9.min.js.map +7 -0
  22. ciocore/docsite/assets/javascripts/lunr/min/lunr.ar.min.js +1 -0
  23. ciocore/docsite/assets/javascripts/lunr/min/lunr.da.min.js +18 -0
  24. ciocore/docsite/assets/javascripts/lunr/min/lunr.de.min.js +18 -0
  25. ciocore/docsite/assets/javascripts/lunr/min/lunr.du.min.js +18 -0
  26. ciocore/docsite/assets/javascripts/lunr/min/lunr.el.min.js +1 -0
  27. ciocore/docsite/assets/javascripts/lunr/min/lunr.es.min.js +18 -0
  28. ciocore/docsite/assets/javascripts/lunr/min/lunr.fi.min.js +18 -0
  29. ciocore/docsite/assets/javascripts/lunr/min/lunr.fr.min.js +18 -0
  30. ciocore/docsite/assets/javascripts/lunr/min/lunr.he.min.js +1 -0
  31. ciocore/docsite/assets/javascripts/lunr/min/lunr.hi.min.js +1 -0
  32. ciocore/docsite/assets/javascripts/lunr/min/lunr.hu.min.js +18 -0
  33. ciocore/docsite/assets/javascripts/lunr/min/lunr.hy.min.js +1 -0
  34. ciocore/docsite/assets/javascripts/lunr/min/lunr.it.min.js +18 -0
  35. ciocore/docsite/assets/javascripts/lunr/min/lunr.ja.min.js +1 -0
  36. ciocore/docsite/assets/javascripts/lunr/min/lunr.jp.min.js +1 -0
  37. ciocore/docsite/assets/javascripts/lunr/min/lunr.kn.min.js +1 -0
  38. ciocore/docsite/assets/javascripts/lunr/min/lunr.ko.min.js +1 -0
  39. ciocore/docsite/assets/javascripts/lunr/min/lunr.multi.min.js +1 -0
  40. ciocore/docsite/assets/javascripts/lunr/min/lunr.nl.min.js +18 -0
  41. ciocore/docsite/assets/javascripts/lunr/min/lunr.no.min.js +18 -0
  42. ciocore/docsite/assets/javascripts/lunr/min/lunr.pt.min.js +18 -0
  43. ciocore/docsite/assets/javascripts/lunr/min/lunr.ro.min.js +18 -0
  44. ciocore/docsite/assets/javascripts/lunr/min/lunr.ru.min.js +18 -0
  45. ciocore/docsite/assets/javascripts/lunr/min/lunr.sa.min.js +1 -0
  46. ciocore/docsite/assets/javascripts/lunr/min/lunr.stemmer.support.min.js +1 -0
  47. ciocore/docsite/assets/javascripts/lunr/min/lunr.sv.min.js +18 -0
  48. ciocore/docsite/assets/javascripts/lunr/min/lunr.ta.min.js +1 -0
  49. ciocore/docsite/assets/javascripts/lunr/min/lunr.te.min.js +1 -0
  50. ciocore/docsite/assets/javascripts/lunr/min/lunr.th.min.js +1 -0
  51. ciocore/docsite/assets/javascripts/lunr/min/lunr.tr.min.js +18 -0
  52. ciocore/docsite/assets/javascripts/lunr/min/lunr.vi.min.js +1 -0
  53. ciocore/docsite/assets/javascripts/lunr/min/lunr.zh.min.js +1 -0
  54. ciocore/docsite/assets/javascripts/lunr/tinyseg.js +206 -0
  55. ciocore/docsite/assets/javascripts/lunr/wordcut.js +6708 -0
  56. ciocore/docsite/assets/javascripts/workers/search.b8dbb3d2.min.js +42 -0
  57. ciocore/docsite/assets/javascripts/workers/search.b8dbb3d2.min.js.map +7 -0
  58. ciocore/docsite/assets/stylesheets/main.3cba04c6.min.css +1 -0
  59. ciocore/docsite/assets/stylesheets/main.3cba04c6.min.css.map +1 -0
  60. ciocore/docsite/assets/stylesheets/palette.06af60db.min.css +1 -0
  61. ciocore/docsite/assets/stylesheets/palette.06af60db.min.css.map +1 -0
  62. ciocore/docsite/cmdline/docs/index.html +871 -0
  63. ciocore/docsite/cmdline/downloader/index.html +934 -0
  64. ciocore/docsite/cmdline/packages/index.html +878 -0
  65. ciocore/docsite/cmdline/uploader/index.html +995 -0
  66. ciocore/docsite/how-to-guides/index.html +869 -0
  67. ciocore/docsite/index.html +895 -0
  68. ciocore/docsite/logo.png +0 -0
  69. ciocore/docsite/objects.inv +0 -0
  70. ciocore/docsite/search/search_index.json +1 -0
  71. ciocore/docsite/sitemap.xml +3 -0
  72. ciocore/docsite/sitemap.xml.gz +0 -0
  73. ciocore/docsite/stylesheets/extra.css +26 -0
  74. ciocore/docsite/stylesheets/tables.css +167 -0
  75. ciocore/downloader/base_downloader.py +644 -0
  76. ciocore/downloader/download_runner_base.py +47 -0
  77. ciocore/downloader/job_downloader.py +119 -0
  78. ciocore/{downloader.py → downloader/legacy_downloader.py} +12 -9
  79. ciocore/downloader/log.py +73 -0
  80. ciocore/downloader/logging_download_runner.py +87 -0
  81. ciocore/downloader/perpetual_downloader.py +63 -0
  82. ciocore/downloader/registry.py +97 -0
  83. ciocore/downloader/reporter.py +135 -0
  84. ciocore/exceptions.py +8 -2
  85. ciocore/file_utils.py +51 -50
  86. ciocore/hardware_set.py +449 -0
  87. ciocore/loggeria.py +89 -20
  88. ciocore/package_environment.py +110 -48
  89. ciocore/package_query.py +182 -0
  90. ciocore/package_tree.py +319 -258
  91. ciocore/retry.py +0 -0
  92. ciocore/uploader/_uploader.py +547 -364
  93. ciocore/uploader/thread_queue_job.py +176 -0
  94. ciocore/uploader/upload_stats/__init__.py +3 -4
  95. ciocore/uploader/upload_stats/stats_formats.py +10 -4
  96. ciocore/validator.py +34 -2
  97. ciocore/worker.py +174 -151
  98. ciocore-10.0.0b3.dist-info/METADATA +928 -0
  99. ciocore-10.0.0b3.dist-info/RECORD +128 -0
  100. {ciocore-5.1.1.dist-info → ciocore-10.0.0b3.dist-info}/WHEEL +1 -1
  101. ciocore-10.0.0b3.dist-info/entry_points.txt +2 -0
  102. tests/instance_type_fixtures.py +175 -0
  103. tests/package_fixtures.py +205 -0
  104. tests/test_api_client.py +297 -12
  105. tests/test_base_downloader.py +104 -0
  106. tests/test_cli.py +149 -0
  107. tests/test_common.py +1 -7
  108. tests/test_config.py +40 -18
  109. tests/test_data.py +162 -173
  110. tests/test_downloader.py +118 -0
  111. tests/test_hardware_set.py +139 -0
  112. tests/test_job_downloader.py +213 -0
  113. tests/test_package_query.py +38 -0
  114. tests/test_package_tree.py +91 -291
  115. tests/test_submit.py +44 -18
  116. tests/test_uploader.py +1 -4
  117. ciocore/__about__.py +0 -10
  118. ciocore/cli/conductor.py +0 -191
  119. ciocore/compat.py +0 -15
  120. ciocore-5.1.1.data/scripts/conductor +0 -19
  121. ciocore-5.1.1.data/scripts/conductor.bat +0 -13
  122. ciocore-5.1.1.dist-info/METADATA +0 -408
  123. ciocore-5.1.1.dist-info/RECORD +0 -47
  124. tests/mocks/api_client_mock.py +0 -51
  125. /ciocore/{cli → downloader}/__init__.py +0 -0
  126. {ciocore-5.1.1.dist-info → ciocore-10.0.0b3.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,1553 @@
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="../config/">
15
+
16
+
17
+ <link rel="next" href="../hardware_set/">
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.data - 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="#ciocoredata" 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.data
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
+
576
+
577
+ <li class="md-nav__item md-nav__item--active">
578
+
579
+ <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
580
+
581
+
582
+
583
+
584
+
585
+ <label class="md-nav__link md-nav__link--active" for="__toc">
586
+
587
+
588
+ <span class="md-ellipsis">
589
+ ciocore.data
590
+ </span>
591
+
592
+
593
+ <span class="md-nav__icon md-icon"></span>
594
+ </label>
595
+
596
+ <a href="./" class="md-nav__link md-nav__link--active">
597
+
598
+
599
+ <span class="md-ellipsis">
600
+ ciocore.data
601
+ </span>
602
+
603
+
604
+ </a>
605
+
606
+
607
+
608
+ <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
609
+
610
+
611
+
612
+
613
+
614
+
615
+ <label class="md-nav__title" for="__toc">
616
+ <span class="md-nav__icon md-icon"></span>
617
+ Table of contents
618
+ </label>
619
+ <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
620
+
621
+ <li class="md-nav__item">
622
+ <a href="#ciocore.data" class="md-nav__link">
623
+ <span class="md-ellipsis">
624
+ ciocore.data
625
+ </span>
626
+ </a>
627
+
628
+ </li>
629
+
630
+ <li class="md-nav__item">
631
+ <a href="#ciocore.data.init" class="md-nav__link">
632
+ <span class="md-ellipsis">
633
+ init()
634
+ </span>
635
+ </a>
636
+
637
+ </li>
638
+
639
+ <li class="md-nav__item">
640
+ <a href="#ciocore.data.data" class="md-nav__link">
641
+ <span class="md-ellipsis">
642
+ data()
643
+ </span>
644
+ </a>
645
+
646
+ </li>
647
+
648
+ <li class="md-nav__item">
649
+ <a href="#ciocore.data.valid" class="md-nav__link">
650
+ <span class="md-ellipsis">
651
+ valid()
652
+ </span>
653
+ </a>
654
+
655
+ </li>
656
+
657
+ <li class="md-nav__item">
658
+ <a href="#ciocore.data.clear" class="md-nav__link">
659
+ <span class="md-ellipsis">
660
+ clear()
661
+ </span>
662
+ </a>
663
+
664
+ </li>
665
+
666
+ <li class="md-nav__item">
667
+ <a href="#ciocore.data.products" class="md-nav__link">
668
+ <span class="md-ellipsis">
669
+ products()
670
+ </span>
671
+ </a>
672
+
673
+ </li>
674
+
675
+ <li class="md-nav__item">
676
+ <a href="#ciocore.data.set_fixtures_dir" class="md-nav__link">
677
+ <span class="md-ellipsis">
678
+ set_fixtures_dir()
679
+ </span>
680
+ </a>
681
+
682
+ </li>
683
+
684
+ <li class="md-nav__item">
685
+ <a href="#ciocore.data.platforms" class="md-nav__link">
686
+ <span class="md-ellipsis">
687
+ platforms()
688
+ </span>
689
+ </a>
690
+
691
+ </li>
692
+
693
+ </ul>
694
+
695
+ </nav>
696
+
697
+ </li>
698
+
699
+
700
+
701
+
702
+
703
+
704
+
705
+
706
+
707
+
708
+ <li class="md-nav__item">
709
+ <a href="../hardware_set/" class="md-nav__link">
710
+
711
+
712
+ <span class="md-ellipsis">
713
+ ciocore.hardware_set
714
+ </span>
715
+
716
+
717
+ </a>
718
+ </li>
719
+
720
+
721
+
722
+
723
+
724
+
725
+
726
+
727
+
728
+
729
+ <li class="md-nav__item">
730
+ <a href="../package_tree/" class="md-nav__link">
731
+
732
+
733
+ <span class="md-ellipsis">
734
+ ciocore.package_tree
735
+ </span>
736
+
737
+
738
+ </a>
739
+ </li>
740
+
741
+
742
+
743
+
744
+
745
+
746
+
747
+
748
+
749
+
750
+ <li class="md-nav__item">
751
+ <a href="../package_environment/" class="md-nav__link">
752
+
753
+
754
+ <span class="md-ellipsis">
755
+ ciocore.package_environment
756
+ </span>
757
+
758
+
759
+ </a>
760
+ </li>
761
+
762
+
763
+
764
+
765
+ </ul>
766
+ </nav>
767
+
768
+ </li>
769
+
770
+
771
+
772
+
773
+
774
+
775
+
776
+
777
+
778
+ <li class="md-nav__item">
779
+ <a href="../../how-to-guides/" class="md-nav__link">
780
+
781
+
782
+ <span class="md-ellipsis">
783
+ How to
784
+ </span>
785
+
786
+
787
+ </a>
788
+ </li>
789
+
790
+
791
+
792
+ </ul>
793
+ </nav>
794
+ </div>
795
+ </div>
796
+ </div>
797
+
798
+
799
+
800
+ <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
801
+ <div class="md-sidebar__scrollwrap">
802
+ <div class="md-sidebar__inner">
803
+
804
+
805
+ <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
806
+
807
+
808
+
809
+
810
+
811
+
812
+ <label class="md-nav__title" for="__toc">
813
+ <span class="md-nav__icon md-icon"></span>
814
+ Table of contents
815
+ </label>
816
+ <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
817
+
818
+ <li class="md-nav__item">
819
+ <a href="#ciocore.data" class="md-nav__link">
820
+ <span class="md-ellipsis">
821
+ ciocore.data
822
+ </span>
823
+ </a>
824
+
825
+ </li>
826
+
827
+ <li class="md-nav__item">
828
+ <a href="#ciocore.data.init" class="md-nav__link">
829
+ <span class="md-ellipsis">
830
+ init()
831
+ </span>
832
+ </a>
833
+
834
+ </li>
835
+
836
+ <li class="md-nav__item">
837
+ <a href="#ciocore.data.data" class="md-nav__link">
838
+ <span class="md-ellipsis">
839
+ data()
840
+ </span>
841
+ </a>
842
+
843
+ </li>
844
+
845
+ <li class="md-nav__item">
846
+ <a href="#ciocore.data.valid" class="md-nav__link">
847
+ <span class="md-ellipsis">
848
+ valid()
849
+ </span>
850
+ </a>
851
+
852
+ </li>
853
+
854
+ <li class="md-nav__item">
855
+ <a href="#ciocore.data.clear" class="md-nav__link">
856
+ <span class="md-ellipsis">
857
+ clear()
858
+ </span>
859
+ </a>
860
+
861
+ </li>
862
+
863
+ <li class="md-nav__item">
864
+ <a href="#ciocore.data.products" class="md-nav__link">
865
+ <span class="md-ellipsis">
866
+ products()
867
+ </span>
868
+ </a>
869
+
870
+ </li>
871
+
872
+ <li class="md-nav__item">
873
+ <a href="#ciocore.data.set_fixtures_dir" class="md-nav__link">
874
+ <span class="md-ellipsis">
875
+ set_fixtures_dir()
876
+ </span>
877
+ </a>
878
+
879
+ </li>
880
+
881
+ <li class="md-nav__item">
882
+ <a href="#ciocore.data.platforms" class="md-nav__link">
883
+ <span class="md-ellipsis">
884
+ platforms()
885
+ </span>
886
+ </a>
887
+
888
+ </li>
889
+
890
+ </ul>
891
+
892
+ </nav>
893
+ </div>
894
+ </div>
895
+ </div>
896
+
897
+
898
+
899
+ <div class="md-content" data-md-component="content">
900
+ <article class="md-content__inner md-typeset">
901
+
902
+
903
+
904
+
905
+ <h1 id="ciocoredata">ciocore.data</h1>
906
+
907
+
908
+ <div class="doc doc-object doc-module">
909
+
910
+ <a id="ciocore.data"></a>
911
+ <div class="doc doc-contents first">
912
+
913
+ <p>This module is a singleton that provides the data from Conductor endpoints. Specifically, it provides projects, instance types, and software package data.</p>
914
+ <p>Since the data is stored at the module level, you can access it from anywhere in your code without the need to pass it around.</p>
915
+
916
+
917
+
918
+ <div class="doc doc-children">
919
+
920
+
921
+
922
+
923
+
924
+
925
+
926
+
927
+
928
+
929
+
930
+ <div class="doc doc-object doc-function">
931
+
932
+
933
+
934
+ <h2 id="ciocore.data.init" class="doc doc-heading">
935
+ <code class="highlight language-python"><span class="n">init</span><span class="p">(</span><span class="o">*</span><span class="n">products</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
936
+
937
+
938
+ </h2>
939
+
940
+ <div class="doc doc-contents ">
941
+
942
+ <p>Initialize the module and let it know what host products to provide.</p>
943
+
944
+ <p><strong>Parameters:</strong></p>
945
+ <table>
946
+ <thead>
947
+ <tr>
948
+ <th>Name</th>
949
+ <th>Type</th>
950
+ <th>Description</th>
951
+ <th>Default</th>
952
+ </tr>
953
+ </thead>
954
+ <tbody>
955
+ <tr>
956
+ <td><code>products</code></td>
957
+ <td><code>str</code></td>
958
+ <td><p>Provide a list of products for which to get software packages. If no products are given, the software data contains all products from the packages endpoint. If you provide more than one product, they must all be host level products.</p></td>
959
+ <td><code>()</code></td>
960
+ </tr>
961
+ </tbody>
962
+ </table>
963
+ <p><strong>Keyword arguments:</strong></p>
964
+ <table>
965
+ <thead>
966
+ <tr>
967
+ <th>Name</th>
968
+ <th>Type</th>
969
+ <th>Description</th>
970
+ </tr>
971
+ </thead>
972
+ <tbody>
973
+ <tr>
974
+ <td><code>product</code></td>
975
+ <td><code>str</code></td>
976
+ <td><p><code>DEPRECATED</code> Provide one product for which to get software packages.</p></td>
977
+ </tr>
978
+ </tbody>
979
+ </table>
980
+ <p><strong>Examples:</strong></p>
981
+ <div class="highlight"><pre><span></span><code><span class="o">&gt;&gt;&gt;</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">data</span> <span class="k">as</span> <span class="n">coredata</span>
982
+ <span class="o">&gt;&gt;&gt;</span> <span class="n">coredata</span><span class="o">.</span><span class="n">init</span><span class="p">()</span>
983
+ <span class="c1"># OR</span>
984
+ <span class="o">&gt;&gt;&gt;</span> <span class="n">coredata</span><span class="o">.</span><span class="n">init</span><span class="p">(</span><span class="s2">&quot;maya-io&quot;</span><span class="p">)</span>
985
+ <span class="c1"># OR LEGACY</span>
986
+ <span class="o">&gt;&gt;&gt;</span> <span class="n">coredata</span><span class="o">.</span><span class="n">init</span><span class="p">(</span><span class="n">product</span><span class="o">=</span><span class="s2">&quot;all&quot;</span><span class="p">)</span>
987
+ <span class="c1"># OR</span>
988
+ <span class="o">&gt;&gt;&gt;</span> <span class="n">coredata</span><span class="o">.</span><span class="n">init</span><span class="p">(</span><span class="n">product</span><span class="o">=</span><span class="s2">&quot;maya-io&quot;</span><span class="p">)</span>
989
+ </code></pre></div>
990
+
991
+ <details class="quote">
992
+ <summary>Source code in <code>ciocore/data.py</code></summary>
993
+ <div class="highlight"><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">init</span><span class="p">(</span><span class="o">*</span><span class="n">products</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
994
+ <span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
995
+ <span class="sd"> Initialize the module and let it know what host products to provide.</span>
996
+
997
+ <span class="sd"> Args:</span>
998
+ <span class="sd"> products (str): Provide a list of products for which to get software packages. If no products are given, the software data contains all products from the packages endpoint. If you provide more than one product, they must all be host level products.</span>
999
+
1000
+ <span class="sd"> Keyword Args:</span>
1001
+ <span class="sd"> product (str): `DEPRECATED` Provide one product for which to get software packages.</span>
1002
+
1003
+ <span class="sd"> Examples:</span>
1004
+ <span class="sd"> &gt;&gt;&gt; from ciocore import data as coredata</span>
1005
+ <span class="sd"> &gt;&gt;&gt; coredata.init()</span>
1006
+ <span class="sd"> # OR</span>
1007
+ <span class="sd"> &gt;&gt;&gt; coredata.init(&quot;maya-io&quot;)</span>
1008
+ <span class="sd"> # OR LEGACY</span>
1009
+ <span class="sd"> &gt;&gt;&gt; coredata.init(product=&quot;all&quot;)</span>
1010
+ <span class="sd"> # OR</span>
1011
+ <span class="sd"> &gt;&gt;&gt; coredata.init(product=&quot;maya-io&quot;)</span>
1012
+ <span class="sd"> &quot;&quot;&quot;</span>
1013
+ <span class="k">global</span> <span class="n">__products__</span>
1014
+ <span class="k">global</span> <span class="n">__platforms__</span>
1015
+ <span class="k">if</span> <span class="n">products</span><span class="p">:</span>
1016
+ <span class="k">if</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;product&quot;</span><span class="p">):</span>
1017
+ <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span>
1018
+ <span class="s2">&quot;Arguments: `products` and `product` specified. Please don&#39;t use both together. The `product` arg is deprecated.&quot;</span>
1019
+ <span class="p">)</span>
1020
+ <span class="n">__products__</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">products</span><span class="p">)</span>
1021
+ <span class="k">elif</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;product&quot;</span><span class="p">):</span>
1022
+ <span class="k">if</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;product&quot;</span><span class="p">)</span> <span class="o">==</span> <span class="s2">&quot;all&quot;</span><span class="p">:</span>
1023
+ <span class="n">__products__</span> <span class="o">=</span> <span class="p">[]</span>
1024
+ <span class="k">else</span><span class="p">:</span>
1025
+ <span class="n">__products__</span> <span class="o">=</span> <span class="p">[</span><span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;product&quot;</span><span class="p">)]</span>
1026
+ <span class="k">else</span><span class="p">:</span>
1027
+ <span class="n">__products__</span> <span class="o">=</span> <span class="p">[]</span>
1028
+
1029
+ <span class="n">__platforms__</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;platforms&quot;</span><span class="p">,</span> <span class="p">[</span><span class="s2">&quot;windows&quot;</span><span class="p">,</span> <span class="s2">&quot;linux&quot;</span><span class="p">]))</span>
1030
+ </code></pre></div>
1031
+ </details>
1032
+ </div>
1033
+
1034
+ </div>
1035
+
1036
+
1037
+
1038
+ <div class="doc doc-object doc-function">
1039
+
1040
+
1041
+
1042
+ <h2 id="ciocore.data.data" class="doc doc-heading">
1043
+ <code class="highlight language-python"><span class="n">data</span><span class="p">(</span><span class="n">force</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">instances_filter</span><span class="o">=</span><span class="s1">&#39;&#39;</span><span class="p">)</span></code>
1044
+
1045
+
1046
+ </h2>
1047
+
1048
+ <div class="doc doc-contents ">
1049
+
1050
+ <p>Provide projects, instance types, and software package data.</p>
1051
+
1052
+ <p><strong>Keyword arguments:</strong></p>
1053
+ <table>
1054
+ <thead>
1055
+ <tr>
1056
+ <th>Name</th>
1057
+ <th>Type</th>
1058
+ <th>Description</th>
1059
+ </tr>
1060
+ </thead>
1061
+ <tbody>
1062
+ <tr>
1063
+ <td><code>force</code></td>
1064
+ <td></td>
1065
+ <td><p>(bool) If <code>True</code>, then force the system to fetch fresh data -- Defaults to <code>False</code>.</p></td>
1066
+ </tr>
1067
+ <tr>
1068
+ <td><code>instances_filter</code></td>
1069
+ <td></td>
1070
+ <td><p>(str) complex RHS string query ex:
1071
+ "cpu=gte:8:int,operating_system=ne:windows,gpu.gpu_count=eq:1:int"</p></td>
1072
+ </tr>
1073
+ </tbody>
1074
+ </table>
1075
+ <p><strong>Exceptions:</strong></p>
1076
+ <table>
1077
+ <thead>
1078
+ <tr>
1079
+ <th>Type</th>
1080
+ <th>Description</th>
1081
+ </tr>
1082
+ </thead>
1083
+ <tbody>
1084
+ <tr>
1085
+ <td><code>ValueError</code></td>
1086
+ <td><p>Module was not initialized with <a href="/data/#ciocore.data.init">init()</a>.</p></td>
1087
+ </tr>
1088
+ </tbody>
1089
+ </table>
1090
+ <p><strong>Returns:</strong></p>
1091
+ <table>
1092
+ <thead>
1093
+ <tr>
1094
+ <th>Type</th>
1095
+ <th>Description</th>
1096
+ </tr>
1097
+ </thead>
1098
+ <tbody>
1099
+ <tr>
1100
+ <td><code>dict</code></td>
1101
+ <td><p>Keys are <code>projects</code>, <code>instance_types</code>, <code>software</code>.</p></td>
1102
+ </tr>
1103
+ </tbody>
1104
+ </table> <p>When you access the data, if it has already been fetched, it will be returned. Otherwise,
1105
+ requests will be made to fetch the data. You may need to authenticate in order to access the
1106
+ data.</p>
1107
+ <p>The set of instance types and software can be pruned to match the available platforms
1108
+ represented by each other. For example, if the instance types come from an orchestrator that
1109
+ provides both Windows and Linux machines, and the software product(s) are available on both
1110
+ platforms, no pruning occurs. However, if there are no Windows machines available, any Windows
1111
+ software will be removed from the package tree. Similarly, if a product is chosen that only runs
1112
+ on Windows, Linux instance types will not appearin the list of available hardware.</p>
1113
+ <p>Here is a breakdown of each key in the dictionary:</p>
1114
+ <ul>
1115
+ <li>
1116
+ <p><strong>projects</strong> is a list of project names for your authenticated account.</p>
1117
+ </li>
1118
+ <li>
1119
+ <p><strong>instance_types</strong> is an instance of HardwareSet, providing you with access to the list of
1120
+ available machines configurations.</p>
1121
+ </li>
1122
+ <li>
1123
+ <p><strong>software</strong> is a PackageTree object containing either all
1124
+ the software available at Conductor, or a subset based on specified products.</p>
1125
+ </li>
1126
+ </ul>
1127
+
1128
+ <p><strong>Examples:</strong></p>
1129
+ <div class="highlight"><pre><span></span><code><span class="o">&gt;&gt;&gt;</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">data</span> <span class="k">as</span> <span class="n">coredata</span>
1130
+ <span class="o">&gt;&gt;&gt;</span> <span class="n">coredata</span><span class="o">.</span><span class="n">init</span><span class="p">(</span><span class="n">product</span><span class="o">=</span><span class="s2">&quot;maya-io&quot;</span><span class="p">)</span>
1131
+ </code></pre></div>
1132
+ <div class="highlight"><pre><span></span><code><span class="o">&gt;&gt;&gt;</span> <span class="n">coredata</span><span class="o">.</span><span class="n">data</span><span class="p">()[</span><span class="s2">&quot;software&quot;</span><span class="p">]</span>
1133
+ <span class="o">&lt;</span><span class="n">ciocore</span><span class="o">.</span><span class="n">package_tree</span><span class="o">.</span><span class="n">PackageTree</span> <span class="nb">object</span> <span class="n">at</span> <span class="mh">0x10e9a4040</span><span class="o">&gt;</span>
1134
+ </code></pre></div>
1135
+ <div class="highlight"><pre><span></span><code><span class="o">&gt;&gt;&gt;</span> <span class="n">coredata</span><span class="o">.</span><span class="n">data</span><span class="p">()[</span><span class="s2">&quot;projects&quot;</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
1136
+ <span class="n">ATestForScott</span>
1137
+ </code></pre></div>
1138
+ <div class="highlight"><pre><span></span><code><span class="o">&gt;&gt;&gt;</span> <span class="n">coredata</span><span class="o">.</span><span class="n">data</span><span class="p">()[</span><span class="s2">&quot;instance_types&quot;</span><span class="p">]</span>
1139
+ <span class="o">&lt;</span><span class="n">ciocore</span><span class="o">.</span><span class="n">hardware_set</span><span class="o">.</span><span class="n">HardwareSet</span> <span class="nb">object</span> <span class="n">at</span> <span class="mh">0x0000028941CD9DC0</span><span class="o">&gt;</span>
1140
+ </code></pre></div>
1141
+
1142
+ <details class="quote">
1143
+ <summary>Source code in <code>ciocore/data.py</code></summary>
1144
+ <div class="highlight"><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">data</span><span class="p">(</span><span class="n">force</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">instances_filter</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">):</span>
1145
+ <span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
1146
+ <span class="sd"> Provide projects, instance types, and software package data.</span>
1147
+
1148
+ <span class="sd"> Keyword Args:</span>
1149
+ <span class="sd"> force: (bool) If `True`, then force the system to fetch fresh data -- Defaults to `False`.</span>
1150
+ <span class="sd"> instances_filter: (str) complex RHS string query ex:</span>
1151
+ <span class="sd"> &quot;cpu=gte:8:int,operating_system=ne:windows,gpu.gpu_count=eq:1:int&quot;</span>
1152
+
1153
+ <span class="sd"> Raises:</span>
1154
+ <span class="sd"> ValueError: Module was not initialized with [init()](/data/#ciocore.data.init).</span>
1155
+
1156
+ <span class="sd"> Returns:</span>
1157
+ <span class="sd"> dict: Keys are `projects`, `instance_types`, `software`.</span>
1158
+
1159
+ <span class="sd"> When you access the data, if it has already been fetched, it will be returned. Otherwise,</span>
1160
+ <span class="sd"> requests will be made to fetch the data. You may need to authenticate in order to access the</span>
1161
+ <span class="sd"> data.</span>
1162
+
1163
+ <span class="sd"> The set of instance types and software can be pruned to match the available platforms</span>
1164
+ <span class="sd"> represented by each other. For example, if the instance types come from an orchestrator that</span>
1165
+ <span class="sd"> provides both Windows and Linux machines, and the software product(s) are available on both</span>
1166
+ <span class="sd"> platforms, no pruning occurs. However, if there are no Windows machines available, any Windows</span>
1167
+ <span class="sd"> software will be removed from the package tree. Similarly, if a product is chosen that only runs</span>
1168
+ <span class="sd"> on Windows, Linux instance types will not appearin the list of available hardware.</span>
1169
+
1170
+ <span class="sd"> Here is a breakdown of each key in the dictionary:</span>
1171
+
1172
+ <span class="sd"> * **projects** is a list of project names for your authenticated account.</span>
1173
+
1174
+ <span class="sd"> * **instance_types** is an instance of HardwareSet, providing you with access to the list of</span>
1175
+ <span class="sd"> available machines configurations.</span>
1176
+
1177
+ <span class="sd"> * **software** is a PackageTree object containing either all</span>
1178
+ <span class="sd"> the software available at Conductor, or a subset based on specified products.</span>
1179
+
1180
+
1181
+ <span class="sd"> Examples:</span>
1182
+ <span class="sd"> &gt;&gt;&gt; from ciocore import data as coredata</span>
1183
+ <span class="sd"> &gt;&gt;&gt; coredata.init(product=&quot;maya-io&quot;)</span>
1184
+
1185
+ <span class="sd"> &gt;&gt;&gt; coredata.data()[&quot;software&quot;]</span>
1186
+ <span class="sd"> &lt;ciocore.package_tree.PackageTree object at 0x10e9a4040&gt;</span>
1187
+
1188
+ <span class="sd"> &gt;&gt;&gt; coredata.data()[&quot;projects&quot;][0]</span>
1189
+ <span class="sd"> ATestForScott</span>
1190
+
1191
+ <span class="sd"> &gt;&gt;&gt; coredata.data()[&quot;instance_types&quot;]</span>
1192
+ <span class="sd"> &lt;ciocore.hardware_set.HardwareSet object at 0x0000028941CD9DC0&gt;</span>
1193
+ <span class="sd"> &quot;&quot;&quot;</span>
1194
+
1195
+ <span class="k">global</span> <span class="n">__data__</span>
1196
+ <span class="k">global</span> <span class="n">__products__</span>
1197
+ <span class="k">global</span> <span class="n">__platforms__</span>
1198
+
1199
+ <span class="k">if</span> <span class="n">__products__</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
1200
+ <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span>
1201
+ <span class="s1">&#39;Data must be initialized before use, e.g. data.init(&quot;maya-io&quot;) or data.init().&#39;</span>
1202
+ <span class="p">)</span>
1203
+ <span class="n">products_copy</span> <span class="o">=</span> <span class="n">copy</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">__products__</span><span class="p">)</span>
1204
+
1205
+ <span class="k">if</span> <span class="n">force</span><span class="p">:</span>
1206
+ <span class="n">clear</span><span class="p">()</span>
1207
+ <span class="n">init</span><span class="p">(</span><span class="o">*</span><span class="n">products_copy</span><span class="p">)</span>
1208
+
1209
+ <span class="k">if</span> <span class="n">__data__</span> <span class="o">==</span> <span class="p">{}:</span>
1210
+ <span class="c1"># PROJECTS</span>
1211
+ <span class="n">__data__</span><span class="p">[</span><span class="s2">&quot;projects&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">api_client</span><span class="o">.</span><span class="n">request_projects</span><span class="p">())</span>
1212
+ <span class="c1"># INST_TYPES</span>
1213
+ <span class="n">instance_types</span> <span class="o">=</span> <span class="n">api_client</span><span class="o">.</span><span class="n">request_instance_types</span><span class="p">(</span><span class="n">filter_param</span><span class="o">=</span><span class="n">instances_filter</span><span class="p">)</span>
1214
+ <span class="c1"># SOFTWARE</span>
1215
+ <span class="n">software</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>
1216
+
1217
+ <span class="c1"># EXTRA ENV VARS</span>
1218
+ <span class="n">extra_env_vars</span> <span class="o">=</span> <span class="p">[]</span>
1219
+ <span class="k">try</span><span class="p">:</span>
1220
+ <span class="n">extra_env_vars</span> <span class="o">=</span> <span class="n">api_client</span><span class="o">.</span><span class="n">request_extra_environment</span><span class="p">()</span>
1221
+ <span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span>
1222
+ <span class="k">pass</span>
1223
+ <span class="n">__data__</span><span class="p">[</span><span class="s2">&quot;extra_environment&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">extra_env_vars</span>
1224
+
1225
+ <span class="c1"># PLATFORMS</span>
1226
+ <span class="n">it_platforms</span> <span class="o">=</span> <span class="nb">set</span><span class="p">([</span><span class="n">it</span><span class="p">[</span><span class="s2">&quot;operating_system&quot;</span><span class="p">]</span> <span class="k">for</span> <span class="n">it</span> <span class="ow">in</span> <span class="n">instance_types</span><span class="p">])</span>
1227
+ <span class="n">valid_platforms</span> <span class="o">=</span> <span class="n">it_platforms</span><span class="o">.</span><span class="n">intersection</span><span class="p">(</span><span class="n">__platforms__</span><span class="p">)</span>
1228
+ <span class="n">kwargs</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;platforms&quot;</span><span class="p">:</span> <span class="n">valid_platforms</span><span class="p">}</span>
1229
+
1230
+ <span class="c1"># If there&#39;s only one product, it&#39;s possible to initialize the software tree with a plugin.</span>
1231
+ <span class="c1"># So we set the product kwarg. Otherwise, we set the host_products kwarg</span>
1232
+ <span class="n">host_products</span> <span class="o">=</span> <span class="n">__products__</span>
1233
+ <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">__products__</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
1234
+ <span class="n">host_products</span> <span class="o">=</span> <span class="p">[]</span>
1235
+ <span class="n">kwargs</span><span class="p">[</span><span class="s2">&quot;product&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">__products__</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
1236
+
1237
+ <span class="n">software_tree</span> <span class="o">=</span> <span class="n">PackageTree</span><span class="p">(</span><span class="n">software</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>
1238
+
1239
+ <span class="k">if</span> <span class="n">software_tree</span><span class="p">:</span>
1240
+ <span class="n">__data__</span><span class="p">[</span><span class="s2">&quot;software&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">software_tree</span>
1241
+ <span class="c1"># Revisit instance types to filter out any that are not needed for any software package.</span>
1242
+ <span class="n">sw_platforms</span> <span class="o">=</span> <span class="n">software_tree</span><span class="o">.</span><span class="n">platforms</span><span class="p">()</span>
1243
+
1244
+ <span class="n">instance_types</span> <span class="o">=</span> <span class="p">[</span>
1245
+ <span class="n">it</span> <span class="k">for</span> <span class="n">it</span> <span class="ow">in</span> <span class="n">instance_types</span> <span class="k">if</span> <span class="n">it</span><span class="p">[</span><span class="s2">&quot;operating_system&quot;</span><span class="p">]</span> <span class="ow">in</span> <span class="n">sw_platforms</span>
1246
+ <span class="p">]</span>
1247
+ <span class="c1"># Then adjust __platforms__ to match the instance types that are represented.</span>
1248
+ <span class="n">__platforms__</span> <span class="o">=</span> <span class="nb">set</span><span class="p">([</span><span class="n">it</span><span class="p">[</span><span class="s2">&quot;operating_system&quot;</span><span class="p">]</span> <span class="k">for</span> <span class="n">it</span> <span class="ow">in</span> <span class="n">instance_types</span><span class="p">])</span>
1249
+
1250
+ <span class="n">__data__</span><span class="p">[</span><span class="s2">&quot;instance_types&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">HardwareSet</span><span class="p">(</span><span class="n">instance_types</span><span class="p">)</span>
1251
+
1252
+ <span class="k">return</span> <span class="n">__data__</span>
1253
+ </code></pre></div>
1254
+ </details>
1255
+ </div>
1256
+
1257
+ </div>
1258
+
1259
+
1260
+
1261
+ <div class="doc doc-object doc-function">
1262
+
1263
+
1264
+
1265
+ <h2 id="ciocore.data.valid" class="doc doc-heading">
1266
+ <code class="highlight language-python"><span class="n">valid</span><span class="p">()</span></code>
1267
+
1268
+
1269
+ </h2>
1270
+
1271
+ <div class="doc doc-contents ">
1272
+
1273
+ <p>Check validity.</p>
1274
+
1275
+ <p><strong>Returns:</strong></p>
1276
+ <table>
1277
+ <thead>
1278
+ <tr>
1279
+ <th>Type</th>
1280
+ <th>Description</th>
1281
+ </tr>
1282
+ </thead>
1283
+ <tbody>
1284
+ <tr>
1285
+ <td><code>bool</code></td>
1286
+ <td><p>True if <code>projects</code>, <code>instance_types</code>, and <code>software</code> are valid.</p></td>
1287
+ </tr>
1288
+ </tbody>
1289
+ </table>
1290
+ <p><strong>Examples:</strong></p>
1291
+ <div class="highlight"><pre><span></span><code><span class="o">&gt;&gt;&gt;</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">data</span> <span class="k">as</span> <span class="n">coredata</span>
1292
+ <span class="o">&gt;&gt;&gt;</span> <span class="n">coredata</span><span class="o">.</span><span class="n">valid</span><span class="p">()</span>
1293
+ <span class="kc">True</span>
1294
+ </code></pre></div>
1295
+
1296
+ <details class="quote">
1297
+ <summary>Source code in <code>ciocore/data.py</code></summary>
1298
+ <div class="highlight"><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">valid</span><span class="p">():</span>
1299
+ <span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
1300
+ <span class="sd"> Check validity.</span>
1301
+
1302
+ <span class="sd"> Returns:</span>
1303
+ <span class="sd"> bool: True if `projects`, `instance_types`, and `software` are valid.</span>
1304
+
1305
+ <span class="sd"> Examples:</span>
1306
+ <span class="sd"> &gt;&gt;&gt; from ciocore import data as coredata</span>
1307
+ <span class="sd"> &gt;&gt;&gt; coredata.valid()</span>
1308
+ <span class="sd"> True</span>
1309
+ <span class="sd"> &quot;&quot;&quot;</span>
1310
+
1311
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">__data__</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;projects&quot;</span><span class="p">):</span>
1312
+ <span class="k">return</span> <span class="kc">False</span>
1313
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">__data__</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;instance_types&quot;</span><span class="p">):</span>
1314
+ <span class="k">return</span> <span class="kc">False</span>
1315
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">__data__</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;software&quot;</span><span class="p">):</span>
1316
+ <span class="k">return</span> <span class="kc">False</span>
1317
+ <span class="k">return</span> <span class="kc">True</span>
1318
+ </code></pre></div>
1319
+ </details>
1320
+ </div>
1321
+
1322
+ </div>
1323
+
1324
+
1325
+
1326
+ <div class="doc doc-object doc-function">
1327
+
1328
+
1329
+
1330
+ <h2 id="ciocore.data.clear" class="doc doc-heading">
1331
+ <code class="highlight language-python"><span class="n">clear</span><span class="p">()</span></code>
1332
+
1333
+
1334
+ </h2>
1335
+
1336
+ <div class="doc doc-contents ">
1337
+
1338
+ <p>Clear out data.</p>
1339
+ <p><a href="/data/#ciocore.data.valid">valid()</a> returns False after clear().</p>
1340
+
1341
+ <details class="quote">
1342
+ <summary>Source code in <code>ciocore/data.py</code></summary>
1343
+ <div class="highlight"><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">clear</span><span class="p">():</span>
1344
+ <span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
1345
+ <span class="sd"> Clear out data.</span>
1346
+
1347
+ <span class="sd"> [valid()](/data/#ciocore.data.valid) returns False after clear().</span>
1348
+ <span class="sd"> &quot;&quot;&quot;</span>
1349
+ <span class="k">global</span> <span class="n">__data__</span>
1350
+ <span class="k">global</span> <span class="n">__products__</span>
1351
+ <span class="k">global</span> <span class="n">__platforms__</span>
1352
+ <span class="n">__data__</span> <span class="o">=</span> <span class="p">{}</span>
1353
+ <span class="n">__products__</span> <span class="o">=</span> <span class="kc">None</span>
1354
+ <span class="n">__platforms__</span> <span class="o">=</span> <span class="kc">None</span>
1355
+ </code></pre></div>
1356
+ </details>
1357
+ </div>
1358
+
1359
+ </div>
1360
+
1361
+
1362
+
1363
+ <div class="doc doc-object doc-function">
1364
+
1365
+
1366
+
1367
+ <h2 id="ciocore.data.products" class="doc doc-heading">
1368
+ <code class="highlight language-python"><span class="n">products</span><span class="p">()</span></code>
1369
+
1370
+
1371
+ </h2>
1372
+
1373
+ <div class="doc doc-contents ">
1374
+
1375
+
1376
+ <p><strong>Returns:</strong></p>
1377
+ <table>
1378
+ <thead>
1379
+ <tr>
1380
+ <th>Type</th>
1381
+ <th>Description</th>
1382
+ </tr>
1383
+ </thead>
1384
+ <tbody>
1385
+ <tr>
1386
+ <td><code>list(str)</code></td>
1387
+ <td><p>The product names. An empty list signifies all products.</p></td>
1388
+ </tr>
1389
+ </tbody>
1390
+ </table>
1391
+ <details class="quote">
1392
+ <summary>Source code in <code>ciocore/data.py</code></summary>
1393
+ <div class="highlight"><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">products</span><span class="p">():</span>
1394
+ <span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
1395
+
1396
+ <span class="sd"> Returns:</span>
1397
+ <span class="sd"> list(str): The product names. An empty list signifies all products.</span>
1398
+ <span class="sd"> &quot;&quot;&quot;</span>
1399
+ <span class="k">return</span> <span class="n">__products__</span>
1400
+ </code></pre></div>
1401
+ </details>
1402
+ </div>
1403
+
1404
+ </div>
1405
+
1406
+
1407
+
1408
+ <div class="doc doc-object doc-function">
1409
+
1410
+
1411
+
1412
+ <h2 id="ciocore.data.set_fixtures_dir" class="doc doc-heading">
1413
+ <code class="highlight language-python"><span class="n">set_fixtures_dir</span><span class="p">(</span><span class="n">_</span><span class="p">)</span></code>
1414
+
1415
+
1416
+ </h2>
1417
+
1418
+ <div class="doc doc-contents ">
1419
+
1420
+ <p>Deprecated. </p>
1421
+
1422
+ <details class="quote">
1423
+ <summary>Source code in <code>ciocore/data.py</code></summary>
1424
+ <div class="highlight"><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">set_fixtures_dir</span><span class="p">(</span><span class="n">_</span><span class="p">):</span>
1425
+ <span class="w"> </span><span class="sd">&quot;&quot;&quot;Deprecated. &quot;&quot;&quot;</span>
1426
+ <span class="k">pass</span>
1427
+ </code></pre></div>
1428
+ </details>
1429
+ </div>
1430
+
1431
+ </div>
1432
+
1433
+
1434
+
1435
+ <div class="doc doc-object doc-function">
1436
+
1437
+
1438
+
1439
+ <h2 id="ciocore.data.platforms" class="doc doc-heading">
1440
+ <code class="highlight language-python"><span class="n">platforms</span><span class="p">()</span></code>
1441
+
1442
+
1443
+ </h2>
1444
+
1445
+ <div class="doc doc-contents ">
1446
+
1447
+ <p>The set of platforms that both software and instance types are valid on.</p>
1448
+
1449
+ <p><strong>Returns:</strong></p>
1450
+ <table>
1451
+ <thead>
1452
+ <tr>
1453
+ <th>Type</th>
1454
+ <th>Description</th>
1455
+ </tr>
1456
+ </thead>
1457
+ <tbody>
1458
+ <tr>
1459
+ <td><code>set</code></td>
1460
+ <td><p>A set containing platforms: windows and/or linux.</p></td>
1461
+ </tr>
1462
+ </tbody>
1463
+ </table>
1464
+ <details class="quote">
1465
+ <summary>Source code in <code>ciocore/data.py</code></summary>
1466
+ <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>
1467
+ <span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
1468
+ <span class="sd"> The set of platforms that both software and instance types are valid on.</span>
1469
+
1470
+ <span class="sd"> Returns:</span>
1471
+ <span class="sd"> set: A set containing platforms: windows and/or linux.</span>
1472
+ <span class="sd"> &quot;&quot;&quot;</span>
1473
+ <span class="k">return</span> <span class="n">__platforms__</span>
1474
+ </code></pre></div>
1475
+ </details>
1476
+ </div>
1477
+
1478
+ </div>
1479
+
1480
+
1481
+
1482
+
1483
+
1484
+
1485
+ </div>
1486
+
1487
+ </div>
1488
+
1489
+ </div>
1490
+
1491
+
1492
+
1493
+
1494
+
1495
+
1496
+
1497
+
1498
+
1499
+
1500
+
1501
+
1502
+
1503
+ </article>
1504
+ </div>
1505
+
1506
+
1507
+ <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
1508
+ </div>
1509
+
1510
+ <button type="button" class="md-top md-icon" data-md-component="top" hidden>
1511
+
1512
+ <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>
1513
+ Back to top
1514
+ </button>
1515
+
1516
+ </main>
1517
+
1518
+ <footer class="md-footer">
1519
+
1520
+ <div class="md-footer-meta md-typeset">
1521
+ <div class="md-footer-meta__inner md-grid">
1522
+ <div class="md-copyright">
1523
+
1524
+ <div class="md-copyright__highlight">
1525
+ Copyright &copy; 2023, CoreWeave.
1526
+ </div>
1527
+
1528
+
1529
+ Made with
1530
+ <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
1531
+ Material for MkDocs
1532
+ </a>
1533
+
1534
+ </div>
1535
+
1536
+ </div>
1537
+ </div>
1538
+ </footer>
1539
+
1540
+ </div>
1541
+ <div class="md-dialog" data-md-component="dialog">
1542
+ <div class="md-dialog__inner md-typeset"></div>
1543
+ </div>
1544
+
1545
+
1546
+ <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>
1547
+
1548
+
1549
+ <script src="../../assets/javascripts/bundle.471ce7a9.min.js"></script>
1550
+
1551
+
1552
+ </body>
1553
+ </html>