pyegeria 5.4.0.28__py3-none-any.whl → 5.5.3.3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of pyegeria might be problematic. Click here for more details.
- commands/__init__.py +24 -0
- commands/cat/Dr-Egeria_md-orig.py +2 -2
- commands/cat/collection_actions.py +197 -0
- commands/cat/dr_egeria_command_help.py +137 -38
- commands/cat/dr_egeria_jupyter.py +7 -7
- commands/cat/dr_egeria_md.py +10 -267
- 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 +17 -139
- 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/{list_format_set.py → run_report_orig.py} +136 -44
- commands/cli/egeria.py +182 -219
- commands/cli/egeria_cat.py +32 -59
- commands/cli/egeria_my.py +13 -0
- commands/cli/egeria_ops.py +69 -74
- commands/cli/egeria_tech.py +17 -93
- commands/{cat → deprecated}/list_data_designer.py +2 -4
- commands/{cat → 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 +14 -11
- 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 +33 -24
- 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 +6489 -30060
- md_processing/data/{commands-working.json → commands_working.json} +9304 -13513
- 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/data_designer_commands.py +195 -583
- 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 +106 -490
- md_processing/md_commands/governance_officer_commands.py +129 -18
- md_processing/md_commands/product_manager_commands.py +362 -115
- md_processing/md_commands/project_commands.py +351 -134
- md_processing/md_commands/solution_architect_commands.py +276 -232
- md_processing/md_commands/view_commands.py +295 -0
- md_processing/md_processing_utils/common_md_proc_utils.py +258 -166
- md_processing/md_processing_utils/common_md_utils.py +138 -43
- md_processing/md_processing_utils/determine_width.py +103 -0
- md_processing/md_processing_utils/extraction_utils.py +100 -39
- md_processing/md_processing_utils/gen_report_specs.py +643 -0
- md_processing/md_processing_utils/generate_dr_help.py +61 -33
- md_processing/md_processing_utils/generate_md_cmd_templates.py +20 -19
- md_processing/md_processing_utils/generate_md_templates.py +3 -12
- md_processing/md_processing_utils/md_processing_constants.py +1053 -72
- pyegeria/__init__.py +203 -158
- pyegeria/core/__init__.py +40 -0
- pyegeria/core/_base_platform_client.py +574 -0
- pyegeria/core/_base_server_client.py +573 -0
- pyegeria/{_exceptions_new.py → core/_exceptions.py} +62 -30
- pyegeria/{_globals.py → core/_globals.py} +14 -3
- pyegeria/core/_server_client.py +6073 -0
- pyegeria/{_validators.py → core/_validators.py} +7 -8
- 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/{logging_configuration.py → core/logging_configuration.py} +1 -1
- pyegeria/core/mcp_adapter.py +144 -0
- pyegeria/core/mcp_server.py +212 -0
- pyegeria/core/utils.py +405 -0
- pyegeria/{_client.py → deprecated/_client.py} +24 -25
- pyegeria/{_deprecated_gov_engine.py → deprecated/_deprecated_gov_engine.py} +16 -16
- pyegeria/{classification_manager_omvs.py → deprecated/classification_manager_omvs.py} +1987 -1877
- pyegeria/{output_formatter.py → deprecated/output_formatter_with_machine_keys.py} +298 -45
- pyegeria/{runtime_manager_omvs.py → deprecated/runtime_manager_omvs.py} +155 -171
- 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 +26 -70
- pyegeria/egeria_client.py +130 -93
- pyegeria/egeria_config_client.py +40 -46
- pyegeria/egeria_tech_client.py +141 -54
- pyegeria/models/__init__.py +150 -0
- pyegeria/{models.py → models/models.py} +156 -20
- 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/{collection_manager.py → omvs/collection_manager.py} +1334 -1160
- 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.py → omvs/data_designer.py} +1115 -660
- 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/{glossary_manager.py → omvs/glossary_manager.py} +857 -519
- pyegeria/{governance_officer.py → omvs/governance_officer.py} +964 -468
- 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/{solution_architect_omvs.py → omvs/solution_architect.py} +1886 -1505
- 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/{_output_format_models.py → view/_output_format_models.py} +160 -24
- 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.4.0.28.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/.env +0 -8
- commands/cat/README.md +0 -16
- commands/cat/debug_log +0 -1126
- commands/cat/debug_log.2025-08-18_11-34-38_088636.zip +0 -0
- commands/cat/list_categories.py +0 -192
- commands/cat/logs/pyegeria.log +0 -4
- commands/cli/debug_log +0 -0
- commands/cli/debug_log.log +0 -0
- commands/cli/txt_custom_v2.tcss +0 -19
- commands/my/README.md +0 -17
- commands/ops/README.md +0 -24
- commands/ops/logs/pyegeria.log +0 -0
- commands/ops/monitor_asset_events.py +0 -108
- commands/tech/README.md +0 -24
- md_processing/.DS_Store +0 -0
- md_processing/dr-egeria-outbox/Collections-2025-08-12-13-30-37.md +0 -163
- md_processing/dr-egeria-outbox/Collections-2025-08-12-13-35-58.md +0 -474
- md_processing/dr_egeria_inbox/Derive-Dr-Gov-Defs.md +0 -8
- md_processing/dr_egeria_inbox/Dr.Egeria Templates.md +0 -873
- md_processing/dr_egeria_inbox/arch_test.md +0 -57
- md_processing/dr_egeria_inbox/archive/dr_egeria_intro.md +0 -254
- md_processing/dr_egeria_inbox/archive/dr_egeria_intro_more_terms.md +0 -696
- md_processing/dr_egeria_inbox/archive/dr_egeria_intro_part1.md +0 -254
- md_processing/dr_egeria_inbox/archive/dr_egeria_intro_part2.md +0 -298
- md_processing/dr_egeria_inbox/archive/dr_egeria_intro_part3.md +0 -608
- md_processing/dr_egeria_inbox/archive/dr_egeria_intro_part4.md +0 -94
- md_processing/dr_egeria_inbox/archive/freddie_intro.md +0 -284
- md_processing/dr_egeria_inbox/archive/freddie_intro_orig.md +0 -275
- md_processing/dr_egeria_inbox/archive/test-term.md +0 -110
- md_processing/dr_egeria_inbox/cat_test.md +0 -100
- md_processing/dr_egeria_inbox/collections.md +0 -39
- md_processing/dr_egeria_inbox/data_designer_debug.log +0 -6
- md_processing/dr_egeria_inbox/data_designer_out.md +0 -60
- md_processing/dr_egeria_inbox/data_designer_search_test.md +0 -11
- md_processing/dr_egeria_inbox/data_field.md +0 -54
- md_processing/dr_egeria_inbox/data_spec.md +0 -77
- md_processing/dr_egeria_inbox/data_spec_test.md +0 -2406
- md_processing/dr_egeria_inbox/data_test.md +0 -179
- md_processing/dr_egeria_inbox/data_test2.md +0 -429
- md_processing/dr_egeria_inbox/data_test3.md +0 -462
- md_processing/dr_egeria_inbox/dr_egeria_data_designer_1.md +0 -124
- md_processing/dr_egeria_inbox/dr_egeria_intro_categories.md +0 -168
- md_processing/dr_egeria_inbox/dr_egeria_intro_part1.md +0 -280
- md_processing/dr_egeria_inbox/dr_egeria_intro_part2.md +0 -318
- md_processing/dr_egeria_inbox/dr_egeria_intro_part3.md +0 -1073
- md_processing/dr_egeria_inbox/dr_egeria_isc1.md +0 -44
- md_processing/dr_egeria_inbox/generated_help_report.md +0 -9
- md_processing/dr_egeria_inbox/glossary_creation_experiment.ipynb +0 -341
- md_processing/dr_egeria_inbox/glossary_list.md +0 -5
- md_processing/dr_egeria_inbox/glossary_search_test.md +0 -40
- md_processing/dr_egeria_inbox/glossary_test1.md +0 -324
- md_processing/dr_egeria_inbox/gov_def.md +0 -482
- md_processing/dr_egeria_inbox/gov_def2.md +0 -447
- md_processing/dr_egeria_inbox/img.png +0 -0
- md_processing/dr_egeria_inbox/product.md +0 -211
- md_processing/dr_egeria_inbox/rel.md +0 -8
- md_processing/dr_egeria_inbox/sb.md +0 -119
- md_processing/dr_egeria_inbox/solution-components.md +0 -136
- md_processing/dr_egeria_inbox/solution_blueprints.md +0 -118
- md_processing/dr_egeria_inbox/synonym_test.md +0 -42
- md_processing/dr_egeria_inbox/t2.md +0 -268
- md_processing/dr_egeria_outbox/.obsidian/app.json +0 -1
- md_processing/dr_egeria_outbox/.obsidian/appearance.json +0 -1
- md_processing/dr_egeria_outbox/.obsidian/community-plugins.json +0 -6
- md_processing/dr_egeria_outbox/.obsidian/core-plugins.json +0 -31
- md_processing/dr_egeria_outbox/.obsidian/plugins/calendar/data.json +0 -10
- md_processing/dr_egeria_outbox/.obsidian/plugins/calendar/main.js +0 -4459
- md_processing/dr_egeria_outbox/.obsidian/plugins/calendar/manifest.json +0 -10
- md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-kanban/data.json +0 -3
- md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-kanban/main.js +0 -153
- md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-kanban/manifest.json +0 -11
- md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-kanban/styles.css +0 -1
- md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-tasks-plugin/main.js +0 -500
- md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-tasks-plugin/manifest.json +0 -12
- md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-tasks-plugin/styles.css +0 -1
- md_processing/dr_egeria_outbox/.obsidian/plugins/templater-obsidian/main.js +0 -37
- md_processing/dr_egeria_outbox/.obsidian/plugins/templater-obsidian/manifest.json +0 -11
- md_processing/dr_egeria_outbox/.obsidian/plugins/templater-obsidian/styles.css +0 -220
- md_processing/dr_egeria_outbox/.obsidian/types.json +0 -28
- md_processing/dr_egeria_outbox/.obsidian/workspace.json +0 -220
- md_processing/dr_egeria_outbox/Untitled.canvas +0 -1
- md_processing/dr_egeria_outbox/friday/processed-2025-08-22 21:22-dr_egeria_intro_part1.md +0 -312
- md_processing/dr_egeria_outbox/friday/processed-2025-08-22 21:23-dr_egeria_intro_part1.md +0 -265
- md_processing/dr_egeria_outbox/friday/processed-2025-08-23 15:06-dr_egeria_intro_part1.md +0 -230
- md_processing/dr_egeria_outbox/friday/processed-2025-08-23 15:30-dr_egeria_intro_part1.md +0 -296
- md_processing/dr_egeria_outbox/friday/processed-2025-08-23 15:31-dr_egeria_intro_part1.md +0 -253
- md_processing/dr_egeria_outbox/friday/processed-2025-08-23 16:08-dr_egeria_intro_part2.md +0 -343
- md_processing/dr_egeria_outbox/friday/processed-2025-08-23 16:12-dr_egeria_intro_part2.md +0 -343
- md_processing/dr_egeria_outbox/monday/processed-2025-08-19 07:05-product.md +0 -426
- md_processing/dr_egeria_outbox/monday/processed-2025-08-19 07:56-product.md +0 -212
- md_processing/dr_egeria_outbox/monday/processed-2025-08-19 09:43-product.md +0 -201
- md_processing/dr_egeria_outbox/sunday/processed-2025-07-20 14:55-product.md +0 -77
- md_processing/dr_egeria_outbox/sunday/processed-2025-07-20 15:05-product.md +0 -75
- md_processing/dr_egeria_outbox/sunday/processed-2025-07-20 15:11-product.md +0 -74
- md_processing/dr_egeria_outbox/sunday/processed-2025-07-20 20:40-collections.md +0 -49
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 15:00-Derive-Dr-Gov-Defs.md +0 -719
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 20:13-Derive-Dr-Gov-Defs.md +0 -41
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 20:14-Derive-Dr-Gov-Defs.md +0 -33
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 20:50-Derive-Dr-Gov-Defs.md +0 -192
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 22:08-gov_def2.md +0 -486
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 22:10-gov_def2.md +0 -486
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-18 08:53-gov_def2.md +0 -486
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-18 08:54-gov_def2.md +0 -486
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-18 09:03-gov_def2.md +0 -486
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-18 09:06-gov_def2.md +0 -486
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-18 09:10-gov_def2.md +0 -486
- md_processing/dr_egeria_outbox/tuesday/processed-2025-07-16 19:15-gov_def2.md +0 -527
- md_processing/dr_egeria_outbox/tuesday/processed-2025-07-17 12:08-gov_def2.md +0 -527
- md_processing/dr_egeria_outbox/tuesday/processed-2025-07-17 14:27-gov_def2.md +0 -485
- md_processing/dr_egeria_outbox/tuesday/processed-2025-08-19 10:55-product.md +0 -209
- md_processing/family_docs/Data Designer/Create_Data_Class.md +0 -164
- md_processing/family_docs/Data Designer/Create_Data_Dictionary.md +0 -30
- md_processing/family_docs/Data Designer/Create_Data_Field.md +0 -162
- md_processing/family_docs/Data Designer/Create_Data_Specification.md +0 -36
- md_processing/family_docs/Data Designer/Create_Data_Structure.md +0 -38
- md_processing/family_docs/Data Designer/View_Data_Classes.md +0 -78
- md_processing/family_docs/Data Designer/View_Data_Dictionaries.md +0 -78
- md_processing/family_docs/Data Designer/View_Data_Fields.md +0 -78
- md_processing/family_docs/Data Designer/View_Data_Specifications.md +0 -78
- md_processing/family_docs/Data Designer/View_Data_Structures.md +0 -78
- md_processing/family_docs/Data Designer.md +0 -842
- md_processing/family_docs/Digital Product Manager/Add_Member->Collection.md +0 -42
- md_processing/family_docs/Digital Product Manager/Attach_Collection->Resource.md +0 -36
- md_processing/family_docs/Digital Product Manager/Create_Agreement.md +0 -96
- md_processing/family_docs/Digital Product Manager/Create_Data_Sharing_Agreement.md +0 -72
- md_processing/family_docs/Digital Product Manager/Create_DigitalSubscription.md +0 -102
- md_processing/family_docs/Digital Product Manager/Create_Digital_Product.md +0 -134
- md_processing/family_docs/Digital Product Manager/Link_Agreement_Items.md +0 -60
- md_processing/family_docs/Digital Product Manager/Link_Contracts.md +0 -26
- md_processing/family_docs/Digital Product Manager/Link_Digital_Product_-_Digital_Product.md +0 -30
- md_processing/family_docs/Digital Product Manager/Link_Subscribers.md +0 -48
- md_processing/family_docs/Digital Product Manager.md +0 -668
- md_processing/family_docs/Glossary/Attach_Category_Parent.md +0 -18
- md_processing/family_docs/Glossary/Attach_Term-Term_Relationship.md +0 -26
- md_processing/family_docs/Glossary/Create_Category.md +0 -38
- md_processing/family_docs/Glossary/Create_Glossary.md +0 -42
- md_processing/family_docs/Glossary/Create_Term.md +0 -70
- md_processing/family_docs/Glossary.md +0 -206
- md_processing/family_docs/Governance Officer/Create_Business_Imperative.md +0 -106
- md_processing/family_docs/Governance Officer/Create_Certification_Type.md +0 -112
- md_processing/family_docs/Governance Officer/Create_Governance_Approach.md +0 -114
- md_processing/family_docs/Governance Officer/Create_Governance_Obligation.md +0 -114
- md_processing/family_docs/Governance Officer/Create_Governance_Principle.md +0 -114
- md_processing/family_docs/Governance Officer/Create_Governance_Procedure.md +0 -128
- md_processing/family_docs/Governance Officer/Create_Governance_Process.md +0 -122
- md_processing/family_docs/Governance Officer/Create_Governance_Processing_Purpose.md +0 -106
- md_processing/family_docs/Governance Officer/Create_Governance_Responsibility.md +0 -122
- md_processing/family_docs/Governance Officer/Create_Governance_Rule.md +0 -122
- md_processing/family_docs/Governance Officer/Create_Governance_Strategy.md +0 -106
- md_processing/family_docs/Governance Officer/Create_License_Type.md +0 -112
- md_processing/family_docs/Governance Officer/Create_Naming_Standard_Rule.md +0 -122
- md_processing/family_docs/Governance Officer/Create_Regulation_Article.md +0 -106
- md_processing/family_docs/Governance Officer/Create_Regulation_Definition.md +0 -118
- md_processing/family_docs/Governance Officer/Create_Security_Access_Control.md +0 -114
- md_processing/family_docs/Governance Officer/Create_Security_Group.md +0 -120
- md_processing/family_docs/Governance Officer/Create_Service_Level_Objectives.md +0 -122
- md_processing/family_docs/Governance Officer/Create_Threat_Definition.md +0 -106
- md_processing/family_docs/Governance Officer/Link_Governance_Controls.md +0 -32
- md_processing/family_docs/Governance Officer/Link_Governance_Drivers.md +0 -32
- md_processing/family_docs/Governance Officer/Link_Governance_Policies.md +0 -32
- md_processing/family_docs/Governance Officer/View_Governance_Definitions.md +0 -82
- md_processing/family_docs/Governance Officer.md +0 -2412
- md_processing/family_docs/Solution Architect/Create_Information_Supply_Chain.md +0 -70
- md_processing/family_docs/Solution Architect/Create_Solution_Blueprint.md +0 -44
- md_processing/family_docs/Solution Architect/Create_Solution_Component.md +0 -96
- md_processing/family_docs/Solution Architect/Create_Solution_Role.md +0 -66
- md_processing/family_docs/Solution Architect/Link_Information_Supply_Chain_Peers.md +0 -32
- md_processing/family_docs/Solution Architect/Link_Solution_Component_Peers.md +0 -32
- md_processing/family_docs/Solution Architect/View_Information_Supply_Chains.md +0 -32
- md_processing/family_docs/Solution Architect/View_Solution_Blueprints.md +0 -32
- md_processing/family_docs/Solution Architect/View_Solution_Components.md +0 -32
- md_processing/family_docs/Solution Architect/View_Solution_Roles.md +0 -32
- md_processing/family_docs/Solution Architect.md +0 -490
- md_processing/md_processing_utils/debug_log +0 -574
- md_processing/md_processing_utils/debug_log.log +0 -0
- md_processing/md_processing_utils/dr-egeria-help-2025-07-17T17:22:09.md +0 -2065
- md_processing/md_processing_utils/generated_help_terms.md +0 -842
- pyegeria/.DS_Store +0 -0
- pyegeria/README.md +0 -35
- pyegeria/_client_new.py +0 -1102
- pyegeria/_output_formats.py +0 -730
- pyegeria/asset_catalog_omvs.py +0 -864
- pyegeria/automated_curation_omvs.py +0 -3765
- pyegeria/config.py +0 -523
- pyegeria/egeria_my_client.py +0 -91
- pyegeria/feedback_manager_omvs.py +0 -4573
- pyegeria/load_config_orig.py +0 -218
- 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/project_manager.py +0 -1591
- pyegeria/registered_info.py +0 -167
- pyegeria/template_manager_omvs.py +0 -1414
- pyegeria/utils.py +0 -256
- pyegeria-5.4.0.28.dist-info/METADATA +0 -77
- pyegeria-5.4.0.28.dist-info/RECORD +0 -343
- pyegeria-5.4.0.28.dist-info/entry_points.txt +0 -105
- /commands/cat/debug_log.log → /pyegeria/deprecated/__init__.py +0 -0
- /pyegeria/{_exceptions.py → deprecated/_exceptions.py} +0 -0
- /pyegeria/{collection_models.py → models/collection_models.py} +0 -0
- {pyegeria-5.4.0.28.dist-info → pyegeria-5.5.3.3.dist-info/licenses}/LICENSE +0 -0
pyegeria/_output_formats.py
DELETED
|
@@ -1,730 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
Copyright Contributors to the ODPi Egeria project.
|
|
4
|
-
"""
|
|
5
|
-
|
|
6
|
-
"""
|
|
7
|
-
# Purpose
|
|
8
|
-
This file manages output format sets.
|
|
9
|
-
|
|
10
|
-
pyegeria allows find and get requests to generate output in different output formats -
|
|
11
|
-
including DICT, MD, FORM, REPORT, LIST, MERMAID, TABLE, and perhaps additional ones in the future.
|
|
12
|
-
|
|
13
|
-
It is important to be able to filter which attributes to
|
|
14
|
-
display, and the order in which they appear. However, many, if not most users will likely not want to customize
|
|
15
|
-
the column list and so we need a sensible set of defaults for each type of output. These defaults are used
|
|
16
|
-
by the find and get methods if the user doesn't provide a value for the columns parameter.
|
|
17
|
-
|
|
18
|
-
This file contains these defaults and functions to work with them. The output format sets are now implemented
|
|
19
|
-
using Pydantic models defined in `_output_format_models.py`, which provide several advantages:
|
|
20
|
-
- Type validation: The models ensure that the data has the correct types and structure.
|
|
21
|
-
- Composition: The models support composition of formats, allowing formats to be reused and combined.
|
|
22
|
-
- Documentation: The models provide clear documentation of the data structure.
|
|
23
|
-
- IDE support: The models provide better IDE support, including autocompletion and type hints.
|
|
24
|
-
|
|
25
|
-
The functions in this module are designed to be backward compatible with code that expects the old
|
|
26
|
-
dictionary-based format. They convert between Pydantic models and dictionaries as needed.
|
|
27
|
-
|
|
28
|
-
Example usage:
|
|
29
|
-
```python
|
|
30
|
-
# Get a format set by name and output type
|
|
31
|
-
format_set = select_output_format_set("Collections", "TABLE")
|
|
32
|
-
|
|
33
|
-
# Get a list of all available format sets
|
|
34
|
-
format_sets = output_format_set_list()
|
|
35
|
-
|
|
36
|
-
# Get the heading and description of a format set
|
|
37
|
-
heading = get_output_format_set_heading("Collections")
|
|
38
|
-
description = get_output_format_set_description("Collections")
|
|
39
|
-
|
|
40
|
-
# Match a format set with a specific output type
|
|
41
|
-
matched_format_set = get_output_format_type_match(format_set, "DICT")
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
For more advanced usage, you can work directly with the Pydantic models:
|
|
45
|
-
```python
|
|
46
|
-
from pyegeria._output_format_models import Column, Format, FormatSet
|
|
47
|
-
|
|
48
|
-
# Create a new format set
|
|
49
|
-
format_set = FormatSet(
|
|
50
|
-
heading="Example Format Set",
|
|
51
|
-
description="An example format set",
|
|
52
|
-
formats=[
|
|
53
|
-
Format(
|
|
54
|
-
types=["TABLE", "DICT"],
|
|
55
|
-
columns=[
|
|
56
|
-
Column(name="Display Name", key="display_name"),
|
|
57
|
-
Column(name="Description", key="description", format=True),
|
|
58
|
-
],
|
|
59
|
-
),
|
|
60
|
-
],
|
|
61
|
-
)
|
|
62
|
-
|
|
63
|
-
# Add the format set to the output_format_sets dictionary
|
|
64
|
-
output_format_sets["Example"] = format_set
|
|
65
|
-
```
|
|
66
|
-
"""
|
|
67
|
-
|
|
68
|
-
import os
|
|
69
|
-
from pathlib import Path
|
|
70
|
-
from typing import Dict, List, Optional, Union, Any
|
|
71
|
-
from loguru import logger
|
|
72
|
-
|
|
73
|
-
from pyegeria._output_format_models import (Column, Format, ActionParameter, FormatSet, FormatSetDict,
|
|
74
|
-
save_format_sets_to_json, load_format_sets_from_json)
|
|
75
|
-
from pyegeria.config import settings
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
# Get the configured value for the user format sets directory
|
|
79
|
-
|
|
80
|
-
USER_FORMAT_SETS_DIR = os.path.expanduser(settings.Environment.pyegeria_user_format_sets_dir)
|
|
81
|
-
|
|
82
|
-
# Constants
|
|
83
|
-
MD_SEPARATOR = "\n---\n\n"
|
|
84
|
-
|
|
85
|
-
# Define shared elements
|
|
86
|
-
COMMON_COLUMNS = [
|
|
87
|
-
Column(name='Display Name', key='display_name'),
|
|
88
|
-
Column(name='Qualified Name', key='qualified_name', format=True),
|
|
89
|
-
Column(name='Category', key='category'),
|
|
90
|
-
Column(name='Description', key='description', format=True),
|
|
91
|
-
]
|
|
92
|
-
|
|
93
|
-
COMMON_METADATA_COLUMNS = [
|
|
94
|
-
Column(name='GUID', key='guid', format=True),
|
|
95
|
-
Column(name='Type Name', key='type_name'),
|
|
96
|
-
Column(name='Metadata Collection ID', key='metadata_collection_id', format=True),
|
|
97
|
-
Column(name='Metadata Collection Name', key='metadata_collection_name', format=True),
|
|
98
|
-
]
|
|
99
|
-
|
|
100
|
-
COMMON_HEADER_COLUMNS = [
|
|
101
|
-
Column(name="Classifications", key='classifications'),
|
|
102
|
-
Column(name="Created By", key='created_by'),
|
|
103
|
-
Column(name="Create Time", key='create_time'),
|
|
104
|
-
Column(name="Updated By", key='updated_by'),
|
|
105
|
-
Column(name="Update Time", key='update_time'),
|
|
106
|
-
Column(name="Effective From", key='effective_from'),
|
|
107
|
-
Column(name="Effective To", key='effective_to'),
|
|
108
|
-
Column(name="Version", key='version'),
|
|
109
|
-
Column(name="Open Metadata Type Name", key='type_name'),
|
|
110
|
-
]
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
REFERNCEABLE_COLUMNS = COMMON_COLUMNS + [
|
|
114
|
-
Column(name='Version Identifier', key='version_identifier'),
|
|
115
|
-
Column(name='Additional Properties', key='additional_properties')
|
|
116
|
-
]
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
COMMON_FORMATS_ALL = Format(
|
|
120
|
-
types=["ALL"],
|
|
121
|
-
columns=COMMON_COLUMNS,
|
|
122
|
-
)
|
|
123
|
-
|
|
124
|
-
PROJECT_COLUMNS = COMMON_COLUMNS + [
|
|
125
|
-
Column(name="Classifications", key='classifications'),
|
|
126
|
-
Column(name='Priority', key='priority'),
|
|
127
|
-
Column(name='Project Status', key='project_status'),
|
|
128
|
-
Column(name='Element Status', key='status'),
|
|
129
|
-
Column(name='Start Date', key='start_date'),
|
|
130
|
-
Column(name='Assigned Actors', key='assigned_actors'),
|
|
131
|
-
Column(name='Resources', key='resource_list'),
|
|
132
|
-
|
|
133
|
-
]
|
|
134
|
-
COLLECTIONS_COLUMNS = COMMON_COLUMNS + [
|
|
135
|
-
Column(name='Type Name', key='type_name'),
|
|
136
|
-
Column(name='Classifications', key='classifications'),
|
|
137
|
-
Column(name="Created By", key='created_by'),
|
|
138
|
-
Column(name="Create Time", key='create_time'),
|
|
139
|
-
Column(name="Updated By", key='updated_by'),
|
|
140
|
-
Column(name="Update Time", key='update_time'),
|
|
141
|
-
]
|
|
142
|
-
|
|
143
|
-
COLLECTIONS_MEMBERS_COLUMNS = COLLECTIONS_COLUMNS + [
|
|
144
|
-
Column(name="Containing Members", key='collection_members'),
|
|
145
|
-
Column(name="Member Of", key='member_of_collections')
|
|
146
|
-
]
|
|
147
|
-
|
|
148
|
-
COLLECTION_DICT = Format(
|
|
149
|
-
types=["DICT"],
|
|
150
|
-
columns=COLLECTIONS_MEMBERS_COLUMNS + [
|
|
151
|
-
Column(name="GUID", key='GUID'),
|
|
152
|
-
],
|
|
153
|
-
)
|
|
154
|
-
|
|
155
|
-
BASIC_COLLECTIONS_COLUMNS = [
|
|
156
|
-
Column(name='Qualified Name', key='qualified_name', format=True),
|
|
157
|
-
Column(name='GUID', key='guid', format=True),
|
|
158
|
-
Column(name='Type Name', key='type_name'),
|
|
159
|
-
Column(name="Containing Members", key='collection_members'),
|
|
160
|
-
Column(name="Member Of", key='member_of_collections')
|
|
161
|
-
]
|
|
162
|
-
|
|
163
|
-
COLLECTION_REPORT = Format(
|
|
164
|
-
types=["REPORT"],
|
|
165
|
-
columns=COLLECTIONS_MEMBERS_COLUMNS + [
|
|
166
|
-
Column(name="GUID", key='GUID'),
|
|
167
|
-
Column(name="Mermaid", key='mermaid'),
|
|
168
|
-
],
|
|
169
|
-
)
|
|
170
|
-
|
|
171
|
-
COLLECTION_TABLE = Format(
|
|
172
|
-
types=["TABLE"],
|
|
173
|
-
columns=COLLECTIONS_MEMBERS_COLUMNS,
|
|
174
|
-
)
|
|
175
|
-
|
|
176
|
-
GOVERNANCE_DEFINITIONS_COLUMNS = COMMON_COLUMNS + [
|
|
177
|
-
Column(name="Summary", key='summary'),
|
|
178
|
-
Column(name="Usage", key='usage'),
|
|
179
|
-
Column(name="Importance", key='importance'),
|
|
180
|
-
Column(name="Scope", key='scope'),
|
|
181
|
-
Column(name="Type", key='type_name'),
|
|
182
|
-
]
|
|
183
|
-
GOVERNANCE_DEFINITIONS_BASIC = [
|
|
184
|
-
Column(name="Type", key='type_name'),
|
|
185
|
-
Column(name='Qualified Name', key='qualified_name', format=True),
|
|
186
|
-
Column(name="GUID", key='guid', format=True),
|
|
187
|
-
]
|
|
188
|
-
COMMON_ANNOTATIONS = {
|
|
189
|
-
"wikilinks": ["[[Commons]]"]
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
# Modularized output_format_sets
|
|
193
|
-
output_format_sets = FormatSetDict({
|
|
194
|
-
"Default": FormatSet(
|
|
195
|
-
heading="Default Base Attributes",
|
|
196
|
-
description="Was a valid combination of output_format_set and output_format provided?",
|
|
197
|
-
annotations={}, # No specific annotations
|
|
198
|
-
formats=[
|
|
199
|
-
Format(
|
|
200
|
-
types=["ALL"],
|
|
201
|
-
columns=COMMON_COLUMNS + COMMON_METADATA_COLUMNS + [
|
|
202
|
-
Column(name='Version Identifier', key='version_identifier'),
|
|
203
|
-
Column(name="Classifications", key='classifications'),
|
|
204
|
-
Column(name="Additional Properties", key='additional_properties'),
|
|
205
|
-
Column(name="Created By", key='created_by'),
|
|
206
|
-
Column(name="Create Time", key='create_time'),
|
|
207
|
-
Column(name="Updated By", key='updated_by'),
|
|
208
|
-
Column(name="Update Time", key='update_time'),
|
|
209
|
-
Column(name="Effective From", key='effective_from'),
|
|
210
|
-
Column(name="Effective To", key='effective_to'),
|
|
211
|
-
Column(name="Version", key='version'),
|
|
212
|
-
Column(name="Open Metadata Type Name", key='type_name'),
|
|
213
|
-
],
|
|
214
|
-
)
|
|
215
|
-
],
|
|
216
|
-
),
|
|
217
|
-
"Referenceable": FormatSet(
|
|
218
|
-
heading="Common Attributes",
|
|
219
|
-
description="Attributes that apply to all Referenceables.",
|
|
220
|
-
annotations={}, # No specific annotations
|
|
221
|
-
formats=[
|
|
222
|
-
Format(
|
|
223
|
-
types=["ALL"],
|
|
224
|
-
columns=COMMON_COLUMNS + COMMON_METADATA_COLUMNS + [
|
|
225
|
-
Column(name='Version Identifier', key='version_identifier'),
|
|
226
|
-
Column(name="Classifications", key='classifications'),
|
|
227
|
-
Column(name="Additional Properties", key='additional_properties'),
|
|
228
|
-
Column(name="Created By", key='created_by'),
|
|
229
|
-
Column(name="Create Time", key='create_time'),
|
|
230
|
-
Column(name="Updated By", key='updated_by'),
|
|
231
|
-
Column(name="Update Time", key='update_time'),
|
|
232
|
-
Column(name="Effective From", key='effective_from'),
|
|
233
|
-
Column(name="Effective To", key='effective_to'),
|
|
234
|
-
Column(name="Version", key='version'),
|
|
235
|
-
Column(name="Open Metadata Type Name", key='type_name'),
|
|
236
|
-
],
|
|
237
|
-
)
|
|
238
|
-
],
|
|
239
|
-
),
|
|
240
|
-
"Project": FormatSet(
|
|
241
|
-
heading="Project Attributes",
|
|
242
|
-
description="Attributes that apply to all Projects.",
|
|
243
|
-
annotations={},
|
|
244
|
-
formats=[
|
|
245
|
-
Format(
|
|
246
|
-
types=["ALL"],
|
|
247
|
-
columns=PROJECT_COLUMNS
|
|
248
|
-
)
|
|
249
|
-
]
|
|
250
|
-
),
|
|
251
|
-
"Basic-Terms": FormatSet(
|
|
252
|
-
heading="Basic Glossary Term Attributes",
|
|
253
|
-
description="Attributes that apply to all Basic Glossary Terms.",
|
|
254
|
-
annotations={},
|
|
255
|
-
formats=[
|
|
256
|
-
Format(
|
|
257
|
-
types=["ALL"],
|
|
258
|
-
columns=COMMON_COLUMNS + COMMON_METADATA_COLUMNS + [
|
|
259
|
-
Column(name='Version Identifier', key='version_identifier'),
|
|
260
|
-
Column(name="Summary", key='summary'),
|
|
261
|
-
Column(name="Additional Properties", key='additional_properties'),
|
|
262
|
-
Column(name="Example", key='example'),
|
|
263
|
-
Column(name="Usage", key='usage'),
|
|
264
|
-
Column(name="Updated By", key='updated_by'),
|
|
265
|
-
Column(name="Update Time", key='update_time'),
|
|
266
|
-
Column(name="Effective From", key='effective_from'),
|
|
267
|
-
Column(name="Effective To", key='effective_to'),
|
|
268
|
-
Column(name="GUID", key='guid'),
|
|
269
|
-
Column(name="Open Metadata Type Name", key='type_name'),
|
|
270
|
-
Column(name="Glossary", key='parent_glossary'),
|
|
271
|
-
Column(name="Subject Aream", key='subject_area'),
|
|
272
|
-
],
|
|
273
|
-
)
|
|
274
|
-
]
|
|
275
|
-
),
|
|
276
|
-
|
|
277
|
-
"Collections": FormatSet(
|
|
278
|
-
heading="Common Collection Information",
|
|
279
|
-
description="Attributes generic to all Collections.",
|
|
280
|
-
aliases=["Collection", "RootCollection", "Folder", "ReferenceList", "HomeCollection",
|
|
281
|
-
"ResultSet", "RecentAccess", "WorkItemList", "Namespace"],
|
|
282
|
-
annotations=COMMON_ANNOTATIONS,
|
|
283
|
-
formats=[COLLECTION_DICT, COLLECTION_TABLE, COLLECTION_REPORT, COMMON_FORMATS_ALL], # Reusing common formats
|
|
284
|
-
action=ActionParameter(
|
|
285
|
-
function="CollectionManager.find_collections",
|
|
286
|
-
user_params=["search_string"],
|
|
287
|
-
spec_params={},
|
|
288
|
-
)
|
|
289
|
-
),
|
|
290
|
-
"BasicCollections": FormatSet(
|
|
291
|
-
heading="Common Collection Information",
|
|
292
|
-
description="Attributes generic to all Collections.",
|
|
293
|
-
aliases=[],
|
|
294
|
-
annotations=COMMON_ANNOTATIONS,
|
|
295
|
-
formats=[Format(
|
|
296
|
-
types=["ALL"],
|
|
297
|
-
columns=BASIC_COLLECTIONS_COLUMNS,
|
|
298
|
-
)], # Reusing common formats
|
|
299
|
-
action=ActionParameter(
|
|
300
|
-
function="CollectionManager.find_collections",
|
|
301
|
-
user_params=["search_string"],
|
|
302
|
-
spec_params={},
|
|
303
|
-
)
|
|
304
|
-
),
|
|
305
|
-
|
|
306
|
-
"CollectionMembers": FormatSet(
|
|
307
|
-
heading="Collection Membership Information",
|
|
308
|
-
description="Attributes about all CollectionMembers.",
|
|
309
|
-
aliases=["CollectionMember", "Member", "Members"],
|
|
310
|
-
annotations= {"wikilinks": ["[[CollectionMembers]]"]},
|
|
311
|
-
formats = [COLLECTION_DICT, COLLECTION_TABLE],
|
|
312
|
-
action=ActionParameter(
|
|
313
|
-
function="CollectionManager.get_collection_members",
|
|
314
|
-
user_params=["collection_guid"],
|
|
315
|
-
spec_params={"output_format": "DICT"},
|
|
316
|
-
)
|
|
317
|
-
),
|
|
318
|
-
"DigitalProducts": FormatSet(
|
|
319
|
-
heading="Digital Product Information",
|
|
320
|
-
description="Attributes useful to Digital Products.",
|
|
321
|
-
aliases=["DigitalProduct", "DataProducts"],
|
|
322
|
-
annotations={},
|
|
323
|
-
formats=[
|
|
324
|
-
Format(
|
|
325
|
-
types=["REPORT", "DICT", "TABLE"],
|
|
326
|
-
columns=COMMON_COLUMNS + [
|
|
327
|
-
Column(name="Status", key='status'),
|
|
328
|
-
Column(name='Product Name', key='product_name'),
|
|
329
|
-
Column(name='Identifier', key='identifier'),
|
|
330
|
-
Column(name='Maturity', key='maturity'),
|
|
331
|
-
Column(name='Service Life', key='service_life'),
|
|
332
|
-
Column(name='Next Version', key='next_version'),
|
|
333
|
-
Column(name='Withdraw Date', key='withdraw_date'),
|
|
334
|
-
Column(name='Members', key='members', format=True),
|
|
335
|
-
Column(name='Uses Products', key='uses_digital_products'),
|
|
336
|
-
Column(name='Used by Products', key='used_by_digital_products'),
|
|
337
|
-
],
|
|
338
|
-
)
|
|
339
|
-
],
|
|
340
|
-
action=ActionParameter(
|
|
341
|
-
function="CollectionManager.find_collections",
|
|
342
|
-
user_params=["search_string"],
|
|
343
|
-
spec_params={},
|
|
344
|
-
),
|
|
345
|
-
get_additional_props=ActionParameter(
|
|
346
|
-
function="CollectionManager._extract_digital_product_properties",
|
|
347
|
-
user_params = [],
|
|
348
|
-
spec_params={},
|
|
349
|
-
)
|
|
350
|
-
),
|
|
351
|
-
|
|
352
|
-
"Agreements": FormatSet(
|
|
353
|
-
heading="General Agreement Information",
|
|
354
|
-
description="Attributes generic to all Agreements.",
|
|
355
|
-
aliases=["DataSharingAgreement", "Agreement"],
|
|
356
|
-
annotations={"wikilinks": ["[[Agreements]]", "[[Egeria]]"]},
|
|
357
|
-
formats=[
|
|
358
|
-
Format(
|
|
359
|
-
types=["REPORT", "DICT", "TABLE"],
|
|
360
|
-
columns=COMMON_COLUMNS + COMMON_HEADER_COLUMNS + [
|
|
361
|
-
Column(name='Identifier', key='identifier'),
|
|
362
|
-
Column(name='Support Level', key='support_level'),
|
|
363
|
-
Column(name='service Levels', key='service_levels'),
|
|
364
|
-
Column(name='Agreement Items', key='agreement_items', format=True),
|
|
365
|
-
Column(name='Members', key='members', format=True),
|
|
366
|
-
]
|
|
367
|
-
)
|
|
368
|
-
],
|
|
369
|
-
action=ActionParameter(
|
|
370
|
-
function="CollectionManager.find_collections",
|
|
371
|
-
user_params=["search_string"],
|
|
372
|
-
spec_params={"metadata_element_types": ["Agreement"]},
|
|
373
|
-
# spec_params={},
|
|
374
|
-
),
|
|
375
|
-
get_additional_props=ActionParameter(
|
|
376
|
-
function="CollectionManager._extract_agreement_properties",
|
|
377
|
-
user_params=[],
|
|
378
|
-
spec_params={},
|
|
379
|
-
),
|
|
380
|
-
),
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
"DataDictionary": FormatSet(
|
|
384
|
-
heading="Data Dictionary Information",
|
|
385
|
-
description="Attributes useful to Data Dictionary.",
|
|
386
|
-
aliases=["Data Dict", "Data Dictionary"],
|
|
387
|
-
annotations={"wikilinks": ["[[Data Dictionary]]"]},
|
|
388
|
-
formats=[COMMON_FORMATS_ALL], # Reusing common formats and columns
|
|
389
|
-
action=ActionParameter(
|
|
390
|
-
function="CollectionManager.find_collections",
|
|
391
|
-
user_params=["search_string"],
|
|
392
|
-
spec_params={"initial_classifications": "DataDictionary"},
|
|
393
|
-
)
|
|
394
|
-
),
|
|
395
|
-
|
|
396
|
-
"Data Specification": FormatSet(
|
|
397
|
-
heading="Data Specification Information",
|
|
398
|
-
description="Attributes useful to Data Specification.",
|
|
399
|
-
aliases=["Data Spec", "DataSpec", "DataSpecification"],
|
|
400
|
-
annotations={"wikilinks": ["[[Data Specification]]"]},
|
|
401
|
-
formats=[
|
|
402
|
-
Format(types=["REPORT", "HTML"],columns=COMMON_COLUMNS + [Column(name="Mermaid", key='mermaid'),]),
|
|
403
|
-
Format(types=["MERMAID"], columns=[
|
|
404
|
-
Column(name="Display Name", key='display_name'),
|
|
405
|
-
Column(name="Mermaid", key='mermaid'),
|
|
406
|
-
]),
|
|
407
|
-
Format(types=["ALL"], columns=COMMON_COLUMNS)], # Reusing common formats and columns
|
|
408
|
-
action=ActionParameter(
|
|
409
|
-
function="CollectionManager.find_collections",
|
|
410
|
-
user_params=["search_string"],
|
|
411
|
-
spec_params={"initial_classifications": "DataSpec"},
|
|
412
|
-
)
|
|
413
|
-
),
|
|
414
|
-
|
|
415
|
-
"DataStruct": FormatSet(
|
|
416
|
-
heading="Data Structure Information",
|
|
417
|
-
description="Attributes useful to Data Structures.",
|
|
418
|
-
aliases=["Data Structure", "DataStructures", "Data Structures", "Data Struct", "DataStructure"],
|
|
419
|
-
annotations={"wikilinks": ["[[Data Structure]]"]},
|
|
420
|
-
formats=[Format(types=["ALL"], columns=COMMON_COLUMNS)], # Reusing common formats and columns
|
|
421
|
-
action=ActionParameter(
|
|
422
|
-
function="DataDesigner.find_data_structures",
|
|
423
|
-
user_params=["search_string"],
|
|
424
|
-
spec_params={},
|
|
425
|
-
)
|
|
426
|
-
),
|
|
427
|
-
|
|
428
|
-
"DataField": FormatSet(
|
|
429
|
-
heading="Data Structure Information",
|
|
430
|
-
description="Attributes useful to Data Structures.",
|
|
431
|
-
aliases=["Data Field", "Data Fields", "DataFields"],
|
|
432
|
-
annotations={"wikilinks": ["[[Data Field]]"]},
|
|
433
|
-
formats=[Format(types=["ALL"], columns=COMMON_COLUMNS)], # Reusing common formats and columns
|
|
434
|
-
action=ActionParameter(
|
|
435
|
-
function="DataDesigner.find_data_fields",
|
|
436
|
-
user_params=["search_string"],
|
|
437
|
-
spec_params={},
|
|
438
|
-
)
|
|
439
|
-
),
|
|
440
|
-
|
|
441
|
-
"Mandy-DataStruct": FormatSet(
|
|
442
|
-
heading="Puddy Approves",
|
|
443
|
-
description="This is a tutorial on how to use a data struct description",
|
|
444
|
-
aliases=[],
|
|
445
|
-
annotations={"wikilinks": ["[[Data Structure]]"]},
|
|
446
|
-
formats=[
|
|
447
|
-
Format(types=["TABLE"], columns=COMMON_COLUMNS + [Column(name='GUID', key='GUID')]),
|
|
448
|
-
Format(types=[ "DICT","LIST", ], columns=COMMON_COLUMNS + [Column(name='GUID', key='GUID')]),
|
|
449
|
-
Format(types=["REPORT","MERMAID", "HTML"], columns=[Column(name='Display Name', key='display_name'),
|
|
450
|
-
Column(name='Mermaid', key='mermaid'),]),
|
|
451
|
-
],
|
|
452
|
-
action=ActionParameter(
|
|
453
|
-
function="DataDesigner.find_data_structures",
|
|
454
|
-
user_params=["search_string"],
|
|
455
|
-
spec_params={"output_format":"DICT"},
|
|
456
|
-
)
|
|
457
|
-
),
|
|
458
|
-
"Governance Basics": FormatSet(
|
|
459
|
-
heading="Basic Governance-Definitions Information",
|
|
460
|
-
description="Core Attributes useful to Governance-Definitions.",
|
|
461
|
-
aliases=["BasicGovernance"],
|
|
462
|
-
annotations={"wikilinks": ["[[Governance]]"]},
|
|
463
|
-
formats=[Format(types=["ALL"], columns=GOVERNANCE_DEFINITIONS_BASIC)],
|
|
464
|
-
action=ActionParameter(
|
|
465
|
-
function="GovernanceOfficer.find_governance_definitions",
|
|
466
|
-
user_params=["search_string"],
|
|
467
|
-
spec_params={},
|
|
468
|
-
)
|
|
469
|
-
),
|
|
470
|
-
"Governance Definitions": FormatSet(
|
|
471
|
-
heading="Governance-Definitions Information",
|
|
472
|
-
description="Attributes useful to Governance-Definitions.",
|
|
473
|
-
aliases=["GovernanceDefinitions"],
|
|
474
|
-
annotations={"wikilinks": ["[[Governance]]"]},
|
|
475
|
-
formats=[Format(types=["ALL"], columns=GOVERNANCE_DEFINITIONS_COLUMNS)],
|
|
476
|
-
action=ActionParameter(
|
|
477
|
-
function="GovernanceOfficer.find_governance_definitions",
|
|
478
|
-
user_params=["search_string"],
|
|
479
|
-
spec_params={},
|
|
480
|
-
)
|
|
481
|
-
),
|
|
482
|
-
})
|
|
483
|
-
|
|
484
|
-
def select_output_format_set(kind: str, output_type: str) -> dict | None:
|
|
485
|
-
"""
|
|
486
|
-
This function retrieves the appropriate output set configuration dictionary based on the `kind` and `output_type`.
|
|
487
|
-
If output_type = `ANY` that indicates this is just a test to see of the output format set exists.
|
|
488
|
-
|
|
489
|
-
:param kind: The kind of output set (e.g., "Referenceable", "Collections").
|
|
490
|
-
:param output_type: The desired output format type (e.g., "DICT", "LIST", "REPORT").
|
|
491
|
-
:return: The matched output set dictionary or None if no match is found.
|
|
492
|
-
|
|
493
|
-
Returns:
|
|
494
|
-
dict | None:
|
|
495
|
-
"""
|
|
496
|
-
# Normalize the output type to uppercase for consistency
|
|
497
|
-
output_type = output_type.upper()
|
|
498
|
-
output_struct: dict = {}
|
|
499
|
-
|
|
500
|
-
# Step 1: Check if `kind` exists in the `output_format_sets` dictionary
|
|
501
|
-
element = output_format_sets.get(kind)
|
|
502
|
-
|
|
503
|
-
# Step 2: If not found, attempt to match `kind` in aliases
|
|
504
|
-
if element is None:
|
|
505
|
-
for key, value in output_format_sets.items():
|
|
506
|
-
aliases = value.aliases
|
|
507
|
-
if kind in aliases:
|
|
508
|
-
element = value
|
|
509
|
-
break
|
|
510
|
-
|
|
511
|
-
# Step 3: If still not found, return None
|
|
512
|
-
if element is None:
|
|
513
|
-
msg = f"No matching column set found for kind='{kind}' and output type='{output_type}'."
|
|
514
|
-
logger.error(msg)
|
|
515
|
-
return None
|
|
516
|
-
else:
|
|
517
|
-
# Convert FormatSet to dictionary for backward compatibility
|
|
518
|
-
output_struct["aliases"] = element.aliases
|
|
519
|
-
output_struct["heading"] = element.heading
|
|
520
|
-
output_struct["description"] = element.description
|
|
521
|
-
output_struct["annotations"] = element.annotations
|
|
522
|
-
if element.action:
|
|
523
|
-
# Convert ActionParameter to dictionary for backward compatibility
|
|
524
|
-
output_struct["action"] = element.action.dict()
|
|
525
|
-
if element.get_additional_props:
|
|
526
|
-
output_struct["get_additional_props"] = element.get_additional_props.dict()
|
|
527
|
-
|
|
528
|
-
# If this was just a validation that the format set could be found then the output type is ANY - so just return.
|
|
529
|
-
if output_type == "ANY":
|
|
530
|
-
return output_struct
|
|
531
|
-
|
|
532
|
-
# Step 4: Search for a matching format in the `formats` list
|
|
533
|
-
for format in element.formats:
|
|
534
|
-
if output_type in format.types:
|
|
535
|
-
# Convert Format to dictionary for backward compatibility
|
|
536
|
-
output_struct["formats"] = format.dict()
|
|
537
|
-
return output_struct
|
|
538
|
-
|
|
539
|
-
# Step 5: Handle the fallback case of "ALL"
|
|
540
|
-
for format in element.formats:
|
|
541
|
-
if "ALL" in format.types:
|
|
542
|
-
# Convert Format to dictionary for backward compatibility
|
|
543
|
-
output_struct["formats"] = format.dict()
|
|
544
|
-
return output_struct
|
|
545
|
-
|
|
546
|
-
# Step 6: If no match is found, return None
|
|
547
|
-
logger.error(f"No matching format found for kind='{kind}' with output type='{output_type}'.")
|
|
548
|
-
return None
|
|
549
|
-
|
|
550
|
-
def output_format_set_list() -> list[str]:
|
|
551
|
-
"""
|
|
552
|
-
Returns a list of all available format set names.
|
|
553
|
-
|
|
554
|
-
Returns:
|
|
555
|
-
list[str]: A list of format set names
|
|
556
|
-
"""
|
|
557
|
-
return list(output_format_sets.keys())
|
|
558
|
-
|
|
559
|
-
def get_output_format_set_heading(format_set: str) -> str:
|
|
560
|
-
"""
|
|
561
|
-
Gets the heading of a format set.
|
|
562
|
-
|
|
563
|
-
Args:
|
|
564
|
-
format_set: The name of the format set
|
|
565
|
-
|
|
566
|
-
Returns:
|
|
567
|
-
str: The heading of the format set
|
|
568
|
-
"""
|
|
569
|
-
return output_format_sets[format_set].heading
|
|
570
|
-
|
|
571
|
-
def get_output_format_set_description(format_set: str) -> str:
|
|
572
|
-
"""
|
|
573
|
-
Gets the description of a format set.
|
|
574
|
-
|
|
575
|
-
Args:
|
|
576
|
-
format_set: The name of the format set
|
|
577
|
-
|
|
578
|
-
Returns:
|
|
579
|
-
str: The description of the format set
|
|
580
|
-
"""
|
|
581
|
-
return output_format_sets[format_set].description
|
|
582
|
-
|
|
583
|
-
def get_output_format_type_match(format_set: Union[dict, FormatSet], output_format: str) -> dict:
|
|
584
|
-
"""
|
|
585
|
-
Matches a format set with a specific output format.
|
|
586
|
-
|
|
587
|
-
Args:
|
|
588
|
-
format_set: The format set to match, either a FormatSet instance or a dictionary
|
|
589
|
-
output_format: The output format to match
|
|
590
|
-
|
|
591
|
-
Returns:
|
|
592
|
-
dict: The format set with the matching format
|
|
593
|
-
"""
|
|
594
|
-
# Convert FormatSet to dictionary if needed
|
|
595
|
-
if isinstance(format_set, FormatSet):
|
|
596
|
-
format_set_dict = format_set.dict()
|
|
597
|
-
else:
|
|
598
|
-
format_set_dict = format_set
|
|
599
|
-
|
|
600
|
-
# Handle the case where format_set is a list (legacy code)
|
|
601
|
-
if isinstance(format_set_dict, list):
|
|
602
|
-
for format in format_set_dict.get("formats", []):
|
|
603
|
-
if output_format in format.get("types", []):
|
|
604
|
-
format_set_dict["formats"] = format
|
|
605
|
-
return format_set_dict
|
|
606
|
-
|
|
607
|
-
# Handle the fallback case of "ALL"
|
|
608
|
-
for format in format_set_dict.get("formats", []):
|
|
609
|
-
if "ALL" in format.get("types", []):
|
|
610
|
-
format_set_dict["formats"] = format
|
|
611
|
-
return format_set_dict
|
|
612
|
-
else:
|
|
613
|
-
# Handle the case where format_set is a dictionary
|
|
614
|
-
if "formats" in format_set_dict:
|
|
615
|
-
formats = format_set_dict["formats"]
|
|
616
|
-
if isinstance(formats, list):
|
|
617
|
-
for format in formats:
|
|
618
|
-
if output_format in format.get("types", []):
|
|
619
|
-
format_set_dict["formats"] = format
|
|
620
|
-
return format_set_dict
|
|
621
|
-
|
|
622
|
-
# Handle the fallback case of "ALL"
|
|
623
|
-
for format in formats:
|
|
624
|
-
if "ALL" in format.get("types", []):
|
|
625
|
-
format_set_dict["formats"] = format
|
|
626
|
-
return format_set_dict
|
|
627
|
-
else:
|
|
628
|
-
# Handle the case where format_set is a dictionary from select_output_format_set with the "ANY" output type
|
|
629
|
-
# In this case, we need to look up the format set by name and get the formats
|
|
630
|
-
if "heading" in format_set_dict and "description" in format_set_dict:
|
|
631
|
-
# Try to find the format set by heading
|
|
632
|
-
for key, value in output_format_sets.items():
|
|
633
|
-
if value.heading == format_set_dict["heading"] and value.description == format_set_dict["description"]:
|
|
634
|
-
# Found the format set, now find the matching format
|
|
635
|
-
for format in value.formats:
|
|
636
|
-
if output_format in format.types:
|
|
637
|
-
format_set_dict["formats"] = format.dict()
|
|
638
|
-
return format_set_dict
|
|
639
|
-
|
|
640
|
-
# Handle the fallback case of "ALL"
|
|
641
|
-
for format in value.formats:
|
|
642
|
-
if "ALL" in format.types:
|
|
643
|
-
format_set_dict["formats"] = format.dict()
|
|
644
|
-
return format_set_dict
|
|
645
|
-
|
|
646
|
-
# If no match is found, return the original format set
|
|
647
|
-
return format_set_dict
|
|
648
|
-
|
|
649
|
-
def save_output_format_sets(file_path: str, format_set_names: List[str] = None) -> None:
|
|
650
|
-
"""
|
|
651
|
-
Save output format sets to a JSON file.
|
|
652
|
-
|
|
653
|
-
This function allows saving all format sets or a subset of format sets to a JSON file.
|
|
654
|
-
The saved format sets can later be loaded using the `load_output_format_sets` function.
|
|
655
|
-
|
|
656
|
-
Args:
|
|
657
|
-
file_path: The path to save the file to
|
|
658
|
-
format_set_names: Optional list of format set names to save. If None, all format sets are saved.
|
|
659
|
-
"""
|
|
660
|
-
if format_set_names is None:
|
|
661
|
-
# Save all format sets
|
|
662
|
-
output_format_sets.save_to_json(file_path)
|
|
663
|
-
logger.info(f"All format sets saved to {file_path}")
|
|
664
|
-
else:
|
|
665
|
-
# Save only specified format sets
|
|
666
|
-
subset = FormatSetDict()
|
|
667
|
-
for name in format_set_names:
|
|
668
|
-
format_set = output_format_sets.get(name)
|
|
669
|
-
if format_set:
|
|
670
|
-
subset[name] = format_set
|
|
671
|
-
else:
|
|
672
|
-
logger.warning(f"Format set '{name}' not found, skipping")
|
|
673
|
-
|
|
674
|
-
if subset:
|
|
675
|
-
subset.save_to_json(file_path)
|
|
676
|
-
logger.info(f"Selected format sets saved to {file_path}")
|
|
677
|
-
else:
|
|
678
|
-
logger.warning(f"No valid format sets to save, file not created")
|
|
679
|
-
|
|
680
|
-
def load_output_format_sets(file_path: str, merge: bool = True) -> None:
|
|
681
|
-
"""
|
|
682
|
-
Load output format sets from a JSON file.
|
|
683
|
-
|
|
684
|
-
This function loads format sets from a JSON file and either merges them with the existing
|
|
685
|
-
format sets or replaces the existing format sets.
|
|
686
|
-
|
|
687
|
-
Args:
|
|
688
|
-
file_path: The path to load the file from
|
|
689
|
-
merge: If True, merge with existing format sets. If False, replace existing format sets.
|
|
690
|
-
"""
|
|
691
|
-
global output_format_sets
|
|
692
|
-
try:
|
|
693
|
-
loaded_sets = FormatSetDict.load_from_json(file_path)
|
|
694
|
-
|
|
695
|
-
if merge:
|
|
696
|
-
# Merge with existing format sets
|
|
697
|
-
for key, value in loaded_sets.items():
|
|
698
|
-
output_format_sets[key] = value
|
|
699
|
-
logger.info(f"Format sets from {file_path} merged with existing format sets")
|
|
700
|
-
else:
|
|
701
|
-
# Replace existing format sets
|
|
702
|
-
output_format_sets = loaded_sets
|
|
703
|
-
logger.info(f"Existing format sets replaced with format sets from {file_path}")
|
|
704
|
-
except Exception as e:
|
|
705
|
-
logger.error(f"Error loading format sets from {file_path}: {e}")
|
|
706
|
-
raise
|
|
707
|
-
|
|
708
|
-
def load_user_format_sets() -> None:
|
|
709
|
-
"""
|
|
710
|
-
Load all user-defined format sets from the user format sets directory.
|
|
711
|
-
|
|
712
|
-
This function loads all JSON files in the user format sets directory and merges
|
|
713
|
-
the format sets with the existing format sets.
|
|
714
|
-
"""
|
|
715
|
-
if not os.path.exists(USER_FORMAT_SETS_DIR):
|
|
716
|
-
logger.debug(f"User format sets directory {USER_FORMAT_SETS_DIR} does not exist")
|
|
717
|
-
return
|
|
718
|
-
|
|
719
|
-
# Load all JSON files in the directory
|
|
720
|
-
for file_path in Path(USER_FORMAT_SETS_DIR).glob("*.json"):
|
|
721
|
-
try:
|
|
722
|
-
load_output_format_sets(str(file_path), merge=True)
|
|
723
|
-
except Exception as e:
|
|
724
|
-
logger.error(f"Error loading format sets from {file_path}: {e}")
|
|
725
|
-
|
|
726
|
-
# Load user-defined format sets at module initialization
|
|
727
|
-
try:
|
|
728
|
-
load_user_format_sets()
|
|
729
|
-
except Exception as e:
|
|
730
|
-
logger.error(f"Error loading user-defined format sets: {e}")
|