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,94 @@
1
+ """
2
+ PDX-License-Identifier: Apache-2.0
3
+ Copyright Contributors to the ODPi Egeria project.
4
+
5
+ Scenario tests for JacquardDataSets.
6
+ """
7
+ import time
8
+ from typing import List, Optional
9
+ from dataclasses import dataclass
10
+
11
+ from rich import print as rprint
12
+ from rich.console import Console
13
+ from rich.table import Table
14
+
15
+ from examples.jacquard_data_sets import JacquardDataSets
16
+ from pyegeria.core._exceptions import PyegeriaException
17
+
18
+ VIEW_SERVER = "qs-view-server"
19
+ PLATFORM_URL = "https://localhost:9443"
20
+ USER_ID = "peterprofile"
21
+ USER_PWD = "secret"
22
+
23
+ console = Console(width=200)
24
+
25
+
26
+ @dataclass
27
+ class TestResult:
28
+ scenario_name: str
29
+ status: str
30
+ duration: float
31
+ message: str = ""
32
+
33
+
34
+ class JacquardDataSetsScenarioTester:
35
+ def __init__(self):
36
+ self.client: Optional[JacquardDataSets] = None
37
+ self.results: List[TestResult] = []
38
+
39
+ def setup(self) -> bool:
40
+ try:
41
+ self.client = JacquardDataSets(VIEW_SERVER, PLATFORM_URL, USER_ID, USER_PWD)
42
+ self.client.create_egeria_bearer_token(USER_ID, USER_PWD)
43
+ return True
44
+ except Exception:
45
+ return False
46
+
47
+ def teardown(self):
48
+ if self.client:
49
+ self.client.close_session()
50
+
51
+ def scenario_tabular_data_set_discovery(self) -> TestResult:
52
+ name = "Tabular Data Set Discovery"
53
+ start_time = time.perf_counter()
54
+ try:
55
+ # 1. Find assets by name
56
+ assets = self.client.find_assets_by_name("Valid Metadata Value Set List")
57
+
58
+ # 2. Find tabular data sets
59
+ datasets = self.client.find_tabular_data_sets()
60
+
61
+ return TestResult(name, "PASSED", time.perf_counter() - start_time, f"Found {len(assets) if assets else 0} assets and {len(datasets) if datasets else 0} datasets")
62
+ except PyegeriaException as e:
63
+ return TestResult(name, "FAILED", time.perf_counter() - start_time, str(e))
64
+ except Exception as e:
65
+ return TestResult(name, "FAILED", time.perf_counter() - start_time, f"Unexpected error: {e}")
66
+
67
+ def run_all_scenarios(self):
68
+ if not self.setup():
69
+ rprint("[bold red]Setup failed, skipping scenarios[/bold red]")
70
+ return
71
+
72
+ self.results.append(self.scenario_tabular_data_set_discovery())
73
+ self.teardown()
74
+ self.print_results_summary()
75
+
76
+ def print_results_summary(self):
77
+ table = Table(title="Jacquard Data Sets Scenario Results")
78
+ table.add_column("Scenario", style="cyan")
79
+ table.add_column("Status", justify="center")
80
+ table.add_column("Duration (s)", justify="right")
81
+ table.add_column("Message")
82
+ for res in self.results:
83
+ style = "green" if res.status == "PASSED" else "red"
84
+ table.add_row(res.scenario_name, f"[{style}]{res.status}[/{style}]", f"{res.duration:.2f}", res.message)
85
+ console.print(table)
86
+
87
+
88
+ def test_jacquard_data_sets_scenarios():
89
+ tester = JacquardDataSetsScenarioTester()
90
+ tester.run_all_scenarios()
91
+
92
+
93
+ if __name__ == "__main__":
94
+ test_jacquard_data_sets_scenarios()
@@ -0,0 +1,90 @@
1
+ """
2
+ This package contains functions to parse and process Egeria Markdown (Freddie)
3
+ """
4
+ from md_processing.md_commands.governance_officer_commands import (process_gov_definition_upsert_command,
5
+ process_gov_def_link_detach_command,
6
+ process_supporting_gov_def_link_detach_command,
7
+ process_gov_def_context_command,
8
+ process_governed_by_link_detach_command
9
+ )
10
+
11
+
12
+ from md_processing.md_commands.product_manager_commands import (process_digital_product_upsert_command,
13
+ process_agreement_upsert_command,
14
+ process_collection_upsert_command,
15
+ process_link_agreement_item_command,
16
+ process_add_to_collection_command,
17
+ process_product_dependency_command,
18
+ process_attach_collection_command,
19
+ process_attach_subscriber_command,
20
+ process_csv_element_upsert_command,
21
+ )
22
+
23
+ from md_processing.md_commands.solution_architect_commands import (process_blueprint_upsert_command,
24
+ process_solution_component_upsert_command,
25
+ process_component_link_unlink_command,
26
+ process_information_supply_chain_upsert_command,
27
+ process_information_supply_chain_link_unlink_command,
28
+ )
29
+
30
+ from md_processing.md_commands.data_designer_commands import (process_data_field_upsert_command,
31
+ process_data_spec_upsert_command,
32
+ process_data_dict_upsert_command,
33
+ process_data_structure_upsert_command)
34
+
35
+ from md_processing.md_commands.feedback_commands import (process_add_comment_command, process_journal_entry_command,
36
+ process_upsert_note_command, process_attach_note_log_command,
37
+ process_upsert_informal_tag_command, process_tag_element_command)
38
+
39
+
40
+
41
+ from md_processing.md_commands.glossary_commands import (process_glossary_upsert_command,
42
+ process_term_upsert_command,
43
+ process_link_term_term_relationship_command,
44
+ )
45
+ from md_processing.md_commands.project_commands import (process_project_upsert_command, process_link_project_dependency_command,
46
+ process_link_project_hierarchy_command)
47
+
48
+ from md_processing.md_commands.ext_ref_commands import (process_external_reference_upsert_command,
49
+ process_link_to_media_reference_command,
50
+ process_link_to_external_reference_command,
51
+ process_link_to_cited_document_command,
52
+
53
+ )
54
+
55
+ # Re-export all functions from the original md_processing_utils.py to maintain backward compatibility
56
+ from md_processing.md_processing_utils.common_md_utils import (render_markdown, is_valid_iso_date, set_debug_level,
57
+ get_current_datetime_string, print_msg, EGERIA_WIDTH,
58
+ debug_level, get_element_dictionary,
59
+ update_element_dictionary, clear_element_dictionary,
60
+ is_present, find_key_with_value,
61
+ process_provenance_command, set_delete_request_body,
62
+ set_rel_request_body, set_filter_request_body,
63
+ set_update_body, set_peer_gov_def_request_body, set_rel_prop_body,
64
+ set_gov_prop_body, set_element_prop_body, set_create_body,
65
+ GOVERNANCE_POLICIES, GOVERNANCE_CONTROLS, GOVERNANCE_DRIVERS
66
+ )
67
+ from md_processing.md_processing_utils.extraction_utils import (extract_command_plus, extract_command,
68
+ extract_attribute, process_simple_attribute,
69
+ process_name_list, process_element_identifiers,
70
+ get_element_by_name, update_a_command)
71
+ from md_processing.md_processing_utils.md_processing_constants import ( pre_command,
72
+ command_seperator, EXISTS_REQUIRED,
73
+ GLOSSARY_NAME_LABELS,
74
+ TERM_NAME_LABELS, PROJECT_NAME_LABELS,
75
+ BLUEPRINT_NAME_LABELS, COMPONENT_NAME_LABELS,
76
+ SOLUTION_ROLE_LABELS, SOLUTION_ACTOR_ROLE_LABELS,
77
+ SOLUTION_LINKING_ROLE_LABELS, OUTPUT_LABELS,
78
+ SEARCH_LABELS, GUID_LABELS,
79
+ ELEMENT_OUTPUT_FORMATS, TERM_RELATIONSHPS,
80
+ command_list, COMMAND_DEFINITIONS, GOV_COM_LIST,
81
+ GOV_LINK_LIST, COLLECTIONS_LIST, SIMPLE_COLLECTIONS,
82
+ LIST_COMMANDS, PROJECT_COMMANDS, EXT_REF_UPSERT,
83
+ LINK_EXT_REF, LINK_MEDIA, LINK_CITED_DOC)
84
+ # Import functions from md_processing_constants
85
+ from md_processing.md_processing_utils.md_processing_constants import (load_commands, get_command_spec, get_attribute,
86
+ get_attribute_labels, get_alternate_names)
87
+ # Import message constants
88
+
89
+ from md_processing.md_processing_utils.common_md_proc_utils import process_output_command
90
+ from md_processing.md_commands.view_commands import process_format_set_action, process_output_command
@@ -0,0 +1,33 @@
1
+ from typing import Callable, Dict, Any, Optional
2
+ from loguru import logger
3
+
4
+ class CommandDispatcher:
5
+ """
6
+ Registry and dispatcher for Dr.Egeria markdown commands.
7
+ """
8
+ def __init__(self):
9
+ self._registry: Dict[str, Callable] = {}
10
+
11
+ def register(self, command_name: str, handler: Callable):
12
+ """
13
+ Register a handler for a specific command name.
14
+ """
15
+ self._registry[command_name] = handler
16
+ logger.debug(f"Registered command handler for: {command_name}")
17
+
18
+ def get_handler(self, command_name: str) -> Optional[Callable]:
19
+ """
20
+ Retrieve the handler for a given command name.
21
+ """
22
+ return self._registry.get(command_name)
23
+
24
+ def dispatch(self, command_name: str, *args, **kwargs) -> Any:
25
+ """
26
+ Execute the handler for the given command.
27
+ """
28
+ handler = self.get_handler(command_name)
29
+ if handler:
30
+ return handler(*args, **kwargs)
31
+ else:
32
+ logger.warning(f"No handler registered for command: {command_name}")
33
+ return None
@@ -0,0 +1,221 @@
1
+ from md_processing.command_dispatcher import CommandDispatcher
2
+
3
+ # Import all command handlers
4
+ from md_processing.md_commands.project_commands import process_link_project_dependency_command
5
+ from md_processing.md_commands.product_manager_commands import process_csv_element_upsert_command
6
+ from md_processing import (
7
+ process_glossary_upsert_command, process_term_upsert_command,
8
+ process_provenance_command,
9
+ process_project_upsert_command, process_blueprint_upsert_command,
10
+ process_solution_component_upsert_command, process_component_link_unlink_command,
11
+ process_link_term_term_relationship_command,
12
+ process_information_supply_chain_upsert_command,
13
+ process_information_supply_chain_link_unlink_command,
14
+ process_digital_product_upsert_command, process_agreement_upsert_command,
15
+ process_collection_upsert_command, process_link_agreement_item_command,
16
+ process_gov_definition_upsert_command,
17
+ process_governed_by_link_detach_command,
18
+ process_gov_def_link_detach_command, process_product_dependency_command,
19
+ process_add_to_collection_command, process_attach_collection_command,
20
+ # process_gov_def_context_command,
21
+ process_supporting_gov_def_link_detach_command,
22
+ process_attach_subscriber_command, process_output_command,
23
+ process_link_project_hierarchy_command,
24
+ process_external_reference_upsert_command,
25
+ process_link_to_external_reference_command, process_link_to_media_reference_command,
26
+ process_link_to_cited_document_command,
27
+ EXT_REF_UPSERT, LINK_CITED_DOC, LINK_MEDIA, LINK_EXT_REF,
28
+ COLLECTIONS_LIST, SIMPLE_COLLECTIONS, GOV_COM_LIST, GOV_LINK_LIST,
29
+ LIST_COMMANDS, PROJECT_COMMANDS
30
+ )
31
+
32
+ from md_processing.md_commands.data_designer_commands import (
33
+ process_data_spec_upsert_command,
34
+ process_data_dict_upsert_command,
35
+ process_data_field_upsert_command,
36
+ process_data_structure_upsert_command,
37
+ process_data_class_upsert_command
38
+ )
39
+
40
+ from md_processing.md_commands.feedback_commands import (
41
+ process_add_comment_command, process_journal_entry_command,
42
+ process_upsert_note_command, process_attach_note_log_command,
43
+ process_upsert_informal_tag_command, process_tag_element_command
44
+ )
45
+
46
+ def setup_dispatcher() -> CommandDispatcher:
47
+ dispatcher = CommandDispatcher()
48
+
49
+ # Provenance
50
+ dispatcher.register("Provenance", lambda client, block, directive: process_provenance_command(client.input_file if hasattr(client, 'input_file') else "unknown", block))
51
+ # Note: process_provenance_command in dr_egeria takes (input_file, current_block).
52
+ # But dispatch calls with (client, current_block, directive).
53
+ # We might need to adjust the signature or use a wrapper.
54
+ # Actually, in dr_egeria.py: result = process_provenance_command(input_file, current_block)
55
+ # The dispatcher will likely be called as dispatch(command, client, block, directive)
56
+ # Use a lambda to adapt if necessary, or better yet, standardized handler signatures.
57
+ # For now, let's keep the mapping logic close to the original.
58
+
59
+ # Feedback Commands
60
+ for cmd in ["Create Comment", "Update Comment"]:
61
+ dispatcher.register(cmd, process_add_comment_command)
62
+
63
+ dispatcher.register("Create Journal Entry", process_journal_entry_command)
64
+
65
+ for cmd in ["Create Note", "Update Note"]:
66
+ dispatcher.register(cmd, process_upsert_informal_tag_command) # Wait, check original file.
67
+ # Original:
68
+ # elif potential_command in ["Create Note", "Update Note"]:
69
+ # result = process_upsert_note_command(client, current_block, directive)
70
+
71
+ # Correcting mapping based on review
72
+ for cmd in ["Create Note", "Update Note"]:
73
+ dispatcher.register(cmd, process_upsert_note_command)
74
+
75
+ for cmd in ["Link NoteLog", "Detach NoteLog"]:
76
+ dispatcher.register(cmd, process_attach_note_log_command)
77
+
78
+ for cmd in ["Create Informal Tag", "Update Informal Tag"]:
79
+ dispatcher.register(cmd, process_upsert_informal_tag_command)
80
+
81
+ for cmd in ["Link Tag", "Detach Tag", "Link Tag->Element"]:
82
+ dispatcher.register(cmd, process_tag_element_command)
83
+
84
+ # External References
85
+ for cmd in EXT_REF_UPSERT:
86
+ dispatcher.register(cmd, process_external_reference_upsert_command)
87
+
88
+ for cmd in LINK_EXT_REF:
89
+ dispatcher.register(cmd, process_link_to_external_reference_command)
90
+
91
+ for cmd in LINK_MEDIA:
92
+ dispatcher.register(cmd, process_link_to_media_reference_command)
93
+
94
+ for cmd in LINK_CITED_DOC:
95
+ dispatcher.register(cmd, process_link_to_cited_document_command)
96
+
97
+ # Glossary
98
+ for cmd in ["Create Glossary", "Update Glossary"]:
99
+ dispatcher.register(cmd, process_glossary_upsert_command)
100
+
101
+ for cmd in ["Create Term", "Update Term"]:
102
+ dispatcher.register(cmd, process_term_upsert_command)
103
+
104
+ for cmd in ["Create Term-Term Relationship", "Update Term-Term Relationship",
105
+ "Link Termss", "Detach Terms", "Link Term-Term Relationship", "Detach Term-Term Relationship"]:
106
+ dispatcher.register(cmd, process_link_term_term_relationship_command)
107
+
108
+ # Output / List / View
109
+ for cmd in LIST_COMMANDS:
110
+ dispatcher.register(cmd, process_output_command)
111
+
112
+ for cmd in ["List Glossaries", "List Terms", "List Glossary Terms", "View Glossaries",
113
+ "View Terms", "View Glossary Terms", "View Report"]:
114
+ dispatcher.register(cmd, process_output_command)
115
+
116
+ # Projects
117
+ for cmd in PROJECT_COMMANDS:
118
+ dispatcher.register(cmd, process_project_upsert_command)
119
+
120
+ for cmd in ["Link Parent Project", "Attach Parent Project", "Detach Parent Project"]:
121
+ dispatcher.register(cmd, process_link_project_hierarchy_command)
122
+
123
+ for cmd in ["Link Project Dependency", "Attach Project Dependency", "Detach Project Dependency"]:
124
+ dispatcher.register(cmd, process_link_project_dependency_command)
125
+
126
+ # Blueprints & Solution Components
127
+ for cmd in ["Create Blueprint", "Update Blueprint", "Create Solution Blueprint", "Update Solution Blueprint"]:
128
+ dispatcher.register(cmd, process_blueprint_upsert_command)
129
+
130
+ for cmd in ["Create Solution Component", "Update Solution Component"]:
131
+ dispatcher.register(cmd, process_solution_component_upsert_command)
132
+
133
+ for cmd in ["Link Solution Components", "Link Solution Component Peers", "Wire Solution Components",
134
+ "Unlink Solution Components", "Detach Solution Components", "Detach Solution Component Peers"]:
135
+ dispatcher.register(cmd, process_component_link_unlink_command)
136
+
137
+ # Information Supply Chain
138
+ for cmd in ["Create Information Supply Chain", "Update Information Supply Chain"]:
139
+ dispatcher.register(cmd, process_information_supply_chain_upsert_command)
140
+
141
+ for cmd in ["Link Information Supply Chain Peers", "Link Information Supply Chains",
142
+ "Link Supply Chains", "Unlink Information Supply Chain Peers",
143
+ "Unlink Information Supply Chains", "Unlink Supply Chains"]:
144
+ dispatcher.register(cmd, process_information_supply_chain_link_unlink_command)
145
+
146
+ # Data Designer
147
+ for cmd in ["Create Data Spec", "Create Data Specification", "Update Data Spec", "Update Data Specification"]:
148
+ dispatcher.register(cmd, process_data_spec_upsert_command)
149
+
150
+ for cmd in ["Create Data Dict", "Create Data Dictionary", "Update Data Spec", "Update Data Dictionary"]: # Note: Update Data Spec is repeated here in original
151
+ dispatcher.register(cmd, process_data_dict_upsert_command)
152
+
153
+ for cmd in ["Create Data Field", "Update Data Field"]:
154
+ dispatcher.register(cmd, process_data_field_upsert_command)
155
+
156
+ for cmd in ["Create Data Structure", "Update Data Structure"]:
157
+ dispatcher.register(cmd, process_data_structure_upsert_command)
158
+
159
+ for cmd in ["Create Data Class", "Update Data Class"]:
160
+ dispatcher.register(cmd, process_data_class_upsert_command)
161
+
162
+ for cmd in ["View Data Dictionaries", "View Data Dictionary", "View Data Specifications", "View Data Specs",
163
+ "View Data Structures", "View Data Structure", "View Data Fields", "View Data Field",
164
+ "View Data Classes", "View Data Class"]:
165
+ dispatcher.register(cmd, process_output_command)
166
+
167
+ # Collections
168
+ for cmd in ["Create Digital Product Catalog", "Create Collection","Create Folder", "Create Root Collection",
169
+ "Update Digital Product Catalog", "Update Collection","Update Folder", "Update Root Collection"]:
170
+ dispatcher.register(cmd, process_collection_upsert_command)
171
+
172
+ for cmd in SIMPLE_COLLECTIONS:
173
+ dispatcher.register(cmd, process_collection_upsert_command)
174
+
175
+ for cmd in ["Link Collection->Resource", "Detach Collection->Resource"]:
176
+ dispatcher.register(cmd, process_attach_collection_command)
177
+
178
+ for cmd in ["Add Member->Collection", "Detach Member->Collection", "Add Member", "Remove Member",
179
+ "Add to Folder", "Remove from Folder"]:
180
+ dispatcher.register(cmd, process_add_to_collection_command)
181
+
182
+
183
+ # Digital Products & Agreements
184
+ for cmd in ["Create Digital Product", "Create Data Product","Update Digital Product", "Update Data Product"]:
185
+ dispatcher.register(cmd, process_digital_product_upsert_command)
186
+
187
+ for cmd in ["Create Agreement", "Create Data Sharing Agreement", "Create Digital Subscription",
188
+ "Create Product Subscription", "Update Agreement", "Update Data Sharing Agreement",
189
+ "Update Digital Subscription", "Update Product Subscription"]:
190
+ dispatcher.register(cmd, process_agreement_upsert_command)
191
+
192
+ for cmd in ["Link Agreement->Item", "Detach Agreement->Item"]:
193
+ dispatcher.register(cmd, process_link_agreement_item_command)
194
+
195
+ for cmd in ["Link Subscriber->Subscription", "Detach Subscriber->Subscription"]:
196
+ dispatcher.register(cmd, process_attach_subscriber_command)
197
+
198
+ for cmd in ["Link Digital Products", "Detach Digital Products",
199
+ "Link Product-Product", "Detach Product-Product"]:
200
+ dispatcher.register(cmd, process_product_dependency_command)
201
+
202
+
203
+ # CSV
204
+ for cmd in ["Create CSV File"]:
205
+ dispatcher.register(cmd, process_csv_element_upsert_command)
206
+
207
+ # Governance
208
+ for cmd in GOV_COM_LIST:
209
+ dispatcher.register(cmd, process_gov_definition_upsert_command)
210
+
211
+ for cmd in GOV_LINK_LIST:
212
+ dispatcher.register(cmd, process_gov_def_link_detach_command)
213
+
214
+ for cmd in ["Link Governance Mechanism", "Detach Governance Mechanism",
215
+ "Link Governance Response", "Detach Governance Response"]:
216
+ dispatcher.register(cmd, process_supporting_gov_def_link_detach_command)
217
+
218
+ for cmd in ["Link Governed By", "Detach Governed By"]:
219
+ dispatcher.register(cmd, process_governed_by_link_detach_command)
220
+
221
+ return dispatcher