hcs-core 0.1.291__py3-none-any.whl → 0.1.292__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.
hcs_core/__init__.py CHANGED
@@ -1 +1 @@
1
- __version__ = "0.1.291"
1
+ __version__ = "0.1.292"
@@ -89,9 +89,7 @@ def get(name: str):
89
89
  if name:
90
90
  data = profile.get(name)
91
91
  if data is None:
92
- panic(
93
- "Profile not found. Use 'hcs profile list' to show available profiles, or 'hcs profile init' to create one."
94
- )
92
+ panic("Profile not found. Use 'hcs profile list' to show available profiles, or 'hcs profile init' to create one.")
95
93
  else:
96
94
  data = profile.current()
97
95
  if data is None:
@@ -74,9 +74,7 @@ sort = click.option(
74
74
  help="Ascending/Descending. Format is property,{asc|desc} and default is ascending",
75
75
  )
76
76
 
77
- limit = click.option(
78
- "--limit", "-l", type=int, required=False, default=100, help="Optionally, specify the number of records to fetch."
79
- )
77
+ limit = click.option("--limit", "-l", type=int, required=False, default=100, help="Optionally, specify the number of records to fetch.")
80
78
 
81
79
  ids = click.option(
82
80
  "--ids",
@@ -101,9 +99,7 @@ first = click.option(
101
99
 
102
100
  force = click.option("--force/--grace", type=bool, default=True, help="Specify deletion mode: forceful, or graceful.")
103
101
 
104
- confirm = click.option(
105
- "--confirm/--prompt", "-y", type=bool, default=False, help="Confirm the operation without prompt."
106
- )
102
+ confirm = click.option("--confirm/--prompt", "-y", type=bool, default=False, help="Confirm the operation without prompt.")
107
103
 
108
104
 
109
105
  def formatter(custom_fn):
@@ -100,9 +100,7 @@ def strict_dict_to_class(data: dict, class_type):
100
100
  value = strict_dict_to_class(value, field_type)
101
101
  setattr(inst, field_name, value)
102
102
  continue
103
- raise ValueError(
104
- f"Field '{class_type.__name__}.{field_name}' has an incorrect type. Declared: {field_type}, actual: {type(value)}"
105
- )
103
+ raise ValueError(f"Field '{class_type.__name__}.{field_name}' has an incorrect type. Declared: {field_type}, actual: {type(value)}")
106
104
  return inst
107
105
 
108
106
 
@@ -341,9 +339,7 @@ def resolve_expression(expr, fn_get_value, referencing_attr_path) -> Tuple[Any,
341
339
  f"Invalid variable value for expression. Expect list, actual {type(target_value).__name__}. attr_path={referencing_attr_path}, src_var_name={src_var_name}"
342
340
  )
343
341
  if not mapped_value.startswith(tmp_var_name + "."):
344
- raise CtxpException(
345
- f"Unsupported expression. attr_path={referencing_attr_path}, src_var_name={src_var_name}"
346
- )
342
+ raise CtxpException(f"Unsupported expression. attr_path={referencing_attr_path}, src_var_name={src_var_name}")
347
343
  new_attr_path = mapped_value[len(tmp_var_name) + 1 :]
348
344
  ret = []
349
345
  for i in target_value:
hcs_core/ctxp/duration.py CHANGED
@@ -2,9 +2,7 @@
2
2
 
3
3
  import re
4
4
 
5
- PATTERN = (
6
- "([-+]?)P(?:([-+]?[0-9]+)D)?(T(?:([-+]?[0-9]+)H)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)(?:[.,]([0-9]{0,9}))?S)?)?"
7
- )
5
+ PATTERN = "([-+]?)P(?:([-+]?[0-9]+)D)?(T(?:([-+]?[0-9]+)H)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)(?:[.,]([0-9]{0,9}))?S)?)?"
8
6
 
9
7
  # Examples
10
8
 
hcs_core/ctxp/logger.py CHANGED
@@ -21,7 +21,9 @@ from logging.handlers import RotatingFileHandler
21
21
  import coloredlogs
22
22
 
23
23
  LOG_FORMAT_SIMPLE = "%(levelname).4s %(asctime)s %(name)-16s %(message)s"
24
- LOG_FORMAT_LONG = "%(color_on)s%(asctime)s.%(msecs)03d [%(process)-5d:%(threadName)-12s] %(levelname)-7s [%(name)-16s] %(message)s%(color_off)s"
24
+ LOG_FORMAT_LONG = (
25
+ "%(color_on)s%(asctime)s.%(msecs)03d [%(process)-5d:%(threadName)-12s] %(levelname)-7s [%(name)-16s] %(message)s%(color_off)s"
26
+ )
25
27
  DATE_FORMAT_SIMPLE = "%H:%M:%S"
26
28
 
27
29
 
@@ -133,9 +135,7 @@ def setup(
133
135
  )
134
136
 
135
137
 
136
- def setup_console_output(
137
- logger, console_log_output, console_log_level, console_log_color, console_log_mask, log_line_template, date_fmt
138
- ):
138
+ def setup_console_output(logger, console_log_output, console_log_level, console_log_color, console_log_mask, log_line_template, date_fmt):
139
139
  if not date_fmt:
140
140
  date_fmt = coloredlogs.DEFAULT_DATE_FORMAT
141
141
  coloredlogs.install(
hcs_core/ctxp/profile.py CHANGED
@@ -82,9 +82,7 @@ def current(reload: bool = False, exit_on_failure: bool = True, exclude_secret:
82
82
  data = get(profile_name, reload)
83
83
 
84
84
  if data is None and exit_on_failure:
85
- panic(
86
- "Profile not set. Use 'hcs profile use [profile-name]' to choose one, or use 'hcs profile init' to create default profiles."
87
- )
85
+ panic("Profile not set. Use 'hcs profile use [profile-name]' to choose one, or use 'hcs profile init' to create default profiles.")
88
86
 
89
87
  if exclude_secret:
90
88
  data = dotdict(dict(data))
hcs_core/ctxp/recent.py CHANGED
@@ -31,7 +31,7 @@ def all():
31
31
  return _recent
32
32
 
33
33
 
34
- def require(provided, k: str):
34
+ def require(k: str, provided):
35
35
  if not k:
36
36
  raise Exception("Missing 'key' in recent.require(current, key).")
37
37
 
@@ -12,6 +12,7 @@ log = logging.getLogger(__name__)
12
12
 
13
13
  _record = None
14
14
  _enabled = None
15
+ _version = None
15
16
 
16
17
 
17
18
  def disable():
@@ -26,6 +27,19 @@ def _is_disabled():
26
27
  return not _enabled
27
28
 
28
29
 
30
+ def _get_version():
31
+ global _version
32
+ if _version is None:
33
+ try:
34
+ from importlib.metadata import version
35
+
36
+ _version = version("hcs-cli")
37
+ except Exception as e:
38
+ log.debug(f"Failed to get hcs-cli version: {e}")
39
+ _version = "unknown"
40
+ return _version
41
+
42
+
29
43
  def start(cmd_path: str, params: dict):
30
44
  if _is_disabled():
31
45
  return
@@ -38,6 +52,7 @@ def start(cmd_path: str, params: dict):
38
52
  "return": -1,
39
53
  "error": None,
40
54
  "time_ms": -1,
55
+ "version": _get_version(),
41
56
  "env": {
42
57
  "python_version": sys.version,
43
58
  "platform": sys.platform,
@@ -79,10 +94,9 @@ def _injest(doc):
79
94
  headers={"Content-Type": "application/json"},
80
95
  content=json.dumps(doc),
81
96
  timeout=4,
97
+ verify=False,
82
98
  )
83
99
  response.raise_for_status()
84
100
  except Exception as e:
85
101
  log.debug(f"Telemetry ingestion failed: {e}", exc_info=True)
86
102
  return
87
-
88
- log.debug(f"Telemetry ingestion successful: {response.status_code}")
hcs_core/ctxp/util.py CHANGED
@@ -125,7 +125,7 @@ def print_output(data: Any, args: dict, file=sys.stdout):
125
125
 
126
126
 
127
127
  def print_error(error):
128
- critical_errors = [KeyError, TypeError]
128
+ critical_errors = [KeyError, TypeError, AttributeError, ValueError]
129
129
  for ex in critical_errors:
130
130
  if isinstance(error, ex):
131
131
  traceback.print_exception(type(error), error, error.__traceback__, file=sys.stderr)
hcs_core/plan/core.py CHANGED
@@ -41,19 +41,13 @@ def _prepare_data(data: dict, additional_context: dict, target_resource_name: st
41
41
  data.update(additional_context)
42
42
  blueprint, pending = process_template(data)
43
43
 
44
- if (
45
- target_resource_name
46
- and target_resource_name not in blueprint["resource"]
47
- and target_resource_name not in blueprint["runtime"]
48
- ):
44
+ if target_resource_name and target_resource_name not in blueprint["resource"] and target_resource_name not in blueprint["runtime"]:
49
45
  raise PlanException("Target resource or runtime not found: " + target_resource_name)
50
46
 
51
47
  for k, v in pending.items():
52
48
  if v.startswith("default.") or v.startswith("var."):
53
49
  if not k.find(".conditions."):
54
- raise PlanException(
55
- f"Invalid blueprint. Unresolved static references. Variable not found: {v}. Required by {k}"
56
- )
50
+ raise PlanException(f"Invalid blueprint. Unresolved static references. Variable not found: {v}. Required by {k}")
57
51
  deployment_id = blueprint["deploymentId"]
58
52
  state_file = deployment_id + ".state.yml"
59
53
  prev = data_util.load_data_file(state_file, default={})
@@ -291,9 +285,7 @@ def _deploy_res(name, res, state):
291
285
  else:
292
286
  new_state = handler.update(res_data, res_state)
293
287
  else:
294
- raise PlanException(
295
- f"Unknown action. This is a problem of the concrete plugin.decide function. Plugin={name}, action={action}"
296
- )
288
+ raise PlanException(f"Unknown action. This is a problem of the concrete plugin.decide function. Plugin={name}, action={action}")
297
289
 
298
290
  if new_state:
299
291
  fn_set_state(new_state)
hcs_core/sglib/auth.py CHANGED
@@ -38,9 +38,9 @@ def _is_auth_valid(auth_data):
38
38
  _login_lock = threading.Lock()
39
39
 
40
40
 
41
- def login(force_refresh: bool = False):
41
+ def login(force_refresh: bool = False, verbose: bool = False):
42
42
  """Ensure login state, using credentials from the current profile. Return oauth token."""
43
- return _populate_token_with_cache(profile.current().csp, force_refresh)
43
+ return _populate_token_with_cache(profile.current().csp, force_refresh, verbose)
44
44
 
45
45
 
46
46
  def refresh_oauth_token(old_oauth_token: dict, csp_url: str):
@@ -98,17 +98,22 @@ def save_auth_cache(auth_config: dict, token: dict):
98
98
  profile.auth.set(cache)
99
99
 
100
100
 
101
- def _populate_token_with_cache(auth_config: dict, force_refresh: bool = False):
102
-
101
+ def _populate_token_with_cache(auth_config: dict, force_refresh: bool = False, verbose: bool = False):
102
+ if verbose:
103
+ print("_populate_token_with_cache")
103
104
  with _login_lock:
104
105
  cache, hash, token = _get_auth_cache(auth_config)
105
106
  if token and not force_refresh:
107
+ if verbose:
108
+ print("Using cached auth token.")
106
109
  return token
107
110
 
108
111
  # invalid token. Refresh or recreate it.
109
112
  if token:
110
113
  # try using refresh token if possible
111
114
  if auth_config.get("provider", "vmwarecsp") == "vmwarecsp":
115
+ if verbose:
116
+ print("Provider: vmwarecsp.")
112
117
  try:
113
118
  token = refresh_oauth_token(token, auth_config.url)
114
119
  except Exception as e:
@@ -116,11 +121,17 @@ def _populate_token_with_cache(auth_config: dict, force_refresh: bool = False):
116
121
  token = None
117
122
  else:
118
123
  # hcs auth-service. Does not support refresh token.
124
+ if verbose:
125
+ print("Provider: hcs auth-service.")
119
126
  token = None
120
127
 
121
128
  if not token:
122
129
  if _has_credential(auth_config):
130
+ if verbose:
131
+ print("Config:", auth_config)
123
132
  token = CspClient.create(**auth_config).oauth_token()
133
+ if verbose:
134
+ print("Token:", json.dumps(token, indent=4))
124
135
  else:
125
136
  if auth_config.get("browser"):
126
137
  from .login_support import login_via_browser
@@ -129,9 +140,7 @@ def _populate_token_with_cache(auth_config: dict, force_refresh: bool = False):
129
140
  if not token:
130
141
  raise CtxpException("Browser auth failed.")
131
142
  else:
132
- raise CtxpException(
133
- "Browser auth was never attempted and no client credentials or API token provided."
134
- )
143
+ raise CtxpException("Browser auth was never attempted and no client credentials or API token provided.")
135
144
 
136
145
  if not token.get("expires_at"):
137
146
  token["expires_at"] = int(time.time() + token["expires_in"])
@@ -32,19 +32,31 @@ _caches = {}
32
32
  _client_instance_lock = threading.RLock()
33
33
 
34
34
 
35
- def _lazy_init(
36
- service_name: str, hdc: str = None, region: str = None
37
- ): # make it deferred so no need to initialize profile
38
- if region and hdc:
39
- raise Exception("region and hdc cannot be specified at the same time.")
40
-
41
- # check per-service override in profile
35
+ def _get_service_override(service_name: str):
42
36
  profile_data = profile.current()
43
37
  override = profile_data.get("override", {})
44
38
  service_override = {}
45
39
  for k, v in override.items():
46
40
  if service_name == k.lower():
47
41
  service_override = v
42
+
43
+ if not service_override:
44
+ if service_name == "org-service":
45
+ service_override = override.get("org", {})
46
+ elif service_name.find("-") >= 0:
47
+ camel_name = "".join(word.capitalize() for word in service_name.split("-"))
48
+ camel_name = camel_name[0].lower() + camel_name[1:]
49
+ service_override = override.get(camel_name, {})
50
+ return service_override
51
+
52
+
53
+ def _lazy_init(service_name: str, hdc: str = None, region: str = None): # make it deferred so no need to initialize profile
54
+ if region and hdc:
55
+ raise Exception("region and hdc cannot be specified at the same time.")
56
+
57
+ profile_data = profile.current()
58
+
59
+ service_override = _get_service_override(service_name)
48
60
  service_override_url = service_override.get("url")
49
61
  if service_override_url:
50
62
  log.debug(f"Using per-service override for {service_name}: {service_override_url}")
@@ -83,7 +95,7 @@ def _lazy_init(
83
95
  if provider == "vmwarecsp":
84
96
  token_url = profile_data.csp.url
85
97
  elif provider == "auth-service":
86
- token_url = profile_data.auth.tokenUrl
98
+ token_url = profile_data.auth["tokenUrl"]
87
99
  else:
88
100
  raise CtxpException(f"Unknown provider: {provider}. Supported providers: vmwarecsp, auth-service.")
89
101
 
@@ -164,9 +176,13 @@ def regional_service_client(service_name: str, region: str = None):
164
176
  return instance
165
177
 
166
178
 
167
- def service_client(service_name: str, region: str = None, hdc: str = None):
179
+ def is_regional_service(service_name: str):
168
180
  regional_services = ["vmhub", "connection-service"]
169
- if service_name in regional_services:
181
+ return service_name in regional_services
182
+
183
+
184
+ def service_client(service_name: str, region: str = None, hdc: str = None):
185
+ if is_regional_service(service_name):
170
186
  return regional_service_client(service_name, region)
171
187
  else:
172
188
  return hdc_service_client(service_name, hdc)
@@ -358,9 +374,7 @@ def wait_for_res_status(
358
374
  if is_ready(status):
359
375
  return t
360
376
  if not is_transition(status):
361
- raise CtxpException(
362
- prefix + f"Unexpected status: {status}. If this is a transition, add it to status_map['transition']."
363
- )
377
+ raise CtxpException(prefix + f"Unexpected status: {status}. If this is a transition, add it to status_map['transition'].")
364
378
 
365
379
  now = time.time()
366
380
  remaining_seconds = timeout_seconds - (now - start)
hcs_core/sglib/csp.py CHANGED
@@ -112,9 +112,7 @@ class CspClient:
112
112
  "Accept": "application/json",
113
113
  }
114
114
  # <no org id for this API>
115
- resp = self._client.post(
116
- "/csp/gateway/am/api/auth/api-tokens/authorize", headers=headers, data=f"api_token={api_token}"
117
- )
115
+ resp = self._client.post("/csp/gateway/am/api/auth/api-tokens/authorize", headers=headers, data=f"api_token={api_token}")
118
116
  self._oauth_token = resp.json()
119
117
  return self._oauth_token
120
118
 
@@ -64,7 +64,7 @@ _auth_success_html = """
64
64
  <h3>You have successfully logged into VMware Horizon Cloud Service.</h3>
65
65
  <p>You can close this window, and return to the terminal.</p>
66
66
  <br/>
67
- <p><a href="https://github.com/euc-eng/hcs-cli">HCS CLI</a> is in beta phase. <a href="https://github.com/euc-eng/hcs-cli/blob/main/doc/hcs-cli-cheatsheet.md">Cheatsheet</a>:</p>
67
+ <p><a href="https://github.com/euc-eng/hcs-cli/blob/dev/README.md">HCS CLI</a> is in beta. <a href="https://github.com/euc-eng/hcs-cli/blob/main/doc/hcs-cli-cheatsheet.md">Cheatsheet</a>:</p>
68
68
  <code>
69
69
  # To get the login details: <br/>
70
70
  hcs login -d <br/><br/>
hcs_core/util/job_view.py CHANGED
@@ -153,9 +153,7 @@ class JobView:
153
153
  _MyPlainBarColumn(),
154
154
  # TextColumn("[white][progress.percentage][white]{task.percentage:>3.0f}%"),
155
155
  # TaskProgressColumn(show_speed=True),
156
- TimeRemainingColumn(
157
- compact=True, elapsed_when_finished=True, table_column=Column(style="white", min_width=5)
158
- ),
156
+ TimeRemainingColumn(compact=True, elapsed_when_finished=True, table_column=Column(style="white", min_width=5)),
159
157
  TextColumn("{task.fields[details]}", table_column=Column(max_width=msg_width, no_wrap=True)),
160
158
  get_time=monotonic,
161
159
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hcs-core
3
- Version: 0.1.291
3
+ Version: 0.1.292
4
4
  Summary: Horizon Cloud Service CLI module.
5
5
  Project-URL: Homepage, https://github.com/euc-eng/hcs-cli
6
6
  Project-URL: Bug Tracker, https://github.com/euc-eng/hcs-cli/issues
@@ -14,29 +14,29 @@ Classifier: License :: OSI Approved :: MIT License
14
14
  Classifier: Operating System :: OS Independent
15
15
  Classifier: Programming Language :: Python :: 3
16
16
  Requires-Python: >=3.9
17
- Requires-Dist: authlib>=1.2.1
18
- Requires-Dist: click>=8.1.7
17
+ Requires-Dist: authlib>=1.6.0
18
+ Requires-Dist: click>=8.2.1
19
19
  Requires-Dist: coloredlogs>=15.0.1
20
- Requires-Dist: cryptography>=42.0.7
21
- Requires-Dist: graphviz>=0.20.3
22
- Requires-Dist: httpx>=0.27.0
23
- Requires-Dist: packaging>=24.0
24
- Requires-Dist: portalocker>=2.8.2
25
- Requires-Dist: psutil>=5.9.4
26
- Requires-Dist: pydantic>=2.0.0
27
- Requires-Dist: pyjwt>=2.8.0
28
- Requires-Dist: pyopenssl>=24.1.0
29
- Requires-Dist: python-dotenv>=1.1.0
20
+ Requires-Dist: cryptography>=45.0.5
21
+ Requires-Dist: graphviz>=0.21
22
+ Requires-Dist: httpx>=0.28.0
23
+ Requires-Dist: packaging>=25.0
24
+ Requires-Dist: portalocker>=3.0.0
25
+ Requires-Dist: psutil>=7.0.0
26
+ Requires-Dist: pydantic>=2.11.7
27
+ Requires-Dist: pyjwt>=2.10.1
28
+ Requires-Dist: pyopenssl>=25.1.0
29
+ Requires-Dist: python-dotenv>=1.1.1
30
30
  Requires-Dist: pyyaml>=6.0.1
31
31
  Requires-Dist: questionary>=2.0.1
32
- Requires-Dist: rel>=0.4.7
32
+ Requires-Dist: rel>=0.4.9.20
33
33
  Requires-Dist: retry>=0.9.2
34
- Requires-Dist: rich>=13.7.1
34
+ Requires-Dist: rich>=14.0.0
35
35
  Requires-Dist: schedule>=1.1.0
36
36
  Requires-Dist: setuptools>=70.0.0
37
37
  Requires-Dist: tabulate>=0.9.0
38
38
  Requires-Dist: websocket-client>=1.2.3
39
- Requires-Dist: yumako>=0.1.24
39
+ Requires-Dist: yumako>=0.1.27
40
40
  Provides-Extra: dev
41
41
  Requires-Dist: bandit; extra == 'dev'
42
42
  Requires-Dist: black; extra == 'dev'
@@ -1,38 +1,38 @@
1
- hcs_core/__init__.py,sha256=1PgTXNmb94tyX4Pa6zSym0_9Tm6BtnUjJhJ07IaM7HQ,24
1
+ hcs_core/__init__.py,sha256=rlrcis_5gp71WIO25TttG61HHOEXX3DQr5w9DNXq-Fo,24
2
2
  hcs_core/ctxp/__init__.py,sha256=bHVHhJP10Luz1a3Kk3zFx14dAO4SY6Q20Lrv8rNWWGc,1075
3
3
  hcs_core/ctxp/_init.py,sha256=QCIAHCue6KZQ-gq-dcxHsGW5QQQmhuGgBUm_E9x_Beg,2885
4
- hcs_core/ctxp/cli_options.py,sha256=j4LUukG1k6etJFATb8mGXvqB7DiEC-VOP23w7KVO9sY,2751
4
+ hcs_core/ctxp/cli_options.py,sha256=cwlUgYXzIie9eRcu8fkBo_iFvC8LhflKGblWYtM2Hto,2739
5
5
  hcs_core/ctxp/cli_processor.py,sha256=pVfMLAJne34YY2EYz_Tz-8yUxUry60gooGm6EFPIieM,7652
6
6
  hcs_core/ctxp/cmd_util.py,sha256=_-VwQSmkfi52qWC3uHQI06mSiIPfsZroDruTDYHXiMA,3119
7
7
  hcs_core/ctxp/config.py,sha256=vRdzPxi3Yrt04cnR6b5mJwEOtYBh21qvmlSSsgyGoI4,931
8
8
  hcs_core/ctxp/context.py,sha256=y0ouOzXyYTg9MOuWjzjls9WfOKYaO31_MGJJ2S-Y9p4,3375
9
- hcs_core/ctxp/data_util.py,sha256=ODVts-Hy8zB76dGv0KaPYVoVqqh214H3l_Ux7B1HOKA,14985
9
+ hcs_core/ctxp/data_util.py,sha256=PECaLaAQoqTyuYILXm1Deg5iL96tBxgiBhggp-f-qVE,14933
10
10
  hcs_core/ctxp/dispatcher.py,sha256=GAK-jGXDpyX0C88oRDtDi4yeM0qlvID96k98z_vqJkg,2261
11
- hcs_core/ctxp/duration.py,sha256=xmAw-nKnul3VeSXzvbGZ-W2ByBwyK23KxLLm3_aFW_M,2117
11
+ hcs_core/ctxp/duration.py,sha256=_0mt8Ng5mzNzEdSXkOqExPOzQcw8HkQDUH_hwt5CMLM,2109
12
12
  hcs_core/ctxp/extension.py,sha256=UqlDCXJMRKXcoceVak8hVGI_7HggjUWYSgKOFbGVetU,1636
13
13
  hcs_core/ctxp/fn_util.py,sha256=bEYmj5WgUkRE5S4oQjT_zutuViXWYU9q5MR-MlTA_bY,1573
14
14
  hcs_core/ctxp/fstore.py,sha256=lU6et0-w_QPYpQNjdA0QGEdnn7lsmBVuw9XbDvLjwso,8977
15
15
  hcs_core/ctxp/jsondot.py,sha256=U2_ToR8j3-hex75X3OSqTgADiw5cqjRDVO38-IbvapM,11369
16
- hcs_core/ctxp/logger.py,sha256=6Sh1WXUrjrQNU7K6zUlBzE34fIS6o6oMU3eqSknUOEo,6321
17
- hcs_core/ctxp/profile.py,sha256=JgDhRQD00p4jIsiTEjDzpRfKyicA-TgAheXxMBiNCvw,7766
16
+ hcs_core/ctxp/logger.py,sha256=xujPlxw7JGimI_u_sMXnqTOhOTCtrXzpc7501k3Dgm4,6323
17
+ hcs_core/ctxp/profile.py,sha256=X9ZT3mV-0PwRaieQp58dfmL6-KTj0exthppnhipp6uk,7744
18
18
  hcs_core/ctxp/profile_store.py,sha256=v4RvKSaKSJhAt5rEGbC6v-NfaI3N67YffPm-qlrQWdg,1566
19
- hcs_core/ctxp/recent.py,sha256=uKSEdU4L2szbyl-5nYLa3bigZSvSPW8G24Tuk_wYMck,1797
19
+ hcs_core/ctxp/recent.py,sha256=ER1HASPRm1k_3MIO-WVbj2vGipY565ZpBlmo-_V3vjo,1797
20
20
  hcs_core/ctxp/state.py,sha256=gjcMRVONKBq7WiFQo-xca1726ngZe90mnPrF3vbXDrU,1634
21
21
  hcs_core/ctxp/task_schd.py,sha256=mvZMeKDSSo2p7VidSoZY1XZj433TQn_YF9SGJEzl9lg,4586
22
- hcs_core/ctxp/telemetry.py,sha256=edT8i2OxiWvjJgUV2heUIkNtEznYG11U23mNWwQHFN8,2161
22
+ hcs_core/ctxp/telemetry.py,sha256=IpJF-BGqU_2nlZm2nfKzpSPwTQQPX_BESMIzR3nH3EM,2483
23
23
  hcs_core/ctxp/template_util.py,sha256=XslvIuRBlTVsUW0Y9M_D8gUPc1jWq6X2p4At2VAe1KU,731
24
24
  hcs_core/ctxp/timeutil.py,sha256=RyRrIRdFHbIghdB8wbC8VdABvc7hki2v51b1x2JvHgo,445
25
- hcs_core/ctxp/util.py,sha256=BUcbe-IkhtkU6jFdYD4fXNkq7fAAgXyhl--67bIeXz4,11588
25
+ hcs_core/ctxp/util.py,sha256=4vnaItrdkxCqMTdBf5bKDJ9dSSX9sraSP9XjGRq6xpU,11616
26
26
  hcs_core/ctxp/var_template.py,sha256=cTjj1UJ58ac6s5z4Oh5hSDQwKixq-rdbCF1D8akjAo0,3219
27
27
  hcs_core/ctxp/built_in_cmds/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
28
28
  hcs_core/ctxp/built_in_cmds/_ut.py,sha256=e50XBmPim2qRe0RYk_XAuRz1HWYyLJuMu-6dVxWR_fQ,3356
29
29
  hcs_core/ctxp/built_in_cmds/context.py,sha256=bU-BG60DyA8rpv1sw3LpHnPQb1wQiZQCoIMYLW_g5_c,2389
30
- hcs_core/ctxp/built_in_cmds/profile.py,sha256=XjFEIPBAgLJjOQpAPqL-HtTmycWZEps2_S6yY-0wT-k,4401
30
+ hcs_core/ctxp/built_in_cmds/profile.py,sha256=xTIHziDniMd-BXH2XymtP1HB4K9fkkU8STtLVqDuY1Y,4371
31
31
  hcs_core/plan/__init__.py,sha256=5klVuXXLQLn2Hj6Gz2Hc-1XSyDXKE9o-BjQ82oXekiI,465
32
32
  hcs_core/plan/actions.py,sha256=UvCynzApJUxi39HUoPIQ_uownlbvFbJ4aAs6pmulrLY,125
33
33
  hcs_core/plan/base_provider.py,sha256=CSJFN8lopWTUblw8CW78Epnef9BbJVLhPLk9bPfZceM,1299
34
34
  hcs_core/plan/context.py,sha256=5NI5Otk0jGKtBGvO8Sc1xdOHUCu_lXQYNrSctT3Hyq8,116
35
- hcs_core/plan/core.py,sha256=1hZ9Y8ltEFGAT1MbbxpxLSwMU3TwEEEcbRJeO_KrZ-Y,21722
35
+ hcs_core/plan/core.py,sha256=HI9uhZBzxngMTvum2GwzgLpx8bEe6M3JgAxl5CiJywU,21622
36
36
  hcs_core/plan/dag.py,sha256=pyyoMSmbhCsS8BMZI6hW6YDkHqBgjmJOwys9CUDrIts,12926
37
37
  hcs_core/plan/helper.py,sha256=__b8tlzLBT1Rm3vgiS-pWnZImaoZbsmKSRJtt_1gj8E,7763
38
38
  hcs_core/plan/kop.py,sha256=iDnRbYHFCtS3Rs95UVvRgZdSzs-NMwdyr8SztIQQqyg,5774
@@ -42,14 +42,14 @@ hcs_core/plan/provider/dev/_prepare.py,sha256=PvVnheEQwpj8sWYz2lDONQVTs4pHPYuo2c
42
42
  hcs_core/plan/provider/dev/dummy.py,sha256=zKEr9J4WHhlN5gFdmrFyEfCF0xlQlCJg0CC1dG9VaLA,1958
43
43
  hcs_core/plan/provider/dev/fibonacci.py,sha256=8WhDr5c9harNAlVPZomQJEqbWe0hUqbppO6ZkwEUcJ0,1104
44
44
  hcs_core/sglib/__init__.py,sha256=oT0etW7vsEbHlXiGL5x23ZXyyFqeLi81RxQQ5lfKSV0,654
45
- hcs_core/sglib/auth.py,sha256=axgzgTRsXPHEo9VvZ6FLF2uitvFf8vVgHXc3ITTtgkM,6297
45
+ hcs_core/sglib/auth.py,sha256=x2LjNCOTf_OJYsNggTG2rVagnVartyDCOlK4lSpXfso,6773
46
46
  hcs_core/sglib/cli_options.py,sha256=NvdiHpX_o6IYPEM8cQYLb_R7T4aiXVvYLqn6Vk4Q2-Y,1761
47
- hcs_core/sglib/client_util.py,sha256=JvULJXwZzg0NBVEEfqbmiHA123KwGbWJevOO9X-0oj4,13551
48
- hcs_core/sglib/csp.py,sha256=o10XdRO1-vVzzgYcn8kvUJ6EMRsv6ruDh6Q_cqy4pvs,11013
47
+ hcs_core/sglib/client_util.py,sha256=t7zCldRRWt5f0l4TTRhmX-ZIaEm6MzNs_3B2RlwtXfk,14119
48
+ hcs_core/sglib/csp.py,sha256=UcO68YtLOPDQWiTjPVIPwQ2Z-Mywc-154aoIkLdyzwE,10991
49
49
  hcs_core/sglib/ez_client.py,sha256=_u9HvPXW5H8zDjaBr3bsTZqzveOlehq4EWDMeF_cwFY,8135
50
50
  hcs_core/sglib/hcs_client.py,sha256=pjrAVQDEy2tiQMypMpOzODFntT6aNHXjje8or_mkL2U,804
51
51
  hcs_core/sglib/init.py,sha256=w_0ZU70Q1TGbSZsqSi7ewKQqpExFlepOT7mIqH0wnho,310
52
- hcs_core/sglib/login_support.py,sha256=tSkfmThubbWDUFLfx0hzdHp_QW0TR3gYISzvw6FKpjs,7561
52
+ hcs_core/sglib/login_support.py,sha256=rHKZDAZXlo62IsjETyXxCSPxg1L4nV6ffZM_tulfe0A,7574
53
53
  hcs_core/sglib/payload_util.py,sha256=Hnj7rjzrQ1j5gpbrwZX34biN8MIZjy6dOJZ63ulmzdw,685
54
54
  hcs_core/sglib/requtil.py,sha256=O37DrD4VVBmmRkkHJLbDtPfFq8l6fLZwYZggt2FTEFc,920
55
55
  hcs_core/sglib/utils.py,sha256=FLgB8M5EiS3WhCzX5xUA9aFzB5jKQI8pqxtrmE4SsjQ,3164
@@ -58,12 +58,12 @@ hcs_core/util/check_license.py,sha256=-ZBMVoVcEUwICZ0QRK-e2uMMla7gFbjP9upun93lPE
58
58
  hcs_core/util/duration.py,sha256=e7Nw22aYXJK-pLM59QDel5atLZxShKBiVILFgrtLJks,4194
59
59
  hcs_core/util/exit.py,sha256=UStMZKlfCFN7GBouc1y3pPFGPFQ66qfcRZ_fYQXFD0E,838
60
60
  hcs_core/util/hcs_constants.py,sha256=Ic1Tx_UNJiQchfsdnRDzgiOaCjKHnsWXx997nElppm4,1755
61
- hcs_core/util/job_view.py,sha256=SsACAqHTXSCmKFDD0DDDNK2eKykGgjo_DlLw8CJbRxM,8408
61
+ hcs_core/util/job_view.py,sha256=-cSqZpVecfcUskG9RYqIXcgg7pj0W6dKDAy2Lt1CPik,8378
62
62
  hcs_core/util/pki_util.py,sha256=Lt3-IzIoGcaQKNE7KUszxR7JSZkpXduVZJ262TszsIs,6685
63
63
  hcs_core/util/query_util.py,sha256=5bh3bUVIQuY9qerndfuyfyzkTExYJ8zD0_e3PSN7y-4,3142
64
64
  hcs_core/util/scheduler.py,sha256=bPpCmGUL1UctJMfLPAg-h4Hl2YZr96FiI78-G_Usn08,2958
65
65
  hcs_core/util/ssl_util.py,sha256=MvU102fGwWWh9hhSmLnn1qQIWuD6TjZnN0iH0MXUtW0,1239
66
66
  hcs_core/util/versions.py,sha256=urMtShfoBx_Eqq0D-450LP0i-rW447k9yX8q8j5H_qA,1721
67
- hcs_core-0.1.291.dist-info/METADATA,sha256=McbzzbEMPScqLpfB7o7OUCNkQXJCGg05NojTKhAMb5o,1911
68
- hcs_core-0.1.291.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
69
- hcs_core-0.1.291.dist-info/RECORD,,
67
+ hcs_core-0.1.292.dist-info/METADATA,sha256=6vW-ZkE7bCyQBtm53Y1-faUcW_wvuaXiFcvWwjlIm0E,1914
68
+ hcs_core-0.1.292.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
69
+ hcs_core-0.1.292.dist-info/RECORD,,