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
pyegeria/core/utils.py ADDED
@@ -0,0 +1,405 @@
1
+ """
2
+ SPDX-License-Identifier: Apache-2.0
3
+ Copyright Contributors to the ODPi Egeria project.
4
+
5
+ General utility functions in support of the Egeria Python Client package.
6
+
7
+ """
8
+
9
+ from loguru import logger
10
+ from rich import print, print_json
11
+ from rich.console import Console
12
+ from pyegeria.core.config import settings as app_settings
13
+ from typing import Callable, TypeVar
14
+
15
+ T = TypeVar('T', bound=Callable)
16
+
17
+ console = Console(width=200)
18
+
19
+ def init_log():
20
+ pass
21
+
22
+ def print_rest_request_body(body):
23
+ """
24
+
25
+ Args:
26
+ body:
27
+ """
28
+ pretty_body = json.dumps(body, indent=4)
29
+ print_json(pretty_body, indent=4, sort_keys=True)
30
+
31
+
32
+ def print_rest_response(response):
33
+ """
34
+
35
+ Args:
36
+ response:
37
+ """
38
+ print("Returns:")
39
+ pretty_body = json.dumps(response, indent=4)
40
+ print_json(pretty_body, indent=4, sort_keys=True)
41
+
42
+
43
+ def print_guid_list(guids):
44
+ """Print a list of guids"""
45
+ if guids is None:
46
+ print("No assets created")
47
+ else:
48
+ pretty_guids = json.dumps(guids, indent=4)
49
+ print_json(pretty_guids, indent=4, sort_keys=True)
50
+
51
+
52
+ #
53
+ # OCF Common services
54
+ # Working with assets - this set of functions displays assets returned from the open metadata repositories.
55
+ #
56
+
57
+
58
+
59
+
60
+ def body_slimmer(body: dict) -> dict:
61
+ """body_slimmer is a little function to remove unused keys from a dict
62
+ and recursively slim embedded dicts
63
+
64
+ Parameters
65
+ ----------
66
+ body : the dictionary that you want to slim
67
+
68
+ Returns
69
+ -------
70
+ dict:
71
+ a slimmed body with all embedded dictionaries also slimmed
72
+ """
73
+ if body is None:
74
+ return {}
75
+
76
+ slimmed = {}
77
+ for key, value in body.items():
78
+ if value and not isinstance(value, tuple):
79
+ if isinstance(value, dict):
80
+ # Recursively slim embedded dictionaries
81
+ slimmed_value = body_slimmer(value)
82
+ if slimmed_value: # Only include non-empty dictionaries
83
+ slimmed[key] = slimmed_value
84
+ else:
85
+ slimmed[key] = value
86
+ return slimmed
87
+
88
+
89
+ def camel_to_title_case(input_string):
90
+ # Add a space before uppercase letters and capitalize each word
91
+ result = re.sub(r'([a-z])([A-Z])', r'\1 \2', input_string).title()
92
+ return result
93
+
94
+
95
+ def to_camel_case(input_string):
96
+ """Convert an input string to camelCase, singularizing if plural.
97
+
98
+ This function takes an input string, converts it to singular form if it's plural,
99
+ and then transforms it to camelCase format (first word lowercase, subsequent words
100
+ capitalized with no spaces).
101
+
102
+ Parameters
103
+ ----------
104
+ input_string : str
105
+ The string to convert to camelCase
106
+
107
+ Returns
108
+ -------
109
+ str:
110
+ The input string converted to camelCase, after singularization if needed
111
+
112
+ Examples
113
+ --------
114
+ >>> to_camel_case("data categories")
115
+ 'dataCategory'
116
+ >>> to_camel_case("business terms")
117
+ 'businessTerm'
118
+ >>> to_camel_case("glossary categories")
119
+ 'glossaryCategory'
120
+ """
121
+ if not input_string:
122
+ return ""
123
+
124
+ # Convert to lowercase for consistent processing
125
+ lowercase_input = input_string.lower()
126
+
127
+ # First, convert to singular if plural
128
+ singular = lowercase_input
129
+
130
+ # Handle common plural endings
131
+ if singular.endswith('ies'):
132
+ singular = singular[:-3] + 'y'
133
+ elif singular.endswith('es'):
134
+ # Special cases like 'classes' -> 'class'
135
+ if singular.endswith('sses') or singular.endswith('ches') or singular.endswith('shes') or singular.endswith('xes'):
136
+ singular = singular[:-2]
137
+ else:
138
+ singular = singular[:-1]
139
+ elif singular.endswith('s') and not singular.endswith('ss'):
140
+ singular = singular[:-1]
141
+
142
+ # Split the string into words and convert to camelCase
143
+ words = singular.split()
144
+ if not words:
145
+ return ""
146
+
147
+ # First word is lowercase, rest are capitalized
148
+ result = words[0]
149
+ for word in words[1:]:
150
+ result += word.capitalize()
151
+
152
+ return result
153
+
154
+ def to_pascal_case(input_string)->str:
155
+ """
156
+ Convert input string to PascalCase, singularizing if plural.
157
+ Args:
158
+ input_string ():
159
+
160
+ Returns:
161
+ transformed string
162
+ """
163
+ result = to_camel_case(input_string)
164
+ output_string = result[0].upper() + result[1:]
165
+ return output_string
166
+
167
+ def flatten_dict_to_string(d: dict) -> str:
168
+ """Flatten a dictionary into a string and replace quotes with backticks."""
169
+ try:
170
+ flat_string = ", ".join(
171
+ # Change replace(\"'\", '`') to replace("'", '`')
172
+ f"{key}=`{str(value).replace('\"', '`').replace("'", '`')}`"
173
+ for key, value in d.items()
174
+ )
175
+ return flat_string
176
+ except Exception as e:
177
+ # Corrected syntax for exception chaining
178
+ raise Exception("Error flattening dictionary") from e
179
+ # The decorator logic, which applies @logger.catch dynamically
180
+
181
+ def dict_to_markdown_list(data: dict, level: int = 0) -> str:
182
+ """
183
+ Recursively converts a dictionary into a nested markdown bullet list string.
184
+
185
+ Args:
186
+ data (dict): The dictionary to convert.
187
+ level (int): The current indentation level (default is 0).
188
+
189
+ Returns:
190
+ str: The markdown formatted string.
191
+ """
192
+ markdown_str = ""
193
+ # Standard markdown indent is often 2 or 4 spaces. Using 2 for compactness in recursion.
194
+ indent = " " * level
195
+
196
+ for key, value in data.items():
197
+ if isinstance(value, dict):
198
+ markdown_str += f"{indent}* **{key}**:\n{dict_to_markdown_list(value, level + 1)}"
199
+ elif isinstance(value, list):
200
+ markdown_str += f"{indent}* **{key}**:\n"
201
+ for item in value:
202
+ if isinstance(item, dict):
203
+ markdown_str += f"{indent} * \n{dict_to_markdown_list(item, level + 2)}"
204
+ else:
205
+ markdown_str += f"{indent} * {item}\n"
206
+ else:
207
+ markdown_str += f"{indent}* **{key}**: {value}\n"
208
+
209
+ return markdown_str
210
+
211
+
212
+ import csv
213
+ import io
214
+ from typing import Dict, Any
215
+
216
+
217
+ def transform_json_to_tabular(json_data: Dict[str, Any], output_format: str = 'rich'):
218
+ """
219
+ Transforms Egeria TabularDataSetReportResponse JSON to CSV, Rich table, or Markdown table (LIST).
220
+
221
+ :param json_data: The JSON data as a dictionary.
222
+ :param output_format: 'CSV', 'RICH-TABLE', or 'LIST'.
223
+ """
224
+ report = json_data.json().get('tabularDataSetReport')
225
+ if not report:
226
+ print("No tabularDataSetReport found in JSON.")
227
+ return
228
+
229
+ column_descriptions = report.get('columnDescriptions', [])
230
+ headers = [col.get('columnName') for col in column_descriptions]
231
+ data_records = report.get('dataRecords', {})
232
+
233
+ # Sort keys to ensure correct order if they are numeric strings
234
+ sorted_record_keys = sorted(data_records.keys(), key=lambda x: int(x))
235
+ rows = [data_records[key] for key in sorted_record_keys]
236
+
237
+ if output_format == 'CSV':
238
+ output = io.StringIO()
239
+ writer = csv.writer(output)
240
+ writer.writerow(headers)
241
+ writer.writerows(rows)
242
+ print(output.getvalue())
243
+ elif output_format == 'RICH-TABLE':
244
+ try:
245
+ from rich.console import Console
246
+ from rich.table import Table
247
+
248
+ console = Console()
249
+ table = Table(title=report.get('tableName', 'Report'))
250
+
251
+ for header in headers:
252
+ table.add_column(header)
253
+
254
+ for row in rows:
255
+ # Convert all items to string for Rich
256
+ str_row = [str(item) if item is not None else "" for item in row]
257
+ table.add_row(*str_row)
258
+
259
+ console.print(table)
260
+ except ImportError:
261
+ print("Rich library not installed. Defaulting to simple text output.")
262
+ print(f"Headers: {headers}")
263
+ for row in rows:
264
+ print(row)
265
+ elif output_format == 'LIST':
266
+ # Generate a markdown table
267
+ markdown_output = f"### {report.get('tableName', 'Report')}\n\n"
268
+ markdown_output += "| " + " | ".join(headers) + " |\n"
269
+ markdown_output += "| " + " | ".join(["---"] * len(headers)) + " |\n"
270
+ for row in rows:
271
+ str_row = [str(item) if item is not None else "" for item in row]
272
+ markdown_output += "| " + " | ".join(str_row) + " |\n"
273
+ print(markdown_output)
274
+ else:
275
+ print(f"Unknown output format: {output_format}")
276
+
277
+
278
+ # Example usage:
279
+ # with open('path/to/your/file.json', 'r') as f:
280
+ # data = json.load(f)
281
+ # transform_json_to_tabular(data, 'CSV') # or 'RICH-TABLE' or 'LIST'
282
+
283
+ import json
284
+ import re
285
+
286
+
287
+ # def parse_to_dict(input_str: str):
288
+ # """
289
+ # Check if a string is valid JSON or a name:value list without braces and convert to a dictionary.
290
+ #
291
+ # Args:
292
+ # input_str: The input string to parse.
293
+ #
294
+ # Returns:
295
+ # dict: A dictionary converted from the input string.
296
+ # None: If the input is neither valid JSON nor a valid name:value list.
297
+ # """
298
+ #
299
+ # if input_str is None:
300
+ # return None
301
+ #
302
+ # # Check if the input string is valid JSON
303
+ # try:
304
+ # result = json.loads(input_str)
305
+ # if isinstance(result, dict): # Ensure it's a dictionary
306
+ # return result
307
+ # except json.JSONDecodeError:
308
+ # pass
309
+ #
310
+ # # Check if input string looks like a name:value list
311
+ # # Supports both comma and newline as separators
312
+ # pattern = r'^(\s*("[^"]+"|\'[^\']+\'|[a-zA-Z0-9_-]+)\s*:\s*("[^"]+"|\'[^\']+\'|[a-zA-Z0-9 _-]*)\s*)' \
313
+ # r'(\s*[,|\n]\s*("[^"]+"|\'[^\']+\'|[a-zA-Z0-9_-]+)\s*:\s*("[^"]+"|\'[^\']+\'|[a-zA-Z0-9 _-]*)\s*)*$'
314
+ # if re.match(pattern, input_str.strip()):
315
+ # try:
316
+ # # Split by ',' or '\n' and process key-value pairs
317
+ # pairs = [pair.split(":", 1) for pair in re.split(r'[,|\n]+', input_str.strip())]
318
+ # return {key.strip().strip('\'"'): value.strip().strip('\'"') for key, value in pairs}
319
+ # except Exception:
320
+ # return None
321
+ #
322
+ # # If neither pattern matches, return None
323
+ # return None
324
+
325
+
326
+ def parse_to_dict(input_str: str) -> dict | None:
327
+ """
328
+ Parse input strings into a dictionary, handling both JSON and key-value pairs.
329
+ Recovers from malformed JSON (e.g., where commas are missing between key-value pairs)
330
+ and supports multiline values.
331
+
332
+ Args:
333
+ input_str (str): The input string to parse.
334
+
335
+ Returns:
336
+ dict: A parsed dictionary if validation is successful, or None if the string cannot be parsed.
337
+ """
338
+ if not input_str:
339
+ return None
340
+
341
+ # Attempt to parse valid JSON
342
+ try:
343
+ result = json.loads(input_str)
344
+ if isinstance(result, dict):
345
+ return result
346
+ except json.JSONDecodeError:
347
+ pass
348
+
349
+ # Fix malformed JSON or attempt alternate parsing for "key: value" patterns
350
+ try:
351
+ # Step 1: Inject missing commas where they are omitted between key-value pairs
352
+ fixed_input = re.sub(
353
+ r'("\s*:[^,}\n]+)\s*("(?![:,}\n]))', # Find missing commas (key-value-value sequences)
354
+ r'\1,\2', # Add a comma between the values
355
+ input_str
356
+ )
357
+
358
+ # Attempt to parse the fixed string as JSON
359
+ try:
360
+ result = json.loads(fixed_input)
361
+ if isinstance(result, dict):
362
+ return result
363
+ except json.JSONDecodeError:
364
+ pass
365
+
366
+ # Step 2: Handle key-value format fallback (supports multiline strings)
367
+ # Matches `key: value` pairs, including multiline quoted values
368
+ key_value_pattern = re.compile(r'''
369
+ (?:"([^"]+)"|'([^']+)'|([a-zA-Z0-9_-]+)) # Key: quoted "key", 'key', or unquoted key
370
+ \s*:\s* # Key-value separator
371
+ (?:"((?:\\.|[^"\\])*?)"|'((?:\\.|[^'\\])*?)'|([^\n,]+)) # Value: quoted or unquoted
372
+ ''', re.VERBOSE | re.DOTALL)
373
+
374
+ matches = key_value_pattern.findall(input_str)
375
+
376
+ # Build dictionary from matches
377
+ result_dict = {}
378
+ for match in matches:
379
+ key = next((group for group in match[:3] if group), "").strip()
380
+ value = next((group for group in match[3:] if group), "").strip()
381
+ result_dict[key] = value
382
+
383
+ if result_dict:
384
+ return result_dict
385
+ except Exception as e:
386
+ # Log or handle parsing exception if needed
387
+ pass
388
+
389
+ # If all parsing attempts fail, return None
390
+ return None
391
+
392
+
393
+ def dynamic_catch(func: T) -> T:
394
+ if app_settings.get("enable_logger_catchh", False):
395
+ return logger.catch(func) # Apply the logger.catch decorator
396
+ else:
397
+ return func # Return the function unwrapped
398
+
399
+ def make_format_set_name_from_type(obj_type: str)-> str:
400
+ formatted_name = obj_type.replace(" ", "-")
401
+ return f"{formatted_name}-DrE"
402
+
403
+
404
+ if __name__ == "__main__":
405
+ print("Main-Utils")
@@ -11,21 +11,20 @@ import asyncio
11
11
  import inspect
12
12
  import json
13
13
  import os
14
- import re
15
14
  from datetime import datetime
16
15
 
17
16
  import httpx
18
17
  from httpx import AsyncClient, Response
19
18
 
20
- from pyegeria.utils import body_slimmer
21
- from pyegeria._exceptions import (
19
+ from pyegeria.core.utils import body_slimmer
20
+ from pyegeria.core._exceptions import (
22
21
  InvalidParameterException,
23
22
  OMAGCommonErrorCode,
24
23
  PropertyServerException,
25
24
  UserNotAuthorizedException,
26
25
  )
27
- from pyegeria._globals import enable_ssl_check, max_paging_size, NO_ELEMENTS_FOUND
28
- from pyegeria._validators import (
26
+ from pyegeria.core._globals import enable_ssl_check, max_paging_size, NO_ELEMENTS_FOUND
27
+ from pyegeria.core._validators import (
29
28
  is_json,
30
29
  validate_name,
31
30
  validate_server_name,
@@ -180,9 +179,9 @@ class Client:
180
179
 
181
180
  Raises
182
181
  ------
183
- InvalidParameterException
182
+ PyegeriaInvalidParameterException
184
183
  If the client passes incorrect parameters on the request - such as bad URLs or invalid values
185
- PropertyServerException
184
+ PyegeriaAPIException
186
185
  Raised by the server when an issue arises in processing a valid request
187
186
  NotAuthorizedException
188
187
  The principle specified by the user_id does not have authorization for the requested action
@@ -236,9 +235,9 @@ class Client:
236
235
 
237
236
  Raises
238
237
  ------
239
- InvalidParameterException
238
+ PyegeriaInvalidParameterException
240
239
  If the client passes incorrect parameters on the request - such as bad URLs or invalid values
241
- PropertyServerException
240
+ PyegeriaAPIException
242
241
  Raised by the server when an issue arises in processing a valid request
243
242
  NotAuthorizedException
244
243
  The principle specified by the user_id does not have authorization for the requested action
@@ -262,7 +261,7 @@ class Client:
262
261
  This method is used to refresh the bearer token used for authentication with Egeria. It checks if the token
263
262
  source is 'Egeria', and if the user ID and password are valid. If all conditions are met, it calls the
264
263
  `create_egeria_bearer_token` method to create a new bearer token. Otherwise,
265
- it raises an `InvalidParameterException`.
264
+ it raises an `PyegeriaInvalidParameterException`.
266
265
 
267
266
  Parameters:
268
267
 
@@ -270,7 +269,7 @@ class Client:
270
269
  None
271
270
 
272
271
  Raises:
273
- InvalidParameterException: If the token source is invalid.
272
+ PyegeriaInvalidParameterException: If the token source is invalid.
274
273
  """
275
274
  if (
276
275
  (self.token_src == "Egeria")
@@ -291,7 +290,7 @@ class Client:
291
290
  This method is used to refresh the bearer token used for authentication with Egeria. It checks if the token
292
291
  source is 'Egeria', and if the user ID and password are valid. If all conditions are met, it calls the
293
292
  `create_egeria_bearer_token` method to create a new bearer token. Otherwise,
294
- it raises an `InvalidParameterException`.
293
+ it raises an `PyegeriaInvalidParameterException`.
295
294
 
296
295
  Parameters:
297
296
 
@@ -299,8 +298,8 @@ class Client:
299
298
  None
300
299
 
301
300
  Raises:
302
- InvalidParameterException: If the token source is invalid.
303
- PropertyServerException
301
+ PyegeriaInvalidParameterException: If the token source is invalid.
302
+ PyegeriaAPIException
304
303
  Raised by the server when an issue arises in processing a valid request
305
304
  NotAuthorizedException
306
305
  The principle specified by the user_id does not have authorization for the requested action
@@ -323,9 +322,9 @@ class Client:
323
322
 
324
323
  Raises
325
324
  ------
326
- InvalidParameterException
325
+ PyegeriaInvalidParameterException
327
326
  If the client passes incorrect parameters on the request - such as bad URLs or invalid values
328
- PropertyServerException
327
+ PyegeriaAPIException
329
328
  Raised by the server when an issue arises in processing a valid request
330
329
  NotAuthorizedException
331
330
  The principle specified by the user_id does not have authorization for the requested action
@@ -365,7 +364,7 @@ class Client:
365
364
  ) -> Response | str:
366
365
  """Make a request to the Egeria API - Async Version
367
366
  Function to make an API call via the self.session Library. Raise an exception if the HTTP response code
368
- is not 200/201. IF there is a REST communication exception, raise InvalidParameterException.
367
+ is not 200/201. IF there is a REST communication exception, raise PyegeriaInvalidParameterException.
369
368
 
370
369
  :param request_type: Type of Request.
371
370
  Supported Values - GET, POST, (not PUT, PATCH, DELETE).
@@ -443,7 +442,7 @@ class Client:
443
442
  {
444
443
  "class": "VoidResponse",
445
444
  "relatedHTTPCode": response.status_code,
446
- "exceptionClassName": "InvalidParameterException",
445
+ "exceptionClassName": "PyegeriaInvalidParameterException",
447
446
  "actionDescription": caller_method,
448
447
  "exceptionErrorMessage": msg,
449
448
  "exceptionErrorMessageId": OMAGCommonErrorCode.CLIENT_SIDE_REST_API_ERROR.value[
@@ -486,7 +485,7 @@ class Client:
486
485
  {
487
486
  "class": "VoidResponse",
488
487
  "relatedHTTPCode": response.status_code,
489
- "exceptionClassName": "InvalidParameterException",
488
+ "exceptionClassName": "PyegeriaInvalidParameterException",
490
489
  "actionDescription": caller_method,
491
490
  "exceptionErrorMessage": msg,
492
491
  "exceptionErrorMessageId": OMAGCommonErrorCode.CLIENT_SIDE_REST_API_ERROR.value[
@@ -536,7 +535,7 @@ class Client:
536
535
  {
537
536
  "class": "VoidResponse",
538
537
  "relatedHTTPCode": response.status_code,
539
- "exceptionClassName": "PropertyServerException",
538
+ "exceptionClassName": "PyegeriaAPIException",
540
539
  "actionDescription": caller_method,
541
540
  "exceptionErrorMessage": msg,
542
541
  "exceptionErrorMessageId": OMAGCommonErrorCode.CLIENT_SIDE_REST_API_ERROR.value[
@@ -595,7 +594,7 @@ class Client:
595
594
  {
596
595
  "class": "VoidResponse",
597
596
  "relatedHTTPCode": 400,
598
- "exceptionClassName": "InvalidParameterException",
597
+ "exceptionClassName": "PyegeriaInvalidParameterException",
599
598
  "actionDescription": caller_method,
600
599
  "exceptionErrorMessage": msg,
601
600
  "exceptionErrorMessageId": OMAGCommonErrorCode.CLIENT_SIDE_REST_API_ERROR.value[
@@ -770,7 +769,7 @@ class Client:
770
769
  )
771
770
  return result
772
771
 
773
- def __create_qualified_name__(self, type: str, display_name: str, local_qualifier: str = None,
772
+ def __create_qualified_name__(self, type_name: str, display_name: str, local_qualifier: str = None,
774
773
  version_identifier: str = None) -> str:
775
774
  """Helper function to create a qualified name for a given type and display name.
776
775
  If present, the local qualifier will be prepended to the qualified name."""
@@ -803,11 +802,11 @@ class Client:
803
802
 
804
803
  Raises
805
804
  ------
806
- InvalidParameterException
805
+ PyegeriaInvalidParameterException
807
806
  one of the parameters is null or invalid or
808
- PropertyServerException
807
+ PyegeriaAPIException
809
808
  There is a problem adding the element properties to the metadata repository or
810
- UserNotAuthorizedException
809
+ PyegeriaUnauthorizedException
811
810
  the requesting user is not authorized to issue this request.
812
811
  """
813
812
 
@@ -78,7 +78,7 @@ class GovEng(Client):
78
78
  List[str]: A list of JSON representations of governance action processes matching the provided name.
79
79
 
80
80
  Raises:
81
- InvalidParameterException: If the API response indicates an error (non-200 status code),
81
+ PyegeriaInvalidParameterException: If the API response indicates an error (non-200 status code),
82
82
  this exception is raised with details from the response content.
83
83
 
84
84
  Note:
@@ -110,9 +110,9 @@ class GovEng(Client):
110
110
 
111
111
  Raises
112
112
  ------
113
- InvalidParameterException
114
- PropertyServerException
115
- UserNotAuthorizedException
113
+ PyegeriaInvalidParameterException
114
+ PyegeriaAPIException
115
+ PyegeriaUnauthorizedException
116
116
  """
117
117
 
118
118
  url = self.engine_command_root + "/engine-actions/" + engine_action_guid
@@ -134,7 +134,7 @@ class GovEng(Client):
134
134
  List[str]: A list of JSON representations of governance action processes matching the provided name.
135
135
 
136
136
  Raises:
137
- InvalidParameterException: If the API response indicates an error (non-200 status code),
137
+ PyegeriaInvalidParameterException: If the API response indicates an error (non-200 status code),
138
138
  this exception is raised with details from the response content.
139
139
 
140
140
  Note:
@@ -165,7 +165,7 @@ class GovEng(Client):
165
165
  List[str]: A list of JSON representations of governance action processes matching the provided name.
166
166
 
167
167
  Raises:
168
- InvalidParameterException: If the API response indicates an error (non-200 status code),
168
+ PyegeriaInvalidParameterException: If the API response indicates an error (non-200 status code),
169
169
  this exception is raised with details from the response content.
170
170
 
171
171
  Note:
@@ -199,7 +199,7 @@ class GovEng(Client):
199
199
  List[str]: A list of JSON representations of governance action processes matching the provided name.
200
200
 
201
201
  Raises:
202
- InvalidParameterException: If the API response indicates an error (non-200 status code),
202
+ PyegeriaInvalidParameterException: If the API response indicates an error (non-200 status code),
203
203
  this exception is raised with details from the response content.
204
204
 
205
205
  Note:
@@ -229,10 +229,10 @@ class GovEng(Client):
229
229
  str: The JSON representation of the governance action process element.
230
230
 
231
231
  Raises:
232
- InvalidParameterException: If the API response indicates an error (non-200 status code),
232
+ PyegeriaInvalidParameterException: If the API response indicates an error (non-200 status code),
233
233
  this exception is raised with details from the response content.
234
- PropertyServerException: If the API response indicates a server side error.
235
- UserNotAuthorizedException:
234
+ PyegeriaAPIException: If the API response indicates a server side error.
235
+ PyegeriaUnauthorizedException:
236
236
 
237
237
  Note:
238
238
  This method assumes that the provided GUID is valid and corresponds to an existing
@@ -263,7 +263,7 @@ class GovEng(Client):
263
263
  List[str]: A list of JSON representations of governance action processes matching the provided name.
264
264
 
265
265
  Raises:
266
- InvalidParameterException: If the API response indicates an error (non-200 status code),
266
+ PyegeriaInvalidParameterException: If the API response indicates an error (non-200 status code),
267
267
  this exception is raised with details from the response content.
268
268
 
269
269
  Note:
@@ -296,7 +296,7 @@ class GovEng(Client):
296
296
  List[str]: A list of JSON representations of governance action processes matching the provided name.
297
297
 
298
298
  Raises:
299
- InvalidParameterException: If the API response indicates an error (non-200 status code),
299
+ PyegeriaInvalidParameterException: If the API response indicates an error (non-200 status code),
300
300
  this exception is raised with details from the response content.
301
301
 
302
302
  Note:
@@ -353,9 +353,9 @@ class GovEng(Client):
353
353
 
354
354
  Raises
355
355
  ------
356
- InvalidParameterException
357
- PropertyServerException
358
- UserNotAuthorizedException
356
+ PyegeriaInvalidParameterException
357
+ PyegeriaAPIException
358
+ PyegeriaUnauthorizedException
359
359
 
360
360
  """
361
361
  url = self.engine_command_root + "/governance-action-processes/initiate"
@@ -416,7 +416,7 @@ class GovEng(Client):
416
416
  str: The GUID (Globally Unique Identifier) of the initiated governance action.
417
417
 
418
418
  Raises:
419
- InvalidParameterException: If the API response indicates an error (non-200 status code),
419
+ PyegeriaInvalidParameterException: If the API response indicates an error (non-200 status code),
420
420
  this exception is raised with details from the response content.
421
421
 
422
422
  Note: