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
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"""
|
|
2
|
+
PDX-License-Identifier: Apache-2.0
|
|
3
|
+
Copyright Contributors to the ODPi Egeria project.
|
|
4
|
+
|
|
5
|
+
This module contains the Valid Metadata Lists View Service client.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from pyegeria.omvs.valid_metadata import ValidMetadataManager
|
|
9
|
+
from typing import Any, Optional
|
|
10
|
+
|
|
11
|
+
class ValidMetadataLists(ValidMetadataManager):
|
|
12
|
+
"""
|
|
13
|
+
Client for the Valid Metadata Lists View Service.
|
|
14
|
+
This is a specialized version of the Valid Metadata Manager focusing on metadata lists.
|
|
15
|
+
|
|
16
|
+
Attributes
|
|
17
|
+
----------
|
|
18
|
+
view_server : str
|
|
19
|
+
The name of the View Server to use.
|
|
20
|
+
platform_url : str
|
|
21
|
+
URL of the server platform to connect to.
|
|
22
|
+
user_id : str
|
|
23
|
+
The identity of the user calling the method.
|
|
24
|
+
user_pwd : str
|
|
25
|
+
The password associated with the user_id. Defaults to None.
|
|
26
|
+
"""
|
|
27
|
+
|
|
28
|
+
def __init__(
|
|
29
|
+
self,
|
|
30
|
+
view_server: str,
|
|
31
|
+
platform_url: str,
|
|
32
|
+
user_id: str,
|
|
33
|
+
user_pwd: Optional[str] = None,
|
|
34
|
+
token: Optional[str] = None,
|
|
35
|
+
):
|
|
36
|
+
super().__init__(view_server, platform_url, user_id, user_pwd, token)
|
|
37
|
+
self.url_marker = "valid-metadata"
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"""
|
|
2
|
+
PDX-License-Identifier: Apache-2.0
|
|
3
|
+
Copyright Contributors to the ODPi Egeria project.
|
|
4
|
+
|
|
5
|
+
This module contains the Valid Type Lists View Service client.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from pyegeria.omvs.valid_metadata import ValidMetadataManager
|
|
9
|
+
from typing import Any, Optional
|
|
10
|
+
|
|
11
|
+
class ValidTypeLists(ValidMetadataManager):
|
|
12
|
+
"""
|
|
13
|
+
Client for the Valid Type Lists View Service.
|
|
14
|
+
This is a specialized version of the Valid Metadata Manager focusing on type lists.
|
|
15
|
+
|
|
16
|
+
Attributes
|
|
17
|
+
----------
|
|
18
|
+
view_server : str
|
|
19
|
+
The name of the View Server to use.
|
|
20
|
+
platform_url : str
|
|
21
|
+
URL of the server platform to connect to.
|
|
22
|
+
user_id : str
|
|
23
|
+
The identity of the user calling the method.
|
|
24
|
+
user_pwd : str
|
|
25
|
+
The password associated with the user_id. Defaults to None.
|
|
26
|
+
"""
|
|
27
|
+
|
|
28
|
+
def __init__(
|
|
29
|
+
self,
|
|
30
|
+
view_server: str,
|
|
31
|
+
platform_url: str,
|
|
32
|
+
user_id: str,
|
|
33
|
+
user_pwd: Optional[str] = None,
|
|
34
|
+
token: Optional[str] = None,
|
|
35
|
+
):
|
|
36
|
+
super().__init__(view_server, platform_url, user_id, user_pwd, token)
|
|
37
|
+
self.url_marker = "valid-metadata"
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"""
|
|
2
|
+
View module for pyegeria, containing output formatters and mermaid utilities.
|
|
3
|
+
"""
|
|
4
|
+
from pyegeria.view.mermaid_utilities import (
|
|
5
|
+
construct_mermaid_web,
|
|
6
|
+
construct_mermaid_jup,
|
|
7
|
+
load_mermaid,
|
|
8
|
+
render_mermaid,
|
|
9
|
+
save_mermaid_html,
|
|
10
|
+
save_mermaid_graph,
|
|
11
|
+
)
|
|
12
|
+
from pyegeria.view.output_formatter import (
|
|
13
|
+
generate_output,
|
|
14
|
+
resolve_output_formats,
|
|
15
|
+
populate_common_columns,
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
__all__ = [
|
|
19
|
+
"construct_mermaid_web",
|
|
20
|
+
"construct_mermaid_jup",
|
|
21
|
+
"load_mermaid",
|
|
22
|
+
"render_mermaid",
|
|
23
|
+
"save_mermaid_html",
|
|
24
|
+
"save_mermaid_graph",
|
|
25
|
+
"generate_output",
|
|
26
|
+
"resolve_output_formats",
|
|
27
|
+
"populate_common_columns",
|
|
28
|
+
]
|
|
@@ -10,7 +10,7 @@ for different types of data, supporting composition and reuse of formats.
|
|
|
10
10
|
The module defines the following models:
|
|
11
11
|
- Column: Represents a column in an output format with name, key, and format attributes.
|
|
12
12
|
- Format: Represents a format configuration with types and columns.
|
|
13
|
-
- ActionParameter: Represents a parameter for an action with function,
|
|
13
|
+
- ActionParameter: Represents a parameter for an action with function, required_params, optional_params, and spec_params.
|
|
14
14
|
- FormatSet: Represents a complete format set with heading, description, aliases, annotations, formats, and actions.
|
|
15
15
|
- FormatSetDict: A dictionary of format sets with methods for backward compatibility.
|
|
16
16
|
|
|
@@ -51,14 +51,35 @@ format_set_dict = format_set.dict()
|
|
|
51
51
|
The models are designed to be backward compatible with the existing dictionary-based
|
|
52
52
|
implementation. The `FormatSet` class has a `get` method that mimics the behavior of a
|
|
53
53
|
dictionary, and the `FormatSetDict` class provides dictionary-like access to the format sets.
|
|
54
|
+
|
|
55
|
+
Exceptions
|
|
56
|
+
----------
|
|
57
|
+
The following exceptions may be raised by functions and classes in this module:
|
|
58
|
+
- FileNotFoundError: When attempting to load format sets from a non-existent JSON file.
|
|
59
|
+
- json.JSONDecodeError: When a JSON file cannot be parsed.
|
|
60
|
+
- pydantic.ValidationError: When provided data does not conform to the expected model schema
|
|
61
|
+
for `Column`/`Attribute`, `Format`, `ActionParameter`, `QuestionSpec`, or `FormatSet`.
|
|
62
|
+
- KeyError: Accessing a missing format set label via `FormatSetDict.__getitem__` or
|
|
63
|
+
`FormatSet.get` when a default is not supplied.
|
|
64
|
+
- ValueError: From internal validators if an attribute/format contains invalid values.
|
|
54
65
|
"""
|
|
55
66
|
|
|
56
67
|
import json
|
|
57
68
|
import os
|
|
58
69
|
from pathlib import Path
|
|
59
70
|
from typing import Dict, List, Optional, Union, Any
|
|
60
|
-
from pydantic import BaseModel, Field, validator
|
|
71
|
+
from pydantic import BaseModel, Field, validator, root_validator
|
|
61
72
|
from loguru import logger
|
|
73
|
+
__all__ = [
|
|
74
|
+
'Column',
|
|
75
|
+
'Attribute',
|
|
76
|
+
'Format',
|
|
77
|
+
'ActionParameter',
|
|
78
|
+
'FormatSet',
|
|
79
|
+
'FormatSetDict',
|
|
80
|
+
'save_format_sets_to_json',
|
|
81
|
+
'load_format_sets_from_json',
|
|
82
|
+
]
|
|
62
83
|
|
|
63
84
|
def save_format_sets_to_json(format_sets: Dict[str, 'FormatSet'], file_path: str) -> None:
|
|
64
85
|
"""
|
|
@@ -110,31 +131,42 @@ def load_format_sets_from_json(file_path: str) -> Dict[str, 'FormatSet']:
|
|
|
110
131
|
|
|
111
132
|
class Column(BaseModel):
|
|
112
133
|
"""
|
|
113
|
-
Represents a column in an output format.
|
|
134
|
+
Represents an attribute (formerly called a column) in an output format.
|
|
114
135
|
|
|
115
|
-
|
|
116
|
-
name: The display name of the
|
|
117
|
-
key: The key used to access the
|
|
118
|
-
format: Whether the
|
|
136
|
+
Fields:
|
|
137
|
+
name: The display name of the attribute
|
|
138
|
+
key: The key used to access the attribute's value in the data
|
|
139
|
+
format: Whether the attribute's value should be formatted
|
|
119
140
|
"""
|
|
120
141
|
name: str
|
|
121
142
|
key: str
|
|
122
143
|
format: bool = False
|
|
123
144
|
|
|
145
|
+
# New preferred alias for Column
|
|
146
|
+
Attribute = Column
|
|
147
|
+
|
|
124
148
|
class Format(BaseModel):
|
|
125
149
|
"""
|
|
126
|
-
Represents a format configuration with types and
|
|
150
|
+
Represents a format configuration with types and attributes.
|
|
127
151
|
|
|
128
|
-
|
|
152
|
+
Fields:
|
|
129
153
|
types: The output types this format supports (e.g., "DICT", "TABLE", "ALL")
|
|
130
|
-
|
|
154
|
+
attributes: The attributes (formerly columns) to include in the output
|
|
131
155
|
"""
|
|
132
156
|
types: List[str]
|
|
133
|
-
|
|
157
|
+
attributes: List[Union[Column, Dict[str, Any]]]
|
|
134
158
|
|
|
135
|
-
@
|
|
136
|
-
def
|
|
137
|
-
"""
|
|
159
|
+
@root_validator(pre=True)
|
|
160
|
+
def _migrate_columns_to_attributes(cls, values):
|
|
161
|
+
"""Support legacy 'columns' by migrating to 'attributes' when loading."""
|
|
162
|
+
if isinstance(values, dict):
|
|
163
|
+
if 'attributes' not in values and 'columns' in values:
|
|
164
|
+
values['attributes'] = values.pop('columns')
|
|
165
|
+
return values
|
|
166
|
+
|
|
167
|
+
@validator('attributes', pre=True)
|
|
168
|
+
def validate_attributes(cls, v):
|
|
169
|
+
"""Convert dictionary attributes to Attribute/Column objects."""
|
|
138
170
|
result = []
|
|
139
171
|
for item in v:
|
|
140
172
|
if isinstance(item, dict):
|
|
@@ -144,48 +176,105 @@ class Format(BaseModel):
|
|
|
144
176
|
return result
|
|
145
177
|
|
|
146
178
|
def dict(self, *args, **kwargs):
|
|
147
|
-
"""Override dict method to convert
|
|
179
|
+
"""Override dict method to convert Attribute objects back to dictionaries.
|
|
180
|
+
Emits both 'attributes' (preferred) and 'columns' (deprecated) for backward compatibility.
|
|
181
|
+
"""
|
|
148
182
|
result = super().dict(*args, **kwargs)
|
|
149
|
-
result['
|
|
150
|
-
|
|
151
|
-
for
|
|
183
|
+
result['attributes'] = [
|
|
184
|
+
attr if isinstance(attr, dict) else attr.dict()
|
|
185
|
+
for attr in self.attributes
|
|
152
186
|
]
|
|
187
|
+
# Backward-compat alias
|
|
188
|
+
result['columns'] = list(result['attributes'])
|
|
153
189
|
return result
|
|
154
190
|
|
|
191
|
+
# Backward-compat property to expose 'columns'
|
|
192
|
+
@property
|
|
193
|
+
def columns(self):
|
|
194
|
+
return self.attributes
|
|
195
|
+
|
|
196
|
+
@columns.setter
|
|
197
|
+
def columns(self, value):
|
|
198
|
+
# Allow setting via legacy field
|
|
199
|
+
self.attributes = self.validate_attributes(value)
|
|
200
|
+
|
|
155
201
|
class ActionParameter(BaseModel):
|
|
156
202
|
"""
|
|
157
203
|
Represents a parameter for an action.
|
|
158
204
|
|
|
159
205
|
Attributes:
|
|
160
206
|
function: The function to call
|
|
161
|
-
|
|
207
|
+
required_params: Parameters that are required from the user
|
|
208
|
+
optional_params: Parameters that are optional from the user
|
|
162
209
|
spec_params: Parameters that are fixed for this action
|
|
163
210
|
"""
|
|
164
211
|
function: str
|
|
165
|
-
|
|
212
|
+
required_params: List[str] = Field(default_factory=list)
|
|
213
|
+
optional_params: Optional[List[str]] = Field(default_factory=list)
|
|
166
214
|
spec_params: Dict[str, Any] = Field(default_factory=dict)
|
|
167
215
|
|
|
216
|
+
@root_validator(pre=True)
|
|
217
|
+
def _migrate_legacy_user_params(cls, values):
|
|
218
|
+
"""Migrate legacy 'user_params' into 'required_params' when loading from older dict/json."""
|
|
219
|
+
if isinstance(values, dict):
|
|
220
|
+
if 'required_params' not in values and 'user_params' in values:
|
|
221
|
+
values['required_params'] = values.pop('user_params')
|
|
222
|
+
return values
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
class QuestionSpec(BaseModel):
|
|
226
|
+
"""
|
|
227
|
+
An example-question specification for a report spec.
|
|
228
|
+
|
|
229
|
+
Attributes:
|
|
230
|
+
perspectives: A list of perspective names for whom these questions are relevant
|
|
231
|
+
questions: Example natural-language questions this report spec can answer
|
|
232
|
+
"""
|
|
233
|
+
@root_validator(pre=True)
|
|
234
|
+
def _migrate_legacy_roles(cls, values):
|
|
235
|
+
"""Migrate legacy 'roles' field to 'perspectives' when loading from older dict/json."""
|
|
236
|
+
if isinstance(values, dict) and 'perspectives' not in values and 'roles' in values:
|
|
237
|
+
values = dict(values)
|
|
238
|
+
values['perspectives'] = values.pop('roles')
|
|
239
|
+
return values
|
|
240
|
+
perspectives: List[str] = Field(default_factory=list)
|
|
241
|
+
questions: List[str] = Field(default_factory=list)
|
|
242
|
+
|
|
168
243
|
class FormatSet(BaseModel):
|
|
169
244
|
"""
|
|
170
|
-
Represents a complete format set with heading, description, aliases, annotations, formats, and actions.
|
|
245
|
+
Represents a complete format set with target_type, heading, description, aliases, annotations, formats, and actions.
|
|
171
246
|
|
|
172
247
|
Attributes:
|
|
248
|
+
target_type: The related Open Metadata entity type this format set targets (e.g., Glossary, Term). Optional.
|
|
173
249
|
heading: A title for the format set
|
|
174
250
|
description: A description of what the format set is for
|
|
175
251
|
aliases: Alternative names that can be used to reference this format set
|
|
176
252
|
annotations: Additional metadata, like wiki links
|
|
253
|
+
family: Optional tag to group related format sets for organization/searching
|
|
177
254
|
formats: A list of format configurations
|
|
178
255
|
action: Optional action associated with the format set
|
|
179
256
|
get_additional_props: Optional action used to retrieve additional properties for a format set
|
|
180
257
|
"""
|
|
258
|
+
target_type: Optional[str] = None
|
|
181
259
|
heading: str
|
|
182
260
|
description: str
|
|
183
261
|
aliases: List[str] = Field(default_factory=list)
|
|
184
262
|
annotations: Dict[str, List[str]] = Field(default_factory=dict)
|
|
263
|
+
family: Optional[str] = None
|
|
185
264
|
formats: List[Union[Format, Dict[str, Any]]]
|
|
186
265
|
action: Optional[Union[ActionParameter, Dict[str, Any]]] = None
|
|
187
266
|
get_additional_props: Optional[Union[ActionParameter, Dict[str, Any]]] = None
|
|
267
|
+
# Optional: example questions and perspectives this report spec can address
|
|
268
|
+
question_spec: Optional[List[Union[QuestionSpec, Dict[str, Any]]]] = None
|
|
188
269
|
|
|
270
|
+
@root_validator(pre=True)
|
|
271
|
+
def _migrate_legacy_fields(cls, values):
|
|
272
|
+
"""Migrate legacy fields from older saved JSON (entity_type -> target_type)."""
|
|
273
|
+
if isinstance(values, dict):
|
|
274
|
+
if 'entity_type' in values and 'target_type' not in values:
|
|
275
|
+
values['target_type'] = values.pop('entity_type')
|
|
276
|
+
return values
|
|
277
|
+
|
|
189
278
|
@validator('formats', pre=True)
|
|
190
279
|
def validate_formats(cls, v):
|
|
191
280
|
"""Convert dictionary formats to Format objects."""
|
|
@@ -196,6 +285,19 @@ class FormatSet(BaseModel):
|
|
|
196
285
|
else:
|
|
197
286
|
result.append(item)
|
|
198
287
|
return result
|
|
288
|
+
|
|
289
|
+
@validator('question_spec', pre=True)
|
|
290
|
+
def validate_question_spec(cls, v):
|
|
291
|
+
"""Convert dictionary items to QuestionSpec objects when provided."""
|
|
292
|
+
if v is None:
|
|
293
|
+
return None
|
|
294
|
+
out: List[QuestionSpec] = []
|
|
295
|
+
for item in v:
|
|
296
|
+
if isinstance(item, dict):
|
|
297
|
+
out.append(QuestionSpec(**item))
|
|
298
|
+
else:
|
|
299
|
+
out.append(item)
|
|
300
|
+
return out
|
|
199
301
|
|
|
200
302
|
@validator('action', 'get_additional_props', pre=True)
|
|
201
303
|
def validate_action_like(cls, v):
|
|
@@ -225,6 +327,10 @@ class FormatSet(BaseModel):
|
|
|
225
327
|
result['get_additional_props'] = (
|
|
226
328
|
self.get_additional_props if isinstance(self.get_additional_props, dict) else self.get_additional_props.dict()
|
|
227
329
|
)
|
|
330
|
+
if self.question_spec is not None:
|
|
331
|
+
result['question_spec'] = [
|
|
332
|
+
item if isinstance(item, dict) else item.dict() for item in self.question_spec
|
|
333
|
+
]
|
|
228
334
|
return result
|
|
229
335
|
|
|
230
336
|
def get(self, key, default=None):
|
|
@@ -265,7 +371,7 @@ class FormatSetDict(Dict[str, FormatSet]):
|
|
|
265
371
|
Args:
|
|
266
372
|
key: The name or alias to look up
|
|
267
373
|
default: The default value to return if the key is not found
|
|
268
|
-
|
|
374
|
+
|
|
269
375
|
Returns:
|
|
270
376
|
FormatSet: The format set if found, otherwise the default value
|
|
271
377
|
"""
|
|
@@ -292,12 +398,42 @@ class FormatSetDict(Dict[str, FormatSet]):
|
|
|
292
398
|
Args:
|
|
293
399
|
key: The name or alias to look up
|
|
294
400
|
default: The default value to return if the key is not found
|
|
295
|
-
|
|
401
|
+
|
|
296
402
|
Returns:
|
|
297
403
|
FormatSet: The format set if found, otherwise the default value
|
|
298
404
|
"""
|
|
299
405
|
return self.find_by_name_or_alias(key, default)
|
|
300
406
|
|
|
407
|
+
def filter_by_family(self, family: str) -> Dict[str, FormatSet]:
|
|
408
|
+
"""
|
|
409
|
+
Return a plain dict of format sets whose `family` matches the given value.
|
|
410
|
+
|
|
411
|
+
Matching rules
|
|
412
|
+
- Case-insensitive comparison
|
|
413
|
+
- Leading/trailing whitespace in the input and stored family are ignored
|
|
414
|
+
- Pass an empty string ("") to match entries with no family assigned
|
|
415
|
+
|
|
416
|
+
Args:
|
|
417
|
+
family: Family name to match (case-insensitive). Use "" to select entries with no family.
|
|
418
|
+
|
|
419
|
+
Returns:
|
|
420
|
+
dict[str, FormatSet]: Mapping of spec name -> FormatSet for matching entries.
|
|
421
|
+
"""
|
|
422
|
+
# Normalize the requested family
|
|
423
|
+
fam_norm = (family or "").strip().lower()
|
|
424
|
+
result: Dict[str, FormatSet] = {}
|
|
425
|
+
for name, fs in self.items():
|
|
426
|
+
fs_family_raw = getattr(fs, "family", None)
|
|
427
|
+
fs_family_norm = (fs_family_raw or "").strip().lower()
|
|
428
|
+
if fam_norm == "":
|
|
429
|
+
# Select items with no family set
|
|
430
|
+
if fs_family_norm == "":
|
|
431
|
+
result[name] = fs
|
|
432
|
+
else:
|
|
433
|
+
if fs_family_norm == fam_norm:
|
|
434
|
+
result[name] = fs
|
|
435
|
+
return result
|
|
436
|
+
|
|
301
437
|
def values(self):
|
|
302
438
|
"""Get all format sets."""
|
|
303
439
|
return super().values()
|
|
@@ -344,7 +480,7 @@ class FormatSetDict(Dict[str, FormatSet]):
|
|
|
344
480
|
|
|
345
481
|
Args:
|
|
346
482
|
key: The name or alias to check
|
|
347
|
-
|
|
483
|
+
|
|
348
484
|
Returns:
|
|
349
485
|
bool: True if the format set exists, False otherwise
|
|
350
486
|
"""
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Deprecated module shim.
|
|
3
|
+
This module has been renamed to pyegeria.base_report_formats.
|
|
4
|
+
It re-exports all public APIs and raises DeprecationWarning on import.
|
|
5
|
+
"""
|
|
6
|
+
import warnings
|
|
7
|
+
|
|
8
|
+
warnings.warn(
|
|
9
|
+
"pyegeria._output_formats is deprecated; use pyegeria.base_report_formats instead",
|
|
10
|
+
DeprecationWarning,
|
|
11
|
+
stacklevel=2,
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
from pyegeria.view.base_report_formats import * # noqa: F401,F403
|