pyegeria 5.4.0.23__py3-none-any.whl → 5.4.0.25__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 (54) hide show
  1. commands/cat/debug_log +7967 -465
  2. commands/cat/debug_log.2025-08-15_09-14-07_444802.zip +0 -0
  3. commands/cat/debug_log.2025-08-16_10-21-59_388912.zip +0 -0
  4. commands/cat/debug_log.2025-08-17_11-34-27_981852.zip +0 -0
  5. commands/cat/dr_egeria_md.py +36 -6
  6. commands/cat/logs/pyegeria.log +3 -135
  7. md_processing/.DS_Store +0 -0
  8. md_processing/__init__.py +12 -6
  9. md_processing/data/commands.json +8523 -2234
  10. md_processing/dr_egeria_inbox/gov_def.md +76 -18
  11. md_processing/dr_egeria_inbox/img.png +0 -0
  12. md_processing/dr_egeria_inbox/product.md +185 -24
  13. md_processing/dr_egeria_outbox/.obsidian/workspace.json +5 -5
  14. md_processing/dr_egeria_outbox/monday/processed-2025-08-19 07:05-product.md +426 -0
  15. md_processing/dr_egeria_outbox/monday/processed-2025-08-19 07:56-product.md +212 -0
  16. md_processing/dr_egeria_outbox/monday/processed-2025-08-19 09:43-product.md +201 -0
  17. md_processing/dr_egeria_outbox/tuesday/processed-2025-08-19 10:55-product.md +209 -0
  18. md_processing/md_commands/governance_officer_commands.py +247 -178
  19. md_processing/md_commands/product_manager_commands.py +730 -580
  20. md_processing/md_processing_utils/common_md_proc_utils.py +170 -12
  21. md_processing/md_processing_utils/common_md_utils.py +126 -28
  22. md_processing/md_processing_utils/extraction_utils.py +2 -2
  23. md_processing/md_processing_utils/md_processing_constants.py +14 -10
  24. pyegeria/.DS_Store +0 -0
  25. pyegeria/__init__.py +1 -1
  26. pyegeria/_client_new.py +61 -12
  27. pyegeria/_exceptions_new.py +6 -0
  28. pyegeria/_output_formats.py +42 -2
  29. pyegeria/collection_manager.py +79 -14
  30. pyegeria/{data_designer_omvs.py → data_designer.py} +1171 -1675
  31. pyegeria/glossary_browser.py +1259 -0
  32. pyegeria/{glossary_manager_omvs.py → glossary_manager.py} +1181 -1099
  33. pyegeria/governance_officer.py +1 -3
  34. pyegeria/load_config.py +1 -1
  35. pyegeria/models.py +37 -4
  36. pyegeria/output_formatter.py +2 -1
  37. pyegeria/project_manager.py +1952 -0
  38. pyegeria/utils.py +5 -2
  39. {pyegeria-5.4.0.23.dist-info → pyegeria-5.4.0.25.dist-info}/METADATA +1 -1
  40. {pyegeria-5.4.0.23.dist-info → pyegeria-5.4.0.25.dist-info}/RECORD +43 -44
  41. md_processing/dr_egeria_outbox/friday/processed-2025-07-18 15:00-product.md +0 -62
  42. md_processing/dr_egeria_outbox/friday/processed-2025-07-18 15:13-product.md +0 -62
  43. md_processing/dr_egeria_outbox/friday/processed-2025-07-20 13:23-product.md +0 -47
  44. md_processing/dr_egeria_outbox/friday/processed-2025-08-01 11:55-data_test3.md +0 -503
  45. md_processing/dr_egeria_outbox/monday/processed-2025-07-14 12:38-data_designer_out.md +0 -663
  46. md_processing/dr_egeria_outbox/monday/processed-2025-07-21 10:52-generated_help_report.md +0 -2744
  47. md_processing/dr_egeria_outbox/monday/processed-2025-07-21 18:38-collections.md +0 -62
  48. md_processing/dr_egeria_outbox/monday/processed-2025-08-01 11:34-gov_def.md +0 -444
  49. md_processing/dr_egeria_outbox/processed-2025-08-03 16:05-glossary_list.md +0 -37
  50. pyegeria/glossary_browser_omvs.py +0 -3840
  51. pyegeria/governance_officer_omvs.py +0 -2367
  52. {pyegeria-5.4.0.23.dist-info → pyegeria-5.4.0.25.dist-info}/LICENSE +0 -0
  53. {pyegeria-5.4.0.23.dist-info → pyegeria-5.4.0.25.dist-info}/WHEEL +0 -0
  54. {pyegeria-5.4.0.23.dist-info → pyegeria-5.4.0.25.dist-info}/entry_points.txt +0 -0
@@ -726,8 +726,6 @@ class GovernanceOfficer(Client2):
726
726
 
727
727
  @dynamic_catch
728
728
  async def _async_update_governance_definition(self, guid: str, body: dict | UpdateElementRequestBody) -> None:
729
- """ Update a governance definition."""
730
-
731
729
  """ Update the properties of a governance definition. Async Version.
732
730
 
733
731
  Parameters
@@ -793,7 +791,7 @@ class GovernanceOfficer(Client2):
793
791
  await self._async_update_element_body_request(url, GOV_DEF_PROPERTIES_LIST, body)
794
792
 
795
793
  @dynamic_catch
796
- def _async_update_governance_definition(self, guid: str, body: dict | UpdateElementRequestBody) -> None:
794
+ async def _async_update_governance_definition(self, guid: str, body: dict | UpdateElementRequestBody) -> None:
797
795
  """ Update a governance definition. Async Version."""
798
796
 
799
797
  def update_governance_definition(self, guid: str, body: dict | UpdateStatusRequestBody) -> None:
pyegeria/load_config.py CHANGED
@@ -381,7 +381,7 @@ def load_app_config(env_file: str = None):
381
381
 
382
382
  # Logging section
383
383
  log = config_dict["Logging"]
384
- log["console_filter_levels"] = _parse_list_env("PYEGERIA_CONSOLE_FILTER_LEVELS", log.get("console_filter_levels", ["ERROR"]))
384
+ log["console_filter_levels"] = _parse_list_env("PYEGERIA_CONSOLE_FILTER_LEVELS", log.get("console_filter_levels", ["ERROR","WARNING","INFO","SUCCESS"]))
385
385
  log["console_logging_enabled"] = _parse_list_env("PYEGERIA_CONSOLE_LOGGING_ENABLED", log.get("console_logging_enabled", ["pyegeria"]))
386
386
  log["console_logging_level"] = os.getenv("PYEGERIA_CONSOLE_LOG_LVL", log.get("console_logging_level", "INFO"))
387
387
  log["enable_logging"] = _parse_bool_env("PYEGERIA_ENABLE_LOGGING", log.get("enable_logging", False))
pyegeria/models.py CHANGED
@@ -177,6 +177,33 @@ class OpenMetadataRootProperties(PyegeriaModel):
177
177
  type_name: str | None = None
178
178
  extended_properties: dict | None = None
179
179
 
180
+ @model_validator(mode='before')
181
+ @classmethod
182
+ def preprocess_data(cls, values):
183
+ """
184
+ This model validator performs pre-processing on the entire
185
+ input dictionary before field validation.
186
+ It converts any empty tuples to None and ensures a metadata key exists.
187
+
188
+ This is the modern equivalent of @root_validator(pre=True).
189
+ """
190
+ # Ensure the 'data' key exists before trying to access it.
191
+ if 'data' in values and isinstance(values['data'], dict):
192
+ # Convert empty tuples to None
193
+ processed_data = {}
194
+ for key, value in values['data'].items():
195
+ if isinstance(value, tuple) and not value:
196
+ processed_data[key] = None
197
+ else:
198
+ processed_data[key] = value
199
+ values['data'] = processed_data
200
+
201
+ # Ensure a 'metadata' key is always a dictionary.
202
+ if 'metadata' not in values:
203
+ values['metadata'] = {}
204
+
205
+ return values
206
+
180
207
 
181
208
  class RelationshipBeanProperties(PyegeriaModel):
182
209
  effective_from: datetime | None = None
@@ -259,18 +286,18 @@ class NewElementRequestBody(RequestBody):
259
286
 
260
287
  class NewClassificationRequestBody(RequestBody):
261
288
  class_: Annotated[Literal["NewClassificationRequestBody"], Field(alias="class")]
262
- properties: ClassificationBeanProperties
289
+ properties: dict | None = None
263
290
 
264
291
 
265
292
  class UpdateClassificationRequestBody(RequestBody):
266
293
  class_: Annotated[Literal["UpdateClassificationRequestBody"], Field(alias="class")]
267
- properties: ClassificationBeanProperties
294
+ properties: dict | None = None
268
295
  merge_update: bool | None = True
269
296
 
270
297
 
271
298
  class UpdateRelationshipRequestBody(RequestBody):
272
299
  class_: Annotated[Literal["UpdateRelationshipRequestBody"], Field(alias="class")]
273
- properties: RelationshipBeanProperties
300
+ properties: dict | None = None
274
301
  merge_update: bool | None = True
275
302
 
276
303
 
@@ -286,6 +313,11 @@ class TemplateRequestBody(PyegeriaModel):
286
313
  template_guid: str
287
314
  replacement_properties: dict[str, Any] = {}
288
315
  placeholder_properties: dict[str, Any] = {}
316
+ deep_copy: bool | None = False
317
+ effective_from: datetime | None = None
318
+ effective_to: datetime | None = None
319
+ template_substitute: bool | None = False
320
+ allow_retrieve: bool | None = True
289
321
 
290
322
 
291
323
  class UpdateElementRequestBody(PyegeriaModel):
@@ -311,7 +343,7 @@ class UpdateStatusRequestBody(PyegeriaModel):
311
343
 
312
344
  class GetRequestBody(PyegeriaModel):
313
345
  class_: Annotated[Literal["GetRequestBody"], Field(alias="class")]
314
- # metadata_element_type_name: list[str] | None = None
346
+ metadata_element_type_name: str | None = None
315
347
  metadata_element_subtype_names: list[str] | None = None
316
348
  skip_relationships: list[str] | None = None
317
349
  include_only_relationships: list[str] | None = None
@@ -323,6 +355,7 @@ class GetRequestBody(PyegeriaModel):
323
355
  effective_time: datetime | None = None
324
356
  for_lineage: bool | None = False
325
357
  for_duplicate_processing: bool | None = False
358
+ relationship_page_size: int | None = None
326
359
 
327
360
 
328
361
  class ResultsRequestBody(GetRequestBody):
@@ -632,7 +632,8 @@ def generate_entity_dict(elements: List[Dict],
632
632
  if columns_struct is not None:
633
633
  try:
634
634
  returned_struct = extract_properties_func(element, columns_struct)
635
- except TypeError:
635
+ except TypeError as e:
636
+ logger.info(f"Error - didn't find extractor?: {e}")
636
637
  returned_struct = None
637
638
 
638
639
  # Get additional properties if function is provided