yellowdog-python-examples 8.3.0__py3-none-any.whl → 8.3.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. yellowdog_cli/__init__.py +1 -1
  2. yellowdog_cli/abort.py +11 -11
  3. yellowdog_cli/admin.py +2 -2
  4. yellowdog_cli/boost.py +3 -3
  5. yellowdog_cli/cancel.py +9 -9
  6. yellowdog_cli/cloudwizard.py +4 -4
  7. yellowdog_cli/compare.py +6 -6
  8. yellowdog_cli/create.py +54 -52
  9. yellowdog_cli/delete.py +10 -10
  10. yellowdog_cli/download.py +15 -15
  11. yellowdog_cli/finish.py +9 -9
  12. yellowdog_cli/instantiate.py +19 -17
  13. yellowdog_cli/list.py +41 -41
  14. yellowdog_cli/provision.py +28 -28
  15. yellowdog_cli/remove.py +28 -26
  16. yellowdog_cli/resize.py +9 -9
  17. yellowdog_cli/show.py +25 -25
  18. yellowdog_cli/shutdown.py +9 -9
  19. yellowdog_cli/submit.py +29 -29
  20. yellowdog_cli/terminate.py +8 -8
  21. yellowdog_cli/upload.py +11 -11
  22. yellowdog_cli/utils/cloudwizard_aws.py +32 -32
  23. yellowdog_cli/utils/cloudwizard_azure.py +27 -27
  24. yellowdog_cli/utils/cloudwizard_common.py +12 -10
  25. yellowdog_cli/utils/cloudwizard_gcp.py +8 -8
  26. yellowdog_cli/utils/csv_data.py +7 -7
  27. yellowdog_cli/utils/entity_utils.py +20 -20
  28. yellowdog_cli/utils/follow_utils.py +5 -5
  29. yellowdog_cli/utils/interactive.py +8 -8
  30. yellowdog_cli/utils/load_config.py +11 -11
  31. yellowdog_cli/utils/load_resources.py +4 -4
  32. yellowdog_cli/utils/misc_utils.py +3 -3
  33. yellowdog_cli/utils/printing.py +10 -9
  34. yellowdog_cli/utils/provision_utils.py +2 -2
  35. yellowdog_cli/utils/settings.py +1 -0
  36. yellowdog_cli/utils/start_hold_common.py +7 -7
  37. yellowdog_cli/utils/submit_utils.py +5 -5
  38. yellowdog_cli/utils/upload_utils.py +3 -3
  39. yellowdog_cli/utils/variables.py +5 -5
  40. yellowdog_cli/utils/wrapper.py +7 -7
  41. {yellowdog_python_examples-8.3.0.dist-info → yellowdog_python_examples-8.3.1.dist-info}/METADATA +2 -2
  42. yellowdog_python_examples-8.3.1.dist-info/RECORD +65 -0
  43. yellowdog_python_examples-8.3.0.dist-info/RECORD +0 -65
  44. {yellowdog_python_examples-8.3.0.dist-info → yellowdog_python_examples-8.3.1.dist-info}/WHEEL +0 -0
  45. {yellowdog_python_examples-8.3.0.dist-info → yellowdog_python_examples-8.3.1.dist-info}/entry_points.txt +0 -0
  46. {yellowdog_python_examples-8.3.0.dist-info → yellowdog_python_examples-8.3.1.dist-info}/licenses/LICENSE +0 -0
  47. {yellowdog_python_examples-8.3.0.dist-info → yellowdog_python_examples-8.3.1.dist-info}/top_level.txt +0 -0
@@ -25,7 +25,7 @@ from yellowdog_cli.utils.misc_utils import (
25
25
  # Load additional environment variables as early as possible
26
26
  load_dotenv_file()
27
27
 
28
- from yellowdog_cli.utils.printing import print_error, print_log
28
+ from yellowdog_cli.utils.printing import print_error, print_info
29
29
  from yellowdog_cli.utils.property_names import *
30
30
  from yellowdog_cli.utils.settings import (
31
31
  CR_BATCH_SIZE_DEFAULT,
@@ -69,7 +69,7 @@ CONFIG_FILE = relpath(
69
69
 
70
70
  if ARGS_PARSER.no_config:
71
71
  # Suppress use of any TOML config file
72
- print_log(f"Configuration file ('{CONFIG_FILE}') ignored")
72
+ print_info(f"Configuration file ('{CONFIG_FILE}') ignored")
73
73
  CONFIG_TOML = {COMMON_SECTION: {}}
74
74
  CONFIG_FILE_DIR = os.getcwd()
75
75
 
@@ -82,7 +82,7 @@ else:
82
82
  VARIABLE_SUBSTITUTIONS.update(
83
83
  {"config_dir_abs": config_dir_abs, "config_dir_name": config_dir_short}
84
84
  )
85
- print_log(f"Loading configuration data from: '{CONFIG_FILE}'")
85
+ print_info(f"Loading configuration data from: '{CONFIG_FILE}'")
86
86
  CONFIG_TOML: Dict = load_toml_file_with_variable_substitutions(CONFIG_FILE)
87
87
  try:
88
88
  validate_properties(CONFIG_TOML, f"'{CONFIG_FILE}'")
@@ -95,7 +95,7 @@ else:
95
95
  print_error(e)
96
96
  exit(1)
97
97
  # No config file, so create a stub config dictionary
98
- print_log(
98
+ print_info(
99
99
  "No configuration file; expecting configuration data on command line "
100
100
  "or in environment variables"
101
101
  )
@@ -140,7 +140,7 @@ def load_config_common() -> ConfigCommon:
140
140
  ]:
141
141
  if args_parser_value is not None:
142
142
  common_section[key_name] = args_parser_value
143
- print_log(
143
+ print_info(
144
144
  f"Using '{key_name}' provided on command line "
145
145
  "(or automatically set)"
146
146
  )
@@ -149,27 +149,27 @@ def load_config_common() -> ConfigCommon:
149
149
  and os.environ.get(env_var_name, None) is not None
150
150
  ):
151
151
  common_section[key_name] = os.environ[env_var_name]
152
- print_log(f"Using '{key_name}' provided via the environment")
152
+ print_info(f"Using '{key_name}' provided via the environment")
153
153
 
154
154
  # Provide default values for namespace and tag
155
155
  if common_section.get(NAMESPACE, None) is None:
156
156
  common_section[NAMESPACE] = "default"
157
157
  if ARGS_PARSER.namespace_required:
158
- print_log(
158
+ print_info(
159
159
  "Using default value for 'namespace': "
160
160
  f"'{common_section[NAMESPACE]}'"
161
161
  )
162
162
  if common_section.get(NAME_TAG, None) is None:
163
163
  common_section[NAME_TAG] = "{{username}}"
164
164
  if ARGS_PARSER.tag_required:
165
- print_log(
165
+ print_info(
166
166
  "Using default value for 'tag/prefix/name' = "
167
167
  f"'{VARIABLE_SUBSTITUTIONS['username']}'"
168
168
  )
169
169
 
170
170
  url = process_variable_substitutions(common_section.get(URL, DEFAULT_URL))
171
171
  if url != DEFAULT_URL:
172
- print_log(f"Using the YellowDog API at: {url}")
172
+ print_info(f"Using the YellowDog API at: {url}")
173
173
 
174
174
  # Exhaustive variable processing for common section variables
175
175
  # Note that add_substitutions() will perform all possible
@@ -193,7 +193,7 @@ def load_config_common() -> ConfigCommon:
193
193
  if certificates is not None:
194
194
  certificates = abspath(certificates)
195
195
  requests_ca_bundle = "REQUESTS_CA_BUNDLE"
196
- print_log(
196
+ print_info(
197
197
  f"Setting environment variable '{requests_ca_bundle}' to '{certificates}'"
198
198
  )
199
199
  os.environ["REQUESTS_CA_BUNDLE"] = certificates
@@ -218,7 +218,7 @@ def load_config_common() -> ConfigCommon:
218
218
 
219
219
  def import_toml(filename: str) -> Dict:
220
220
  filename = relpath(join(CONFIG_FILE_DIR, process_variable_substitutions(filename)))
221
- print_log(f"Loading imported common configuration data from: '{filename}'")
221
+ print_info(f"Loading imported common configuration data from: '{filename}'")
222
222
  try:
223
223
  common_config: Dict = load_toml_file_with_variable_substitutions(filename)
224
224
  return common_config[COMMON_SECTION]
@@ -6,7 +6,7 @@ from sys import exit
6
6
  from typing import Dict, List
7
7
 
8
8
  from yellowdog_cli.utils.args import ARGS_PARSER
9
- from yellowdog_cli.utils.printing import print_log, print_warning
9
+ from yellowdog_cli.utils.printing import print_info, print_warning
10
10
  from yellowdog_cli.utils.settings import (
11
11
  RN_ALLOWANCE,
12
12
  RN_APPLICATION,
@@ -72,7 +72,7 @@ def load_resource_specifications(creation_or_update: bool = True) -> List[Dict]:
72
72
  for resource in resources_loaded:
73
73
  process_variable_substitutions_insitu(resource)
74
74
 
75
- print_log(
75
+ print_info(
76
76
  f"Including {len(resources_loaded)} resource(s) from '{resource_spec}'"
77
77
  )
78
78
  resources += resources_loaded
@@ -81,7 +81,7 @@ def load_resource_specifications(creation_or_update: bool = True) -> List[Dict]:
81
81
  exit(0)
82
82
 
83
83
  if len(ARGS_PARSER.resource_specifications) > 1:
84
- print_log(f"Including {len(resources)} resources in total")
84
+ print_info(f"Including {len(resources)} resources in total")
85
85
 
86
86
  return _resequence_resources(resources, creation_or_update=creation_or_update)
87
87
 
@@ -96,7 +96,7 @@ def _resequence_resources(
96
96
  """
97
97
 
98
98
  if ARGS_PARSER.no_resequence:
99
- print_log("Not re-sequencing the resource list")
99
+ print_info("Not re-sequencing the resource list")
100
100
  return resources
101
101
 
102
102
  if len(resources) == 1:
@@ -19,7 +19,7 @@ from yellowdog_client.model import (
19
19
  )
20
20
 
21
21
  from yellowdog_cli.utils.args import ARGS_PARSER
22
- from yellowdog_cli.utils.printing import print_log
22
+ from yellowdog_cli.utils.printing import print_info
23
23
  from yellowdog_cli.utils.settings import NAMESPACE_OBJECT_STORE_PREFIX_SEPARATOR
24
24
 
25
25
  UTCNOW = datetime.now(timezone.utc)
@@ -256,7 +256,7 @@ def load_dotenv_file():
256
256
  if dotenv_file == "":
257
257
  return
258
258
 
259
- print_log(
259
+ print_info(
260
260
  f"Loading environment variables from '{dotenv_file}' ("
261
261
  f"{'' if ARGS_PARSER.env_override else 'NOT '}OVERRIDING existing variables)"
262
262
  )
@@ -269,7 +269,7 @@ def load_dotenv_file():
269
269
  ]
270
270
 
271
271
  if len(dotenv_yd_substitutions) > 0:
272
- print_log(
272
+ print_info(
273
273
  "Adding 'YD' environment variable(s): "
274
274
  f"{', '.join(dotenv_yd_substitutions)}"
275
275
  )
@@ -98,7 +98,7 @@ except OSError:
98
98
  # Set up Rich formatting for coloured output
99
99
  class PrintLogHighlighter(RegexHighlighter):
100
100
  """
101
- Apply styles for print_log() lines.
101
+ Apply styles for print_info() lines.
102
102
  """
103
103
 
104
104
  base_style = "pyexamples."
@@ -196,7 +196,7 @@ def print_simple(
196
196
  CONSOLE.print(escape(log_message))
197
197
 
198
198
 
199
- def print_log(
199
+ def print_info(
200
200
  log_message: str = "",
201
201
  override_quiet: bool = False,
202
202
  no_fill: bool = False,
@@ -930,7 +930,7 @@ def print_numbered_object_list(
930
930
  if len(objects) == 0:
931
931
  return
932
932
 
933
- print_log(
933
+ print_info(
934
934
  "Displaying"
935
935
  f" {'all' if showing_all else 'matching'}"
936
936
  f" {(object_type_name if object_type_name is not None else get_type_name(objects[0]))}(s):",
@@ -1181,7 +1181,7 @@ def print_yd_object_list(
1181
1181
  """
1182
1182
 
1183
1183
  if ARGS_PARSER.output_file is not None:
1184
- print_log(f"Copying detailed resource list to '{ARGS_PARSER.output_file}'")
1184
+ print_info(f"Copying detailed resource list to '{ARGS_PARSER.output_file}'")
1185
1185
 
1186
1186
  if len(objects) > 1:
1187
1187
  print("[")
@@ -1208,7 +1208,7 @@ def print_worker_pool(
1208
1208
  """
1209
1209
  Reconstruct and print the JSON-formatted Worker Pool specification.
1210
1210
  """
1211
- print_log("Dry-run: Printing JSON Worker Pool specification")
1211
+ print_info("Dry-run: Printing JSON Worker Pool specification")
1212
1212
  wp_data = {
1213
1213
  "provisionedProperties": Json.dump(pwpp),
1214
1214
  "requirementTemplateUsage": Json.dump(crtu),
@@ -1248,9 +1248,9 @@ class WorkRequirementSnapshot:
1248
1248
  """
1249
1249
  Print the JSON representation.
1250
1250
  """
1251
- print_log("Dry-run: Printing JSON Work Requirement specification:")
1251
+ print_info("Dry-run: Printing JSON Work Requirement specification:")
1252
1252
  print_json(self.wr_data)
1253
- print_log("Dry-run: Complete")
1253
+ print_info("Dry-run: Complete")
1254
1254
 
1255
1255
 
1256
1256
  def print_compute_template_test_result(result: ComputeRequirementTemplateTestResult):
@@ -1258,7 +1258,7 @@ def print_compute_template_test_result(result: ComputeRequirementTemplateTestRes
1258
1258
  Print the results of a test submission of a Dynamic Compute Template.
1259
1259
  """
1260
1260
  if not isinstance(result, ComputeRequirementDynamicTemplateTestResult):
1261
- print_log("Reports are only available for Dynamic Templates")
1261
+ print_info("Reports are only available for Dynamic Templates")
1262
1262
  return
1263
1263
 
1264
1264
  report: BestComputeSourceReport = result.report
@@ -1410,6 +1410,7 @@ STATUS_COUNTS_INSTANCES = [
1410
1410
  ]
1411
1411
 
1412
1412
  STATUS_COUNTS_WORKERS = [
1413
+ StatusCount("BATCH_ALLOCATION"),
1413
1414
  StatusCount("DOING_TASK", True),
1414
1415
  StatusCount("STOPPED", True),
1415
1416
  StatusCount("SLEEPING"), # Should no longer see this state
@@ -1554,7 +1555,7 @@ def print_event(event: str, id_type: YDIDType):
1554
1555
  else:
1555
1556
  return
1556
1557
 
1557
- print_log(msg, no_fill=True)
1558
+ print_info(msg, no_fill=True)
1558
1559
 
1559
1560
 
1560
1561
  FIRST_OUTPUT_TO_FILE = True # Determine whether to 'write' or 'append'
@@ -13,7 +13,7 @@ from yellowdog_cli.utils.entity_utils import (
13
13
  find_image_name_or_id,
14
14
  )
15
15
  from yellowdog_cli.utils.load_config import CONFIG_FILE_DIR
16
- from yellowdog_cli.utils.printing import print_log
16
+ from yellowdog_cli.utils.printing import print_info
17
17
  from yellowdog_cli.utils.property_names import USERDATA, USERDATAFILE, USERDATAFILES
18
18
  from yellowdog_cli.utils.settings import WP_VARIABLES_POSTFIX, WP_VARIABLES_PREFIX
19
19
  from yellowdog_cli.utils.variables import (
@@ -92,7 +92,7 @@ def get_template_id(client: PlatformClient, template_id_or_name: str) -> str:
92
92
  f"Compute Requirement Template '{template_id_or_name}' not found"
93
93
  )
94
94
 
95
- print_log(
95
+ print_info(
96
96
  f"Substituting Compute Requirement Template name '{template_id_or_name}'"
97
97
  f" with ID {template_id}"
98
98
  )
@@ -56,6 +56,7 @@ JSON_INDENT = 2
56
56
  HIGHLIGHTED_STATES = [
57
57
  r"(?P<active>ALLOCATED)",
58
58
  r"(?P<active>DOING_TASK)",
59
+ r"(?P<active>BATCH_ALLOCATION)",
59
60
  r"(?P<active>EXECUTING)",
60
61
  r"(?P<active>EXPECTED)",
61
62
  r"(?P<active>PENDING)",
@@ -19,7 +19,7 @@ from yellowdog_cli.utils.entity_utils import (
19
19
  from yellowdog_cli.utils.follow_utils import follow_ids
20
20
  from yellowdog_cli.utils.interactive import confirmed, select
21
21
  from yellowdog_cli.utils.misc_utils import link_entity
22
- from yellowdog_cli.utils.printing import print_error, print_log, print_warning
22
+ from yellowdog_cli.utils.printing import print_error, print_info, print_warning
23
23
  from yellowdog_cli.utils.wrapper import ARGS_PARSER, CLIENT, CONFIG_COMMON
24
24
 
25
25
 
@@ -51,7 +51,7 @@ def _start_or_hold_work_requirements(
51
51
  names_or_ids=ARGS_PARSER.work_requirement_names,
52
52
  )
53
53
 
54
- print_log(
54
+ print_info(
55
55
  f"{action}ing Work Requirements in namespace "
56
56
  f"'{CONFIG_COMMON.namespace}' with "
57
57
  f"'{CONFIG_COMMON.name_tag}' in tag"
@@ -85,7 +85,7 @@ def _start_or_hold_work_requirements(
85
85
  CLIENT.work_client.get_work_requirement_by_id(work_summary.id)
86
86
  )
87
87
  count += 1
88
- print_log(
88
+ print_info(
89
89
  f"Applied {action} to "
90
90
  f"{link_entity(CONFIG_COMMON.url, work_requirement)} "
91
91
  f"('{work_summary.name}')"
@@ -97,12 +97,12 @@ def _start_or_hold_work_requirements(
97
97
  work_requirement_ids.append(work_summary.id)
98
98
 
99
99
  if count > 0:
100
- print_log(f"{action} applied to {count} Work Requirement(s)")
100
+ print_info(f"{action} applied to {count} Work Requirement(s)")
101
101
  else:
102
- print_log(f"No Work Requirements to {action}")
102
+ print_info(f"No Work Requirements to {action}")
103
103
 
104
104
  else:
105
- print_log(f"No Work Requirements available to {action}")
105
+ print_info(f"No Work Requirements available to {action}")
106
106
 
107
107
  return work_requirement_ids
108
108
 
@@ -142,7 +142,7 @@ def _start_or_hold_work_requirements_by_name_or_id(
142
142
 
143
143
  try:
144
144
  action_function(work_requirement_summary.id)
145
- print_log(f"Applied action '{action}' to Work Requirement '{name_or_id}'")
145
+ print_info(f"Applied action '{action}' to Work Requirement '{name_or_id}'")
146
146
  work_requirement_summaries.append(work_requirement_summary)
147
147
  except Exception as e:
148
148
  print_error(
@@ -22,7 +22,7 @@ from yellowdog_client.model import (
22
22
  )
23
23
 
24
24
  from yellowdog_cli.utils.config_types import ConfigCommon, ConfigWorkRequirement
25
- from yellowdog_cli.utils.printing import print_error, print_log, print_warning
25
+ from yellowdog_cli.utils.printing import print_error, print_info, print_warning
26
26
  from yellowdog_cli.utils.property_names import (
27
27
  DEPENDENCIES,
28
28
  DEPENDENT_ON,
@@ -187,7 +187,7 @@ class UploadedFiles:
187
187
  remote_file=uploaded_file_path,
188
188
  )
189
189
  else:
190
- print_log(
190
+ print_info(
191
191
  f"Dry-run: Would upload '{upload_file}' to"
192
192
  f" '{namespace}{NAMESPACE_OBJECT_STORE_PREFIX_SEPARATOR}{uploaded_file_path}'"
193
193
  )
@@ -245,7 +245,7 @@ class UploadedFiles:
245
245
  for uf in self._uploaded_files
246
246
  if uf.upload_namespace == namespace
247
247
  ]
248
- print_log(
248
+ print_info(
249
249
  f"Deleting {len(object_paths)} uploaded object(s) in "
250
250
  f"namespace '{namespace}'"
251
251
  )
@@ -288,7 +288,7 @@ def pause_between_batches(task_batch_size: int, batch_number: int, num_tasks: in
288
288
  )
289
289
 
290
290
  if ARGS_PARSER.pause_between_batches <= 0: # Manual delay
291
- print_log(
291
+ print_info(
292
292
  (
293
293
  f"Submitting batch number {batch_number + 1} ({task_range_str})"
294
294
  if first_batch
@@ -303,7 +303,7 @@ def pause_between_batches(task_batch_size: int, batch_number: int, num_tasks: in
303
303
  input()
304
304
 
305
305
  elif ARGS_PARSER.pause_between_batches > 0: # Automatic delay
306
- print_log(
306
+ print_info(
307
307
  f"Submitting batch number {batch_number + 1} ({task_range_str})"
308
308
  if first_batch
309
309
  else (
@@ -11,7 +11,7 @@ from yellowdog_client import PlatformClient
11
11
  from yellowdog_client.object_store.model import FileTransferStatus
12
12
 
13
13
  from yellowdog_cli.utils.misc_utils import link
14
- from yellowdog_cli.utils.printing import print_log
14
+ from yellowdog_cli.utils.printing import print_info
15
15
  from yellowdog_cli.utils.settings import NAMESPACE_OBJECT_STORE_PREFIX_SEPARATOR
16
16
 
17
17
 
@@ -107,7 +107,7 @@ def upload_file_core(
107
107
  if session.status != FileTransferStatus.Completed:
108
108
  raise Exception(f"Failed to upload file: {local_file}")
109
109
 
110
- print_log(
110
+ print_info(
111
111
  f"Uploaded file '{local_file}' to"
112
112
  f" '{namespace}{NAMESPACE_OBJECT_STORE_PREFIX_SEPARATOR}{remote_file}'"
113
113
  )
@@ -116,4 +116,4 @@ def upload_file_core(
116
116
  url,
117
117
  f"#/objects/{namespace}/{remote_file}?object=true",
118
118
  )
119
- print_log(f"Object URL: {link_}")
119
+ print_info(f"Object URL: {link_}")
@@ -22,7 +22,7 @@ from yellowdog_cli.utils.misc_utils import (
22
22
  remove_outer_delimiters,
23
23
  split_delimited_string,
24
24
  )
25
- from yellowdog_cli.utils.printing import print_error, print_json, print_log
25
+ from yellowdog_cli.utils.printing import print_error, print_info, print_json
26
26
  from yellowdog_cli.utils.property_names import *
27
27
  from yellowdog_cli.utils.settings import (
28
28
  ARRAY_TYPE_TAG,
@@ -79,7 +79,7 @@ for key, value in os.environ.items():
79
79
  subs_list.append(f"'{key}'")
80
80
 
81
81
  if len(subs_list) > 0:
82
- print_log(
82
+ print_info(
83
83
  "Adding environment-defined variable substitution(s) for: "
84
84
  f"{', '.join(subs_list)}"
85
85
  )
@@ -100,7 +100,7 @@ if ARGS_PARSER.variables is not None:
100
100
  exit(1) # Note: exception trap not yet in place
101
101
 
102
102
  if len(subs_list) > 0:
103
- print_log(
103
+ print_info(
104
104
  "Adding command-line-defined variable substitution(s) for: "
105
105
  f"{', '.join(subs_list)}"
106
106
  )
@@ -477,9 +477,9 @@ def load_jsonnet_file_with_variable_substitutions(
477
477
  process_variable_substitutions_insitu(dict_data, prefix, postfix)
478
478
 
479
479
  if ARGS_PARSER.jsonnet_dry_run:
480
- print_log(f"Dry-run: Printing Jsonnet to JSON conversion for '{filename}'")
480
+ print_info(f"Dry-run: Printing Jsonnet to JSON conversion for '{filename}'")
481
481
  print_json(dict_data)
482
- print_log("Dry-run: Complete")
482
+ print_info("Dry-run: Complete")
483
483
  if exit_on_dry_run:
484
484
  sys.exit(0)
485
485
 
@@ -13,7 +13,7 @@ from yellowdog_client.model import ApiKey, ServicesSchema
13
13
  from yellowdog_cli.utils.args import ARGS_PARSER
14
14
  from yellowdog_cli.utils.config_types import ConfigCommon
15
15
  from yellowdog_cli.utils.load_config import load_config_common
16
- from yellowdog_cli.utils.printing import print_error, print_log
16
+ from yellowdog_cli.utils.printing import print_error, print_info
17
17
 
18
18
  CONFIG_COMMON: ConfigCommon = load_config_common()
19
19
  CLIENT = PlatformClient.create(
@@ -42,17 +42,17 @@ def set_proxy():
42
42
 
43
43
  proxy_var = "HTTPS_PROXY"
44
44
  if CONFIG_COMMON.use_pac:
45
- print_log("Using Proxy Auto-Configuration (PAC)")
45
+ print_info("Using Proxy Auto-Configuration (PAC)")
46
46
  with pac_context_for_url(CONFIG_COMMON.url):
47
47
  https_proxy = os.getenv(proxy_var, None)
48
48
  if https_proxy is not None:
49
49
  os.environ[proxy_var] = https_proxy
50
50
  else:
51
- print_log("No PAC proxy settings found")
51
+ print_info("No PAC proxy settings found")
52
52
  else:
53
53
  https_proxy = os.getenv(proxy_var, None)
54
54
  if https_proxy is not None:
55
- print_log(f"Using {proxy_var}={https_proxy}")
55
+ print_info(f"Using {proxy_var}={https_proxy}")
56
56
 
57
57
 
58
58
  def main_wrapper(func):
@@ -79,18 +79,18 @@ def main_wrapper(func):
79
79
  exit_code = 1
80
80
  except KeyboardInterrupt:
81
81
  print("\r", end="") # Overwrite the display of ^C
82
- print_log("Keyboard interruption ... exiting")
82
+ print_info("Keyboard interruption ... exiting")
83
83
  exit_code = 1
84
84
  finally:
85
85
  CLIENT.close()
86
86
  if exit_code == 0:
87
- print_log("Done")
87
+ print_info("Done")
88
88
  exit(exit_code)
89
89
  else:
90
90
  try:
91
91
  set_proxy()
92
92
  func()
93
- print_log("Done")
93
+ print_info("Done")
94
94
  exit(0)
95
95
  finally:
96
96
  CLIENT.close()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: yellowdog-python-examples
3
- Version: 8.3.0
3
+ Version: 8.3.1
4
4
  Summary: Python CLI commands using the YellowDog Python SDK
5
5
  Author-email: YellowDog Limited <support@yellowdog.co>
6
6
  License-Expression: Apache-2.0
@@ -26,7 +26,7 @@ Requires-Dist: requests
26
26
  Requires-Dist: rich==13.9.4
27
27
  Requires-Dist: tabulate>=0.9.0
28
28
  Requires-Dist: toml
29
- Requires-Dist: yellowdog-sdk>=11.8.1
29
+ Requires-Dist: yellowdog-sdk>=12.0.0
30
30
  Provides-Extra: jsonnet
31
31
  Requires-Dist: jsonnet; extra == "jsonnet"
32
32
  Provides-Extra: cloudwizard
@@ -0,0 +1,65 @@
1
+ yellowdog_cli/__init__.py,sha256=ucC_eOhA8P1WyRFrj7fOwIFFUO6PpJtxVL5W-bR0tCc,22
2
+ yellowdog_cli/abort.py,sha256=RfM7fOBWBUu-aACdz81NaFHtYP5xHmjxjf8_KlgwCDs,4322
3
+ yellowdog_cli/admin.py,sha256=pediuyq3CsjQVElY33MZQYhM33t8PI9IQ1ZkvCuc5Hw,1012
4
+ yellowdog_cli/application.py,sha256=00pup0YJ_4XOanisPwCb-JCWXvs-jOYohAaRUYwBzs4,3446
5
+ yellowdog_cli/boost.py,sha256=fo9Am6n7sHhiueTX2OCI9kJ_dQXg727TXqA5W7sQAGQ,1271
6
+ yellowdog_cli/cancel.py,sha256=YseA2VTFrjzBT38vvwAtu6rErNzkjAGtBb0Su8ZEXJY,6366
7
+ yellowdog_cli/cloudwizard.py,sha256=GagNA4gO-EZLBNl8sIlPAcvJtM63v0RmJBj2eFE7ySQ,2651
8
+ yellowdog_cli/compare.py,sha256=i6zw_vrFO4c9A5ilKQ03o7ydnfnc3GtK7zNQftMkHL4,24317
9
+ yellowdog_cli/create.py,sha256=JtIxOQ7jXcYEVOl2oGFlt7W3igwWWZW6Dv6dSEDorIg,52648
10
+ yellowdog_cli/delete.py,sha256=x6ckxtQvzpCohHCWlTRo2BsZL6Rano34JUssJdPzum0,3033
11
+ yellowdog_cli/download.py,sha256=-DmG3V49SJZPDYoIEgwKuH8JzlBKX30jx5spJmpIuoM,5494
12
+ yellowdog_cli/finish.py,sha256=hESOZW44UeX8GU1USNgCQHcrQB5gAq8E7nwouPLoTcg,5240
13
+ yellowdog_cli/follow.py,sha256=1CUVKNZYjEge6AY0lqtc-i6MAp63p509T3CVnldXzdQ,345
14
+ yellowdog_cli/format_json.py,sha256=NrgE0jAUK46Kd4yWxuVbjKXQMzWewP3I8us8QkZZx1s,1502
15
+ yellowdog_cli/hold.py,sha256=wqSsI8UhFZX4pE-pTefxvnVCb0uCY1P_kJjm_YMedsM,306
16
+ yellowdog_cli/instantiate.py,sha256=tkOzkH9BXuOI1lu1bS8fA9PsFVqYQG1yqCe3PgUanfI,12067
17
+ yellowdog_cli/jsonnet2json.py,sha256=kv-AZSR-xwIbXnUdL3gYGjYdSiHq7cAvlEGPz4StdTE,765
18
+ yellowdog_cli/list.py,sha256=ADhTEDpibHWoow1aT8k-D_B8jnUQwNqBXZuhx7qsvXk,33458
19
+ yellowdog_cli/provision.py,sha256=415erjvauDN2HWAcS3N9jWfAnxk86Kf2oaoN9-fwcEM,19695
20
+ yellowdog_cli/remove.py,sha256=-6xi4p8MbI8tGzK0dacF02rQLURmOPTutUHMPi7afEA,20968
21
+ yellowdog_cli/resize.py,sha256=4eaGdXl8FqaWerLGk_i-NxSxeGrIqHZkNOdCzem5jD0,4362
22
+ yellowdog_cli/show.py,sha256=gZX0R1N5E99izS2DbOfMYZwpMDzsrLtEU2dbeEQK3X0,11088
23
+ yellowdog_cli/shutdown.py,sha256=jYM1ZVggn_VACS8jVaKp5PEXFKJ2-ejs2hGdEosClTg,5615
24
+ yellowdog_cli/start.py,sha256=9PHUAbS6vSq9RbttKkymOBzltIlWssQvk4zHJ8R-bWw,314
25
+ yellowdog_cli/submit.py,sha256=0qELQj-TjZaAwmajpFKjLcoZ8aWvPyWb0C3Ug9lyFpE,62155
26
+ yellowdog_cli/terminate.py,sha256=UPXO7zEcdYLZgbcl5LkWaQduE7pGja1Lda67u4UKF9A,4695
27
+ yellowdog_cli/upload.py,sha256=r_tbFmhbO8ALar2dNWjF6MZedADkoXzhEYP1IeuGaY0,5400
28
+ yellowdog_cli/version.py,sha256=IADl53F8zo2pe1FrgZqo3hKNQXmfz7GnynIbXZ7ryQo,1208
29
+ yellowdog_cli/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
30
+ yellowdog_cli/utils/args.py,sha256=-_BvdR_fMGohqiH1c5WzXLWi5FaZi04PBYvB7a24Cd8,59464
31
+ yellowdog_cli/utils/check_imports.py,sha256=uZB7lo3W_XhDezzgJF6JKkaSBPt-YM9uvRZ077smPe4,1155
32
+ yellowdog_cli/utils/cloudwizard_aws.py,sha256=ZKc-1kwCwLuZfZjPYNYGcEYRIaDXzDBMW7X5fCQAzYc,38161
33
+ yellowdog_cli/utils/cloudwizard_aws_types.py,sha256=dh2VbzcN3-skECEjDEUxIHLHnfFo88SHMNH-qyY5wso,481
34
+ yellowdog_cli/utils/cloudwizard_azure.py,sha256=4U8vl2S8vBtph8--tnG7SUluFs9BFVT9nbG5LjHu8QY,31681
35
+ yellowdog_cli/utils/cloudwizard_common.py,sha256=epwkSO0xyG8bEeuGwq4I5NVn4Z5Fij6DEo1hC5hVVV0,14037
36
+ yellowdog_cli/utils/cloudwizard_gcp.py,sha256=_s1Pfh_6U4kLVuYX6z7YawhVhICOKGaDjYk2YsRP1X4,12286
37
+ yellowdog_cli/utils/compact_json.py,sha256=l-tOoOaiS7Th8ravH66F_xam0dPX2CXLRq-gEBIcNl8,3757
38
+ yellowdog_cli/utils/config_types.py,sha256=RYgL_Ms8BYlEwh6Vb7Awr9wBfXSgbl2yC2iDYFovchQ,3963
39
+ yellowdog_cli/utils/csv_data.py,sha256=d70_INbDdo-xxZNES0zJlUzBfXMx4a6qX_NpMx0Xb4k,14416
40
+ yellowdog_cli/utils/entity_utils.py,sha256=0qeEk8eeJFAx1sxU-a1JHDxrnjz3C0WWthmYTk25sBc,35214
41
+ yellowdog_cli/utils/follow_utils.py,sha256=Yx6UCJqMdCtCxh2W0Ms71d4VI-nSvKbQP40DINVvIAw,4325
42
+ yellowdog_cli/utils/interactive.py,sha256=iIPsIhdpzaJunqHCI_JzCV_ysfIwAMvgtfHwoGiAfg8,5786
43
+ yellowdog_cli/utils/items.py,sha256=AhSyhgi-p6EZpwozFIxwIxbjxRwKgR2_wt6QdZtORj8,1333
44
+ yellowdog_cli/utils/load_config.py,sha256=BL2lMJenBP6odh6coMkSNJHqb-FfC1J8wzXpdp3D8Rk,19311
45
+ yellowdog_cli/utils/load_resources.py,sha256=PwQkkEk78LAZ0cGNPdSDM69sRGmEKg-HO5eUwpN-OoI,4564
46
+ yellowdog_cli/utils/misc_utils.py,sha256=HBnoJwBJ7hsrAbzc-3RvAtgobhe1YlXMavGxfL_h-0Q,8670
47
+ yellowdog_cli/utils/printing.py,sha256=rj-p8cOTNUdTLTA7IWXf-nl5yKlEZOW7WAD1CXwgUuU,46449
48
+ yellowdog_cli/utils/property_names.py,sha256=eM550eiMD6-o5RjjHovU5y1Ki8RCkacaKN-Az6msXSk,7025
49
+ yellowdog_cli/utils/provision_utils.py,sha256=HOx5du3KPkaWvwqT5DwjtmySnn4ZYAapwhWCGbb_sZg,3675
50
+ yellowdog_cli/utils/rich_console_input_fixed.py,sha256=-ij5gI11Y2P-jRNH5JCx4RlagxoLay_m20N4qj1DAvA,1417
51
+ yellowdog_cli/utils/settings.py,sha256=N4rHEARKaQw5Otun5qMl3-xXyFMZ_jHD-oit2xbEBHg,5844
52
+ yellowdog_cli/utils/start_hold_common.py,sha256=ActdyLhvITJkoCYu6PkBLIUJqQGPxYlh5eMwm7EJB60,5290
53
+ yellowdog_cli/utils/submit_utils.py,sha256=iW8lOCqhYX7MB3l01ZRsnppyZ1DxfCXWE4Btu4z_jn0,14304
54
+ yellowdog_cli/utils/type_check.py,sha256=QILKGpeFo53VrtpWyyMoPlqTJNhAkLsZJ_r0jHiWBL8,1678
55
+ yellowdog_cli/utils/upload_utils.py,sha256=wjk2WolYbhfy6YzG1heQPgFTg6VwvlGcHvrJsHg_uIA,3660
56
+ yellowdog_cli/utils/validate_properties.py,sha256=TsroKrf4jcAg_uQLRb9DpoSjRZ49XBrl7AQEOe_rhCk,2502
57
+ yellowdog_cli/utils/variables.py,sha256=O6N133Pms8yUvFXg7nVf1HWy3CMSWO8gXplpc4mV7S8,20547
58
+ yellowdog_cli/utils/wrapper.py,sha256=MlFQcOzwnu1DUw84d6x4c_IPaTE25CWT7Z5-egyT4Zk,3065
59
+ yellowdog_cli/utils/ydid_utils.py,sha256=Gs98Pidkpd6v-cpL28t3z8mOW9JMB7ZY2MkGBX8EhMo,2360
60
+ yellowdog_python_examples-8.3.1.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
61
+ yellowdog_python_examples-8.3.1.dist-info/METADATA,sha256=Al5gq01_1_f3AGTBhgFLPj933fCSMi7v2qkxV0zk66U,4019
62
+ yellowdog_python_examples-8.3.1.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
63
+ yellowdog_python_examples-8.3.1.dist-info/entry_points.txt,sha256=hRncrxB1ZmKjXwqyFQ3VVF_v5bLg4kaCaxT098J2d0k,1064
64
+ yellowdog_python_examples-8.3.1.dist-info/top_level.txt,sha256=RfffFF4rsBrBbPB1qRkJsRpUn_5icIZSdCqMDLO3hgA,14
65
+ yellowdog_python_examples-8.3.1.dist-info/RECORD,,
@@ -1,65 +0,0 @@
1
- yellowdog_cli/__init__.py,sha256=hiR7PouSkHWKTT2q2JFrz5vsu1x5YsLxuo4hVevNMUU,22
2
- yellowdog_cli/abort.py,sha256=S8tCr-Fcc8zM7luQ5_xunEeo-eqmkO4pmahDZEpxWF4,4311
3
- yellowdog_cli/admin.py,sha256=Iipc0_A-Rf997hSDjOOYTaPpB3dsuqekV8Slmm154GI,1010
4
- yellowdog_cli/application.py,sha256=00pup0YJ_4XOanisPwCb-JCWXvs-jOYohAaRUYwBzs4,3446
5
- yellowdog_cli/boost.py,sha256=JOUkXpl7yvmVZCAS_iv8GJ6g2wF1siVjGGJ-EUDI0FI,1268
6
- yellowdog_cli/cancel.py,sha256=Eu0FIH-VNNhW7WzvC0tcHgp7KxMVc35n5Rinu_YPeZc,6357
7
- yellowdog_cli/cloudwizard.py,sha256=UC1CDNPAsUMh_0C9ScLF4wGmvJ2Rbryravj67LHdFnI,2647
8
- yellowdog_cli/compare.py,sha256=yihgygtxedvRXz0mQV9hmvvMeKaNYIMfgBlTHetaa_s,24311
9
- yellowdog_cli/create.py,sha256=-CTw28ino-xpmTYI9t-FML_3ATC2jLc1ac1SllMhvJA,52582
10
- yellowdog_cli/delete.py,sha256=7YWGY8vI9ec3QP2y7VSEFFyAsY3IWcsZndDDXhlUNTY,3023
11
- yellowdog_cli/download.py,sha256=zYlfr7jCoJGzoayjhpoy3Ku9unmXnLu5XORRuUIuDlo,5479
12
- yellowdog_cli/finish.py,sha256=Edcz9__13ppE2KUffuLoLTjo4Cj9FKLhj-ttxYiEKvs,5231
13
- yellowdog_cli/follow.py,sha256=1CUVKNZYjEge6AY0lqtc-i6MAp63p509T3CVnldXzdQ,345
14
- yellowdog_cli/format_json.py,sha256=NrgE0jAUK46Kd4yWxuVbjKXQMzWewP3I8us8QkZZx1s,1502
15
- yellowdog_cli/hold.py,sha256=wqSsI8UhFZX4pE-pTefxvnVCb0uCY1P_kJjm_YMedsM,306
16
- yellowdog_cli/instantiate.py,sha256=TDwvUVwqWLY4m0updxbWPTgLX2J0SOmT-EqZRDHgOgI,11996
17
- yellowdog_cli/jsonnet2json.py,sha256=kv-AZSR-xwIbXnUdL3gYGjYdSiHq7cAvlEGPz4StdTE,765
18
- yellowdog_cli/list.py,sha256=XESqjdovQbJKiZp5rSSLsOQehCXW4MdRzg8PMMw-dpk,33417
19
- yellowdog_cli/provision.py,sha256=-rbFJYzd3Kfq6zpFhbM_KM0VUSkJAa3mvY2YODTNc5Q,19667
20
- yellowdog_cli/remove.py,sha256=yPZSVXY0shzcb_FN8MvW1friuixVzuVGmwqZAnFLDno,20904
21
- yellowdog_cli/resize.py,sha256=5oMqZmT1KXjnqEClCVzQbCDyZaEu-oc06mypy0TlTBo,4353
22
- yellowdog_cli/show.py,sha256=pti-rgPjprgF8h8rNfdgbT3LnmRT6-RGnurHr16on3k,11063
23
- yellowdog_cli/shutdown.py,sha256=JlgdJWv4hfVf_eTQU5z_tlSLFXNw4Pb31rA2NjxBijM,5606
24
- yellowdog_cli/start.py,sha256=9PHUAbS6vSq9RbttKkymOBzltIlWssQvk4zHJ8R-bWw,314
25
- yellowdog_cli/submit.py,sha256=nsP3ooUvri70yieB91I3_YwDxJ8MdAdpDmepZVtiAXA,62126
26
- yellowdog_cli/terminate.py,sha256=GCHAvK3iQBoKoea6UVT63f7stejSEhJGRGUcLRW8VGw,4687
27
- yellowdog_cli/upload.py,sha256=tCqspQ5xNqUFsAIqBxzvyVQ5Uhk5uZFTf1xM3JFSgBs,5389
28
- yellowdog_cli/version.py,sha256=IADl53F8zo2pe1FrgZqo3hKNQXmfz7GnynIbXZ7ryQo,1208
29
- yellowdog_cli/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
30
- yellowdog_cli/utils/args.py,sha256=-_BvdR_fMGohqiH1c5WzXLWi5FaZi04PBYvB7a24Cd8,59464
31
- yellowdog_cli/utils/check_imports.py,sha256=uZB7lo3W_XhDezzgJF6JKkaSBPt-YM9uvRZ077smPe4,1155
32
- yellowdog_cli/utils/cloudwizard_aws.py,sha256=3hRUP8E5zxiy7fkuaceeutIGtF7JVs9fZrDHBi04Gp8,38129
33
- yellowdog_cli/utils/cloudwizard_aws_types.py,sha256=dh2VbzcN3-skECEjDEUxIHLHnfFo88SHMNH-qyY5wso,481
34
- yellowdog_cli/utils/cloudwizard_azure.py,sha256=aWtMeBNnIIotLpFllKtDTBxwSFL3Io09ZANDo9R5QfU,31654
35
- yellowdog_cli/utils/cloudwizard_common.py,sha256=3cXOVlHkyg80ZSbZN14_6P2pMCml6AcRc62Omvc4CAg,13989
36
- yellowdog_cli/utils/cloudwizard_gcp.py,sha256=zb4WdNrkMgbWWgko3zOb8uTyeQ6BuWsdeVtVEBCdQxQ,12278
37
- yellowdog_cli/utils/compact_json.py,sha256=l-tOoOaiS7Th8ravH66F_xam0dPX2CXLRq-gEBIcNl8,3757
38
- yellowdog_cli/utils/config_types.py,sha256=RYgL_Ms8BYlEwh6Vb7Awr9wBfXSgbl2yC2iDYFovchQ,3963
39
- yellowdog_cli/utils/csv_data.py,sha256=vyLhb6ZRzQXzSjK9VWzoP6AP43SuHoWxbD5kEAzUwvM,14409
40
- yellowdog_cli/utils/entity_utils.py,sha256=3xeMZ5qtk1fuw2GJygSObXAhYsqYLPb9iGJ1cmQQpaw,35212
41
- yellowdog_cli/utils/follow_utils.py,sha256=Tiq6n86v1cEMBACVoz6IFj_GLW0Fp0qKB2EZINX8wKE,4320
42
- yellowdog_cli/utils/interactive.py,sha256=VQZKZ9GtA-bSsWGJgEoOQ0WrOeXbeALpkRhHENCJ8q0,5778
43
- yellowdog_cli/utils/items.py,sha256=AhSyhgi-p6EZpwozFIxwIxbjxRwKgR2_wt6QdZtORj8,1333
44
- yellowdog_cli/utils/load_config.py,sha256=vFe9tegO2IVUm90_Yg2mHx02S5sGn22j1J76FgP6Xa0,19300
45
- yellowdog_cli/utils/load_resources.py,sha256=tJlXuDjNKLu5yB7defWxRf4Rl_5zE4tHALlZT8VM_q0,4560
46
- yellowdog_cli/utils/misc_utils.py,sha256=D2s3e3xZIfNHHz6Fu-hrEJ7QorKY9b94Ov40MFSNVvo,8667
47
- yellowdog_cli/utils/printing.py,sha256=gGgvshfcBcQHI50yMSDrCCJpzkLAecumzst4Cx8gMMg,46403
48
- yellowdog_cli/utils/property_names.py,sha256=eM550eiMD6-o5RjjHovU5y1Ki8RCkacaKN-Az6msXSk,7025
49
- yellowdog_cli/utils/provision_utils.py,sha256=oLiOWvb-V38asFFEFNpF_T-vyz2c-ez47yrZ8skzemk,3673
50
- yellowdog_cli/utils/rich_console_input_fixed.py,sha256=-ij5gI11Y2P-jRNH5JCx4RlagxoLay_m20N4qj1DAvA,1417
51
- yellowdog_cli/utils/settings.py,sha256=D21yQ80nMrYG75WOZKLy7p1ZPlF_rqW_eDylATiZMX0,5807
52
- yellowdog_cli/utils/start_hold_common.py,sha256=h8fnxbj9jYkuqhJF_QFREg0h4vHixvSFLHCjlzzkRU4,5283
53
- yellowdog_cli/utils/submit_utils.py,sha256=M5R619foThCf-ScfnVWSQb_dgEblVLLjxwZTnwNKP9o,14299
54
- yellowdog_cli/utils/type_check.py,sha256=QILKGpeFo53VrtpWyyMoPlqTJNhAkLsZJ_r0jHiWBL8,1678
55
- yellowdog_cli/utils/upload_utils.py,sha256=K7bZrkajZWjYaDqcgxwlLl4xvXNndRnw0bkiiHnW9io,3657
56
- yellowdog_cli/utils/validate_properties.py,sha256=TsroKrf4jcAg_uQLRb9DpoSjRZ49XBrl7AQEOe_rhCk,2502
57
- yellowdog_cli/utils/variables.py,sha256=AHaolW682lkqm1P9MqWZnwvvK-Gd8hgV0HgzX76A1Ck,20542
58
- yellowdog_cli/utils/wrapper.py,sha256=3Kp5rIKdxLD2C3Aa0rhBzsnZ-l4joO5RTsOkWQG5cvw,3058
59
- yellowdog_cli/utils/ydid_utils.py,sha256=Gs98Pidkpd6v-cpL28t3z8mOW9JMB7ZY2MkGBX8EhMo,2360
60
- yellowdog_python_examples-8.3.0.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
61
- yellowdog_python_examples-8.3.0.dist-info/METADATA,sha256=vqKUV2u950CdfF806GBGovHDypF12dCXkwHjCBnkw0E,4019
62
- yellowdog_python_examples-8.3.0.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
63
- yellowdog_python_examples-8.3.0.dist-info/entry_points.txt,sha256=hRncrxB1ZmKjXwqyFQ3VVF_v5bLg4kaCaxT098J2d0k,1064
64
- yellowdog_python_examples-8.3.0.dist-info/top_level.txt,sha256=RfffFF4rsBrBbPB1qRkJsRpUn_5icIZSdCqMDLO3hgA,14
65
- yellowdog_python_examples-8.3.0.dist-info/RECORD,,