pyegeria 5.4.7.9__tar.gz → 5.4.8.2__tar.gz

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 (265) hide show
  1. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/PKG-INFO +38 -7
  2. pyegeria-5.4.7.9/pyegeria.egg-info/PKG-INFO → pyegeria-5.4.8.2/README.md +29 -36
  3. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/cat/dr_egeria_command_help.py +1 -1
  4. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/cat/list_collections.py +2 -2
  5. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/cat/run_report.py +12 -12
  6. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/ops/list_archives.py +1 -3
  7. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/examples/GeoSpatial Products Example.py +12 -22
  8. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/examples/format_sets/all_format_sets.json +18 -18
  9. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/examples/format_sets/custom_format_sets.json +6 -6
  10. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/examples/format_sets/subset_format_sets.json +4 -4
  11. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/examples/format_sets_save_load_example.py +18 -18
  12. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/examples/output_formats_example.py +20 -20
  13. pyegeria-5.4.8.2/md_processing/data/commands.json +57058 -0
  14. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/md_processing/data/generated_format_sets.json +43 -43
  15. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/md_processing/md_commands/data_designer_commands.py +10 -10
  16. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/md_processing/md_commands/ext_ref_commands.py +2 -2
  17. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/md_processing/md_commands/glossary_commands.py +3 -3
  18. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/md_processing/md_commands/governance_officer_commands.py +2 -2
  19. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/md_processing/md_commands/product_manager_commands.py +8 -8
  20. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/md_processing/md_commands/project_commands.py +2 -2
  21. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/md_processing/md_commands/solution_architect_commands.py +3 -3
  22. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/md_processing/md_commands/view_commands.py +7 -7
  23. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/md_processing/md_processing_utils/common_md_proc_utils.py +8 -8
  24. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/md_processing/md_processing_utils/common_md_utils.py +1 -1
  25. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/md_processing/md_processing_utils/gen_format_sets.py +12 -12
  26. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/md_processing/md_processing_utils/generate_dr_help.py +1 -1
  27. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/pyegeria/__init__.py +3 -3
  28. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/pyegeria/_base_client.py +1 -17
  29. pyegeria-5.4.8.2/pyegeria/_client_new.py +5379 -0
  30. pyegeria-5.4.8.2/pyegeria/_client_new_backup.py +5359 -0
  31. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/pyegeria/_output_format_models.py +41 -16
  32. pyegeria-5.4.8.2/pyegeria/_output_formats.py +14 -0
  33. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/pyegeria/automated_curation.py +90 -81
  34. pyegeria-5.4.7.9/pyegeria/_output_formats.py → pyegeria-5.4.8.2/pyegeria/base_report_formats.py +380 -164
  35. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/pyegeria/classification_manager.py +1575 -517
  36. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/pyegeria/classification_manager_omvs.py +45 -69
  37. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/pyegeria/collection_manager.py +108 -110
  38. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/pyegeria/data_designer.py +151 -151
  39. pyegeria-5.4.8.2/pyegeria/egeria_cat_client.py +49 -0
  40. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/pyegeria/egeria_client.py +2 -2
  41. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/pyegeria/egeria_tech_client.py +2 -2
  42. pyegeria-5.4.7.9/pyegeria/external_references.py → pyegeria-5.4.8.2/pyegeria/external_links.py +59 -60
  43. pyegeria-5.4.8.2/pyegeria/feedback_manager.py +833 -0
  44. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/pyegeria/feedback_manager_omvs.py +117 -337
  45. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/pyegeria/format_set_executor.py +16 -16
  46. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/pyegeria/glossary_manager.py +62 -65
  47. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/pyegeria/governance_officer.py +53 -53
  48. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/pyegeria/mcp_adapter.py +6 -6
  49. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/pyegeria/output_formatter.py +94 -53
  50. pyegeria-5.4.8.2/pyegeria/output_formatter_with_machine_keys.py +1127 -0
  51. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/pyegeria/platform_services.py +2 -1
  52. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/pyegeria/project_manager.py +66 -66
  53. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/pyegeria/reference_data.py +30 -30
  54. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/pyegeria/solution_architect.py +135 -134
  55. pyegeria-5.4.7.9/README.md → pyegeria-5.4.8.2/pyegeria.egg-info/PKG-INFO +67 -2
  56. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/pyegeria.egg-info/SOURCES.txt +9 -3
  57. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/pyegeria.egg-info/requires.txt +10 -5
  58. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/pyproject.toml +11 -6
  59. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/tests/test_automated_curation_omvs.py +4 -4
  60. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/tests/test_classification_manager_omvs.py +8 -10
  61. pyegeria-5.4.8.2/tests/test_client_new.py +69 -0
  62. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/tests/test_collection_manager_omvs.py +24 -23
  63. pyegeria-5.4.8.2/tests/test_comments.py +194 -0
  64. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/tests/test_data_designer.py +23 -17
  65. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/tests/test_egeria_my_client.py +1 -1
  66. pyegeria-5.4.7.9/tests/test_external_references.py → pyegeria-5.4.8.2/tests/test_external_links.py +7 -8
  67. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/tests/test_feedback_manager_omvs.py +141 -91
  68. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/tests/test_glossary_manager_omvs.py +1 -1
  69. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/tests/test_governance_officer_omvs.py +11 -9
  70. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/tests/test_mcp_adapter.py +1 -1
  71. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/tests/test_output_format_sets_unit.py +3 -3
  72. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/tests/test_output_formats.py +39 -39
  73. pyegeria-5.4.8.2/tests/test_output_formatter_deepcopy_isolation.py +67 -0
  74. pyegeria-5.4.8.2/tests/test_output_formatter_dict_collisions.py +63 -0
  75. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/tests/test_project_manager_omvs.py +4 -4
  76. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/tests/test_reference_data.py +2 -2
  77. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/tests/test_registered_info.py +2 -2
  78. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/tests/test_runtime_manager.py +1 -1
  79. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/tests/test_solution_architect_omvs.py +3 -3
  80. pyegeria-5.4.7.9/md_processing/data/commands.json +0 -52199
  81. pyegeria-5.4.7.9/pyegeria/_client_new.py +0 -2458
  82. pyegeria-5.4.7.9/pyegeria/egeria_cat_client.py +0 -93
  83. pyegeria-5.4.7.9/pyegeria/egeria_my_client.py +0 -91
  84. pyegeria-5.4.7.9/pyegeria/feedback_manager.py +0 -4510
  85. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/LICENSE +0 -0
  86. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/MANIFEST.in +0 -0
  87. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/__init__.py +0 -0
  88. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/cat/Dr-Egeria_md-orig.py +0 -0
  89. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/cat/__init__.py +0 -0
  90. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/cat/dr_egeria_jupyter.py +0 -0
  91. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/cat/dr_egeria_md.py +0 -0
  92. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/cat/exp_list_glossaries.py +0 -0
  93. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/cat/get_asset_graph.py +0 -0
  94. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/cat/get_collection.py +0 -0
  95. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/cat/get_project_dependencies.py +0 -0
  96. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/cat/get_project_structure.py +0 -0
  97. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/cat/get_tech_type_elements.py +0 -0
  98. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/cat/glossary_actions.py +0 -0
  99. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/cat/list_assets.py +0 -0
  100. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/cat/list_cert_types.py +0 -0
  101. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/cat/list_data_designer.py +0 -0
  102. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/cat/list_data_structures_full.py +0 -0
  103. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/cat/list_deployed_catalogs.py +0 -0
  104. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/cat/list_deployed_database_schemas.py +0 -0
  105. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/cat/list_deployed_databases.py +0 -0
  106. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/cat/list_deployed_servers.py +0 -0
  107. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/cat/list_glossaries.py +0 -0
  108. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/cat/list_projects.py +0 -0
  109. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/cat/list_tech_type_elements.py +0 -0
  110. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/cat/list_tech_types.py +0 -0
  111. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/cat/list_terms.py +0 -0
  112. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/cat/list_todos.py +0 -0
  113. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/cat/list_user_ids.py +0 -0
  114. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/cli/__init__.py +0 -0
  115. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/cli/egeria.py +0 -0
  116. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/cli/egeria_cat.py +0 -0
  117. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/cli/egeria_login_tui.py +0 -0
  118. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/cli/egeria_my.py +0 -0
  119. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/cli/egeria_ops.py +0 -0
  120. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/cli/egeria_tech.py +0 -0
  121. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/cli/ops_config.py +0 -0
  122. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/my/__init__.py +0 -0
  123. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/my/list_my_profile.py +0 -0
  124. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/my/list_my_roles.py +0 -0
  125. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/my/monitor_my_todos.py +0 -0
  126. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/my/monitor_open_todos.py +0 -0
  127. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/my/todo_actions.py +0 -0
  128. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/ops/__init__.py +0 -0
  129. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/ops/gov_server_actions.py +0 -0
  130. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/ops/list_catalog_targets.py +0 -0
  131. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/ops/load_archive.py +0 -0
  132. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/ops/monitor_asset_events.py +0 -0
  133. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/ops/monitor_engine_activity.py +0 -0
  134. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/ops/monitor_engine_activity_c.py +0 -0
  135. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/ops/monitor_gov_eng_status.py +0 -0
  136. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/ops/monitor_integ_daemon_status.py +0 -0
  137. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/ops/monitor_platform_status.py +0 -0
  138. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/ops/monitor_server_startup.py +0 -0
  139. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/ops/monitor_server_status.py +0 -0
  140. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/ops/orig_monitor_server_list.py +0 -0
  141. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/ops/orig_monitor_server_status.py +0 -0
  142. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/ops/refresh_integration_daemon.py +0 -0
  143. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/ops/restart_integration_daemon.py +0 -0
  144. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/ops/table_integ_daemon_status.py +0 -0
  145. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/ops/x_engine_actions.py +0 -0
  146. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/tech/__init__.py +0 -0
  147. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/tech/generic_actions.py +0 -0
  148. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/tech/get_element_info.py +0 -0
  149. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/tech/get_guid_info.py +0 -0
  150. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/tech/get_tech_details.py +0 -0
  151. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/tech/get_tech_type_template.py +0 -0
  152. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/tech/list_all_om_type_elements.py +0 -0
  153. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/tech/list_all_om_type_elements_x.py +0 -0
  154. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/tech/list_all_related_elements.py +0 -0
  155. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/tech/list_anchored_elements.py +0 -0
  156. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/tech/list_asset_types.py +0 -0
  157. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/tech/list_elements_by_classification_by_property_value.py +0 -0
  158. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/tech/list_elements_by_property_value.py +0 -0
  159. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/tech/list_elements_by_property_value_x.py +0 -0
  160. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/tech/list_elements_for_classification.py +0 -0
  161. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/tech/list_gov_action_processes.py +0 -0
  162. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/tech/list_information_supply_chains.py +0 -0
  163. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/tech/list_registered_services.py +0 -0
  164. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/tech/list_related_elements_with_prop_value.py +0 -0
  165. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/tech/list_related_specification.py +0 -0
  166. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/tech/list_relationship_types.py +0 -0
  167. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/tech/list_relationships.py +0 -0
  168. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/tech/list_solution_blueprints.py +0 -0
  169. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/tech/list_solution_components.py +0 -0
  170. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/tech/list_solution_roles.py +0 -0
  171. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/tech/list_tech_templates.py +0 -0
  172. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/tech/list_valid_metadata_values.py +0 -0
  173. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/tech/table_tech_templates.py +0 -0
  174. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/commands/tech/x_list_related_elements.py +0 -0
  175. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/examples/Coco_config/README.md +0 -0
  176. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/examples/Coco_config/__init__.py +0 -0
  177. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/examples/Coco_config/config_cocoMDS1.py +0 -0
  178. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/examples/Coco_config/config_cocoMDS2.py +0 -0
  179. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/examples/Coco_config/config_cocoMDS3.py +0 -0
  180. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/examples/Coco_config/config_cocoMDS4.py +0 -0
  181. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/examples/Coco_config/config_cocoMDS5.py +0 -0
  182. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/examples/Coco_config/config_cocoMDS6.py +0 -0
  183. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/examples/Coco_config/config_cocoMDSx.py +0 -0
  184. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/examples/Coco_config/config_cocoView1.py +0 -0
  185. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/examples/Coco_config/config_coco_core.py +0 -0
  186. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/examples/Coco_config/config_coco_datalake.py +0 -0
  187. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/examples/Coco_config/config_exchangeDL01.py +0 -0
  188. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/examples/Coco_config/config_governDL01.py +0 -0
  189. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/examples/Coco_config/config_monitorDev01.py +0 -0
  190. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/examples/Coco_config/config_monitorGov01.py +0 -0
  191. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/examples/Coco_config/globals.py +0 -0
  192. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/examples/Jupyter Notebooks/P-egeria-server-config.ipynb +0 -0
  193. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/examples/Jupyter Notebooks/README.md +0 -0
  194. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/examples/Jupyter Notebooks/common/P-environment-check.ipynb +0 -0
  195. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/examples/Jupyter Notebooks/common/__init__.py +0 -0
  196. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/examples/Jupyter Notebooks/common/common-functions.ipynb +0 -0
  197. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/examples/Jupyter Notebooks/common/environment-check.ipynb +0 -0
  198. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/examples/Jupyter Notebooks/common/globals.ipynb +0 -0
  199. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/examples/Jupyter Notebooks/common/globals.py +0 -0
  200. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/examples/Jupyter Notebooks/common/orig_globals.py +0 -0
  201. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/md_processing/__init__.py +0 -0
  202. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/md_processing/data/commands-working.json +0 -0
  203. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/md_processing/data/generated_format_sets.py +0 -0
  204. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/md_processing/dr_egeria.py +0 -0
  205. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/md_processing/md_commands/__init__.py +0 -0
  206. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/md_processing/md_processing_utils/__init__.py +0 -0
  207. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/md_processing/md_processing_utils/determine_width.py +0 -0
  208. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/md_processing/md_processing_utils/extraction_utils.py +0 -0
  209. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/md_processing/md_processing_utils/generate_md_cmd_templates.py +0 -0
  210. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/md_processing/md_processing_utils/generate_md_templates.py +0 -0
  211. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/md_processing/md_processing_utils/md_processing_constants.py +0 -0
  212. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/md_processing/md_processing_utils/message_constants.py +0 -0
  213. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/pyegeria/_client.py +0 -0
  214. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/pyegeria/_deprecated_gov_engine.py +0 -0
  215. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/pyegeria/_exceptions.py +0 -0
  216. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/pyegeria/_exceptions_new.py +0 -0
  217. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/pyegeria/_globals.py +0 -0
  218. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/pyegeria/_validators.py +0 -0
  219. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/pyegeria/asset_catalog_omvs.py +0 -0
  220. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/pyegeria/collection_models.py +0 -0
  221. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/pyegeria/config.py +0 -0
  222. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/pyegeria/core_omag_server_config.py +0 -0
  223. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/pyegeria/create_tech_guid_lists.py +0 -0
  224. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/pyegeria/egeria_config_client.py +0 -0
  225. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/pyegeria/full_omag_server_config.py +0 -0
  226. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/pyegeria/load_config.py +0 -0
  227. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/pyegeria/logging_configuration.py +0 -0
  228. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/pyegeria/mcp_server.py +0 -0
  229. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/pyegeria/md_processing_utils.py +0 -0
  230. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/pyegeria/md_processing_utils_orig.py +0 -0
  231. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/pyegeria/mermaid_utilities.py +0 -0
  232. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/pyegeria/metadata_explorer_omvs.py +0 -0
  233. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/pyegeria/models.py +0 -0
  234. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/pyegeria/my_profile_omvs.py +0 -0
  235. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/pyegeria/registered_info.py +0 -0
  236. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/pyegeria/runtime_manager_omvs.py +0 -0
  237. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/pyegeria/server_operations.py +0 -0
  238. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/pyegeria/template_manager_omvs.py +0 -0
  239. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/pyegeria/utils.py +0 -0
  240. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/pyegeria/valid_metadata_omvs.py +0 -0
  241. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/pyegeria/x_action_author_omvs.py +0 -0
  242. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/pyegeria.egg-info/dependency_links.txt +0 -0
  243. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/pyegeria.egg-info/entry_points.txt +0 -0
  244. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/pyegeria.egg-info/top_level.txt +0 -0
  245. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/setup.cfg +0 -0
  246. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/tests/test_asset_catalog_omvs.py +0 -0
  247. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/tests/test_client.py +0 -0
  248. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/tests/test_config.py +0 -0
  249. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/tests/test_config_unit.py +0 -0
  250. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/tests/test_core_omag_server_config.py +0 -0
  251. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/tests/test_dr_egeria_command_help_modes.py +0 -0
  252. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/tests/test_egeria_cat_client.py +0 -0
  253. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/tests/test_egeria_client.py +0 -0
  254. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/tests/test_env_settings.py +0 -0
  255. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/tests/test_format_set_dict.py +0 -0
  256. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/tests/test_full_omag_server_config.py +0 -0
  257. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/tests/test_load_config.py +0 -0
  258. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/tests/test_metadata_explorer_omvs.py +0 -0
  259. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/tests/test_my_profile_omvs.py +0 -0
  260. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/tests/test_output_format_models_unit.py +0 -0
  261. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/tests/test_platform_services.py +0 -0
  262. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/tests/test_root_path.py +0 -0
  263. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/tests/test_server_operations.py +0 -0
  264. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/tests/test_utils.py +0 -0
  265. {pyegeria-5.4.7.9 → pyegeria-5.4.8.2}/tests/test_valid_metadata_omvs.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyegeria
3
- Version: 5.4.7.9
3
+ Version: 5.4.8.2
4
4
  Summary: A python client for Egeria
5
5
  Author-email: Dan Wolfson <dan.wolfson@pdr-associates.com>
6
6
  License-Expression: Apache-2.0
@@ -11,7 +11,7 @@ Requires-Python: >3.12
11
11
  Description-Content-Type: text/markdown
12
12
  License-File: LICENSE
13
13
  Requires-Dist: httpx
14
- Requires-Dist: rich
14
+ Requires-Dist: rich>=14.2
15
15
  Requires-Dist: validators
16
16
  Requires-Dist: urllib3
17
17
  Requires-Dist: requests
@@ -19,17 +19,21 @@ Requires-Dist: jupyter
19
19
  Requires-Dist: click
20
20
  Requires-Dist: trogon
21
21
  Requires-Dist: mermaid-py
22
- Requires-Dist: psycopg2-binary
22
+ Requires-Dist: psycopg2-binary>=2.9.11
23
23
  Requires-Dist: jupyter-notebook-parser
24
24
  Requires-Dist: loguru
25
25
  Requires-Dist: inflect
26
- Requires-Dist: pydantic>=2.11.7
26
+ Requires-Dist: pydantic>=2.12.3
27
27
  Requires-Dist: pydantic-settings>=2.10.1
28
- Requires-Dist: pydevd-pycharm>=252.23892.364
28
+ Requires-Dist: pydevd-pycharm>=253.27642.35
29
29
  Requires-Dist: wcwidth
30
30
  Requires-Dist: altair
31
31
  Requires-Dist: modelcontextprotocol
32
- Requires-Dist: mcp>=1.15.0
32
+ Requires-Dist: mcp>=1.18.0
33
+ Requires-Dist: markers>=0.3.0
34
+ Requires-Dist: pytest-asyncio>=1.2.0
35
+ Provides-Extra: test
36
+ Requires-Dist: pytest; extra == "test"
33
37
  Dynamic: license-file
34
38
 
35
39
  <!-- SPDX-License-Identifier: CC-BY-4.0 -->
@@ -57,6 +61,9 @@ to visualize and use Egeria. The commands also serve as useful examples.
57
61
 
58
62
  An examples folder holds some useful examples showing different facets of using pyegeria.
59
63
 
64
+ For detailed guidance on report formats (selection, dynamic loading, runtime registration, and migration from columns→attributes), see:
65
+ - examples/doc_samples/report_formats.md
66
+
60
67
  WARNING: files that start with "X" are in-progress placeholders that are not meant to be used..they will mature and
61
68
  evolve.
62
69
 
@@ -142,10 +149,34 @@ print(cfg.Logging.enable_logging)
142
149
  python scripts/validate_env.py --env config/env
143
150
  python scripts/validate_env.py # auto-detects ./config/env or ./.env
144
151
 
145
- - Run tests (requires Poetry):
152
+ ### Testing
153
+
154
+ By default, running pytest executes unit tests that use monkeypatching/fakes and do not contact a live Egeria.
155
+
156
+ - Run unit tests (recommended default):
146
157
  poetry install
147
158
  poetry run pytest -v
148
159
 
160
+ You can also run tests live against a local Egeria instance. Enable live mode with either a CLI flag or an environment variable. In live mode, tests marked as `unit` are skipped and live tests run using a real Client2 connection.
161
+
162
+ - Enable live mode via CLI:
163
+ poetry run pytest -q --live-egeria
164
+
165
+ - Or enable via environment variable:
166
+ PYEG_LIVE_EGERIA=1 poetry run pytest -q
167
+
168
+ Default live connection parameters (can be overridden via env):
169
+ - server_name = "qs-view-server" (override with PYEG_SERVER_NAME)
170
+ - platform_url = "https://localhost:9443" (override with PYEG_PLATFORM_URL)
171
+ - user_id = "peterprofile" (override with PYEG_USER_ID)
172
+ - user_pwd = "secret" (override with PYEG_USER_PWD)
173
+
174
+ Notes:
175
+ - SSL verification is controlled by pyegeria._globals.enable_ssl_check, which defaults to False in this repo to support localhost/self-signed certs.
176
+ - See tests/conftest.py for the live test fixtures and switches.
177
+
178
+ ### Troubleshooting
179
+
149
180
  ### Troubleshooting
150
181
 
151
182
  - If your env doesn’t seem to apply, confirm which config.json is used (the loader checks PYEGERIA_CONFIG_DIRECTORY first, then PYEGERIA_ROOT_PATH, then ./config.json).
@@ -1,37 +1,3 @@
1
- Metadata-Version: 2.4
2
- Name: pyegeria
3
- Version: 5.4.7.9
4
- Summary: A python client for Egeria
5
- Author-email: Dan Wolfson <dan.wolfson@pdr-associates.com>
6
- License-Expression: Apache-2.0
7
- Keywords: egeria,metadata,governance
8
- Classifier: Programming Language :: Python
9
- Classifier: Programming Language :: Python :: 3
10
- Requires-Python: >3.12
11
- Description-Content-Type: text/markdown
12
- License-File: LICENSE
13
- Requires-Dist: httpx
14
- Requires-Dist: rich
15
- Requires-Dist: validators
16
- Requires-Dist: urllib3
17
- Requires-Dist: requests
18
- Requires-Dist: jupyter
19
- Requires-Dist: click
20
- Requires-Dist: trogon
21
- Requires-Dist: mermaid-py
22
- Requires-Dist: psycopg2-binary
23
- Requires-Dist: jupyter-notebook-parser
24
- Requires-Dist: loguru
25
- Requires-Dist: inflect
26
- Requires-Dist: pydantic>=2.11.7
27
- Requires-Dist: pydantic-settings>=2.10.1
28
- Requires-Dist: pydevd-pycharm>=252.23892.364
29
- Requires-Dist: wcwidth
30
- Requires-Dist: altair
31
- Requires-Dist: modelcontextprotocol
32
- Requires-Dist: mcp>=1.15.0
33
- Dynamic: license-file
34
-
35
1
  <!-- SPDX-License-Identifier: CC-BY-4.0 -->
36
2
  <!-- Copyright Contributors to the ODPi Egeria project. -->
37
3
 
@@ -57,6 +23,9 @@ to visualize and use Egeria. The commands also serve as useful examples.
57
23
 
58
24
  An examples folder holds some useful examples showing different facets of using pyegeria.
59
25
 
26
+ For detailed guidance on report formats (selection, dynamic loading, runtime registration, and migration from columns→attributes), see:
27
+ - examples/doc_samples/report_formats.md
28
+
60
29
  WARNING: files that start with "X" are in-progress placeholders that are not meant to be used..they will mature and
61
30
  evolve.
62
31
 
@@ -142,10 +111,34 @@ print(cfg.Logging.enable_logging)
142
111
  python scripts/validate_env.py --env config/env
143
112
  python scripts/validate_env.py # auto-detects ./config/env or ./.env
144
113
 
145
- - Run tests (requires Poetry):
114
+ ### Testing
115
+
116
+ By default, running pytest executes unit tests that use monkeypatching/fakes and do not contact a live Egeria.
117
+
118
+ - Run unit tests (recommended default):
146
119
  poetry install
147
120
  poetry run pytest -v
148
121
 
122
+ You can also run tests live against a local Egeria instance. Enable live mode with either a CLI flag or an environment variable. In live mode, tests marked as `unit` are skipped and live tests run using a real Client2 connection.
123
+
124
+ - Enable live mode via CLI:
125
+ poetry run pytest -q --live-egeria
126
+
127
+ - Or enable via environment variable:
128
+ PYEG_LIVE_EGERIA=1 poetry run pytest -q
129
+
130
+ Default live connection parameters (can be overridden via env):
131
+ - server_name = "qs-view-server" (override with PYEG_SERVER_NAME)
132
+ - platform_url = "https://localhost:9443" (override with PYEG_PLATFORM_URL)
133
+ - user_id = "peterprofile" (override with PYEG_USER_ID)
134
+ - user_pwd = "secret" (override with PYEG_USER_PWD)
135
+
136
+ Notes:
137
+ - SSL verification is controlled by pyegeria._globals.enable_ssl_check, which defaults to False in this repo to support localhost/self-signed certs.
138
+ - See tests/conftest.py for the live test fixtures and switches.
139
+
140
+ ### Troubleshooting
141
+
149
142
  ### Troubleshooting
150
143
 
151
144
  - If your env doesn’t seem to apply, confirm which config.json is used (the loader checks PYEGERIA_CONFIG_DIRECTORY first, then PYEGERIA_ROOT_PATH, then ./config.json).
@@ -156,4 +149,4 @@ print(cfg.Logging.enable_logging)
156
149
 
157
150
  ----
158
151
  License: [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/),
159
- Copyright Contributors to the ODPi Egeria project.
152
+ Copyright Contributors to the ODPi Egeria project.
@@ -151,7 +151,7 @@ def display_command_terms(
151
151
  file_name = f"Command-Help-{time.strftime('%Y-%m-%d-%H-%M-%S')}-{action}.md"
152
152
  full_file_path = os.path.join(file_path, file_name)
153
153
  os.makedirs(os.path.dirname(full_file_path), exist_ok=True)
154
- output = g_client.find_glossary_terms(search_string, output_format=output_format, output_format_set="Help-Terms")
154
+ output = g_client.find_glossary_terms(search_string, output_format=output_format, report_spec="Help-Terms")
155
155
  if output == "NO_TERMS_FOUND":
156
156
  print(f"\n==> No commands found for search string '{search_string}'")
157
157
  return
@@ -36,7 +36,7 @@ config_logging()
36
36
  out_struct = {
37
37
  "formats": {
38
38
  "types": ["ALL"],
39
- "columns": [
39
+ "attributes": [
40
40
  {'name': 'display_name', 'key': 'display_name'},
41
41
  {'name': 'qualified_name', 'key': 'qualified_name', 'format': True},
42
42
  {'name': 'description', 'key': 'description', 'format': True},
@@ -139,7 +139,7 @@ def display_collections(
139
139
 
140
140
  collections = m_client.find_collections(
141
141
  search_string.strip(), None, ["Collection"],True, False, ignore_case=True,
142
- output_format = "DICT", output_format_set=out_struct
142
+ output_format = "DICT", report_spec=out_struct
143
143
  )
144
144
  if type(collections) is list:
145
145
 
@@ -3,7 +3,7 @@
3
3
  SPDX-License-Identifier: Apache-2.0
4
4
  Copyright Contributors to the ODPi Egeria project.
5
5
 
6
- A command that takes an output format set name, looks up the format set using select_output_format_set,
6
+ A command that takes an output format set name, looks up the format set using select_report_spec,
7
7
  and invokes the specified function with parameters filled from command line arguments.
8
8
 
9
9
  This command works with any format set defined in output_formatter.py that has an "action" property.
@@ -55,12 +55,12 @@ from pyegeria import (
55
55
  NO_ELEMENTS_FOUND, GovernanceOfficer, GlossaryManager, print_validation_error,
56
56
  )
57
57
  from pyegeria.config import settings
58
- from pyegeria.external_references import ExternalReferences
58
+ from pyegeria.external_links import ExternalReferences
59
59
  from pyegeria.logging_configuration import config_logging
60
60
  from pyegeria._output_format_models import load_format_sets_from_json
61
- from pyegeria._output_formats import (select_output_format_set, get_output_format_set_heading,
62
- load_user_format_sets, load_output_format_sets,
63
- get_output_format_set_description)
61
+ from pyegeria.base_report_formats import (select_report_format, get_report_format_heading,
62
+ load_user_report_specs, load_report_specs,
63
+ get_report_format_description)
64
64
  from pyegeria._exceptions_new import PyegeriaException, print_exception_response
65
65
 
66
66
  # pydevd_pycharm.settrace('host.docker.internal', # Use 'host.docker.internal' to connect to the host machine
@@ -122,7 +122,7 @@ def execute_format_set_action(
122
122
  # Get the output format set
123
123
  # logger.info(f"Entering execute_format_set_action, format set name: {format_set_name}, search_string: {kwargs.get('search_string',"meow")}")
124
124
  # logger.info(json.dumps(kwargs, indent=2))
125
- format_set = select_output_format_set(format_set_name, output_format)
125
+ format_set = select_report_format(format_set_name, output_format)
126
126
  if not format_set:
127
127
  print(f"Error: Output format set '{format_set_name}' does not have a format compatible with output format '{output_format}'.")
128
128
  return
@@ -154,7 +154,7 @@ def execute_format_set_action(
154
154
  params.update(spec_params)
155
155
 
156
156
  params['output_format'] = output_format
157
- params['output_format_set'] = format_set_name
157
+ params['report_spec'] = format_set_name
158
158
 
159
159
  # Determine the appropriate client class based on the format set name or function
160
160
  client_class = None
@@ -206,8 +206,8 @@ def execute_format_set_action(
206
206
  client.create_egeria_bearer_token()
207
207
 
208
208
  # Get heading and description information
209
- heading = get_output_format_set_heading(format_set_name)
210
- desc = get_output_format_set_description(format_set_name)
209
+ heading = get_report_format_heading(format_set_name)
210
+ desc = get_report_format_description(format_set_name)
211
211
  preamble = f"# {heading}\n{desc}\n\n" if heading and desc else ""
212
212
 
213
213
  try:
@@ -366,14 +366,14 @@ def main():
366
366
 
367
367
  # Get the format set to determine parameters
368
368
  format_set_name = initial_args.report
369
- format_set = select_output_format_set(format_set_name, "ANY")
369
+ format_set = select_report_format(format_set_name, "ANY")
370
370
 
371
371
  # Check if the format set exists
372
372
  if not format_set:
373
373
  print(f"Error: Format set for '{format_set_name}' not found.")
374
374
  print("Available format sets:")
375
- from pyegeria._output_formats import output_format_set_list
376
- for name in output_format_set_list():
375
+ from pyegeria.base_report_formats import report_spec_list
376
+ for name in report_spec_list():
377
377
  print(f" - {name}")
378
378
  return
379
379
 
@@ -81,9 +81,7 @@ def display_archive_list(
81
81
  open_metadata_type_name = None
82
82
  property_value = "omarchive"
83
83
  property_names = ["fileExtension"]
84
- archives = c_client.get_elements_by_property_value(
85
- property_value, property_names, open_metadata_type_name
86
- )
84
+ archives = c_client.get_elements_by_property_value(property_value, property_names, open_metadata_type_name)
87
85
 
88
86
  if type(archives) != list:
89
87
  raise ValueError("--> No archives found")
@@ -25,7 +25,7 @@ from pyegeria import (
25
25
  )
26
26
  from pyegeria.config import settings, get_app_config
27
27
  from pyegeria.logging_configuration import config_logging
28
- from pyegeria._output_formats import (select_output_format_set, get_output_format_set_heading, get_output_format_set_description)
28
+ from pyegeria.base_report_formats import (select_report_spec, get_report_spec_heading, get_report_spec_description)
29
29
  from pyegeria._exceptions_new import (PyegeriaException, print_basic_exception, print_validation_error,
30
30
  PyegeriaInvalidParameterException, PyegeriaConnectionException,
31
31
  PyegeriaAPIException, PyegeriaUnknownException, print_exception_table
@@ -92,7 +92,7 @@ try:
92
92
  qualified_name = client.__create_qualified_name__("Folder", display_name)
93
93
 
94
94
  props_body = {
95
- "class": "CollectionProperties",
95
+ "class": "DigitalProductCatalogProperties",
96
96
  "qualifiedName": qualified_name,
97
97
  "displayName": display_name,
98
98
  "description": description,
@@ -108,14 +108,13 @@ try:
108
108
  "parentRelationshipTypeName": "CollectionMembership",
109
109
  "parentAtEnd1": True,
110
110
  "properties": props_body,
111
- "initialClassifications": {"Folder": {"class": "ClassificationProperties"}}
112
111
  }
113
112
  marketplace = client.get_collections_by_name(qualified_name)
114
113
  if isinstance(marketplace, dict | list):
115
114
  marketplace_guid = marketplace[0]['elementHeader']['guid']
116
115
  print(f"Found marketplace guid of {marketplace_guid}")
117
116
  else:
118
- marketplace_guid = client.create_folder_collection(body=request_body)
117
+ marketplace_guid = client.create_digital_product_catalog(body=request_body)
119
118
  logger.success(f"Created folder collection for marketplace: {marketplace_guid}")
120
119
  #
121
120
  # GeoSpatial Products folder
@@ -126,7 +125,7 @@ try:
126
125
  qualified_name = client.__create_qualified_name__("Folder", display_name)
127
126
 
128
127
  props_body = {
129
- "class": "CollectionProperties",
128
+ "class": "DigitalProductCatalogProperties",
130
129
  "qualifiedName": qualified_name,
131
130
  "displayName": display_name,
132
131
  "description": description,
@@ -141,14 +140,13 @@ try:
141
140
  "parentRelationshipTypeName": "CollectionMembership",
142
141
  "parentAtEnd1": True,
143
142
  "properties": props_body,
144
- "initialClassifications": {"Folder": {"class": "ClassificationProperties"}}
145
143
  }
146
144
  geo_prods = client.get_collections_by_name(qualified_name)
147
145
  if isinstance(geo_prods, dict | list):
148
146
  geo_prods_guid = geo_prods[0]['elementHeader']['guid']
149
147
  print(f"Found geo_prods guid of {geo_prods_guid}")
150
148
  else:
151
- geo_prods_guid = client.create_folder_collection(body=request_body)
149
+ geo_prods_guid = client.create_digital_product_catalog(body=request_body)
152
150
  logger.success(f"Created folder collection for geoprods: {geo_prods_guid}")
153
151
  #
154
152
  # Agricultural Products Folder
@@ -160,7 +158,7 @@ try:
160
158
 
161
159
  props_body = {
162
160
 
163
- "class": "CollectionProperties",
161
+ "class": "DigitalProductCatalogProperties",
164
162
  "qualifiedName": qualified_name,
165
163
  "displayName": display_name,
166
164
  "description": description,
@@ -175,15 +173,13 @@ try:
175
173
  "parentGUID": marketplace_guid,
176
174
  "parentRelationshipTypeName": "CollectionMembership",
177
175
  "parentAtEnd1": True,
178
- "properties": props_body,
179
- "initialClassifications": {"Folder": {"class": "ClassificationProperties"}}
180
- }
176
+ "properties": props_body, }
181
177
  ag_prods = client.get_collections_by_name(qualified_name)
182
178
  if isinstance(ag_prods, dict | list):
183
179
  ag_prods_guid = ag_prods[0]['elementHeader']['guid']
184
180
  print(f"Found ag_prods guid of {ag_prods_guid}")
185
181
  else:
186
- ag_prods_guid = client.create_folder_collection(body=request_body)
182
+ ag_prods_guid = client.create_digital_product_catalog(body=request_body)
187
183
  logger.success(f"Created folder collection for ag products: {ag_prods_guid}")
188
184
  #
189
185
  # Folder to hold Prepared Imagery Products
@@ -194,7 +190,7 @@ try:
194
190
  qualified_name = client.__create_qualified_name__("Folder", display_name)
195
191
 
196
192
  props_body = {
197
- "class": "CollectionProperties",
193
+ "class": "DigitalProductCatalogProperties",
198
194
  "qualifiedName": qualified_name,
199
195
  "displayName": display_name,
200
196
  "description": description,
@@ -209,14 +205,13 @@ try:
209
205
  "parentRelationshipTypeName": "CollectionMembership",
210
206
  "parentAtEnd1": True,
211
207
  "properties": props_body,
212
- "initialClassifications": {"Folder": {"class": "ClassificationProperties"}}
213
208
  }
214
209
  prepared_imagery = client.get_collections_by_name(qualified_name)
215
210
  if isinstance(prepared_imagery, dict | list):
216
211
  prepared_imagery_guid = prepared_imagery[0]['elementHeader']['guid']
217
212
  print(f"Found prepared_imagery guid of {prepared_imagery_guid}")
218
213
  else:
219
- prepared_imagery_guid = client.create_folder_collection(body=request_body)
214
+ prepared_imagery_guid = client.create_digital_product_catalog(body=request_body)
220
215
  logger.success(f"Created folder for prepared imagery products: {prepared_imagery_guid}")
221
216
  #
222
217
  # A digital product covering NDVI - derived from Sentinel 2
@@ -247,7 +242,6 @@ try:
247
242
  "parentRelationshipTypeName": "CollectionMembership",
248
243
  "parentAtEnd1": True,
249
244
  "properties": props_body,
250
- "initialClassifications": {"Folder": {"class": "ClassificationProperties"}}
251
245
  }
252
246
 
253
247
  ndvi = client.get_collections_by_name(qualified_name)
@@ -266,7 +260,7 @@ try:
266
260
  qualified_name = client.__create_qualified_name__("Folder", display_name)
267
261
 
268
262
  props_body = {
269
- "class": "CollectionProperties",
263
+ "class": "DigitalProductCatalogProperties",
270
264
  "qualifiedName": qualified_name,
271
265
  "displayName": display_name,
272
266
  "description": description,
@@ -281,14 +275,13 @@ try:
281
275
  "parentRelationshipTypeName": "CollectionMembership",
282
276
  "parentAtEnd1": True,
283
277
  "properties": props_body,
284
- "initialClassifications": {"Folder": {"class": "ClassificationProperties"}}
285
278
  }
286
279
  raw_imagery = client.get_collections_by_name(qualified_name)
287
280
  if isinstance(raw_imagery, dict | list):
288
281
  raw_imagery_guid = raw_imagery[0]['elementHeader']['guid']
289
282
  print(f"Found raw_imagery guid of {raw_imagery_guid}")
290
283
  else:
291
- raw_imagery_guid = client.create_folder_collection(body=request_body)
284
+ raw_imagery_guid = client.create_digital_product_catalog(body=request_body)
292
285
  logger.success(f"Created folder for raw imagery products: {raw_imagery_guid}")
293
286
  #
294
287
  # A digital product providing Sentinel-2a imagery
@@ -319,7 +312,6 @@ try:
319
312
  "parentRelationshipTypeName": "CollectionMembership",
320
313
  "parentAtEnd1": True,
321
314
  "properties": props_body,
322
- "initialClassifications": {"Folder": {"class": "ClassificationProperties"}}
323
315
  }
324
316
  sentinel2a = client.get_collections_by_name(qualified_name)
325
317
  if isinstance(sentinel2a, dict | list):
@@ -357,7 +349,6 @@ try:
357
349
  "parentRelationshipTypeName": "CollectionMembership",
358
350
  "parentAtEnd1": True,
359
351
  "properties": props_body,
360
- "initialClassifications": {"Folder": {"class": "ClassificationProperties"}}
361
352
  }
362
353
  subscriptions_folder = client.get_collections_by_name(qualified_name)
363
354
  if isinstance(subscriptions_folder, dict | list):
@@ -451,7 +442,6 @@ try:
451
442
  "parentRelationshipTypeName": "CollectionMembership",
452
443
  "parentAtEnd1": True,
453
444
  "properties": props_body,
454
- "initialClassifications": {"Folder": {"class": "ClassificationProperties"}}
455
445
  }
456
446
  license_type_folder = client.get_collections_by_name(qualified_name)
457
447
  if not isinstance(license_type_folder, dict | list):
@@ -9,7 +9,7 @@
9
9
  "types": [
10
10
  "ALL"
11
11
  ],
12
- "columns": [
12
+ "attributes": [
13
13
  {
14
14
  "name": "Display Name",
15
15
  "key": "display_name",
@@ -129,7 +129,7 @@
129
129
  "types": [
130
130
  "DICT"
131
131
  ],
132
- "columns": [
132
+ "attributes": [
133
133
  {
134
134
  "name": "Display Name",
135
135
  "key": "display_name",
@@ -176,7 +176,7 @@
176
176
  "types": [
177
177
  "TABLE"
178
178
  ],
179
- "columns": [
179
+ "attributes": [
180
180
  {
181
181
  "name": "Display Name",
182
182
  "key": "display_name",
@@ -203,7 +203,7 @@
203
203
  "types": [
204
204
  "ALL"
205
205
  ],
206
- "columns": [
206
+ "attributes": [
207
207
  {
208
208
  "name": "Display Name",
209
209
  "key": "display_name",
@@ -255,7 +255,7 @@
255
255
  "types": [
256
256
  "DICT"
257
257
  ],
258
- "columns": [
258
+ "attributes": [
259
259
  {
260
260
  "name": "Display Name",
261
261
  "key": "display_name",
@@ -302,7 +302,7 @@
302
302
  "types": [
303
303
  "TABLE"
304
304
  ],
305
- "columns": [
305
+ "attributes": [
306
306
  {
307
307
  "name": "Display Name",
308
308
  "key": "display_name",
@@ -351,7 +351,7 @@
351
351
  "types": [
352
352
  "REPORT"
353
353
  ],
354
- "columns": [
354
+ "attributes": [
355
355
  {
356
356
  "name": "Display Name",
357
357
  "key": "display_name",
@@ -444,7 +444,7 @@
444
444
  "types": [
445
445
  "ALL"
446
446
  ],
447
- "columns": [
447
+ "attributes": [
448
448
  {
449
449
  "name": "Display Name",
450
450
  "key": "display_name",
@@ -487,7 +487,7 @@
487
487
  "types": [
488
488
  "ALL"
489
489
  ],
490
- "columns": [
490
+ "attributes": [
491
491
  {
492
492
  "name": "Display Name",
493
493
  "key": "display_name",
@@ -542,7 +542,7 @@
542
542
  "REPORT",
543
543
  "HTML"
544
544
  ],
545
- "columns": [
545
+ "attributes": [
546
546
  {
547
547
  "name": "Display Name",
548
548
  "key": "display_name",
@@ -574,7 +574,7 @@
574
574
  "types": [
575
575
  "MERMAID"
576
576
  ],
577
- "columns": [
577
+ "attributes": [
578
578
  {
579
579
  "name": "Display Name",
580
580
  "key": "display_name",
@@ -591,7 +591,7 @@
591
591
  "types": [
592
592
  "ALL"
593
593
  ],
594
- "columns": [
594
+ "attributes": [
595
595
  {
596
596
  "name": "Display Name",
597
597
  "key": "display_name",
@@ -647,7 +647,7 @@
647
647
  "types": [
648
648
  "ALL"
649
649
  ],
650
- "columns": [
650
+ "attributes": [
651
651
  {
652
652
  "name": "Display Name",
653
653
  "key": "display_name",
@@ -699,7 +699,7 @@
699
699
  "types": [
700
700
  "ALL"
701
701
  ],
702
- "columns": [
702
+ "attributes": [
703
703
  {
704
704
  "name": "Display Name",
705
705
  "key": "display_name",
@@ -747,7 +747,7 @@
747
747
  "types": [
748
748
  "TABLE"
749
749
  ],
750
- "columns": [
750
+ "attributes": [
751
751
  {
752
752
  "name": "Display Name",
753
753
  "key": "display_name",
@@ -780,7 +780,7 @@
780
780
  "DICT",
781
781
  "LIST"
782
782
  ],
783
- "columns": [
783
+ "attributes": [
784
784
  {
785
785
  "name": "Display Name",
786
786
  "key": "display_name",
@@ -814,7 +814,7 @@
814
814
  "MERMAID",
815
815
  "HTML"
816
816
  ],
817
- "columns": [
817
+ "attributes": [
818
818
  {
819
819
  "name": "Display Name",
820
820
  "key": "display_name",
@@ -856,7 +856,7 @@
856
856
  "types": [
857
857
  "ALL"
858
858
  ],
859
- "columns": [
859
+ "attributes": [
860
860
  {
861
861
  "name": "Display Name",
862
862
  "key": "display_name",
@@ -12,7 +12,7 @@
12
12
  "types": [
13
13
  "TABLE"
14
14
  ],
15
- "columns": [
15
+ "attributes": [
16
16
  {
17
17
  "name": "ID",
18
18
  "key": "id",
@@ -35,7 +35,7 @@
35
35
  "DETAIL",
36
36
  "FORM"
37
37
  ],
38
- "columns": [
38
+ "attributes": [
39
39
  {
40
40
  "name": "ID",
41
41
  "key": "id",
@@ -78,7 +78,7 @@
78
78
  "TECHNICAL",
79
79
  "DICT"
80
80
  ],
81
- "columns": [
81
+ "attributes": [
82
82
  {
83
83
  "name": "ID",
84
84
  "key": "id",
@@ -135,7 +135,7 @@
135
135
  "types": [
136
136
  "TABLE"
137
137
  ],
138
- "columns": [
138
+ "attributes": [
139
139
  {
140
140
  "name": "ID",
141
141
  "key": "id",
@@ -158,7 +158,7 @@
158
158
  "DETAIL",
159
159
  "FORM"
160
160
  ],
161
- "columns": [
161
+ "attributes": [
162
162
  {
163
163
  "name": "ID",
164
164
  "key": "id",
@@ -201,7 +201,7 @@
201
201
  "FULL",
202
202
  "REPORT"
203
203
  ],
204
- "columns": [
204
+ "attributes": [
205
205
  {
206
206
  "name": "ID",
207
207
  "key": "id",