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,1652 @@
|
|
|
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="../api_client/">
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
<link rel="next" href="../data/">
|
|
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.config - 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="#ciocoreconfig" 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.config
|
|
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
|
+
|
|
555
|
+
|
|
556
|
+
<li class="md-nav__item md-nav__item--active">
|
|
557
|
+
|
|
558
|
+
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
|
|
559
|
+
|
|
560
|
+
|
|
561
|
+
|
|
562
|
+
|
|
563
|
+
|
|
564
|
+
<label class="md-nav__link md-nav__link--active" for="__toc">
|
|
565
|
+
|
|
566
|
+
|
|
567
|
+
<span class="md-ellipsis">
|
|
568
|
+
ciocore.config
|
|
569
|
+
</span>
|
|
570
|
+
|
|
571
|
+
|
|
572
|
+
<span class="md-nav__icon md-icon"></span>
|
|
573
|
+
</label>
|
|
574
|
+
|
|
575
|
+
<a href="./" class="md-nav__link md-nav__link--active">
|
|
576
|
+
|
|
577
|
+
|
|
578
|
+
<span class="md-ellipsis">
|
|
579
|
+
ciocore.config
|
|
580
|
+
</span>
|
|
581
|
+
|
|
582
|
+
|
|
583
|
+
</a>
|
|
584
|
+
|
|
585
|
+
|
|
586
|
+
|
|
587
|
+
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
|
588
|
+
|
|
589
|
+
|
|
590
|
+
|
|
591
|
+
|
|
592
|
+
|
|
593
|
+
|
|
594
|
+
<label class="md-nav__title" for="__toc">
|
|
595
|
+
<span class="md-nav__icon md-icon"></span>
|
|
596
|
+
Table of contents
|
|
597
|
+
</label>
|
|
598
|
+
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
|
599
|
+
|
|
600
|
+
<li class="md-nav__item">
|
|
601
|
+
<a href="#ciocore.config" class="md-nav__link">
|
|
602
|
+
<span class="md-ellipsis">
|
|
603
|
+
ciocore.config
|
|
604
|
+
</span>
|
|
605
|
+
</a>
|
|
606
|
+
|
|
607
|
+
</li>
|
|
608
|
+
|
|
609
|
+
<li class="md-nav__item">
|
|
610
|
+
<a href="#ciocore.config.Config" class="md-nav__link">
|
|
611
|
+
<span class="md-ellipsis">
|
|
612
|
+
Config
|
|
613
|
+
</span>
|
|
614
|
+
</a>
|
|
615
|
+
|
|
616
|
+
<nav class="md-nav" aria-label="Config">
|
|
617
|
+
<ul class="md-nav__list">
|
|
618
|
+
|
|
619
|
+
<li class="md-nav__item">
|
|
620
|
+
<a href="#ciocore.config.Config.__init__" class="md-nav__link">
|
|
621
|
+
<span class="md-ellipsis">
|
|
622
|
+
__init__()
|
|
623
|
+
</span>
|
|
624
|
+
</a>
|
|
625
|
+
|
|
626
|
+
</li>
|
|
627
|
+
|
|
628
|
+
<li class="md-nav__item">
|
|
629
|
+
<a href="#ciocore.config.Config.get_api_key_from_variable" class="md-nav__link">
|
|
630
|
+
<span class="md-ellipsis">
|
|
631
|
+
get_api_key_from_variable()
|
|
632
|
+
</span>
|
|
633
|
+
</a>
|
|
634
|
+
|
|
635
|
+
</li>
|
|
636
|
+
|
|
637
|
+
<li class="md-nav__item">
|
|
638
|
+
<a href="#ciocore.config.Config.get_api_key_from_file" class="md-nav__link">
|
|
639
|
+
<span class="md-ellipsis">
|
|
640
|
+
get_api_key_from_file()
|
|
641
|
+
</span>
|
|
642
|
+
</a>
|
|
643
|
+
|
|
644
|
+
</li>
|
|
645
|
+
|
|
646
|
+
</ul>
|
|
647
|
+
</nav>
|
|
648
|
+
|
|
649
|
+
</li>
|
|
650
|
+
|
|
651
|
+
<li class="md-nav__item">
|
|
652
|
+
<a href="#ciocore.config.config" class="md-nav__link">
|
|
653
|
+
<span class="md-ellipsis">
|
|
654
|
+
config()
|
|
655
|
+
</span>
|
|
656
|
+
</a>
|
|
657
|
+
|
|
658
|
+
</li>
|
|
659
|
+
|
|
660
|
+
<li class="md-nav__item">
|
|
661
|
+
<a href="#ciocore.config.get" class="md-nav__link">
|
|
662
|
+
<span class="md-ellipsis">
|
|
663
|
+
get()
|
|
664
|
+
</span>
|
|
665
|
+
</a>
|
|
666
|
+
|
|
667
|
+
</li>
|
|
668
|
+
|
|
669
|
+
</ul>
|
|
670
|
+
|
|
671
|
+
</nav>
|
|
672
|
+
|
|
673
|
+
</li>
|
|
674
|
+
|
|
675
|
+
|
|
676
|
+
|
|
677
|
+
|
|
678
|
+
|
|
679
|
+
|
|
680
|
+
|
|
681
|
+
|
|
682
|
+
|
|
683
|
+
|
|
684
|
+
<li class="md-nav__item">
|
|
685
|
+
<a href="../data/" class="md-nav__link">
|
|
686
|
+
|
|
687
|
+
|
|
688
|
+
<span class="md-ellipsis">
|
|
689
|
+
ciocore.data
|
|
690
|
+
</span>
|
|
691
|
+
|
|
692
|
+
|
|
693
|
+
</a>
|
|
694
|
+
</li>
|
|
695
|
+
|
|
696
|
+
|
|
697
|
+
|
|
698
|
+
|
|
699
|
+
|
|
700
|
+
|
|
701
|
+
|
|
702
|
+
|
|
703
|
+
|
|
704
|
+
|
|
705
|
+
<li class="md-nav__item">
|
|
706
|
+
<a href="../hardware_set/" class="md-nav__link">
|
|
707
|
+
|
|
708
|
+
|
|
709
|
+
<span class="md-ellipsis">
|
|
710
|
+
ciocore.hardware_set
|
|
711
|
+
</span>
|
|
712
|
+
|
|
713
|
+
|
|
714
|
+
</a>
|
|
715
|
+
</li>
|
|
716
|
+
|
|
717
|
+
|
|
718
|
+
|
|
719
|
+
|
|
720
|
+
|
|
721
|
+
|
|
722
|
+
|
|
723
|
+
|
|
724
|
+
|
|
725
|
+
|
|
726
|
+
<li class="md-nav__item">
|
|
727
|
+
<a href="../package_tree/" class="md-nav__link">
|
|
728
|
+
|
|
729
|
+
|
|
730
|
+
<span class="md-ellipsis">
|
|
731
|
+
ciocore.package_tree
|
|
732
|
+
</span>
|
|
733
|
+
|
|
734
|
+
|
|
735
|
+
</a>
|
|
736
|
+
</li>
|
|
737
|
+
|
|
738
|
+
|
|
739
|
+
|
|
740
|
+
|
|
741
|
+
|
|
742
|
+
|
|
743
|
+
|
|
744
|
+
|
|
745
|
+
|
|
746
|
+
|
|
747
|
+
<li class="md-nav__item">
|
|
748
|
+
<a href="../package_environment/" class="md-nav__link">
|
|
749
|
+
|
|
750
|
+
|
|
751
|
+
<span class="md-ellipsis">
|
|
752
|
+
ciocore.package_environment
|
|
753
|
+
</span>
|
|
754
|
+
|
|
755
|
+
|
|
756
|
+
</a>
|
|
757
|
+
</li>
|
|
758
|
+
|
|
759
|
+
|
|
760
|
+
|
|
761
|
+
|
|
762
|
+
</ul>
|
|
763
|
+
</nav>
|
|
764
|
+
|
|
765
|
+
</li>
|
|
766
|
+
|
|
767
|
+
|
|
768
|
+
|
|
769
|
+
|
|
770
|
+
|
|
771
|
+
|
|
772
|
+
|
|
773
|
+
|
|
774
|
+
|
|
775
|
+
<li class="md-nav__item">
|
|
776
|
+
<a href="../../how-to-guides/" class="md-nav__link">
|
|
777
|
+
|
|
778
|
+
|
|
779
|
+
<span class="md-ellipsis">
|
|
780
|
+
How to
|
|
781
|
+
</span>
|
|
782
|
+
|
|
783
|
+
|
|
784
|
+
</a>
|
|
785
|
+
</li>
|
|
786
|
+
|
|
787
|
+
|
|
788
|
+
|
|
789
|
+
</ul>
|
|
790
|
+
</nav>
|
|
791
|
+
</div>
|
|
792
|
+
</div>
|
|
793
|
+
</div>
|
|
794
|
+
|
|
795
|
+
|
|
796
|
+
|
|
797
|
+
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
|
|
798
|
+
<div class="md-sidebar__scrollwrap">
|
|
799
|
+
<div class="md-sidebar__inner">
|
|
800
|
+
|
|
801
|
+
|
|
802
|
+
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
|
803
|
+
|
|
804
|
+
|
|
805
|
+
|
|
806
|
+
|
|
807
|
+
|
|
808
|
+
|
|
809
|
+
<label class="md-nav__title" for="__toc">
|
|
810
|
+
<span class="md-nav__icon md-icon"></span>
|
|
811
|
+
Table of contents
|
|
812
|
+
</label>
|
|
813
|
+
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
|
814
|
+
|
|
815
|
+
<li class="md-nav__item">
|
|
816
|
+
<a href="#ciocore.config" class="md-nav__link">
|
|
817
|
+
<span class="md-ellipsis">
|
|
818
|
+
ciocore.config
|
|
819
|
+
</span>
|
|
820
|
+
</a>
|
|
821
|
+
|
|
822
|
+
</li>
|
|
823
|
+
|
|
824
|
+
<li class="md-nav__item">
|
|
825
|
+
<a href="#ciocore.config.Config" class="md-nav__link">
|
|
826
|
+
<span class="md-ellipsis">
|
|
827
|
+
Config
|
|
828
|
+
</span>
|
|
829
|
+
</a>
|
|
830
|
+
|
|
831
|
+
<nav class="md-nav" aria-label="Config">
|
|
832
|
+
<ul class="md-nav__list">
|
|
833
|
+
|
|
834
|
+
<li class="md-nav__item">
|
|
835
|
+
<a href="#ciocore.config.Config.__init__" class="md-nav__link">
|
|
836
|
+
<span class="md-ellipsis">
|
|
837
|
+
__init__()
|
|
838
|
+
</span>
|
|
839
|
+
</a>
|
|
840
|
+
|
|
841
|
+
</li>
|
|
842
|
+
|
|
843
|
+
<li class="md-nav__item">
|
|
844
|
+
<a href="#ciocore.config.Config.get_api_key_from_variable" class="md-nav__link">
|
|
845
|
+
<span class="md-ellipsis">
|
|
846
|
+
get_api_key_from_variable()
|
|
847
|
+
</span>
|
|
848
|
+
</a>
|
|
849
|
+
|
|
850
|
+
</li>
|
|
851
|
+
|
|
852
|
+
<li class="md-nav__item">
|
|
853
|
+
<a href="#ciocore.config.Config.get_api_key_from_file" class="md-nav__link">
|
|
854
|
+
<span class="md-ellipsis">
|
|
855
|
+
get_api_key_from_file()
|
|
856
|
+
</span>
|
|
857
|
+
</a>
|
|
858
|
+
|
|
859
|
+
</li>
|
|
860
|
+
|
|
861
|
+
</ul>
|
|
862
|
+
</nav>
|
|
863
|
+
|
|
864
|
+
</li>
|
|
865
|
+
|
|
866
|
+
<li class="md-nav__item">
|
|
867
|
+
<a href="#ciocore.config.config" class="md-nav__link">
|
|
868
|
+
<span class="md-ellipsis">
|
|
869
|
+
config()
|
|
870
|
+
</span>
|
|
871
|
+
</a>
|
|
872
|
+
|
|
873
|
+
</li>
|
|
874
|
+
|
|
875
|
+
<li class="md-nav__item">
|
|
876
|
+
<a href="#ciocore.config.get" class="md-nav__link">
|
|
877
|
+
<span class="md-ellipsis">
|
|
878
|
+
get()
|
|
879
|
+
</span>
|
|
880
|
+
</a>
|
|
881
|
+
|
|
882
|
+
</li>
|
|
883
|
+
|
|
884
|
+
</ul>
|
|
885
|
+
|
|
886
|
+
</nav>
|
|
887
|
+
</div>
|
|
888
|
+
</div>
|
|
889
|
+
</div>
|
|
890
|
+
|
|
891
|
+
|
|
892
|
+
|
|
893
|
+
<div class="md-content" data-md-component="content">
|
|
894
|
+
<article class="md-content__inner md-typeset">
|
|
895
|
+
|
|
896
|
+
|
|
897
|
+
|
|
898
|
+
|
|
899
|
+
<h1 id="ciocoreconfig">ciocore.config</h1>
|
|
900
|
+
|
|
901
|
+
|
|
902
|
+
<div class="doc doc-object doc-module">
|
|
903
|
+
|
|
904
|
+
<a id="ciocore.config"></a>
|
|
905
|
+
<div class="doc doc-contents first">
|
|
906
|
+
|
|
907
|
+
<p>Config is a configuration object implemented as a module-level singleton.</p>
|
|
908
|
+
<p>Configuration variables can be shared by importing the module. If there are changes in environment variables or other sources, the config can be refreshed.</p>
|
|
909
|
+
|
|
910
|
+
|
|
911
|
+
|
|
912
|
+
<div class="doc doc-children">
|
|
913
|
+
|
|
914
|
+
|
|
915
|
+
|
|
916
|
+
|
|
917
|
+
|
|
918
|
+
|
|
919
|
+
|
|
920
|
+
|
|
921
|
+
|
|
922
|
+
|
|
923
|
+
|
|
924
|
+
|
|
925
|
+
<div class="doc doc-object doc-class">
|
|
926
|
+
|
|
927
|
+
|
|
928
|
+
|
|
929
|
+
<h2 id="ciocore.config.Config" class="doc doc-heading">
|
|
930
|
+
<code>
|
|
931
|
+
Config </code>
|
|
932
|
+
|
|
933
|
+
|
|
934
|
+
|
|
935
|
+
</h2>
|
|
936
|
+
|
|
937
|
+
<div class="doc doc-contents ">
|
|
938
|
+
|
|
939
|
+
|
|
940
|
+
<details class="quote">
|
|
941
|
+
<summary>Source code in <code>ciocore/config.py</code></summary>
|
|
942
|
+
<div class="highlight"><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">Config</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
|
943
|
+
<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>
|
|
944
|
+
<span class="w"> </span><span class="sd">"""</span>
|
|
945
|
+
<span class="sd"> Initialize the config object.</span>
|
|
946
|
+
|
|
947
|
+
<span class="sd"> A config object is a dictionary containing configuration values. It is a singleton, so there is only one instance of it. It is instantiated the first time it is needed. It can be refreshed by calling get() with the `force` keyword argument set to `True`.</span>
|
|
948
|
+
|
|
949
|
+
<span class="sd"> A Config object has the following properties:</span>
|
|
950
|
+
|
|
951
|
+
<span class="sd"> * `thread_count` The number of threads to use for downloading files. Defaults to the number of CPUs on the system times 2. It can be overridden by the `CONDUCTOR_THREAD_COUNT` environment variable.</span>
|
|
952
|
+
<span class="sd"> * `priority` Set the priority for submissions. Defaults to 5. It can be overridden by the `CONDUCTOR_PRIORITY` environment variable.</span>
|
|
953
|
+
<span class="sd"> * `md5_caching` Whether to cache MD5s. Defaults to `True`. It can be overridden by the `CONDUCTOR_MD5_CACHING` environment variable. Cachine MD5s significantly improves submission performance, but on rare occasions it can cause submissions to fail. If you experience this, set `md5_caching` to `False`.</span>
|
|
954
|
+
<span class="sd"> * `log_level` The logging level. Defaults to `INFO`. It can be overridden by the `CONDUCTOR_LOG_LEVEL` environment variable.</span>
|
|
955
|
+
<span class="sd"> * `url` The URL of the Conductor dashboard. Defaults to `https://dashboard.conductortech.com`. It can be overridden by the `CONDUCTOR_URL` environment variable.</span>
|
|
956
|
+
<span class="sd"> * `auth_url` The URL of the Conductor dashboard. Defaults to `https://dashboard.conductortech.com`. It can be overridden by the `CONDUCTOR_AUTH_URL` environment variable. This is deprecated. Use `url` instead.</span>
|
|
957
|
+
<span class="sd"> * `api_url` The URL of the Conductor API. Defaults to `https://api.conductortech.com`. It can be overridden by the `CONDUCTOR_API_URL` environment variable.</span>
|
|
958
|
+
<span class="sd"> * `api_key` The API key. The API key can be acquired from the Conductor dashboard, and can be stored in an environment variable or a file. In both cases the API KEY can be a JSON object or a base64 encoded JSON object. If it is base64 encoded, it can be a string or bytes. If it is a string, it will be decoded as ASCII. If it is bytes, it will be decoded as UTF-8.</span>
|
|
959
|
+
<span class="sd"> * Environment variable: The `CONDUCTOR_API_KEY` variable can hold the API KEY directly.</span>
|
|
960
|
+
<span class="sd"> * File: The `CONDUCTOR_API_KEY_PATH` variable can hold the path to a file containing the API KEY.</span>
|
|
961
|
+
<span class="sd"> * `downloader_page_size` The number of files to request from the Conductor API at a time. Defaults to 50. It can be overridden by the `CONDUCTOR_DOWNLOADER_PAGE_SIZE` environment variable.</span>
|
|
962
|
+
|
|
963
|
+
<span class="sd"> Returns:</span>
|
|
964
|
+
<span class="sd"> Config: A config object.</span>
|
|
965
|
+
|
|
966
|
+
<span class="sd"> Raises:</span>
|
|
967
|
+
<span class="sd"> ValueError -- Invalid inputs, such as badly formed URLs.</span>
|
|
968
|
+
<span class="sd"> """</span>
|
|
969
|
+
<span class="n">default_downloader_page_size</span> <span class="o">=</span> <span class="mi">50</span>
|
|
970
|
+
|
|
971
|
+
|
|
972
|
+
|
|
973
|
+
<span class="k">try</span><span class="p">:</span>
|
|
974
|
+
<span class="n">default_thread_count</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span> <span class="n">os</span><span class="o">.</span><span class="n">cpu_count</span><span class="p">()</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">15</span><span class="p">)</span>
|
|
975
|
+
<span class="k">except</span> <span class="ne">NotImplementedError</span><span class="p">:</span>
|
|
976
|
+
<span class="n">default_thread_count</span> <span class="o">=</span> <span class="mi">15</span>
|
|
977
|
+
|
|
978
|
+
<span class="n">url</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"CONDUCTOR_URL"</span><span class="p">,</span> <span class="s2">"https://dashboard.conductortech.com"</span><span class="p">)</span>
|
|
979
|
+
|
|
980
|
+
<span class="k">if</span> <span class="ow">not</span> <span class="n">URL_REGEX</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">url</span><span class="p">):</span>
|
|
981
|
+
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"CONDUCTOR_URL is not valid '</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">url</span><span class="p">))</span>
|
|
982
|
+
|
|
983
|
+
<span class="n">api_url</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"CONDUCTOR_API_URL"</span><span class="p">,</span> <span class="n">url</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"dashboard"</span><span class="p">,</span> <span class="s2">"api"</span><span class="p">))</span>
|
|
984
|
+
<span class="k">if</span> <span class="ow">not</span> <span class="n">URL_REGEX</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">api_url</span><span class="p">):</span>
|
|
985
|
+
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"CONDUCTOR_API_URL is not valid '</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">api_url</span><span class="p">))</span>
|
|
986
|
+
|
|
987
|
+
<span class="n">falsy</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"false"</span><span class="p">,</span> <span class="s2">"no"</span><span class="p">,</span> <span class="s2">"off"</span><span class="p">,</span> <span class="s2">"0"</span><span class="p">]</span>
|
|
988
|
+
|
|
989
|
+
<span class="n">log_level</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"CONDUCTOR_LOG_LEVEL"</span><span class="p">,</span> <span class="s2">"INFO"</span><span class="p">)</span>
|
|
990
|
+
<span class="k">if</span> <span class="n">log_level</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">"CRITICAL"</span><span class="p">,</span> <span class="s2">"ERROR"</span><span class="p">,</span> <span class="s2">"WARNING"</span><span class="p">,</span> <span class="s2">"INFO"</span><span class="p">,</span> <span class="s2">"DEBUG"</span><span class="p">]:</span>
|
|
991
|
+
<span class="n">log_level</span> <span class="o">=</span> <span class="s2">"INFO"</span>
|
|
992
|
+
|
|
993
|
+
<span class="bp">self</span><span class="o">.</span><span class="n">config</span> <span class="o">=</span> <span class="p">{</span>
|
|
994
|
+
<span class="s2">"thread_count"</span><span class="p">:</span> <span class="nb">int</span><span class="p">(</span>
|
|
995
|
+
<span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"CONDUCTOR_THREAD_COUNT"</span><span class="p">,</span> <span class="n">default_thread_count</span><span class="p">)</span>
|
|
996
|
+
<span class="p">),</span>
|
|
997
|
+
<span class="s2">"downloader_page_size"</span><span class="p">:</span> <span class="nb">int</span><span class="p">(</span>
|
|
998
|
+
<span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
|
|
999
|
+
<span class="s2">"CONDUCTOR_DOWNLOADER_PAGE_SIZE"</span><span class="p">,</span> <span class="n">default_downloader_page_size</span>
|
|
1000
|
+
<span class="p">)</span>
|
|
1001
|
+
<span class="p">),</span>
|
|
1002
|
+
<span class="s2">"priority"</span><span class="p">:</span> <span class="nb">int</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"CONDUCTOR_PRIORITY"</span><span class="p">,</span> <span class="mi">5</span><span class="p">)),</span>
|
|
1003
|
+
<span class="s2">"md5_caching"</span><span class="p">:</span> <span class="kc">False</span>
|
|
1004
|
+
<span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"CONDUCTOR_MD5_CACHING"</span><span class="p">,</span> <span class="s2">"True"</span><span class="p">)</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="ow">in</span> <span class="n">falsy</span>
|
|
1005
|
+
<span class="k">else</span> <span class="kc">True</span><span class="p">,</span>
|
|
1006
|
+
<span class="s2">"log_level"</span><span class="p">:</span> <span class="n">log_level</span><span class="p">,</span>
|
|
1007
|
+
<span class="s2">"url"</span><span class="p">:</span> <span class="n">url</span><span class="p">,</span>
|
|
1008
|
+
<span class="c1"># Keep "auth_url" for backwwards compatibillity only.</span>
|
|
1009
|
+
<span class="c1"># Clients should use "url" moving forward.</span>
|
|
1010
|
+
<span class="c1"># Remove "auth_url" on the next major version bump.</span>
|
|
1011
|
+
<span class="s2">"auth_url"</span><span class="p">:</span> <span class="n">url</span><span class="p">,</span>
|
|
1012
|
+
<span class="s2">"api_url"</span><span class="p">:</span> <span class="n">api_url</span><span class="p">,</span>
|
|
1013
|
+
<span class="s2">"api_key"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_api_key_from_variable</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_api_key_from_file</span><span class="p">(),</span>
|
|
1014
|
+
<span class="s2">"user_dir"</span><span class="p">:</span> <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'CONDUCTOR_USER_DIR'</span><span class="p">,</span> <span class="n">DEFAULT_USER_DIR</span><span class="p">)</span>
|
|
1015
|
+
<span class="p">}</span>
|
|
1016
|
+
|
|
1017
|
+
<span class="nd">@staticmethod</span>
|
|
1018
|
+
<span class="k">def</span><span class="w"> </span><span class="nf">get_api_key_from_variable</span><span class="p">():</span>
|
|
1019
|
+
<span class="w"> </span><span class="sd">"""</span>
|
|
1020
|
+
<span class="sd"> Attempt to get an API key from the `CONDUCTOR_API_KEY` environment variable.</span>
|
|
1021
|
+
|
|
1022
|
+
<span class="sd"> Raises:</span>
|
|
1023
|
+
<span class="sd"> ValueError: An error occurred while reading or loading the key into JSON.</span>
|
|
1024
|
+
|
|
1025
|
+
<span class="sd"> Returns:</span>
|
|
1026
|
+
<span class="sd"> str: JSON object containing the key - base 64 decoded if necessary.</span>
|
|
1027
|
+
|
|
1028
|
+
<span class="sd"> """</span>
|
|
1029
|
+
<span class="n">api_key</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"CONDUCTOR_API_KEY"</span><span class="p">)</span>
|
|
1030
|
+
<span class="k">if</span> <span class="ow">not</span> <span class="n">api_key</span><span class="p">:</span>
|
|
1031
|
+
<span class="k">return</span>
|
|
1032
|
+
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"Attempting to read API key from CONDUCTOR_API_KEY"</span><span class="p">)</span>
|
|
1033
|
+
<span class="k">try</span><span class="p">:</span>
|
|
1034
|
+
<span class="k">return</span> <span class="n">json</span><span class="o">.</span><span class="n">loads</span><span class="p">(</span><span class="n">api_key</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">,</span> <span class="s2">""</span><span class="p">)</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"</span><span class="se">\r</span><span class="s2">"</span><span class="p">,</span> <span class="s2">""</span><span class="p">))</span>
|
|
1035
|
+
<span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span>
|
|
1036
|
+
<span class="k">try</span><span class="p">:</span>
|
|
1037
|
+
<span class="n">result</span> <span class="o">=</span> <span class="n">base64</span><span class="o">.</span><span class="n">b64decode</span><span class="p">(</span><span class="n">api_key</span><span class="p">)</span>
|
|
1038
|
+
<span class="k">return</span> <span class="n">Config</span><span class="o">.</span><span class="n">_to_json</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
|
|
1039
|
+
<span class="k">except</span> <span class="ne">BaseException</span><span class="p">:</span>
|
|
1040
|
+
<span class="n">result</span> <span class="o">=</span> <span class="n">base64</span><span class="o">.</span><span class="n">b64decode</span><span class="p">(</span><span class="n">api_key</span><span class="o">.</span><span class="n">encode</span><span class="p">())</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="s2">"ascii"</span><span class="p">)</span>
|
|
1041
|
+
<span class="k">return</span> <span class="n">Config</span><span class="o">.</span><span class="n">_to_json</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
|
|
1042
|
+
<span class="k">except</span> <span class="ne">BaseException</span><span class="p">:</span>
|
|
1043
|
+
<span class="n">message</span> <span class="o">=</span> <span class="s2">"An error occurred reading the API key from the CONDUCTOR_API_KEY variable"</span>
|
|
1044
|
+
<span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="n">message</span><span class="p">)</span>
|
|
1045
|
+
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="n">message</span><span class="p">)</span>
|
|
1046
|
+
|
|
1047
|
+
<span class="nd">@staticmethod</span>
|
|
1048
|
+
<span class="k">def</span><span class="w"> </span><span class="nf">get_api_key_from_file</span><span class="p">():</span>
|
|
1049
|
+
<span class="w"> </span><span class="sd">"""</span>
|
|
1050
|
+
<span class="sd"> Attempt to get an API key from the file in the CONDUCTOR_API_KEY_PATH environment variable.</span>
|
|
1051
|
+
|
|
1052
|
+
<span class="sd"> Raises:</span>
|
|
1053
|
+
<span class="sd"> ValueError: An error occurred while reading or loading the key into JSON.</span>
|
|
1054
|
+
|
|
1055
|
+
<span class="sd"> Returns:</span>
|
|
1056
|
+
<span class="sd"> str: JSON object containing the key - base 64 decoded if necessary.</span>
|
|
1057
|
+
|
|
1058
|
+
<span class="sd"> """</span>
|
|
1059
|
+
<span class="n">api_key_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"CONDUCTOR_API_KEY_PATH"</span><span class="p">)</span>
|
|
1060
|
+
<span class="k">if</span> <span class="ow">not</span> <span class="n">api_key_path</span><span class="p">:</span>
|
|
1061
|
+
<span class="k">return</span>
|
|
1062
|
+
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"Attempting to read API key from CONDUCTOR_API_KEY_PATH"</span><span class="p">)</span>
|
|
1063
|
+
<span class="k">try</span><span class="p">:</span>
|
|
1064
|
+
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">api_key_path</span><span class="p">,</span> <span class="s2">"r"</span><span class="p">)</span> <span class="k">as</span> <span class="n">fp</span><span class="p">:</span>
|
|
1065
|
+
<span class="k">return</span> <span class="n">Config</span><span class="o">.</span><span class="n">_to_json</span><span class="p">(</span><span class="n">fp</span><span class="o">.</span><span class="n">read</span><span class="p">())</span>
|
|
1066
|
+
<span class="k">except</span> <span class="ne">BaseException</span><span class="p">:</span>
|
|
1067
|
+
<span class="n">message</span> <span class="o">=</span> <span class="s2">"An error occurred reading the API key from the path described in the CONDUCTOR_API_KEY_PATH variable"</span>
|
|
1068
|
+
<span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="n">message</span><span class="p">)</span>
|
|
1069
|
+
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="n">message</span><span class="p">)</span>
|
|
1070
|
+
|
|
1071
|
+
<span class="nd">@staticmethod</span>
|
|
1072
|
+
<span class="k">def</span><span class="w"> </span><span class="nf">_to_json</span><span class="p">(</span><span class="n">content</span><span class="p">):</span>
|
|
1073
|
+
<span class="k">return</span> <span class="n">json</span><span class="o">.</span><span class="n">loads</span><span class="p">(</span><span class="n">content</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">,</span> <span class="s2">""</span><span class="p">)</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"</span><span class="se">\r</span><span class="s2">"</span><span class="p">,</span> <span class="s2">""</span><span class="p">))</span>
|
|
1074
|
+
</code></pre></div>
|
|
1075
|
+
</details>
|
|
1076
|
+
|
|
1077
|
+
|
|
1078
|
+
|
|
1079
|
+
<div class="doc doc-children">
|
|
1080
|
+
|
|
1081
|
+
|
|
1082
|
+
|
|
1083
|
+
|
|
1084
|
+
|
|
1085
|
+
|
|
1086
|
+
|
|
1087
|
+
|
|
1088
|
+
|
|
1089
|
+
<div class="doc doc-object doc-method">
|
|
1090
|
+
|
|
1091
|
+
|
|
1092
|
+
|
|
1093
|
+
<h3 id="ciocore.config.Config.__init__" class="doc doc-heading">
|
|
1094
|
+
<code class="highlight language-python"><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span></code>
|
|
1095
|
+
|
|
1096
|
+
<span class="doc doc-properties">
|
|
1097
|
+
<small class="doc doc-property doc-property-special"><code>special</code></small>
|
|
1098
|
+
</span>
|
|
1099
|
+
|
|
1100
|
+
</h3>
|
|
1101
|
+
|
|
1102
|
+
<div class="doc doc-contents ">
|
|
1103
|
+
|
|
1104
|
+
<p>Initialize the config object.</p>
|
|
1105
|
+
<p>A config object is a dictionary containing configuration values. It is a singleton, so there is only one instance of it. It is instantiated the first time it is needed. It can be refreshed by calling get() with the <code>force</code> keyword argument set to <code>True</code>.</p>
|
|
1106
|
+
<p>A Config object has the following properties:</p>
|
|
1107
|
+
<ul>
|
|
1108
|
+
<li><code>thread_count</code> The number of threads to use for downloading files. Defaults to the number of CPUs on the system times 2. It can be overridden by the <code>CONDUCTOR_THREAD_COUNT</code> environment variable.</li>
|
|
1109
|
+
<li><code>priority</code> Set the priority for submissions. Defaults to 5. It can be overridden by the <code>CONDUCTOR_PRIORITY</code> environment variable.</li>
|
|
1110
|
+
<li><code>md5_caching</code> Whether to cache MD5s. Defaults to <code>True</code>. It can be overridden by the <code>CONDUCTOR_MD5_CACHING</code> environment variable. Cachine MD5s significantly improves submission performance, but on rare occasions it can cause submissions to fail. If you experience this, set <code>md5_caching</code> to <code>False</code>.</li>
|
|
1111
|
+
<li><code>log_level</code> The logging level. Defaults to <code>INFO</code>. It can be overridden by the <code>CONDUCTOR_LOG_LEVEL</code> environment variable.</li>
|
|
1112
|
+
<li><code>url</code> The URL of the Conductor dashboard. Defaults to <code>https://dashboard.conductortech.com</code>. It can be overridden by the <code>CONDUCTOR_URL</code> environment variable.</li>
|
|
1113
|
+
<li><code>auth_url</code> The URL of the Conductor dashboard. Defaults to <code>https://dashboard.conductortech.com</code>. It can be overridden by the <code>CONDUCTOR_AUTH_URL</code> environment variable. This is deprecated. Use <code>url</code> instead.</li>
|
|
1114
|
+
<li><code>api_url</code> The URL of the Conductor API. Defaults to <code>https://api.conductortech.com</code>. It can be overridden by the <code>CONDUCTOR_API_URL</code> environment variable.</li>
|
|
1115
|
+
<li><code>api_key</code> The API key. The API key can be acquired from the Conductor dashboard, and can be stored in an environment variable or a file. In both cases the API KEY can be a JSON object or a base64 encoded JSON object. If it is base64 encoded, it can be a string or bytes. If it is a string, it will be decoded as ASCII. If it is bytes, it will be decoded as UTF-8.<ul>
|
|
1116
|
+
<li>Environment variable: The <code>CONDUCTOR_API_KEY</code> variable can hold the API KEY directly.</li>
|
|
1117
|
+
<li>File: The <code>CONDUCTOR_API_KEY_PATH</code> variable can hold the path to a file containing the API KEY.</li>
|
|
1118
|
+
</ul>
|
|
1119
|
+
</li>
|
|
1120
|
+
<li><code>downloader_page_size</code> The number of files to request from the Conductor API at a time. Defaults to 50. It can be overridden by the <code>CONDUCTOR_DOWNLOADER_PAGE_SIZE</code> environment variable.</li>
|
|
1121
|
+
</ul>
|
|
1122
|
+
|
|
1123
|
+
<p><strong>Returns:</strong></p>
|
|
1124
|
+
<table>
|
|
1125
|
+
<thead>
|
|
1126
|
+
<tr>
|
|
1127
|
+
<th>Type</th>
|
|
1128
|
+
<th>Description</th>
|
|
1129
|
+
</tr>
|
|
1130
|
+
</thead>
|
|
1131
|
+
<tbody>
|
|
1132
|
+
<tr>
|
|
1133
|
+
<td><code>Config</code></td>
|
|
1134
|
+
<td><p>A config object.</p></td>
|
|
1135
|
+
</tr>
|
|
1136
|
+
</tbody>
|
|
1137
|
+
</table>
|
|
1138
|
+
<details class="quote">
|
|
1139
|
+
<summary>Source code in <code>ciocore/config.py</code></summary>
|
|
1140
|
+
<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>
|
|
1141
|
+
<span class="w"> </span><span class="sd">"""</span>
|
|
1142
|
+
<span class="sd"> Initialize the config object.</span>
|
|
1143
|
+
|
|
1144
|
+
<span class="sd"> A config object is a dictionary containing configuration values. It is a singleton, so there is only one instance of it. It is instantiated the first time it is needed. It can be refreshed by calling get() with the `force` keyword argument set to `True`.</span>
|
|
1145
|
+
|
|
1146
|
+
<span class="sd"> A Config object has the following properties:</span>
|
|
1147
|
+
|
|
1148
|
+
<span class="sd"> * `thread_count` The number of threads to use for downloading files. Defaults to the number of CPUs on the system times 2. It can be overridden by the `CONDUCTOR_THREAD_COUNT` environment variable.</span>
|
|
1149
|
+
<span class="sd"> * `priority` Set the priority for submissions. Defaults to 5. It can be overridden by the `CONDUCTOR_PRIORITY` environment variable.</span>
|
|
1150
|
+
<span class="sd"> * `md5_caching` Whether to cache MD5s. Defaults to `True`. It can be overridden by the `CONDUCTOR_MD5_CACHING` environment variable. Cachine MD5s significantly improves submission performance, but on rare occasions it can cause submissions to fail. If you experience this, set `md5_caching` to `False`.</span>
|
|
1151
|
+
<span class="sd"> * `log_level` The logging level. Defaults to `INFO`. It can be overridden by the `CONDUCTOR_LOG_LEVEL` environment variable.</span>
|
|
1152
|
+
<span class="sd"> * `url` The URL of the Conductor dashboard. Defaults to `https://dashboard.conductortech.com`. It can be overridden by the `CONDUCTOR_URL` environment variable.</span>
|
|
1153
|
+
<span class="sd"> * `auth_url` The URL of the Conductor dashboard. Defaults to `https://dashboard.conductortech.com`. It can be overridden by the `CONDUCTOR_AUTH_URL` environment variable. This is deprecated. Use `url` instead.</span>
|
|
1154
|
+
<span class="sd"> * `api_url` The URL of the Conductor API. Defaults to `https://api.conductortech.com`. It can be overridden by the `CONDUCTOR_API_URL` environment variable.</span>
|
|
1155
|
+
<span class="sd"> * `api_key` The API key. The API key can be acquired from the Conductor dashboard, and can be stored in an environment variable or a file. In both cases the API KEY can be a JSON object or a base64 encoded JSON object. If it is base64 encoded, it can be a string or bytes. If it is a string, it will be decoded as ASCII. If it is bytes, it will be decoded as UTF-8.</span>
|
|
1156
|
+
<span class="sd"> * Environment variable: The `CONDUCTOR_API_KEY` variable can hold the API KEY directly.</span>
|
|
1157
|
+
<span class="sd"> * File: The `CONDUCTOR_API_KEY_PATH` variable can hold the path to a file containing the API KEY.</span>
|
|
1158
|
+
<span class="sd"> * `downloader_page_size` The number of files to request from the Conductor API at a time. Defaults to 50. It can be overridden by the `CONDUCTOR_DOWNLOADER_PAGE_SIZE` environment variable.</span>
|
|
1159
|
+
|
|
1160
|
+
<span class="sd"> Returns:</span>
|
|
1161
|
+
<span class="sd"> Config: A config object.</span>
|
|
1162
|
+
|
|
1163
|
+
<span class="sd"> Raises:</span>
|
|
1164
|
+
<span class="sd"> ValueError -- Invalid inputs, such as badly formed URLs.</span>
|
|
1165
|
+
<span class="sd"> """</span>
|
|
1166
|
+
<span class="n">default_downloader_page_size</span> <span class="o">=</span> <span class="mi">50</span>
|
|
1167
|
+
|
|
1168
|
+
|
|
1169
|
+
|
|
1170
|
+
<span class="k">try</span><span class="p">:</span>
|
|
1171
|
+
<span class="n">default_thread_count</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span> <span class="n">os</span><span class="o">.</span><span class="n">cpu_count</span><span class="p">()</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">15</span><span class="p">)</span>
|
|
1172
|
+
<span class="k">except</span> <span class="ne">NotImplementedError</span><span class="p">:</span>
|
|
1173
|
+
<span class="n">default_thread_count</span> <span class="o">=</span> <span class="mi">15</span>
|
|
1174
|
+
|
|
1175
|
+
<span class="n">url</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"CONDUCTOR_URL"</span><span class="p">,</span> <span class="s2">"https://dashboard.conductortech.com"</span><span class="p">)</span>
|
|
1176
|
+
|
|
1177
|
+
<span class="k">if</span> <span class="ow">not</span> <span class="n">URL_REGEX</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">url</span><span class="p">):</span>
|
|
1178
|
+
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"CONDUCTOR_URL is not valid '</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">url</span><span class="p">))</span>
|
|
1179
|
+
|
|
1180
|
+
<span class="n">api_url</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"CONDUCTOR_API_URL"</span><span class="p">,</span> <span class="n">url</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"dashboard"</span><span class="p">,</span> <span class="s2">"api"</span><span class="p">))</span>
|
|
1181
|
+
<span class="k">if</span> <span class="ow">not</span> <span class="n">URL_REGEX</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">api_url</span><span class="p">):</span>
|
|
1182
|
+
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"CONDUCTOR_API_URL is not valid '</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">api_url</span><span class="p">))</span>
|
|
1183
|
+
|
|
1184
|
+
<span class="n">falsy</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"false"</span><span class="p">,</span> <span class="s2">"no"</span><span class="p">,</span> <span class="s2">"off"</span><span class="p">,</span> <span class="s2">"0"</span><span class="p">]</span>
|
|
1185
|
+
|
|
1186
|
+
<span class="n">log_level</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"CONDUCTOR_LOG_LEVEL"</span><span class="p">,</span> <span class="s2">"INFO"</span><span class="p">)</span>
|
|
1187
|
+
<span class="k">if</span> <span class="n">log_level</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">"CRITICAL"</span><span class="p">,</span> <span class="s2">"ERROR"</span><span class="p">,</span> <span class="s2">"WARNING"</span><span class="p">,</span> <span class="s2">"INFO"</span><span class="p">,</span> <span class="s2">"DEBUG"</span><span class="p">]:</span>
|
|
1188
|
+
<span class="n">log_level</span> <span class="o">=</span> <span class="s2">"INFO"</span>
|
|
1189
|
+
|
|
1190
|
+
<span class="bp">self</span><span class="o">.</span><span class="n">config</span> <span class="o">=</span> <span class="p">{</span>
|
|
1191
|
+
<span class="s2">"thread_count"</span><span class="p">:</span> <span class="nb">int</span><span class="p">(</span>
|
|
1192
|
+
<span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"CONDUCTOR_THREAD_COUNT"</span><span class="p">,</span> <span class="n">default_thread_count</span><span class="p">)</span>
|
|
1193
|
+
<span class="p">),</span>
|
|
1194
|
+
<span class="s2">"downloader_page_size"</span><span class="p">:</span> <span class="nb">int</span><span class="p">(</span>
|
|
1195
|
+
<span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
|
|
1196
|
+
<span class="s2">"CONDUCTOR_DOWNLOADER_PAGE_SIZE"</span><span class="p">,</span> <span class="n">default_downloader_page_size</span>
|
|
1197
|
+
<span class="p">)</span>
|
|
1198
|
+
<span class="p">),</span>
|
|
1199
|
+
<span class="s2">"priority"</span><span class="p">:</span> <span class="nb">int</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"CONDUCTOR_PRIORITY"</span><span class="p">,</span> <span class="mi">5</span><span class="p">)),</span>
|
|
1200
|
+
<span class="s2">"md5_caching"</span><span class="p">:</span> <span class="kc">False</span>
|
|
1201
|
+
<span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"CONDUCTOR_MD5_CACHING"</span><span class="p">,</span> <span class="s2">"True"</span><span class="p">)</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="ow">in</span> <span class="n">falsy</span>
|
|
1202
|
+
<span class="k">else</span> <span class="kc">True</span><span class="p">,</span>
|
|
1203
|
+
<span class="s2">"log_level"</span><span class="p">:</span> <span class="n">log_level</span><span class="p">,</span>
|
|
1204
|
+
<span class="s2">"url"</span><span class="p">:</span> <span class="n">url</span><span class="p">,</span>
|
|
1205
|
+
<span class="c1"># Keep "auth_url" for backwwards compatibillity only.</span>
|
|
1206
|
+
<span class="c1"># Clients should use "url" moving forward.</span>
|
|
1207
|
+
<span class="c1"># Remove "auth_url" on the next major version bump.</span>
|
|
1208
|
+
<span class="s2">"auth_url"</span><span class="p">:</span> <span class="n">url</span><span class="p">,</span>
|
|
1209
|
+
<span class="s2">"api_url"</span><span class="p">:</span> <span class="n">api_url</span><span class="p">,</span>
|
|
1210
|
+
<span class="s2">"api_key"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_api_key_from_variable</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_api_key_from_file</span><span class="p">(),</span>
|
|
1211
|
+
<span class="s2">"user_dir"</span><span class="p">:</span> <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'CONDUCTOR_USER_DIR'</span><span class="p">,</span> <span class="n">DEFAULT_USER_DIR</span><span class="p">)</span>
|
|
1212
|
+
<span class="p">}</span>
|
|
1213
|
+
</code></pre></div>
|
|
1214
|
+
</details>
|
|
1215
|
+
</div>
|
|
1216
|
+
|
|
1217
|
+
</div>
|
|
1218
|
+
|
|
1219
|
+
|
|
1220
|
+
|
|
1221
|
+
<div class="doc doc-object doc-method">
|
|
1222
|
+
|
|
1223
|
+
|
|
1224
|
+
|
|
1225
|
+
<h3 id="ciocore.config.Config.get_api_key_from_variable" class="doc doc-heading">
|
|
1226
|
+
<code class="highlight language-python"><span class="n">get_api_key_from_variable</span><span class="p">()</span></code>
|
|
1227
|
+
|
|
1228
|
+
<span class="doc doc-properties">
|
|
1229
|
+
<small class="doc doc-property doc-property-staticmethod"><code>staticmethod</code></small>
|
|
1230
|
+
</span>
|
|
1231
|
+
|
|
1232
|
+
</h3>
|
|
1233
|
+
|
|
1234
|
+
<div class="doc doc-contents ">
|
|
1235
|
+
|
|
1236
|
+
<p>Attempt to get an API key from the <code>CONDUCTOR_API_KEY</code> environment variable.</p>
|
|
1237
|
+
|
|
1238
|
+
<p><strong>Exceptions:</strong></p>
|
|
1239
|
+
<table>
|
|
1240
|
+
<thead>
|
|
1241
|
+
<tr>
|
|
1242
|
+
<th>Type</th>
|
|
1243
|
+
<th>Description</th>
|
|
1244
|
+
</tr>
|
|
1245
|
+
</thead>
|
|
1246
|
+
<tbody>
|
|
1247
|
+
<tr>
|
|
1248
|
+
<td><code>ValueError</code></td>
|
|
1249
|
+
<td><p>An error occurred while reading or loading the key into JSON.</p></td>
|
|
1250
|
+
</tr>
|
|
1251
|
+
</tbody>
|
|
1252
|
+
</table>
|
|
1253
|
+
<p><strong>Returns:</strong></p>
|
|
1254
|
+
<table>
|
|
1255
|
+
<thead>
|
|
1256
|
+
<tr>
|
|
1257
|
+
<th>Type</th>
|
|
1258
|
+
<th>Description</th>
|
|
1259
|
+
</tr>
|
|
1260
|
+
</thead>
|
|
1261
|
+
<tbody>
|
|
1262
|
+
<tr>
|
|
1263
|
+
<td><code>str</code></td>
|
|
1264
|
+
<td><p>JSON object containing the key - base 64 decoded if necessary.</p></td>
|
|
1265
|
+
</tr>
|
|
1266
|
+
</tbody>
|
|
1267
|
+
</table>
|
|
1268
|
+
<details class="quote">
|
|
1269
|
+
<summary>Source code in <code>ciocore/config.py</code></summary>
|
|
1270
|
+
<div class="highlight"><pre><span></span><code><span class="nd">@staticmethod</span>
|
|
1271
|
+
<span class="k">def</span><span class="w"> </span><span class="nf">get_api_key_from_variable</span><span class="p">():</span>
|
|
1272
|
+
<span class="w"> </span><span class="sd">"""</span>
|
|
1273
|
+
<span class="sd"> Attempt to get an API key from the `CONDUCTOR_API_KEY` environment variable.</span>
|
|
1274
|
+
|
|
1275
|
+
<span class="sd"> Raises:</span>
|
|
1276
|
+
<span class="sd"> ValueError: An error occurred while reading or loading the key into JSON.</span>
|
|
1277
|
+
|
|
1278
|
+
<span class="sd"> Returns:</span>
|
|
1279
|
+
<span class="sd"> str: JSON object containing the key - base 64 decoded if necessary.</span>
|
|
1280
|
+
|
|
1281
|
+
<span class="sd"> """</span>
|
|
1282
|
+
<span class="n">api_key</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"CONDUCTOR_API_KEY"</span><span class="p">)</span>
|
|
1283
|
+
<span class="k">if</span> <span class="ow">not</span> <span class="n">api_key</span><span class="p">:</span>
|
|
1284
|
+
<span class="k">return</span>
|
|
1285
|
+
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"Attempting to read API key from CONDUCTOR_API_KEY"</span><span class="p">)</span>
|
|
1286
|
+
<span class="k">try</span><span class="p">:</span>
|
|
1287
|
+
<span class="k">return</span> <span class="n">json</span><span class="o">.</span><span class="n">loads</span><span class="p">(</span><span class="n">api_key</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">,</span> <span class="s2">""</span><span class="p">)</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"</span><span class="se">\r</span><span class="s2">"</span><span class="p">,</span> <span class="s2">""</span><span class="p">))</span>
|
|
1288
|
+
<span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span>
|
|
1289
|
+
<span class="k">try</span><span class="p">:</span>
|
|
1290
|
+
<span class="n">result</span> <span class="o">=</span> <span class="n">base64</span><span class="o">.</span><span class="n">b64decode</span><span class="p">(</span><span class="n">api_key</span><span class="p">)</span>
|
|
1291
|
+
<span class="k">return</span> <span class="n">Config</span><span class="o">.</span><span class="n">_to_json</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
|
|
1292
|
+
<span class="k">except</span> <span class="ne">BaseException</span><span class="p">:</span>
|
|
1293
|
+
<span class="n">result</span> <span class="o">=</span> <span class="n">base64</span><span class="o">.</span><span class="n">b64decode</span><span class="p">(</span><span class="n">api_key</span><span class="o">.</span><span class="n">encode</span><span class="p">())</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="s2">"ascii"</span><span class="p">)</span>
|
|
1294
|
+
<span class="k">return</span> <span class="n">Config</span><span class="o">.</span><span class="n">_to_json</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
|
|
1295
|
+
<span class="k">except</span> <span class="ne">BaseException</span><span class="p">:</span>
|
|
1296
|
+
<span class="n">message</span> <span class="o">=</span> <span class="s2">"An error occurred reading the API key from the CONDUCTOR_API_KEY variable"</span>
|
|
1297
|
+
<span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="n">message</span><span class="p">)</span>
|
|
1298
|
+
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="n">message</span><span class="p">)</span>
|
|
1299
|
+
</code></pre></div>
|
|
1300
|
+
</details>
|
|
1301
|
+
</div>
|
|
1302
|
+
|
|
1303
|
+
</div>
|
|
1304
|
+
|
|
1305
|
+
|
|
1306
|
+
|
|
1307
|
+
<div class="doc doc-object doc-method">
|
|
1308
|
+
|
|
1309
|
+
|
|
1310
|
+
|
|
1311
|
+
<h3 id="ciocore.config.Config.get_api_key_from_file" class="doc doc-heading">
|
|
1312
|
+
<code class="highlight language-python"><span class="n">get_api_key_from_file</span><span class="p">()</span></code>
|
|
1313
|
+
|
|
1314
|
+
<span class="doc doc-properties">
|
|
1315
|
+
<small class="doc doc-property doc-property-staticmethod"><code>staticmethod</code></small>
|
|
1316
|
+
</span>
|
|
1317
|
+
|
|
1318
|
+
</h3>
|
|
1319
|
+
|
|
1320
|
+
<div class="doc doc-contents ">
|
|
1321
|
+
|
|
1322
|
+
<p>Attempt to get an API key from the file in the CONDUCTOR_API_KEY_PATH environment variable.</p>
|
|
1323
|
+
|
|
1324
|
+
<p><strong>Exceptions:</strong></p>
|
|
1325
|
+
<table>
|
|
1326
|
+
<thead>
|
|
1327
|
+
<tr>
|
|
1328
|
+
<th>Type</th>
|
|
1329
|
+
<th>Description</th>
|
|
1330
|
+
</tr>
|
|
1331
|
+
</thead>
|
|
1332
|
+
<tbody>
|
|
1333
|
+
<tr>
|
|
1334
|
+
<td><code>ValueError</code></td>
|
|
1335
|
+
<td><p>An error occurred while reading or loading the key into JSON.</p></td>
|
|
1336
|
+
</tr>
|
|
1337
|
+
</tbody>
|
|
1338
|
+
</table>
|
|
1339
|
+
<p><strong>Returns:</strong></p>
|
|
1340
|
+
<table>
|
|
1341
|
+
<thead>
|
|
1342
|
+
<tr>
|
|
1343
|
+
<th>Type</th>
|
|
1344
|
+
<th>Description</th>
|
|
1345
|
+
</tr>
|
|
1346
|
+
</thead>
|
|
1347
|
+
<tbody>
|
|
1348
|
+
<tr>
|
|
1349
|
+
<td><code>str</code></td>
|
|
1350
|
+
<td><p>JSON object containing the key - base 64 decoded if necessary.</p></td>
|
|
1351
|
+
</tr>
|
|
1352
|
+
</tbody>
|
|
1353
|
+
</table>
|
|
1354
|
+
<details class="quote">
|
|
1355
|
+
<summary>Source code in <code>ciocore/config.py</code></summary>
|
|
1356
|
+
<div class="highlight"><pre><span></span><code><span class="nd">@staticmethod</span>
|
|
1357
|
+
<span class="k">def</span><span class="w"> </span><span class="nf">get_api_key_from_file</span><span class="p">():</span>
|
|
1358
|
+
<span class="w"> </span><span class="sd">"""</span>
|
|
1359
|
+
<span class="sd"> Attempt to get an API key from the file in the CONDUCTOR_API_KEY_PATH environment variable.</span>
|
|
1360
|
+
|
|
1361
|
+
<span class="sd"> Raises:</span>
|
|
1362
|
+
<span class="sd"> ValueError: An error occurred while reading or loading the key into JSON.</span>
|
|
1363
|
+
|
|
1364
|
+
<span class="sd"> Returns:</span>
|
|
1365
|
+
<span class="sd"> str: JSON object containing the key - base 64 decoded if necessary.</span>
|
|
1366
|
+
|
|
1367
|
+
<span class="sd"> """</span>
|
|
1368
|
+
<span class="n">api_key_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"CONDUCTOR_API_KEY_PATH"</span><span class="p">)</span>
|
|
1369
|
+
<span class="k">if</span> <span class="ow">not</span> <span class="n">api_key_path</span><span class="p">:</span>
|
|
1370
|
+
<span class="k">return</span>
|
|
1371
|
+
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"Attempting to read API key from CONDUCTOR_API_KEY_PATH"</span><span class="p">)</span>
|
|
1372
|
+
<span class="k">try</span><span class="p">:</span>
|
|
1373
|
+
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">api_key_path</span><span class="p">,</span> <span class="s2">"r"</span><span class="p">)</span> <span class="k">as</span> <span class="n">fp</span><span class="p">:</span>
|
|
1374
|
+
<span class="k">return</span> <span class="n">Config</span><span class="o">.</span><span class="n">_to_json</span><span class="p">(</span><span class="n">fp</span><span class="o">.</span><span class="n">read</span><span class="p">())</span>
|
|
1375
|
+
<span class="k">except</span> <span class="ne">BaseException</span><span class="p">:</span>
|
|
1376
|
+
<span class="n">message</span> <span class="o">=</span> <span class="s2">"An error occurred reading the API key from the path described in the CONDUCTOR_API_KEY_PATH variable"</span>
|
|
1377
|
+
<span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="n">message</span><span class="p">)</span>
|
|
1378
|
+
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="n">message</span><span class="p">)</span>
|
|
1379
|
+
</code></pre></div>
|
|
1380
|
+
</details>
|
|
1381
|
+
</div>
|
|
1382
|
+
|
|
1383
|
+
</div>
|
|
1384
|
+
|
|
1385
|
+
|
|
1386
|
+
|
|
1387
|
+
|
|
1388
|
+
|
|
1389
|
+
</div>
|
|
1390
|
+
|
|
1391
|
+
</div>
|
|
1392
|
+
|
|
1393
|
+
</div>
|
|
1394
|
+
|
|
1395
|
+
|
|
1396
|
+
|
|
1397
|
+
|
|
1398
|
+
<div class="doc doc-object doc-function">
|
|
1399
|
+
|
|
1400
|
+
|
|
1401
|
+
|
|
1402
|
+
<h2 id="ciocore.config.config" class="doc doc-heading">
|
|
1403
|
+
<code class="highlight language-python"><span class="n">config</span><span class="p">(</span><span class="n">force</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span></code>
|
|
1404
|
+
|
|
1405
|
+
|
|
1406
|
+
</h2>
|
|
1407
|
+
|
|
1408
|
+
<div class="doc doc-contents ">
|
|
1409
|
+
|
|
1410
|
+
<p>Instantiate a config object if necessary.</p>
|
|
1411
|
+
<div class="admonition deprecated">
|
|
1412
|
+
<p class="admonition-title">Deprecated</p>
|
|
1413
|
+
<p>Use <a href="#ciocore.config.config--get">get()</a> instead.</p>
|
|
1414
|
+
</div>
|
|
1415
|
+
|
|
1416
|
+
<p><strong>Parameters:</strong></p>
|
|
1417
|
+
<table>
|
|
1418
|
+
<thead>
|
|
1419
|
+
<tr>
|
|
1420
|
+
<th>Name</th>
|
|
1421
|
+
<th>Type</th>
|
|
1422
|
+
<th>Description</th>
|
|
1423
|
+
<th>Default</th>
|
|
1424
|
+
</tr>
|
|
1425
|
+
</thead>
|
|
1426
|
+
<tbody>
|
|
1427
|
+
<tr>
|
|
1428
|
+
<td><code>force</code></td>
|
|
1429
|
+
<td><code>bool</code></td>
|
|
1430
|
+
<td><p>Discards any existing config object and instantiate a new one -- Defaults to <code>False</code>.</p></td>
|
|
1431
|
+
<td><code>False</code></td>
|
|
1432
|
+
</tr>
|
|
1433
|
+
</tbody>
|
|
1434
|
+
</table>
|
|
1435
|
+
<p><strong>Returns:</strong></p>
|
|
1436
|
+
<table>
|
|
1437
|
+
<thead>
|
|
1438
|
+
<tr>
|
|
1439
|
+
<th>Type</th>
|
|
1440
|
+
<th>Description</th>
|
|
1441
|
+
</tr>
|
|
1442
|
+
</thead>
|
|
1443
|
+
<tbody>
|
|
1444
|
+
<tr>
|
|
1445
|
+
<td><code>dict</code></td>
|
|
1446
|
+
<td><p>A dictionary containing configuration values.</p></td>
|
|
1447
|
+
</tr>
|
|
1448
|
+
</tbody>
|
|
1449
|
+
</table>
|
|
1450
|
+
<details class="quote">
|
|
1451
|
+
<summary>Source code in <code>ciocore/config.py</code></summary>
|
|
1452
|
+
<div class="highlight"><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">config</span><span class="p">(</span><span class="n">force</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
|
1453
|
+
<span class="w"> </span><span class="sd">"""</span>
|
|
1454
|
+
<span class="sd"> Instantiate a config object if necessary.</span>
|
|
1455
|
+
|
|
1456
|
+
<span class="sd"> Deprecated:</span>
|
|
1457
|
+
<span class="sd"> Use [get()](#get) instead.</span>
|
|
1458
|
+
|
|
1459
|
+
<span class="sd"> Args:</span>
|
|
1460
|
+
<span class="sd"> force (bool): Discards any existing config object and instantiate a new one -- Defaults to `False`.</span>
|
|
1461
|
+
|
|
1462
|
+
<span class="sd"> Returns:</span>
|
|
1463
|
+
<span class="sd"> dict: A dictionary containing configuration values.</span>
|
|
1464
|
+
<span class="sd"> """</span>
|
|
1465
|
+
|
|
1466
|
+
<span class="k">global</span> <span class="n">__config__</span>
|
|
1467
|
+
<span class="k">if</span> <span class="n">force</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">__config__</span><span class="p">:</span>
|
|
1468
|
+
<span class="n">__config__</span> <span class="o">=</span> <span class="n">Config</span><span class="p">()</span>
|
|
1469
|
+
<span class="k">return</span> <span class="n">__config__</span>
|
|
1470
|
+
</code></pre></div>
|
|
1471
|
+
</details>
|
|
1472
|
+
</div>
|
|
1473
|
+
|
|
1474
|
+
</div>
|
|
1475
|
+
|
|
1476
|
+
|
|
1477
|
+
|
|
1478
|
+
<div class="doc doc-object doc-function">
|
|
1479
|
+
|
|
1480
|
+
|
|
1481
|
+
|
|
1482
|
+
<h2 id="ciocore.config.get" class="doc doc-heading">
|
|
1483
|
+
<code class="highlight language-python"><span class="n">get</span><span class="p">(</span><span class="n">force</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span></code>
|
|
1484
|
+
|
|
1485
|
+
|
|
1486
|
+
</h2>
|
|
1487
|
+
|
|
1488
|
+
<div class="doc doc-contents ">
|
|
1489
|
+
|
|
1490
|
+
<p>Instantiate a config object if necessary and return the dictionary.</p>
|
|
1491
|
+
|
|
1492
|
+
<p><strong>Parameters:</strong></p>
|
|
1493
|
+
<table>
|
|
1494
|
+
<thead>
|
|
1495
|
+
<tr>
|
|
1496
|
+
<th>Name</th>
|
|
1497
|
+
<th>Type</th>
|
|
1498
|
+
<th>Description</th>
|
|
1499
|
+
<th>Default</th>
|
|
1500
|
+
</tr>
|
|
1501
|
+
</thead>
|
|
1502
|
+
<tbody>
|
|
1503
|
+
<tr>
|
|
1504
|
+
<td><code>force</code></td>
|
|
1505
|
+
<td><code>bool</code></td>
|
|
1506
|
+
<td><p>Discards any existing config object and instantiate a new one -- Defaults to <code>False</code>.</p></td>
|
|
1507
|
+
<td><code>False</code></td>
|
|
1508
|
+
</tr>
|
|
1509
|
+
</tbody>
|
|
1510
|
+
</table>
|
|
1511
|
+
<p><strong>Returns:</strong></p>
|
|
1512
|
+
<table>
|
|
1513
|
+
<thead>
|
|
1514
|
+
<tr>
|
|
1515
|
+
<th>Type</th>
|
|
1516
|
+
<th>Description</th>
|
|
1517
|
+
</tr>
|
|
1518
|
+
</thead>
|
|
1519
|
+
<tbody>
|
|
1520
|
+
<tr>
|
|
1521
|
+
<td><code>dict</code></td>
|
|
1522
|
+
<td><p>A dictionary containing configuration values.</p></td>
|
|
1523
|
+
</tr>
|
|
1524
|
+
</tbody>
|
|
1525
|
+
</table>
|
|
1526
|
+
<p><strong>Examples:</strong></p>
|
|
1527
|
+
<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">config</span>
|
|
1528
|
+
<span class="o">>>></span> <span class="n">config</span><span class="o">.</span><span class="n">get</span><span class="p">()</span>
|
|
1529
|
+
<span class="p">{</span>
|
|
1530
|
+
<span class="s1">'thread_count'</span><span class="p">:</span> <span class="mi">16</span><span class="p">,</span>
|
|
1531
|
+
<span class="s1">'priority'</span><span class="p">:</span> <span class="mi">5</span><span class="p">,</span>
|
|
1532
|
+
<span class="s1">'md5_caching'</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
|
|
1533
|
+
<span class="s1">'log_level'</span><span class="p">:</span> <span class="s1">'INFO'</span><span class="p">,</span>
|
|
1534
|
+
<span class="s1">'url'</span><span class="p">:</span> <span class="s1">'https://dashboard.conductortech.com'</span><span class="p">,</span>
|
|
1535
|
+
<span class="s1">'auth_url'</span><span class="p">:</span> <span class="s1">'https://dashboard.conductortech.com'</span><span class="p">,</span>
|
|
1536
|
+
<span class="s1">'api_url'</span><span class="p">:</span> <span class="s1">'https://api.conductortech.com'</span><span class="p">,</span>
|
|
1537
|
+
<span class="s1">'api_key'</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span>
|
|
1538
|
+
<span class="s1">'downloader_page_size'</span><span class="p">:</span> <span class="mi">50</span><span class="p">,</span>
|
|
1539
|
+
<span class="p">}</span>
|
|
1540
|
+
</code></pre></div>
|
|
1541
|
+
|
|
1542
|
+
<details class="quote">
|
|
1543
|
+
<summary>Source code in <code>ciocore/config.py</code></summary>
|
|
1544
|
+
<div class="highlight"><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">get</span><span class="p">(</span><span class="n">force</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
|
1545
|
+
<span class="w"> </span><span class="sd">"""</span>
|
|
1546
|
+
<span class="sd"> Instantiate a config object if necessary and return the dictionary.</span>
|
|
1547
|
+
|
|
1548
|
+
<span class="sd"> Args:</span>
|
|
1549
|
+
<span class="sd"> force (bool): Discards any existing config object and instantiate a new one -- Defaults to `False`.</span>
|
|
1550
|
+
|
|
1551
|
+
<span class="sd"> Returns:</span>
|
|
1552
|
+
<span class="sd"> dict: A dictionary containing configuration values.</span>
|
|
1553
|
+
|
|
1554
|
+
<span class="sd"> Example:</span>
|
|
1555
|
+
<span class="sd"> >>> from ciocore import config</span>
|
|
1556
|
+
<span class="sd"> >>> config.get()</span>
|
|
1557
|
+
<span class="sd"> {</span>
|
|
1558
|
+
<span class="sd"> 'thread_count': 16,</span>
|
|
1559
|
+
<span class="sd"> 'priority': 5,</span>
|
|
1560
|
+
<span class="sd"> 'md5_caching': True,</span>
|
|
1561
|
+
<span class="sd"> 'log_level': 'INFO',</span>
|
|
1562
|
+
<span class="sd"> 'url': 'https://dashboard.conductortech.com',</span>
|
|
1563
|
+
<span class="sd"> 'auth_url': 'https://dashboard.conductortech.com',</span>
|
|
1564
|
+
<span class="sd"> 'api_url': 'https://api.conductortech.com',</span>
|
|
1565
|
+
<span class="sd"> 'api_key': None,</span>
|
|
1566
|
+
<span class="sd"> 'downloader_page_size': 50,</span>
|
|
1567
|
+
<span class="sd"> }</span>
|
|
1568
|
+
<span class="sd"> """</span>
|
|
1569
|
+
<span class="k">global</span> <span class="n">__config__</span>
|
|
1570
|
+
<span class="k">if</span> <span class="n">force</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">__config__</span><span class="p">:</span>
|
|
1571
|
+
<span class="n">__config__</span> <span class="o">=</span> <span class="n">Config</span><span class="p">()</span>
|
|
1572
|
+
<span class="k">return</span> <span class="n">__config__</span><span class="o">.</span><span class="n">config</span>
|
|
1573
|
+
</code></pre></div>
|
|
1574
|
+
</details>
|
|
1575
|
+
</div>
|
|
1576
|
+
|
|
1577
|
+
</div>
|
|
1578
|
+
|
|
1579
|
+
|
|
1580
|
+
|
|
1581
|
+
|
|
1582
|
+
|
|
1583
|
+
|
|
1584
|
+
</div>
|
|
1585
|
+
|
|
1586
|
+
</div>
|
|
1587
|
+
|
|
1588
|
+
</div>
|
|
1589
|
+
|
|
1590
|
+
|
|
1591
|
+
|
|
1592
|
+
|
|
1593
|
+
|
|
1594
|
+
|
|
1595
|
+
|
|
1596
|
+
|
|
1597
|
+
|
|
1598
|
+
|
|
1599
|
+
|
|
1600
|
+
|
|
1601
|
+
|
|
1602
|
+
</article>
|
|
1603
|
+
</div>
|
|
1604
|
+
|
|
1605
|
+
|
|
1606
|
+
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
|
|
1607
|
+
</div>
|
|
1608
|
+
|
|
1609
|
+
<button type="button" class="md-top md-icon" data-md-component="top" hidden>
|
|
1610
|
+
|
|
1611
|
+
<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>
|
|
1612
|
+
Back to top
|
|
1613
|
+
</button>
|
|
1614
|
+
|
|
1615
|
+
</main>
|
|
1616
|
+
|
|
1617
|
+
<footer class="md-footer">
|
|
1618
|
+
|
|
1619
|
+
<div class="md-footer-meta md-typeset">
|
|
1620
|
+
<div class="md-footer-meta__inner md-grid">
|
|
1621
|
+
<div class="md-copyright">
|
|
1622
|
+
|
|
1623
|
+
<div class="md-copyright__highlight">
|
|
1624
|
+
Copyright © 2023, CoreWeave.
|
|
1625
|
+
</div>
|
|
1626
|
+
|
|
1627
|
+
|
|
1628
|
+
Made with
|
|
1629
|
+
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
|
|
1630
|
+
Material for MkDocs
|
|
1631
|
+
</a>
|
|
1632
|
+
|
|
1633
|
+
</div>
|
|
1634
|
+
|
|
1635
|
+
</div>
|
|
1636
|
+
</div>
|
|
1637
|
+
</footer>
|
|
1638
|
+
|
|
1639
|
+
</div>
|
|
1640
|
+
<div class="md-dialog" data-md-component="dialog">
|
|
1641
|
+
<div class="md-dialog__inner md-typeset"></div>
|
|
1642
|
+
</div>
|
|
1643
|
+
|
|
1644
|
+
|
|
1645
|
+
<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>
|
|
1646
|
+
|
|
1647
|
+
|
|
1648
|
+
<script src="../../assets/javascripts/bundle.471ce7a9.min.js"></script>
|
|
1649
|
+
|
|
1650
|
+
|
|
1651
|
+
</body>
|
|
1652
|
+
</html>
|