pyegeria 5.3.9.9.3__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 (272) hide show
  1. commands/__init__.py +24 -0
  2. commands/cat/Dr-Egeria_md-orig.py +2 -2
  3. commands/cat/__init__.py +1 -17
  4. commands/cat/collection_actions.py +197 -0
  5. commands/cat/dr_egeria_command_help.py +372 -0
  6. commands/cat/dr_egeria_jupyter.py +7 -7
  7. commands/cat/dr_egeria_md.py +27 -182
  8. commands/cat/exp_list_glossaries.py +11 -14
  9. commands/cat/get_asset_graph.py +37 -267
  10. commands/cat/{get_collection.py → get_collection_tree.py} +10 -18
  11. commands/cat/get_project_dependencies.py +14 -14
  12. commands/cat/get_project_structure.py +15 -14
  13. commands/cat/get_tech_type_elements.py +16 -116
  14. commands/cat/glossary_actions.py +145 -298
  15. commands/cat/list_assets.py +3 -11
  16. commands/cat/list_cert_types.py +17 -63
  17. commands/cat/list_collections.py +46 -138
  18. commands/cat/list_deployed_catalogs.py +15 -27
  19. commands/cat/list_deployed_database_schemas.py +27 -43
  20. commands/cat/list_deployed_databases.py +16 -31
  21. commands/cat/list_deployed_servers.py +35 -54
  22. commands/cat/list_glossaries.py +18 -17
  23. commands/cat/list_projects.py +10 -12
  24. commands/cat/list_tech_type_elements.py +21 -37
  25. commands/cat/list_tech_types.py +13 -25
  26. commands/cat/list_terms.py +38 -79
  27. commands/cat/list_todos.py +4 -11
  28. commands/cat/list_user_ids.py +3 -10
  29. commands/cat/my_reports.py +559 -0
  30. commands/cat/run_report.py +394 -0
  31. commands/cat/run_report_orig.py +528 -0
  32. commands/cli/egeria.py +222 -247
  33. commands/cli/egeria_cat.py +68 -81
  34. commands/cli/egeria_my.py +13 -0
  35. commands/cli/egeria_ops.py +69 -74
  36. commands/cli/egeria_tech.py +17 -93
  37. commands/cli/ops_config.py +3 -6
  38. commands/{cat/list_categories.py → deprecated/list_data_designer.py} +53 -64
  39. commands/{cat/list_data_structures.py → deprecated/list_data_structures_full.py} +3 -6
  40. commands/deprecated/old_get_asset_graph.py +315 -0
  41. commands/my/__init__.py +0 -2
  42. commands/my/list_my_profile.py +27 -34
  43. commands/my/list_my_roles.py +1 -7
  44. commands/my/monitor_my_todos.py +1 -7
  45. commands/my/monitor_open_todos.py +6 -7
  46. commands/my/todo_actions.py +4 -5
  47. commands/ops/__init__.py +0 -2
  48. commands/ops/gov_server_actions.py +17 -21
  49. commands/ops/list_archives.py +17 -38
  50. commands/ops/list_catalog_targets.py +33 -40
  51. commands/ops/load_archive.py +35 -26
  52. commands/ops/{monitor_engine_activity_c.py → monitor_active_engine_activity.py} +51 -82
  53. commands/ops/{monitor_integ_daemon_status.py → monitor_daemon_status.py} +35 -55
  54. commands/ops/monitor_engine_activity.py +79 -77
  55. commands/ops/{monitor_gov_eng_status.py → monitor_engine_status.py} +10 -7
  56. commands/ops/monitor_platform_status.py +38 -50
  57. commands/ops/monitor_server_startup.py +6 -11
  58. commands/ops/monitor_server_status.py +7 -11
  59. commands/ops/orig_monitor_server_list.py +8 -8
  60. commands/ops/orig_monitor_server_status.py +1 -5
  61. commands/ops/refresh_integration_daemon.py +5 -5
  62. commands/ops/restart_integration_daemon.py +5 -5
  63. commands/ops/table_integ_daemon_status.py +6 -6
  64. commands/ops/x_engine_actions.py +7 -7
  65. commands/tech/__init__.py +0 -2
  66. commands/tech/{generic_actions.py → element_actions.py} +6 -11
  67. commands/tech/get_element_info.py +20 -29
  68. commands/tech/get_guid_info.py +23 -42
  69. commands/tech/get_tech_details.py +20 -35
  70. commands/tech/get_tech_type_template.py +28 -39
  71. commands/tech/list_all_om_type_elements.py +24 -30
  72. commands/tech/list_all_om_type_elements_x.py +22 -28
  73. commands/tech/list_all_related_elements.py +19 -28
  74. commands/tech/list_anchored_elements.py +22 -30
  75. commands/tech/list_asset_types.py +19 -24
  76. commands/tech/list_elements_by_classification_by_property_value.py +26 -32
  77. commands/tech/list_elements_by_property_value.py +19 -25
  78. commands/tech/list_elements_by_property_value_x.py +20 -28
  79. commands/tech/list_elements_for_classification.py +28 -41
  80. commands/tech/list_gov_action_processes.py +16 -27
  81. commands/tech/list_information_supply_chains.py +22 -30
  82. commands/tech/list_registered_services.py +14 -26
  83. commands/tech/list_related_elements_with_prop_value.py +15 -25
  84. commands/tech/list_related_specification.py +1 -4
  85. commands/tech/list_relationship_types.py +15 -25
  86. commands/tech/list_relationships.py +20 -36
  87. commands/tech/list_solution_blueprints.py +28 -33
  88. commands/tech/list_solution_components.py +23 -29
  89. commands/tech/list_solution_roles.py +21 -32
  90. commands/tech/list_tech_templates.py +51 -54
  91. commands/tech/list_valid_metadata_values.py +5 -9
  92. commands/tech/table_tech_templates.py +2 -6
  93. commands/tech/x_list_related_elements.py +1 -4
  94. examples/GeoSpatial Products Example.py +524 -0
  95. examples/Jupyter Notebooks/P-egeria-server-config.ipynb +2137 -0
  96. examples/Jupyter Notebooks/README.md +2 -0
  97. examples/Jupyter Notebooks/common/P-environment-check.ipynb +115 -0
  98. examples/Jupyter Notebooks/common/__init__.py +14 -0
  99. examples/Jupyter Notebooks/common/common-functions.ipynb +4694 -0
  100. examples/Jupyter Notebooks/common/environment-check.ipynb +52 -0
  101. examples/Jupyter Notebooks/common/globals.ipynb +184 -0
  102. examples/Jupyter Notebooks/common/globals.py +154 -0
  103. examples/Jupyter Notebooks/common/orig_globals.py +152 -0
  104. examples/format_sets/all_format_sets.json +910 -0
  105. examples/format_sets/custom_format_sets.json +268 -0
  106. examples/format_sets/subset_format_sets.json +187 -0
  107. examples/format_sets_save_load_example.py +291 -0
  108. examples/jacquard_data_sets.py +129 -0
  109. examples/output_formats_example.py +193 -0
  110. examples/test_jacquard_data_sets.py +54 -0
  111. examples/test_jacquard_data_sets_scenarios.py +94 -0
  112. md_processing/__init__.py +90 -0
  113. md_processing/command_dispatcher.py +33 -0
  114. md_processing/command_mapping.py +221 -0
  115. md_processing/data/commands/commands_data_designer.json +537 -0
  116. md_processing/data/commands/commands_external_reference.json +733 -0
  117. md_processing/data/commands/commands_feedback.json +155 -0
  118. md_processing/data/commands/commands_general.json +204 -0
  119. md_processing/data/commands/commands_glossary.json +218 -0
  120. md_processing/data/commands/commands_governance.json +3678 -0
  121. md_processing/data/commands/commands_product_manager.json +865 -0
  122. md_processing/data/commands/commands_project.json +642 -0
  123. md_processing/data/commands/commands_solution_architect.json +366 -0
  124. md_processing/data/commands.json +17568 -0
  125. md_processing/data/commands_working.json +30641 -0
  126. md_processing/data/gened_report_specs.py +6584 -0
  127. md_processing/data/generated_format_sets.json +6533 -0
  128. md_processing/data/generated_format_sets_old.json +4137 -0
  129. md_processing/data/generated_format_sets_old.py +45 -0
  130. md_processing/dr_egeria.py +182 -0
  131. md_processing/md_commands/__init__.py +3 -0
  132. md_processing/md_commands/data_designer_commands.py +1276 -0
  133. md_processing/md_commands/ext_ref_commands.py +530 -0
  134. md_processing/md_commands/feedback_commands.py +726 -0
  135. md_processing/md_commands/glossary_commands.py +684 -0
  136. md_processing/md_commands/governance_officer_commands.py +600 -0
  137. md_processing/md_commands/product_manager_commands.py +1266 -0
  138. md_processing/md_commands/project_commands.py +383 -0
  139. md_processing/md_commands/solution_architect_commands.py +1184 -0
  140. md_processing/md_commands/view_commands.py +295 -0
  141. md_processing/md_processing_utils/__init__.py +4 -0
  142. md_processing/md_processing_utils/common_md_proc_utils.py +1249 -0
  143. md_processing/md_processing_utils/common_md_utils.py +578 -0
  144. md_processing/md_processing_utils/determine_width.py +103 -0
  145. md_processing/md_processing_utils/extraction_utils.py +547 -0
  146. md_processing/md_processing_utils/gen_report_specs.py +643 -0
  147. md_processing/md_processing_utils/generate_dr_help.py +193 -0
  148. md_processing/md_processing_utils/generate_md_cmd_templates.py +144 -0
  149. md_processing/md_processing_utils/generate_md_templates.py +83 -0
  150. md_processing/md_processing_utils/md_processing_constants.py +1228 -0
  151. md_processing/md_processing_utils/message_constants.py +19 -0
  152. pyegeria/__init__.py +201 -443
  153. pyegeria/core/__init__.py +40 -0
  154. pyegeria/core/_base_platform_client.py +574 -0
  155. pyegeria/core/_base_server_client.py +573 -0
  156. pyegeria/core/_exceptions.py +457 -0
  157. pyegeria/core/_globals.py +60 -0
  158. pyegeria/core/_server_client.py +6073 -0
  159. pyegeria/core/_validators.py +257 -0
  160. pyegeria/core/config.py +654 -0
  161. pyegeria/{create_tech_guid_lists.py → core/create_tech_guid_lists.py} +0 -1
  162. pyegeria/core/load_config.py +37 -0
  163. pyegeria/core/logging_configuration.py +207 -0
  164. pyegeria/core/mcp_adapter.py +144 -0
  165. pyegeria/core/mcp_server.py +212 -0
  166. pyegeria/core/utils.py +405 -0
  167. pyegeria/deprecated/__init__.py +0 -0
  168. pyegeria/{_client.py → deprecated/_client.py} +62 -24
  169. pyegeria/{_deprecated_gov_engine.py → deprecated/_deprecated_gov_engine.py} +16 -16
  170. pyegeria/{classification_manager_omvs.py → deprecated/classification_manager_omvs.py} +1988 -1878
  171. pyegeria/deprecated/output_formatter_with_machine_keys.py +1127 -0
  172. pyegeria/{runtime_manager_omvs.py → deprecated/runtime_manager_omvs.py} +216 -229
  173. pyegeria/{valid_metadata_omvs.py → deprecated/valid_metadata_omvs.py} +93 -93
  174. pyegeria/{x_action_author_omvs.py → deprecated/x_action_author_omvs.py} +2 -3
  175. pyegeria/egeria_cat_client.py +25 -51
  176. pyegeria/egeria_client.py +140 -98
  177. pyegeria/egeria_config_client.py +48 -24
  178. pyegeria/egeria_tech_client.py +170 -83
  179. pyegeria/models/__init__.py +150 -0
  180. pyegeria/models/collection_models.py +168 -0
  181. pyegeria/models/models.py +654 -0
  182. pyegeria/omvs/__init__.py +84 -0
  183. pyegeria/omvs/action_author.py +342 -0
  184. pyegeria/omvs/actor_manager.py +5980 -0
  185. pyegeria/omvs/asset_catalog.py +842 -0
  186. pyegeria/omvs/asset_maker.py +2736 -0
  187. pyegeria/omvs/automated_curation.py +4403 -0
  188. pyegeria/omvs/classification_manager.py +11213 -0
  189. pyegeria/omvs/collection_manager.py +5780 -0
  190. pyegeria/omvs/community_matters_omvs.py +468 -0
  191. pyegeria/{core_omag_server_config.py → omvs/core_omag_server_config.py} +157 -157
  192. pyegeria/{data_designer_omvs.py → omvs/data_designer.py} +1991 -1691
  193. pyegeria/omvs/data_discovery.py +869 -0
  194. pyegeria/omvs/data_engineer.py +372 -0
  195. pyegeria/omvs/digital_business.py +1133 -0
  196. pyegeria/omvs/external_links.py +1752 -0
  197. pyegeria/omvs/feedback_manager.py +834 -0
  198. pyegeria/{full_omag_server_config.py → omvs/full_omag_server_config.py} +73 -69
  199. pyegeria/omvs/glossary_manager.py +3231 -0
  200. pyegeria/omvs/governance_officer.py +3009 -0
  201. pyegeria/omvs/lineage_linker.py +314 -0
  202. pyegeria/omvs/location_arena.py +1525 -0
  203. pyegeria/omvs/metadata_expert.py +668 -0
  204. pyegeria/omvs/metadata_explorer_omvs.py +2943 -0
  205. pyegeria/omvs/my_profile.py +1042 -0
  206. pyegeria/omvs/notification_manager.py +358 -0
  207. pyegeria/omvs/people_organizer.py +394 -0
  208. pyegeria/{platform_services.py → omvs/platform_services.py} +113 -193
  209. pyegeria/omvs/product_manager.py +1825 -0
  210. pyegeria/omvs/project_manager.py +1907 -0
  211. pyegeria/omvs/reference_data.py +1140 -0
  212. pyegeria/omvs/registered_info.py +334 -0
  213. pyegeria/omvs/runtime_manager.py +2817 -0
  214. pyegeria/omvs/schema_maker.py +446 -0
  215. pyegeria/{server_operations.py → omvs/server_operations.py} +27 -26
  216. pyegeria/omvs/solution_architect.py +6490 -0
  217. pyegeria/omvs/specification_properties.py +37 -0
  218. pyegeria/omvs/subject_area.py +1042 -0
  219. pyegeria/omvs/template_manager_omvs.py +236 -0
  220. pyegeria/omvs/time_keeper.py +1761 -0
  221. pyegeria/omvs/valid_metadata.py +3221 -0
  222. pyegeria/omvs/valid_metadata_lists.py +37 -0
  223. pyegeria/omvs/valid_type_lists.py +37 -0
  224. pyegeria/view/__init__.py +28 -0
  225. pyegeria/view/_output_format_models.py +514 -0
  226. pyegeria/view/_output_formats.py +14 -0
  227. pyegeria/view/base_report_formats.py +2719 -0
  228. pyegeria/view/dr_egeria_reports.py +56 -0
  229. pyegeria/view/format_set_executor.py +397 -0
  230. pyegeria/{md_processing_utils.py → view/md_processing_utils.py} +5 -5
  231. pyegeria/{mermaid_utilities.py → view/mermaid_utilities.py} +2 -154
  232. pyegeria/view/output_formatter.py +1297 -0
  233. pyegeria-5.5.3.3.dist-info/METADATA +218 -0
  234. pyegeria-5.5.3.3.dist-info/RECORD +241 -0
  235. {pyegeria-5.3.9.9.3.dist-info → pyegeria-5.5.3.3.dist-info}/WHEEL +2 -1
  236. pyegeria-5.5.3.3.dist-info/entry_points.txt +103 -0
  237. pyegeria-5.5.3.3.dist-info/top_level.txt +4 -0
  238. commands/cat/.DS_Store +0 -0
  239. commands/cat/README.md +0 -16
  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/monitor_asset_events.py +0 -108
  244. commands/tech/README.md +0 -24
  245. pyegeria/.DS_Store +0 -0
  246. pyegeria/README.md +0 -35
  247. pyegeria/_globals.py +0 -47
  248. pyegeria/_validators.py +0 -385
  249. pyegeria/asset_catalog_omvs.py +0 -864
  250. pyegeria/automated_curation_omvs.py +0 -3765
  251. pyegeria/collection_manager_omvs.py +0 -2744
  252. pyegeria/dr.egeria spec.md +0 -9
  253. pyegeria/egeria_my_client.py +0 -56
  254. pyegeria/feedback_manager_omvs.py +0 -4573
  255. pyegeria/glossary_browser_omvs.py +0 -3728
  256. pyegeria/glossary_manager_omvs.py +0 -2440
  257. pyegeria/m_test.py +0 -118
  258. pyegeria/md_processing_helpers.py +0 -58
  259. pyegeria/md_processing_utils_orig.py +0 -1103
  260. pyegeria/metadata_explorer_omvs.py +0 -2326
  261. pyegeria/my_profile_omvs.py +0 -1022
  262. pyegeria/output_formatter.py +0 -389
  263. pyegeria/project_manager_omvs.py +0 -1933
  264. pyegeria/registered_info.py +0 -167
  265. pyegeria/solution_architect_omvs.py +0 -2156
  266. pyegeria/template_manager_omvs.py +0 -1414
  267. pyegeria/utils.py +0 -197
  268. pyegeria-5.3.9.9.3.dist-info/METADATA +0 -72
  269. pyegeria-5.3.9.9.3.dist-info/RECORD +0 -143
  270. pyegeria-5.3.9.9.3.dist-info/entry_points.txt +0 -99
  271. /pyegeria/{_exceptions.py → deprecated/_exceptions.py} +0 -0
  272. {pyegeria-5.3.9.9.3.dist-info → pyegeria-5.5.3.3.dist-info/licenses}/LICENSE +0 -0
@@ -0,0 +1,295 @@
1
+ """
2
+ This file contains term-related object_action functions for processing Egeria Markdown
3
+ """
4
+ import json
5
+ import os
6
+ from typing import Optional
7
+
8
+ from loguru import logger
9
+ from pydantic import ValidationError
10
+ from rich import print
11
+ from rich.console import Console
12
+ from rich.markdown import Markdown
13
+
14
+ from md_processing.md_processing_utils.common_md_proc_utils import (parse_view_command)
15
+ from md_processing.md_processing_utils.extraction_utils import (extract_command_plus)
16
+ from md_processing.md_processing_utils.md_processing_constants import (load_commands)
17
+ from pyegeria import DEBUG_LEVEL, body_slimmer, print_basic_exception, print_validation_error
18
+ from pyegeria.egeria_tech_client import EgeriaTech, NO_ELEMENTS_FOUND
19
+ from pyegeria.core.config import settings
20
+ from pyegeria.core.logging_configuration import config_logging
21
+ from pyegeria.view.base_report_formats import (select_report_spec)
22
+ from pyegeria.core._exceptions import PyegeriaException
23
+
24
+ GERIA_METADATA_STORE = os.environ.get("EGERIA_METADATA_STORE", "active-metadata-store")
25
+ EGERIA_KAFKA_ENDPOINT = os.environ.get("KAFKA_ENDPOINT", "localhost:9092")
26
+ EGERIA_PLATFORM_URL = os.environ.get("EGERIA_PLATFORM_URL", "https://localhost:9443")
27
+ EGERIA_VIEW_SERVER = os.environ.get("EGERIA_VIEW_SERVER", "view-server")
28
+ EGERIA_VIEW_SERVER_URL = os.environ.get("EGERIA_VIEW_SERVER_URL", "https://localhost:9443")
29
+ EGERIA_INTEGRATION_DAEMON = os.environ.get("EGERIA_INTEGRATION_DAEMON", "integration-daemon")
30
+ EGERIA_INTEGRATION_DAEMON_URL = os.environ.get("EGERIA_INTEGRATION_DAEMON_URL", "https://localhost:9443")
31
+ EGERIA_ADMIN_USER = os.environ.get("ADMIN_USER", "garygeeke")
32
+ EGERIA_ADMIN_PASSWORD = os.environ.get("ADMIN_PASSWORD", "secret")
33
+ EGERIA_USER = os.environ.get("EGERIA_USER", "erinoverview")
34
+ EGERIA_USER_PASSWORD = os.environ.get("EGERIA_USER_PASSWORD", "secret")
35
+ EGERIA_WIDTH = os.environ.get("EGERIA_WIDTH", 220)
36
+ EGERIA_JUPYTER = os.environ.get("EGERIA_JUPYTER", False)
37
+ EGERIA_HOME_GLOSSARY_GUID = os.environ.get("EGERIA_HOME_GLOSSARY_GUID", None)
38
+ EGERIA_GLOSSARY_PATH = os.environ.get("EGERIA_GLOSSARY_PATH", None)
39
+ EGERIA_ROOT_PATH = os.environ.get("EGERIA_ROOT_PATH", "../../")
40
+ EGERIA_INBOX_PATH = os.environ.get("EGERIA_INBOX_PATH", "md_processing/dr_egeria_inbox")
41
+ EGERIA_OUTBOX_PATH = os.environ.get("EGERIA_OUTBOX_PATH", "md_processing/dr_egeria_outbox")
42
+
43
+ load_commands('commands.json')
44
+ debug_level = DEBUG_LEVEL
45
+
46
+ console = Console(width=int(200))
47
+
48
+ app_config = settings.Environment
49
+ config_logging()
50
+
51
+
52
+ def process_format_set_action(
53
+ egeria_client: EgeriaTech,
54
+ format_set_name: str,
55
+ output_format: str = "REPORT",
56
+ search_string: str = "*",
57
+ **kwargs
58
+ ):
59
+ """
60
+ Looks up the specified output format set, extracts the function and parameters,
61
+ and invokes the function with the parameters.
62
+
63
+ Parameters
64
+ ----------
65
+ format_set_name : str
66
+ The name of the output format set to use.
67
+ view_server : str
68
+ The view server name or address where the Egeria services are hosted.
69
+ view_url : str
70
+ The URL of the platform the view server is on.
71
+ user : str
72
+ The user ID for authentication with the Egeria server.
73
+ user_pass : str
74
+ The password for authentication with the Egeria server.
75
+ jupyter : bool, optional
76
+ A boolean indicating whether the output is intended for a Jupyter notebook.
77
+ width : int, optional
78
+ The width of the console output.
79
+ output_format : str, optional
80
+ Format of the output. Default is TABLE.
81
+ **kwargs : dict
82
+ Additional parameters to override the default parameters in the format set.
83
+ """
84
+ # Get the output format set
85
+ format_set = select_report_spec(format_set_name, output_format)
86
+ if not format_set:
87
+ print(
88
+ f"Error: Output format set '{format_set_name}' does not have a format compatible with output format '{output_format}'.")
89
+ return
90
+
91
+ # Check if the format set has an action property
92
+ if "action" not in format_set:
93
+ print(f"Error: Output format set '{format_set_name}' does not have an action property.")
94
+ return
95
+
96
+ # put the search string in kwargs
97
+
98
+ kwargs['search_string'] = search_string
99
+
100
+
101
+ # Extract the function and parameters from the action property (now a dict)
102
+ action = format_set["action"]
103
+ func = action.get("function")
104
+ required_params = action.get("required_params", action.get("user_params", []))
105
+ optional_params = action.get("optional_params", [])
106
+ spec_params = action.get("spec_params", {})
107
+
108
+
109
+
110
+ # Create a params dictionary from required/optional and spec_params
111
+ params = {}
112
+ # First handle required params
113
+ if required_params:
114
+ for param in required_params:
115
+ if param in kwargs and kwargs[param] is not None and kwargs[param] != "":
116
+ params[param] = kwargs[param]
117
+ elif param not in kwargs and param not in spec_params:
118
+ print(f"Warning: Required parameter '{param}' not provided for format set '{format_set_name}'.")
119
+ # Then include any provided optional params
120
+ if optional_params:
121
+ for param in optional_params:
122
+ if param in kwargs and kwargs[param] is not None and kwargs[param] != "":
123
+ params[param] = kwargs[param]
124
+
125
+ # Add spec_params to params
126
+ params.update(spec_params)
127
+
128
+ params['output_format'] = output_format
129
+ params['report_spec'] = format_set_name
130
+
131
+ # Determine the appropriate client class based on the format set name or function
132
+ client_class = None
133
+ method_name = None
134
+
135
+ # If function name is provided as a string, parse it to get class and method
136
+ if isinstance(func, str) and "." in func:
137
+ class_name, method_name = func.split(".")
138
+ # if class_name == "CollectionManager":
139
+ # client_class = CollectionManager
140
+ # elif class_name == "GovernanceOfficer":
141
+ # client_class = GovernanceOfficer
142
+ # elif class_name == "GlossaryManager":
143
+ # client_class = GlossaryManager
144
+ # else:
145
+ client_class = EgeriaTech
146
+
147
+ # Add more client classes as needed
148
+
149
+ # # If client_class is still None, determine based on format set name
150
+ # if client_class is None:
151
+ # if format_set_name in ["Collections", "Data Dictionary", "Data Specification", "DigitalProducts"]:
152
+ # client_class = CollectionManager
153
+ # method_name = "find_collections"
154
+ # else:
155
+ # # Default to CollectionManager for now
156
+ # client_class = CollectionManager
157
+
158
+ # Create the client instance
159
+
160
+
161
+ # If method_name is set, get the method from the egeria_client
162
+ # Note: We need to convert func from string to method reference even if func is already set
163
+ if method_name:
164
+ if hasattr(egeria_client, method_name):
165
+ func = getattr(egeria_client, method_name)
166
+ else:
167
+ print(f"Error: Method '{method_name}' not found in client class '{client_class.__name__}'.")
168
+ return
169
+
170
+ # Check if we have a valid function to call
171
+ if not func and not method_name:
172
+ print(f"Error: No valid function found for format set '{format_set_name}'.")
173
+ return
174
+
175
+ # egeria_client.create_egeria_bearer_token()
176
+
177
+ # # Get heading and description information
178
+ # heading = get_report_spec_heading(format_set_name)
179
+ # desc = get_report_spec_description(format_set_name)
180
+ # preamble = f"# {heading}\n{desc}\n\n" if heading and desc else ""
181
+
182
+ try:
183
+
184
+ # Add output_format to params
185
+ params['output_format'] = output_format
186
+
187
+ try:
188
+ if callable(func):
189
+ # Call the function as an instance method of the client
190
+ output = func(**params)
191
+ else:
192
+ # For standalone functions, call with egeria_client as first argument
193
+ output = func(egeria_client, **params)
194
+ except TypeError as e:
195
+ # Handle parameter mismatch errors
196
+ print(f"Error calling function: {e}")
197
+ print(f"Parameters provided: {params}")
198
+ return
199
+
200
+ if output == NO_ELEMENTS_FOUND:
201
+ return f"\n==> No elements found for format set '{format_set_name}'"
202
+
203
+ elif isinstance(output, (str, list)) and output_format == "DICT":
204
+ return json.dumps(output, indent=4)
205
+ elif isinstance(output, (str, list)) and output_format in ["REPORT", "LIST", "FORM"]:
206
+ return output ## used to include pre-amble
207
+ elif isinstance(output, (str, list)) and output_format in ["HTML", "MERMAID"]:
208
+ return '\n\n'.join(output)
209
+
210
+
211
+ elif isinstance(output, (str, list)) and output_format == "TABLE":
212
+ return "Table is not a legal output format for this command."
213
+
214
+
215
+ except PyegeriaException as e:
216
+ print_basic_exception(e)
217
+ except ValidationError as e:
218
+ print_validation_error(e)
219
+
220
+
221
+ def process_output_command(egeria_client: EgeriaTech, txt: str, directive: str = "display") -> Optional[str]:
222
+ """
223
+ Processes a output requests - view and list commands.
224
+
225
+ :param txt: A string representing the input cell to be processed for
226
+ extracting term-related attributes.
227
+ :param directive: an optional string indicating the directive to be used - display, validate or execute
228
+ :return: A string summarizing the outcome of the processing.
229
+ """
230
+ command, object_type, object_action = extract_command_plus(txt)
231
+ print(Markdown(f"# {command}\n"))
232
+
233
+ parsed_output = parse_view_command(egeria_client, object_type, object_action, txt, directive)
234
+ if parsed_output is None:
235
+ logger.error(f"No valid output found for command '{command}'.")
236
+ return None
237
+
238
+ attributes = parsed_output['attributes']
239
+
240
+ valid = parsed_output['valid']
241
+ print(Markdown(f"Performing {command}"))
242
+ print(Markdown(parsed_output['display']))
243
+
244
+ if directive == "display":
245
+ return None
246
+ elif directive == "validate":
247
+ if valid:
248
+ print(Markdown(f"==> Validation of {command} completed successfully!\n"))
249
+ else:
250
+ msg = f"Validation failed for object_action `{command}`\n"
251
+ logger.error(msg)
252
+ return valid
253
+
254
+ elif directive == "process":
255
+ search_string = attributes.get('Search String', {}).get('value', '*')
256
+ output_format = attributes.get('Output Format', {}).get('value', 'LIST')
257
+ report_spec = attributes.get('Report Spec', {}).get('value', object_type)
258
+ filter_string = attributes.get('Filter', {}).get('value', None)
259
+ kwargs = parsed_output.get("kwargs", {})
260
+
261
+
262
+ kwargs['filter'] = search_string
263
+
264
+
265
+
266
+ for key, value in attributes.items():
267
+ kwargs[key] = value.get('value', None) if key not in ["Search String", "Output Format", "Output Format Set"] else None
268
+ kwargs = body_slimmer(kwargs)
269
+ try:
270
+ if not valid: # First validate the command before we process it
271
+ msg = f"Validation failed for {object_action} `{object_type}`\n"
272
+ logger.error(msg)
273
+ return None
274
+
275
+ list_md = process_format_set_action(
276
+ egeria_client,
277
+ report_spec,
278
+ output_format,
279
+ search_string,
280
+ ** kwargs
281
+ )
282
+ # if output_format == "DICT":
283
+ # list_md += f"```\n{json.dumps(struct, indent=4)}\n```\n"
284
+ # else:
285
+ # list_md += struct
286
+ # logger.info(f"Wrote `{object_type}` for search string: `{search_string}`")
287
+
288
+ return list_md
289
+
290
+ except Exception as e:
291
+ logger.error(f"Error performing {command}: {e}")
292
+ console.print_exception(show_locals=True)
293
+ return None
294
+ else:
295
+ return None
@@ -0,0 +1,4 @@
1
+ """
2
+ This package contains utility functions for processing Egeria Markdown
3
+ """
4
+