pyegeria 5.4.8.4__tar.gz → 5.4.9.9__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.

Potentially problematic release.


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

Files changed (282) hide show
  1. {pyegeria-5.4.8.4/pyegeria.egg-info → pyegeria-5.4.9.9}/PKG-INFO +31 -5
  2. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/README.md +28 -1
  3. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/__init__.py +4 -10
  4. pyegeria-5.4.9.9/commands/cat/collection_actions.py +202 -0
  5. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/cat/exp_list_glossaries.py +8 -7
  6. pyegeria-5.4.9.9/commands/cat/get_asset_graph.py +89 -0
  7. pyegeria-5.4.8.4/commands/cat/get_collection.py → pyegeria-5.4.9.9/commands/cat/get_collection_tree.py +3 -5
  8. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/cat/get_project_dependencies.py +10 -9
  9. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/cat/get_project_structure.py +2 -2
  10. pyegeria-5.4.9.9/commands/cat/get_tech_type_elements.py +72 -0
  11. pyegeria-5.4.9.9/commands/cat/glossary_actions.py +359 -0
  12. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/cat/list_assets.py +0 -1
  13. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/cat/list_cert_types.py +15 -61
  14. pyegeria-5.4.9.9/commands/cat/list_collections.py +121 -0
  15. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/cat/list_deployed_catalogs.py +15 -27
  16. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/cat/list_deployed_database_schemas.py +27 -43
  17. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/cat/list_deployed_databases.py +15 -28
  18. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/cat/list_deployed_servers.py +33 -52
  19. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/cat/list_glossaries.py +3 -1
  20. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/cat/list_projects.py +3 -2
  21. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/cat/list_tech_type_elements.py +21 -37
  22. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/cat/list_tech_types.py +13 -25
  23. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/cat/list_terms.py +25 -49
  24. pyegeria-5.4.9.9/commands/cat/my_reports.py +561 -0
  25. pyegeria-5.4.9.9/commands/cat/run_report.py +388 -0
  26. pyegeria-5.4.8.4/commands/cat/run_report.py → pyegeria-5.4.9.9/commands/cat/run_report_orig.py +85 -9
  27. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/cli/egeria.py +173 -210
  28. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/cli/egeria_cat.py +10 -40
  29. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/cli/egeria_my.py +13 -0
  30. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/cli/egeria_ops.py +69 -74
  31. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/cli/egeria_tech.py +14 -90
  32. {pyegeria-5.4.8.4/commands/cat → pyegeria-5.4.9.9/commands/deprecated}/list_data_designer.py +1 -0
  33. pyegeria-5.4.8.4/commands/cat/get_asset_graph.py → pyegeria-5.4.9.9/commands/deprecated/old_get_asset_graph.py +3 -5
  34. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/ops/list_archives.py +15 -34
  35. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/ops/list_catalog_targets.py +16 -25
  36. pyegeria-5.4.8.4/commands/ops/monitor_engine_activity.py → pyegeria-5.4.9.9/commands/ops/monitor_active_engine_activity.py +20 -35
  37. pyegeria-5.4.8.4/commands/ops/monitor_integ_daemon_status.py → pyegeria-5.4.9.9/commands/ops/monitor_daemon_status.py +31 -40
  38. pyegeria-5.4.8.4/commands/ops/monitor_engine_activity_c.py → pyegeria-5.4.9.9/commands/ops/monitor_engine_activity.py +42 -56
  39. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/ops/monitor_platform_status.py +33 -45
  40. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/tech/get_element_info.py +20 -29
  41. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/tech/get_guid_info.py +23 -42
  42. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/tech/get_tech_details.py +20 -35
  43. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/tech/get_tech_type_template.py +28 -39
  44. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/tech/list_all_om_type_elements.py +24 -30
  45. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/tech/list_all_om_type_elements_x.py +22 -28
  46. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/tech/list_all_related_elements.py +19 -28
  47. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/tech/list_anchored_elements.py +20 -28
  48. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/tech/list_asset_types.py +19 -24
  49. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/tech/list_elements_by_classification_by_property_value.py +19 -25
  50. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/tech/list_elements_by_property_value.py +19 -25
  51. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/tech/list_elements_by_property_value_x.py +20 -28
  52. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/tech/list_elements_for_classification.py +31 -40
  53. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/tech/list_gov_action_processes.py +12 -19
  54. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/tech/list_information_supply_chains.py +22 -30
  55. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/tech/list_registered_services.py +14 -26
  56. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/tech/list_related_elements_with_prop_value.py +15 -25
  57. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/tech/list_relationship_types.py +15 -25
  58. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/tech/list_relationships.py +20 -36
  59. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/tech/list_solution_blueprints.py +28 -33
  60. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/tech/list_solution_components.py +23 -29
  61. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/tech/list_solution_roles.py +21 -32
  62. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/tech/list_tech_templates.py +48 -51
  63. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/tech/table_tech_templates.py +1 -1
  64. pyegeria-5.4.9.9/config/__init__.py +0 -0
  65. pyegeria-5.4.9.9/config/config.json +51 -0
  66. pyegeria-5.4.9.9/config/config_workspaces.json +48 -0
  67. pyegeria-5.4.9.9/config/dw-format-sets.json +936 -0
  68. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/examples/GeoSpatial Products Example.py +3 -3
  69. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/examples/format_sets_save_load_example.py +40 -40
  70. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/examples/output_formats_example.py +31 -31
  71. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/md_processing/__init__.py +7 -1
  72. pyegeria-5.4.9.9/md_processing/data/commands.json +17568 -0
  73. pyegeria-5.4.8.4/md_processing/data/commands-working.json → pyegeria-5.4.9.9/md_processing/data/commands_working.json +9304 -13513
  74. pyegeria-5.4.9.9/md_processing/data/gened_report_specs.py +6584 -0
  75. pyegeria-5.4.9.9/md_processing/data/generated_format_sets.json +6533 -0
  76. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/md_processing/dr_egeria.py +20 -9
  77. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/md_processing/md_commands/data_designer_commands.py +3 -3
  78. pyegeria-5.4.9.9/md_processing/md_commands/feedback_commands.py +740 -0
  79. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/md_processing/md_commands/glossary_commands.py +2 -2
  80. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/md_processing/md_commands/product_manager_commands.py +2 -2
  81. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/md_processing/md_commands/project_commands.py +1 -1
  82. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/md_processing/md_commands/solution_architect_commands.py +176 -145
  83. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/md_processing/md_commands/view_commands.py +13 -3
  84. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/md_processing/md_processing_utils/common_md_proc_utils.py +22 -12
  85. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/md_processing/md_processing_utils/common_md_utils.py +3 -3
  86. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/md_processing/md_processing_utils/extraction_utils.py +13 -6
  87. pyegeria-5.4.8.4/md_processing/md_processing_utils/gen_format_sets.py → pyegeria-5.4.9.9/md_processing/md_processing_utils/gen_report_specs.py +264 -42
  88. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/md_processing/md_processing_utils/generate_dr_help.py +15 -3
  89. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/md_processing/md_processing_utils/generate_md_cmd_templates.py +16 -6
  90. pyegeria-5.4.9.9/md_processing/md_processing_utils/md_processing_constants.py +1228 -0
  91. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/pyegeria/__init__.py +10 -9
  92. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/pyegeria/_base_client.py +16 -27
  93. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/pyegeria/_client_new.py +261 -132
  94. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/pyegeria/_exceptions_new.py +41 -27
  95. pyegeria-5.4.9.9/pyegeria/_globals.py +60 -0
  96. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/pyegeria/_output_format_models.py +45 -3
  97. pyegeria-5.4.8.4/pyegeria/asset_catalog_omvs.py → pyegeria-5.4.9.9/pyegeria/asset_catalog.py +204 -320
  98. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/pyegeria/automated_curation.py +309 -44
  99. pyegeria-5.4.9.9/pyegeria/base_report_formats.py +2184 -0
  100. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/pyegeria/classification_manager.py +171 -167
  101. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/pyegeria/collection_manager.py +11 -16
  102. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/pyegeria/config.py +32 -13
  103. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/pyegeria/data_designer.py +1 -1
  104. {pyegeria-5.4.8.4/pyegeria → pyegeria-5.4.9.9/pyegeria/deprecated}/runtime_manager_omvs.py +11 -26
  105. pyegeria-5.4.9.9/pyegeria/dr_egeria_reports.py +56 -0
  106. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/pyegeria/egeria_cat_client.py +1 -1
  107. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/pyegeria/egeria_client.py +7 -7
  108. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/pyegeria/egeria_tech_client.py +2 -2
  109. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/pyegeria/format_set_executor.py +94 -19
  110. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/pyegeria/glossary_manager.py +91 -1
  111. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/pyegeria/governance_officer.py +146 -10
  112. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/pyegeria/models.py +1 -0
  113. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/pyegeria/output_formatter.py +64 -7
  114. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/pyegeria/project_manager.py +112 -6
  115. pyegeria-5.4.9.9/pyegeria/runtime_manager.py +2285 -0
  116. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/pyegeria/solution_architect.py +105 -65
  117. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/pyegeria/utils.py +30 -0
  118. pyegeria-5.4.9.9/pyegeria/valid_metadata.py +3097 -0
  119. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9/pyegeria.egg-info}/PKG-INFO +31 -5
  120. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/pyegeria.egg-info/SOURCES.txt +29 -17
  121. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/pyegeria.egg-info/entry_points.txt +9 -11
  122. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/pyegeria.egg-info/requires.txt +2 -3
  123. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/pyegeria.egg-info/top_level.txt +1 -0
  124. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/pyproject.toml +26 -21
  125. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/tests/test_asset_catalog_omvs.py +32 -36
  126. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/tests/test_automated_curation_omvs.py +79 -32
  127. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/tests/test_classification_manager_omvs.py +20 -16
  128. pyegeria-5.4.9.9/tests/test_client_new.py +358 -0
  129. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/tests/test_collection_manager_omvs.py +8 -6
  130. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/tests/test_data_designer.py +4 -4
  131. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/tests/test_glossary_manager_omvs.py +1 -1
  132. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/tests/test_governance_officer_omvs.py +42 -9
  133. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/tests/test_output_formats.py +21 -0
  134. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/tests/test_project_manager_omvs.py +38 -34
  135. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/tests/test_runtime_manager.py +2 -2
  136. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/tests/test_solution_architect_omvs.py +61 -27
  137. pyegeria-5.4.9.9/tests/test_valid_metadata_omvs.py +769 -0
  138. pyegeria-5.4.8.4/commands/cat/get_tech_type_elements.py +0 -172
  139. pyegeria-5.4.8.4/commands/cat/glossary_actions.py +0 -512
  140. pyegeria-5.4.8.4/commands/cat/list_collections.py +0 -235
  141. pyegeria-5.4.8.4/commands/ops/monitor_asset_events.py +0 -108
  142. pyegeria-5.4.8.4/md_processing/data/commands.json +0 -59580
  143. pyegeria-5.4.8.4/md_processing/md_processing_utils/md_processing_constants.py +0 -357
  144. pyegeria-5.4.8.4/pyegeria/_globals.py +0 -143
  145. pyegeria-5.4.8.4/pyegeria/base_report_formats.py +0 -2865
  146. pyegeria-5.4.8.4/pyegeria/feedback_manager_omvs.py +0 -4353
  147. pyegeria-5.4.8.4/tests/test_client_new.py +0 -182
  148. pyegeria-5.4.8.4/tests/test_valid_metadata_omvs.py +0 -422
  149. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/LICENSE +0 -0
  150. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/MANIFEST.in +0 -0
  151. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/cat/Dr-Egeria_md-orig.py +0 -0
  152. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/cat/__init__.py +0 -0
  153. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/cat/dr_egeria_command_help.py +0 -0
  154. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/cat/dr_egeria_jupyter.py +0 -0
  155. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/cat/dr_egeria_md.py +0 -0
  156. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/cat/list_todos.py +0 -0
  157. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/cat/list_user_ids.py +0 -0
  158. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/cli/__init__.py +0 -0
  159. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/cli/egeria_login_tui.py +0 -0
  160. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/cli/ops_config.py +0 -0
  161. {pyegeria-5.4.8.4/commands/cat → pyegeria-5.4.9.9/commands/deprecated}/list_data_structures_full.py +0 -0
  162. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/my/__init__.py +0 -0
  163. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/my/list_my_profile.py +0 -0
  164. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/my/list_my_roles.py +0 -0
  165. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/my/monitor_my_todos.py +0 -0
  166. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/my/monitor_open_todos.py +0 -0
  167. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/my/todo_actions.py +0 -0
  168. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/ops/__init__.py +0 -0
  169. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/ops/gov_server_actions.py +0 -0
  170. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/ops/load_archive.py +0 -0
  171. /pyegeria-5.4.8.4/commands/ops/monitor_gov_eng_status.py → /pyegeria-5.4.9.9/commands/ops/monitor_engine_status.py +0 -0
  172. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/ops/monitor_server_startup.py +0 -0
  173. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/ops/monitor_server_status.py +0 -0
  174. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/ops/orig_monitor_server_list.py +0 -0
  175. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/ops/orig_monitor_server_status.py +0 -0
  176. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/ops/refresh_integration_daemon.py +0 -0
  177. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/ops/restart_integration_daemon.py +0 -0
  178. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/ops/table_integ_daemon_status.py +0 -0
  179. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/ops/x_engine_actions.py +0 -0
  180. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/tech/__init__.py +0 -0
  181. /pyegeria-5.4.8.4/commands/tech/generic_actions.py → /pyegeria-5.4.9.9/commands/tech/element_actions.py +0 -0
  182. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/tech/list_related_specification.py +0 -0
  183. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/tech/list_valid_metadata_values.py +0 -0
  184. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/commands/tech/x_list_related_elements.py +0 -0
  185. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/examples/Coco_config/README.md +0 -0
  186. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/examples/Coco_config/__init__.py +0 -0
  187. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/examples/Coco_config/config_cocoMDS1.py +0 -0
  188. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/examples/Coco_config/config_cocoMDS2.py +0 -0
  189. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/examples/Coco_config/config_cocoMDS3.py +0 -0
  190. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/examples/Coco_config/config_cocoMDS4.py +0 -0
  191. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/examples/Coco_config/config_cocoMDS5.py +0 -0
  192. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/examples/Coco_config/config_cocoMDS6.py +0 -0
  193. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/examples/Coco_config/config_cocoMDSx.py +0 -0
  194. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/examples/Coco_config/config_cocoView1.py +0 -0
  195. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/examples/Coco_config/config_coco_core.py +0 -0
  196. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/examples/Coco_config/config_coco_datalake.py +0 -0
  197. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/examples/Coco_config/config_exchangeDL01.py +0 -0
  198. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/examples/Coco_config/config_governDL01.py +0 -0
  199. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/examples/Coco_config/config_monitorDev01.py +0 -0
  200. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/examples/Coco_config/config_monitorGov01.py +0 -0
  201. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/examples/Coco_config/globals.py +0 -0
  202. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/examples/Jupyter Notebooks/P-egeria-server-config.ipynb +0 -0
  203. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/examples/Jupyter Notebooks/README.md +0 -0
  204. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/examples/Jupyter Notebooks/common/P-environment-check.ipynb +0 -0
  205. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/examples/Jupyter Notebooks/common/__init__.py +0 -0
  206. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/examples/Jupyter Notebooks/common/common-functions.ipynb +0 -0
  207. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/examples/Jupyter Notebooks/common/environment-check.ipynb +0 -0
  208. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/examples/Jupyter Notebooks/common/globals.ipynb +0 -0
  209. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/examples/Jupyter Notebooks/common/globals.py +0 -0
  210. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/examples/Jupyter Notebooks/common/orig_globals.py +0 -0
  211. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/examples/format_sets/all_format_sets.json +0 -0
  212. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/examples/format_sets/custom_format_sets.json +0 -0
  213. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/examples/format_sets/subset_format_sets.json +0 -0
  214. /pyegeria-5.4.8.4/md_processing/data/generated_format_sets.json → /pyegeria-5.4.9.9/md_processing/data/generated_format_sets_old.json +0 -0
  215. /pyegeria-5.4.8.4/md_processing/data/generated_format_sets.py → /pyegeria-5.4.9.9/md_processing/data/generated_format_sets_old.py +0 -0
  216. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/md_processing/md_commands/__init__.py +0 -0
  217. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/md_processing/md_commands/ext_ref_commands.py +0 -0
  218. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/md_processing/md_commands/governance_officer_commands.py +0 -0
  219. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/md_processing/md_processing_utils/__init__.py +0 -0
  220. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/md_processing/md_processing_utils/determine_width.py +0 -0
  221. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/md_processing/md_processing_utils/generate_md_templates.py +0 -0
  222. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/md_processing/md_processing_utils/message_constants.py +0 -0
  223. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/pyegeria/_client.py +0 -0
  224. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/pyegeria/_client_new_backup.py +0 -0
  225. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/pyegeria/_exceptions.py +0 -0
  226. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/pyegeria/_output_formats.py +0 -0
  227. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/pyegeria/_validators.py +0 -0
  228. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/pyegeria/collection_models.py +0 -0
  229. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/pyegeria/core_omag_server_config.py +0 -0
  230. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/pyegeria/create_tech_guid_lists.py +0 -0
  231. {pyegeria-5.4.8.4/pyegeria → pyegeria-5.4.9.9/pyegeria/deprecated}/_deprecated_gov_engine.py +0 -0
  232. {pyegeria-5.4.8.4/pyegeria → pyegeria-5.4.9.9/pyegeria/deprecated}/classification_manager_omvs.py +0 -0
  233. {pyegeria-5.4.8.4/pyegeria → pyegeria-5.4.9.9/pyegeria/deprecated}/valid_metadata_omvs.py +0 -0
  234. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/pyegeria/egeria_config_client.py +0 -0
  235. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/pyegeria/external_links.py +0 -0
  236. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/pyegeria/feedback_manager.py +0 -0
  237. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/pyegeria/full_omag_server_config.py +0 -0
  238. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/pyegeria/load_config.py +0 -0
  239. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/pyegeria/logging_configuration.py +0 -0
  240. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/pyegeria/mcp_adapter.py +0 -0
  241. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/pyegeria/mcp_server.py +0 -0
  242. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/pyegeria/md_processing_utils.py +0 -0
  243. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/pyegeria/mermaid_utilities.py +0 -0
  244. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/pyegeria/metadata_explorer_omvs.py +0 -0
  245. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/pyegeria/my_profile_omvs.py +0 -0
  246. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/pyegeria/output_formatter_with_machine_keys.py +0 -0
  247. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/pyegeria/platform_services.py +0 -0
  248. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/pyegeria/reference_data.py +0 -0
  249. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/pyegeria/registered_info.py +0 -0
  250. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/pyegeria/server_operations.py +0 -0
  251. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/pyegeria/template_manager_omvs.py +0 -0
  252. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/pyegeria/x_action_author_omvs.py +0 -0
  253. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/pyegeria.egg-info/dependency_links.txt +0 -0
  254. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/setup.cfg +0 -0
  255. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/tests/test_client.py +0 -0
  256. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/tests/test_comments.py +0 -0
  257. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/tests/test_config.py +0 -0
  258. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/tests/test_config_unit.py +0 -0
  259. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/tests/test_core_omag_server_config.py +0 -0
  260. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/tests/test_dr_egeria_command_help_modes.py +0 -0
  261. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/tests/test_egeria_cat_client.py +0 -0
  262. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/tests/test_egeria_client.py +0 -0
  263. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/tests/test_egeria_my_client.py +0 -0
  264. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/tests/test_env_settings.py +0 -0
  265. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/tests/test_external_links.py +0 -0
  266. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/tests/test_feedback_manager_omvs.py +0 -0
  267. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/tests/test_format_set_dict.py +0 -0
  268. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/tests/test_full_omag_server_config.py +0 -0
  269. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/tests/test_load_config.py +0 -0
  270. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/tests/test_mcp_adapter.py +0 -0
  271. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/tests/test_metadata_explorer_omvs.py +0 -0
  272. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/tests/test_my_profile_omvs.py +0 -0
  273. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/tests/test_output_format_models_unit.py +0 -0
  274. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/tests/test_output_format_sets_unit.py +0 -0
  275. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/tests/test_output_formatter_deepcopy_isolation.py +0 -0
  276. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/tests/test_output_formatter_dict_collisions.py +0 -0
  277. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/tests/test_platform_services.py +0 -0
  278. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/tests/test_reference_data.py +0 -0
  279. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/tests/test_registered_info.py +0 -0
  280. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/tests/test_root_path.py +0 -0
  281. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/tests/test_server_operations.py +0 -0
  282. {pyegeria-5.4.8.4 → pyegeria-5.4.9.9}/tests/test_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyegeria
3
- Version: 5.4.8.4
3
+ Version: 5.4.9.9
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
@@ -18,7 +18,6 @@ Requires-Dist: requests
18
18
  Requires-Dist: jupyter
19
19
  Requires-Dist: click
20
20
  Requires-Dist: trogon
21
- Requires-Dist: mermaid-py
22
21
  Requires-Dist: psycopg2-binary>=2.9.11
23
22
  Requires-Dist: jupyter-notebook-parser
24
23
  Requires-Dist: loguru
@@ -28,10 +27,10 @@ Requires-Dist: pydantic-settings>=2.10.1
28
27
  Requires-Dist: pydevd-pycharm>=253.27642.35
29
28
  Requires-Dist: wcwidth
30
29
  Requires-Dist: altair
31
- Requires-Dist: modelcontextprotocol
32
- Requires-Dist: mcp>=1.18.0
30
+ Requires-Dist: mcp>=0.1
33
31
  Requires-Dist: markers>=0.3.0
34
32
  Requires-Dist: pytest-asyncio>=1.2.0
33
+ Requires-Dist: python-dotenv>=1.1.1
35
34
  Provides-Extra: test
36
35
  Requires-Dist: pytest; extra == "test"
37
36
  Dynamic: license-file
@@ -46,6 +45,8 @@ Dynamic: license-file
46
45
 
47
46
  # pyegeria: a python client for Egeria
48
47
 
48
+ A lightweight Python 3.12+ client and CLI for the Egeria open metadata and governance platform. It helps you configure and operate Egeria services and work with metadata (assets, glossaries, lineage, etc.) from Python, with examples, tests, and documented report formats.
49
+
49
50
  This is a package for easily using the Egeria
50
51
  open metadata environment from python. Details about the
51
52
  open source Egeria project can be found at [Egeria Project](https://egeria-project.org).
@@ -61,9 +62,34 @@ to visualize and use Egeria. The commands also serve as useful examples.
61
62
 
62
63
  An examples folder holds some useful examples showing different facets of using pyegeria.
63
64
 
64
- For detailed guidance on report formats (selection, dynamic loading, runtime registration, and migration from columns→attributes), see:
65
+ For detailed guidance on report formats (selection and migration from columns→attributes), see:
65
66
  - examples/doc_samples/report_formats.md
66
67
 
68
+ ### Report specs: families and filtering
69
+
70
+ Report specs (aka format sets) can be tagged with an optional `family` string to help organize and discover related specs.
71
+
72
+ - Show names with family and sort by family, then name:
73
+
74
+ ```python
75
+ from pyegeria.base_report_formats import report_spec_list
76
+
77
+ names = report_spec_list(show_family=True, sort_by_family=True)
78
+ for n in names:
79
+ print(n)
80
+ ```
81
+
82
+ - Filter specs by family programmatically:
83
+
84
+ ```python
85
+ from pyegeria.base_report_formats import report_specs
86
+
87
+ # Exact family match (case-insensitive)
88
+ security_specs = report_specs.filter_by_family("Security")
89
+ # Specs with no family assigned
90
+ no_family_specs = report_specs.filter_by_family("")
91
+ ```
92
+
67
93
  WARNING: files that start with "X" are in-progress placeholders that are not meant to be used..they will mature and
68
94
  evolve.
69
95
 
@@ -8,6 +8,8 @@
8
8
 
9
9
  # pyegeria: a python client for Egeria
10
10
 
11
+ A lightweight Python 3.12+ client and CLI for the Egeria open metadata and governance platform. It helps you configure and operate Egeria services and work with metadata (assets, glossaries, lineage, etc.) from Python, with examples, tests, and documented report formats.
12
+
11
13
  This is a package for easily using the Egeria
12
14
  open metadata environment from python. Details about the
13
15
  open source Egeria project can be found at [Egeria Project](https://egeria-project.org).
@@ -23,9 +25,34 @@ to visualize and use Egeria. The commands also serve as useful examples.
23
25
 
24
26
  An examples folder holds some useful examples showing different facets of using pyegeria.
25
27
 
26
- For detailed guidance on report formats (selection, dynamic loading, runtime registration, and migration from columns→attributes), see:
28
+ For detailed guidance on report formats (selection and migration from columns→attributes), see:
27
29
  - examples/doc_samples/report_formats.md
28
30
 
31
+ ### Report specs: families and filtering
32
+
33
+ Report specs (aka format sets) can be tagged with an optional `family` string to help organize and discover related specs.
34
+
35
+ - Show names with family and sort by family, then name:
36
+
37
+ ```python
38
+ from pyegeria.base_report_formats import report_spec_list
39
+
40
+ names = report_spec_list(show_family=True, sort_by_family=True)
41
+ for n in names:
42
+ print(n)
43
+ ```
44
+
45
+ - Filter specs by family programmatically:
46
+
47
+ ```python
48
+ from pyegeria.base_report_formats import report_specs
49
+
50
+ # Exact family match (case-insensitive)
51
+ security_specs = report_specs.filter_by_family("Security")
52
+ # Specs with no family assigned
53
+ no_family_specs = report_specs.filter_by_family("")
54
+ ```
55
+
29
56
  WARNING: files that start with "X" are in-progress placeholders that are not meant to be used..they will mature and
30
57
  evolve.
31
58
 
@@ -13,18 +13,12 @@ from .cat.list_deployed_databases import list_deployed_databases
13
13
  from .cat.list_glossaries import display_glossaries
14
14
  from .cat.list_terms import display_glossary_terms
15
15
  from .ops.list_catalog_targets import display_catalog_targets
16
- from .ops.monitor_engine_activity_c import display_engine_activity_c
17
- from .ops.monitor_gov_eng_status import display_gov_eng_status
18
- from .ops.monitor_integ_daemon_status import display_integration_daemon_status
16
+ from .ops.monitor_engine_activity import display_engine_activity_c
17
+ from .ops.monitor_engine_status import display_gov_eng_status
18
+ from .ops.monitor_daemon_status import display_integration_daemon_status
19
19
  from .ops.table_integ_daemon_status import (
20
20
  display_integration_daemon_status as table_integ_daemon_status,
21
21
  )
22
- from .tech.list_elements_by_property_value import EGERIA_WIDTH
23
22
 
24
23
 
25
- def list_integration_daemon_status(
26
- search_list: str, width: int = EGERIA_WIDTH, sort: bool = True
27
- ):
28
- table_integ_daemon_status(
29
- search_list=search_list, paging=True, width=width, sort=sort
30
- )
24
+
@@ -0,0 +1,202 @@
1
+ """
2
+ SPDX-License-Identifier: Apache-2.0
3
+ Copyright Contributors to the ODPi Egeria project.
4
+
5
+
6
+
7
+ Execute Glossary actions.
8
+
9
+ """
10
+
11
+ import csv
12
+ import json
13
+ import os
14
+ import sys
15
+ import time
16
+ from datetime import datetime
17
+
18
+ import click
19
+
20
+
21
+ from pyegeria import EgeriaTech, body_slimmer, settings
22
+ from pyegeria._exceptions_new import (
23
+ PyegeriaException, print_basic_exception
24
+ )
25
+ app_config = settings.Environment
26
+
27
+ EGERIA_USER = os.environ.get("EGERIA_USER", "erinoverview")
28
+ EGERIA_USER_PASSWORD = os.environ.get("EGERIA_USER_PASSWORD", "secret")
29
+
30
+ COLLECTION_TYPES = ["Collection", "Glossary", "CollectionFolder", "RootCollection", "WorkItemList", "SolutionBlueprint" ]
31
+
32
+
33
+ @click.command("add-element-to-collection")
34
+ @click.option("--element-guid", required=True, default = "",help="GUID of the element to add to a Collection")
35
+ @click.option("--collection-guid", required=True, default = "", help="GUID of the Collection to add an element to")
36
+ @click.option("--server", default=app_config.egeria_view_server, help="Egeria view server to use")
37
+ @click.option(
38
+ "--url", default=app_config.egeria_view_server_url, help="URL of Egeria platform to connect to"
39
+ )
40
+ @click.option("--userid", default=EGERIA_USER, help="Egeria user")
41
+ @click.option("--password", default=EGERIA_USER_PASSWORD, help="Egeria user password")
42
+ @click.option("--timeout", default=60, help="Number of seconds to wait")
43
+
44
+
45
+ def add_element_to_collection(server, url, userid, password, timeout, element_guid, collection_guid):
46
+ """Add a glossary term to a Collection"""
47
+ m_client = EgeriaTech(server, url, user_id=userid, user_pwd=password)
48
+ token = m_client.create_egeria_bearer_token()
49
+ try:
50
+ element_guid = element_guid.strip()
51
+ collection_guid = collection_guid.strip()
52
+ m_client.add_to_collection(element_guid, collection_guid)
53
+
54
+ click.echo(
55
+ f"Added element with GUID: {element_guid} to Collection with GUID: {collection_guid}\n"
56
+ )
57
+
58
+ except PyegeriaException as e:
59
+ print_basic_exception(e)
60
+ finally:
61
+ m_client.close_session()
62
+
63
+ @click.command("remove-element-from-collection")
64
+ @click.option("--element-guid", required=True, default = "",help="GUID of the element to remove from the collection")
65
+ @click.option("--collection-guid", required=True, default = "", help="GUID of collection to remove the element from")
66
+
67
+ @click.option("--server", default=app_config.egeria_view_server, help="Egeria view server to use")
68
+ @click.option(
69
+ "--url", default=app_config.egeria_view_server_url, help="URL of Egeria platform to connect to"
70
+ )
71
+ @click.option("--userid", default=EGERIA_USER, help="Egeria user")
72
+ @click.option("--password", default=EGERIA_USER_PASSWORD, help="Egeria user password")
73
+ @click.option("--timeout", default=60, help="Number of seconds to wait")
74
+
75
+ def remove_element_from_collection(server, url, userid, password, timeout, element_guid, collection_guid):
76
+ """Remove an element from a Collection"""
77
+ m_client = EgeriaTech(server, url, user_id=userid, user_pwd=password)
78
+ token = m_client.create_egeria_bearer_token()
79
+ try:
80
+ element_guid = element_guid.strip()
81
+ collection_guid = collection_guid.strip()
82
+ body = {
83
+ "class": "DeleteRelationshipRequestBody"
84
+ }
85
+ m_client.remove_from_collection( collection_guid, element_guid, body)
86
+
87
+ click.echo(
88
+ f"Removed term with GUID: {element_guid} from Collection with GUID: {collection_guid}\n"
89
+ )
90
+
91
+ except PyegeriaException as e:
92
+ print_basic_exception(e)
93
+ finally:
94
+ m_client.close_session()
95
+
96
+
97
+ @click.command("create-collection")
98
+ @click.option("--name", help="Collection Name",default = "", required=True)
99
+ @click.option("--kind", help="Kind of Collection", default = "Collection",
100
+ type=click.Choice(COLLECTION_TYPES, case_sensitive=False))
101
+ @click.option(
102
+ "--description",
103
+ help="Description of the Collection",
104
+ default="A description goes here",
105
+ )
106
+ @click.option(
107
+ "--category", default = "",
108
+ help="Category of the Collection"
109
+ )
110
+ @click.option("--server", default=app_config.egeria_view_server, help="Egeria view server to use.")
111
+ @click.option(
112
+ "--url", default=app_config.egeria_view_server_url, help="URL of Egeria platform to connect to"
113
+ )
114
+ @click.option("--userid", default=EGERIA_USER, help="Egeria user")
115
+ @click.option("--password", default=EGERIA_USER_PASSWORD, help="Egeria user password")
116
+ @click.option("--timeout", default=60, help="Number of seconds to wait")
117
+ def create_collection(
118
+ server: str,
119
+ url: str,
120
+ userid: str,
121
+ password: str,
122
+ timeout: int,
123
+ name: str,
124
+ kind: str,
125
+ description: str,
126
+ category: str,
127
+ ) -> None:
128
+ """Create a new Collection"""
129
+
130
+ try:
131
+ m_client = EgeriaTech(server, url, userid, password)
132
+ token = m_client.create_egeria_bearer_token()
133
+
134
+ collection_guid = m_client.create_collection( display_name = name, description = description, category = category,
135
+ prop = [kind])
136
+ print(f"New categry \'{name}\' created with id of \'{collection_guid}\'")
137
+
138
+ except PyegeriaException as e:
139
+ print_basic_exception(e)
140
+ finally:
141
+ m_client.close_session()
142
+
143
+
144
+ @click.command("update-collection")
145
+ @click.option("--name", help="Collection Name", default = "",required=False)
146
+ @click.option("--description", default = "",help="Description of the Collection")
147
+ @click.option("--category", default = "", help="Category of the Collection")
148
+ @click.option("--server", default=app_config.egeria_view_server, help="Egeria view server to use")
149
+ @click.option(
150
+ "--url", default=app_config.egeria_view_server_url, help="URL of Egeria platform to connect to"
151
+ )
152
+ @click.option("--userid", default=EGERIA_USER, help="Egeria user")
153
+ @click.option("--password", default=EGERIA_USER_PASSWORD, help="Egeria user password")
154
+ @click.option("--timeout", default=60, help="Number of seconds to wait")
155
+ @click.argument("collection-guid")
156
+
157
+ def update_collection(collection_guid, name, description, category, server, url, userid, password, timeout, ):
158
+ """Update the collection specified"""
159
+ m_client = EgeriaTech(server, url, user_id=userid, user_pwd=password)
160
+ token = m_client.create_egeria_bearer_token()
161
+ try:
162
+ body = {
163
+ "class" : "UpdateElementRequestBody",
164
+ "properties": {
165
+ "class" : "CollectionProperties",
166
+ "name" : name,
167
+ "description" : description,
168
+ "category": category
169
+ },
170
+ }
171
+ m_client.update_collection(collection_guid, body_slimmer(body))
172
+
173
+ click.echo(f"Updated glossary: {collection_guid}")
174
+
175
+ except PyegeriaException as e:
176
+ print_basic_exception(e)
177
+ finally:
178
+ m_client.close_session()
179
+
180
+ @click.command("delete-collection")
181
+ @click.argument("collection-guid")
182
+ @click.option("--server", default=app_config.egeria_view_server, help="Egeria view server to use")
183
+ @click.option(
184
+ "--url", default=app_config.egeria_view_server_url, help="URL of Egeria platform to connect to"
185
+ )
186
+ @click.option("--userid", default=EGERIA_USER, help="Egeria user")
187
+ @click.option("--password", default=EGERIA_USER_PASSWORD, help="Egeria user password")
188
+ @click.option("--timeout", default=60, help="Number of seconds to wait")
189
+
190
+ def delete_collection(server, url, userid, password, timeout, collection_guid):
191
+ """Delete the collection specified"""
192
+ m_client = EgeriaTech(server, url, user_id=userid, user_pwd=password)
193
+ token = m_client.create_egeria_bearer_token()
194
+ try:
195
+ m_client.delete_collection(collection_guid)
196
+
197
+ click.echo(f"Deleted collection: {collection_guid}")
198
+
199
+ except PyegeriaException as e:
200
+ print_basic_exception(e)
201
+ finally:
202
+ m_client.close_session()
@@ -19,7 +19,7 @@ from rich.markdown import Markdown
19
19
  from rich.prompt import Prompt
20
20
  from rich.table import Table
21
21
  from rich.text import Text
22
- from rich_pixels import Pixels
22
+
23
23
 
24
24
  from pyegeria import (
25
25
  EgeriaTech,
@@ -99,16 +99,17 @@ def display_glossaries(
99
99
  glossaries = m_client.find_glossaries(search_string)
100
100
  if type(glossaries) is list:
101
101
  sorted_glossary_list = sorted(
102
- glossaries, key=lambda k: k["glossaryProperties"]["displayName"]
102
+ glossaries, key=lambda k: k["properties"]["displayName"]
103
103
  )
104
104
  for glossary in sorted_glossary_list:
105
- display_name = glossary["glossaryProperties"]["displayName"]
106
- qualified_name = glossary["glossaryProperties"]["qualifiedName"]
105
+
106
+ display_name = glossary["properties"]["displayName"]
107
+ qualified_name = glossary["properties"]["qualifiedName"]
107
108
  guid = glossary["elementHeader"]["guid"]
108
109
  q_name = Text(f"{qualified_name}\n&\n{guid}", justify="center")
109
- language = glossary["glossaryProperties"]["language"]
110
- description = glossary["glossaryProperties"]["description"]
111
- usage = glossary["glossaryProperties"]["usage"]
110
+ language = glossary["properties"]["language"]
111
+ description = glossary["properties"]["description"]
112
+ usage = glossary["properties"]["usage"]
112
113
  text = "http://100.83.199.62:8088/superset/dashboard/p/xOgE56dLNaY/"
113
114
 
114
115
  table.add_row(display_name, q_name, language, text)
@@ -0,0 +1,89 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ SPDX-License-Identifier: Apache-2.0
4
+ Copyright Contributors to the ODPi Egeria project.
5
+
6
+ Display Asset Graph Information using generic functions.
7
+ """
8
+ from __future__ import annotations
9
+ import argparse
10
+ import json
11
+ import os
12
+ import time
13
+ from typing import Any, Dict, Iterable, List, Mapping, Sequence
14
+
15
+ from rich import box
16
+ from rich.console import Console
17
+ from rich.table import Table
18
+ from rich.prompt import Prompt
19
+
20
+ from commands.cat.run_report import list_generic
21
+ from pyegeria import config_logging
22
+ from pyegeria.config import settings
23
+ from pyegeria._exceptions_new import PyegeriaException, print_exception_response, print_basic_exception
24
+ from pyegeria.base_report_formats import get_report_spec_heading, select_report_spec
25
+ from pyegeria.format_set_executor import exec_report_spec
26
+ EGERIA_USER = os.environ.get("EGERIA_USER", "erinoverview")
27
+ EGERIA_USER_PASSWORD = os.environ.get("EGERIA_USER_PASSWORD", "secret")
28
+
29
+
30
+ app_config = settings.Environment
31
+
32
+ guid_list = []
33
+
34
+ console = Console(width=app_config.console_width, force_terminal=(not app_config.egeria_jupyter))
35
+
36
+
37
+ def asset_viewer(
38
+ output_format: str = "TABLE",
39
+ asset_guid: str = None,
40
+ view_server: str = app_config.egeria_view_server,
41
+ view_url: str = app_config.egeria_view_server_url,
42
+ user: str = EGERIA_USER,
43
+ user_pass: str = EGERIA_USER_PASSWORD,
44
+ jupyter: bool = app_config.egeria_jupyter,
45
+ width: int = app_config.console_width,
46
+ prompt_missing: bool = False,
47
+ write_file: bool = False,
48
+ render_table: bool = False,
49
+ table_caption: str | None = None,
50
+ use_pager: bool = True,
51
+ ):
52
+ try:
53
+ list_generic(report_spec="Asset-Graph", output_format=output_format, view_server=view_server,
54
+ view_url=view_url, user=user, user_pass=user_pass, params={"asset_guid": asset_guid},
55
+ render_table=render_table, write_file = write_file, table_caption=table_caption, use_pager=use_pager,
56
+ width=width, jupyter=jupyter, prompt_missing=prompt_missing)
57
+
58
+ except PyegeriaException as e:
59
+ print_basic_exception(e)
60
+
61
+
62
+ def main():
63
+ parser = argparse.ArgumentParser()
64
+
65
+ parser.add_argument("--server", help="Name of the server to display status for")
66
+ parser.add_argument("--url", help="URL Platform to connect to")
67
+ parser.add_argument("--userid", help="User Id")
68
+ parser.add_argument("--password", help="User Password")
69
+ args = parser.parse_args()
70
+
71
+ server = args.server if args.server is not None else app_config.egeria_view_server
72
+ url = args.url if args.url is not None else app_config.egeria_view_server_url
73
+ userid = args.userid if args.userid is not None else EGERIA_USER
74
+ user_pass = args.password if args.password is not None else EGERIA_USER_PASSWORD
75
+ try:
76
+ asset_guid = Prompt.ask("Enter the Asset GUID to view:", default="")
77
+ output_format = Prompt.ask("Enter the output format:", default="TABLE")
78
+ asset_viewer(output_format, asset_guid, server, url, userid,
79
+ user_pass, prompt_missing=True, write_file=True, render_table=True,
80
+ table_caption="Asset Graph")
81
+ except KeyboardInterrupt as e:
82
+ # console.print_exception()
83
+ pass
84
+ except Exception as e:
85
+ console.print_exception()
86
+
87
+
88
+ if __name__ == "__main__":
89
+ main()
@@ -74,9 +74,9 @@ def collection_viewer(
74
74
  )
75
75
  text_guid = Text(f"* GUID: {member['guid']}", "green")
76
76
  text_collection_type = Text(
77
- f"* Collection Type: {member['collectionType']}"
77
+ f"* Collection Type: {member.get('typeName','')}"
78
78
  )
79
- text_description = Text(f"* Description: {member['description']}")
79
+ text_description = Text(f"* Description: {member.get('description','')}")
80
80
  p = Panel.fit(
81
81
  f"{text_collection_name}[green]\n{text_qualified_name}\n{text_guid}\n"
82
82
  f"{text_collection_type}\n{text_description}"
@@ -94,9 +94,7 @@ def collection_viewer(
94
94
  )
95
95
  walk_collection_hierarchy(branch, collection_client, member["guid"])
96
96
  else:
97
- tt = tree.add(
98
- f"[bold magenta on black]No collections found in {root_collection_name}"
99
- )
97
+ tt = tree.add("[bold magenta on black]No Members found")
100
98
 
101
99
  try:
102
100
  tree = Tree(f"[bold bright green]{root}", guide_style="bold bright_blue")
@@ -10,6 +10,7 @@ A simple viewer for project dependencies - provide the root and we display the d
10
10
  import argparse
11
11
  import os
12
12
 
13
+ from pydantic import ValidationError
13
14
  from rich import print
14
15
  from rich.console import Console
15
16
  from rich.markdown import Markdown
@@ -21,7 +22,7 @@ from pyegeria import (
21
22
  InvalidParameterException,
22
23
  ProjectManager,
23
24
  PropertyServerException,
24
- UserNotAuthorizedException,
25
+ UserNotAuthorizedException, PyegeriaException, print_basic_exception, print_validation_error,
25
26
  )
26
27
  from pyegeria._exceptions import print_exception_response
27
28
 
@@ -72,7 +73,7 @@ def project_dependency_viewer(
72
73
  proj_type = proj_props.get("typeName", "---")
73
74
  proj_unique = proj_props.get("qualifiedName", "---")
74
75
  proj_identifier = proj_props.get("identifier", "---")
75
- proj_name = proj_props.get("name", "---")
76
+ proj_name = proj_props.get("displayName", "---")
76
77
  proj_desc = proj_props.get("description", "---")
77
78
  proj_status = proj_props.get("projectStatus", "---")
78
79
  proj_priority = proj_props.get("priority", "---")
@@ -90,7 +91,7 @@ def project_dependency_viewer(
90
91
  else:
91
92
  return
92
93
 
93
- team = project_client.get_project_team(proj_guid)
94
+ team = project_client.get_project_team(proj_guid,"")
94
95
  member_md = ""
95
96
  if type(team) is list:
96
97
  for member in team:
@@ -131,12 +132,12 @@ def project_dependency_viewer(
131
132
  walk_project_hierarchy(p_client, root, tree, root=True)
132
133
  print(tree)
133
134
 
134
- except (
135
- InvalidParameterException,
136
- PropertyServerException,
137
- UserNotAuthorizedException,
138
- ) as e:
139
- print_exception_response(e)
135
+ except PyegeriaException as e:
136
+ print_basic_exception(e)
137
+ except ValidationError as e:
138
+ print_validation_error(e)
139
+ except Exception as e:
140
+ print_basic_exception(e)
140
141
 
141
142
 
142
143
  def main():
@@ -72,7 +72,7 @@ def project_structure_viewer(
72
72
  proj_type = proj_props.get("typeName", "---")
73
73
  proj_unique = proj_props.get("qualifiedName", "---")
74
74
  proj_identifier = proj_props.get("identifier", "---")
75
- proj_name = proj_props.get("name", "---")
75
+ proj_name = proj_props.get("displayName", "---")
76
76
  proj_desc = proj_props.get("description", "---")
77
77
  proj_status = proj_props.get("projectStatus", "---")
78
78
  proj_priority = proj_props.get("priority", "---")
@@ -90,7 +90,7 @@ def project_structure_viewer(
90
90
  else:
91
91
  return
92
92
 
93
- team = project_client.get_project_team(proj_guid)
93
+ team = project_client.get_project_team(proj_guid,"")
94
94
  member_md = ""
95
95
  if type(team) is list:
96
96
  for member in team:
@@ -0,0 +1,72 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ SPDX-License-Identifier: Apache-2.0
4
+ Copyright Contributors to the ODPi Egeria project.
5
+
6
+ Display the status of cataloged platforms and servers.
7
+ """
8
+ import argparse
9
+ import os
10
+
11
+ from rich.console import Console
12
+ from rich.prompt import Prompt
13
+
14
+ from commands.cat.run_report import list_generic
15
+ from pyegeria import (
16
+ settings,
17
+ config_logging, print_basic_exception, PyegeriaException
18
+ )
19
+
20
+ EGERIA_USER = os.environ.get("EGERIA_USER", "erinoverview")
21
+ EGERIA_USER_PASSWORD = os.environ.get("EGERIA_USER_PASSWORD", "secret")
22
+
23
+ app_config = settings.Environment
24
+ config_logging()
25
+ console = Console(width=app_config.console_width)
26
+
27
+ guid_list = []
28
+
29
+
30
+ def tech_viewer(
31
+ tech_name: str,
32
+ server_name: str,
33
+ platform_url: str,
34
+ user: str,
35
+ user_pass: str,
36
+ jupyter: bool = app_config.egeria_jupyter,
37
+ width: int = app_config.console_width,
38
+ ):
39
+ try:
40
+ list_generic(report_spec = "Tech-Type-Elements", output_format = "TABLE", view_server = server_name,
41
+ view_url= platform_url, user = user, user_pass = user_pass, prompt_missing = True,
42
+ params = {"filter": tech_name},
43
+ render_table=True, table_caption="Tech Type Elements", use_pager=True, width=width, jupyter=jupyter)
44
+
45
+ except PyegeriaException as e:
46
+ console.print_exception(show_locals=True)
47
+
48
+
49
+ def main():
50
+ parser = argparse.ArgumentParser()
51
+
52
+ parser.add_argument("--server", help="Name of the server to display status for")
53
+ parser.add_argument("--url", help="URL Platform to connect to")
54
+ parser.add_argument("--userid", help="User Id")
55
+ parser.add_argument("--password", help="User Password")
56
+ args = parser.parse_args()
57
+
58
+ server = args.server if args.server is not None else app_config.egeria_view_server
59
+ url = args.url if args.url is not None else app_config.egeria_view_server_url
60
+ userid = args.userid if args.userid is not None else EGERIA_USER
61
+ user_pass = args.password if args.password is not None else EGERIA_USER_PASSWORD
62
+ try:
63
+ tech_name = Prompt.ask(
64
+ "Enter the Asset Name to view:", default="PostgreSQL Server"
65
+ )
66
+ tech_viewer(tech_name, server, url, userid, user_pass)
67
+ except KeyboardInterrupt:
68
+ pass
69
+
70
+
71
+ if __name__ == "__main__":
72
+ main()