ciocore 9.1.0b2__py2.py3-none-any.whl → 9.1.0rc1__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.

Potentially problematic release.


This version of ciocore might be problematic. Click here for more details.

ciocore/VERSION CHANGED
@@ -1 +1 @@
1
- 9.1.0-beta.2
1
+ 9.1.0-rc.1
ciocore/api_client.py CHANGED
@@ -445,7 +445,7 @@ def creds_same_domain(creds):
445
445
  if not token:
446
446
  return False
447
447
 
448
- decoded = jwt.decode(creds["access_token"], verify=False)
448
+ decoded = jwt.decode(creds["access_token"], algorithms=["HS256"], options={"verify_signature": False})
449
449
  audience_domain = decoded.get("aud")
450
450
  return (
451
451
  audience_domain
@@ -463,7 +463,8 @@ def account_id_from_jwt(token):
463
463
  Returns:
464
464
  str: The account id.
465
465
  """
466
- payload = jwt.decode(token, verify=False)
466
+ payload = jwt.decode(token, algorithms=["HS256"], options={"verify_signature": False})
467
+
467
468
  return payload.get("account")
468
469
 
469
470
 
@@ -488,23 +489,26 @@ def account_name_from_jwt(token):
488
489
  return None
489
490
 
490
491
 
491
- def request_instance_types(as_dict=False):
492
+ def request_instance_types(as_dict=False, filter_param=""):
492
493
  """
493
494
  Get the list of available instances types.
494
495
 
495
496
  Args:
496
497
  as_dict (bool): Whether or not to return the instance types as a dictionary.
498
+ filter_param (string): complex RHS string query ex:
499
+ "cpu=gte:8:int,operating_system=ne:windows,gpu.gpu_count=eq:1:int"
497
500
 
498
501
  Returns:
499
502
  list: The list of instance types.
500
503
  """
501
504
  api = ApiClient()
502
505
  response, response_code = api.make_request(
503
- "api/v1/instance-types", use_api_key=True, raise_on_error=False
506
+ "api/v1/instance-types", use_api_key=True, raise_on_error=False,
507
+ params={"filter":filter_param}
504
508
  )
505
509
  if response_code not in (200,):
506
510
  msg = "Failed to get instance types"
507
- msg += "\nError %s ...\n%s" % (response_code, response)
511
+ msg += "\nAPI responded with status code %s\n" % (response_code)
508
512
  raise Exception(msg)
509
513
 
510
514
  instance_types = json.loads(response).get("data", [])
@@ -554,7 +558,7 @@ def request_projects(statuses=("active",)):
554
558
  def request_software_packages():
555
559
  """
556
560
  Query Conductor for all software packages for the currently available sidecar.
557
-
561
+
558
562
  Returns:
559
563
  list: The list of software packages.
560
564
  """
ciocore/data.py CHANGED
@@ -51,12 +51,14 @@ def init(*products, **kwargs):
51
51
 
52
52
  __platforms__ = set(kwargs.get("platforms", ["windows", "linux"]))
53
53
 
54
- def data(force=False):
54
+ def data(force=False, instances_filter=""):
55
55
  """
56
56
  Provide projects, instance types, and software package data.
57
57
 
58
58
  Keyword Args:
59
59
  force: (bool) If `True`, then force the system to fetch fresh data -- Defaults to `False`.
60
+ instances_filter: (str) complex RHS string query ex:
61
+ "cpu=gte:8:int,operating_system=ne:windows,gpu.gpu_count=eq:1:int"
60
62
 
61
63
  Raises:
62
64
  ValueError: Module was not initialized with [init()](/data/#ciocore.data.init).
@@ -118,7 +120,7 @@ def data(force=False):
118
120
  # PROJECTS
119
121
  __data__["projects"] = sorted(api_client.request_projects())
120
122
  # INST_TYPES
121
- instance_types = api_client.request_instance_types()
123
+ instance_types = api_client.request_instance_types(filter_param=instances_filter)
122
124
  # SOFTWARE
123
125
  software = api_client.request_software_packages()
124
126
 
@@ -2227,7 +2227,7 @@ prompt the user to log in. </p>
2227
2227
  <span class="k">if</span> <span class="ow">not</span> <span class="n">token</span><span class="p">:</span>
2228
2228
  <span class="k">return</span> <span class="kc">False</span>
2229
2229
 
2230
- <span class="n">decoded</span> <span class="o">=</span> <span class="n">jwt</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="n">creds</span><span class="p">[</span><span class="s2">&quot;access_token&quot;</span><span class="p">],</span> <span class="n">verify</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
2230
+ <span class="n">decoded</span> <span class="o">=</span> <span class="n">jwt</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="n">creds</span><span class="p">[</span><span class="s2">&quot;access_token&quot;</span><span class="p">],</span> <span class="n">algorithms</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;HS256&quot;</span><span class="p">],</span> <span class="n">options</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;verify_signature&quot;</span><span class="p">:</span> <span class="kc">False</span><span class="p">})</span>
2231
2231
  <span class="n">audience_domain</span> <span class="o">=</span> <span class="n">decoded</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;aud&quot;</span><span class="p">)</span>
2232
2232
  <span class="k">return</span> <span class="p">(</span>
2233
2233
  <span class="n">audience_domain</span>
@@ -2301,7 +2301,8 @@ prompt the user to log in. </p>
2301
2301
  <span class="sd"> Returns:</span>
2302
2302
  <span class="sd"> str: The account id.</span>
2303
2303
  <span class="sd"> &quot;&quot;&quot;</span>
2304
- <span class="n">payload</span> <span class="o">=</span> <span class="n">jwt</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="n">token</span><span class="p">,</span> <span class="n">verify</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
2304
+ <span class="n">payload</span> <span class="o">=</span> <span class="n">jwt</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="n">token</span><span class="p">,</span> <span class="n">algorithms</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;HS256&quot;</span><span class="p">],</span> <span class="n">options</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;verify_signature&quot;</span><span class="p">:</span> <span class="kc">False</span><span class="p">})</span>
2305
+
2305
2306
  <span class="k">return</span> <span class="n">payload</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;account&quot;</span><span class="p">)</span>
2306
2307
  </code></pre></div>
2307
2308
  </details>
@@ -2393,7 +2394,7 @@ prompt the user to log in. </p>
2393
2394
 
2394
2395
 
2395
2396
  <h2 id="ciocore.api_client.request_instance_types" class="doc doc-heading">
2396
- <code class="highlight language-python"><span class="n">request_instance_types</span><span class="p">(</span><span class="n">as_dict</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span></code>
2397
+ <code class="highlight language-python"><span class="n">request_instance_types</span><span class="p">(</span><span class="n">as_dict</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">filter_param</span><span class="o">=</span><span class="s1">&#39;&#39;</span><span class="p">)</span></code>
2397
2398
 
2398
2399
 
2399
2400
  </h2>
@@ -2419,6 +2420,13 @@ prompt the user to log in. </p>
2419
2420
  <td><p>Whether or not to return the instance types as a dictionary.</p></td>
2420
2421
  <td><code>False</code></td>
2421
2422
  </tr>
2423
+ <tr>
2424
+ <td><code>filter_param</code></td>
2425
+ <td><code>string</code></td>
2426
+ <td><p>complex RHS string query ex:
2427
+ "cpu=gte:8:int,operating_system=ne:windows,gpu.gpu_count=eq:1:int"</p></td>
2428
+ <td><code>&#39;&#39;</code></td>
2429
+ </tr>
2422
2430
  </tbody>
2423
2431
  </table>
2424
2432
  <p><strong>Returns:</strong></p>
@@ -2438,23 +2446,26 @@ prompt the user to log in. </p>
2438
2446
  </table>
2439
2447
  <details class="quote">
2440
2448
  <summary>Source code in <code>ciocore/api_client.py</code></summary>
2441
- <div class="highlight"><pre><span></span><code><span class="k">def</span> <span class="nf">request_instance_types</span><span class="p">(</span><span class="n">as_dict</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
2449
+ <div class="highlight"><pre><span></span><code><span class="k">def</span> <span class="nf">request_instance_types</span><span class="p">(</span><span class="n">as_dict</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">filter_param</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">):</span>
2442
2450
  <span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
2443
2451
  <span class="sd"> Get the list of available instances types.</span>
2444
2452
 
2445
2453
  <span class="sd"> Args:</span>
2446
2454
  <span class="sd"> as_dict (bool): Whether or not to return the instance types as a dictionary.</span>
2455
+ <span class="sd"> filter_param (string): complex RHS string query ex:</span>
2456
+ <span class="sd"> &quot;cpu=gte:8:int,operating_system=ne:windows,gpu.gpu_count=eq:1:int&quot;</span>
2447
2457
 
2448
2458
  <span class="sd"> Returns:</span>
2449
2459
  <span class="sd"> list: The list of instance types.</span>
2450
2460
  <span class="sd"> &quot;&quot;&quot;</span>
2451
2461
  <span class="n">api</span> <span class="o">=</span> <span class="n">ApiClient</span><span class="p">()</span>
2452
2462
  <span class="n">response</span><span class="p">,</span> <span class="n">response_code</span> <span class="o">=</span> <span class="n">api</span><span class="o">.</span><span class="n">make_request</span><span class="p">(</span>
2453
- <span class="s2">&quot;api/v1/instance-types&quot;</span><span class="p">,</span> <span class="n">use_api_key</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">raise_on_error</span><span class="o">=</span><span class="kc">False</span>
2463
+ <span class="s2">&quot;api/v1/instance-types&quot;</span><span class="p">,</span> <span class="n">use_api_key</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">raise_on_error</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
2464
+ <span class="n">params</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;filter&quot;</span><span class="p">:</span><span class="n">filter_param</span><span class="p">}</span>
2454
2465
  <span class="p">)</span>
2455
2466
  <span class="k">if</span> <span class="n">response_code</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="mi">200</span><span class="p">,):</span>
2456
2467
  <span class="n">msg</span> <span class="o">=</span> <span class="s2">&quot;Failed to get instance types&quot;</span>
2457
- <span class="n">msg</span> <span class="o">+=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Error </span><span class="si">%s</span><span class="s2"> ...</span><span class="se">\n</span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">response_code</span><span class="p">,</span> <span class="n">response</span><span class="p">)</span>
2468
+ <span class="n">msg</span> <span class="o">+=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">API responded with status code </span><span class="si">%s</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">response_code</span><span class="p">)</span>
2458
2469
  <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
2459
2470
 
2460
2471
  <span class="n">instance_types</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">loads</span><span class="p">(</span><span class="n">response</span><span class="p">)</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;data&quot;</span><span class="p">,</span> <span class="p">[])</span>
@@ -984,7 +984,7 @@
984
984
 
985
985
 
986
986
  <h2 id="ciocore.data.data" class="doc doc-heading">
987
- <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></code>
987
+ <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>
988
988
 
989
989
 
990
990
  </h2>
@@ -1008,6 +1008,12 @@
1008
1008
  <td></td>
1009
1009
  <td><p>(bool) If <code>True</code>, then force the system to fetch fresh data -- Defaults to <code>False</code>.</p></td>
1010
1010
  </tr>
1011
+ <tr>
1012
+ <td><code>instances_filter</code></td>
1013
+ <td></td>
1014
+ <td><p>(str) complex RHS string query ex:
1015
+ "cpu=gte:8:int,operating_system=ne:windows,gpu.gpu_count=eq:1:int"</p></td>
1016
+ </tr>
1011
1017
  </tbody>
1012
1018
  </table>
1013
1019
  <p><strong>Exceptions:</strong></p>
@@ -1079,12 +1085,14 @@ the software available at Conductor, or a subset based on specified products.</p
1079
1085
 
1080
1086
  <details class="quote">
1081
1087
  <summary>Source code in <code>ciocore/data.py</code></summary>
1082
- <div class="highlight"><pre><span></span><code><span class="k">def</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>
1088
+ <div class="highlight"><pre><span></span><code><span class="k">def</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>
1083
1089
  <span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
1084
1090
  <span class="sd"> Provide projects, instance types, and software package data.</span>
1085
1091
 
1086
1092
  <span class="sd"> Keyword Args:</span>
1087
1093
  <span class="sd"> force: (bool) If `True`, then force the system to fetch fresh data -- Defaults to `False`.</span>
1094
+ <span class="sd"> instances_filter: (str) complex RHS string query ex:</span>
1095
+ <span class="sd"> &quot;cpu=gte:8:int,operating_system=ne:windows,gpu.gpu_count=eq:1:int&quot;</span>
1088
1096
 
1089
1097
  <span class="sd"> Raises:</span>
1090
1098
  <span class="sd"> ValueError: Module was not initialized with [init()](/data/#ciocore.data.init).</span>
@@ -1146,7 +1154,7 @@ the software available at Conductor, or a subset based on specified products.</p
1146
1154
  <span class="c1"># PROJECTS</span>
1147
1155
  <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>
1148
1156
  <span class="c1"># INST_TYPES</span>
1149
- <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>
1157
+ <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>
1150
1158
  <span class="c1"># SOFTWARE</span>
1151
1159
  <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>
1152
1160
 
@@ -1233,10 +1233,6 @@ PackageTree </code>
1233
1233
  <span class="k">def</span> <span class="fm">__bool__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
1234
1234
  <span class="k">return</span> <span class="kc">True</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_tree</span><span class="p">[</span><span class="s2">&quot;children&quot;</span><span class="p">]</span> <span class="k">else</span> <span class="kc">False</span>
1235
1235
 
1236
- <span class="k">def</span> <span class="nf">__nonzero__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
1237
- <span class="c1"># Python 2.7</span>
1238
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="fm">__bool__</span><span class="p">()</span>
1239
-
1240
1236
  <span class="k">def</span> <span class="nf">as_dict</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
1241
1237
  <span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
1242
1238
  <span class="sd"> Returns:</span>
@@ -2090,7 +2086,6 @@ appropriate UI.</p>
2090
2086
 
2091
2087
 
2092
2088
 
2093
-
2094
2089
  <div class="doc doc-object doc-method">
2095
2090
 
2096
2091