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.
- commands/__init__.py +24 -0
- commands/cat/Dr-Egeria_md-orig.py +2 -2
- commands/cat/__init__.py +1 -17
- commands/cat/collection_actions.py +197 -0
- commands/cat/dr_egeria_command_help.py +372 -0
- commands/cat/dr_egeria_jupyter.py +7 -7
- commands/cat/dr_egeria_md.py +27 -182
- commands/cat/exp_list_glossaries.py +11 -14
- commands/cat/get_asset_graph.py +37 -267
- commands/cat/{get_collection.py → get_collection_tree.py} +10 -18
- commands/cat/get_project_dependencies.py +14 -14
- commands/cat/get_project_structure.py +15 -14
- commands/cat/get_tech_type_elements.py +16 -116
- commands/cat/glossary_actions.py +145 -298
- commands/cat/list_assets.py +3 -11
- commands/cat/list_cert_types.py +17 -63
- commands/cat/list_collections.py +46 -138
- commands/cat/list_deployed_catalogs.py +15 -27
- commands/cat/list_deployed_database_schemas.py +27 -43
- commands/cat/list_deployed_databases.py +16 -31
- commands/cat/list_deployed_servers.py +35 -54
- commands/cat/list_glossaries.py +18 -17
- commands/cat/list_projects.py +10 -12
- commands/cat/list_tech_type_elements.py +21 -37
- commands/cat/list_tech_types.py +13 -25
- commands/cat/list_terms.py +38 -79
- commands/cat/list_todos.py +4 -11
- commands/cat/list_user_ids.py +3 -10
- commands/cat/my_reports.py +559 -0
- commands/cat/run_report.py +394 -0
- commands/cat/run_report_orig.py +528 -0
- commands/cli/egeria.py +222 -247
- commands/cli/egeria_cat.py +68 -81
- commands/cli/egeria_my.py +13 -0
- commands/cli/egeria_ops.py +69 -74
- commands/cli/egeria_tech.py +17 -93
- commands/cli/ops_config.py +3 -6
- commands/{cat/list_categories.py → deprecated/list_data_designer.py} +53 -64
- commands/{cat/list_data_structures.py → deprecated/list_data_structures_full.py} +3 -6
- commands/deprecated/old_get_asset_graph.py +315 -0
- commands/my/__init__.py +0 -2
- commands/my/list_my_profile.py +27 -34
- commands/my/list_my_roles.py +1 -7
- commands/my/monitor_my_todos.py +1 -7
- commands/my/monitor_open_todos.py +6 -7
- commands/my/todo_actions.py +4 -5
- commands/ops/__init__.py +0 -2
- commands/ops/gov_server_actions.py +17 -21
- commands/ops/list_archives.py +17 -38
- commands/ops/list_catalog_targets.py +33 -40
- commands/ops/load_archive.py +35 -26
- commands/ops/{monitor_engine_activity_c.py → monitor_active_engine_activity.py} +51 -82
- commands/ops/{monitor_integ_daemon_status.py → monitor_daemon_status.py} +35 -55
- commands/ops/monitor_engine_activity.py +79 -77
- commands/ops/{monitor_gov_eng_status.py → monitor_engine_status.py} +10 -7
- commands/ops/monitor_platform_status.py +38 -50
- commands/ops/monitor_server_startup.py +6 -11
- commands/ops/monitor_server_status.py +7 -11
- commands/ops/orig_monitor_server_list.py +8 -8
- commands/ops/orig_monitor_server_status.py +1 -5
- commands/ops/refresh_integration_daemon.py +5 -5
- commands/ops/restart_integration_daemon.py +5 -5
- commands/ops/table_integ_daemon_status.py +6 -6
- commands/ops/x_engine_actions.py +7 -7
- commands/tech/__init__.py +0 -2
- commands/tech/{generic_actions.py → element_actions.py} +6 -11
- commands/tech/get_element_info.py +20 -29
- commands/tech/get_guid_info.py +23 -42
- commands/tech/get_tech_details.py +20 -35
- commands/tech/get_tech_type_template.py +28 -39
- commands/tech/list_all_om_type_elements.py +24 -30
- commands/tech/list_all_om_type_elements_x.py +22 -28
- commands/tech/list_all_related_elements.py +19 -28
- commands/tech/list_anchored_elements.py +22 -30
- commands/tech/list_asset_types.py +19 -24
- commands/tech/list_elements_by_classification_by_property_value.py +26 -32
- commands/tech/list_elements_by_property_value.py +19 -25
- commands/tech/list_elements_by_property_value_x.py +20 -28
- commands/tech/list_elements_for_classification.py +28 -41
- commands/tech/list_gov_action_processes.py +16 -27
- commands/tech/list_information_supply_chains.py +22 -30
- commands/tech/list_registered_services.py +14 -26
- commands/tech/list_related_elements_with_prop_value.py +15 -25
- commands/tech/list_related_specification.py +1 -4
- commands/tech/list_relationship_types.py +15 -25
- commands/tech/list_relationships.py +20 -36
- commands/tech/list_solution_blueprints.py +28 -33
- commands/tech/list_solution_components.py +23 -29
- commands/tech/list_solution_roles.py +21 -32
- commands/tech/list_tech_templates.py +51 -54
- commands/tech/list_valid_metadata_values.py +5 -9
- commands/tech/table_tech_templates.py +2 -6
- commands/tech/x_list_related_elements.py +1 -4
- examples/GeoSpatial Products Example.py +524 -0
- examples/Jupyter Notebooks/P-egeria-server-config.ipynb +2137 -0
- examples/Jupyter Notebooks/README.md +2 -0
- examples/Jupyter Notebooks/common/P-environment-check.ipynb +115 -0
- examples/Jupyter Notebooks/common/__init__.py +14 -0
- examples/Jupyter Notebooks/common/common-functions.ipynb +4694 -0
- examples/Jupyter Notebooks/common/environment-check.ipynb +52 -0
- examples/Jupyter Notebooks/common/globals.ipynb +184 -0
- examples/Jupyter Notebooks/common/globals.py +154 -0
- examples/Jupyter Notebooks/common/orig_globals.py +152 -0
- examples/format_sets/all_format_sets.json +910 -0
- examples/format_sets/custom_format_sets.json +268 -0
- examples/format_sets/subset_format_sets.json +187 -0
- examples/format_sets_save_load_example.py +291 -0
- examples/jacquard_data_sets.py +129 -0
- examples/output_formats_example.py +193 -0
- examples/test_jacquard_data_sets.py +54 -0
- examples/test_jacquard_data_sets_scenarios.py +94 -0
- md_processing/__init__.py +90 -0
- md_processing/command_dispatcher.py +33 -0
- md_processing/command_mapping.py +221 -0
- md_processing/data/commands/commands_data_designer.json +537 -0
- md_processing/data/commands/commands_external_reference.json +733 -0
- md_processing/data/commands/commands_feedback.json +155 -0
- md_processing/data/commands/commands_general.json +204 -0
- md_processing/data/commands/commands_glossary.json +218 -0
- md_processing/data/commands/commands_governance.json +3678 -0
- md_processing/data/commands/commands_product_manager.json +865 -0
- md_processing/data/commands/commands_project.json +642 -0
- md_processing/data/commands/commands_solution_architect.json +366 -0
- md_processing/data/commands.json +17568 -0
- md_processing/data/commands_working.json +30641 -0
- md_processing/data/gened_report_specs.py +6584 -0
- md_processing/data/generated_format_sets.json +6533 -0
- md_processing/data/generated_format_sets_old.json +4137 -0
- md_processing/data/generated_format_sets_old.py +45 -0
- md_processing/dr_egeria.py +182 -0
- md_processing/md_commands/__init__.py +3 -0
- md_processing/md_commands/data_designer_commands.py +1276 -0
- md_processing/md_commands/ext_ref_commands.py +530 -0
- md_processing/md_commands/feedback_commands.py +726 -0
- md_processing/md_commands/glossary_commands.py +684 -0
- md_processing/md_commands/governance_officer_commands.py +600 -0
- md_processing/md_commands/product_manager_commands.py +1266 -0
- md_processing/md_commands/project_commands.py +383 -0
- md_processing/md_commands/solution_architect_commands.py +1184 -0
- md_processing/md_commands/view_commands.py +295 -0
- md_processing/md_processing_utils/__init__.py +4 -0
- md_processing/md_processing_utils/common_md_proc_utils.py +1249 -0
- md_processing/md_processing_utils/common_md_utils.py +578 -0
- md_processing/md_processing_utils/determine_width.py +103 -0
- md_processing/md_processing_utils/extraction_utils.py +547 -0
- md_processing/md_processing_utils/gen_report_specs.py +643 -0
- md_processing/md_processing_utils/generate_dr_help.py +193 -0
- md_processing/md_processing_utils/generate_md_cmd_templates.py +144 -0
- md_processing/md_processing_utils/generate_md_templates.py +83 -0
- md_processing/md_processing_utils/md_processing_constants.py +1228 -0
- md_processing/md_processing_utils/message_constants.py +19 -0
- pyegeria/__init__.py +201 -443
- pyegeria/core/__init__.py +40 -0
- pyegeria/core/_base_platform_client.py +574 -0
- pyegeria/core/_base_server_client.py +573 -0
- pyegeria/core/_exceptions.py +457 -0
- pyegeria/core/_globals.py +60 -0
- pyegeria/core/_server_client.py +6073 -0
- pyegeria/core/_validators.py +257 -0
- pyegeria/core/config.py +654 -0
- pyegeria/{create_tech_guid_lists.py → core/create_tech_guid_lists.py} +0 -1
- pyegeria/core/load_config.py +37 -0
- pyegeria/core/logging_configuration.py +207 -0
- pyegeria/core/mcp_adapter.py +144 -0
- pyegeria/core/mcp_server.py +212 -0
- pyegeria/core/utils.py +405 -0
- pyegeria/deprecated/__init__.py +0 -0
- pyegeria/{_client.py → deprecated/_client.py} +62 -24
- pyegeria/{_deprecated_gov_engine.py → deprecated/_deprecated_gov_engine.py} +16 -16
- pyegeria/{classification_manager_omvs.py → deprecated/classification_manager_omvs.py} +1988 -1878
- pyegeria/deprecated/output_formatter_with_machine_keys.py +1127 -0
- pyegeria/{runtime_manager_omvs.py → deprecated/runtime_manager_omvs.py} +216 -229
- pyegeria/{valid_metadata_omvs.py → deprecated/valid_metadata_omvs.py} +93 -93
- pyegeria/{x_action_author_omvs.py → deprecated/x_action_author_omvs.py} +2 -3
- pyegeria/egeria_cat_client.py +25 -51
- pyegeria/egeria_client.py +140 -98
- pyegeria/egeria_config_client.py +48 -24
- pyegeria/egeria_tech_client.py +170 -83
- pyegeria/models/__init__.py +150 -0
- pyegeria/models/collection_models.py +168 -0
- pyegeria/models/models.py +654 -0
- pyegeria/omvs/__init__.py +84 -0
- pyegeria/omvs/action_author.py +342 -0
- pyegeria/omvs/actor_manager.py +5980 -0
- pyegeria/omvs/asset_catalog.py +842 -0
- pyegeria/omvs/asset_maker.py +2736 -0
- pyegeria/omvs/automated_curation.py +4403 -0
- pyegeria/omvs/classification_manager.py +11213 -0
- pyegeria/omvs/collection_manager.py +5780 -0
- pyegeria/omvs/community_matters_omvs.py +468 -0
- pyegeria/{core_omag_server_config.py → omvs/core_omag_server_config.py} +157 -157
- pyegeria/{data_designer_omvs.py → omvs/data_designer.py} +1991 -1691
- pyegeria/omvs/data_discovery.py +869 -0
- pyegeria/omvs/data_engineer.py +372 -0
- pyegeria/omvs/digital_business.py +1133 -0
- pyegeria/omvs/external_links.py +1752 -0
- pyegeria/omvs/feedback_manager.py +834 -0
- pyegeria/{full_omag_server_config.py → omvs/full_omag_server_config.py} +73 -69
- pyegeria/omvs/glossary_manager.py +3231 -0
- pyegeria/omvs/governance_officer.py +3009 -0
- pyegeria/omvs/lineage_linker.py +314 -0
- pyegeria/omvs/location_arena.py +1525 -0
- pyegeria/omvs/metadata_expert.py +668 -0
- pyegeria/omvs/metadata_explorer_omvs.py +2943 -0
- pyegeria/omvs/my_profile.py +1042 -0
- pyegeria/omvs/notification_manager.py +358 -0
- pyegeria/omvs/people_organizer.py +394 -0
- pyegeria/{platform_services.py → omvs/platform_services.py} +113 -193
- pyegeria/omvs/product_manager.py +1825 -0
- pyegeria/omvs/project_manager.py +1907 -0
- pyegeria/omvs/reference_data.py +1140 -0
- pyegeria/omvs/registered_info.py +334 -0
- pyegeria/omvs/runtime_manager.py +2817 -0
- pyegeria/omvs/schema_maker.py +446 -0
- pyegeria/{server_operations.py → omvs/server_operations.py} +27 -26
- pyegeria/omvs/solution_architect.py +6490 -0
- pyegeria/omvs/specification_properties.py +37 -0
- pyegeria/omvs/subject_area.py +1042 -0
- pyegeria/omvs/template_manager_omvs.py +236 -0
- pyegeria/omvs/time_keeper.py +1761 -0
- pyegeria/omvs/valid_metadata.py +3221 -0
- pyegeria/omvs/valid_metadata_lists.py +37 -0
- pyegeria/omvs/valid_type_lists.py +37 -0
- pyegeria/view/__init__.py +28 -0
- pyegeria/view/_output_format_models.py +514 -0
- pyegeria/view/_output_formats.py +14 -0
- pyegeria/view/base_report_formats.py +2719 -0
- pyegeria/view/dr_egeria_reports.py +56 -0
- pyegeria/view/format_set_executor.py +397 -0
- pyegeria/{md_processing_utils.py → view/md_processing_utils.py} +5 -5
- pyegeria/{mermaid_utilities.py → view/mermaid_utilities.py} +2 -154
- pyegeria/view/output_formatter.py +1297 -0
- pyegeria-5.5.3.3.dist-info/METADATA +218 -0
- pyegeria-5.5.3.3.dist-info/RECORD +241 -0
- {pyegeria-5.3.9.9.3.dist-info → pyegeria-5.5.3.3.dist-info}/WHEEL +2 -1
- pyegeria-5.5.3.3.dist-info/entry_points.txt +103 -0
- pyegeria-5.5.3.3.dist-info/top_level.txt +4 -0
- commands/cat/.DS_Store +0 -0
- commands/cat/README.md +0 -16
- commands/cli/txt_custom_v2.tcss +0 -19
- commands/my/README.md +0 -17
- commands/ops/README.md +0 -24
- commands/ops/monitor_asset_events.py +0 -108
- commands/tech/README.md +0 -24
- pyegeria/.DS_Store +0 -0
- pyegeria/README.md +0 -35
- pyegeria/_globals.py +0 -47
- pyegeria/_validators.py +0 -385
- pyegeria/asset_catalog_omvs.py +0 -864
- pyegeria/automated_curation_omvs.py +0 -3765
- pyegeria/collection_manager_omvs.py +0 -2744
- pyegeria/dr.egeria spec.md +0 -9
- pyegeria/egeria_my_client.py +0 -56
- pyegeria/feedback_manager_omvs.py +0 -4573
- pyegeria/glossary_browser_omvs.py +0 -3728
- pyegeria/glossary_manager_omvs.py +0 -2440
- pyegeria/m_test.py +0 -118
- pyegeria/md_processing_helpers.py +0 -58
- pyegeria/md_processing_utils_orig.py +0 -1103
- pyegeria/metadata_explorer_omvs.py +0 -2326
- pyegeria/my_profile_omvs.py +0 -1022
- pyegeria/output_formatter.py +0 -389
- pyegeria/project_manager_omvs.py +0 -1933
- pyegeria/registered_info.py +0 -167
- pyegeria/solution_architect_omvs.py +0 -2156
- pyegeria/template_manager_omvs.py +0 -1414
- pyegeria/utils.py +0 -197
- pyegeria-5.3.9.9.3.dist-info/METADATA +0 -72
- pyegeria-5.3.9.9.3.dist-info/RECORD +0 -143
- pyegeria-5.3.9.9.3.dist-info/entry_points.txt +0 -99
- /pyegeria/{_exceptions.py → deprecated/_exceptions.py} +0 -0
- {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
|