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.

Files changed (433) hide show
  1. commands/__init__.py +24 -0
  2. commands/cat/Dr-Egeria_md-orig.py +2 -2
  3. commands/cat/collection_actions.py +197 -0
  4. commands/cat/dr_egeria_command_help.py +137 -38
  5. commands/cat/dr_egeria_jupyter.py +7 -7
  6. commands/cat/dr_egeria_md.py +10 -267
  7. commands/cat/exp_list_glossaries.py +11 -14
  8. commands/cat/get_asset_graph.py +37 -267
  9. commands/cat/{get_collection.py → get_collection_tree.py} +10 -18
  10. commands/cat/get_project_dependencies.py +14 -14
  11. commands/cat/get_project_structure.py +15 -14
  12. commands/cat/get_tech_type_elements.py +16 -116
  13. commands/cat/glossary_actions.py +145 -298
  14. commands/cat/list_assets.py +3 -11
  15. commands/cat/list_cert_types.py +17 -63
  16. commands/cat/list_collections.py +17 -139
  17. commands/cat/list_deployed_catalogs.py +15 -27
  18. commands/cat/list_deployed_database_schemas.py +27 -43
  19. commands/cat/list_deployed_databases.py +16 -31
  20. commands/cat/list_deployed_servers.py +35 -54
  21. commands/cat/list_glossaries.py +18 -17
  22. commands/cat/list_projects.py +10 -12
  23. commands/cat/list_tech_type_elements.py +21 -37
  24. commands/cat/list_tech_types.py +13 -25
  25. commands/cat/list_terms.py +38 -79
  26. commands/cat/list_todos.py +4 -11
  27. commands/cat/list_user_ids.py +3 -10
  28. commands/cat/my_reports.py +559 -0
  29. commands/cat/run_report.py +394 -0
  30. commands/cat/{list_format_set.py → run_report_orig.py} +136 -44
  31. commands/cli/egeria.py +182 -219
  32. commands/cli/egeria_cat.py +32 -59
  33. commands/cli/egeria_my.py +13 -0
  34. commands/cli/egeria_ops.py +69 -74
  35. commands/cli/egeria_tech.py +17 -93
  36. commands/{cat → deprecated}/list_data_designer.py +2 -4
  37. commands/{cat → deprecated}/list_data_structures_full.py +3 -6
  38. commands/deprecated/old_get_asset_graph.py +315 -0
  39. commands/my/__init__.py +0 -2
  40. commands/my/list_my_profile.py +27 -34
  41. commands/my/list_my_roles.py +1 -7
  42. commands/my/monitor_my_todos.py +1 -7
  43. commands/my/monitor_open_todos.py +6 -7
  44. commands/my/todo_actions.py +4 -5
  45. commands/ops/__init__.py +0 -2
  46. commands/ops/gov_server_actions.py +17 -21
  47. commands/ops/list_archives.py +17 -38
  48. commands/ops/list_catalog_targets.py +33 -40
  49. commands/ops/load_archive.py +14 -11
  50. commands/ops/{monitor_engine_activity_c.py → monitor_active_engine_activity.py} +51 -82
  51. commands/ops/{monitor_integ_daemon_status.py → monitor_daemon_status.py} +35 -55
  52. commands/ops/monitor_engine_activity.py +79 -77
  53. commands/ops/{monitor_gov_eng_status.py → monitor_engine_status.py} +10 -7
  54. commands/ops/monitor_platform_status.py +38 -50
  55. commands/ops/monitor_server_startup.py +6 -11
  56. commands/ops/monitor_server_status.py +7 -11
  57. commands/ops/orig_monitor_server_list.py +8 -8
  58. commands/ops/orig_monitor_server_status.py +1 -5
  59. commands/ops/refresh_integration_daemon.py +5 -5
  60. commands/ops/restart_integration_daemon.py +5 -5
  61. commands/ops/table_integ_daemon_status.py +6 -6
  62. commands/ops/x_engine_actions.py +7 -7
  63. commands/tech/__init__.py +0 -2
  64. commands/tech/{generic_actions.py → element_actions.py} +6 -11
  65. commands/tech/get_element_info.py +20 -29
  66. commands/tech/get_guid_info.py +23 -42
  67. commands/tech/get_tech_details.py +20 -35
  68. commands/tech/get_tech_type_template.py +28 -39
  69. commands/tech/list_all_om_type_elements.py +24 -30
  70. commands/tech/list_all_om_type_elements_x.py +22 -28
  71. commands/tech/list_all_related_elements.py +19 -28
  72. commands/tech/list_anchored_elements.py +22 -30
  73. commands/tech/list_asset_types.py +19 -24
  74. commands/tech/list_elements_by_classification_by_property_value.py +26 -32
  75. commands/tech/list_elements_by_property_value.py +19 -25
  76. commands/tech/list_elements_by_property_value_x.py +20 -28
  77. commands/tech/list_elements_for_classification.py +28 -41
  78. commands/tech/list_gov_action_processes.py +16 -27
  79. commands/tech/list_information_supply_chains.py +22 -30
  80. commands/tech/list_registered_services.py +14 -26
  81. commands/tech/list_related_elements_with_prop_value.py +15 -25
  82. commands/tech/list_related_specification.py +1 -4
  83. commands/tech/list_relationship_types.py +15 -25
  84. commands/tech/list_relationships.py +20 -36
  85. commands/tech/list_solution_blueprints.py +28 -33
  86. commands/tech/list_solution_components.py +23 -29
  87. commands/tech/list_solution_roles.py +21 -32
  88. commands/tech/list_tech_templates.py +51 -54
  89. commands/tech/list_valid_metadata_values.py +5 -9
  90. commands/tech/table_tech_templates.py +2 -6
  91. commands/tech/x_list_related_elements.py +1 -4
  92. examples/GeoSpatial Products Example.py +524 -0
  93. examples/Jupyter Notebooks/P-egeria-server-config.ipynb +2137 -0
  94. examples/Jupyter Notebooks/README.md +2 -0
  95. examples/Jupyter Notebooks/common/P-environment-check.ipynb +115 -0
  96. examples/Jupyter Notebooks/common/__init__.py +14 -0
  97. examples/Jupyter Notebooks/common/common-functions.ipynb +4694 -0
  98. examples/Jupyter Notebooks/common/environment-check.ipynb +52 -0
  99. examples/Jupyter Notebooks/common/globals.ipynb +184 -0
  100. examples/Jupyter Notebooks/common/globals.py +154 -0
  101. examples/Jupyter Notebooks/common/orig_globals.py +152 -0
  102. examples/format_sets/all_format_sets.json +910 -0
  103. examples/format_sets/custom_format_sets.json +268 -0
  104. examples/format_sets/subset_format_sets.json +187 -0
  105. examples/format_sets_save_load_example.py +291 -0
  106. examples/jacquard_data_sets.py +129 -0
  107. examples/output_formats_example.py +193 -0
  108. examples/test_jacquard_data_sets.py +54 -0
  109. examples/test_jacquard_data_sets_scenarios.py +94 -0
  110. md_processing/__init__.py +33 -24
  111. md_processing/command_dispatcher.py +33 -0
  112. md_processing/command_mapping.py +221 -0
  113. md_processing/data/commands/commands_data_designer.json +537 -0
  114. md_processing/data/commands/commands_external_reference.json +733 -0
  115. md_processing/data/commands/commands_feedback.json +155 -0
  116. md_processing/data/commands/commands_general.json +204 -0
  117. md_processing/data/commands/commands_glossary.json +218 -0
  118. md_processing/data/commands/commands_governance.json +3678 -0
  119. md_processing/data/commands/commands_product_manager.json +865 -0
  120. md_processing/data/commands/commands_project.json +642 -0
  121. md_processing/data/commands/commands_solution_architect.json +366 -0
  122. md_processing/data/commands.json +6489 -30060
  123. md_processing/data/{commands-working.json → commands_working.json} +9304 -13513
  124. md_processing/data/gened_report_specs.py +6584 -0
  125. md_processing/data/generated_format_sets.json +6533 -0
  126. md_processing/data/generated_format_sets_old.json +4137 -0
  127. md_processing/data/generated_format_sets_old.py +45 -0
  128. md_processing/dr_egeria.py +182 -0
  129. md_processing/md_commands/data_designer_commands.py +195 -583
  130. md_processing/md_commands/ext_ref_commands.py +530 -0
  131. md_processing/md_commands/feedback_commands.py +726 -0
  132. md_processing/md_commands/glossary_commands.py +106 -490
  133. md_processing/md_commands/governance_officer_commands.py +129 -18
  134. md_processing/md_commands/product_manager_commands.py +362 -115
  135. md_processing/md_commands/project_commands.py +351 -134
  136. md_processing/md_commands/solution_architect_commands.py +276 -232
  137. md_processing/md_commands/view_commands.py +295 -0
  138. md_processing/md_processing_utils/common_md_proc_utils.py +258 -166
  139. md_processing/md_processing_utils/common_md_utils.py +138 -43
  140. md_processing/md_processing_utils/determine_width.py +103 -0
  141. md_processing/md_processing_utils/extraction_utils.py +100 -39
  142. md_processing/md_processing_utils/gen_report_specs.py +643 -0
  143. md_processing/md_processing_utils/generate_dr_help.py +61 -33
  144. md_processing/md_processing_utils/generate_md_cmd_templates.py +20 -19
  145. md_processing/md_processing_utils/generate_md_templates.py +3 -12
  146. md_processing/md_processing_utils/md_processing_constants.py +1053 -72
  147. pyegeria/__init__.py +203 -158
  148. pyegeria/core/__init__.py +40 -0
  149. pyegeria/core/_base_platform_client.py +574 -0
  150. pyegeria/core/_base_server_client.py +573 -0
  151. pyegeria/{_exceptions_new.py → core/_exceptions.py} +62 -30
  152. pyegeria/{_globals.py → core/_globals.py} +14 -3
  153. pyegeria/core/_server_client.py +6073 -0
  154. pyegeria/{_validators.py → core/_validators.py} +7 -8
  155. pyegeria/core/config.py +654 -0
  156. pyegeria/{create_tech_guid_lists.py → core/create_tech_guid_lists.py} +0 -1
  157. pyegeria/core/load_config.py +37 -0
  158. pyegeria/{logging_configuration.py → core/logging_configuration.py} +1 -1
  159. pyegeria/core/mcp_adapter.py +144 -0
  160. pyegeria/core/mcp_server.py +212 -0
  161. pyegeria/core/utils.py +405 -0
  162. pyegeria/{_client.py → deprecated/_client.py} +24 -25
  163. pyegeria/{_deprecated_gov_engine.py → deprecated/_deprecated_gov_engine.py} +16 -16
  164. pyegeria/{classification_manager_omvs.py → deprecated/classification_manager_omvs.py} +1987 -1877
  165. pyegeria/{output_formatter.py → deprecated/output_formatter_with_machine_keys.py} +298 -45
  166. pyegeria/{runtime_manager_omvs.py → deprecated/runtime_manager_omvs.py} +155 -171
  167. pyegeria/{valid_metadata_omvs.py → deprecated/valid_metadata_omvs.py} +93 -93
  168. pyegeria/{x_action_author_omvs.py → deprecated/x_action_author_omvs.py} +2 -3
  169. pyegeria/egeria_cat_client.py +26 -70
  170. pyegeria/egeria_client.py +130 -93
  171. pyegeria/egeria_config_client.py +40 -46
  172. pyegeria/egeria_tech_client.py +141 -54
  173. pyegeria/models/__init__.py +150 -0
  174. pyegeria/{models.py → models/models.py} +156 -20
  175. pyegeria/omvs/__init__.py +84 -0
  176. pyegeria/omvs/action_author.py +342 -0
  177. pyegeria/omvs/actor_manager.py +5980 -0
  178. pyegeria/omvs/asset_catalog.py +842 -0
  179. pyegeria/omvs/asset_maker.py +2736 -0
  180. pyegeria/omvs/automated_curation.py +4403 -0
  181. pyegeria/omvs/classification_manager.py +11213 -0
  182. pyegeria/{collection_manager.py → omvs/collection_manager.py} +1334 -1160
  183. pyegeria/omvs/community_matters_omvs.py +468 -0
  184. pyegeria/{core_omag_server_config.py → omvs/core_omag_server_config.py} +157 -157
  185. pyegeria/{data_designer.py → omvs/data_designer.py} +1115 -660
  186. pyegeria/omvs/data_discovery.py +869 -0
  187. pyegeria/omvs/data_engineer.py +372 -0
  188. pyegeria/omvs/digital_business.py +1133 -0
  189. pyegeria/omvs/external_links.py +1752 -0
  190. pyegeria/omvs/feedback_manager.py +834 -0
  191. pyegeria/{full_omag_server_config.py → omvs/full_omag_server_config.py} +73 -69
  192. pyegeria/{glossary_manager.py → omvs/glossary_manager.py} +857 -519
  193. pyegeria/{governance_officer.py → omvs/governance_officer.py} +964 -468
  194. pyegeria/omvs/lineage_linker.py +314 -0
  195. pyegeria/omvs/location_arena.py +1525 -0
  196. pyegeria/omvs/metadata_expert.py +668 -0
  197. pyegeria/omvs/metadata_explorer_omvs.py +2943 -0
  198. pyegeria/omvs/my_profile.py +1042 -0
  199. pyegeria/omvs/notification_manager.py +358 -0
  200. pyegeria/omvs/people_organizer.py +394 -0
  201. pyegeria/{platform_services.py → omvs/platform_services.py} +113 -193
  202. pyegeria/omvs/product_manager.py +1825 -0
  203. pyegeria/omvs/project_manager.py +1907 -0
  204. pyegeria/omvs/reference_data.py +1140 -0
  205. pyegeria/omvs/registered_info.py +334 -0
  206. pyegeria/omvs/runtime_manager.py +2817 -0
  207. pyegeria/omvs/schema_maker.py +446 -0
  208. pyegeria/{server_operations.py → omvs/server_operations.py} +27 -26
  209. pyegeria/{solution_architect_omvs.py → omvs/solution_architect.py} +1886 -1505
  210. pyegeria/omvs/specification_properties.py +37 -0
  211. pyegeria/omvs/subject_area.py +1042 -0
  212. pyegeria/omvs/template_manager_omvs.py +236 -0
  213. pyegeria/omvs/time_keeper.py +1761 -0
  214. pyegeria/omvs/valid_metadata.py +3221 -0
  215. pyegeria/omvs/valid_metadata_lists.py +37 -0
  216. pyegeria/omvs/valid_type_lists.py +37 -0
  217. pyegeria/view/__init__.py +28 -0
  218. pyegeria/{_output_format_models.py → view/_output_format_models.py} +160 -24
  219. pyegeria/view/_output_formats.py +14 -0
  220. pyegeria/view/base_report_formats.py +2719 -0
  221. pyegeria/view/dr_egeria_reports.py +56 -0
  222. pyegeria/view/format_set_executor.py +397 -0
  223. pyegeria/{md_processing_utils.py → view/md_processing_utils.py} +5 -5
  224. pyegeria/{mermaid_utilities.py → view/mermaid_utilities.py} +2 -154
  225. pyegeria/view/output_formatter.py +1297 -0
  226. pyegeria-5.5.3.3.dist-info/METADATA +218 -0
  227. pyegeria-5.5.3.3.dist-info/RECORD +241 -0
  228. {pyegeria-5.4.0.28.dist-info → pyegeria-5.5.3.3.dist-info}/WHEEL +2 -1
  229. pyegeria-5.5.3.3.dist-info/entry_points.txt +103 -0
  230. pyegeria-5.5.3.3.dist-info/top_level.txt +4 -0
  231. commands/cat/.DS_Store +0 -0
  232. commands/cat/.env +0 -8
  233. commands/cat/README.md +0 -16
  234. commands/cat/debug_log +0 -1126
  235. commands/cat/debug_log.2025-08-18_11-34-38_088636.zip +0 -0
  236. commands/cat/list_categories.py +0 -192
  237. commands/cat/logs/pyegeria.log +0 -4
  238. commands/cli/debug_log +0 -0
  239. commands/cli/debug_log.log +0 -0
  240. commands/cli/txt_custom_v2.tcss +0 -19
  241. commands/my/README.md +0 -17
  242. commands/ops/README.md +0 -24
  243. commands/ops/logs/pyegeria.log +0 -0
  244. commands/ops/monitor_asset_events.py +0 -108
  245. commands/tech/README.md +0 -24
  246. md_processing/.DS_Store +0 -0
  247. md_processing/dr-egeria-outbox/Collections-2025-08-12-13-30-37.md +0 -163
  248. md_processing/dr-egeria-outbox/Collections-2025-08-12-13-35-58.md +0 -474
  249. md_processing/dr_egeria_inbox/Derive-Dr-Gov-Defs.md +0 -8
  250. md_processing/dr_egeria_inbox/Dr.Egeria Templates.md +0 -873
  251. md_processing/dr_egeria_inbox/arch_test.md +0 -57
  252. md_processing/dr_egeria_inbox/archive/dr_egeria_intro.md +0 -254
  253. md_processing/dr_egeria_inbox/archive/dr_egeria_intro_more_terms.md +0 -696
  254. md_processing/dr_egeria_inbox/archive/dr_egeria_intro_part1.md +0 -254
  255. md_processing/dr_egeria_inbox/archive/dr_egeria_intro_part2.md +0 -298
  256. md_processing/dr_egeria_inbox/archive/dr_egeria_intro_part3.md +0 -608
  257. md_processing/dr_egeria_inbox/archive/dr_egeria_intro_part4.md +0 -94
  258. md_processing/dr_egeria_inbox/archive/freddie_intro.md +0 -284
  259. md_processing/dr_egeria_inbox/archive/freddie_intro_orig.md +0 -275
  260. md_processing/dr_egeria_inbox/archive/test-term.md +0 -110
  261. md_processing/dr_egeria_inbox/cat_test.md +0 -100
  262. md_processing/dr_egeria_inbox/collections.md +0 -39
  263. md_processing/dr_egeria_inbox/data_designer_debug.log +0 -6
  264. md_processing/dr_egeria_inbox/data_designer_out.md +0 -60
  265. md_processing/dr_egeria_inbox/data_designer_search_test.md +0 -11
  266. md_processing/dr_egeria_inbox/data_field.md +0 -54
  267. md_processing/dr_egeria_inbox/data_spec.md +0 -77
  268. md_processing/dr_egeria_inbox/data_spec_test.md +0 -2406
  269. md_processing/dr_egeria_inbox/data_test.md +0 -179
  270. md_processing/dr_egeria_inbox/data_test2.md +0 -429
  271. md_processing/dr_egeria_inbox/data_test3.md +0 -462
  272. md_processing/dr_egeria_inbox/dr_egeria_data_designer_1.md +0 -124
  273. md_processing/dr_egeria_inbox/dr_egeria_intro_categories.md +0 -168
  274. md_processing/dr_egeria_inbox/dr_egeria_intro_part1.md +0 -280
  275. md_processing/dr_egeria_inbox/dr_egeria_intro_part2.md +0 -318
  276. md_processing/dr_egeria_inbox/dr_egeria_intro_part3.md +0 -1073
  277. md_processing/dr_egeria_inbox/dr_egeria_isc1.md +0 -44
  278. md_processing/dr_egeria_inbox/generated_help_report.md +0 -9
  279. md_processing/dr_egeria_inbox/glossary_creation_experiment.ipynb +0 -341
  280. md_processing/dr_egeria_inbox/glossary_list.md +0 -5
  281. md_processing/dr_egeria_inbox/glossary_search_test.md +0 -40
  282. md_processing/dr_egeria_inbox/glossary_test1.md +0 -324
  283. md_processing/dr_egeria_inbox/gov_def.md +0 -482
  284. md_processing/dr_egeria_inbox/gov_def2.md +0 -447
  285. md_processing/dr_egeria_inbox/img.png +0 -0
  286. md_processing/dr_egeria_inbox/product.md +0 -211
  287. md_processing/dr_egeria_inbox/rel.md +0 -8
  288. md_processing/dr_egeria_inbox/sb.md +0 -119
  289. md_processing/dr_egeria_inbox/solution-components.md +0 -136
  290. md_processing/dr_egeria_inbox/solution_blueprints.md +0 -118
  291. md_processing/dr_egeria_inbox/synonym_test.md +0 -42
  292. md_processing/dr_egeria_inbox/t2.md +0 -268
  293. md_processing/dr_egeria_outbox/.obsidian/app.json +0 -1
  294. md_processing/dr_egeria_outbox/.obsidian/appearance.json +0 -1
  295. md_processing/dr_egeria_outbox/.obsidian/community-plugins.json +0 -6
  296. md_processing/dr_egeria_outbox/.obsidian/core-plugins.json +0 -31
  297. md_processing/dr_egeria_outbox/.obsidian/plugins/calendar/data.json +0 -10
  298. md_processing/dr_egeria_outbox/.obsidian/plugins/calendar/main.js +0 -4459
  299. md_processing/dr_egeria_outbox/.obsidian/plugins/calendar/manifest.json +0 -10
  300. md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-kanban/data.json +0 -3
  301. md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-kanban/main.js +0 -153
  302. md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-kanban/manifest.json +0 -11
  303. md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-kanban/styles.css +0 -1
  304. md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-tasks-plugin/main.js +0 -500
  305. md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-tasks-plugin/manifest.json +0 -12
  306. md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-tasks-plugin/styles.css +0 -1
  307. md_processing/dr_egeria_outbox/.obsidian/plugins/templater-obsidian/main.js +0 -37
  308. md_processing/dr_egeria_outbox/.obsidian/plugins/templater-obsidian/manifest.json +0 -11
  309. md_processing/dr_egeria_outbox/.obsidian/plugins/templater-obsidian/styles.css +0 -220
  310. md_processing/dr_egeria_outbox/.obsidian/types.json +0 -28
  311. md_processing/dr_egeria_outbox/.obsidian/workspace.json +0 -220
  312. md_processing/dr_egeria_outbox/Untitled.canvas +0 -1
  313. md_processing/dr_egeria_outbox/friday/processed-2025-08-22 21:22-dr_egeria_intro_part1.md +0 -312
  314. md_processing/dr_egeria_outbox/friday/processed-2025-08-22 21:23-dr_egeria_intro_part1.md +0 -265
  315. md_processing/dr_egeria_outbox/friday/processed-2025-08-23 15:06-dr_egeria_intro_part1.md +0 -230
  316. md_processing/dr_egeria_outbox/friday/processed-2025-08-23 15:30-dr_egeria_intro_part1.md +0 -296
  317. md_processing/dr_egeria_outbox/friday/processed-2025-08-23 15:31-dr_egeria_intro_part1.md +0 -253
  318. md_processing/dr_egeria_outbox/friday/processed-2025-08-23 16:08-dr_egeria_intro_part2.md +0 -343
  319. md_processing/dr_egeria_outbox/friday/processed-2025-08-23 16:12-dr_egeria_intro_part2.md +0 -343
  320. md_processing/dr_egeria_outbox/monday/processed-2025-08-19 07:05-product.md +0 -426
  321. md_processing/dr_egeria_outbox/monday/processed-2025-08-19 07:56-product.md +0 -212
  322. md_processing/dr_egeria_outbox/monday/processed-2025-08-19 09:43-product.md +0 -201
  323. md_processing/dr_egeria_outbox/sunday/processed-2025-07-20 14:55-product.md +0 -77
  324. md_processing/dr_egeria_outbox/sunday/processed-2025-07-20 15:05-product.md +0 -75
  325. md_processing/dr_egeria_outbox/sunday/processed-2025-07-20 15:11-product.md +0 -74
  326. md_processing/dr_egeria_outbox/sunday/processed-2025-07-20 20:40-collections.md +0 -49
  327. md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 15:00-Derive-Dr-Gov-Defs.md +0 -719
  328. md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 20:13-Derive-Dr-Gov-Defs.md +0 -41
  329. md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 20:14-Derive-Dr-Gov-Defs.md +0 -33
  330. md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 20:50-Derive-Dr-Gov-Defs.md +0 -192
  331. md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 22:08-gov_def2.md +0 -486
  332. md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 22:10-gov_def2.md +0 -486
  333. md_processing/dr_egeria_outbox/thursday/processed-2025-07-18 08:53-gov_def2.md +0 -486
  334. md_processing/dr_egeria_outbox/thursday/processed-2025-07-18 08:54-gov_def2.md +0 -486
  335. md_processing/dr_egeria_outbox/thursday/processed-2025-07-18 09:03-gov_def2.md +0 -486
  336. md_processing/dr_egeria_outbox/thursday/processed-2025-07-18 09:06-gov_def2.md +0 -486
  337. md_processing/dr_egeria_outbox/thursday/processed-2025-07-18 09:10-gov_def2.md +0 -486
  338. md_processing/dr_egeria_outbox/tuesday/processed-2025-07-16 19:15-gov_def2.md +0 -527
  339. md_processing/dr_egeria_outbox/tuesday/processed-2025-07-17 12:08-gov_def2.md +0 -527
  340. md_processing/dr_egeria_outbox/tuesday/processed-2025-07-17 14:27-gov_def2.md +0 -485
  341. md_processing/dr_egeria_outbox/tuesday/processed-2025-08-19 10:55-product.md +0 -209
  342. md_processing/family_docs/Data Designer/Create_Data_Class.md +0 -164
  343. md_processing/family_docs/Data Designer/Create_Data_Dictionary.md +0 -30
  344. md_processing/family_docs/Data Designer/Create_Data_Field.md +0 -162
  345. md_processing/family_docs/Data Designer/Create_Data_Specification.md +0 -36
  346. md_processing/family_docs/Data Designer/Create_Data_Structure.md +0 -38
  347. md_processing/family_docs/Data Designer/View_Data_Classes.md +0 -78
  348. md_processing/family_docs/Data Designer/View_Data_Dictionaries.md +0 -78
  349. md_processing/family_docs/Data Designer/View_Data_Fields.md +0 -78
  350. md_processing/family_docs/Data Designer/View_Data_Specifications.md +0 -78
  351. md_processing/family_docs/Data Designer/View_Data_Structures.md +0 -78
  352. md_processing/family_docs/Data Designer.md +0 -842
  353. md_processing/family_docs/Digital Product Manager/Add_Member->Collection.md +0 -42
  354. md_processing/family_docs/Digital Product Manager/Attach_Collection->Resource.md +0 -36
  355. md_processing/family_docs/Digital Product Manager/Create_Agreement.md +0 -96
  356. md_processing/family_docs/Digital Product Manager/Create_Data_Sharing_Agreement.md +0 -72
  357. md_processing/family_docs/Digital Product Manager/Create_DigitalSubscription.md +0 -102
  358. md_processing/family_docs/Digital Product Manager/Create_Digital_Product.md +0 -134
  359. md_processing/family_docs/Digital Product Manager/Link_Agreement_Items.md +0 -60
  360. md_processing/family_docs/Digital Product Manager/Link_Contracts.md +0 -26
  361. md_processing/family_docs/Digital Product Manager/Link_Digital_Product_-_Digital_Product.md +0 -30
  362. md_processing/family_docs/Digital Product Manager/Link_Subscribers.md +0 -48
  363. md_processing/family_docs/Digital Product Manager.md +0 -668
  364. md_processing/family_docs/Glossary/Attach_Category_Parent.md +0 -18
  365. md_processing/family_docs/Glossary/Attach_Term-Term_Relationship.md +0 -26
  366. md_processing/family_docs/Glossary/Create_Category.md +0 -38
  367. md_processing/family_docs/Glossary/Create_Glossary.md +0 -42
  368. md_processing/family_docs/Glossary/Create_Term.md +0 -70
  369. md_processing/family_docs/Glossary.md +0 -206
  370. md_processing/family_docs/Governance Officer/Create_Business_Imperative.md +0 -106
  371. md_processing/family_docs/Governance Officer/Create_Certification_Type.md +0 -112
  372. md_processing/family_docs/Governance Officer/Create_Governance_Approach.md +0 -114
  373. md_processing/family_docs/Governance Officer/Create_Governance_Obligation.md +0 -114
  374. md_processing/family_docs/Governance Officer/Create_Governance_Principle.md +0 -114
  375. md_processing/family_docs/Governance Officer/Create_Governance_Procedure.md +0 -128
  376. md_processing/family_docs/Governance Officer/Create_Governance_Process.md +0 -122
  377. md_processing/family_docs/Governance Officer/Create_Governance_Processing_Purpose.md +0 -106
  378. md_processing/family_docs/Governance Officer/Create_Governance_Responsibility.md +0 -122
  379. md_processing/family_docs/Governance Officer/Create_Governance_Rule.md +0 -122
  380. md_processing/family_docs/Governance Officer/Create_Governance_Strategy.md +0 -106
  381. md_processing/family_docs/Governance Officer/Create_License_Type.md +0 -112
  382. md_processing/family_docs/Governance Officer/Create_Naming_Standard_Rule.md +0 -122
  383. md_processing/family_docs/Governance Officer/Create_Regulation_Article.md +0 -106
  384. md_processing/family_docs/Governance Officer/Create_Regulation_Definition.md +0 -118
  385. md_processing/family_docs/Governance Officer/Create_Security_Access_Control.md +0 -114
  386. md_processing/family_docs/Governance Officer/Create_Security_Group.md +0 -120
  387. md_processing/family_docs/Governance Officer/Create_Service_Level_Objectives.md +0 -122
  388. md_processing/family_docs/Governance Officer/Create_Threat_Definition.md +0 -106
  389. md_processing/family_docs/Governance Officer/Link_Governance_Controls.md +0 -32
  390. md_processing/family_docs/Governance Officer/Link_Governance_Drivers.md +0 -32
  391. md_processing/family_docs/Governance Officer/Link_Governance_Policies.md +0 -32
  392. md_processing/family_docs/Governance Officer/View_Governance_Definitions.md +0 -82
  393. md_processing/family_docs/Governance Officer.md +0 -2412
  394. md_processing/family_docs/Solution Architect/Create_Information_Supply_Chain.md +0 -70
  395. md_processing/family_docs/Solution Architect/Create_Solution_Blueprint.md +0 -44
  396. md_processing/family_docs/Solution Architect/Create_Solution_Component.md +0 -96
  397. md_processing/family_docs/Solution Architect/Create_Solution_Role.md +0 -66
  398. md_processing/family_docs/Solution Architect/Link_Information_Supply_Chain_Peers.md +0 -32
  399. md_processing/family_docs/Solution Architect/Link_Solution_Component_Peers.md +0 -32
  400. md_processing/family_docs/Solution Architect/View_Information_Supply_Chains.md +0 -32
  401. md_processing/family_docs/Solution Architect/View_Solution_Blueprints.md +0 -32
  402. md_processing/family_docs/Solution Architect/View_Solution_Components.md +0 -32
  403. md_processing/family_docs/Solution Architect/View_Solution_Roles.md +0 -32
  404. md_processing/family_docs/Solution Architect.md +0 -490
  405. md_processing/md_processing_utils/debug_log +0 -574
  406. md_processing/md_processing_utils/debug_log.log +0 -0
  407. md_processing/md_processing_utils/dr-egeria-help-2025-07-17T17:22:09.md +0 -2065
  408. md_processing/md_processing_utils/generated_help_terms.md +0 -842
  409. pyegeria/.DS_Store +0 -0
  410. pyegeria/README.md +0 -35
  411. pyegeria/_client_new.py +0 -1102
  412. pyegeria/_output_formats.py +0 -730
  413. pyegeria/asset_catalog_omvs.py +0 -864
  414. pyegeria/automated_curation_omvs.py +0 -3765
  415. pyegeria/config.py +0 -523
  416. pyegeria/egeria_my_client.py +0 -91
  417. pyegeria/feedback_manager_omvs.py +0 -4573
  418. pyegeria/load_config_orig.py +0 -218
  419. pyegeria/md_processing_helpers.py +0 -58
  420. pyegeria/md_processing_utils_orig.py +0 -1103
  421. pyegeria/metadata_explorer_omvs.py +0 -2326
  422. pyegeria/my_profile_omvs.py +0 -1022
  423. pyegeria/project_manager.py +0 -1591
  424. pyegeria/registered_info.py +0 -167
  425. pyegeria/template_manager_omvs.py +0 -1414
  426. pyegeria/utils.py +0 -256
  427. pyegeria-5.4.0.28.dist-info/METADATA +0 -77
  428. pyegeria-5.4.0.28.dist-info/RECORD +0 -343
  429. pyegeria-5.4.0.28.dist-info/entry_points.txt +0 -105
  430. /commands/cat/debug_log.log → /pyegeria/deprecated/__init__.py +0 -0
  431. /pyegeria/{_exceptions.py → deprecated/_exceptions.py} +0 -0
  432. /pyegeria/{collection_models.py → models/collection_models.py} +0 -0
  433. {pyegeria-5.4.0.28.dist-info → pyegeria-5.5.3.3.dist-info/licenses}/LICENSE +0 -0
@@ -0,0 +1,45 @@
1
+ # Auto-generated by gen_format_sets.py
2
+ from pyegeria.view._output_format_models import Column, Format, FormatSet, FormatSetDict
3
+
4
+ generated_format_sets = FormatSetDict({
5
+ 'Agreement-DrE': FormatSet(target_type='Agreement', heading='Agreement-DrE Attributes', description='Auto-generated format for Agreement (Create).', formats=[Format(types=['ALL'], columns=[Column(name='Display Name', key='display_name'), Column(name='Description', key='description'), Column(name='Identifier', key='agreement_identifier'), Column(name='Category', key='category'), Column(name='Status', key='element_status'), Column(name='User Defined Status', key='user_defined_status'), Column(name='Version Identifier', key='version_identifier'), Column(name='Agreement Actors', key='agreement_actors'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid')])]),
6
+ 'Business-Imperative-DrE': FormatSet(target_type='Business Imperative', heading='Business-Imperative-DrE Attributes', description='Auto-generated format for Business Imperative (Create).', formats=[Format(types=['ALL'], columns=[Column(name='Display Name', key='display_name'), Column(name='Summary', key='summary'), Column(name='Description', key='description'), Column(name='Category', key='category'), Column(name='Domain Identifier', key='domain_identifier'), Column(name='Identifier', key='identifier'), Column(name='Version Identifier', key='version_identifier'), Column(name='Usage', key='usage'), Column(name='Scope', key='scope'), Column(name='Importance', key='importance'), Column(name='Implications', key='implications'), Column(name='Outcomes', key='outcomes'), Column(name='Results', key='results'), Column(name='Status', key='element_status'), Column(name='User Defined Status', key='user_defined_status'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid')])]),
7
+ 'Category-DrE': FormatSet(target_type='Category', heading='Category-DrE Attributes', description='Auto-generated format for Category (Create).', formats=[Format(types=['ALL'], columns=[Column(name='Description', key='description'), Column(name='In Glossary', key='in_glossary'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid')])]),
8
+ 'certification_type-DrE': FormatSet(target_type='certification_type', heading='certification_type-DrE Attributes', description='Auto-generated format for certification_type (Create).', formats=[Format(types=['ALL'], columns=[Column(name='Display Name', key='display_name'), Column(name='Summary', key='summary'), Column(name='Description', key='description'), Column(name='Category', key='category'), Column(name='Domain Identifier', key='domain_identifier'), Column(name='Document Identifier', key='document_identifier'), Column(name='Version Identifier', key='version_identifier'), Column(name='Scope', key='scope'), Column(name='Importance', key='importance'), Column(name='Details', key='details'), Column(name='Implications', key='implications'), Column(name='Outcomes', key='outcomes'), Column(name='Results', key='results'), Column(name='Status', key='element_status'), Column(name='User Defined Status', key='user_defined_status'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid')])]),
9
+ 'Collection-DrE': FormatSet(target_type='Collection', heading='Collection-DrE Attributes', description='Auto-generated format for Collection (Create).', formats=[Format(types=['ALL'], columns=[Column(name='Display Name', key='display_name'), Column(name='Description', key='description'), Column(name='Classifications', key='classifications'), Column(name='Category', key='category'), Column(name='Version Identifier', key='current_version'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid')])]),
10
+ 'Data-Class-DrE': FormatSet(target_type='Data Class', heading='Data-Class-DrE Attributes', description='Auto-generated format for Data Class (Create).', formats=[Format(types=['ALL'], columns=[Column(name='Display Name', key='display_name'), Column(name='Description', key='description'), Column(name='Category', key='category'), Column(name='Status', key='element_status'), Column(name='Namespace', key='namespace'), Column(name='Match Property Names', key='match_property_names'), Column(name='Match Threshold', key='match_threshold'), Column(name='IsCaseSensitive', key='is_case_sensitive'), Column(name='Data Type', key='data_type'), Column(name='Allow Duplicate Values', key='duplicates_allowed'), Column(name='isNullable', key='is_nullable'), Column(name='Default Value', key='default_value'), Column(name='Average Value', key='avg_value'), Column(name='Value List', key='value_list'), Column(name='Value Range From', key='value_range_from'), Column(name='Value Range To', key='value_range_to'), Column(name='Sample Values', key='sample_values'), Column(name='Data Patterns', key='data_patterns'), Column(name='In Data Dictionary', key='in_data_dictionary'), Column(name='Containing Data Class', key='containing_data_class'), Column(name='Specializes Data Class', key='specializes_data_class'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid')])]),
11
+ 'Data-Dictionary-DrE': FormatSet(target_type='Data Dictionary', heading='Data-Dictionary-DrE Attributes', description='Auto-generated format for Data Dictionary (Create).', formats=[Format(types=['ALL'], columns=[Column(name='Display Name', key='display_name'), Column(name='Description', key='description'), Column(name='Category', key='category'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid')])]),
12
+ 'Data-Field-DrE': FormatSet(target_type='Data Field', heading='Data-Field-DrE Attributes', description='Auto-generated format for Data Field (Create).', formats=[Format(types=['ALL'], columns=[Column(name='Display Name', key='display_name'), Column(name='Description', key='description'), Column(name='Category', key='category'), Column(name='Status', key='element_status'), Column(name='Data Type', key='data_type'), Column(name='Position', key='position'), Column(name='Minimum Cardinality', key='min_cardinality'), Column(name='Maximum Cardinality', key='max_cardinality'), Column(name='In Data Structure', key='in_data_structure'), Column(name='Data Class', key='data_class'), Column(name='Glossary Term', key='glossary_term'), Column(name='isNullable', key='is_nullable'), Column(name='Minimum Length', key='min_length'), Column(name='Length', key='length'), Column(name='Precision', key='precision'), Column(name='Ordered Values', key='ordered_values'), Column(name='Units', key='units'), Column(name='Default Value', key='default_value'), Column(name='Version Identifier', key='version_id'), Column(name='In Data Dictionary', key='in_data_dictionary'), Column(name='Parent Data Field', key='parent_data_field'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid')])]),
13
+ 'Data-Processing-Purpose-DrE': FormatSet(target_type='Data Processing Purpose', heading='Data-Processing-Purpose-DrE Attributes', description='Auto-generated format for Data Processing Purpose (Create).', formats=[Format(types=['ALL'], columns=[Column(name='Display Name', key='display_name'), Column(name='Summary', key='summary'), Column(name='Description', key='description'), Column(name='Category', key='category'), Column(name='Domain Identifier', key='domain_identifier'), Column(name='Identifier', key='identifier'), Column(name='Version Identifier', key='version_identifier'), Column(name='Usage', key='usage'), Column(name='Scope', key='scope'), Column(name='Importance', key='importance'), Column(name='Implications', key='implications'), Column(name='Outcomes', key='outcomes'), Column(name='Results', key='results'), Column(name='Status', key='element_status'), Column(name='User Defined Status', key='user_defined_status'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid')])]),
14
+ 'Data-Sharing-Agreement-DrE': FormatSet(target_type='Data Sharing Agreement', heading='Data-Sharing-Agreement-DrE Attributes', description='Auto-generated format for Data Sharing Agreement (Create).', formats=[Format(types=['ALL'], columns=[Column(name='Display Name', key='display_name'), Column(name='Description', key='description'), Column(name='Category', key='category'), Column(name='Identifier', key='identifier'), Column(name='Status', key='element_status'), Column(name='User_Defined_Status', key='user_defined_status'), Column(name='Version Identifier', key='version_identifier'), Column(name='Product Manager', key='product_manager'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid')])]),
15
+ 'Data-Specification-DrE': FormatSet(target_type='Data Specification', heading='Data-Specification-DrE Attributes', description='Auto-generated format for Data Specification (Create).', formats=[Format(types=['ALL'], columns=[Column(name='Display Name', key='display_name'), Column(name='Description', key='description'), Column(name='Category', key='category'), Column(name='Collection Type', key='collection_type'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid')])]),
16
+ 'Data-Structure-DrE': FormatSet(target_type='Data Structure', heading='Data-Structure-DrE Attributes', description='Auto-generated format for Data Structure (Create).', formats=[Format(types=['ALL'], columns=[Column(name='Display Name', key='display_name'), Column(name='Description', key='description'), Column(name='Category', key='category'), Column(name='Status', key='element_status'), Column(name='In Data Specification', key='in_data_spec'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid')])]),
17
+ 'Digital-Product-Catalog-DrE': FormatSet(target_type='Digital Product Catalog', heading='Digital-Product-Catalog-DrE Attributes', description='Auto-generated format for Digital Product Catalog (Create).', formats=[Format(types=['ALL'], columns=[Column(name='Display Name', key='display_name'), Column(name='Description', key='description'), Column(name='Classifications', key='classifications'), Column(name='Category', key='category'), Column(name='Version Identifier', key='current_version'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid')])]),
18
+ 'Digital-Product-DrE': FormatSet(target_type='Digital Product', heading='Digital-Product-DrE Attributes', description='Auto-generated format for Digital Product (Create).', formats=[Format(types=['ALL'], columns=[Column(name='Display Name', key='display_name'), Column(name='Description', key='description'), Column(name='Product Name', key='product_name'), Column(name='Status', key='element_status'), Column(name='User Defined Status', key='user_defined_status'), Column(name='Category', key='category'), Column(name='Identifier', key='identifier'), Column(name='Maturity', key='maturity'), Column(name='Service Life', key='service_life'), Column(name='Introduction Date', key='introduction_date'), Column(name='Next Version Date', key='next_version_date'), Column(name='Withdrawal Date', key='withdrawal_date'), Column(name='Version Identifier', key='current_version'), Column(name='Product Manager', key='product_manager'), Column(name='Agreements', key='agreements'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid')])]),
19
+ 'Digital-Subscription-DrE': FormatSet(target_type='Digital Subscription', heading='Digital-Subscription-DrE Attributes', description='Auto-generated format for Digital Subscription (Create).', formats=[Format(types=['ALL'], columns=[Column(name='Display Name', key='display_name'), Column(name='Description', key='description'), Column(name='Identifier', key='identifier'), Column(name='Category', key='category'), Column(name='Status', key='element_status'), Column(name='User_Defined_Status', key='user_defined_status'), Column(name='Support Level', key='support_level'), Column(name='Service Levels', key='service_levels'), Column(name='Version Identifier', key='version_identifier'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid')])]),
20
+ 'Glossary-DrE': FormatSet(target_type='Glossary', heading='Glossary-DrE Attributes', description='Auto-generated format for Glossary (Create).', formats=[Format(types=['ALL'], columns=[Column(name='Display Name', key='display_name'), Column(name='Description', key='description'), Column(name='Category', key='category'), Column(name='Language', key='language'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid')])]),
21
+ 'Governance-Action-DrE': FormatSet(target_type='Governance Action', heading='Governance-Action-DrE Attributes', description='Auto-generated format for Governance Action (Create).', formats=[Format(types=['ALL'], columns=[Column(name='Display Name', key='display_name'), Column(name='Summary', key='summary'), Column(name='Description', key='description'), Column(name='Category', key='category'), Column(name='Domain Identifier', key='domain_identifier'), Column(name='Identifier', key='identifier'), Column(name='Version Identifier', key='version_identifier'), Column(name='Usage', key='usage'), Column(name='Scope', key='scope'), Column(name='Importance', key='importance'), Column(name='Implications', key='implications'), Column(name='Outcomes', key='outcomes'), Column(name='Results', key='results'), Column(name='Status', key='element_status'), Column(name='User Defined Status', key='user_defined_status'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid')])]),
22
+ 'Governance-Approach-DrE': FormatSet(target_type='Governance Approach', heading='Governance-Approach-DrE Attributes', description='Auto-generated format for Governance Approach (Create).', formats=[Format(types=['ALL'], columns=[Column(name='Display Name', key='display_name'), Column(name='Summary', key='summary'), Column(name='Description', key='description'), Column(name='Category', key='category'), Column(name='Domain Identifier', key='domain_identifier'), Column(name='Identifier', key='identifier'), Column(name='Version Identifier', key='version_identifier'), Column(name='Usage', key='usage'), Column(name='Scope', key='scope'), Column(name='Importance', key='importance'), Column(name='Implications', key='implications'), Column(name='Outcomes', key='outcomes'), Column(name='Results', key='results'), Column(name='Status', key='element_status'), Column(name='User Defined Status', key='user_defined_status'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid')])]),
23
+ 'Governance-Control-DrE': FormatSet(target_type='Governance Control', heading='Governance-Control-DrE Attributes', description='Auto-generated format for Governance Control (Create).', formats=[Format(types=['ALL'], columns=[Column(name='Display Name', key='display_name'), Column(name='Summary', key='summary'), Column(name='Description', key='description'), Column(name='Category', key='category'), Column(name='Domain Identifier', key='domain_identifier'), Column(name='Identifier', key='identifier'), Column(name='Version Identifier', key='version_identifier'), Column(name='Usage', key='usage'), Column(name='Scope', key='scope'), Column(name='Importance', key='importance'), Column(name='measurement', key='measurement'), Column(name='target', key='target'), Column(name='Implications', key='implications'), Column(name='Outcomes', key='outcomes'), Column(name='Results', key='results'), Column(name='Status', key='element_status'), Column(name='User Defined Status', key='user_defined_status'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid')])]),
24
+ 'Governance-Driver-DrE': FormatSet(target_type='Governance Driver', heading='Governance-Driver-DrE Attributes', description='Auto-generated format for Governance Driver (Create).', formats=[Format(types=['ALL'], columns=[Column(name='Display Name', key='display_name'), Column(name='Summary', key='summary'), Column(name='Description', key='description'), Column(name='Category', key='category'), Column(name='Domain Identifier', key='domain_identifier'), Column(name='Identifier', key='identifier'), Column(name='Version Identifier', key='version_identifier'), Column(name='Usage', key='usage'), Column(name='Scope', key='scope'), Column(name='Importance', key='importance'), Column(name='Implications', key='implications'), Column(name='Outcomes', key='outcomes'), Column(name='Results', key='results'), Column(name='Status', key='element_status'), Column(name='User Defined Status', key='user_defined_status'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid')])]),
25
+ 'Governance-Obligation-DrE': FormatSet(target_type='Governance Obligation', heading='Governance-Obligation-DrE Attributes', description='Auto-generated format for Governance Obligation (Create).', formats=[Format(types=['ALL'], columns=[Column(name='Display Name', key='display_name'), Column(name='Summary', key='summary'), Column(name='Description', key='description'), Column(name='Category', key='category'), Column(name='Domain Identifier', key='domain_identifier'), Column(name='Identifier', key='identifier'), Column(name='Version Identifier', key='version_identifier'), Column(name='Usage', key='usage'), Column(name='Scope', key='scope'), Column(name='Importance', key='importance'), Column(name='Implications', key='implications'), Column(name='Outcomes', key='outcomes'), Column(name='Results', key='results'), Column(name='Status', key='element_status'), Column(name='User Defined Status', key='user_defined_status'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid')])]),
26
+ 'Governance-Policy-DrE': FormatSet(target_type='Governance Policy', heading='Governance-Policy-DrE Attributes', description='Auto-generated format for Governance Policy (Create).', formats=[Format(types=['ALL'], columns=[Column(name='Display Name', key='display_name'), Column(name='Summary', key='summary'), Column(name='Description', key='description'), Column(name='Category', key='category'), Column(name='Domain Identifier', key='domain_identifier'), Column(name='Identifier', key='identifier'), Column(name='Version Identifier', key='version_identifier'), Column(name='Usage', key='usage'), Column(name='Scope', key='scope'), Column(name='Importance', key='importance'), Column(name='Implications', key='implications'), Column(name='Outcomes', key='outcomes'), Column(name='Results', key='results'), Column(name='Status', key='element_status'), Column(name='User Defined Status', key='user_defined_status'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid')])]),
27
+ 'Governance-Principle-DrE': FormatSet(target_type='Governance Principle', heading='Governance-Principle-DrE Attributes', description='Auto-generated format for Governance Principle (Create).', formats=[Format(types=['ALL'], columns=[Column(name='Display Name', key='display_name'), Column(name='Summary', key='summary'), Column(name='Description', key='description'), Column(name='Category', key='category'), Column(name='Domain Identifier', key='domain_identifier'), Column(name='Identifier', key='identifier'), Column(name='Version Identifier', key='version_identifier'), Column(name='Usage', key='usage'), Column(name='Scope', key='scope'), Column(name='Importance', key='importance'), Column(name='Implications', key='implications'), Column(name='Outcomes', key='outcomes'), Column(name='Results', key='results'), Column(name='Status', key='element_status'), Column(name='User Defined Status', key='user_defined_status'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid')])]),
28
+ 'governance_procedure-DrE': FormatSet(target_type='governance_procedure', heading='governance_procedure-DrE Attributes', description='Auto-generated format for governance_procedure (Create).', formats=[Format(types=['ALL'], columns=[Column(name='Display Name', key='display_name'), Column(name='Summary', key='summary'), Column(name='Description', key='description'), Column(name='Category', key='category'), Column(name='Domain Identifier', key='domain_identifier'), Column(name='Document Identifier', key='document_identifier'), Column(name='Version Identifier', key='version_identifier'), Column(name='Scope', key='scope'), Column(name='Importance', key='importance'), Column(name='Implementation Description', key='implementation_description'), Column(name='Supports Policies', key='supports_policies'), Column(name='Implications', key='implications'), Column(name='Outcomes', key='outcomes'), Column(name='Results', key='results'), Column(name='Status', key='element_status'), Column(name='User Defined Status', key='user_defined_status'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid')])]),
29
+ 'governance_responsibility-DrE': FormatSet(target_type='governance_responsibility', heading='governance_responsibility-DrE Attributes', description='Auto-generated format for governance_responsibility (Create).', formats=[Format(types=['ALL'], columns=[Column(name='Display Name', key='display_name'), Column(name='Summary', key='summary'), Column(name='Description', key='description'), Column(name='Category', key='category'), Column(name='Domain Identifier', key='domain_identifier'), Column(name='Document Identifier', key='document_identifier'), Column(name='Version Identifier', key='version_identifier'), Column(name='Scope', key='scope'), Column(name='Importance', key='importance'), Column(name='Implementation Description', key='implementation_description'), Column(name='Supports Policies', key='supports_policies'), Column(name='Implications', key='implications'), Column(name='Outcomes', key='outcomes'), Column(name='Results', key='results'), Column(name='Status', key='element_status'), Column(name='User Defined Status', key='user_defined_status'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid')])]),
30
+ 'governance_rule-DrE': FormatSet(target_type='governance_rule', heading='governance_rule-DrE Attributes', description='Auto-generated format for governance_rule (Create).', formats=[Format(types=['ALL'], columns=[Column(name='Display Name', key='display_name'), Column(name='Summary', key='summary'), Column(name='Description', key='description'), Column(name='Category', key='category'), Column(name='Domain Identifier', key='domain_identifier'), Column(name='Identifier', key='identifier'), Column(name='Version Identifier', key='version_identifier'), Column(name='Usage', key='usage'), Column(name='Scope', key='scope'), Column(name='Importance', key='importance'), Column(name='Implications', key='implications'), Column(name='Outcomes', key='outcomes'), Column(name='Results', key='results'), Column(name='Status', key='element_status'), Column(name='User Defined Status', key='user_defined_status'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid')])]),
31
+ 'governance_strategy-DrE': FormatSet(target_type='governance_strategy', heading='governance_strategy-DrE Attributes', description='Auto-generated format for governance_strategy (Create).', formats=[Format(types=['ALL'], columns=[Column(name='Display Name', key='display_name'), Column(name='Summary', key='summary'), Column(name='Description', key='description'), Column(name='Category', key='category'), Column(name='Domain Identifier', key='domain_identifier'), Column(name='Identifier', key='identifier'), Column(name='Version Identifier', key='version_identifier'), Column(name='Usage', key='usage'), Column(name='Scope', key='scope'), Column(name='Importance', key='importance'), Column(name='Implications', key='implications'), Column(name='Outcomes', key='outcomes'), Column(name='Results', key='results'), Column(name='Status', key='element_status'), Column(name='User Defined Status', key='user_defined_status'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid')])]),
32
+ 'Information-Supply-Chain-DrE': FormatSet(target_type='Information Supply Chain', heading='Information-Supply-Chain-DrE Attributes', description='Auto-generated format for Information Supply Chain (Create).', formats=[Format(types=['ALL'], columns=[Column(name='Display Name', key='display_name'), Column(name='Description', key='description'), Column(name='Category', key='category'), Column(name='Scope', key='scope'), Column(name='Purposes', key='purposes'), Column(name='Nested Information Supply Chains', key='nested_info_supply_chains'), Column(name='In Information Supply Chain', key='in_supply_chain'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid'), Column(name='Merge Update', key='merge_update')])]),
33
+ 'license_type-DrE': FormatSet(target_type='license_type', heading='license_type-DrE Attributes', description='Auto-generated format for license_type (Create).', formats=[Format(types=['ALL'], columns=[Column(name='Display Name', key='display_name'), Column(name='Summary', key='summary'), Column(name='Description', key='description'), Column(name='Category', key='category'), Column(name='Domain Identifier', key='domain_identifier'), Column(name='Document Identifier', key='document_identifier'), Column(name='Version Identifier', key='version_identifier'), Column(name='Scope', key='scope'), Column(name='Importance', key='importance'), Column(name='Details', key='details'), Column(name='Implications', key='implications'), Column(name='Outcomes', key='outcomes'), Column(name='Results', key='results'), Column(name='Status', key='element_status'), Column(name='User Defined Status', key='user_defined_status'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid')])]),
34
+ 'naming_standard_rule-DrE': FormatSet(target_type='naming_standard_rule', heading='naming_standard_rule-DrE Attributes', description='Auto-generated format for naming_standard_rule (Create).', formats=[Format(types=['ALL'], columns=[Column(name='Display Name', key='display_name'), Column(name='Summary', key='summary'), Column(name='Description', key='description'), Column(name='Category', key='category'), Column(name='Domain Identifier', key='domain_identifier'), Column(name='Document Identifier', key='document_identifier'), Column(name='Version Identifier', key='version_identifier'), Column(name='Scope', key='scope'), Column(name='Importance', key='importance'), Column(name='Implementation Description', key='implementation_description'), Column(name='Supports Policies', key='supports_policies'), Column(name='Name Patterns', key='implications'), Column(name='Outcomes', key='outcomes'), Column(name='Results', key='results'), Column(name='Status', key='element_status'), Column(name='User Defined Status', key='user_defined_status'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid')])]),
35
+ 'Project-DrE': FormatSet(target_type='Project', heading='Project-DrE Attributes', description='Auto-generated format for Project (Create).', formats=[Format(types=['ALL'], columns=[Column(name='Display Name', key='display_name'), Column(name='Description', key='description'), Column(name='Project Type', key='project_type'), Column(name='Category', key='category'), Column(name='Identifier', key='project_identifier'), Column(name='Mission', key='mission'), Column(name='Purposes', key='purposes'), Column(name='Start Date', key='start_date'), Column(name='Planned End Date', key='end_date'), Column(name='Priority', key='priority'), Column(name='Project Phase', key='project_phase'), Column(name='Project Status', key='project_status'), Column(name='Project Health', key='project_health'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid')])]),
36
+ 'Regulation-Article-DrE': FormatSet(target_type='Regulation Article', heading='Regulation-Article-DrE Attributes', description='Auto-generated format for Regulation Article (Create).', formats=[Format(types=['ALL'], columns=[Column(name='Display Name', key='display_name'), Column(name='Summary', key='summary'), Column(name='Description', key='description'), Column(name='Category', key='category'), Column(name='Domain Identifier', key='domain_identifier'), Column(name='Identifier', key='identifier'), Column(name='Version Identifier', key='version_identifier'), Column(name='Usage', key='usage'), Column(name='Scope', key='scope'), Column(name='Importance', key='importance'), Column(name='Implications', key='implications'), Column(name='Outcomes', key='outcomes'), Column(name='Results', key='results'), Column(name='Status', key='element_status'), Column(name='User Defined Status', key='user_defined_status'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid')])]),
37
+ 'regulation-DrE': FormatSet(target_type='regulation', heading='regulation-DrE Attributes', description='Auto-generated format for regulation (Create).', formats=[Format(types=['ALL'], columns=[Column(name='Display Name', key='display_name'), Column(name='Summary', key='summary'), Column(name='Description', key='description'), Column(name='Category', key='category'), Column(name='Domain Identifier', key='domain_identifier'), Column(name='Identifier', key='identifier'), Column(name='Version Identifier', key='version_identifier'), Column(name='Usage', key='usage'), Column(name='Scope', key='scope'), Column(name='Importance', key='importance'), Column(name='Regulation Source', key='regulation_source'), Column(name='Regulators', key='regulators'), Column(name='Implications', key='implications'), Column(name='Outcomes', key='outcomes'), Column(name='Results', key='results'), Column(name='Status', key='element_status'), Column(name='User Defined Status', key='user_defined_status'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid')])]),
38
+ 'security_access_control-DrE': FormatSet(target_type='security_access_control', heading='security_access_control-DrE Attributes', description='Auto-generated format for security_access_control (Create).', formats=[Format(types=['ALL'], columns=[Column(name='Display Name', key='display_name'), Column(name='Summary', key='summary'), Column(name='Description', key='description'), Column(name='Category', key='category'), Column(name='Domain Identifier', key='domain_identifier'), Column(name='Identifier', key='identifier'), Column(name='Version Identifier', key='version_identifier'), Column(name='Usage', key='usage'), Column(name='Scope', key='scope'), Column(name='Importance', key='importance'), Column(name='criteria', key='criteria'), Column(name='Implications', key='implications'), Column(name='Outcomes', key='outcomes'), Column(name='Results', key='results'), Column(name='Status', key='element_status'), Column(name='User Defined Status', key='user_defined_status'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid')])]),
39
+ 'security_group-DrE': FormatSet(target_type='security_group', heading='security_group-DrE Attributes', description='Auto-generated format for security_group (Create).', formats=[Format(types=['ALL'], columns=[Column(name='Display Name', key='display_name'), Column(name='Summary', key='summary'), Column(name='Description', key='description'), Column(name='Category', key='category'), Column(name='Domain Identifier', key='domain_identifier'), Column(name='Identifier', key='identifier'), Column(name='Version Identifier', key='version_identifier'), Column(name='Usage', key='usage'), Column(name='Scope', key='scope'), Column(name='Importance', key='importance'), Column(name='Implications', key='implications'), Column(name='Outcomes', key='outcomes'), Column(name='Results', key='results'), Column(name='Status', key='element_status'), Column(name='User Defined Status', key='user_defined_status'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid')])]),
40
+ 'service_level_objective-DrE': FormatSet(target_type='service_level_objective', heading='service_level_objective-DrE Attributes', description='Auto-generated format for service_level_objective (Create).', formats=[Format(types=['ALL'], columns=[Column(name='Display Name', key='display_name'), Column(name='Summary', key='summary'), Column(name='Description', key='description'), Column(name='Category', key='category'), Column(name='Domain Identifier', key='domain_identifier'), Column(name='Identifier', key='identifier'), Column(name='Version Identifier', key='version_identifier'), Column(name='Usage', key='usage'), Column(name='Scope', key='scope'), Column(name='Importance', key='importance'), Column(name='Implications', key='implications'), Column(name='Outcomes', key='outcomes'), Column(name='Results', key='results'), Column(name='Status', key='element_status'), Column(name='User Defined Status', key='user_defined_status'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid')])]),
41
+ 'Solution-Blueprint-DrE': FormatSet(target_type='Solution Blueprint', heading='Solution-Blueprint-DrE Attributes', description='Auto-generated format for Solution Blueprint (Create).', formats=[Format(types=['ALL'], columns=[Column(name='Display Name', key='display_name'), Column(name='Description', key='description'), Column(name='Category', key='category'), Column(name='Status', key='element_status'), Column(name='Version Identifier', key='version_id'), Column(name='Solution Components', key='solution_components'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid')])]),
42
+ 'Solution-Component-DrE': FormatSet(target_type='Solution Component', heading='Solution-Component-DrE Attributes', description='Auto-generated format for Solution Component (Create).', formats=[Format(types=['ALL'], columns=[Column(name='Display Name', key='display_name'), Column(name='Qualified Name', key='qualified_name'), Column(name='Category', key='category'), Column(name='Description', key='description'), Column(name='Status', key='element_status'), Column(name='Solution Component Type', key='soln_comp_type'), Column(name='Planned Deployed Implementation Type', key='planned_deployed_impl_type'), Column(name='Initial Status', key='initial_status'), Column(name='In Solution Components', key='in_components'), Column(name='In Solution Blueprints', key='solution_blueprints'), Column(name='In Information Supply Chains', key='in_supply_chains'), Column(name='Actors', key='actors'), Column(name='GUID', key='guid'), Column(name='Merge Update', key='merge_update')])]),
43
+ 'Solution-Role-DrE': FormatSet(target_type='Solution Role', heading='Solution-Role-DrE Attributes', description='Auto-generated format for Solution Role (Create).', formats=[Format(types=['ALL'], columns=[Column(name='Name', key='name'), Column(name='Description', key='description'), Column(name='Title', key='title'), Column(name='Scope', key='scope'), Column(name='identifier', key='identifier'), Column(name='Domain Identifier', key='domain_identifier'), Column(name='Category', key='category'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid')])]),
44
+ 'Threat-Definition-DrE': FormatSet(target_type='Threat Definition', heading='Threat-Definition-DrE Attributes', description='Auto-generated format for Threat Definition (Create).', formats=[Format(types=['ALL'], columns=[Column(name='Display Name', key='display_name'), Column(name='Summary', key='summary'), Column(name='Description', key='description'), Column(name='Category', key='category'), Column(name='Domain Identifier', key='domain_identifier'), Column(name='Identifier', key='identifier'), Column(name='Version Identifier', key='version_identifier'), Column(name='Usage', key='usage'), Column(name='Scope', key='scope'), Column(name='Importance', key='importance'), Column(name='Implications', key='implications'), Column(name='Outcomes', key='outcomes'), Column(name='Results', key='results'), Column(name='Status', key='element_status'), Column(name='User Defined Status', key='user_defined_status'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid')])])
45
+ })
@@ -0,0 +1,182 @@
1
+ """
2
+ This is an ongoing experiment in parsing and playing with Freddie docs
3
+ """
4
+ import os
5
+ import sys
6
+ from datetime import datetime
7
+
8
+ from loguru import logger
9
+ from pydantic import ValidationError
10
+
11
+ from rich import print
12
+ from rich.console import Console
13
+
14
+ from md_processing import (extract_command, process_provenance_command, get_current_datetime_string, command_list)
15
+
16
+ from md_processing.command_mapping import setup_dispatcher
17
+
18
+ from pyegeria import EgeriaTech, PyegeriaException, print_basic_exception, print_validation_error
19
+
20
+ EGERIA_METADATA_STORE = os.environ.get("EGERIA_METADATA_STORE", "active-metadata-store")
21
+ EGERIA_KAFKA_ENDPOINT = os.environ.get("KAFKA_ENDPOINT", "localhost:9092")
22
+ EGERIA_PLATFORM_URL = os.environ.get("EGERIA_PLATFORM_URL", "https://localhost:9443")
23
+ EGERIA_VIEW_SERVER = os.environ.get("EGERIA_VIEW_SERVER", "view-server")
24
+ EGERIA_VIEW_SERVER_URL = os.environ.get("EGERIA_VIEW_SERVER_URL", "https://localhost:9443")
25
+ EGERIA_INTEGRATION_DAEMON = os.environ.get("EGERIA_INTEGRATION_DAEMON", "integration-daemon")
26
+ EGERIA_INTEGRATION_DAEMON_URL = os.environ.get("EGERIA_INTEGRATION_DAEMON_URL", "https://localhost:9443")
27
+ EGERIA_ADMIN_USER = os.environ.get("ADMIN_USER", "garygeeke")
28
+ EGERIA_ADMIN_PASSWORD = os.environ.get("ADMIN_PASSWORD", "secret")
29
+ EGERIA_USER = os.environ.get("EGERIA_USER", "erinoverview")
30
+ EGERIA_USER_PASSWORD = os.environ.get("EGERIA_USER_PASSWORD", "secret")
31
+ EGERIA_WIDTH = os.environ.get("EGERIA_WIDTH", 220)
32
+ EGERIA_JUPYTER = os.environ.get("EGERIA_JUPYTER", False)
33
+ EGERIA_HOME_GLOSSARY_GUID = os.environ.get("EGERIA_HOME_GLOSSARY_GUID", None)
34
+ EGERIA_GLOSSARY_PATH = os.environ.get("EGERIA_GLOSSARY_PATH", None)
35
+ EGERIA_ROOT_PATH = os.environ.get("EGERIA_ROOT_PATH", "../../")
36
+ EGERIA_INBOX_PATH = os.environ.get("EGERIA_INBOX_PATH", "md_processing/dr_egeria_inbox")
37
+ EGERIA_OUTBOX_PATH = os.environ.get("EGERIA_OUTBOX_PATH", "md_processing/dr_egeria_outbox")
38
+
39
+ log_format = "{time} | {level} | {function} | {line} | {message} | {extra}"
40
+ logger.remove()
41
+ logger.add(sys.stderr, level="ERROR", format=log_format, colorize=True)
42
+ logger.add("debug_log.log", rotation="1 day", retention="1 week", compression="zip", level="INFO", format=log_format,
43
+ colorize=True)
44
+
45
+ @logger.catch
46
+ def process_md_file(input_file: str, output_folder:str, directive: str, server: str, url: str, userid: str,
47
+ user_pass: str ) -> None:
48
+ """
49
+ Process a markdown file by parsing and executing Dr. Egeria md_commands. Write output to a new file.
50
+ """
51
+
52
+ cmd_list = command_list
53
+ console = Console(width=int(EGERIA_WIDTH))
54
+ client = EgeriaTech(server, url, user_id=userid)
55
+ token = client.create_egeria_bearer_token(userid, user_pass)
56
+
57
+ # Initialize the dispatcher
58
+ dispatcher = setup_dispatcher()
59
+
60
+ updated = False
61
+ full_file_path = os.path.join(EGERIA_ROOT_PATH, EGERIA_INBOX_PATH, input_file)
62
+ logger.info("\n\n====================================================\n\n")
63
+ logger.info(f"Processing Markdown File: {full_file_path}")
64
+ try:
65
+ with open(full_file_path, 'r') as f:
66
+ lines = f.readlines()
67
+ except FileNotFoundError:
68
+ print(f"Error: File not found at path: {full_file_path}")
69
+ return {} # Return empty dict if file not found
70
+
71
+ final_output = []
72
+ prov_found = False
73
+ prov_output = (f"\n# Provenance\n\n* Results from processing file {input_file} on "
74
+ f"{datetime.now().strftime('%Y-%m-%d %H:%M')}\n")
75
+ h1_blocks = []
76
+ current_block = ""
77
+ in_h1_block = False
78
+
79
+ # Helper function to process the current block
80
+ def process_current_block(current_block):
81
+ nonlocal updated, final_output, prov_found, prov_output, h1_blocks, in_h1_block
82
+
83
+ if not current_block:
84
+ return # No block to process
85
+
86
+ potential_command = extract_command(current_block) # Extract object_action
87
+ if potential_command in cmd_list:
88
+ # Process the block based on the object_action
89
+ if potential_command == "Provenance":
90
+ result = process_provenance_command(input_file, current_block)
91
+ prov_found = True
92
+ else:
93
+ # Use the dispatcher for all other commands
94
+ result = dispatcher.dispatch(potential_command, client, current_block, directive)
95
+
96
+ # Error handling logic
97
+ if result is None and potential_command != "Provenance":
98
+ handler = dispatcher.get_handler(potential_command)
99
+ if not handler:
100
+ print(f"\n===> Unknown command: {potential_command}")
101
+
102
+ if result:
103
+ if directive == "process":
104
+ updated = True
105
+ final_output.append(result)
106
+ elif directive == "validate":
107
+ pass
108
+ elif directive == "process":
109
+ # Only warn if it looked like a valid command but failed (or was unknown)
110
+ print(f"\n==>\tErrors found while processing command: \'{potential_command}\'\n"
111
+ f"\tPlease correct and try again. \n")
112
+ final_output.append(current_block)
113
+ final_output.append('\n____\n')
114
+ else:
115
+ # If there is no object_action, append the block as-is
116
+ final_output.append(current_block)
117
+
118
+ # Main parsing loop
119
+ for line in lines:
120
+ line = line.strip() # Remove leading/trailing whitespace
121
+
122
+ # Handle a new H1 block (starting with `# `)
123
+ if line.startswith("# "):
124
+ if in_h1_block:
125
+ # Process the current block before starting a new one
126
+ process_current_block(current_block)
127
+
128
+ # Start a new H1 block
129
+ current_block = line
130
+ in_h1_block = True
131
+
132
+ # Handle the end of a block (line starts with `---`)
133
+ elif line.startswith("___") or line.startswith("---"):
134
+ if in_h1_block:
135
+ # Process the current block when it ends with `---`
136
+ current_block += f"\n{line}"
137
+ process_current_block(current_block)
138
+ current_block = "" # Clear the block
139
+ in_h1_block = False
140
+
141
+ # Add lines to the current H1 block
142
+ elif in_h1_block:
143
+ current_block += f"\n{line}"
144
+
145
+ # Append non-H1 content directly to the output
146
+ else:
147
+ final_output.append(line)
148
+
149
+ # Ensure the final H1 block is processed if the file doesn't end with `---`
150
+ if in_h1_block:
151
+ process_current_block(current_block)
152
+
153
+ # Join the final output list into a single string
154
+ final_output = "\n".join(final_output) if isinstance(final_output, list) else final_output
155
+
156
+ try:
157
+ if updated:
158
+ path, filename = os.path.split(input_file) # Get both parts
159
+ new_filename = f"processed-{get_current_datetime_string()}-{filename}" # Create the new filename
160
+
161
+ if output_folder:
162
+ new_file_path = os.path.join(EGERIA_ROOT_PATH, EGERIA_OUTBOX_PATH, output_folder, new_filename)
163
+ else:
164
+ new_file_path = os.path.join(EGERIA_ROOT_PATH, EGERIA_OUTBOX_PATH, new_filename)
165
+ os.makedirs(os.path.dirname(new_file_path), exist_ok=True)
166
+
167
+ with open(new_file_path, 'w') as f2:
168
+ f2.write(final_output)
169
+ if not prov_found:
170
+ f2.write(prov_output)
171
+ print(f"\n==> Output written to {new_file_path}")
172
+ else:
173
+ if directive != 'display':
174
+ print("\nNo updates detected. New File not created.")
175
+ # logger.error(f"===> Unknown Command? <===")
176
+
177
+ except PyegeriaException as e:
178
+ print_basic_exception(e)
179
+ except ValidationError as e:
180
+ print_validation_error(e)
181
+ except (Exception):
182
+ console.print_exception(show_locals=True)