pyegeria 5.3.9.5__py3-none-any.whl → 5.3.9.7__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.
Files changed (240) hide show
  1. {pyegeria/commands → commands}/cat/Dr-Egeria_md-orig.py +10 -11
  2. {pyegeria/commands → commands}/cat/dr_egeria_jupyter.py +4 -4
  3. {pyegeria/commands → commands}/cat/dr_egeria_md.py +36 -16
  4. {pyegeria/commands → commands}/cat/list_categories.py +3 -3
  5. {pyegeria/commands → commands}/cat/list_collections.py +59 -16
  6. commands/cat/list_data_structures.py +223 -0
  7. {pyegeria/commands → commands}/cat/list_glossaries.py +3 -3
  8. {pyegeria/commands → commands}/cat/list_terms.py +4 -4
  9. {pyegeria/commands → commands}/cli/__init__.py +1 -1
  10. {pyegeria/commands → commands}/cli/egeria.py +91 -87
  11. {pyegeria/commands → commands}/cli/egeria_cat.py +29 -29
  12. {pyegeria/commands → commands}/cli/egeria_login_tui.py +1 -1
  13. {pyegeria/commands → commands}/cli/egeria_my.py +8 -8
  14. {pyegeria/commands → commands}/cli/egeria_ops.py +24 -24
  15. {pyegeria/commands → commands}/cli/egeria_tech.py +34 -34
  16. commands/tech/generic_actions.py +74 -0
  17. {pyegeria/commands → commands}/tech/list_information_supply_chains.py +3 -1
  18. pyegeria/__init__.py +11 -9
  19. pyegeria/_client.py +2 -49
  20. pyegeria/collection_manager_omvs.py +484 -735
  21. pyegeria/data_designer_omvs.py +251 -103
  22. pyegeria/egeria_client.py +5 -0
  23. pyegeria/egeria_tech_client.py +10 -1
  24. pyegeria/glossary_browser_omvs.py +144 -260
  25. pyegeria/md_processing_helpers.py +1 -1
  26. pyegeria/md_processing_utils.py +114 -32
  27. pyegeria/md_processing_utils_orig.py +19 -19
  28. pyegeria/mermaid_utilities.py +2 -2
  29. pyegeria/output_formatter.py +389 -0
  30. {pyegeria-5.3.9.5.dist-info → pyegeria-5.3.9.7.dist-info}/METADATA +1 -1
  31. pyegeria-5.3.9.7.dist-info/RECORD +141 -0
  32. pyegeria-5.3.9.7.dist-info/entry_points.txt +99 -0
  33. pyegeria/commands/README.md +0 -47
  34. pyegeria/commands/__init__.py +0 -30
  35. pyegeria/commands/cat/dr_egeria_inbox/glossary_creation_experiment.ipynb +0 -341
  36. pyegeria/commands/doc/README.md +0 -145
  37. pyegeria/commands/doc/Visual Command Reference/README.md +0 -511
  38. pyegeria/commands/doc/Visual Command Reference/cat/show/assets/asset-graph 2024-11-20 at 15.56.42.png +0 -0
  39. pyegeria/commands/doc/Visual Command Reference/cat/show/assets/assets-in-domain 2024-11-20 at 15.49.55@2x.png +0 -0
  40. pyegeria/commands/doc/Visual Command Reference/cat/show/assets/elements-of-type 2024-11-20 at 16.01.35.png +0 -0
  41. pyegeria/commands/doc/Visual Command Reference/cat/show/assets/tech-type-elements 2024-11-20 at 16.05.05.png +0 -0
  42. pyegeria/commands/doc/Visual Command Reference/cat/show/deployed-data/deployed-data-catalogs 2024-12-17 at 15.43.27@2x.png +0 -0
  43. pyegeria/commands/doc/Visual Command Reference/cat/show/deployed-data/deployed-data-catalogs-2024-11-20 at 16.17.43@2x.png +0 -0
  44. pyegeria/commands/doc/Visual Command Reference/cat/show/deployed-data/deployed-schemas 2024-11-25 at 20.14.50@2x.png +0 -0
  45. pyegeria/commands/doc/Visual Command Reference/cat/show/deployed-data/deployed-schemas 2024-12-17 at 15.48.38@2x.png +0 -0
  46. pyegeria/commands/doc/Visual Command Reference/cat/show/deployed-data/deployed-servers 2024-11-25 at 20.21.25@2x.png +0 -0
  47. pyegeria/commands/doc/Visual Command Reference/cat/show/deployed-data/deployed-servers 2024-12-17 at 15.52.16@2x.png +0 -0
  48. pyegeria/commands/doc/Visual Command Reference/cat/show/deployed-data/deployed_databases 2024-12-16 at 16.40.31@2x.png +0 -0
  49. pyegeria/commands/doc/Visual Command Reference/cat/show/glossary/list-glossaries 2024-11-25 at 20.30.02.png +0 -0
  50. pyegeria/commands/doc/Visual Command Reference/cat/show/glossary/list-terms 2024-11-25 at 20.32.11.png +0 -0
  51. pyegeria/commands/doc/Visual Command Reference/cat/show/info/asset-types 2024-11-25 at 20.34.19@2x.png +0 -0
  52. pyegeria/commands/doc/Visual Command Reference/cat/show/info/certification-types 2024-11-25 at 20.37.07.png +0 -0
  53. pyegeria/commands/doc/Visual Command Reference/cat/show/info/collection-graph 2024-12-12 at 11.33.18@2x.png +0 -0
  54. pyegeria/commands/doc/Visual Command Reference/cat/show/info/list-collections 2024-12-10 at 14.25.51@2x.png +0 -0
  55. pyegeria/commands/doc/Visual Command Reference/cat/show/info/list-todos 2024-12-12 at 11.46.30@2x.png +0 -0
  56. pyegeria/commands/doc/Visual Command Reference/cat/show/info/list-user-ids 2024-12-12 at 11.51.09@2x.png +0 -0
  57. pyegeria/commands/doc/Visual Command Reference/cat/show/info/tech-types 2024-12-12 at 11.37.20@2x.png +0 -0
  58. pyegeria/commands/doc/Visual Command Reference/cat/show/projects/project_dependencies 2024-12-14 at 16.24.39@2x.png +0 -0
  59. pyegeria/commands/doc/Visual Command Reference/cat/show/projects/project_structure 2024-12-14 at 16.21.35@2x.png +0 -0
  60. pyegeria/commands/doc/Visual Command Reference/cat/show/projects/projects 2024-12-14 at 16.18.10@2x.png +0 -0
  61. pyegeria/commands/doc/Visual Command Reference/hey_egeria tui 2024-12-16 at 16.58.22@2x.png +0 -0
  62. pyegeria/commands/doc/Visual Command Reference/my/show/my_profile 2024-12-14 at 16.29.27@2x.png +0 -0
  63. pyegeria/commands/doc/Visual Command Reference/my/show/my_roles 2024-12-14 at 16.32.10@2x.png +0 -0
  64. pyegeria/commands/doc/Visual Command Reference/my/show/my_todos 2024-12-15 at 16.24.13@2x.png +0 -0
  65. pyegeria/commands/doc/Visual Command Reference/my/show/open_todos 2024-12-14 at 16.36.12@2x.png +0 -0
  66. pyegeria/commands/doc/Visual Command Reference/ops/show/engines/list_engine_activity compressed 2024-12-15 at 16.48.48@2x.png +0 -0
  67. pyegeria/commands/doc/Visual Command Reference/ops/show/engines/monitor_engine_activity 2024-12-15 at 16.32.55@2x.png +0 -0
  68. pyegeria/commands/doc/Visual Command Reference/ops/show/engines/monitor_engine_activity compressed 2024-12-15 at 16.38.29@2x.png +0 -0
  69. pyegeria/commands/doc/Visual Command Reference/ops/show/engines/monitor_engine_status 2024-12-15 at 16.51.26.jpeg +0 -0
  70. pyegeria/commands/doc/Visual Command Reference/ops/show/integrations/monitor_integration_daemon_status 2024-12-15 at 16.57.12@2x.png +0 -0
  71. pyegeria/commands/doc/Visual Command Reference/ops/show/integrations/monitor_integration_targets 2024-12-15 at 17.02.19@2x.png +0 -0
  72. pyegeria/commands/doc/Visual Command Reference/ops/show/platforms/monitor_platform_status 2024-12-15 at 19.53.18@2x.png +0 -0
  73. pyegeria/commands/doc/Visual Command Reference/ops/show/servers/monitor_server_status 2024-12-15 at 19.59.39@2x.png +0 -0
  74. pyegeria/commands/doc/Visual Command Reference/ops/show/servers/monitor_server_status full 2024-12-15 at 20.01.57@2x.png +0 -0
  75. pyegeria/commands/doc/Visual Command Reference/ops/show/servers/monitor_startup_servers 2024-12-15 at 19.56.07@2x.png +0 -0
  76. pyegeria/commands/doc/Visual Command Reference/tech/show/elements/get_anchored_elements 2024-12-15 at 21.25.41@2x.png +0 -0
  77. pyegeria/commands/doc/Visual Command Reference/tech/show/elements/get_elements_of_om_type 2024-12-16 at 14.39.59@2x.png +0 -0
  78. pyegeria/commands/doc/Visual Command Reference/tech/show/elements/info_for_guid 2024-12-16 at 11.35.29@2x.png +0 -0
  79. pyegeria/commands/doc/Visual Command Reference/tech/show/elements/list_elements_by_om-type 2024-12-16 at 14.24.18@2x.png +0 -0
  80. pyegeria/commands/doc/Visual Command Reference/tech/show/elements/list_elements_by_om-type extended 2024-12-16 at 14.28.46@2x.png +0 -0
  81. pyegeria/commands/doc/Visual Command Reference/tech/show/elements/list_elements_of_om_type_by_classification 2024-12-16 at 14.35.26@2x.png +0 -0
  82. pyegeria/commands/doc/Visual Command Reference/tech/show/elements/related_elements 2024-12-16 at 14.55.01@2x.png +0 -0
  83. pyegeria/commands/doc/Visual Command Reference/tech/show/elements/show_related_specifications 2024-12-16 at 15.04.55@2x.png +0 -0
  84. pyegeria/commands/doc/Visual Command Reference/tech/show/tech-info/asset_types 2024-12-16 at 15.10.16@2x.png +0 -0
  85. pyegeria/commands/doc/Visual Command Reference/tech/show/tech-info/detailed_governance_action_processes 2024-12-16 at 15.16.26@2x.png +0 -0
  86. pyegeria/commands/doc/Visual Command Reference/tech/show/tech-info/governance_action_processes 2024-12-16 at 15.13.01@2x.png +0 -0
  87. pyegeria/commands/doc/Visual Command Reference/tech/show/tech-info/registered_services 2024-12-16 at 16.44.54@2x.png +0 -0
  88. pyegeria/commands/doc/Visual Command Reference/tech/show/tech-info/relationship_types 2024-12-16 at 16.20.34@2x.png +0 -0
  89. pyegeria/commands/doc/Visual Command Reference/tech/show/tech-info/relationship_types 2024-12-19 at 10.51.54@2x.png +0 -0
  90. pyegeria/commands/doc/Visual Command Reference/tech/show/tech-info/valid_metadata_values 2024-12-16 at 15.31.56@2x.png +0 -0
  91. pyegeria/commands/doc/Visual Command Reference/tech/show/tech-types/list_tech_type_template_specs 2024-12-16 at 16.03.22@2x.png +0 -0
  92. pyegeria/commands/doc/Visual Command Reference/tech/show/tech-types/list_technology_types 2024-12-16 at 15.39.20@2x.png +0 -0
  93. pyegeria/commands/doc/Visual Command Reference/tech/show/tech-types/tech_type_details 2024-12-16 at 15.37.21@2x.png +0 -0
  94. pyegeria/commands/doc/Visual Command Reference/tech/show/tech-types/tech_type_templates 2024-12-16 at 16.11.48@2x.png +0 -0
  95. pyegeria/commands/doc/glossary/basic-glossary-tui.md +0 -109
  96. pyegeria/commands/doc/glossary/images/delete-glossary-step1 2024-11-06 at 15.47.23@2x.png +0 -0
  97. pyegeria/commands/doc/glossary/images/delete-glossary-step2 2024-11-06 at 15.51.29@2x.png +0 -0
  98. pyegeria/commands/doc/glossary/images/delete-glossary-step3 2024-11-06 at 15.53.19@2x.png +0 -0
  99. pyegeria/commands/doc/glossary/images/delete-glossary-step4 2024-11-06 at 15.55.11@2x.png +0 -0
  100. pyegeria/commands/doc/glossary/images/out-create-glossary example 2024-11-05 at 20.38.04@2x.png +0 -0
  101. pyegeria/commands/doc/glossary/images/out-create-term 2024-11-06 at 20.48.29.png +0 -0
  102. pyegeria/commands/doc/glossary/images/out-delete-term 2024-11-07 at 03.57.25.png +0 -0
  103. pyegeria/commands/doc/glossary/images/out-display-terms-for-glossary-test 2024-11-06 at 20.51.28.png +0 -0
  104. pyegeria/commands/doc/glossary/images/out-export-example 2024-11-07 at 09.54.57.png +0 -0
  105. pyegeria/commands/doc/glossary/images/out-exported-terms 2024-11-06 at 21.06.32.png +0 -0
  106. pyegeria/commands/doc/glossary/images/out-glossary-list example 2024-11-05 at 20.41.02@2x.png +0 -0
  107. pyegeria/commands/doc/glossary/images/out-import-terms 2024-11-07 at 08.15.18.png +0 -0
  108. pyegeria/commands/doc/glossary/images/out-list-all-terms 2024-11-06 at 16.22.20@2x.png +0 -0
  109. pyegeria/commands/doc/glossary/images/out-list-terms-for-example 2024-11-06 at 16.40.12.png +0 -0
  110. pyegeria/commands/doc/glossary/images/out-list-terms-second 2024-11-06 at 16.45.13.png +0 -0
  111. pyegeria/commands/doc/glossary/images/out-pipx install pyegeria 2024-11-10 at 18.12.21.png +0 -0
  112. pyegeria/commands/doc/glossary/images/out-server-status-full 2024-11-10 at 18.25.14.png +0 -0
  113. pyegeria/commands/doc/glossary/images/out-servers-status 2024-11-10 at 18.15.42.png +0 -0
  114. pyegeria/commands/doc/glossary/images/out-upsert-import 2024-11-07 at 19.37.00.png +0 -0
  115. pyegeria/commands/doc/glossary/images/tui-2024-11-10 at 18.26.29.png +0 -0
  116. pyegeria/commands/doc/glossary/images/tui-create-glossary example 2024-11-05 at 20.34.24@2x.png +0 -0
  117. pyegeria/commands/doc/glossary/images/tui-create-term 2024-11-06 at 20.46.35.png +0 -0
  118. pyegeria/commands/doc/glossary/images/tui-delete-term 2024-11-07 at 03.51.57.png +0 -0
  119. pyegeria/commands/doc/glossary/images/tui-display-terms-for-example 2024-11-06 at 20.56.49.png +0 -0
  120. pyegeria/commands/doc/glossary/images/tui-export-example 2024-11-07 at 09.52.59.png +0 -0
  121. pyegeria/commands/doc/glossary/images/tui-hey-egeria 2024-11-10 at 18.31.01.png +0 -0
  122. pyegeria/commands/doc/glossary/images/tui-import-upsert-example 2024-11-07 at 10.08.37.png +0 -0
  123. pyegeria/commands/doc/glossary/images/tui-list-terms-second 2024-11-06 at 16.46.34.png +0 -0
  124. pyegeria/commands/doc/glossary/images/tui-load-archive.png +0 -0
  125. pyegeria/commands/doc/glossary/images/tui-server-status-full 2024-11-10 at 19.14.36.png +0 -0
  126. pyegeria/commands/doc/glossary/images/tui-show-glossaries 2024-11-07 at 20.00.05.png +0 -0
  127. pyegeria/commands/doc/glossary/images/tui-show-glossary-terms 2024-11-05 at 19.37.53@2x.png +0 -0
  128. pyegeria/commands/doc/glossary/images/tui-upsert 2024-11-07 at 11.49.04.png +0 -0
  129. pyegeria/commands/doc/glossary/images/upsert-example.om-terms 2024-11-07 at 11.44.05.png +0 -0
  130. pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/README.md +0 -346
  131. pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/images/CleanShot 2024-11-18 at 21.32.03@2x.png +0 -0
  132. pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/images/Xmind 1731421782704.png +0 -0
  133. pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/images/Xmind 1731422134920.png +0 -0
  134. pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/images/hey_egeria 2024-11-12 at 20.38.43.png +0 -0
  135. pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/images/hey_egeria cat 2024-11-12 at 21.41.43.png +0 -0
  136. pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/images/out-integ-status-list 2024-11-12 at 16.45.26.png +0 -0
  137. pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/images/out-integ-status-live 2024-11-12 at 16.44.12@2x.png +0 -0
  138. pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/images/out-server-status 2024-11-10 at 18.15.42@2x.png +0 -0
  139. pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/images/out-server-status-full 2024-11-10 at 18.25.14@2x.png +0 -0
  140. pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/images/short-cut commands 2024-11-12 at 22.22.13.png +0 -0
  141. pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/images/tui-hey-egeria.png +0 -0
  142. pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/images/tui-integration-status-paging.png +0 -0
  143. pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/images/tui-load-archive 2024-11-10 at 19.19.09@2x.png +0 -0
  144. pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/images/tui-show-server-status 2024-11-10 at 18.52.01@2x.png +0 -0
  145. pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/images/tui-show-server-status-full 2024-11-10.png +0 -0
  146. pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/images/tui-status-paging 2024-11-12 at 16.26.14@2x.png +0 -0
  147. pyegeria/dr_egeria_state.py +0 -67
  148. pyegeria/md_processing/__init__.py +0 -51
  149. pyegeria/md_processing/commands/__init__.py +0 -3
  150. pyegeria/md_processing/commands/blueprint_commands.py +0 -307
  151. pyegeria/md_processing/commands/category_commands.py +0 -242
  152. pyegeria/md_processing/commands/glossary_commands.py +0 -225
  153. pyegeria/md_processing/commands/project_commands.py +0 -169
  154. pyegeria/md_processing/commands/term_commands.py +0 -524
  155. pyegeria/md_processing/utils/__init__.py +0 -3
  156. pyegeria/md_processing/utils/common_utils.py +0 -101
  157. pyegeria/md_processing/utils/display_utils.py +0 -53
  158. pyegeria/md_processing/utils/extraction_utils.py +0 -177
  159. pyegeria/md_processing/utils/validation_utils.py +0 -208
  160. pyegeria-5.3.9.5.dist-info/RECORD +0 -265
  161. pyegeria-5.3.9.5.dist-info/entry_points.txt +0 -98
  162. {pyegeria/commands → commands}/cat/README.md +0 -0
  163. {pyegeria/commands → commands}/cat/__init__.py +0 -0
  164. {pyegeria/commands → commands}/cat/exp_list_glossaries.py +0 -0
  165. {pyegeria/commands → commands}/cat/get_asset_graph.py +0 -0
  166. {pyegeria/commands → commands}/cat/get_collection.py +0 -0
  167. {pyegeria/commands → commands}/cat/get_project_dependencies.py +0 -0
  168. {pyegeria/commands → commands}/cat/get_project_structure.py +0 -0
  169. {pyegeria/commands → commands}/cat/get_tech_type_elements.py +0 -0
  170. {pyegeria/commands → commands}/cat/glossary_actions.py +0 -0
  171. {pyegeria/commands → commands}/cat/list_assets.py +0 -0
  172. {pyegeria/commands → commands}/cat/list_cert_types.py +0 -0
  173. {pyegeria/commands → commands}/cat/list_deployed_catalogs.py +0 -0
  174. {pyegeria/commands → commands}/cat/list_deployed_database_schemas.py +0 -0
  175. {pyegeria/commands → commands}/cat/list_deployed_databases.py +0 -0
  176. {pyegeria/commands → commands}/cat/list_deployed_servers.py +0 -0
  177. {pyegeria/commands → commands}/cat/list_projects.py +0 -0
  178. {pyegeria/commands → commands}/cat/list_tech_type_elements.py +0 -0
  179. {pyegeria/commands → commands}/cat/list_tech_types.py +0 -0
  180. {pyegeria/commands → commands}/cat/list_todos.py +0 -0
  181. {pyegeria/commands → commands}/cat/list_user_ids.py +0 -0
  182. {pyegeria/commands → commands}/cli/ops_config.py +0 -0
  183. {pyegeria/commands → commands}/cli/txt_custom_v2.tcss +0 -0
  184. {pyegeria/commands → commands}/my/README.md +0 -0
  185. {pyegeria/commands → commands}/my/__init__.py +0 -0
  186. {pyegeria/commands → commands}/my/list_my_profile.py +0 -0
  187. {pyegeria/commands → commands}/my/list_my_roles.py +0 -0
  188. {pyegeria/commands → commands}/my/monitor_my_todos.py +0 -0
  189. {pyegeria/commands → commands}/my/monitor_open_todos.py +0 -0
  190. {pyegeria/commands → commands}/my/todo_actions.py +0 -0
  191. {pyegeria/commands → commands}/ops/README.md +0 -0
  192. {pyegeria/commands → commands}/ops/__init__.py +0 -0
  193. {pyegeria/commands → commands}/ops/gov_server_actions.py +0 -0
  194. {pyegeria/commands → commands}/ops/list_archives.py +0 -0
  195. {pyegeria/commands → commands}/ops/list_catalog_targets.py +0 -0
  196. {pyegeria/commands → commands}/ops/load_archive.py +0 -0
  197. {pyegeria/commands → commands}/ops/monitor_asset_events.py +0 -0
  198. {pyegeria/commands → commands}/ops/monitor_engine_activity.py +0 -0
  199. {pyegeria/commands → commands}/ops/monitor_engine_activity_c.py +0 -0
  200. {pyegeria/commands → commands}/ops/monitor_gov_eng_status.py +0 -0
  201. {pyegeria/commands → commands}/ops/monitor_integ_daemon_status.py +0 -0
  202. {pyegeria/commands → commands}/ops/monitor_platform_status.py +0 -0
  203. {pyegeria/commands → commands}/ops/monitor_server_startup.py +0 -0
  204. {pyegeria/commands → commands}/ops/monitor_server_status.py +0 -0
  205. {pyegeria/commands → commands}/ops/orig_monitor_server_list.py +0 -0
  206. {pyegeria/commands → commands}/ops/orig_monitor_server_status.py +0 -0
  207. {pyegeria/commands → commands}/ops/refresh_integration_daemon.py +0 -0
  208. {pyegeria/commands → commands}/ops/restart_integration_daemon.py +0 -0
  209. {pyegeria/commands → commands}/ops/table_integ_daemon_status.py +0 -0
  210. {pyegeria/commands → commands}/ops/x_engine_actions.py +0 -0
  211. {pyegeria/commands → commands}/tech/README.md +0 -0
  212. {pyegeria/commands → commands}/tech/__init__.py +0 -0
  213. {pyegeria/commands → commands}/tech/get_element_info.py +0 -0
  214. {pyegeria/commands → commands}/tech/get_guid_info.py +0 -0
  215. {pyegeria/commands → commands}/tech/get_tech_details.py +0 -0
  216. {pyegeria/commands → commands}/tech/get_tech_type_template.py +0 -0
  217. {pyegeria/commands → commands}/tech/list_all_om_type_elements.py +0 -0
  218. {pyegeria/commands → commands}/tech/list_all_om_type_elements_x.py +0 -0
  219. {pyegeria/commands → commands}/tech/list_all_related_elements.py +0 -0
  220. {pyegeria/commands → commands}/tech/list_anchored_elements.py +0 -0
  221. {pyegeria/commands → commands}/tech/list_asset_types.py +0 -0
  222. {pyegeria/commands → commands}/tech/list_elements_by_classification_by_property_value.py +0 -0
  223. {pyegeria/commands → commands}/tech/list_elements_by_property_value.py +0 -0
  224. {pyegeria/commands → commands}/tech/list_elements_by_property_value_x.py +0 -0
  225. {pyegeria/commands → commands}/tech/list_elements_for_classification.py +0 -0
  226. {pyegeria/commands → commands}/tech/list_gov_action_processes.py +0 -0
  227. {pyegeria/commands → commands}/tech/list_registered_services.py +0 -0
  228. {pyegeria/commands → commands}/tech/list_related_elements_with_prop_value.py +0 -0
  229. {pyegeria/commands → commands}/tech/list_related_specification.py +0 -0
  230. {pyegeria/commands → commands}/tech/list_relationship_types.py +0 -0
  231. {pyegeria/commands → commands}/tech/list_relationships.py +0 -0
  232. {pyegeria/commands → commands}/tech/list_solution_blueprints.py +0 -0
  233. {pyegeria/commands → commands}/tech/list_solution_components.py +0 -0
  234. {pyegeria/commands → commands}/tech/list_solution_roles.py +0 -0
  235. {pyegeria/commands → commands}/tech/list_tech_templates.py +0 -0
  236. {pyegeria/commands → commands}/tech/list_valid_metadata_values.py +0 -0
  237. {pyegeria/commands → commands}/tech/table_tech_templates.py +0 -0
  238. {pyegeria/commands → commands}/tech/x_list_related_elements.py +0 -0
  239. {pyegeria-5.3.9.5.dist-info → pyegeria-5.3.9.7.dist-info}/LICENSE +0 -0
  240. {pyegeria-5.3.9.5.dist-info → pyegeria-5.3.9.7.dist-info}/WHEEL +0 -0
@@ -13,6 +13,7 @@ from httpx import Response
13
13
 
14
14
  from pyegeria._client import Client, max_paging_size
15
15
  from pyegeria._globals import NO_ELEMENTS_FOUND
16
+ from pyegeria.output_formatter import (extract_mermaid_only, extract_basic_dict, generate_output)
16
17
  from pyegeria.utils import body_slimmer
17
18
 
18
19
 
@@ -39,32 +40,6 @@ def base_path(client, view_server: str):
39
40
  return f"{client.platform_url}/servers/{view_server}/api/open-metadata/data-designer"
40
41
 
41
42
 
42
- def extract_mermaid_only(elements) -> list:
43
- result = []
44
- if type(elements) is dict:
45
- return(elements.get('mermaidGraph', '___'))
46
- for element in elements:
47
- result.append(element.get('mermaidGraph', '___'))
48
- return result
49
-
50
-
51
- def extract_basic_dict(elements: dict) -> list:
52
- list = []
53
- body = {}
54
- if type(elements) is dict:
55
- body['guid'] = elements['elementHeader']['guid']
56
- for key in elements['properties']:
57
- body[key] = elements['properties'][key]
58
- return body
59
-
60
- for element in elements:
61
- body['guid'] = element['elementHeader']['guid']
62
- for key in element['properties']:
63
- body[key] = element['properties'][key]
64
- list.append(body)
65
- return list
66
-
67
-
68
43
  class DataDesigner(Client):
69
44
  """DataDesigner is a class that extends the Client class. The Data Designer OMVS provides APIs for
70
45
  building specifications for data. This includes common data fields in a data dictionary, data specifications
@@ -596,7 +571,7 @@ r replace_all_properties: bool, default = False
596
571
  async def _async_link_member_data_field(self, parent_data_struct_guid: str, member_data_field_guid: str,
597
572
  body: dict = None) -> None:
598
573
  """
599
- Connect a data structure to a data class. Async version.
574
+ Connect a data structure to a data field. Async version.
600
575
 
601
576
  Parameters
602
577
  ----------
@@ -655,7 +630,7 @@ r replace_all_properties: bool, default = False
655
630
  def link_member_data_field(self, parent_data_struct_guid: str, member_data_field_guid: str,
656
631
  body: dict = None) -> None:
657
632
  """
658
- Connect a data structure to a data class.
633
+ Connect a data structure to a data field.
659
634
 
660
635
  Parameters
661
636
  ----------
@@ -806,7 +781,7 @@ r replace_all_properties: bool, default = False
806
781
  loop.run_until_complete(
807
782
  self._async_detach_member_data_field(parent_data_struct_guid, member_data_field_guid, body))
808
783
 
809
- async def _async_delete_data_structure(self, data_struct_guid: str, body: dict = None) -> None:
784
+ async def _async_delete_data_structure(self, data_struct_guid: str, body: dict = None, cascade: bool=False) -> None:
810
785
  """
811
786
  Delete a data structure. Request body is optional. Async version.
812
787
 
@@ -816,6 +791,8 @@ r replace_all_properties: bool, default = False
816
791
  - the GUID of the parent data structure to delete.
817
792
  body: dict, optional
818
793
  - a dictionary containing additional properties.
794
+ cascade: bool, optional
795
+ - if True, then all child data structures will be deleted as well. Otherwise, only the data structure
819
796
 
820
797
  Returns
821
798
  -------
@@ -846,15 +823,15 @@ r replace_all_properties: bool, default = False
846
823
 
847
824
 
848
825
  """
849
-
850
- url = f"{base_path(self, self.view_server)}/data-structures/{data_struct_guid}/delete"
826
+ cascaded_s = str(cascade).lower()
827
+ url = f"{base_path(self, self.view_server)}/data-structures/{data_struct_guid}/delete?cascadedDelete={cascaded_s}"
851
828
 
852
829
  if body is None:
853
830
  await self._async_make_request("POST", url)
854
831
  else:
855
832
  await self._async_make_request("POST", url, body_slimmer(body))
856
833
 
857
- def delete_data_structure(self, data_struct_guid: str, body: dict = None) -> None:
834
+ def delete_data_structure(self, data_struct_guid: str, body: dict = None, cascade: bool = False) -> None:
858
835
  """
859
836
  Delete a data structure. Request body is optional.
860
837
 
@@ -864,6 +841,9 @@ r replace_all_properties: bool, default = False
864
841
  - the GUID of the data structure to delete.
865
842
  body: dict, optional
866
843
  - a dictionary containing additional properties.
844
+ cascade: bool, optional
845
+ - if True, then all child data structures will be deleted as well. Otherwise, only the data structure
846
+
867
847
 
868
848
  Returns
869
849
  -------
@@ -895,7 +875,7 @@ r replace_all_properties: bool, default = False
895
875
  """
896
876
 
897
877
  loop = asyncio.get_event_loop()
898
- loop.run_until_complete(self._async_delete_data_field(data_struct_guid, body))
878
+ loop.run_until_complete(self._async_delete_data_field(data_struct_guid, body, cascade))
899
879
 
900
880
  async def _async_find_all_data_structures(self, start_from: int = 0, page_size: int = max_paging_size,
901
881
  output_format: str = "DICT") -> list | str:
@@ -998,7 +978,7 @@ r replace_all_properties: bool, default = False
998
978
  ignore_case: bool, default = True
999
979
  - If True, the case of the search string is ignored.
1000
980
  output_format: str, default = "DICT"
1001
- - output format of the data structure. Possible values: "DICT", "JSON", "MERMAID".
981
+ - output format of the data structure. Possible values: "DICT", 'REPORT', 'FORM', "JSON", "MERMAID".
1002
982
 
1003
983
  Returns
1004
984
  -------
@@ -1021,7 +1001,7 @@ r replace_all_properties: bool, default = False
1021
1001
  "asOfTime": "{{$isoTimestamp}}",
1022
1002
  "effectiveTime": "{{$isoTimestamp}}",
1023
1003
  "forLineage": false,
1024
- "forDuplicateProcessing : false,
1004
+ "forDuplicateProcessing": false,
1025
1005
  "limitResultsByStatus": ["ACTIVE"],
1026
1006
  "sequencingOrder": "PROPERTY_ASCENDING",
1027
1007
  "sequencingProperty": "qualifiedName",
@@ -1311,7 +1291,8 @@ r replace_all_properties: bool, default = False
1311
1291
  self._async_get_data_structures_by_name(filter, body, start_from, page_size, output_format))
1312
1292
  return response
1313
1293
 
1314
- async def _async_get_data_structures_by_guid(self, guid: str, body: dict = None, output_format: str = "DICT") -> list | str:
1294
+ async def _async_get_data_structures_by_guid(self, guid: str, body: dict = None,
1295
+ output_format: str = "DICT") -> list | str:
1315
1296
  """ Get the data structure metadata elements for the specified GUID.
1316
1297
  Async version.
1317
1298
 
@@ -1364,8 +1345,7 @@ r replace_all_properties: bool, default = False
1364
1345
  return self.generate_data_structure_output(element, filter, output_format)
1365
1346
  return element
1366
1347
 
1367
- def get_data_structures_by_guid(self, guid: str, body: str = None,
1368
- output_format: str = "DICT") -> list | str:
1348
+ def get_data_structures_by_guid(self, guid: str, body: str = None, output_format: str = "DICT") -> list | str:
1369
1349
  """ Get the data structure metadata element with the specified unique identifier..
1370
1350
 
1371
1351
  Parameters
@@ -1927,7 +1907,7 @@ r replace_all_properties: bool, default = False
1927
1907
  async def _async_link_nested_data_field(self, parent_data_field_guid: str, nested_data_field_guid: str,
1928
1908
  body: dict = None) -> None:
1929
1909
  """
1930
- Connect a nested data class to a data class. Request body is optional. Async version.
1910
+ Connect a nested data field to a data field. Request body is optional. Async version.
1931
1911
 
1932
1912
  Parameters
1933
1913
  ----------
@@ -2137,7 +2117,7 @@ r replace_all_properties: bool, default = False
2137
2117
  loop.run_until_complete(
2138
2118
  self._async_detach_nested_data_field(parent_data_field_guid, nested_data_field_guid, body))
2139
2119
 
2140
- async def _async_delete_data_field(self, data_field_guid: str, body: dict = None) -> None:
2120
+ async def _async_delete_data_field(self, data_field_guid: str, body: dict = None, cascade:bool = False) -> None:
2141
2121
  """
2142
2122
  Delete a data class. Request body is optional. Async version.
2143
2123
 
@@ -2147,6 +2127,9 @@ r replace_all_properties: bool, default = False
2147
2127
  - the GUID of the data class to delete.
2148
2128
  body: dict, optional
2149
2129
  - a dictionary containing additional properties.
2130
+ cascade: bool, optional
2131
+ - if True, then all child data fields will be deleted as well.
2132
+
2150
2133
 
2151
2134
  Returns
2152
2135
  -------
@@ -2177,15 +2160,15 @@ r replace_all_properties: bool, default = False
2177
2160
 
2178
2161
 
2179
2162
  """
2180
-
2181
- url = f"{base_path(self, self.view_server)}/data-fields/{data_field_guid}/delete"
2163
+ cascade_s = str(cascade).lower()
2164
+ url = f"{base_path(self, self.view_server)}/data-fields/{data_field_guid}/delete?cascadedDelete={cascade_s}"
2182
2165
 
2183
2166
  if body is None:
2184
2167
  await self._async_make_request("POST", url)
2185
2168
  else:
2186
2169
  await self._async_make_request("POST", url, body_slimmer(body))
2187
2170
 
2188
- def delete_data_field(self, data_field_guid: str, body: dict = None) -> None:
2171
+ def delete_data_field(self, data_field_guid: str, body: dict = None, cascade:bool = False) -> None:
2189
2172
  """
2190
2173
  Delete a data class. Request body is optional.
2191
2174
 
@@ -2195,6 +2178,9 @@ r replace_all_properties: bool, default = False
2195
2178
  - the GUID of the data class the data class to delete.
2196
2179
  body: dict, optional
2197
2180
  - a dictionary containing additional properties.
2181
+ cascade: bool, optional
2182
+ - if True, then all child data fields will be deleted as well.
2183
+
2198
2184
 
2199
2185
  Returns
2200
2186
  -------
@@ -2226,9 +2212,10 @@ r replace_all_properties: bool, default = False
2226
2212
  """
2227
2213
 
2228
2214
  loop = asyncio.get_event_loop()
2229
- loop.run_until_complete(self._async_delete_data_field(data_field_guid, body))
2215
+ loop.run_until_complete(self._async_delete_data_field(data_field_guid, body, cascade))
2230
2216
 
2231
- async def _async_find_all_data_fields(self, start_from: int = 0, page_size: int = max_paging_size, output_format: str = "DICT") -> list | str:
2217
+ async def _async_find_all_data_fields(self, start_from: int = 0, page_size: int = max_paging_size,
2218
+ output_format: str = "DICT") -> list | str:
2232
2219
  """Returns a list of all known data fields. Async version.
2233
2220
 
2234
2221
  Parameters
@@ -2273,8 +2260,8 @@ r replace_all_properties: bool, default = False
2273
2260
  return self.generate_data_field_output(elements, filter, output_format)
2274
2261
  return elements
2275
2262
 
2276
-
2277
- def find_all_data_fields(self, start_from: int = 0, page_size: int = max_paging_size, output_format: str = "DICT") -> list | str:
2263
+ def find_all_data_fields(self, start_from: int = 0, page_size: int = max_paging_size,
2264
+ output_format: str = "DICT") -> list | str:
2278
2265
  """ Returns a list of all known data fields.
2279
2266
 
2280
2267
  Parameters
@@ -2379,8 +2366,8 @@ r replace_all_properties: bool, default = False
2379
2366
  return elements
2380
2367
 
2381
2368
  def find_data_fields_w_body(self, body: dict, start_from: int = 0, page_size: int = max_paging_size,
2382
- starts_with: bool = True, ends_with: bool = False,
2383
- ignore_case: bool = True, output_format: str = "DICT") -> list | str:
2369
+ starts_with: bool = True, ends_with: bool = False, ignore_case: bool = True,
2370
+ output_format: str = "DICT") -> list | str:
2384
2371
  """ Retrieve the list of data class metadata elements that contain the search string.
2385
2372
 
2386
2373
  Parameters
@@ -2433,13 +2420,12 @@ r replace_all_properties: bool, default = False
2433
2420
 
2434
2421
  loop = asyncio.get_event_loop()
2435
2422
  response = loop.run_until_complete(
2436
- self._async_find_data_fields_w_body(body, start_from, page_size, starts_with,
2437
- ends_with, ignore_case, output_format))
2423
+ self._async_find_data_fields_w_body(body, start_from, page_size, starts_with, ends_with, ignore_case,
2424
+ output_format))
2438
2425
  return response
2439
2426
 
2440
2427
  async def _async_find_data_fields(self, filter: str, start_from: int = 0, page_size: int = max_paging_size,
2441
- starts_with: bool = True, ends_with: bool = False,
2442
- ignore_case: bool = True,
2428
+ starts_with: bool = True, ends_with: bool = False, ignore_case: bool = True,
2443
2429
  output_format: str = "DICT") -> list | str:
2444
2430
  """ Find the list of data class elements that contain the search string.
2445
2431
  Async version.
@@ -2497,8 +2483,8 @@ r replace_all_properties: bool, default = False
2497
2483
  return elements
2498
2484
 
2499
2485
  def find_data_fields(self, filter: str, start_from: int = 0, page_size: int = max_paging_size,
2500
- starts_with: bool = True, ends_with: bool = False,
2501
- ignore_case: bool = True, output_format: str = "DICT") -> list | str:
2486
+ starts_with: bool = True, ends_with: bool = False, ignore_case: bool = True,
2487
+ output_format: str = "DICT") -> list | str:
2502
2488
  """ Retrieve the list of data fields elements that contain the search string filter.
2503
2489
 
2504
2490
  Parameters
@@ -2538,8 +2524,8 @@ r replace_all_properties: bool, default = False
2538
2524
 
2539
2525
  loop = asyncio.get_event_loop()
2540
2526
  response = loop.run_until_complete(
2541
- self._async_find_data_fields(filter, start_from, page_size, starts_with,
2542
- ends_with, ignore_case, output_format))
2527
+ self._async_find_data_fields(filter, start_from, page_size, starts_with, ends_with, ignore_case,
2528
+ output_format))
2543
2529
  return response
2544
2530
 
2545
2531
  async def _async_get_data_fields_by_name(self, filter: str, body: dict = None, start_from: int = 0,
@@ -2657,11 +2643,12 @@ r replace_all_properties: bool, default = False
2657
2643
  """
2658
2644
 
2659
2645
  loop = asyncio.get_event_loop()
2660
- response = loop.run_until_complete(self._async_get_data_fields_by_name(filter, body, start_from,
2661
- page_size, output_format))
2646
+ response = loop.run_until_complete(
2647
+ self._async_get_data_fields_by_name(filter, body, start_from, page_size, output_format))
2662
2648
  return response
2663
2649
 
2664
- async def _async_get_data_field_by_guid(self, guid: str, body: dict = None, output_format: str = "DICT") -> list | str:
2650
+ async def _async_get_data_field_by_guid(self, guid: str, body: dict = None,
2651
+ output_format: str = "DICT") -> list | str:
2665
2652
  """ Get the data class elements for the specified GUID.
2666
2653
  Async version.
2667
2654
 
@@ -3381,14 +3368,14 @@ r replace_all_properties: bool, default = False
3381
3368
 
3382
3369
  Sample body:
3383
3370
 
3384
- {
3385
- "class": "MetadataSourceRequestBody",
3386
- "externalSourceGUID": "add guid here",
3387
- "externalSourceName": "add qualified name here",
3388
- "effectiveTime": "{{$isoTimestamp}}",
3389
- "forLineage": false,
3390
- "forDuplicateProcessing": false
3391
- }
3371
+ {
3372
+ "class": "MetadataSourceRequestBody",
3373
+ "externalSourceGUID": "add guid here",
3374
+ "externalSourceName": "add qualified name here",
3375
+ "effectiveTime": "{{$isoTimestamp}}",
3376
+ "forLineage": false,
3377
+ "forDuplicateProcessing": false
3378
+ }
3392
3379
 
3393
3380
  """
3394
3381
 
@@ -3692,7 +3679,7 @@ r replace_all_properties: bool, default = False
3692
3679
  loop.run_until_complete(
3693
3680
  self._async_detach_specialist_data_class(parent_data_class_guid, child_data_class_guid, body))
3694
3681
 
3695
- async def _async_delete_data_class(self, data_class_guid: str, body: dict = None) -> None:
3682
+ async def _async_delete_data_class(self, data_class_guid: str, body: dict = None, cascade:bool= False) -> None:
3696
3683
  """
3697
3684
  Delete a data class. Request body is optional. Async version.
3698
3685
 
@@ -3702,6 +3689,9 @@ r replace_all_properties: bool, default = False
3702
3689
  - the GUID of the data class to delete.
3703
3690
  body: dict, optional
3704
3691
  - a dictionary containing additional properties.
3692
+ cascade: bool, optional
3693
+ - if True, then the delete cascades to dependents
3694
+
3705
3695
 
3706
3696
  Returns
3707
3697
  -------
@@ -3732,15 +3722,15 @@ r replace_all_properties: bool, default = False
3732
3722
 
3733
3723
 
3734
3724
  """
3735
-
3736
- url = f"{base_path(self, self.view_server)}/data-classes/{data_class_guid}/delete"
3725
+ cascade_s = str(cascade).lower()
3726
+ url = f"{base_path(self, self.view_server)}/data-classes/{data_class_guid}/delete?cascadedDelete={cascade_s}"
3737
3727
 
3738
3728
  if body is None:
3739
3729
  await self._async_make_request("POST", url)
3740
3730
  else:
3741
3731
  await self._async_make_request("POST", url, body_slimmer(body))
3742
3732
 
3743
- def delete_data_class(self, data_class_guid: str, body: dict = None) -> None:
3733
+ def delete_data_class(self, data_class_guid: str, body: dict = None, cascade:bool= False) -> None:
3744
3734
  """
3745
3735
  Delete a data class. Request body is optional.
3746
3736
 
@@ -3750,6 +3740,9 @@ r replace_all_properties: bool, default = False
3750
3740
  - the GUID of the data class the data class to delete.
3751
3741
  body: dict, optional
3752
3742
  - a dictionary containing additional properties.
3743
+ cascade: bool, optional
3744
+ - if True, then the delete cascades to dependents
3745
+
3753
3746
 
3754
3747
  Returns
3755
3748
  -------
@@ -3781,10 +3774,10 @@ r replace_all_properties: bool, default = False
3781
3774
  """
3782
3775
 
3783
3776
  loop = asyncio.get_event_loop()
3784
- loop.run_until_complete(self._async_delete_data_class(data_class_guid, body))
3777
+ loop.run_until_complete(self._async_delete_data_class(data_class_guid, body, cascade))
3785
3778
 
3786
- async def _async_find_all_data_classes(self, start_from: int = 0,
3787
- page_size: int = max_paging_size, output_format: str = "DICT") -> list | str:
3779
+ async def _async_find_all_data_classes(self, start_from: int = 0, page_size: int = max_paging_size,
3780
+ output_format: str = "DICT") -> list | str:
3788
3781
  """ Returns a list of all data classes. Async version.
3789
3782
 
3790
3783
  Parameters
@@ -3860,14 +3853,12 @@ r replace_all_properties: bool, default = False
3860
3853
  """
3861
3854
 
3862
3855
  loop = asyncio.get_event_loop()
3863
- response = loop.run_until_complete(self._async_find_all_data_classes(start_from, page_size,
3864
- output_format))
3856
+ response = loop.run_until_complete(self._async_find_all_data_classes(start_from, page_size, output_format))
3865
3857
  return response
3866
3858
 
3867
3859
  async def _async_find_data_classes_w_body(self, body: dict, start_from: int = 0, page_size: int = max_paging_size,
3868
3860
  starts_with: bool = True, ends_with: bool = False,
3869
- ignore_case: bool = True,
3870
- output_format: str = "DICT") -> list | str:
3861
+ ignore_case: bool = True, output_format: str = "DICT") -> list | str:
3871
3862
  """ Retrieve the list of data class metadata elements that contain the search string.
3872
3863
  Async version.
3873
3864
 
@@ -3938,8 +3929,8 @@ r replace_all_properties: bool, default = False
3938
3929
  return elements
3939
3930
 
3940
3931
  def find_data_classes_w_body(self, body: dict, start_from: int = 0, page_size: int = max_paging_size,
3941
- starts_with: bool = True, ends_with: bool = False,
3942
- ignore_case: bool = True, output_format: str = "DICT") -> list | str:
3932
+ starts_with: bool = True, ends_with: bool = False, ignore_case: bool = True,
3933
+ output_format: str = "DICT") -> list | str:
3943
3934
  """ Retrieve the list of data class metadata elements that contain the search string.
3944
3935
 
3945
3936
  Parameters
@@ -3992,13 +3983,12 @@ r replace_all_properties: bool, default = False
3992
3983
 
3993
3984
  loop = asyncio.get_event_loop()
3994
3985
  response = loop.run_until_complete(
3995
- self._async_find_data_classes_w_body(body, start_from, page_size, starts_with,
3996
- ends_with, ignore_case, output_format))
3986
+ self._async_find_data_classes_w_body(body, start_from, page_size, starts_with, ends_with, ignore_case,
3987
+ output_format))
3997
3988
  return response
3998
3989
 
3999
3990
  async def _async_find_data_classes(self, filter: str, start_from: int = 0, page_size: int = max_paging_size,
4000
- starts_with: bool = True, ends_with: bool = False,
4001
- ignore_case: bool = True,
3991
+ starts_with: bool = True, ends_with: bool = False, ignore_case: bool = True,
4002
3992
  output_format: str = "DICT") -> list | str:
4003
3993
  """ Find the list of data class elements that contain the search string.
4004
3994
  Async version.
@@ -4056,8 +4046,8 @@ r replace_all_properties: bool, default = False
4056
4046
  return elements
4057
4047
 
4058
4048
  def find_data_classes(self, filter: str, start_from: int = 0, page_size: int = max_paging_size,
4059
- starts_with: bool = True, ends_with: bool = False,
4060
- ignore_case: bool = True, output_format: str = "DICT") -> list | str:
4049
+ starts_with: bool = True, ends_with: bool = False, ignore_case: bool = True,
4050
+ output_format: str = "DICT") -> list | str:
4061
4051
  """ Retrieve the list of data fields elements that contain the search string filter.
4062
4052
 
4063
4053
  Parameters
@@ -4097,12 +4087,13 @@ r replace_all_properties: bool, default = False
4097
4087
 
4098
4088
  loop = asyncio.get_event_loop()
4099
4089
  response = loop.run_until_complete(
4100
- self._async_find_data_classes(filter, start_from, page_size, starts_with,
4101
- ends_with, ignore_case, output_format))
4090
+ self._async_find_data_classes(filter, start_from, page_size, starts_with, ends_with, ignore_case,
4091
+ output_format))
4102
4092
  return response
4103
4093
 
4104
4094
  async def _async_get_data_classes_by_name(self, filter: str, body: dict = None, start_from: int = 0,
4105
- page_size: int = max_paging_size, output_format: str = "DICT") -> list | str:
4095
+ page_size: int = max_paging_size,
4096
+ output_format: str = "DICT") -> list | str:
4106
4097
  """ Get the list of data class metadata elements with a matching name to the search string filter.
4107
4098
  Async version.
4108
4099
 
@@ -4215,11 +4206,12 @@ r replace_all_properties: bool, default = False
4215
4206
  """
4216
4207
 
4217
4208
  loop = asyncio.get_event_loop()
4218
- response = loop.run_until_complete(self._async_get_data_classes_by_name(filter, body, start_from,
4219
- page_size, output_format))
4209
+ response = loop.run_until_complete(
4210
+ self._async_get_data_classes_by_name(filter, body, start_from, page_size, output_format))
4220
4211
  return response
4221
4212
 
4222
- async def _async_get_data_class_by_guid(self, guid: str, body: dict = None ,output_format: str = "DICT") -> list | str:
4213
+ async def _async_get_data_class_by_guid(self, guid: str, body: dict = None,
4214
+ output_format: str = "DICT") -> list | str:
4223
4215
  """ Get the data class elements for the specified GUID.
4224
4216
  Async version.
4225
4217
 
@@ -4922,23 +4914,179 @@ r replace_all_properties: bool, default = False
4922
4914
  self._async_detach_certification_type_from_data_structure(certification_type_guid, data_structure_guid,
4923
4915
  body))
4924
4916
 
4917
+ def _extract_data_structure_properties(self, element: dict) -> dict:
4918
+ """
4919
+ Extract common properties from a data structure element.
4920
+
4921
+ Args:
4922
+ element (dict): The data structure element
4923
+
4924
+ Returns:
4925
+ dict: Dictionary of extracted properties
4926
+ """
4927
+ guid = element['elementHeader'].get("guid", None)
4928
+ properties = element.get('properties', {})
4929
+ display_name = properties.get("displayName", "") or ""
4930
+ description = properties.get("description", "") or ""
4931
+ qualified_name = properties.get("qualifiedName", "") or ""
4932
+ namespace = properties.get("namespace", "") or ""
4933
+ version_id = properties.get("versionIdentifier", "") or ""
4934
+
4935
+ return {
4936
+ 'guid': guid, 'properties': properties, 'display_name': display_name, 'description': description,
4937
+ 'qualified_name': qualified_name, 'namespace': namespace, 'version_identifier': version_id
4938
+ }
4939
+
4940
+ def _extract_data_class_properties(self, element: dict) -> dict:
4941
+ """
4942
+ Extract common properties from a data class element.
4943
+
4944
+ Args:
4945
+ element (dict): The data class element
4946
+
4947
+ Returns:
4948
+ dict: Dictionary of extracted properties
4949
+ """
4950
+ guid = element['elementHeader'].get("guid", None)
4951
+ properties = element.get('properties', {})
4952
+ display_name = properties.get("displayName", "") or ""
4953
+ description = properties.get("description", "") or ""
4954
+ qualified_name = properties.get("qualifiedName", "") or ""
4955
+
4956
+ return {
4957
+ 'guid': guid, 'properties': properties, 'display_name': display_name, 'description': description,
4958
+ 'qualified_name': qualified_name
4959
+ }
4960
+
4961
+ def _extract_data_field_properties(self, element: dict) -> dict:
4962
+ """
4963
+ Extract common properties from a data field element.
4964
+
4965
+ Args:
4966
+ element (dict): The data field element
4967
+
4968
+ Returns:
4969
+ dict: Dictionary of extracted properties
4970
+ """
4971
+ guid = element['elementHeader'].get("guid", None)
4972
+ properties = element.get('properties', {})
4973
+ display_name = properties.get("displayName", "") or ""
4974
+ description = properties.get("description", "") or ""
4975
+ qualified_name = properties.get("qualifiedName", "") or ""
4976
+
4977
+ # Get data type from extendedProperties if available
4978
+ extended_properties = properties.get("extendedProperties", {})
4979
+ data_type = extended_properties.get("dataType", "")
4980
+
4981
+ return {
4982
+ 'guid': guid, 'properties': properties, 'display_name': display_name, 'description': description,
4983
+ 'qualified_name': qualified_name, 'data_type': data_type
4984
+ }
4985
+
4925
4986
  def generate_basic_structured_output(self, elements, filter, output_format) -> str | list:
4926
- match output_format:
4927
- case "MERMAID":
4928
- return extract_mermaid_only(elements)
4929
- case "DICT":
4930
- return extract_basic_dict(elements)
4931
- case _:
4932
- return None
4987
+ """
4988
+ Generate output in the specified format for the given elements.
4989
+
4990
+ Args:
4991
+ elements: Dictionary or list of dictionaries containing element data
4992
+ filter: The search string used to find the elements
4993
+ output_format: The desired output format (MD, FORM, REPORT, LIST, DICT, MERMAID)
4994
+
4995
+ Returns:
4996
+ Formatted output as string or list of dictionaries
4997
+ """
4998
+ # Handle MERMAID and DICT formats using existing methods
4999
+ if output_format == "MERMAID":
5000
+ return extract_mermaid_only(elements)
5001
+ elif output_format == "DICT":
5002
+ return extract_basic_dict(elements)
5003
+
5004
+ # For other formats (MD, FORM, REPORT, LIST), use generate_output
5005
+ elif output_format in ["MD", "FORM", "REPORT", "LIST"]:
5006
+ # Define columns for LIST format
5007
+ columns = [{'name': 'Name', 'key': 'display_name'}, {'name': 'Qualified Name', 'key': 'qualified_name'},
5008
+ {'name': 'Description', 'key': 'description', 'format': True}]
5009
+
5010
+ return generate_output(elements=elements, search_string=filter, entity_type="Data Element",
5011
+ output_format=output_format, extract_properties_func=self._extract_data_structure_properties,
5012
+ columns=columns if output_format == 'LIST' else None)
5013
+
5014
+ # Default case
5015
+ return None
4933
5016
 
4934
5017
  def generate_data_structure_output(self, elements, filter, output_format) -> str | list:
4935
- return self.generate_basic_structured_output(elements, filter, output_format)
5018
+ """
5019
+ Generate output for data structures in the specified format.
5020
+
5021
+ Args:
5022
+ elements: Dictionary or list of dictionaries containing data structure elements
5023
+ filter: The search string used to find the elements
5024
+ output_format: The desired output format (MD, FORM, REPORT, LIST, DICT, MERMAID)
5025
+
5026
+ Returns:
5027
+ Formatted output as string or list of dictionaries
5028
+ """
5029
+ if output_format in ["MD", "FORM", "REPORT", "LIST"]:
5030
+ # Define columns for LIST format
5031
+ columns = [{'name': 'Structure Name', 'key': 'display_name'},
5032
+ {'name': 'Qualified Name', 'key': 'qualified_name'}, {'name': 'Namespace', 'key': 'namespace'},
5033
+ {'name': 'Version', 'key': 'version_identifier'},
5034
+ {'name': 'Description', 'key': 'description', 'format': True}]
5035
+
5036
+ return generate_output(elements=elements, search_string=filter, entity_type="Data Structure",
5037
+ output_format=output_format, extract_properties_func=self._extract_data_structure_properties,
5038
+ columns=columns if output_format == 'LIST' else None)
5039
+ else:
5040
+ return self.generate_basic_structured_output(elements, filter, output_format)
4936
5041
 
4937
5042
  def generate_data_class_output(self, elements, filter, output_format) -> str | list:
4938
- return self.generate_basic_structured_output(elements, filter, output_format)
5043
+ """
5044
+ Generate output for data classes in the specified format.
5045
+
5046
+ Args:
5047
+ elements: Dictionary or list of dictionaries containing data class elements
5048
+ filter: The search string used to find the elements
5049
+ output_format: The desired output format (MD, FORM, REPORT, LIST, DICT, MERMAID)
5050
+
5051
+ Returns:
5052
+ Formatted output as string or list of dictionaries
5053
+ """
5054
+ if output_format in ["MD", "FORM", "REPORT", "LIST"]:
5055
+ # Define columns for LIST format
5056
+ columns = [{'name': 'Class Name', 'key': 'display_name'},
5057
+ {'name': 'Qualified Name', 'key': 'qualified_name'},
5058
+ {'name': 'Description', 'key': 'description', 'format': True}]
5059
+
5060
+ return generate_output(elements=elements, search_string=filter, entity_type="Data Class",
5061
+ output_format=output_format, extract_properties_func=self._extract_data_class_properties,
5062
+ columns=columns if output_format == 'LIST' else None)
5063
+ else:
5064
+ return self.generate_basic_structured_output(elements, filter, output_format)
4939
5065
 
4940
5066
  def generate_data_field_output(self, elements, filter, output_format) -> str | list:
4941
- return self.generate_basic_structured_output(elements, filter, output_format)
5067
+ """
5068
+ Generate output for data fields in the specified format.
5069
+
5070
+ Args:
5071
+ elements: Dictionary or list of dictionaries containing data field elements
5072
+ filter: The search string used to find the elements
5073
+ output_format: The desired output format (MD, FORM, REPORT, LIST, DICT, MERMAID)
5074
+
5075
+ Returns:
5076
+ Formatted output as a string or list of dictionaries
5077
+ """
5078
+ if output_format in ["MD", "FORM", "REPORT", "LIST", "DICT"]:
5079
+ # Define columns for LIST format
5080
+ columns = [{'name': 'Field Name', 'key': 'display_name'},
5081
+ {'name': 'Qualified Name', 'key': 'qualified_name'}, {'name': 'Data Type', 'key': 'data_type'},
5082
+ {'name': 'Description', 'key': 'description', 'format': True}]
5083
+
5084
+ return generate_output(elements=elements, search_string=filter, entity_type="Data Field",
5085
+ output_format=output_format, extract_properties_func=self._extract_data_field_properties,
5086
+ columns=columns if output_format == 'LIST' else None)
5087
+ else:
5088
+ return self.generate_basic_structured_output(elements, filter, output_format)
5089
+
4942
5090
 
4943
5091
  if __name__ == "__main__":
4944
5092
  print("Data Designer")