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
@@ -0,0 +1,1133 @@
1
+ """
2
+ SPDX-License-Identifier: Apache-2.0
3
+ Copyright Contributors to the ODPi Egeria project.
4
+
5
+ This module provides access to the Digital Business OMVS module.
6
+
7
+ The Digital Business OMVS provides APIs for managing business capabilities and their
8
+ relationships to digital resources.
9
+ """
10
+
11
+ import asyncio
12
+ from typing import Optional
13
+
14
+ from pyegeria.omvs.collection_manager import CollectionManager
15
+ from pyegeria.core._server_client import ServerClient
16
+ from pyegeria.core.config import settings as app_settings
17
+ from pyegeria.models import (
18
+ NewElementRequestBody,
19
+ UpdateElementRequestBody,
20
+ DeleteElementRequestBody,
21
+ NewRelationshipRequestBody,
22
+ DeleteRelationshipRequestBody,
23
+ NewClassificationRequestBody,
24
+ DeleteClassificationRequestBody
25
+ )
26
+
27
+ from pyegeria.core.utils import dynamic_catch, body_slimmer
28
+
29
+ EGERIA_LOCAL_QUALIFIER = app_settings.User_Profile.egeria_local_qualifier
30
+
31
+
32
+ class DigitalBusiness(CollectionManager):
33
+ """
34
+ Manage business capabilities, their lifecycle, and their digital support relationships.
35
+
36
+ This client provides methods to create, update, and manage business capabilities,
37
+ link business capabilities with their dependencies and digital support elements,
38
+ as well as manage business significance classifications.
39
+
40
+ Attributes
41
+ ----------
42
+ view_server : str
43
+ The name of the View Server to connect to.
44
+ platform_url : str
45
+ URL of the server platform to connect to.
46
+ user_id : str
47
+ The identity of the user calling the method - this sets a default optionally
48
+ used by the methods when the user doesn't pass the user_id on a method call.
49
+ user_pwd : str, optional
50
+ The password associated with the user_id. Defaults to None.
51
+ token : str, optional
52
+ An optional bearer token for authentication.
53
+
54
+ Methods
55
+ -------
56
+ create_business_capability(body)
57
+ Create a new business capability collection.
58
+ update_business_capability(business_capability_guid, body)
59
+ Update the properties of a business capability.
60
+ delete_business_capability(business_capability_guid, body, cascade)
61
+ Delete a business capability.
62
+ get_business_capability_by_guid(business_capability_guid, body, output_format, report_spec)
63
+ Return the properties of a specific business capability by GUID.
64
+ get_business_capabilities_by_name(filter_string, body, start_from, page_size, output_format, report_spec)
65
+ Returns the list of business capabilities with a particular name.
66
+ find_business_capabilities(search_string, starts_with, ends_with, ignore_case, start_from, page_size, output_format, report_spec, body)
67
+ Returns the list of business capabilities matching the search string.
68
+ link_business_capability_dependency(business_capability_guid, supporting_capability_guid, body)
69
+ Link dependent business capabilities.
70
+ detach_business_capability_dependency(business_capability_guid, supporting_capability_guid, body)
71
+ Detach dependent business capabilities.
72
+ link_digital_support(business_capability_guid, element_guid, body)
73
+ Attach a business capability to an element that provides digital support.
74
+ detach_digital_support(business_capability_guid, element_guid, body)
75
+ Detach a business capability from digital support.
76
+ set_business_significant(element_guid, body)
77
+ Classify an element as business significant.
78
+ clear_business_significance(element_guid, body)
79
+ Remove the business significant classification.
80
+ """
81
+
82
+ def __init__(
83
+ self,
84
+ view_server: str,
85
+ platform_url: str,
86
+ user_id: str,
87
+ user_pwd: Optional[str] = None,
88
+ token: Optional[str] = None,
89
+ ):
90
+ self.view_server = view_server
91
+ self.platform_url = platform_url
92
+ self.user_id = user_id
93
+ self.user_pwd = user_pwd
94
+ self.digital_business_command_root: str = (
95
+ f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/digital-business"
96
+ )
97
+ ServerClient.__init__(self, view_server, platform_url, user_id, user_pwd, token)
98
+
99
+ def _prepare_body(self, body: Optional[dict | NewElementRequestBody | UpdateElementRequestBody |
100
+ DeleteElementRequestBody | NewRelationshipRequestBody |
101
+ DeleteRelationshipRequestBody | NewClassificationRequestBody |
102
+ DeleteClassificationRequestBody]) -> dict:
103
+ """Convert Pydantic models to dict and slim the body."""
104
+ if body is None:
105
+ return {}
106
+ if isinstance(body, dict):
107
+ return body_slimmer(body)
108
+ # It's a Pydantic model
109
+ return body_slimmer(body.model_dump(mode='json', by_alias=True, exclude_none=True))
110
+
111
+ #
112
+ # Business Capability Lifecycle Management
113
+ #
114
+
115
+ @dynamic_catch
116
+ async def _async_create_business_capability(
117
+ self,
118
+ body: Optional[dict | NewElementRequestBody],
119
+ ) -> str:
120
+ """Create a new business capability collection. Async version.
121
+
122
+ Parameters
123
+ ----------
124
+ body : dict | NewElementRequestBody
125
+ Request body containing business capability properties.
126
+
127
+ Returns
128
+ -------
129
+ str
130
+ The GUID of the created business capability.
131
+
132
+ Raises
133
+ ------
134
+ PyegeriaException
135
+ If there are issues in communications, message format, or Egeria errors.
136
+ ValidationError
137
+ If the body does not conform to NewElementRequestBody.
138
+ PyegeriaNotAuthorizedException
139
+ If the user is not authorized for the requested action.
140
+
141
+ Notes
142
+ -----
143
+ JSON Structure looks like:
144
+ {
145
+ "class" : "NewElementRequestBody",
146
+ "typeName": "BusinessCapability",
147
+ "isOwnAnchor" : true,
148
+ "properties": {
149
+ "class" : "BusinessCapabilityProperties",
150
+ "qualifiedName": "BusinessCapability::Add capability name here",
151
+ "displayName" : "Capability name",
152
+ "description" : "Add description of capability here",
153
+ "identifier" : "Add capability identifier here",
154
+ "businessCapabilityType" : "Add type here",
155
+ "additionalProperties": {
156
+ "property1Name" : "property1Value"
157
+ }
158
+ },
159
+ "effectiveTime" : "timestamp",
160
+ "forLineage" : false,
161
+ "forDuplicateProcessing" : false,
162
+ }
163
+ """
164
+ url = f"{self.digital_business_command_root}/collections"
165
+ return await self._async_create_element_body_request(url, ["BusinessCapabilityProperties"], body)
166
+
167
+ def create_business_capability(
168
+ self,
169
+ body: Optional[dict | NewElementRequestBody],
170
+ ) -> str:
171
+ """Create a new business capability collection. Sync version.
172
+
173
+ Parameters
174
+ ----------
175
+ body : dict | NewElementRequestBody
176
+ Request body containing business capability properties.
177
+
178
+ Returns
179
+ -------
180
+ str
181
+ The GUID of the created business capability.
182
+
183
+ Raises
184
+ ------
185
+ PyegeriaException
186
+ If there are issues in communications, message format, or Egeria errors.
187
+ """
188
+ body = self._prepare_body(body)
189
+ loop = asyncio.get_event_loop()
190
+ return loop.run_until_complete(self._async_create_business_capability(body))
191
+
192
+ @dynamic_catch
193
+ async def _async_update_business_capability(
194
+ self,
195
+ business_capability_guid: str,
196
+ body: Optional[dict | UpdateElementRequestBody] = None,
197
+ ) -> None:
198
+ """Update the properties of a business capability. Async version.
199
+
200
+ Parameters
201
+ ----------
202
+ business_capability_guid : str
203
+ The GUID of the business capability to update.
204
+ body : dict | UpdateElementRequestBody, optional
205
+ Request body containing updated properties.
206
+
207
+ Returns
208
+ -------
209
+ None
210
+
211
+ Raises
212
+ ------
213
+ PyegeriaException
214
+ If there are issues in communications, message format, or Egeria errors.
215
+ ValidationError
216
+ If the body does not conform to UpdateElementRequestBody.
217
+ PyegeriaNotAuthorizedException
218
+ If the user is not authorized for the requested action.
219
+ """
220
+ url = f"{self.digital_business_command_root}/collections/{business_capability_guid}/update"
221
+ await self._async_update_element_body_request(url, ["BusinessCapabilityProperties"], body)
222
+
223
+ def update_business_capability(
224
+ self,
225
+ business_capability_guid: str,
226
+ body: Optional[dict | UpdateElementRequestBody] = None,
227
+ ) -> None:
228
+ """Update the properties of a business capability. Sync version.
229
+
230
+ Parameters
231
+ ----------
232
+ business_capability_guid : str
233
+ The GUID of the business capability to update.
234
+ body : dict | UpdateElementRequestBody, optional
235
+ Request body containing updated properties.
236
+
237
+ Returns
238
+ -------
239
+ None
240
+
241
+ Raises
242
+ ------
243
+ PyegeriaException
244
+ If there are issues in communications, message format, or Egeria errors.
245
+ """
246
+ business_capability_guid = str(business_capability_guid)
247
+ body = self._prepare_body(body)
248
+ loop = asyncio.get_event_loop()
249
+ loop.run_until_complete(
250
+ self._async_update_business_capability(business_capability_guid, body)
251
+ )
252
+
253
+ @dynamic_catch
254
+ async def _async_delete_business_capability(
255
+ self,
256
+ business_capability_guid: str,
257
+ body: Optional[dict | DeleteElementRequestBody] = None,
258
+ cascade: bool = False,
259
+ ) -> None:
260
+ """Delete a business capability. Async version.
261
+
262
+ Parameters
263
+ ----------
264
+ business_capability_guid : str
265
+ The GUID of the business capability to delete.
266
+ body : dict | DeleteElementRequestBody, optional
267
+ Request body for deletion.
268
+ cascade : bool, optional
269
+ Whether to cascade the delete. Defaults to False.
270
+
271
+ Returns
272
+ -------
273
+ None
274
+
275
+ Raises
276
+ ------
277
+ PyegeriaException
278
+ If there are issues in communications, message format, or Egeria errors.
279
+ ValidationError
280
+ If the body does not conform to DeleteElementRequestBody.
281
+ PyegeriaNotAuthorizedException
282
+ If the user is not authorized for the requested action.
283
+ """
284
+ url = f"{self.digital_business_command_root}/collections/{business_capability_guid}/delete"
285
+ await self._async_delete_element_request(url, body, cascade)
286
+
287
+ def delete_business_capability(
288
+ self,
289
+ business_capability_guid: str,
290
+ body: Optional[dict | DeleteElementRequestBody] = None,
291
+ cascade: bool = False,
292
+ ) -> None:
293
+ """Delete a business capability. Sync version.
294
+
295
+ Parameters
296
+ ----------
297
+ business_capability_guid : str
298
+ The GUID of the business capability to delete.
299
+ body : dict | DeleteElementRequestBody, optional
300
+ Request body for deletion.
301
+ cascade : bool, optional
302
+ Whether to cascade the delete. Defaults to False.
303
+
304
+ Returns
305
+ -------
306
+ None
307
+
308
+ Raises
309
+ ------
310
+ PyegeriaException
311
+ If there are issues in communications, message format, or Egeria errors.
312
+ """
313
+ business_capability_guid = str(business_capability_guid)
314
+ body = self._prepare_body(body)
315
+ cascade = bool(cascade)
316
+ loop = asyncio.get_event_loop()
317
+ loop.run_until_complete(
318
+ self._async_delete_business_capability(business_capability_guid, body, cascade)
319
+ )
320
+
321
+ @dynamic_catch
322
+ async def _async_get_business_capability_by_guid(
323
+ self,
324
+ business_capability_guid: str,
325
+ body: Optional[dict] = None,
326
+ output_format: str = "JSON",
327
+ report_spec: Optional[str | dict] = None,
328
+ ) -> dict | str:
329
+ """Return the properties of a specific business capability by GUID. Async version.
330
+
331
+ Parameters
332
+ ----------
333
+ business_capability_guid : str
334
+ The GUID of the business capability to retrieve.
335
+ body : dict, optional
336
+ Request body (typically empty for retrieval).
337
+ output_format : str, optional
338
+ Format for output. Defaults to "JSON".
339
+ report_spec : str | dict, optional
340
+ Report specification for formatting.
341
+
342
+ Returns
343
+ -------
344
+ dict | str
345
+ The business capability properties.
346
+
347
+ Raises
348
+ ------
349
+ PyegeriaException
350
+ If there are issues in communications, message format, or Egeria errors.
351
+ PyegeriaNotFoundException
352
+ If the business capability is not found.
353
+ PyegeriaNotAuthorizedException
354
+ If the user is not authorized for the requested action.
355
+ """
356
+ url = f"{self.digital_business_command_root}/collections/{business_capability_guid}/retrieve"
357
+ response = await self._async_get_guid_request(
358
+ url,
359
+ _type="BusinessCapability",
360
+ _gen_output=self._generate_collection_output,
361
+ output_format=output_format,
362
+ report_spec=report_spec,
363
+ body=body,
364
+ )
365
+ return response
366
+
367
+ def get_business_capability_by_guid(
368
+ self,
369
+ business_capability_guid: str,
370
+ body: Optional[dict] = None,
371
+ output_format: str = "JSON",
372
+ report_spec: Optional[str | dict] = None,
373
+ ) -> dict | str:
374
+ """Return the properties of a specific business capability by GUID. Sync version.
375
+
376
+ Parameters
377
+ ----------
378
+ business_capability_guid : str
379
+ The GUID of the business capability to retrieve.
380
+ body : dict, optional
381
+ Request body (typically empty for retrieval).
382
+ output_format : str, optional
383
+ Format for output. Defaults to "JSON".
384
+ report_spec : str | dict, optional
385
+ Report specification for formatting.
386
+
387
+ Returns
388
+ -------
389
+ dict | str
390
+ The business capability properties.
391
+
392
+ Raises
393
+ ------
394
+ PyegeriaException
395
+ If there are issues in communications, message format, or Egeria errors.
396
+ """
397
+ loop = asyncio.get_event_loop()
398
+ return loop.run_until_complete(
399
+ self._async_get_business_capability_by_guid(
400
+ business_capability_guid, body, output_format, report_spec
401
+ )
402
+ )
403
+
404
+ @dynamic_catch
405
+ async def _async_get_business_capabilities_by_name(
406
+ self,
407
+ filter_string: Optional[str] = None,
408
+ classification_names: Optional[list[str]] = None,
409
+ body: Optional[dict] = None,
410
+ start_from: int = 0,
411
+ page_size: int = 0,
412
+ output_format: str = "JSON",
413
+ report_spec: Optional[str | dict] = None,
414
+ ) -> list | str:
415
+ """Returns the list of business capabilities with a particular name. Async version.
416
+
417
+ Parameters
418
+ ----------
419
+ filter_string : str, optional
420
+ Filter string to match against capability names.
421
+ classification_names : list[str], optional
422
+ List of classification names to filter by.
423
+ body : dict, optional
424
+ Request body for additional filtering.
425
+ start_from : int, optional
426
+ Starting index for pagination. Defaults to 0.
427
+ page_size : int, optional
428
+ Number of results per page. Defaults to 0 (no limit).
429
+ output_format : str, optional
430
+ Format for output. Defaults to "JSON".
431
+ report_spec : str | dict, optional
432
+ Report specification for formatting.
433
+
434
+ Returns
435
+ -------
436
+ list | str
437
+ List of business capabilities matching the criteria.
438
+
439
+ Raises
440
+ ------
441
+ PyegeriaException
442
+ If there are issues in communications, message format, or Egeria errors.
443
+ """
444
+ url = f"{self.digital_business_command_root}/collections/by-name"
445
+ response = await self._async_get_name_request(
446
+ url,
447
+ _type="BusinessCapability",
448
+ _gen_output=self._generate_collection_output,
449
+ filter_string=filter_string,
450
+ classification_names=classification_names,
451
+ start_from=start_from,
452
+ page_size=page_size,
453
+ output_format=output_format,
454
+ report_spec=report_spec,
455
+ body=body,
456
+ )
457
+ return response
458
+
459
+ def get_business_capabilities_by_name(
460
+ self,
461
+ filter_string: Optional[str] = None,
462
+ classification_names: Optional[list[str]] = None,
463
+ body: Optional[dict] = None,
464
+ start_from: int = 0,
465
+ page_size: int = 0,
466
+ output_format: str = "JSON",
467
+ report_spec: Optional[str | dict] = None,
468
+ ) -> list | str:
469
+ """Returns the list of business capabilities with a particular name. Sync version.
470
+
471
+ Parameters
472
+ ----------
473
+ filter_string : str, optional
474
+ Filter string to match against capability names.
475
+ classification_names : list[str], optional
476
+ List of classification names to filter by.
477
+ body : dict, optional
478
+ Request body for additional filtering.
479
+ start_from : int, optional
480
+ Starting index for pagination. Defaults to 0.
481
+ page_size : int, optional
482
+ Number of results per page. Defaults to 0 (no limit).
483
+ output_format : str, optional
484
+ Format for output. Defaults to "JSON".
485
+ report_spec : str | dict, optional
486
+ Report specification for formatting.
487
+
488
+ Returns
489
+ -------
490
+ list | str
491
+ List of business capabilities matching the criteria.
492
+
493
+ Raises
494
+ ------
495
+ PyegeriaException
496
+ If there are issues in communications, message format, or Egeria errors.
497
+ """
498
+ loop = asyncio.get_event_loop()
499
+ return loop.run_until_complete(
500
+ self._async_get_business_capabilities_by_name(
501
+ filter_string, classification_names, body, start_from, page_size, output_format, report_spec
502
+ )
503
+ )
504
+
505
+ @dynamic_catch
506
+ async def _async_find_business_capabilities(
507
+ self,
508
+ search_string: str = "*",
509
+ starts_with: bool = False,
510
+ ends_with: bool = False,
511
+ ignore_case: bool = True,
512
+ anchor_domain: Optional[str] = None,
513
+ metadata_element_type: Optional[str] = "BusinessCapability",
514
+ metadata_element_subtype: Optional[list[str]] = None,
515
+ skip_relationships: Optional[list[str]] = None,
516
+ include_only_relationships: Optional[list[str]] = None,
517
+ skip_classified_elements: Optional[list[str]] = None,
518
+ include_only_classified_elements: Optional[list[str]] = None,
519
+ graph_query_depth: int = 0,
520
+ governance_zone_filter: Optional[list[str]] = None,
521
+ as_of_time: Optional[str] = None,
522
+ effective_time: Optional[str] = None,
523
+ relationship_page_size: int = 0,
524
+ limit_results_by_status: Optional[list[str]] = None,
525
+ sequencing_order: Optional[str] = None,
526
+ sequencing_property: Optional[str] = None,
527
+ start_from: int = 0,
528
+ page_size: int = 0,
529
+ output_format: str = "JSON",
530
+ report_spec: Optional[str | dict] = None,
531
+ property_names: Optional[list[str]] = None,
532
+ body: Optional[dict] = None,
533
+ ) -> list | str:
534
+ """Returns the list of business capabilities matching the search string. Async version.
535
+
536
+ Parameters
537
+ ----------
538
+ search_string : str, optional
539
+ Search string to match. Defaults to "*" (all).
540
+ starts_with : bool, optional
541
+ Whether to match from the start. Defaults to False.
542
+ ends_with : bool, optional
543
+ Whether to match at the end. Defaults to False.
544
+ ignore_case : bool, optional
545
+ Whether to ignore case. Defaults to True.
546
+ anchor_domain : str, optional
547
+ Domain to anchor the search.
548
+ metadata_element_type : str, optional
549
+ Type of metadata element to search for. Defaults to "BusinessCapability".
550
+ metadata_element_subtype : list[str], optional
551
+ Subtypes of metadata element.
552
+ skip_relationships : list[str], optional
553
+ Relationships to skip in the graph.
554
+ include_only_relationships : list[str], optional
555
+ Only include these relationships.
556
+ skip_classified_elements : list[str], optional
557
+ Skip elements with these classifications.
558
+ include_only_classified_elements : list[str], optional
559
+ Only include elements with these classifications.
560
+ graph_query_depth : int, optional
561
+ Depth of graph query. Defaults to 0.
562
+ governance_zone_filter : list[str], optional
563
+ Filter by governance zones.
564
+ as_of_time : str, optional
565
+ Historical time for the query.
566
+ effective_time : str, optional
567
+ Effective time for the query.
568
+ relationship_page_size : int, optional
569
+ Page size for relationships. Defaults to 0.
570
+ limit_results_by_status : list[str], optional
571
+ Limit results by status values.
572
+ sequencing_order : str, optional
573
+ Order for sequencing results.
574
+ sequencing_property : str, optional
575
+ Property to sequence by.
576
+ start_from : int, optional
577
+ Starting index for pagination. Defaults to 0.
578
+ page_size : int, optional
579
+ Number of results per page. Defaults to 0 (no limit).
580
+ output_format : str, optional
581
+ Format for output. Defaults to "JSON".
582
+ report_spec : str | dict, optional
583
+ Report specification for formatting.
584
+ property_names: list[str], optional
585
+ The names of properties to search for.
586
+ body : dict, optional
587
+ Request body for additional parameters.
588
+
589
+ Returns
590
+ -------
591
+ list | str
592
+ List of business capabilities matching the search criteria.
593
+
594
+ Raises
595
+ ------
596
+ PyegeriaException
597
+ If there are issues in communications, message format, or Egeria errors.
598
+ """
599
+ url = f"{self.digital_business_command_root}/collections/by-search-string"
600
+ response = await self._async_find_request(
601
+ url,
602
+ _type="BusinessCapability",
603
+ _gen_output=self._generate_collection_output,
604
+ search_string=search_string,
605
+ starts_with=starts_with,
606
+ ends_with=ends_with,
607
+ ignore_case=ignore_case,
608
+ anchor_domain=anchor_domain,
609
+ metadata_element_type=metadata_element_type,
610
+ metadata_element_subtypes=metadata_element_subtype,
611
+ skip_relationships=skip_relationships,
612
+ include_only_relationships=include_only_relationships,
613
+ skip_classified_elements=skip_classified_elements,
614
+ include_only_classified_elements=include_only_classified_elements,
615
+ graph_query_depth=graph_query_depth,
616
+ governance_zone_filter=governance_zone_filter,
617
+ as_of_time=as_of_time,
618
+ effective_time=effective_time,
619
+ relationship_page_size=relationship_page_size,
620
+ limit_results_by_status=limit_results_by_status,
621
+ sequencing_order=sequencing_order,
622
+ sequencing_property=sequencing_property,
623
+ start_from=start_from,
624
+ page_size=page_size,
625
+ output_format=output_format,
626
+ report_spec=report_spec,
627
+ property_names=property_names,
628
+ body=body,
629
+ )
630
+ return response
631
+
632
+ def find_business_capabilities(
633
+ self,
634
+ search_string: str = "*",
635
+ starts_with: bool = False,
636
+ ends_with: bool = False,
637
+ ignore_case: bool = True,
638
+ anchor_domain: Optional[str] = None,
639
+ metadata_element_type: Optional[str] = "BusinessCapability",
640
+ metadata_element_subtype: Optional[list[str]] = None,
641
+ skip_relationships: Optional[list[str]] = None,
642
+ include_only_relationships: Optional[list[str]] = None,
643
+ skip_classified_elements: Optional[list[str]] = None,
644
+ include_only_classified_elements: Optional[list[str]] = None,
645
+ graph_query_depth: int = 0,
646
+ governance_zone_filter: Optional[list[str]] = None,
647
+ as_of_time: Optional[str] = None,
648
+ effective_time: Optional[str] = None,
649
+ relationship_page_size: int = 0,
650
+ limit_results_by_status: Optional[list[str]] = None,
651
+ sequencing_order: Optional[str] = None,
652
+ sequencing_property: Optional[str] = None,
653
+ start_from: int = 0,
654
+ page_size: int = 0,
655
+ output_format: str = "JSON",
656
+ report_spec: Optional[str | dict] = None,
657
+ property_names: Optional[list[str]] = None,
658
+ body: Optional[dict] = None,
659
+ ) -> list | str:
660
+ """Returns the list of business capabilities matching the search string. Sync version.
661
+
662
+ Parameters
663
+ ----------
664
+ search_string : str, optional
665
+ Search string to match. Defaults to "*" (all).
666
+ starts_with : bool, optional
667
+ Whether to match from the start. Defaults to False.
668
+ ends_with : bool, optional
669
+ Whether to match at the end. Defaults to False.
670
+ ignore_case : bool, optional
671
+ Whether to ignore case. Defaults to True.
672
+ anchor_domain : str, optional
673
+ Domain to anchor the search.
674
+ metadata_element_type : str, optional
675
+ Type of metadata element to search for. Defaults to "BusinessCapability".
676
+ metadata_element_subtype : list[str], optional
677
+ Subtypes of metadata element.
678
+ skip_relationships : list[str], optional
679
+ Relationships to skip in the graph.
680
+ include_only_relationships : list[str], optional
681
+ Only include these relationships.
682
+ skip_classified_elements : list[str], optional
683
+ Skip elements with these classifications.
684
+ include_only_classified_elements : list[str], optional
685
+ Only include elements with these classifications.
686
+ graph_query_depth : int, optional
687
+ Depth of graph query. Defaults to 0.
688
+ governance_zone_filter : list[str], optional
689
+ Filter by governance zones.
690
+ as_of_time : str, optional
691
+ Historical time for the query.
692
+ effective_time : str, optional
693
+ Effective time for the query.
694
+ relationship_page_size : int, optional
695
+ Page size for relationships. Defaults to 0.
696
+ limit_results_by_status : list[str], optional
697
+ Limit results by status values.
698
+ sequencing_order : str, optional
699
+ Order for sequencing results.
700
+ sequencing_property : str, optional
701
+ Property to sequence by.
702
+ start_from : int, optional
703
+ Starting index for pagination. Defaults to 0.
704
+ page_size : int, optional
705
+ Number of results per page. Defaults to 0 (no limit).
706
+ output_format : str, optional
707
+ Format for output. Defaults to "JSON".
708
+ report_spec : str | dict, optional
709
+ Report specification for formatting.
710
+ property_names: list[str], optional
711
+ The names of properties to search for.
712
+ body : dict, optional
713
+ Request body for additional parameters.
714
+
715
+ Returns
716
+ -------
717
+ list | str
718
+ List of business capabilities matching the search criteria.
719
+
720
+ Raises
721
+ ------
722
+ PyegeriaException
723
+ If there are issues in communications, message format, or Egeria errors.
724
+ """
725
+ loop = asyncio.get_event_loop()
726
+ return loop.run_until_complete(
727
+ self._async_find_business_capabilities(
728
+ search_string, starts_with, ends_with, ignore_case, anchor_domain,
729
+ metadata_element_type, metadata_element_subtype, skip_relationships,
730
+ include_only_relationships, skip_classified_elements, include_only_classified_elements,
731
+ graph_query_depth, governance_zone_filter, as_of_time, effective_time,
732
+ relationship_page_size, limit_results_by_status, sequencing_order,
733
+ sequencing_property, start_from, page_size, output_format, report_spec,
734
+ property_names, body
735
+ )
736
+ )
737
+
738
+ #
739
+ # Business Capability Dependency Management
740
+ #
741
+
742
+ @dynamic_catch
743
+ async def _async_link_business_capability_dependency(
744
+ self,
745
+ business_capability_guid: str,
746
+ supporting_capability_guid: str,
747
+ body: Optional[dict | NewRelationshipRequestBody] = None,
748
+ ) -> None:
749
+ """Link dependent business capabilities. Async version.
750
+
751
+ Parameters
752
+ ----------
753
+ business_capability_guid : str
754
+ The GUID of the business capability that depends on another.
755
+ supporting_capability_guid : str
756
+ The GUID of the supporting business capability.
757
+ body : dict | NewRelationshipRequestBody, optional
758
+ Request body containing relationship properties.
759
+
760
+ Returns
761
+ -------
762
+ None
763
+
764
+ Raises
765
+ ------
766
+ PyegeriaException
767
+ If there are issues in communications, message format, or Egeria errors.
768
+ ValidationError
769
+ If the body does not conform to NewRelationshipRequestBody.
770
+ PyegeriaNotAuthorizedException
771
+ If the user is not authorized for the requested action.
772
+ """
773
+ url = (
774
+ f"{self.digital_business_command_root}/business-capabilities/"
775
+ f"{business_capability_guid}/dependencies/{supporting_capability_guid}/attach"
776
+ )
777
+ await self._async_new_relationship_request(url=url, prop=['BusinessCapabilityDependencyProperties'],body=body)
778
+
779
+ def link_business_capability_dependency(
780
+ self,
781
+ business_capability_guid: str,
782
+ supporting_capability_guid: str,
783
+ body: Optional[dict | NewRelationshipRequestBody] = None,
784
+ ) -> None:
785
+ """Link dependent business capabilities. Sync version.
786
+
787
+ Parameters
788
+ ----------
789
+ business_capability_guid : str
790
+ The GUID of the business capability that depends on another.
791
+ supporting_capability_guid : str
792
+ The GUID of the supporting business capability.
793
+ body : dict | NewRelationshipRequestBody, optional
794
+ Request body containing relationship properties.
795
+
796
+ Returns
797
+ -------
798
+ None
799
+
800
+ Raises
801
+ ------
802
+ PyegeriaException
803
+ If there are issues in communications, message format, or Egeria errors.
804
+ """
805
+ loop = asyncio.get_event_loop()
806
+ loop.run_until_complete(
807
+ self._async_link_business_capability_dependency(
808
+ business_capability_guid, supporting_capability_guid, body
809
+ )
810
+ )
811
+
812
+ @dynamic_catch
813
+ async def _async_detach_business_capability_dependency(
814
+ self,
815
+ business_capability_guid: str,
816
+ supporting_capability_guid: str,
817
+ body: Optional[dict | DeleteRelationshipRequestBody] = None,
818
+ cascade: bool = False,
819
+ ) -> None:
820
+ """Detach dependent business capabilities. Async version.
821
+
822
+ Parameters
823
+ ----------
824
+ business_capability_guid : str
825
+ The GUID of the business capability.
826
+ supporting_capability_guid : str
827
+ The GUID of the supporting business capability to detach.
828
+ body : dict | DeleteRelationshipRequestBody, optional
829
+ Request body for deletion.
830
+ cascade : bool, optional, default=False
831
+ Whether to cascade delete dependent elements.
832
+ Returns
833
+ -------
834
+ None
835
+
836
+ Raises
837
+ ------
838
+ PyegeriaException
839
+ If there are issues in communications, message format, or Egeria errors.
840
+
841
+ """
842
+ url = (
843
+ f"{self.digital_business_command_root}/business-capabilities/"
844
+ f"{business_capability_guid}/dependencies/{supporting_capability_guid}/detach"
845
+ )
846
+ await self._async_delete_relationship_request(url=url, body=body, cascade_delete=cascade)
847
+
848
+ def detach_business_capability_dependency(
849
+ self,
850
+ business_capability_guid: str,
851
+ supporting_capability_guid: str,
852
+ body: Optional[dict | DeleteRelationshipRequestBody] = None,
853
+ cascade: bool = False,
854
+ ) -> None:
855
+ """Detach dependent business capabilities. Sync version.
856
+
857
+ Parameters
858
+ ----------
859
+ business_capability_guid : str
860
+ The GUID of the business capability.
861
+ supporting_capability_guid : str
862
+ The GUID of the supporting business capability to detach.
863
+ body : dict | DeleteRelationshipRequestBody, optional
864
+ Request body for deletion.
865
+ cascade : bool, optional, default=False
866
+ Whether to cascade delete dependent elements.
867
+
868
+ Returns
869
+ -------
870
+ None
871
+
872
+ Raises
873
+ ------
874
+ PyegeriaException
875
+ If there are issues in communications, message format, or Egeria errors.
876
+ """
877
+ loop = asyncio.get_event_loop()
878
+ loop.run_until_complete(
879
+ self._async_detach_business_capability_dependency(business_capability_guid, supporting_capability_guid,
880
+ body, cascade)
881
+ )
882
+
883
+ #
884
+ # Digital Support Management
885
+ #
886
+
887
+ @dynamic_catch
888
+ async def _async_link_digital_support(
889
+ self,
890
+ business_capability_guid: str,
891
+ element_guid: str,
892
+ body: Optional[dict | NewRelationshipRequestBody] = None,
893
+ ) -> None:
894
+ """Attach a business capability to an element that provides digital support. Async version.
895
+
896
+ Parameters
897
+ ----------
898
+ business_capability_guid : str
899
+ The GUID of the business capability.
900
+ element_guid : str
901
+ The GUID of the element providing digital support.
902
+ body : dict | NewRelationshipRequestBody, optional
903
+ Request body containing relationship properties.
904
+
905
+ Returns
906
+ -------
907
+ None
908
+
909
+ Raises
910
+ ------
911
+ PyegeriaException
912
+ If there are issues in communications, message format, or Egeria errors.
913
+ """
914
+ url = (
915
+ f"{self.digital_business_command_root}/business-capabilities/"
916
+ f"{business_capability_guid}/digital-support/{element_guid}/attach"
917
+ )
918
+ await self._async_new_relationship_request(url=url, prop=['DigitalSupportProperties'],body=body)
919
+
920
+ def link_digital_support(
921
+ self,
922
+ business_capability_guid: str,
923
+ element_guid: str,
924
+ body: Optional[dict | NewRelationshipRequestBody] = None,
925
+ ) -> None:
926
+ """Attach a business capability to an element that provides digital support. Sync version.
927
+
928
+ Parameters
929
+ ----------
930
+ business_capability_guid : str
931
+ The GUID of the business capability.
932
+ element_guid : str
933
+ The GUID of the element providing digital support.
934
+ body : dict | NewRelationshipRequestBody, optional
935
+ Request body containing relationship properties.
936
+
937
+ Returns
938
+ -------
939
+ None
940
+
941
+ Raises
942
+ ------
943
+ PyegeriaException
944
+ If there are issues in communications, message format, or Egeria errors.
945
+ """
946
+ loop = asyncio.get_event_loop()
947
+ loop.run_until_complete(
948
+ self._async_link_digital_support(business_capability_guid, element_guid, body)
949
+ )
950
+
951
+ @dynamic_catch
952
+ async def _async_detach_digital_support(
953
+ self,
954
+ business_capability_guid: str,
955
+ element_guid: str,
956
+ body: Optional[dict | DeleteRelationshipRequestBody] = None,
957
+ cascade: bool = False,
958
+ ) -> None:
959
+ """Detach a business capability from digital support. Async version.
960
+
961
+ Parameters
962
+ ----------
963
+ business_capability_guid : str
964
+ The GUID of the business capability.
965
+ element_guid : str
966
+ The GUID of the digital support element to detach.
967
+ body : dict | DeleteRelationshipRequestBody, optional
968
+ Request body for deletion.
969
+
970
+ Returns
971
+ -------
972
+ None
973
+
974
+ Raises
975
+ ------
976
+ PyegeriaException
977
+ If there are issues in communications, message format, or Egeria errors.
978
+
979
+ Args:
980
+ cascade ():
981
+ """
982
+ url = (
983
+ f"{self.digital_business_command_root}/business-capabilities/"
984
+ f"{business_capability_guid}/digital-support/{element_guid}/detach"
985
+ )
986
+ await self._async_delete_relationship_request(url, self._prepare_body(body), cascade)
987
+
988
+ def detach_digital_support(
989
+ self,
990
+ business_capability_guid: str,
991
+ element_guid: str,
992
+ body: Optional[dict | DeleteRelationshipRequestBody] = None,
993
+ cascade: bool = False,
994
+ ) -> None:
995
+ """Detach a business capability from digital support. Sync version.
996
+
997
+ Parameters
998
+ ----------
999
+ business_capability_guid : str
1000
+ The GUID of the business capability.
1001
+ element_guid : str
1002
+ The GUID of the digital support element to detach.
1003
+ body : dict | DeleteRelationshipRequestBody, optional
1004
+ Request body for deletion.
1005
+ cascade: bool, default False
1006
+ If true, will perform a cascade delete.
1007
+ Returns
1008
+ -------
1009
+ None
1010
+
1011
+ Raises
1012
+ ------
1013
+ PyegeriaException
1014
+ If there are issues in communications, message format, or Egeria errors.
1015
+
1016
+
1017
+ Args:
1018
+ cascade ():
1019
+ """
1020
+ loop = asyncio.get_event_loop()
1021
+ loop.run_until_complete(
1022
+ self._async_detach_digital_support(business_capability_guid, element_guid, body, cascade)
1023
+ )
1024
+
1025
+ #
1026
+ # Business Significance Classification
1027
+ #
1028
+
1029
+ @dynamic_catch
1030
+ async def _async_set_business_significant(
1031
+ self,
1032
+ element_guid: str,
1033
+ body: Optional[dict | NewClassificationRequestBody] = None,
1034
+ ) -> None:
1035
+ """Classify an element as business significant. Async version.
1036
+
1037
+ Parameters
1038
+ ----------
1039
+ element_guid : str
1040
+ The GUID of the element to classify.
1041
+ body : dict | NewClassificationRequestBody, optional
1042
+ Request body containing classification properties.
1043
+
1044
+ Returns
1045
+ -------
1046
+ None
1047
+
1048
+ Raises
1049
+ ------
1050
+ PyegeriaException
1051
+ If there are issues in communications, message format, or Egeria errors.
1052
+ """
1053
+ url = f"{self.digital_business_command_root}/elements/{element_guid}/business-significant"
1054
+ await self._async_new_classification_request(url=url, prop = ['BusinessSignificantProperties'],body=body)
1055
+
1056
+ def set_business_significant(
1057
+ self,
1058
+ element_guid: str,
1059
+ body: Optional[dict | NewClassificationRequestBody] = None,
1060
+ ) -> None:
1061
+ """Classify an element as business significant. Sync version.
1062
+
1063
+ Parameters
1064
+ ----------
1065
+ element_guid : str
1066
+ The GUID of the element to classify.
1067
+ body : dict | NewClassificationRequestBody, optional
1068
+ Request body containing classification properties.
1069
+
1070
+ Returns
1071
+ -------
1072
+ None
1073
+
1074
+ Raises
1075
+ ------
1076
+ PyegeriaException
1077
+ If there are issues in communications, message format, or Egeria errors.
1078
+ """
1079
+ loop = asyncio.get_event_loop()
1080
+ loop.run_until_complete(self._async_set_business_significant(element_guid, body))
1081
+
1082
+ @dynamic_catch
1083
+ async def _async_clear_business_significance(
1084
+ self,
1085
+ element_guid: str,
1086
+ body: Optional[dict | DeleteClassificationRequestBody] = None,
1087
+ ) -> None:
1088
+ """Remove the business significant classification. Async version.
1089
+
1090
+ Parameters
1091
+ ----------
1092
+ element_guid : str
1093
+ The GUID of the element to declassify.
1094
+ body : dict | DeleteClassificationRequestBody, optional
1095
+ Request body for deletion.
1096
+
1097
+ Returns
1098
+ -------
1099
+ None
1100
+
1101
+ Raises
1102
+ ------
1103
+ PyegeriaException
1104
+ If there are issues in communications, message format, or Egeria errors.
1105
+ """
1106
+ url = f"{self.digital_business_command_root}/elements/{element_guid}/business-significant/remove"
1107
+ await self._async_delete_classification_request(url=url,body=body,)
1108
+
1109
+ def clear_business_significance(
1110
+ self,
1111
+ element_guid: str,
1112
+ body: Optional[dict | DeleteClassificationRequestBody] = None,
1113
+ ) -> None:
1114
+ """Remove the business significant classification. Sync version.
1115
+
1116
+ Parameters
1117
+ ----------
1118
+ element_guid : str
1119
+ The GUID of the element to declassify.
1120
+ body : dict | DeleteClassificationRequestBody, optional
1121
+ Request body for deletion.
1122
+
1123
+ Returns
1124
+ -------
1125
+ None
1126
+
1127
+ Raises
1128
+ ------
1129
+ PyegeriaException
1130
+ If there are issues in communications, message format, or Egeria errors.
1131
+ """
1132
+ loop = asyncio.get_event_loop()
1133
+ loop.run_until_complete(self._async_clear_business_significance(element_guid, body))