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
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
Copyright Contributors to the ODPi Egeria project.
|
|
5
5
|
|
|
6
|
-
A command that takes an output format set name, looks up the format set using
|
|
6
|
+
A command that takes an output format set name, looks up the format set using select_report_spec,
|
|
7
7
|
and invokes the specified function with parameters filled from command line arguments.
|
|
8
8
|
|
|
9
9
|
This command works with any format set defined in output_formatter.py that has an "action" property.
|
|
@@ -12,7 +12,7 @@ and prompts for any required parameters that aren't provided on the command line
|
|
|
12
12
|
|
|
13
13
|
Features:
|
|
14
14
|
- Works with any format set that has an "action" property
|
|
15
|
-
- Dynamically adds command-line arguments based on the format set's
|
|
15
|
+
- Dynamically adds command-line arguments based on the format set's required/optional parameters
|
|
16
16
|
- Prompts for required parameters if not provided
|
|
17
17
|
- Supports multiple output formats (TABLE, DICT, FORM, REPORT, HTML, LIST)
|
|
18
18
|
- Handles both instance methods and standalone functions
|
|
@@ -40,23 +40,23 @@ import os
|
|
|
40
40
|
import time
|
|
41
41
|
|
|
42
42
|
from loguru import logger
|
|
43
|
+
from pydantic import ValidationError
|
|
43
44
|
from rich import box
|
|
44
45
|
from rich.console import Console
|
|
45
46
|
from rich.markdown import Markdown
|
|
46
47
|
from rich.prompt import Prompt
|
|
47
48
|
from rich.table import Table
|
|
48
|
-
from rich.text import Text
|
|
49
|
-
import pydevd_pycharm
|
|
50
49
|
|
|
51
50
|
from pyegeria import (
|
|
52
51
|
EgeriaTech,
|
|
53
52
|
CollectionManager,
|
|
54
|
-
NO_ELEMENTS_FOUND, GovernanceOfficer,
|
|
55
|
-
|
|
56
|
-
from pyegeria.config import settings
|
|
57
|
-
from pyegeria.
|
|
58
|
-
from pyegeria.
|
|
59
|
-
from pyegeria.
|
|
53
|
+
NO_ELEMENTS_FOUND, GovernanceOfficer, GlossaryManager, print_validation_error,
|
|
54
|
+
)
|
|
55
|
+
from pyegeria.core.config import settings
|
|
56
|
+
from pyegeria.omvs.external_links import ExternalReferences
|
|
57
|
+
from pyegeria.core.logging_configuration import config_logging
|
|
58
|
+
from pyegeria.view.base_report_formats import (select_report_format)
|
|
59
|
+
from pyegeria.core._exceptions import PyegeriaException, print_exception_response
|
|
60
60
|
|
|
61
61
|
# pydevd_pycharm.settrace('host.docker.internal', # Use 'host.docker.internal' to connect to the host machine
|
|
62
62
|
# port=5678, # Port to communicate with PyCharm
|
|
@@ -117,7 +117,7 @@ def execute_format_set_action(
|
|
|
117
117
|
# Get the output format set
|
|
118
118
|
# logger.info(f"Entering execute_format_set_action, format set name: {format_set_name}, search_string: {kwargs.get('search_string',"meow")}")
|
|
119
119
|
# logger.info(json.dumps(kwargs, indent=2))
|
|
120
|
-
format_set =
|
|
120
|
+
format_set = select_report_format(format_set_name, output_format)
|
|
121
121
|
if not format_set:
|
|
122
122
|
print(f"Error: Output format set '{format_set_name}' does not have a format compatible with output format '{output_format}'.")
|
|
123
123
|
return
|
|
@@ -130,23 +130,102 @@ def execute_format_set_action(
|
|
|
130
130
|
# Extract the function and parameters from the action property (now a dict)
|
|
131
131
|
action = format_set["action"]
|
|
132
132
|
func = action.get("function")
|
|
133
|
-
|
|
133
|
+
required_params = action.get("required_params", action.get("user_params", []))
|
|
134
|
+
optional_params = action.get("optional_params", [])
|
|
134
135
|
spec_params = action.get("spec_params", {})
|
|
135
136
|
|
|
136
|
-
# Create a params dictionary from
|
|
137
|
+
# Create a params dictionary from required/optional and spec_params
|
|
137
138
|
params = {}
|
|
138
|
-
for param in
|
|
139
|
+
for param in required_params:
|
|
139
140
|
if param in kwargs and kwargs[param]:
|
|
140
141
|
params[param] = kwargs[param]
|
|
141
|
-
# print(f"Found value '{kwargs[param]}' for parameter '{param}'.")
|
|
142
142
|
elif param not in kwargs and param not in spec_params:
|
|
143
143
|
print(f"Warning: Required parameter '{param}' not provided for format set '{format_set_name}'.")
|
|
144
|
+
for param in optional_params:
|
|
145
|
+
if param in kwargs and kwargs[param]:
|
|
146
|
+
params[param] = kwargs[param]
|
|
144
147
|
|
|
145
148
|
# Add spec_params to params
|
|
146
149
|
params.update(spec_params)
|
|
147
150
|
|
|
148
|
-
|
|
149
|
-
|
|
151
|
+
# Delegate execution to exec_report_spec for canonical behavior
|
|
152
|
+
from pyegeria.view.format_set_executor import exec_report_spec
|
|
153
|
+
ofmt = (output_format or "TABLE").upper()
|
|
154
|
+
mapped = "DICT" if ofmt == "TABLE" else ofmt
|
|
155
|
+
res = exec_report_spec(
|
|
156
|
+
format_set_name,
|
|
157
|
+
output_format=mapped,
|
|
158
|
+
params=params,
|
|
159
|
+
view_server=view_server,
|
|
160
|
+
view_url=view_url,
|
|
161
|
+
user=user,
|
|
162
|
+
user_pass=user_pass,
|
|
163
|
+
)
|
|
164
|
+
|
|
165
|
+
# Handle TABLE rendering locally
|
|
166
|
+
if ofmt == "TABLE":
|
|
167
|
+
if res.get("kind") != "json":
|
|
168
|
+
print("No results or unexpected response:", res)
|
|
169
|
+
return
|
|
170
|
+
data = res.get("data")
|
|
171
|
+
# Render basic table
|
|
172
|
+
table = Table(
|
|
173
|
+
title=f"{format_set_name} @ {time.asctime()}",
|
|
174
|
+
style="bright_white on black",
|
|
175
|
+
header_style="bright_white on dark_blue",
|
|
176
|
+
title_style="bold white on black",
|
|
177
|
+
caption_style="white on black",
|
|
178
|
+
show_lines=True,
|
|
179
|
+
box=box.ROUNDED,
|
|
180
|
+
caption=f"View Server '{view_server}' @ Platform - {view_url}",
|
|
181
|
+
expand=True,
|
|
182
|
+
)
|
|
183
|
+
rows = data if isinstance(data, list) else [data]
|
|
184
|
+
if rows and isinstance(rows[0], dict):
|
|
185
|
+
cols = list(rows[0].keys())
|
|
186
|
+
for c in cols:
|
|
187
|
+
table.add_column(str(c), justify="left", style="cyan")
|
|
188
|
+
for r in rows:
|
|
189
|
+
table.add_row(*[str(r.get(c, "")) for c in cols])
|
|
190
|
+
else:
|
|
191
|
+
table.add_column("Value")
|
|
192
|
+
for r in rows:
|
|
193
|
+
table.add_row(str(r))
|
|
194
|
+
# Optional header
|
|
195
|
+
from pyegeria.view.base_report_formats import get_report_format_heading, get_report_format_description
|
|
196
|
+
heading = get_report_format_heading(format_set_name)
|
|
197
|
+
desc = get_report_format_description(format_set_name)
|
|
198
|
+
if heading and desc:
|
|
199
|
+
console.print(Markdown(f"# {heading}\n{desc}\n"))
|
|
200
|
+
console.print(table)
|
|
201
|
+
return
|
|
202
|
+
|
|
203
|
+
# For non-table formats, write to file based on MIME/kind
|
|
204
|
+
kind = res.get("kind")
|
|
205
|
+
mime = res.get("mime")
|
|
206
|
+
out_dir = os.path.join(app_config.pyegeria_root, app_config.dr_egeria_outbox)
|
|
207
|
+
ts = time.strftime('%Y-%m-%d-%H-%M-%S')
|
|
208
|
+
safe_name = "".join(c for c in format_set_name if c.isalnum() or c in ("-","_","+","."," ")).strip().replace(" ", "_")
|
|
209
|
+
|
|
210
|
+
if kind == "text":
|
|
211
|
+
content = res.get("content", "")
|
|
212
|
+
ext = ".html" if mime == "text/html" else ".md"
|
|
213
|
+
elif kind == "json":
|
|
214
|
+
content = json.dumps(res.get("data"), indent=2)
|
|
215
|
+
ext = ".json"
|
|
216
|
+
else:
|
|
217
|
+
content = json.dumps(res, indent=2, default=str)
|
|
218
|
+
ext = ".txt"
|
|
219
|
+
|
|
220
|
+
file_name = f"{safe_name}-{ts}{ext}"
|
|
221
|
+
full_file_path = os.path.join(out_dir, file_name)
|
|
222
|
+
os.makedirs(os.path.dirname(full_file_path), exist_ok=True)
|
|
223
|
+
with open(full_file_path, "w", encoding="utf-8") as f:
|
|
224
|
+
f.write(content)
|
|
225
|
+
print(f"\n==> Output written to {full_file_path}")
|
|
226
|
+
if ext == ".html":
|
|
227
|
+
print(f"\n==> Web link: [{file_name}]({app_config.pyegeria_publishing_root}/{file_name})")
|
|
228
|
+
return
|
|
150
229
|
|
|
151
230
|
# Determine the appropriate client class based on the format set name or function
|
|
152
231
|
client_class = None
|
|
@@ -159,6 +238,10 @@ def execute_format_set_action(
|
|
|
159
238
|
client_class = CollectionManager
|
|
160
239
|
elif class_name == "GovernanceOfficer":
|
|
161
240
|
client_class = GovernanceOfficer
|
|
241
|
+
elif class_name == "GlossaryManager":
|
|
242
|
+
client_class = GlossaryManager
|
|
243
|
+
elif class_name == "ExternalReference":
|
|
244
|
+
client_class = ExternalReferences
|
|
162
245
|
else:
|
|
163
246
|
client_class = EgeriaTech
|
|
164
247
|
|
|
@@ -194,8 +277,8 @@ def execute_format_set_action(
|
|
|
194
277
|
client.create_egeria_bearer_token()
|
|
195
278
|
|
|
196
279
|
# Get heading and description information
|
|
197
|
-
heading =
|
|
198
|
-
desc =
|
|
280
|
+
heading = get_report_format_heading(format_set_name)
|
|
281
|
+
desc = get_report_format_description(format_set_name)
|
|
199
282
|
preamble = f"# {heading}\n{desc}\n\n" if heading and desc else ""
|
|
200
283
|
|
|
201
284
|
try:
|
|
@@ -221,12 +304,16 @@ def execute_format_set_action(
|
|
|
221
304
|
# Call the function with the parameters
|
|
222
305
|
print(f"\n==> Calling function: {func} with parameters:{params}")
|
|
223
306
|
try:
|
|
224
|
-
if
|
|
307
|
+
if callable(func):
|
|
225
308
|
# Call the function as an instance method of the client
|
|
226
309
|
output = func(**params)
|
|
227
310
|
else:
|
|
228
311
|
# For standalone functions, call with client as first argument
|
|
229
312
|
output = func(client, **params)
|
|
313
|
+
except ValidationError as e:
|
|
314
|
+
print_validation_error(e)
|
|
315
|
+
return
|
|
316
|
+
|
|
230
317
|
except TypeError as e:
|
|
231
318
|
# Handle parameter mismatch errors
|
|
232
319
|
print(f"Error calling function: {e}")
|
|
@@ -251,7 +338,7 @@ def execute_format_set_action(
|
|
|
251
338
|
return
|
|
252
339
|
else:
|
|
253
340
|
# For TABLE output, add output_format to params
|
|
254
|
-
params['output_format'] = "
|
|
341
|
+
params['output_format'] = "TABLE"
|
|
255
342
|
print(f"\n==> Calling function: {func} with parameters:{params}")
|
|
256
343
|
# Call the function and create a table
|
|
257
344
|
try:
|
|
@@ -295,9 +382,9 @@ def execute_format_set_action(
|
|
|
295
382
|
return
|
|
296
383
|
|
|
297
384
|
# Sort the results by display_name if available
|
|
298
|
-
if "display_name"
|
|
385
|
+
if result[0].get("display_name", None):
|
|
299
386
|
sorted_results = sorted(result, key=lambda k: k.get("display_name", ""))
|
|
300
|
-
elif "Display Name"
|
|
387
|
+
elif result[0].get("Display Name", None):
|
|
301
388
|
sorted_results = sorted(result, key=lambda k: k.get("Display Name", ""))
|
|
302
389
|
else:
|
|
303
390
|
sorted_results = result
|
|
@@ -305,7 +392,10 @@ def execute_format_set_action(
|
|
|
305
392
|
# Add columns dynamically based on the first result
|
|
306
393
|
column_headings = list(sorted_results[0].keys())
|
|
307
394
|
for heading in column_headings:
|
|
308
|
-
|
|
395
|
+
if heading == "Usage":
|
|
396
|
+
table.add_column(heading, justify="left", style="cyan")
|
|
397
|
+
else:
|
|
398
|
+
table.add_column(heading, justify="left", style="cyan")
|
|
309
399
|
|
|
310
400
|
# Add rows
|
|
311
401
|
for item in sorted_results:
|
|
@@ -342,25 +432,25 @@ def main():
|
|
|
342
432
|
# First, parse just the format-set argument to determine which other arguments to add
|
|
343
433
|
logger.enable("pyegeria")
|
|
344
434
|
initial_parser = argparse.ArgumentParser(add_help=False)
|
|
345
|
-
initial_parser.add_argument("--
|
|
435
|
+
initial_parser.add_argument("--report", help="Name of the report spec", required=True)
|
|
346
436
|
initial_args, _ = initial_parser.parse_known_args()
|
|
347
437
|
|
|
348
|
-
# Get the format set to determine
|
|
349
|
-
format_set_name = initial_args.
|
|
350
|
-
format_set =
|
|
438
|
+
# Get the format set to determine parameters
|
|
439
|
+
format_set_name = initial_args.report
|
|
440
|
+
format_set = select_report_format(format_set_name, "ANY")
|
|
351
441
|
|
|
352
442
|
# Check if the format set exists
|
|
353
443
|
if not format_set:
|
|
354
|
-
print(f"Error:
|
|
355
|
-
print("Available
|
|
356
|
-
from pyegeria.
|
|
357
|
-
for name in
|
|
444
|
+
print(f"Error: Report Spec for '{format_set_name}' not found.")
|
|
445
|
+
print("Available Report Specs:")
|
|
446
|
+
from pyegeria.view.base_report_formats import report_spec_list
|
|
447
|
+
for name in report_spec_list():
|
|
358
448
|
print(f" - {name}")
|
|
359
449
|
return
|
|
360
450
|
|
|
361
451
|
# Create the full parser with all arguments
|
|
362
|
-
parser = argparse.ArgumentParser(description="Execute an action from
|
|
363
|
-
parser.add_argument("--
|
|
452
|
+
parser = argparse.ArgumentParser(description="Execute an action from Report Spec")
|
|
453
|
+
parser.add_argument("--report", help="Name of the report spec", required=True)
|
|
364
454
|
parser.add_argument("--server", help="Name of the server to connect to")
|
|
365
455
|
parser.add_argument("--url", help="URL Platform to connect to")
|
|
366
456
|
parser.add_argument("--userid", help="User Id")
|
|
@@ -370,16 +460,18 @@ def main():
|
|
|
370
460
|
|
|
371
461
|
|
|
372
462
|
|
|
373
|
-
# Add arguments based on the format set's
|
|
374
|
-
|
|
463
|
+
# Add arguments based on the format set's required/optional params
|
|
464
|
+
required_params = []
|
|
465
|
+
optional_params = []
|
|
375
466
|
if "action" in format_set:
|
|
376
467
|
action = format_set["action"]
|
|
377
|
-
|
|
468
|
+
required_params = action.get("required_params", action.get("user_params", []))
|
|
469
|
+
optional_params = action.get("optional_params", [])
|
|
378
470
|
|
|
379
|
-
for param in
|
|
471
|
+
for param in sorted(set(required_params + optional_params)):
|
|
380
472
|
parser.add_argument(f"--{param.replace('_', '-')}", help=f"{param.replace('_', ' ')} parameter")
|
|
381
473
|
else:
|
|
382
|
-
print(f"Error:
|
|
474
|
+
print(f"Error: Report Spec '{format_set_name}' does not have an action property.")
|
|
383
475
|
return
|
|
384
476
|
|
|
385
477
|
args = parser.parse_args()
|
|
@@ -391,13 +483,13 @@ def main():
|
|
|
391
483
|
print(f"root path: {app_config.pyegeria_root}, config_file: {app_config.pyegeria_config_file}")
|
|
392
484
|
userid = args.userid if args.userid is not None else EGERIA_USER
|
|
393
485
|
user_pass = args.password if args.password is not None else EGERIA_USER_PASSWORD
|
|
394
|
-
format_set_name = args.
|
|
486
|
+
format_set_name = args.report
|
|
395
487
|
output_format = args.output_format
|
|
396
488
|
|
|
397
489
|
logger.info(f"view server @ {url}")
|
|
398
|
-
# Collect all
|
|
490
|
+
# Collect all parameters from args
|
|
399
491
|
kwargs = {}
|
|
400
|
-
for param in
|
|
492
|
+
for param in sorted(set(required_params + optional_params)):
|
|
401
493
|
arg_name = param.replace('_', '-')
|
|
402
494
|
if hasattr(args, arg_name) and getattr(args, arg_name) is not None:
|
|
403
495
|
kwargs[param] = getattr(args, arg_name)
|
|
@@ -406,7 +498,7 @@ def main():
|
|
|
406
498
|
|
|
407
499
|
try:
|
|
408
500
|
# If a required parameter is not provided, prompt for it
|
|
409
|
-
for param in
|
|
501
|
+
for param in required_params:
|
|
410
502
|
if param not in kwargs:
|
|
411
503
|
default_value = "*" if param == "search_string" else ""
|
|
412
504
|
prompt_text = f"Enter {param.replace('_', ' ')}:"
|
|
@@ -414,7 +506,7 @@ def main():
|
|
|
414
506
|
prompt_text += f" (default: {default_value})"
|
|
415
507
|
value = Prompt.ask(prompt_text, default=default_value).strip()
|
|
416
508
|
kwargs[param] = value
|
|
417
|
-
print(f"Using
|
|
509
|
+
print(f"Using Report Spec {format_set_name} and output format {output_format} with parameters: {kwargs} ")
|
|
418
510
|
execute_format_set_action(
|
|
419
511
|
format_set_name=format_set_name,
|
|
420
512
|
view_server=server,
|