pyegeria 5.4.0.28__py3-none-any.whl → 5.5.3.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (433) hide show
  1. commands/__init__.py +24 -0
  2. commands/cat/Dr-Egeria_md-orig.py +2 -2
  3. commands/cat/collection_actions.py +197 -0
  4. commands/cat/dr_egeria_command_help.py +137 -38
  5. commands/cat/dr_egeria_jupyter.py +7 -7
  6. commands/cat/dr_egeria_md.py +10 -267
  7. commands/cat/exp_list_glossaries.py +11 -14
  8. commands/cat/get_asset_graph.py +37 -267
  9. commands/cat/{get_collection.py → get_collection_tree.py} +10 -18
  10. commands/cat/get_project_dependencies.py +14 -14
  11. commands/cat/get_project_structure.py +15 -14
  12. commands/cat/get_tech_type_elements.py +16 -116
  13. commands/cat/glossary_actions.py +145 -298
  14. commands/cat/list_assets.py +3 -11
  15. commands/cat/list_cert_types.py +17 -63
  16. commands/cat/list_collections.py +17 -139
  17. commands/cat/list_deployed_catalogs.py +15 -27
  18. commands/cat/list_deployed_database_schemas.py +27 -43
  19. commands/cat/list_deployed_databases.py +16 -31
  20. commands/cat/list_deployed_servers.py +35 -54
  21. commands/cat/list_glossaries.py +18 -17
  22. commands/cat/list_projects.py +10 -12
  23. commands/cat/list_tech_type_elements.py +21 -37
  24. commands/cat/list_tech_types.py +13 -25
  25. commands/cat/list_terms.py +38 -79
  26. commands/cat/list_todos.py +4 -11
  27. commands/cat/list_user_ids.py +3 -10
  28. commands/cat/my_reports.py +559 -0
  29. commands/cat/run_report.py +394 -0
  30. commands/cat/{list_format_set.py → run_report_orig.py} +136 -44
  31. commands/cli/egeria.py +182 -219
  32. commands/cli/egeria_cat.py +32 -59
  33. commands/cli/egeria_my.py +13 -0
  34. commands/cli/egeria_ops.py +69 -74
  35. commands/cli/egeria_tech.py +17 -93
  36. commands/{cat → deprecated}/list_data_designer.py +2 -4
  37. commands/{cat → deprecated}/list_data_structures_full.py +3 -6
  38. commands/deprecated/old_get_asset_graph.py +315 -0
  39. commands/my/__init__.py +0 -2
  40. commands/my/list_my_profile.py +27 -34
  41. commands/my/list_my_roles.py +1 -7
  42. commands/my/monitor_my_todos.py +1 -7
  43. commands/my/monitor_open_todos.py +6 -7
  44. commands/my/todo_actions.py +4 -5
  45. commands/ops/__init__.py +0 -2
  46. commands/ops/gov_server_actions.py +17 -21
  47. commands/ops/list_archives.py +17 -38
  48. commands/ops/list_catalog_targets.py +33 -40
  49. commands/ops/load_archive.py +14 -11
  50. commands/ops/{monitor_engine_activity_c.py → monitor_active_engine_activity.py} +51 -82
  51. commands/ops/{monitor_integ_daemon_status.py → monitor_daemon_status.py} +35 -55
  52. commands/ops/monitor_engine_activity.py +79 -77
  53. commands/ops/{monitor_gov_eng_status.py → monitor_engine_status.py} +10 -7
  54. commands/ops/monitor_platform_status.py +38 -50
  55. commands/ops/monitor_server_startup.py +6 -11
  56. commands/ops/monitor_server_status.py +7 -11
  57. commands/ops/orig_monitor_server_list.py +8 -8
  58. commands/ops/orig_monitor_server_status.py +1 -5
  59. commands/ops/refresh_integration_daemon.py +5 -5
  60. commands/ops/restart_integration_daemon.py +5 -5
  61. commands/ops/table_integ_daemon_status.py +6 -6
  62. commands/ops/x_engine_actions.py +7 -7
  63. commands/tech/__init__.py +0 -2
  64. commands/tech/{generic_actions.py → element_actions.py} +6 -11
  65. commands/tech/get_element_info.py +20 -29
  66. commands/tech/get_guid_info.py +23 -42
  67. commands/tech/get_tech_details.py +20 -35
  68. commands/tech/get_tech_type_template.py +28 -39
  69. commands/tech/list_all_om_type_elements.py +24 -30
  70. commands/tech/list_all_om_type_elements_x.py +22 -28
  71. commands/tech/list_all_related_elements.py +19 -28
  72. commands/tech/list_anchored_elements.py +22 -30
  73. commands/tech/list_asset_types.py +19 -24
  74. commands/tech/list_elements_by_classification_by_property_value.py +26 -32
  75. commands/tech/list_elements_by_property_value.py +19 -25
  76. commands/tech/list_elements_by_property_value_x.py +20 -28
  77. commands/tech/list_elements_for_classification.py +28 -41
  78. commands/tech/list_gov_action_processes.py +16 -27
  79. commands/tech/list_information_supply_chains.py +22 -30
  80. commands/tech/list_registered_services.py +14 -26
  81. commands/tech/list_related_elements_with_prop_value.py +15 -25
  82. commands/tech/list_related_specification.py +1 -4
  83. commands/tech/list_relationship_types.py +15 -25
  84. commands/tech/list_relationships.py +20 -36
  85. commands/tech/list_solution_blueprints.py +28 -33
  86. commands/tech/list_solution_components.py +23 -29
  87. commands/tech/list_solution_roles.py +21 -32
  88. commands/tech/list_tech_templates.py +51 -54
  89. commands/tech/list_valid_metadata_values.py +5 -9
  90. commands/tech/table_tech_templates.py +2 -6
  91. commands/tech/x_list_related_elements.py +1 -4
  92. examples/GeoSpatial Products Example.py +524 -0
  93. examples/Jupyter Notebooks/P-egeria-server-config.ipynb +2137 -0
  94. examples/Jupyter Notebooks/README.md +2 -0
  95. examples/Jupyter Notebooks/common/P-environment-check.ipynb +115 -0
  96. examples/Jupyter Notebooks/common/__init__.py +14 -0
  97. examples/Jupyter Notebooks/common/common-functions.ipynb +4694 -0
  98. examples/Jupyter Notebooks/common/environment-check.ipynb +52 -0
  99. examples/Jupyter Notebooks/common/globals.ipynb +184 -0
  100. examples/Jupyter Notebooks/common/globals.py +154 -0
  101. examples/Jupyter Notebooks/common/orig_globals.py +152 -0
  102. examples/format_sets/all_format_sets.json +910 -0
  103. examples/format_sets/custom_format_sets.json +268 -0
  104. examples/format_sets/subset_format_sets.json +187 -0
  105. examples/format_sets_save_load_example.py +291 -0
  106. examples/jacquard_data_sets.py +129 -0
  107. examples/output_formats_example.py +193 -0
  108. examples/test_jacquard_data_sets.py +54 -0
  109. examples/test_jacquard_data_sets_scenarios.py +94 -0
  110. md_processing/__init__.py +33 -24
  111. md_processing/command_dispatcher.py +33 -0
  112. md_processing/command_mapping.py +221 -0
  113. md_processing/data/commands/commands_data_designer.json +537 -0
  114. md_processing/data/commands/commands_external_reference.json +733 -0
  115. md_processing/data/commands/commands_feedback.json +155 -0
  116. md_processing/data/commands/commands_general.json +204 -0
  117. md_processing/data/commands/commands_glossary.json +218 -0
  118. md_processing/data/commands/commands_governance.json +3678 -0
  119. md_processing/data/commands/commands_product_manager.json +865 -0
  120. md_processing/data/commands/commands_project.json +642 -0
  121. md_processing/data/commands/commands_solution_architect.json +366 -0
  122. md_processing/data/commands.json +6489 -30060
  123. md_processing/data/{commands-working.json → commands_working.json} +9304 -13513
  124. md_processing/data/gened_report_specs.py +6584 -0
  125. md_processing/data/generated_format_sets.json +6533 -0
  126. md_processing/data/generated_format_sets_old.json +4137 -0
  127. md_processing/data/generated_format_sets_old.py +45 -0
  128. md_processing/dr_egeria.py +182 -0
  129. md_processing/md_commands/data_designer_commands.py +195 -583
  130. md_processing/md_commands/ext_ref_commands.py +530 -0
  131. md_processing/md_commands/feedback_commands.py +726 -0
  132. md_processing/md_commands/glossary_commands.py +106 -490
  133. md_processing/md_commands/governance_officer_commands.py +129 -18
  134. md_processing/md_commands/product_manager_commands.py +362 -115
  135. md_processing/md_commands/project_commands.py +351 -134
  136. md_processing/md_commands/solution_architect_commands.py +276 -232
  137. md_processing/md_commands/view_commands.py +295 -0
  138. md_processing/md_processing_utils/common_md_proc_utils.py +258 -166
  139. md_processing/md_processing_utils/common_md_utils.py +138 -43
  140. md_processing/md_processing_utils/determine_width.py +103 -0
  141. md_processing/md_processing_utils/extraction_utils.py +100 -39
  142. md_processing/md_processing_utils/gen_report_specs.py +643 -0
  143. md_processing/md_processing_utils/generate_dr_help.py +61 -33
  144. md_processing/md_processing_utils/generate_md_cmd_templates.py +20 -19
  145. md_processing/md_processing_utils/generate_md_templates.py +3 -12
  146. md_processing/md_processing_utils/md_processing_constants.py +1053 -72
  147. pyegeria/__init__.py +203 -158
  148. pyegeria/core/__init__.py +40 -0
  149. pyegeria/core/_base_platform_client.py +574 -0
  150. pyegeria/core/_base_server_client.py +573 -0
  151. pyegeria/{_exceptions_new.py → core/_exceptions.py} +62 -30
  152. pyegeria/{_globals.py → core/_globals.py} +14 -3
  153. pyegeria/core/_server_client.py +6073 -0
  154. pyegeria/{_validators.py → core/_validators.py} +7 -8
  155. pyegeria/core/config.py +654 -0
  156. pyegeria/{create_tech_guid_lists.py → core/create_tech_guid_lists.py} +0 -1
  157. pyegeria/core/load_config.py +37 -0
  158. pyegeria/{logging_configuration.py → core/logging_configuration.py} +1 -1
  159. pyegeria/core/mcp_adapter.py +144 -0
  160. pyegeria/core/mcp_server.py +212 -0
  161. pyegeria/core/utils.py +405 -0
  162. pyegeria/{_client.py → deprecated/_client.py} +24 -25
  163. pyegeria/{_deprecated_gov_engine.py → deprecated/_deprecated_gov_engine.py} +16 -16
  164. pyegeria/{classification_manager_omvs.py → deprecated/classification_manager_omvs.py} +1987 -1877
  165. pyegeria/{output_formatter.py → deprecated/output_formatter_with_machine_keys.py} +298 -45
  166. pyegeria/{runtime_manager_omvs.py → deprecated/runtime_manager_omvs.py} +155 -171
  167. pyegeria/{valid_metadata_omvs.py → deprecated/valid_metadata_omvs.py} +93 -93
  168. pyegeria/{x_action_author_omvs.py → deprecated/x_action_author_omvs.py} +2 -3
  169. pyegeria/egeria_cat_client.py +26 -70
  170. pyegeria/egeria_client.py +130 -93
  171. pyegeria/egeria_config_client.py +40 -46
  172. pyegeria/egeria_tech_client.py +141 -54
  173. pyegeria/models/__init__.py +150 -0
  174. pyegeria/{models.py → models/models.py} +156 -20
  175. pyegeria/omvs/__init__.py +84 -0
  176. pyegeria/omvs/action_author.py +342 -0
  177. pyegeria/omvs/actor_manager.py +5980 -0
  178. pyegeria/omvs/asset_catalog.py +842 -0
  179. pyegeria/omvs/asset_maker.py +2736 -0
  180. pyegeria/omvs/automated_curation.py +4403 -0
  181. pyegeria/omvs/classification_manager.py +11213 -0
  182. pyegeria/{collection_manager.py → omvs/collection_manager.py} +1334 -1160
  183. pyegeria/omvs/community_matters_omvs.py +468 -0
  184. pyegeria/{core_omag_server_config.py → omvs/core_omag_server_config.py} +157 -157
  185. pyegeria/{data_designer.py → omvs/data_designer.py} +1115 -660
  186. pyegeria/omvs/data_discovery.py +869 -0
  187. pyegeria/omvs/data_engineer.py +372 -0
  188. pyegeria/omvs/digital_business.py +1133 -0
  189. pyegeria/omvs/external_links.py +1752 -0
  190. pyegeria/omvs/feedback_manager.py +834 -0
  191. pyegeria/{full_omag_server_config.py → omvs/full_omag_server_config.py} +73 -69
  192. pyegeria/{glossary_manager.py → omvs/glossary_manager.py} +857 -519
  193. pyegeria/{governance_officer.py → omvs/governance_officer.py} +964 -468
  194. pyegeria/omvs/lineage_linker.py +314 -0
  195. pyegeria/omvs/location_arena.py +1525 -0
  196. pyegeria/omvs/metadata_expert.py +668 -0
  197. pyegeria/omvs/metadata_explorer_omvs.py +2943 -0
  198. pyegeria/omvs/my_profile.py +1042 -0
  199. pyegeria/omvs/notification_manager.py +358 -0
  200. pyegeria/omvs/people_organizer.py +394 -0
  201. pyegeria/{platform_services.py → omvs/platform_services.py} +113 -193
  202. pyegeria/omvs/product_manager.py +1825 -0
  203. pyegeria/omvs/project_manager.py +1907 -0
  204. pyegeria/omvs/reference_data.py +1140 -0
  205. pyegeria/omvs/registered_info.py +334 -0
  206. pyegeria/omvs/runtime_manager.py +2817 -0
  207. pyegeria/omvs/schema_maker.py +446 -0
  208. pyegeria/{server_operations.py → omvs/server_operations.py} +27 -26
  209. pyegeria/{solution_architect_omvs.py → omvs/solution_architect.py} +1886 -1505
  210. pyegeria/omvs/specification_properties.py +37 -0
  211. pyegeria/omvs/subject_area.py +1042 -0
  212. pyegeria/omvs/template_manager_omvs.py +236 -0
  213. pyegeria/omvs/time_keeper.py +1761 -0
  214. pyegeria/omvs/valid_metadata.py +3221 -0
  215. pyegeria/omvs/valid_metadata_lists.py +37 -0
  216. pyegeria/omvs/valid_type_lists.py +37 -0
  217. pyegeria/view/__init__.py +28 -0
  218. pyegeria/{_output_format_models.py → view/_output_format_models.py} +160 -24
  219. pyegeria/view/_output_formats.py +14 -0
  220. pyegeria/view/base_report_formats.py +2719 -0
  221. pyegeria/view/dr_egeria_reports.py +56 -0
  222. pyegeria/view/format_set_executor.py +397 -0
  223. pyegeria/{md_processing_utils.py → view/md_processing_utils.py} +5 -5
  224. pyegeria/{mermaid_utilities.py → view/mermaid_utilities.py} +2 -154
  225. pyegeria/view/output_formatter.py +1297 -0
  226. pyegeria-5.5.3.3.dist-info/METADATA +218 -0
  227. pyegeria-5.5.3.3.dist-info/RECORD +241 -0
  228. {pyegeria-5.4.0.28.dist-info → pyegeria-5.5.3.3.dist-info}/WHEEL +2 -1
  229. pyegeria-5.5.3.3.dist-info/entry_points.txt +103 -0
  230. pyegeria-5.5.3.3.dist-info/top_level.txt +4 -0
  231. commands/cat/.DS_Store +0 -0
  232. commands/cat/.env +0 -8
  233. commands/cat/README.md +0 -16
  234. commands/cat/debug_log +0 -1126
  235. commands/cat/debug_log.2025-08-18_11-34-38_088636.zip +0 -0
  236. commands/cat/list_categories.py +0 -192
  237. commands/cat/logs/pyegeria.log +0 -4
  238. commands/cli/debug_log +0 -0
  239. commands/cli/debug_log.log +0 -0
  240. commands/cli/txt_custom_v2.tcss +0 -19
  241. commands/my/README.md +0 -17
  242. commands/ops/README.md +0 -24
  243. commands/ops/logs/pyegeria.log +0 -0
  244. commands/ops/monitor_asset_events.py +0 -108
  245. commands/tech/README.md +0 -24
  246. md_processing/.DS_Store +0 -0
  247. md_processing/dr-egeria-outbox/Collections-2025-08-12-13-30-37.md +0 -163
  248. md_processing/dr-egeria-outbox/Collections-2025-08-12-13-35-58.md +0 -474
  249. md_processing/dr_egeria_inbox/Derive-Dr-Gov-Defs.md +0 -8
  250. md_processing/dr_egeria_inbox/Dr.Egeria Templates.md +0 -873
  251. md_processing/dr_egeria_inbox/arch_test.md +0 -57
  252. md_processing/dr_egeria_inbox/archive/dr_egeria_intro.md +0 -254
  253. md_processing/dr_egeria_inbox/archive/dr_egeria_intro_more_terms.md +0 -696
  254. md_processing/dr_egeria_inbox/archive/dr_egeria_intro_part1.md +0 -254
  255. md_processing/dr_egeria_inbox/archive/dr_egeria_intro_part2.md +0 -298
  256. md_processing/dr_egeria_inbox/archive/dr_egeria_intro_part3.md +0 -608
  257. md_processing/dr_egeria_inbox/archive/dr_egeria_intro_part4.md +0 -94
  258. md_processing/dr_egeria_inbox/archive/freddie_intro.md +0 -284
  259. md_processing/dr_egeria_inbox/archive/freddie_intro_orig.md +0 -275
  260. md_processing/dr_egeria_inbox/archive/test-term.md +0 -110
  261. md_processing/dr_egeria_inbox/cat_test.md +0 -100
  262. md_processing/dr_egeria_inbox/collections.md +0 -39
  263. md_processing/dr_egeria_inbox/data_designer_debug.log +0 -6
  264. md_processing/dr_egeria_inbox/data_designer_out.md +0 -60
  265. md_processing/dr_egeria_inbox/data_designer_search_test.md +0 -11
  266. md_processing/dr_egeria_inbox/data_field.md +0 -54
  267. md_processing/dr_egeria_inbox/data_spec.md +0 -77
  268. md_processing/dr_egeria_inbox/data_spec_test.md +0 -2406
  269. md_processing/dr_egeria_inbox/data_test.md +0 -179
  270. md_processing/dr_egeria_inbox/data_test2.md +0 -429
  271. md_processing/dr_egeria_inbox/data_test3.md +0 -462
  272. md_processing/dr_egeria_inbox/dr_egeria_data_designer_1.md +0 -124
  273. md_processing/dr_egeria_inbox/dr_egeria_intro_categories.md +0 -168
  274. md_processing/dr_egeria_inbox/dr_egeria_intro_part1.md +0 -280
  275. md_processing/dr_egeria_inbox/dr_egeria_intro_part2.md +0 -318
  276. md_processing/dr_egeria_inbox/dr_egeria_intro_part3.md +0 -1073
  277. md_processing/dr_egeria_inbox/dr_egeria_isc1.md +0 -44
  278. md_processing/dr_egeria_inbox/generated_help_report.md +0 -9
  279. md_processing/dr_egeria_inbox/glossary_creation_experiment.ipynb +0 -341
  280. md_processing/dr_egeria_inbox/glossary_list.md +0 -5
  281. md_processing/dr_egeria_inbox/glossary_search_test.md +0 -40
  282. md_processing/dr_egeria_inbox/glossary_test1.md +0 -324
  283. md_processing/dr_egeria_inbox/gov_def.md +0 -482
  284. md_processing/dr_egeria_inbox/gov_def2.md +0 -447
  285. md_processing/dr_egeria_inbox/img.png +0 -0
  286. md_processing/dr_egeria_inbox/product.md +0 -211
  287. md_processing/dr_egeria_inbox/rel.md +0 -8
  288. md_processing/dr_egeria_inbox/sb.md +0 -119
  289. md_processing/dr_egeria_inbox/solution-components.md +0 -136
  290. md_processing/dr_egeria_inbox/solution_blueprints.md +0 -118
  291. md_processing/dr_egeria_inbox/synonym_test.md +0 -42
  292. md_processing/dr_egeria_inbox/t2.md +0 -268
  293. md_processing/dr_egeria_outbox/.obsidian/app.json +0 -1
  294. md_processing/dr_egeria_outbox/.obsidian/appearance.json +0 -1
  295. md_processing/dr_egeria_outbox/.obsidian/community-plugins.json +0 -6
  296. md_processing/dr_egeria_outbox/.obsidian/core-plugins.json +0 -31
  297. md_processing/dr_egeria_outbox/.obsidian/plugins/calendar/data.json +0 -10
  298. md_processing/dr_egeria_outbox/.obsidian/plugins/calendar/main.js +0 -4459
  299. md_processing/dr_egeria_outbox/.obsidian/plugins/calendar/manifest.json +0 -10
  300. md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-kanban/data.json +0 -3
  301. md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-kanban/main.js +0 -153
  302. md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-kanban/manifest.json +0 -11
  303. md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-kanban/styles.css +0 -1
  304. md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-tasks-plugin/main.js +0 -500
  305. md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-tasks-plugin/manifest.json +0 -12
  306. md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-tasks-plugin/styles.css +0 -1
  307. md_processing/dr_egeria_outbox/.obsidian/plugins/templater-obsidian/main.js +0 -37
  308. md_processing/dr_egeria_outbox/.obsidian/plugins/templater-obsidian/manifest.json +0 -11
  309. md_processing/dr_egeria_outbox/.obsidian/plugins/templater-obsidian/styles.css +0 -220
  310. md_processing/dr_egeria_outbox/.obsidian/types.json +0 -28
  311. md_processing/dr_egeria_outbox/.obsidian/workspace.json +0 -220
  312. md_processing/dr_egeria_outbox/Untitled.canvas +0 -1
  313. md_processing/dr_egeria_outbox/friday/processed-2025-08-22 21:22-dr_egeria_intro_part1.md +0 -312
  314. md_processing/dr_egeria_outbox/friday/processed-2025-08-22 21:23-dr_egeria_intro_part1.md +0 -265
  315. md_processing/dr_egeria_outbox/friday/processed-2025-08-23 15:06-dr_egeria_intro_part1.md +0 -230
  316. md_processing/dr_egeria_outbox/friday/processed-2025-08-23 15:30-dr_egeria_intro_part1.md +0 -296
  317. md_processing/dr_egeria_outbox/friday/processed-2025-08-23 15:31-dr_egeria_intro_part1.md +0 -253
  318. md_processing/dr_egeria_outbox/friday/processed-2025-08-23 16:08-dr_egeria_intro_part2.md +0 -343
  319. md_processing/dr_egeria_outbox/friday/processed-2025-08-23 16:12-dr_egeria_intro_part2.md +0 -343
  320. md_processing/dr_egeria_outbox/monday/processed-2025-08-19 07:05-product.md +0 -426
  321. md_processing/dr_egeria_outbox/monday/processed-2025-08-19 07:56-product.md +0 -212
  322. md_processing/dr_egeria_outbox/monday/processed-2025-08-19 09:43-product.md +0 -201
  323. md_processing/dr_egeria_outbox/sunday/processed-2025-07-20 14:55-product.md +0 -77
  324. md_processing/dr_egeria_outbox/sunday/processed-2025-07-20 15:05-product.md +0 -75
  325. md_processing/dr_egeria_outbox/sunday/processed-2025-07-20 15:11-product.md +0 -74
  326. md_processing/dr_egeria_outbox/sunday/processed-2025-07-20 20:40-collections.md +0 -49
  327. md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 15:00-Derive-Dr-Gov-Defs.md +0 -719
  328. md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 20:13-Derive-Dr-Gov-Defs.md +0 -41
  329. md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 20:14-Derive-Dr-Gov-Defs.md +0 -33
  330. md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 20:50-Derive-Dr-Gov-Defs.md +0 -192
  331. md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 22:08-gov_def2.md +0 -486
  332. md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 22:10-gov_def2.md +0 -486
  333. md_processing/dr_egeria_outbox/thursday/processed-2025-07-18 08:53-gov_def2.md +0 -486
  334. md_processing/dr_egeria_outbox/thursday/processed-2025-07-18 08:54-gov_def2.md +0 -486
  335. md_processing/dr_egeria_outbox/thursday/processed-2025-07-18 09:03-gov_def2.md +0 -486
  336. md_processing/dr_egeria_outbox/thursday/processed-2025-07-18 09:06-gov_def2.md +0 -486
  337. md_processing/dr_egeria_outbox/thursday/processed-2025-07-18 09:10-gov_def2.md +0 -486
  338. md_processing/dr_egeria_outbox/tuesday/processed-2025-07-16 19:15-gov_def2.md +0 -527
  339. md_processing/dr_egeria_outbox/tuesday/processed-2025-07-17 12:08-gov_def2.md +0 -527
  340. md_processing/dr_egeria_outbox/tuesday/processed-2025-07-17 14:27-gov_def2.md +0 -485
  341. md_processing/dr_egeria_outbox/tuesday/processed-2025-08-19 10:55-product.md +0 -209
  342. md_processing/family_docs/Data Designer/Create_Data_Class.md +0 -164
  343. md_processing/family_docs/Data Designer/Create_Data_Dictionary.md +0 -30
  344. md_processing/family_docs/Data Designer/Create_Data_Field.md +0 -162
  345. md_processing/family_docs/Data Designer/Create_Data_Specification.md +0 -36
  346. md_processing/family_docs/Data Designer/Create_Data_Structure.md +0 -38
  347. md_processing/family_docs/Data Designer/View_Data_Classes.md +0 -78
  348. md_processing/family_docs/Data Designer/View_Data_Dictionaries.md +0 -78
  349. md_processing/family_docs/Data Designer/View_Data_Fields.md +0 -78
  350. md_processing/family_docs/Data Designer/View_Data_Specifications.md +0 -78
  351. md_processing/family_docs/Data Designer/View_Data_Structures.md +0 -78
  352. md_processing/family_docs/Data Designer.md +0 -842
  353. md_processing/family_docs/Digital Product Manager/Add_Member->Collection.md +0 -42
  354. md_processing/family_docs/Digital Product Manager/Attach_Collection->Resource.md +0 -36
  355. md_processing/family_docs/Digital Product Manager/Create_Agreement.md +0 -96
  356. md_processing/family_docs/Digital Product Manager/Create_Data_Sharing_Agreement.md +0 -72
  357. md_processing/family_docs/Digital Product Manager/Create_DigitalSubscription.md +0 -102
  358. md_processing/family_docs/Digital Product Manager/Create_Digital_Product.md +0 -134
  359. md_processing/family_docs/Digital Product Manager/Link_Agreement_Items.md +0 -60
  360. md_processing/family_docs/Digital Product Manager/Link_Contracts.md +0 -26
  361. md_processing/family_docs/Digital Product Manager/Link_Digital_Product_-_Digital_Product.md +0 -30
  362. md_processing/family_docs/Digital Product Manager/Link_Subscribers.md +0 -48
  363. md_processing/family_docs/Digital Product Manager.md +0 -668
  364. md_processing/family_docs/Glossary/Attach_Category_Parent.md +0 -18
  365. md_processing/family_docs/Glossary/Attach_Term-Term_Relationship.md +0 -26
  366. md_processing/family_docs/Glossary/Create_Category.md +0 -38
  367. md_processing/family_docs/Glossary/Create_Glossary.md +0 -42
  368. md_processing/family_docs/Glossary/Create_Term.md +0 -70
  369. md_processing/family_docs/Glossary.md +0 -206
  370. md_processing/family_docs/Governance Officer/Create_Business_Imperative.md +0 -106
  371. md_processing/family_docs/Governance Officer/Create_Certification_Type.md +0 -112
  372. md_processing/family_docs/Governance Officer/Create_Governance_Approach.md +0 -114
  373. md_processing/family_docs/Governance Officer/Create_Governance_Obligation.md +0 -114
  374. md_processing/family_docs/Governance Officer/Create_Governance_Principle.md +0 -114
  375. md_processing/family_docs/Governance Officer/Create_Governance_Procedure.md +0 -128
  376. md_processing/family_docs/Governance Officer/Create_Governance_Process.md +0 -122
  377. md_processing/family_docs/Governance Officer/Create_Governance_Processing_Purpose.md +0 -106
  378. md_processing/family_docs/Governance Officer/Create_Governance_Responsibility.md +0 -122
  379. md_processing/family_docs/Governance Officer/Create_Governance_Rule.md +0 -122
  380. md_processing/family_docs/Governance Officer/Create_Governance_Strategy.md +0 -106
  381. md_processing/family_docs/Governance Officer/Create_License_Type.md +0 -112
  382. md_processing/family_docs/Governance Officer/Create_Naming_Standard_Rule.md +0 -122
  383. md_processing/family_docs/Governance Officer/Create_Regulation_Article.md +0 -106
  384. md_processing/family_docs/Governance Officer/Create_Regulation_Definition.md +0 -118
  385. md_processing/family_docs/Governance Officer/Create_Security_Access_Control.md +0 -114
  386. md_processing/family_docs/Governance Officer/Create_Security_Group.md +0 -120
  387. md_processing/family_docs/Governance Officer/Create_Service_Level_Objectives.md +0 -122
  388. md_processing/family_docs/Governance Officer/Create_Threat_Definition.md +0 -106
  389. md_processing/family_docs/Governance Officer/Link_Governance_Controls.md +0 -32
  390. md_processing/family_docs/Governance Officer/Link_Governance_Drivers.md +0 -32
  391. md_processing/family_docs/Governance Officer/Link_Governance_Policies.md +0 -32
  392. md_processing/family_docs/Governance Officer/View_Governance_Definitions.md +0 -82
  393. md_processing/family_docs/Governance Officer.md +0 -2412
  394. md_processing/family_docs/Solution Architect/Create_Information_Supply_Chain.md +0 -70
  395. md_processing/family_docs/Solution Architect/Create_Solution_Blueprint.md +0 -44
  396. md_processing/family_docs/Solution Architect/Create_Solution_Component.md +0 -96
  397. md_processing/family_docs/Solution Architect/Create_Solution_Role.md +0 -66
  398. md_processing/family_docs/Solution Architect/Link_Information_Supply_Chain_Peers.md +0 -32
  399. md_processing/family_docs/Solution Architect/Link_Solution_Component_Peers.md +0 -32
  400. md_processing/family_docs/Solution Architect/View_Information_Supply_Chains.md +0 -32
  401. md_processing/family_docs/Solution Architect/View_Solution_Blueprints.md +0 -32
  402. md_processing/family_docs/Solution Architect/View_Solution_Components.md +0 -32
  403. md_processing/family_docs/Solution Architect/View_Solution_Roles.md +0 -32
  404. md_processing/family_docs/Solution Architect.md +0 -490
  405. md_processing/md_processing_utils/debug_log +0 -574
  406. md_processing/md_processing_utils/debug_log.log +0 -0
  407. md_processing/md_processing_utils/dr-egeria-help-2025-07-17T17:22:09.md +0 -2065
  408. md_processing/md_processing_utils/generated_help_terms.md +0 -842
  409. pyegeria/.DS_Store +0 -0
  410. pyegeria/README.md +0 -35
  411. pyegeria/_client_new.py +0 -1102
  412. pyegeria/_output_formats.py +0 -730
  413. pyegeria/asset_catalog_omvs.py +0 -864
  414. pyegeria/automated_curation_omvs.py +0 -3765
  415. pyegeria/config.py +0 -523
  416. pyegeria/egeria_my_client.py +0 -91
  417. pyegeria/feedback_manager_omvs.py +0 -4573
  418. pyegeria/load_config_orig.py +0 -218
  419. pyegeria/md_processing_helpers.py +0 -58
  420. pyegeria/md_processing_utils_orig.py +0 -1103
  421. pyegeria/metadata_explorer_omvs.py +0 -2326
  422. pyegeria/my_profile_omvs.py +0 -1022
  423. pyegeria/project_manager.py +0 -1591
  424. pyegeria/registered_info.py +0 -167
  425. pyegeria/template_manager_omvs.py +0 -1414
  426. pyegeria/utils.py +0 -256
  427. pyegeria-5.4.0.28.dist-info/METADATA +0 -77
  428. pyegeria-5.4.0.28.dist-info/RECORD +0 -343
  429. pyegeria-5.4.0.28.dist-info/entry_points.txt +0 -105
  430. /commands/cat/debug_log.log → /pyegeria/deprecated/__init__.py +0 -0
  431. /pyegeria/{_exceptions.py → deprecated/_exceptions.py} +0 -0
  432. /pyegeria/{collection_models.py → models/collection_models.py} +0 -0
  433. {pyegeria-5.4.0.28.dist-info → pyegeria-5.5.3.3.dist-info/licenses}/LICENSE +0 -0
@@ -18,31 +18,25 @@ from rich.prompt import Prompt
18
18
  from rich.table import Table
19
19
 
20
20
  from pyegeria import (
21
+ PyegeriaException,
22
+ print_basic_exception,
21
23
  EgeriaTech,
22
- InvalidParameterException,
23
- PropertyServerException,
24
- UserNotAuthorizedException,
25
- print_exception_response,
24
+ settings, load_app_config, pretty_print_config,
25
+ config_logging,
26
+ save_mermaid_html,
26
27
  )
27
28
 
28
- EGERIA_METADATA_STORE = os.environ.get("EGERIA_METADATA_STORE", "active-metadata-store")
29
- EGERIA_KAFKA_ENDPOINT = os.environ.get("KAFKA_ENDPOINT", "localhost:9092")
30
- EGERIA_PLATFORM_URL = os.environ.get("EGERIA_PLATFORM_URL", "https://localhost:9443")
31
- EGERIA_VIEW_SERVER = os.environ.get("EGERIA_VIEW_SERVER", "view-server")
32
- EGERIA_VIEW_SERVER_URL = os.environ.get(
33
- "EGERIA_VIEW_SERVER_URL", "https://localhost:9443"
34
- )
35
- EGERIA_INTEGRATION_DAEMON = os.environ.get("EGERIA_INTEGRATION_DAEMON", "integration-daemon")
36
- EGERIA_ADMIN_USER = os.environ.get("ADMIN_USER", "garygeeke")
37
- EGERIA_ADMIN_PASSWORD = os.environ.get("ADMIN_PASSWORD", "secret")
38
- EGERIA_USER = os.environ.get("EGERIA_USER", "erinoverview")
39
- EGERIA_USER_PASSWORD = os.environ.get("EGERIA_USER_PASSWORD", "secret")
40
- EGERIA_JUPYTER = bool(os.environ.get("EGERIA_JUPYTER", "False"))
41
- EGERIA_WIDTH = int(os.environ.get("EGERIA_WIDTH", "260"))
42
29
 
30
+ app_config = settings.Environment
31
+ config_path = os.path.join(app_config.pyegeria_config_directory, app_config.pyegeria_config_file)
43
32
 
44
- disable_ssl_warnings = True
45
-
33
+ EGERIA_USER = os.environ.get("EGERIA_USER", "erinoverview")
34
+ EGERIA_USER_PASSWORD = os.environ.get("EGERIA_USER_PASSWORD", "secret")
35
+ EGERIA_MERMAID_FOLDER = os.path.join(app_config.pyegeria_root, app_config.egeria_mermaid_folder)
36
+ conf = load_app_config(config_path)
37
+ # print(f"Loading config from {config_path} and mermaid folder is {EGERIA_MERMAID_FOLDER}")
38
+ console = Console(width = app_config.console_width)
39
+ config_logging()
46
40
 
47
41
  def display_anchored_elements(
48
42
  property_value: str,
@@ -52,8 +46,8 @@ def display_anchored_elements(
52
46
  username: str,
53
47
  user_password: str,
54
48
  time_out: int = 60,
55
- jupyter: bool = EGERIA_JUPYTER,
56
- width: int = EGERIA_WIDTH,
49
+ jupyter: bool = app_config.egeria_jupyter,
50
+ width: int = app_config.console_width,
57
51
  ):
58
52
  console = Console(width=width, force_terminal=not jupyter, soft_wrap=True)
59
53
  if (property_value is None) or (len(property_value) < 3):
@@ -87,13 +81,13 @@ def display_anchored_elements(
87
81
  table.add_column("Matching Elements")
88
82
 
89
83
  classification = "Anchors"
90
- open_type_name = None
84
+ metadata_element_type_name = None
91
85
  property_value = property_value
92
86
 
93
87
  property_names = prop_list
94
88
 
95
89
  elements = g_client.find_elements_by_classification_with_property_value(
96
- classification, property_value, property_names, open_type_name
90
+ classification, property_value, property_names, metadata_element_type_name
97
91
  )
98
92
  if type(elements) is str:
99
93
  return table
@@ -153,11 +147,9 @@ def display_anchored_elements(
153
147
  console.print(generate_table(property_value, prop_list), soft_wrap=True)
154
148
 
155
149
  except (
156
- InvalidParameterException,
157
- PropertyServerException,
158
- UserNotAuthorizedException,
150
+ PyegeriaException
159
151
  ) as e:
160
- console.print_exception()
152
+ print_basic_exception(e)
161
153
  sys.exit(1)
162
154
 
163
155
  except Exception as e:
@@ -177,8 +169,8 @@ def main():
177
169
 
178
170
  args = parser.parse_args()
179
171
 
180
- server = args.server if args.server is not None else EGERIA_VIEW_SERVER
181
- url = args.url if args.url is not None else EGERIA_PLATFORM_URL
172
+ server = args.server if args.server is not None else app_config.egeria_view_server
173
+ url = args.url if args.url is not None else app_config.egeria_platform_url
182
174
  userid = args.userid if args.userid is not None else EGERIA_USER
183
175
  user_pass = args.password if args.password is not None else EGERIA_USER_PASSWORD
184
176
  time_out = args.time_out if args.time_out is not None else 60
@@ -17,27 +17,24 @@ from rich.console import Console
17
17
  from rich.table import Table
18
18
 
19
19
  from pyegeria import (
20
- InvalidParameterException,
21
- PropertyServerException,
22
20
  RegisteredInfo,
23
- UserNotAuthorizedException,
24
- print_exception_response,
21
+ print_basic_exception,
22
+ PyegeriaException,
23
+ settings, load_app_config, pretty_print_config,
24
+ config_logging,
25
+ save_mermaid_html,
25
26
  )
26
27
 
27
- EGERIA_METADATA_STORE = os.environ.get("EGERIA_METADATA_STORE", "active-metadata-store")
28
- EGERIA_KAFKA_ENDPOINT = os.environ.get("KAFKA_ENDPOINT", "localhost:9092")
29
- EGERIA_PLATFORM_URL = os.environ.get("EGERIA_PLATFORM_URL", "https://localhost:9443")
30
- EGERIA_VIEW_SERVER = os.environ.get("EGERIA_VIEW_SERVER", "view-server")
31
- EGERIA_VIEW_SERVER_URL = os.environ.get(
32
- "EGERIA_VIEW_SERVER_URL", "https://localhost:9443"
33
- )
34
- EGERIA_INTEGRATION_DAEMON = os.environ.get("EGERIA_INTEGRATION_DAEMON", "integration-daemon")
35
- EGERIA_ADMIN_USER = os.environ.get("ADMIN_USER", "garygeeke")
36
- EGERIA_ADMIN_PASSWORD = os.environ.get("ADMIN_PASSWORD", "secret")
28
+ app_config = settings.Environment
29
+ config_path = os.path.join(app_config.pyegeria_config_directory, app_config.pyegeria_config_file)
30
+
37
31
  EGERIA_USER = os.environ.get("EGERIA_USER", "erinoverview")
38
32
  EGERIA_USER_PASSWORD = os.environ.get("EGERIA_USER_PASSWORD", "secret")
39
- EGERIA_JUPYTER = bool(os.environ.get("EGERIA_JUPYTER", "False"))
40
- EGERIA_WIDTH = int(os.environ.get("EGERIA_WIDTH", "200"))
33
+ EGERIA_MERMAID_FOLDER = os.path.join(app_config.pyegeria_root, app_config.egeria_mermaid_folder)
34
+ conf = load_app_config(config_path)
35
+ # print(f"Loading config from {config_path} and mermaid folder is {EGERIA_MERMAID_FOLDER}")
36
+ console = Console(width=app_config.console_width)
37
+ config_logging()
41
38
 
42
39
 
43
40
  def display_asset_types(
@@ -45,8 +42,8 @@ def display_asset_types(
45
42
  url: str,
46
43
  username: str,
47
44
  user_password: str,
48
- jupyter: bool = EGERIA_JUPYTER,
49
- width: int = EGERIA_WIDTH,
45
+ jupyter: bool = app_config.egeria_jupyter,
46
+ width: int = app_config.console_width,
50
47
  ):
51
48
  r_client = RegisteredInfo(server, url, username)
52
49
  token = r_client.create_egeria_bearer_token(username, user_password)
@@ -90,11 +87,9 @@ def display_asset_types(
90
87
  console.print(generate_table())
91
88
 
92
89
  except (
93
- InvalidParameterException,
94
- PropertyServerException,
95
- UserNotAuthorizedException,
90
+ PyegeriaException
96
91
  ) as e:
97
- print_exception_response(e)
92
+ print_basic_exception(e)
98
93
  assert e.related_http_code != "200", "Invalid parameters"
99
94
  finally:
100
95
  r_client.close_session()
@@ -109,8 +104,8 @@ def main():
109
104
 
110
105
  args = parser.parse_args()
111
106
 
112
- server = args.server if args.server is not None else EGERIA_VIEW_SERVER
113
- url = args.url if args.url is not None else EGERIA_PLATFORM_URL
107
+ server = args.server if args.server is not None else app_config.egeria_view_server
108
+ url = args.url if args.url is not None else app_config.egeria_platform_url
114
109
  userid = args.userid if args.userid is not None else EGERIA_USER
115
110
  user_pass = args.password if args.password is not None else EGERIA_USER_PASSWORD
116
111
  # guid = args.guid if args.guid is not None else None
@@ -13,31 +13,27 @@ from rich.table import Table
13
13
 
14
14
  from pyegeria import (
15
15
  EgeriaTech,
16
- InvalidParameterException,
17
- PropertyServerException,
18
- UserNotAuthorizedException,
19
- print_exception_response,
16
+ print_basic_exception,
17
+ PyegeriaException,
18
+ settings, load_app_config, pretty_print_config,
19
+ config_logging,
20
+ save_mermaid_html,
20
21
  )
21
22
 
22
- console = Console()
23
- EGERIA_METADATA_STORE = os.environ.get("EGERIA_METADATA_STORE", "active-metadata-store")
24
- EGERIA_KAFKA_ENDPOINT = os.environ.get("KAFKA_ENDPOINT", "localhost:9092")
25
- EGERIA_PLATFORM_URL = os.environ.get("EGERIA_PLATFORM_URL", "https://localhost:9443")
26
- EGERIA_VIEW_SERVER = os.environ.get("EGERIA_VIEW_SERVER", "view-server")
27
- EGERIA_VIEW_SERVER_URL = os.environ.get(
28
- "EGERIA_VIEW_SERVER_URL", "https://localhost:9443"
29
- )
30
- EGERIA_INTEGRATION_DAEMON = os.environ.get("EGERIA_INTEGRATION_DAEMON", "integration-daemon")
31
- EGERIA_ADMIN_USER = os.environ.get("ADMIN_USER", "garygeeke")
32
- EGERIA_ADMIN_PASSWORD = os.environ.get("ADMIN_PASSWORD", "secret")
23
+ app_config = settings.Environment
24
+ config_path = os.path.join(app_config.pyegeria_config_directory, app_config.pyegeria_config_file)
25
+
33
26
  EGERIA_USER = os.environ.get("EGERIA_USER", "erinoverview")
34
27
  EGERIA_USER_PASSWORD = os.environ.get("EGERIA_USER_PASSWORD", "secret")
35
- EGERIA_JUPYTER = bool(os.environ.get("EGERIA_JUPYTER", "False"))
36
- EGERIA_WIDTH = int(os.environ.get("EGERIA_WIDTH", "200"))
28
+ EGERIA_MERMAID_FOLDER = os.path.join(app_config.pyegeria_root, app_config.egeria_mermaid_folder)
29
+ conf = load_app_config(config_path)
30
+ # print(f"Loading config from {config_path} and mermaid folder is {EGERIA_MERMAID_FOLDER}")
31
+ console = Console(width=app_config.console_width)
32
+ config_logging()
37
33
 
38
34
 
39
35
  def find_elements_by_classification_by_prop_value(
40
- om_type: str,
36
+ metadata_element_type_name: str,
41
37
  classification: str,
42
38
  property_value: str,
43
39
  property_names: [str],
@@ -45,16 +41,16 @@ def find_elements_by_classification_by_prop_value(
45
41
  url: str,
46
42
  username: str,
47
43
  password: str,
48
- jupyter: bool = EGERIA_JUPYTER,
49
- width: int = EGERIA_WIDTH,
44
+ jupyter: bool = app_config.egeria_jupyter,
45
+ width: int = app_config.console_width,
50
46
  ):
51
47
  c_client = EgeriaTech(server, url, user_id=username, user_pwd=password)
52
48
  token = c_client.create_egeria_bearer_token()
53
49
 
54
- om_typedef = c_client.get_typedef_by_name(om_type)
50
+ om_typedef = c_client.get_typedef_by_name(metadata_element_type_name)
55
51
  if type(om_typedef) is str:
56
52
  print(
57
- f"The type name '{om_type}' is not known to the Egeria platform at {url} - {server}"
53
+ f"The type name '{metadata_element_type_name}' is not known to the Egeria platform at {url} - {server}"
58
54
  )
59
55
  sys.exit(0)
60
56
 
@@ -66,7 +62,7 @@ def find_elements_by_classification_by_prop_value(
66
62
  sys.exit(0)
67
63
 
68
64
  elements = c_client.find_elements_by_classification_with_property_value(
69
- classification, property_value, property_names, om_type
65
+ classification, property_value, property_names, metadata_element_type_name
70
66
  )
71
67
  c = classification
72
68
 
@@ -81,7 +77,7 @@ def find_elements_by_classification_by_prop_value(
81
77
  caption_style="white on black",
82
78
  show_lines=True,
83
79
  box=box.ROUNDED,
84
- title=f"Elements for Classification: {c}, Open Metadata Type: {om_type}, property value: {property_value}, "
80
+ title=f"Elements for Classification: {c}, Open Metadata Type: {metadata_element_type_name}, property value: {property_value}, "
85
81
  f"properties: {property_names}",
86
82
  expand=True,
87
83
  width=width,
@@ -147,11 +143,9 @@ def find_elements_by_classification_by_prop_value(
147
143
  console.print(generate_table())
148
144
 
149
145
  except (
150
- InvalidParameterException,
151
- PropertyServerException,
152
- UserNotAuthorizedException,
146
+ PyegeriaException
153
147
  ) as e:
154
- print_exception_response(e)
148
+ print_basic_exception(e)
155
149
  print("\n\nPerhaps the type name isn't known")
156
150
  finally:
157
151
  c_client.close_session()
@@ -166,8 +160,8 @@ def main():
166
160
 
167
161
  args = parser.parse_args()
168
162
 
169
- server = args.server if args.server is not None else EGERIA_VIEW_SERVER
170
- url = args.url if args.url is not None else EGERIA_PLATFORM_URL
163
+ server = args.server if args.server is not None else app_config.egeria_view_server
164
+ url = args.url if args.url is not None else app_config.egeria_platform_url
171
165
  userid = args.userid if args.userid is not None else EGERIA_USER
172
166
  password = args.password if args.password is not None else EGERIA_USER_PASSWORD
173
167
 
@@ -175,7 +169,7 @@ def main():
175
169
  classification = Prompt.ask(
176
170
  "Enter the Classification to filter on", default="Anchors"
177
171
  )
178
- om_type = Prompt.ask(
172
+ metadata_element_type_name = Prompt.ask(
179
173
  "Enter the Open Metadata Type to find elements of", default="Referenceable"
180
174
  )
181
175
  property_value = Prompt.ask("Enter the property value to search for")
@@ -183,7 +177,7 @@ def main():
183
177
  "Enter a comma seperated list of properties to search"
184
178
  )
185
179
  find_elements_by_classification_by_prop_value(
186
- om_type,
180
+ metadata_element_type_name,
187
181
  classification,
188
182
  property_value,
189
183
  [property_names],
@@ -13,27 +13,23 @@ from rich.table import Table
13
13
 
14
14
  from pyegeria import (
15
15
  EgeriaTech,
16
- InvalidParameterException,
17
- PropertyServerException,
18
- UserNotAuthorizedException,
19
- print_exception_response,
16
+ print_basic_exception,
17
+ PyegeriaException,
18
+ settings, load_app_config, pretty_print_config,
19
+ config_logging,
20
+ save_mermaid_html,
20
21
  )
21
22
 
22
- console = Console()
23
- EGERIA_METADATA_STORE = os.environ.get("EGERIA_METADATA_STORE", "active-metadata-store")
24
- EGERIA_KAFKA_ENDPOINT = os.environ.get("KAFKA_ENDPOINT", "localhost:9092")
25
- EGERIA_PLATFORM_URL = os.environ.get("EGERIA_PLATFORM_URL", "https://localhost:9443")
26
- EGERIA_VIEW_SERVER = os.environ.get("EGERIA_VIEW_SERVER", "view-server")
27
- EGERIA_VIEW_SERVER_URL = os.environ.get(
28
- "EGERIA_VIEW_SERVER_URL", "https://localhost:9443"
29
- )
30
- EGERIA_INTEGRATION_DAEMON = os.environ.get("EGERIA_INTEGRATION_DAEMON", "integration-daemon")
31
- EGERIA_ADMIN_USER = os.environ.get("ADMIN_USER", "garygeeke")
32
- EGERIA_ADMIN_PASSWORD = os.environ.get("ADMIN_PASSWORD", "secret")
23
+ app_config = settings.Environment
24
+ config_path = os.path.join(app_config.pyegeria_config_directory, app_config.pyegeria_config_file)
25
+
33
26
  EGERIA_USER = os.environ.get("EGERIA_USER", "erinoverview")
34
27
  EGERIA_USER_PASSWORD = os.environ.get("EGERIA_USER_PASSWORD", "secret")
35
- EGERIA_JUPYTER = bool(os.environ.get("EGERIA_JUPYTER", "False"))
36
- EGERIA_WIDTH = int(os.environ.get("EGERIA_WIDTH", "200"))
28
+ EGERIA_MERMAID_FOLDER = os.path.join(app_config.pyegeria_root, app_config.egeria_mermaid_folder)
29
+ conf = load_app_config(config_path)
30
+ # print(f"Loading config from {config_path} and mermaid folder is {EGERIA_MERMAID_FOLDER}")
31
+ console = Console(width=app_config.console_width)
32
+ config_logging()
37
33
 
38
34
 
39
35
  def find_elements_by_prop_value(
@@ -44,8 +40,8 @@ def find_elements_by_prop_value(
44
40
  url: str,
45
41
  username: str,
46
42
  password: str,
47
- jupyter: bool = EGERIA_JUPYTER,
48
- width: int = EGERIA_WIDTH,
43
+ jupyter: bool = app_config.egeria_jupyter,
44
+ width: int = app_config.console_width,
49
45
  ):
50
46
  c_client = EgeriaTech(server, url, user_id=username, user_pwd=password)
51
47
  token = c_client.create_egeria_bearer_token()
@@ -137,11 +133,9 @@ def find_elements_by_prop_value(
137
133
  console.print(generate_table())
138
134
 
139
135
  except (
140
- InvalidParameterException,
141
- PropertyServerException,
142
- UserNotAuthorizedException,
136
+ PyegeriaException
143
137
  ) as e:
144
- print_exception_response(e)
138
+ print_basic_exception(e)
145
139
  print("\n\nPerhaps the type name isn't known")
146
140
  finally:
147
141
  c_client.close_session()
@@ -156,8 +150,8 @@ def main():
156
150
 
157
151
  args = parser.parse_args()
158
152
 
159
- server = args.server if args.server is not None else EGERIA_VIEW_SERVER
160
- url = args.url if args.url is not None else EGERIA_PLATFORM_URL
153
+ server = args.server if args.server is not None else app_config.egeria_view_server
154
+ url = args.url if args.url is not None else app_config.egeria_platform_url
161
155
  userid = args.userid if args.userid is not None else EGERIA_USER
162
156
  password = args.password if args.password is not None else EGERIA_USER_PASSWORD
163
157
 
@@ -13,27 +13,23 @@ from rich.table import Table
13
13
 
14
14
  from pyegeria import (
15
15
  EgeriaTech,
16
- InvalidParameterException,
17
- PropertyServerException,
18
- UserNotAuthorizedException,
19
- print_exception_response,
16
+ print_basic_exception,
17
+ PyegeriaException,
18
+ settings, load_app_config, pretty_print_config,
19
+ config_logging,
20
+ save_mermaid_html,
20
21
  )
21
22
 
22
- console = Console()
23
- EGERIA_METADATA_STORE = os.environ.get("EGERIA_METADATA_STORE", "active-metadata-store")
24
- EGERIA_KAFKA_ENDPOINT = os.environ.get("KAFKA_ENDPOINT", "localhost:9092")
25
- EGERIA_PLATFORM_URL = os.environ.get("EGERIA_PLATFORM_URL", "https://localhost:9443")
26
- EGERIA_VIEW_SERVER = os.environ.get("EGERIA_VIEW_SERVER", "view-server")
27
- EGERIA_VIEW_SERVER_URL = os.environ.get(
28
- "EGERIA_VIEW_SERVER_URL", "https://localhost:9443"
29
- )
30
- EGERIA_INTEGRATION_DAEMON = os.environ.get("EGERIA_INTEGRATION_DAEMON", "integration-daemon")
31
- EGERIA_ADMIN_USER = os.environ.get("ADMIN_USER", "garygeeke")
32
- EGERIA_ADMIN_PASSWORD = os.environ.get("ADMIN_PASSWORD", "secret")
23
+ app_config = settings.Environment
24
+ config_path = os.path.join(app_config.pyegeria_config_directory, app_config.pyegeria_config_file)
25
+
33
26
  EGERIA_USER = os.environ.get("EGERIA_USER", "erinoverview")
34
27
  EGERIA_USER_PASSWORD = os.environ.get("EGERIA_USER_PASSWORD", "secret")
35
- EGERIA_JUPYTER = bool(os.environ.get("EGERIA_JUPYTER", "False"))
36
- EGERIA_WIDTH = int(os.environ.get("EGERIA_WIDTH", "200"))
28
+ EGERIA_MERMAID_FOLDER = os.path.join(app_config.pyegeria_root, app_config.egeria_mermaid_folder)
29
+ conf = load_app_config(config_path)
30
+ # print(f"Loading config from {config_path} and mermaid folder is {EGERIA_MERMAID_FOLDER}")
31
+ console = Console(width=app_config.console_width)
32
+ config_logging()
37
33
 
38
34
 
39
35
  def find_elements_by_prop_value_x(
@@ -44,8 +40,8 @@ def find_elements_by_prop_value_x(
44
40
  url: str,
45
41
  username: str,
46
42
  password: str,
47
- jupyter: bool = EGERIA_JUPYTER,
48
- width: int = EGERIA_WIDTH,
43
+ jupyter: bool = app_config.egeria_jupyter,
44
+ width: int = app_config.console_width,
49
45
  ):
50
46
  c_client = EgeriaTech(server, url, user_id=username, user_pwd=password)
51
47
  token = c_client.create_egeria_bearer_token()
@@ -158,11 +154,9 @@ def find_elements_by_prop_value_x(
158
154
  console.print(generate_table())
159
155
 
160
156
  except (
161
- InvalidParameterException,
162
- PropertyServerException,
163
- UserNotAuthorizedException,
157
+ PyegeriaException,
164
158
  ) as e:
165
- print_exception_response(e)
159
+ print_basic_exception(e)
166
160
  print("\n\nPerhaps the type name isn't known")
167
161
  finally:
168
162
  c_client.close_session()
@@ -177,8 +171,8 @@ def main():
177
171
 
178
172
  args = parser.parse_args()
179
173
 
180
- server = args.server if args.server is not None else EGERIA_VIEW_SERVER
181
- url = args.url if args.url is not None else EGERIA_PLATFORM_URL
174
+ server = args.server if args.server is not None else app_config.egeria_view_server
175
+ url = args.url if args.url is not None else app_config.egeria_platform_url
182
176
  userid = args.userid if args.userid is not None else EGERIA_USER
183
177
  password = args.password if args.password is not None else EGERIA_USER_PASSWORD
184
178
 
@@ -190,9 +184,7 @@ def main():
190
184
  property_names = Prompt.ask(
191
185
  "Enter a comma seperated list of properties to search"
192
186
  )
193
- find_elements_by_prop_value_x(
194
- om_type, property_value, [property_names], server, url, userid, password
195
- )
187
+ find_elements_by_prop_value_x(om_type, property_value, [property_names], server, url, userid, password)
196
188
  except KeyboardInterrupt:
197
189
  pass
198
190
 
@@ -5,7 +5,6 @@ import os
5
5
  import sys
6
6
  import time
7
7
 
8
- from jedi import Project
9
8
  from rich import box
10
9
  from rich.console import Console
11
10
  from rich.markdown import Markdown
@@ -14,50 +13,40 @@ from rich.table import Table
14
13
 
15
14
  from pyegeria import (
16
15
  EgeriaTech,
17
- InvalidParameterException,
18
- PropertyServerException,
19
- UserNotAuthorizedException,
20
- print_exception_response,
16
+ print_basic_exception,
17
+ PyegeriaException,
18
+ settings, load_app_config, config_logging,
21
19
  )
22
20
 
23
- console = Console()
24
- EGERIA_METADATA_STORE = os.environ.get("EGERIA_METADATA_STORE", "active-metadata-store")
25
- EGERIA_KAFKA_ENDPOINT = os.environ.get("KAFKA_ENDPOINT", "localhost:9092")
26
- EGERIA_PLATFORM_URL = os.environ.get("EGERIA_PLATFORM_URL", "https://localhost:9443")
27
- EGERIA_VIEW_SERVER = os.environ.get("EGERIA_VIEW_SERVER", "view-server")
28
- EGERIA_VIEW_SERVER_URL = os.environ.get(
29
- "EGERIA_VIEW_SERVER_URL", "https://localhost:9443"
30
- )
31
- EGERIA_INTEGRATION_DAEMON = os.environ.get("EGERIA_INTEGRATION_DAEMON", "integration-daemon")
32
- EGERIA_ADMIN_USER = os.environ.get("ADMIN_USER", "garygeeke")
33
- EGERIA_ADMIN_PASSWORD = os.environ.get("ADMIN_PASSWORD", "secret")
21
+ app_config = settings.Environment
22
+ config_path = os.path.join(app_config.pyegeria_config_directory, app_config.pyegeria_config_file)
23
+
34
24
  EGERIA_USER = os.environ.get("EGERIA_USER", "erinoverview")
35
25
  EGERIA_USER_PASSWORD = os.environ.get("EGERIA_USER_PASSWORD", "secret")
36
- EGERIA_JUPYTER = bool(os.environ.get("EGERIA_JUPYTER", "False"))
37
- EGERIA_WIDTH = int(os.environ.get("EGERIA_WIDTH", "200"))
38
-
39
-
40
- def list_classified_elements(
41
- om_type: str,
42
- classification: str,
43
- server: str,
44
- url: str,
45
- username: str,
46
- password: str,
47
- jupyter: bool = EGERIA_JUPYTER,
48
- width: int = EGERIA_WIDTH,
49
- ):
26
+ EGERIA_MERMAID_FOLDER = os.path.join(app_config.pyegeria_root, app_config.egeria_mermaid_folder)
27
+ conf = load_app_config(config_path)
28
+ # print(f"Loading config from {config_path} and mermaid folder is {EGERIA_MERMAID_FOLDER}")
29
+ console = Console(width=app_config.console_width)
30
+ config_logging()
31
+
32
+
33
+ def list_classified_elements(om_type: str, classification: str, server: str, url: str, username: str, password: str,
34
+ jupyter: bool = app_config.egeria_jupyter, width: int = app_config.console_width):
50
35
  c_client = EgeriaTech(server, url, user_id=username, user_pwd=password)
51
36
  token = c_client.create_egeria_bearer_token()
52
37
 
53
38
  om_typedef = c_client.get_typedef_by_name(om_type)
54
39
  if type(om_typedef) is str:
55
- print(
56
- f"The type name '{om_type}' is not known to the Egeria platform at {url} - {server}"
57
- )
40
+ print(f"The type name '{om_type}' is not known to the Egeria platform at {url} - {server}")
58
41
  sys.exit(1)
59
-
60
- elements = c_client.get_elements_by_classification(classification, om_type)
42
+ try:
43
+ elements = c_client.get_elements_by_classification(classification, om_type)
44
+ except PyegeriaException as e:
45
+ if e.response_egeria_msg_id == "OMAG-COMMON-400-018":
46
+ print(f"\n ===> Looks like the classification {classification} isn't known...\n")
47
+ sys.exit(1)
48
+ else:
49
+ print_basic_exception(e)
61
50
 
62
51
  def generate_table() -> Table:
63
52
  """Make a new table."""
@@ -135,11 +124,9 @@ def list_classified_elements(
135
124
  console.print(generate_table())
136
125
 
137
126
  except (
138
- InvalidParameterException,
139
- PropertyServerException,
140
- UserNotAuthorizedException,
127
+ PyegeriaException,
141
128
  ) as e:
142
- print_exception_response(e)
129
+ print_basic_exception(e)
143
130
  print("\n\nPerhaps the type name isn't known")
144
131
  finally:
145
132
  c_client.close_session()
@@ -154,8 +141,8 @@ def main():
154
141
 
155
142
  args = parser.parse_args()
156
143
 
157
- server = args.server if args.server is not None else EGERIA_VIEW_SERVER
158
- url = args.url if args.url is not None else EGERIA_PLATFORM_URL
144
+ server = args.server if args.server is not None else app_config.egeria_view_server
145
+ url = args.url if args.url is not None else app_config.egeria_platform_url
159
146
  userid = args.userid if args.userid is not None else EGERIA_USER
160
147
  password = args.password if args.password is not None else EGERIA_USER_PASSWORD
161
148
 
@@ -19,27 +19,18 @@ from rich.table import Table
19
19
 
20
20
  from pyegeria import (
21
21
  EgeriaTech,
22
- InvalidParameterException,
23
- PropertyServerException,
24
- UserNotAuthorizedException,
22
+ PyegeriaException,
25
23
  ValidMetadataManager,
26
- print_exception_response,
24
+ print_basic_exception,
25
+ settings,
26
+ config_logging
27
27
  )
28
-
29
- EGERIA_METADATA_STORE = os.environ.get("EGERIA_METADATA_STORE", "active-metadata-store")
30
- EGERIA_KAFKA_ENDPOINT = os.environ.get("KAFKA_ENDPOINT", "localhost:9092")
31
- EGERIA_PLATFORM_URL = os.environ.get("EGERIA_PLATFORM_URL", "https://localhost:9443")
32
- EGERIA_VIEW_SERVER = os.environ.get("EGERIA_VIEW_SERVER", "view-server")
33
- EGERIA_VIEW_SERVER_URL = os.environ.get(
34
- "EGERIA_VIEW_SERVER_URL", "https://localhost:9443"
35
- )
36
- EGERIA_INTEGRATION_DAEMON = os.environ.get("EGERIA_INTEGRATION_DAEMON", "integration-daemon")
37
- EGERIA_ADMIN_USER = os.environ.get("ADMIN_USER", "garygeeke")
38
- EGERIA_ADMIN_PASSWORD = os.environ.get("ADMIN_PASSWORD", "secret")
39
28
  EGERIA_USER = os.environ.get("EGERIA_USER", "erinoverview")
40
29
  EGERIA_USER_PASSWORD = os.environ.get("EGERIA_USER_PASSWORD", "secret")
41
- EGERIA_JUPYTER = bool(os.environ.get("EGERIA_JUPYTER", "False"))
42
- EGERIA_WIDTH = int(os.environ.get("EGERIA_WIDTH", "200"))
30
+
31
+ app_config = settings.Environment
32
+ config_logging()
33
+ console = Console(width = app_config.console_width)
43
34
 
44
35
 
45
36
  def display_gov_processes(
@@ -48,8 +39,8 @@ def display_gov_processes(
48
39
  url: str,
49
40
  username: str,
50
41
  user_pass: str,
51
- jupyter: bool = EGERIA_JUPYTER,
52
- width: int = EGERIA_WIDTH,
42
+ jupyter: bool = app_config.egeria_jupyter,
43
+ width: int = app_config.console_width,
53
44
  ) -> Table:
54
45
  p_client = EgeriaTech(server, url, user_id=username, user_pwd=user_pass)
55
46
  token = p_client.create_egeria_bearer_token(username, user_pass)
@@ -80,7 +71,7 @@ def display_gov_processes(
80
71
  )
81
72
  table.add_column("Description")
82
73
 
83
- process_list = p_client.find_gov_action_processes(type_name)
74
+ process_list = p_client.find_governance_definitions(search_string = type_name, metadata_element_subtypes=["GovernanceActionProcess"])
84
75
 
85
76
  if type(process_list) is str:
86
77
  print("No Governance Processes found matching the type name\n")
@@ -88,7 +79,7 @@ def display_gov_processes(
88
79
 
89
80
  for proc in process_list:
90
81
  guid = proc["elementHeader"]["guid"]
91
- props = proc["processProperties"]
82
+ props = proc["properties"]
92
83
  name = props[("displayName" "")]
93
84
  qualified_name = props["qualifiedName"]
94
85
  description = props.get("description", "---")
@@ -104,15 +95,13 @@ def display_gov_processes(
104
95
  console.print(generate_table(type_name))
105
96
 
106
97
  except (
107
- InvalidParameterException,
108
- PropertyServerException,
109
- UserNotAuthorizedException,
98
+ PyegeriaException,
110
99
  ValueError,
111
100
  ) as e:
112
101
  if type(e) is str:
113
102
  print(e)
114
103
  else:
115
- print_exception_response(e)
104
+ print_basic_exception(e)
116
105
 
117
106
 
118
107
  def main():
@@ -125,8 +114,8 @@ def main():
125
114
 
126
115
  args = parser.parse_args()
127
116
 
128
- server = args.server if args.server is not None else EGERIA_VIEW_SERVER
129
- url = args.url if args.url is not None else EGERIA_PLATFORM_URL
117
+ server = args.server if args.server is not None else app_config.egeria_view_server
118
+ url = args.url if args.url is not None else app_config.egeria_view_server_url
130
119
  userid = args.userid if args.userid is not None else EGERIA_USER
131
120
  user_pass = args.password if args.password is not None else EGERIA_USER_PASSWORD
132
121
  type_name = Prompt.ask("Enter the Type Name to retrieve:", default="*")