pyegeria 5.3.5.3__tar.gz → 5.3.6.1__tar.gz

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.
Files changed (254) hide show
  1. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/PKG-INFO +1 -1
  2. pyegeria-5.3.5.3/pyegeria/commands/cat/freddie_jupyter.py → pyegeria-5.3.6.1/pyegeria/commands/cat/freddie_jup.py +1 -1
  3. pyegeria-5.3.6.1/pyegeria/commands/cat/freddie_jupyter.py +131 -0
  4. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/cat/freddie_md.py +45 -42
  5. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/cat/freddie_utils.py +112 -52
  6. pyegeria-5.3.6.1/pyegeria/commands/cat/freddies-inbox/freddie_intro.md +221 -0
  7. pyegeria-5.3.6.1/pyegeria/commands/cat/freddies-inbox/glossary_creation_experiment.ipynb +341 -0
  8. pyegeria-5.3.6.1/pyegeria/commands/cat/freddies-inbox/glossary_exp.md +158 -0
  9. pyegeria-5.3.6.1/pyegeria/commands/cat/glossary_creation_experiment.ipynb +235 -0
  10. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyproject.toml +1 -1
  11. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/LICENSE +0 -0
  12. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/README.md +0 -0
  13. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/README.md +0 -0
  14. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/__init__.py +0 -0
  15. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/_client.py +0 -0
  16. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/_deprecated_gov_engine.py +0 -0
  17. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/_exceptions.py +0 -0
  18. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/_globals.py +0 -0
  19. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/_validators.py +0 -0
  20. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/asset_catalog_omvs.py +0 -0
  21. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/automated_curation_omvs.py +0 -0
  22. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/classification_manager_omvs.py +0 -0
  23. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/collection_manager_omvs.py +0 -0
  24. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/README.md +0 -0
  25. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/__init__.py +0 -0
  26. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/cat/README.md +0 -0
  27. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/cat/__init__.py +0 -0
  28. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/cat/exp_list_glossaries.py +0 -0
  29. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/cat/get_asset_graph.py +0 -0
  30. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/cat/get_collection.py +0 -0
  31. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/cat/get_project_dependencies.py +0 -0
  32. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/cat/get_project_structure.py +0 -0
  33. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/cat/get_tech_type_elements.py +0 -0
  34. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/cat/glossary_actions.py +0 -0
  35. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/cat/list_assets.py +0 -0
  36. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/cat/list_cert_types.py +0 -0
  37. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/cat/list_collections.py +0 -0
  38. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/cat/list_deployed_catalogs.py +0 -0
  39. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/cat/list_deployed_database_schemas.py +0 -0
  40. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/cat/list_deployed_databases.py +0 -0
  41. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/cat/list_deployed_servers.py +0 -0
  42. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/cat/list_glossaries.py +0 -0
  43. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/cat/list_projects.py +0 -0
  44. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/cat/list_tech_type_elements.py +0 -0
  45. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/cat/list_tech_types.py +0 -0
  46. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/cat/list_terms.py +0 -0
  47. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/cat/list_todos.py +0 -0
  48. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/cat/list_user_ids.py +0 -0
  49. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/cli/__init__.py +0 -0
  50. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/cli/egeria.py +0 -0
  51. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/cli/egeria_cat.py +0 -0
  52. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/cli/egeria_login_tui.py +0 -0
  53. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/cli/egeria_my.py +0 -0
  54. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/cli/egeria_ops.py +0 -0
  55. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/cli/egeria_tech.py +0 -0
  56. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/cli/ops_config.py +0 -0
  57. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/cli/txt_custom_v2.tcss +0 -0
  58. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/README.md +0 -0
  59. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/README.md +0 -0
  60. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/cat/show/assets/asset-graph 2024-11-20 at 15.56.42.png +0 -0
  61. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/cat/show/assets/assets-in-domain 2024-11-20 at 15.49.55@2x.png +0 -0
  62. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/cat/show/assets/elements-of-type 2024-11-20 at 16.01.35.png +0 -0
  63. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/cat/show/assets/tech-type-elements 2024-11-20 at 16.05.05.png +0 -0
  64. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/cat/show/deployed-data/deployed-data-catalogs 2024-12-17 at 15.43.27@2x.png +0 -0
  65. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/cat/show/deployed-data/deployed-data-catalogs-2024-11-20 at 16.17.43@2x.png +0 -0
  66. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/cat/show/deployed-data/deployed-schemas 2024-11-25 at 20.14.50@2x.png +0 -0
  67. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/cat/show/deployed-data/deployed-schemas 2024-12-17 at 15.48.38@2x.png +0 -0
  68. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/cat/show/deployed-data/deployed-servers 2024-11-25 at 20.21.25@2x.png +0 -0
  69. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/cat/show/deployed-data/deployed-servers 2024-12-17 at 15.52.16@2x.png +0 -0
  70. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/cat/show/deployed-data/deployed_databases 2024-12-16 at 16.40.31@2x.png +0 -0
  71. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/cat/show/glossary/list-glossaries 2024-11-25 at 20.30.02.png +0 -0
  72. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/cat/show/glossary/list-terms 2024-11-25 at 20.32.11.png +0 -0
  73. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/cat/show/info/asset-types 2024-11-25 at 20.34.19@2x.png +0 -0
  74. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/cat/show/info/certification-types 2024-11-25 at 20.37.07.png +0 -0
  75. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/cat/show/info/collection-graph 2024-12-12 at 11.33.18@2x.png +0 -0
  76. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/cat/show/info/list-collections 2024-12-10 at 14.25.51@2x.png +0 -0
  77. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/cat/show/info/list-todos 2024-12-12 at 11.46.30@2x.png +0 -0
  78. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/cat/show/info/list-user-ids 2024-12-12 at 11.51.09@2x.png +0 -0
  79. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/cat/show/info/tech-types 2024-12-12 at 11.37.20@2x.png +0 -0
  80. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/cat/show/projects/project_dependencies 2024-12-14 at 16.24.39@2x.png +0 -0
  81. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/cat/show/projects/project_structure 2024-12-14 at 16.21.35@2x.png +0 -0
  82. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/cat/show/projects/projects 2024-12-14 at 16.18.10@2x.png +0 -0
  83. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/hey_egeria tui 2024-12-16 at 16.58.22@2x.png +0 -0
  84. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/my/show/my_profile 2024-12-14 at 16.29.27@2x.png +0 -0
  85. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/my/show/my_roles 2024-12-14 at 16.32.10@2x.png +0 -0
  86. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/my/show/my_todos 2024-12-15 at 16.24.13@2x.png +0 -0
  87. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/my/show/open_todos 2024-12-14 at 16.36.12@2x.png +0 -0
  88. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/ops/show/engines/list_engine_activity compressed 2024-12-15 at 16.48.48@2x.png +0 -0
  89. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/ops/show/engines/monitor_engine_activity 2024-12-15 at 16.32.55@2x.png +0 -0
  90. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/ops/show/engines/monitor_engine_activity compressed 2024-12-15 at 16.38.29@2x.png +0 -0
  91. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/ops/show/engines/monitor_engine_status 2024-12-15 at 16.51.26.jpeg +0 -0
  92. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/ops/show/integrations/monitor_integration_daemon_status 2024-12-15 at 16.57.12@2x.png +0 -0
  93. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/ops/show/integrations/monitor_integration_targets 2024-12-15 at 17.02.19@2x.png +0 -0
  94. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/ops/show/platforms/monitor_platform_status 2024-12-15 at 19.53.18@2x.png +0 -0
  95. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/ops/show/servers/monitor_server_status 2024-12-15 at 19.59.39@2x.png +0 -0
  96. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/ops/show/servers/monitor_server_status full 2024-12-15 at 20.01.57@2x.png +0 -0
  97. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/ops/show/servers/monitor_startup_servers 2024-12-15 at 19.56.07@2x.png +0 -0
  98. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/tech/show/elements/get_anchored_elements 2024-12-15 at 21.25.41@2x.png +0 -0
  99. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/tech/show/elements/get_elements_of_om_type 2024-12-16 at 14.39.59@2x.png +0 -0
  100. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/tech/show/elements/info_for_guid 2024-12-16 at 11.35.29@2x.png +0 -0
  101. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/tech/show/elements/list_elements_by_om-type 2024-12-16 at 14.24.18@2x.png +0 -0
  102. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/tech/show/elements/list_elements_by_om-type extended 2024-12-16 at 14.28.46@2x.png +0 -0
  103. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/tech/show/elements/list_elements_of_om_type_by_classification 2024-12-16 at 14.35.26@2x.png +0 -0
  104. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/tech/show/elements/related_elements 2024-12-16 at 14.55.01@2x.png +0 -0
  105. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/tech/show/elements/show_related_specifications 2024-12-16 at 15.04.55@2x.png +0 -0
  106. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/tech/show/tech-info/asset_types 2024-12-16 at 15.10.16@2x.png +0 -0
  107. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/tech/show/tech-info/detailed_governance_action_processes 2024-12-16 at 15.16.26@2x.png +0 -0
  108. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/tech/show/tech-info/governance_action_processes 2024-12-16 at 15.13.01@2x.png +0 -0
  109. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/tech/show/tech-info/registered_services 2024-12-16 at 16.44.54@2x.png +0 -0
  110. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/tech/show/tech-info/relationship_types 2024-12-16 at 16.20.34@2x.png +0 -0
  111. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/tech/show/tech-info/relationship_types 2024-12-19 at 10.51.54@2x.png +0 -0
  112. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/tech/show/tech-info/valid_metadata_values 2024-12-16 at 15.31.56@2x.png +0 -0
  113. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/tech/show/tech-types/list_tech_type_template_specs 2024-12-16 at 16.03.22@2x.png +0 -0
  114. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/tech/show/tech-types/list_technology_types 2024-12-16 at 15.39.20@2x.png +0 -0
  115. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/tech/show/tech-types/tech_type_details 2024-12-16 at 15.37.21@2x.png +0 -0
  116. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/Visual Command Reference/tech/show/tech-types/tech_type_templates 2024-12-16 at 16.11.48@2x.png +0 -0
  117. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/glossary/basic-glossary-tui.md +0 -0
  118. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/glossary/images/delete-glossary-step1 2024-11-06 at 15.47.23@2x.png +0 -0
  119. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/glossary/images/delete-glossary-step2 2024-11-06 at 15.51.29@2x.png +0 -0
  120. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/glossary/images/delete-glossary-step3 2024-11-06 at 15.53.19@2x.png +0 -0
  121. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/glossary/images/delete-glossary-step4 2024-11-06 at 15.55.11@2x.png +0 -0
  122. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/glossary/images/out-create-glossary example 2024-11-05 at 20.38.04@2x.png +0 -0
  123. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/glossary/images/out-create-term 2024-11-06 at 20.48.29.png +0 -0
  124. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/glossary/images/out-delete-term 2024-11-07 at 03.57.25.png +0 -0
  125. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/glossary/images/out-display-terms-for-glossary-test 2024-11-06 at 20.51.28.png +0 -0
  126. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/glossary/images/out-export-example 2024-11-07 at 09.54.57.png +0 -0
  127. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/glossary/images/out-exported-terms 2024-11-06 at 21.06.32.png +0 -0
  128. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/glossary/images/out-glossary-list example 2024-11-05 at 20.41.02@2x.png +0 -0
  129. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/glossary/images/out-import-terms 2024-11-07 at 08.15.18.png +0 -0
  130. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/glossary/images/out-list-all-terms 2024-11-06 at 16.22.20@2x.png +0 -0
  131. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/glossary/images/out-list-terms-for-example 2024-11-06 at 16.40.12.png +0 -0
  132. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/glossary/images/out-list-terms-second 2024-11-06 at 16.45.13.png +0 -0
  133. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/glossary/images/out-pipx install pyegeria 2024-11-10 at 18.12.21.png +0 -0
  134. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/glossary/images/out-server-status-full 2024-11-10 at 18.25.14.png +0 -0
  135. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/glossary/images/out-servers-status 2024-11-10 at 18.15.42.png +0 -0
  136. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/glossary/images/out-upsert-import 2024-11-07 at 19.37.00.png +0 -0
  137. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/glossary/images/tui-2024-11-10 at 18.26.29.png +0 -0
  138. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/glossary/images/tui-create-glossary example 2024-11-05 at 20.34.24@2x.png +0 -0
  139. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/glossary/images/tui-create-term 2024-11-06 at 20.46.35.png +0 -0
  140. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/glossary/images/tui-delete-term 2024-11-07 at 03.51.57.png +0 -0
  141. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/glossary/images/tui-display-terms-for-example 2024-11-06 at 20.56.49.png +0 -0
  142. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/glossary/images/tui-export-example 2024-11-07 at 09.52.59.png +0 -0
  143. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/glossary/images/tui-hey-egeria 2024-11-10 at 18.31.01.png +0 -0
  144. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/glossary/images/tui-import-upsert-example 2024-11-07 at 10.08.37.png +0 -0
  145. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/glossary/images/tui-list-terms-second 2024-11-06 at 16.46.34.png +0 -0
  146. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/glossary/images/tui-load-archive.png +0 -0
  147. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/glossary/images/tui-server-status-full 2024-11-10 at 19.14.36.png +0 -0
  148. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/glossary/images/tui-show-glossaries 2024-11-07 at 20.00.05.png +0 -0
  149. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/glossary/images/tui-show-glossary-terms 2024-11-05 at 19.37.53@2x.png +0 -0
  150. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/glossary/images/tui-upsert 2024-11-07 at 11.49.04.png +0 -0
  151. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/glossary/images/upsert-example.om-terms 2024-11-07 at 11.44.05.png +0 -0
  152. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/README.md +0 -0
  153. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/images/CleanShot 2024-11-18 at 21.32.03@2x.png +0 -0
  154. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/images/Xmind 1731421782704.png +0 -0
  155. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/images/Xmind 1731422134920.png +0 -0
  156. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/images/hey_egeria 2024-11-12 at 20.38.43.png +0 -0
  157. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/images/hey_egeria cat 2024-11-12 at 21.41.43.png +0 -0
  158. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/images/out-integ-status-list 2024-11-12 at 16.45.26.png +0 -0
  159. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/images/out-integ-status-live 2024-11-12 at 16.44.12@2x.png +0 -0
  160. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/images/out-server-status 2024-11-10 at 18.15.42@2x.png +0 -0
  161. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/images/out-server-status-full 2024-11-10 at 18.25.14@2x.png +0 -0
  162. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/images/short-cut commands 2024-11-12 at 22.22.13.png +0 -0
  163. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/images/tui-hey-egeria.png +0 -0
  164. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/images/tui-integration-status-paging.png +0 -0
  165. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/images/tui-load-archive 2024-11-10 at 19.19.09@2x.png +0 -0
  166. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/images/tui-show-server-status 2024-11-10 at 18.52.01@2x.png +0 -0
  167. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/images/tui-show-server-status-full 2024-11-10.png +0 -0
  168. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/images/tui-status-paging 2024-11-12 at 16.26.14@2x.png +0 -0
  169. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/my/README.md +0 -0
  170. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/my/__init__.py +0 -0
  171. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/my/list_my_profile.py +0 -0
  172. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/my/list_my_roles.py +0 -0
  173. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/my/monitor_my_todos.py +0 -0
  174. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/my/monitor_open_todos.py +0 -0
  175. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/my/todo_actions.py +0 -0
  176. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/ops/README.md +0 -0
  177. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/ops/__init__.py +0 -0
  178. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/ops/gov_server_actions.py +0 -0
  179. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/ops/list_archives.py +0 -0
  180. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/ops/list_catalog_targets.py +0 -0
  181. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/ops/load_archive.py +0 -0
  182. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/ops/monitor_asset_events.py +0 -0
  183. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/ops/monitor_engine_activity.py +0 -0
  184. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/ops/monitor_engine_activity_c.py +0 -0
  185. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/ops/monitor_gov_eng_status.py +0 -0
  186. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/ops/monitor_integ_daemon_status.py +0 -0
  187. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/ops/monitor_platform_status.py +0 -0
  188. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/ops/monitor_server_startup.py +0 -0
  189. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/ops/monitor_server_status.py +0 -0
  190. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/ops/orig_monitor_server_list.py +0 -0
  191. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/ops/orig_monitor_server_status.py +0 -0
  192. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/ops/refresh_integration_daemon.py +0 -0
  193. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/ops/restart_integration_daemon.py +0 -0
  194. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/ops/table_integ_daemon_status.py +0 -0
  195. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/ops/x_engine_actions.py +0 -0
  196. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/tech/README.md +0 -0
  197. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/tech/__init__.py +0 -0
  198. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/tech/get_element_info.py +0 -0
  199. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/tech/get_guid_info.py +0 -0
  200. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/tech/get_tech_details.py +0 -0
  201. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/tech/get_tech_type_template.py +0 -0
  202. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/tech/list_all_om_type_elements.py +0 -0
  203. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/tech/list_all_om_type_elements_x.py +0 -0
  204. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/tech/list_all_related_elements.py +0 -0
  205. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/tech/list_anchored_elements.py +0 -0
  206. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/tech/list_asset_types.py +0 -0
  207. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/tech/list_elements_by_classification_by_property_value.py +0 -0
  208. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/tech/list_elements_by_property_value.py +0 -0
  209. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/tech/list_elements_by_property_value_x.py +0 -0
  210. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/tech/list_elements_for_classification.py +0 -0
  211. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/tech/list_gov_action_processes.py +0 -0
  212. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/tech/list_information_supply_chains.py +0 -0
  213. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/tech/list_registered_services.py +0 -0
  214. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/tech/list_related_elements_with_prop_value.py +0 -0
  215. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/tech/list_related_specification.py +0 -0
  216. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/tech/list_relationship_types.py +0 -0
  217. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/tech/list_relationships.py +0 -0
  218. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/tech/list_solution_blueprints.py +0 -0
  219. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/tech/list_solution_components.py +0 -0
  220. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/tech/list_solution_roles.py +0 -0
  221. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/tech/list_tech_templates.py +0 -0
  222. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/tech/list_valid_metadata_values.py +0 -0
  223. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/tech/table_tech_templates.py +0 -0
  224. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/commands/tech/x_list_related_elements.py +0 -0
  225. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/core_omag_server_config.py +0 -0
  226. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/create_tech_guid_lists.py +0 -0
  227. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/egeria_cat_client.py +0 -0
  228. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/egeria_client.py +0 -0
  229. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/egeria_config_client.py +0 -0
  230. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/egeria_my_client.py +0 -0
  231. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/egeria_tech_client.py +0 -0
  232. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/feedback_manager_omvs.py +0 -0
  233. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/full_omag_server_config.py +0 -0
  234. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/glossary_browser_omvs.py +0 -0
  235. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/glossary_manager_omvs.py +0 -0
  236. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/m_test.py +0 -0
  237. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/mermaid_utilities.py +0 -0
  238. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/metadata_explorer_omvs.py +0 -0
  239. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/my_profile_omvs.py +0 -0
  240. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/platform_services.py +0 -0
  241. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/project_manager_omvs.py +0 -0
  242. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/registered_info.py +0 -0
  243. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/runtime_manager_omvs.py +0 -0
  244. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/server_operations.py +0 -0
  245. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/solution_architect_omvs.py +0 -0
  246. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/template_manager_omvs.py +0 -0
  247. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/test_j.html +0 -0
  248. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/test_m.html +0 -0
  249. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/test_m1.html +0 -0
  250. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/test_mer.ipynb +0 -0
  251. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/test_w.html +0 -0
  252. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/utils.py +0 -0
  253. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/valid_metadata_omvs.py +0 -0
  254. {pyegeria-5.3.5.3 → pyegeria-5.3.6.1}/pyegeria/x_action_author_omvs.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: pyegeria
3
- Version: 5.3.5.3
3
+ Version: 5.3.6.1
4
4
  Summary: A python client for Egeria
5
5
  License: Apache 2.0
6
6
  Keywords: egeria,metadata,governance
@@ -2,7 +2,7 @@
2
2
  This is an ongoing experiment in parsing and playing with Freddie docs
3
3
  """
4
4
  import json
5
-
5
+ import marko
6
6
  from jupyter_notebook_parser import JupyterNotebookParser
7
7
  import nbformat
8
8
  import os
@@ -0,0 +1,131 @@
1
+ """
2
+ This is an ongoing experiment in parsing and playing with Freddie docs
3
+ """
4
+ import json
5
+
6
+ from jupyter_notebook_parser import JupyterNotebookParser
7
+ import nbformat
8
+ import os
9
+ import re
10
+ from pyegeria import EgeriaTech
11
+ from rich import box, print
12
+ from rich.console import Console
13
+ from rich.markdown import Markdown
14
+ from rich.prompt import Prompt
15
+ from rich.table import Table
16
+ from freddie_utils import (extract_command, process_glossary_upsert_command, process_term_upsert_command,
17
+ get_current_datetime_string, process_per_proj_upsert_command, commands)
18
+ import click
19
+ from pyegeria import EgeriaTech, body_slimmer, NO_GLOSSARIES_FOUND, NO_TERMS_FOUND, NO_ELEMENTS_FOUND, NO_PROJECTS_FOUND
20
+ from pyegeria._exceptions import (
21
+ InvalidParameterException,
22
+ PropertyServerException,
23
+ print_exception_response,
24
+ )
25
+ from datetime import datetime
26
+
27
+ EGERIA_METADATA_STORE = os.environ.get("EGERIA_METADATA_STORE", "active-metadata-store")
28
+ EGERIA_KAFKA_ENDPOINT = os.environ.get("KAFKA_ENDPOINT", "localhost:9092")
29
+ EGERIA_PLATFORM_URL = os.environ.get("EGERIA_PLATFORM_URL", "https://localhost:9443")
30
+ EGERIA_VIEW_SERVER = os.environ.get("EGERIA_VIEW_SERVER", "view-server")
31
+ EGERIA_VIEW_SERVER_URL = os.environ.get(
32
+ "EGERIA_VIEW_SERVER_URL", "https://localhost:9443"
33
+ )
34
+ EGERIA_INTEGRATION_DAEMON = os.environ.get("EGERIA_INTEGRATION_DAEMON", "integration-daemon")
35
+ EGERIA_INTEGRATION_DAEMON_URL = os.environ.get(
36
+ "EGERIA_INTEGRATION_DAEMON_URL", "https://localhost:9443"
37
+ )
38
+ EGERIA_ADMIN_USER = os.environ.get("ADMIN_USER", "garygeeke")
39
+ EGERIA_ADMIN_PASSWORD = os.environ.get("ADMIN_PASSWORD", "secret")
40
+ EGERIA_USER = os.environ.get("EGERIA_USER", "erinoverview")
41
+ EGERIA_USER_PASSWORD = os.environ.get("EGERIA_USER_PASSWORD", "secret")
42
+ EGERIA_WIDTH = os.environ.get("EGERIA_WIDTH", 220)
43
+ EGERIA_JUPYTER = os.environ.get("EGERIA_JUPYTER", False)
44
+ EGERIA_HOME_GLOSSARY_GUID = os.environ.get("EGERIA_HOME_GLOSSARY_GUID", None)
45
+ EGERIA_GLOSSARY_PATH = os.environ.get("EGERIA_GLOSSARY_PATH", None)
46
+ EGERIA_ROOT_PATH = os.environ.get("EGERIA_ROOT_PATH", "/Users/dwolfson/localGit/egeria-v5-3/egeria-python")
47
+ EGERIA_FREDDIE_INBOX_PATH = os.environ.get("EGERIA_FREDDIE_INBOX_PATH", "pyegeria/commands/cat/freddies-inbox")
48
+ EGERIA_FREDDIE_OUTBOX_PATH = os.environ.get("EGERIA_FREDDIE_OUTBOX_PATH", "pyegeria/commands/cat/freddies-outbox")
49
+
50
+ console = Console(width=int(EGERIA_WIDTH))
51
+
52
+
53
+
54
+ @click.command("process-jupyter")
55
+ @click.option("--file-path", help="File path to notebook",
56
+ default="glossary_creation_experiment.ipynb")
57
+ @click.option("--directive", default="display-only", help="How to process the file")
58
+ @click.option("--server", default=EGERIA_VIEW_SERVER, help="Egeria view server to use.")
59
+ @click.option(
60
+ "--url", default=EGERIA_VIEW_SERVER_URL, help="URL of Egeria platform to connect to"
61
+ )
62
+ @click.option("--userid", default=EGERIA_USER, help="Egeria user")
63
+ @click.option("--user_pass", default=EGERIA_USER_PASSWORD, help="Egeria user password")
64
+ def process_jupyter_notebook(
65
+ file_path: str,
66
+ directive: str,
67
+ server: str,
68
+ url: str,
69
+ userid: str,
70
+ user_pass: str,
71
+ ):
72
+ client = EgeriaTech(server, url, user_id=userid)
73
+ token = client.create_egeria_bearer_token(userid, user_pass)
74
+
75
+ element_dictionary = {}
76
+
77
+ try:
78
+ updated = False
79
+ full_file_path = os.path.join(EGERIA_ROOT_PATH, EGERIA_FREDDIE_INBOX_PATH, file_path)
80
+ click.echo(f"Processing notebook: {full_file_path}")
81
+ with open(full_file_path, 'r') as f:
82
+ nb = nbformat.read(f, as_version=4)
83
+ for cell in nb.cells:
84
+ if cell.cell_type == 'markdown':
85
+ if cell.source.strip().startswith('#'):
86
+ potential_command = extract_command(cell.source)
87
+ if potential_command in commands:
88
+ if potential_command in ["Create Glossary", "Update Glossary"]:
89
+ result = process_glossary_upsert_command(client, element_dictionary,
90
+ cell.source, directive)
91
+
92
+ elif potential_command in ["Create Term", "Update Term"]:
93
+ result = process_term_upsert_command(client, element_dictionary,
94
+ cell.source, directive)
95
+ elif potential_command in ["Create Personal Project", "Update Personal Project"]:
96
+ result = process_per_proj_upsert_command(client, element_dictionary, cell.source, directive)
97
+ else:
98
+ # If command is not recognized, copy the block as-is
99
+ result = None
100
+
101
+ if result:
102
+ if directive == "process":
103
+ updated = True
104
+ cell.source = result
105
+ # print(json.dumps(element_dictionary, indent=4))
106
+ elif directive == "process":
107
+ # Handle case with errors (skip this block but notify the user)
108
+ print(f"\n==>\tErrors found while processing command: \'{potential_command}\'\n"
109
+ f"\tPlease correct and try again. \n")
110
+
111
+
112
+ if updated:
113
+ path, filename = os.path.split(file_path) # Get both parts
114
+ new_filename = f"processed-{get_current_datetime_string()}-{filename}" # Create the new filename
115
+ new_file_path = os.path.join(EGERIA_ROOT_PATH, EGERIA_FREDDIE_OUTBOX_PATH, new_filename) # Construct the new path
116
+ os.makedirs(os.path.dirname(new_file_path), exist_ok=True)
117
+
118
+
119
+ with open(new_file_path, 'w') as f2:
120
+ nbformat.write(nb, f2)
121
+ click.echo(f"\n==>Notebook written to {new_file_path}")
122
+ else:
123
+ click.echo("\nNo updates detected. New file not created.")
124
+
125
+ except Exception as e:
126
+ print_exception_response(e)
127
+ return
128
+
129
+
130
+ if __name__ == "__main__":
131
+ process_jupyter_notebook()
@@ -17,13 +17,13 @@ from freddie_utils import (extract_command, process_glossary_upsert_command, pro
17
17
  get_current_datetime_string, process_per_proj_upsert_command, commands)
18
18
 
19
19
  import click
20
- from pyegeria import EgeriaTech, body_slimmer, NO_GLOSSARIES_FOUND, NO_TERMS_FOUND, NO_ELEMENTS_FOUND
20
+ from pyegeria import EgeriaTech, body_slimmer, NO_GLOSSARIES_FOUND, NO_TERMS_FOUND, NO_ELEMENTS_FOUND, NO_PROJECTS_FOUND
21
21
  from pyegeria._exceptions import (
22
22
  InvalidParameterException,
23
23
  PropertyServerException,
24
24
  print_exception_response,
25
25
  )
26
- import datetime
26
+ from datetime import datetime
27
27
 
28
28
  EGERIA_METADATA_STORE = os.environ.get("EGERIA_METADATA_STORE", "active-metadata-store")
29
29
  EGERIA_KAFKA_ENDPOINT = os.environ.get("KAFKA_ENDPOINT", "localhost:9092")
@@ -44,9 +44,10 @@ EGERIA_WIDTH = os.environ.get("EGERIA_WIDTH", 220)
44
44
  EGERIA_JUPYTER = os.environ.get("EGERIA_JUPYTER", False)
45
45
  EGERIA_HOME_GLOSSARY_GUID = os.environ.get("EGERIA_HOME_GLOSSARY_GUID", None)
46
46
  EGERIA_GLOSSARY_PATH = os.environ.get("EGERIA_GLOSSARY_PATH", None)
47
- EGERIA_ROOT_PATH = os.environ.get("EGERIA_ROOT_PATH", "/Users/dwolfson/localGit/egeria-v5-3/egeria-workspaces")
48
- EGERIA_FREDDIE_INBOX_PATH = os.environ.get("EGERIA_FREDDIE_INBOX_PATH", "exchange/loading-bay/freddies-inbox")
49
- EGERIA_FREDDIE_OUTBOX_PATH = os.environ.get("EGERIA_FREDDIE_OUTBOX_PATH", "exchange/distribution-hub/freddies-outbox")
47
+ EGERIA_ROOT_PATH = os.environ.get("EGERIA_ROOT_PATH", "/Users/dwolfson/localGit/egeria-v5-3/egeria-python")
48
+ EGERIA_FREDDIE_INBOX_PATH = os.environ.get("EGERIA_FREDDIE_INBOX_PATH", "pyegeria/commands/cat/freddies-inbox")
49
+ EGERIA_FREDDIE_OUTBOX_PATH = os.environ.get("EGERIA_FREDDIE_OUTBOX_PATH", "pyegeria/commands/cat/freddies-outbox")
50
+
50
51
  console = Console(width=int(EGERIA_WIDTH))
51
52
 
52
53
 
@@ -54,7 +55,7 @@ console = Console(width=int(EGERIA_WIDTH))
54
55
  @click.command("process-markdown-file", help="Process a markdown file and return the output as a string.")
55
56
  @click.option("--file-path", help="File path to markdown file",
56
57
  default="glossary_exp.md")
57
- @click.option("--directive", default="display", help="How to process the file")
58
+ @click.option("--directive", default="display-only", help="How to process the file")
58
59
  @click.option("--server", default=EGERIA_VIEW_SERVER, help="Egeria view server to use.")
59
60
  @click.option(
60
61
  "--url", default=EGERIA_VIEW_SERVER_URL, help="URL of Egeria platform to connect to"
@@ -69,6 +70,7 @@ def process_markdown_file(
69
70
  userid: str,
70
71
  user_pass: str,
71
72
  ):
73
+
72
74
  client = EgeriaTech(server, url, user_id=userid)
73
75
  token = client.create_egeria_bearer_token(userid, user_pass)
74
76
 
@@ -82,9 +84,12 @@ def process_markdown_file(
82
84
  print(f"Error: File not found at path: {full_file_path}")
83
85
  return {} # Return empty dict if file not found
84
86
 
87
+ final_output = (f"\n# Results from processing file {file_path} on "
88
+ f"{datetime.now().strftime("%Y-%m-%d %H:%M")}\n---\n")
85
89
  h1_blocks = []
86
90
  current_block = ""
87
91
  in_h1_block = False
92
+ element_dictionary = {}
88
93
 
89
94
  for line in lines:
90
95
  line = line.strip() # Remove leading/trailing whitespace
@@ -100,57 +105,55 @@ def process_markdown_file(
100
105
  in_h1_block = False
101
106
  elif in_h1_block: # Add line to the current H1 block
102
107
  current_block += "\n" + line
108
+ else:
109
+ # Add non-H1 blocks directly to the final output
110
+ final_output += line
103
111
 
104
112
  if current_block: # Add the last H1 block
105
113
  h1_blocks.append(current_block)
106
114
 
107
- processed_blocks = ''
115
+ # Process each identified H1 block
108
116
  for block in h1_blocks:
109
- potential_command = extract_command(block)
117
+ potential_command = extract_command(block) # Extract potential command
110
118
 
111
119
  if potential_command in commands:
120
+ # Process the block based on the command
112
121
  if potential_command in ["Create Glossary", "Update Glossary"]:
113
- result = process_glossary_upsert_command(client, block, directive)
114
- if result:
115
- if directive == "process":
116
- updated = True
117
- processed_blocks += f'\n---\n{result} \n---\n'
118
- else:
119
- print(f"\n==>\tErrors found while processing command: \'{potential_command}\'\n"
120
- f"\tPlease correct and try again. \n")
121
- continue
122
- if potential_command in ["Create Term", "Update Term"]:
123
- result = process_term_upsert_command(client, block, directive)
124
- if result:
125
- if directive == "process":
126
- updated = True
127
- processed_blocks += f'\n---\n{result} \n---\n\n'
128
- else:
129
- print(f"\n==>\tErrors found while processing command: \'{potential_command}\'\n"
130
- f"\tPlease correct and try again. \n")
131
- continue
132
-
133
- if potential_command in ["Create Personal Project", "Update Personal Project"]:
134
- result = process_per_proj_upsert_command(client, block, directive)
135
- if result:
136
- if directive == "process":
137
- updated = True
138
- processed_blocks += f'\n---\n{result} \n---\n\n'
139
- else:
140
- print(f"\n==>\tErrors found while processing command: \'{potential_command}\'\n"
141
- f"\tPlease correct and try again. \n")
142
- continue
143
-
122
+ result = process_glossary_upsert_command(client, element_dictionary, block, directive)
123
+ elif potential_command in ["Create Term", "Update Term"]:
124
+ result = process_term_upsert_command(client, element_dictionary, block, directive)
125
+ elif potential_command in ["Create Personal Project", "Update Personal Project"]:
126
+ result = process_per_proj_upsert_command(client, element_dictionary, block, directive)
127
+ else:
128
+ # If command is not recognized, copy the block as-is
129
+ result = None
130
+
131
+ if result:
132
+ if directive == "process":
133
+ updated = True
134
+ final_output += f"\n---\n{result}\n---\n\n"
135
+ # print(json.dumps(element_dictionary, indent=4))
136
+ elif directive == "process":
137
+ # Handle case with errors (skip this block but notify the user)
138
+ print(f"\n==>\tErrors found while processing command: \'{potential_command}\'\n"
139
+ f"\tPlease correct and try again. \n")
140
+ final_output += f"\n---\n{block}\n---\n\n"
141
+ else:
142
+ # If no command is detected, add the block to the final output as-is
143
+ final_output += f"\n---\n{block}\n---\n\n"
144
+
145
+ # Write the final_output to a new file if updated
144
146
  if updated:
145
147
  path, filename = os.path.split(file_path) # Get both parts
146
148
  new_filename = f"processed-{get_current_datetime_string()}-{filename}" # Create the new filename
147
149
  new_file_path = os.path.join(EGERIA_ROOT_PATH, EGERIA_FREDDIE_OUTBOX_PATH, new_filename) # Construct the new path
148
150
  os.makedirs(os.path.dirname(new_file_path), exist_ok=True)
149
151
 
150
-
151
152
  with open(new_file_path, 'w') as f2:
152
- f2.write(processed_blocks)
153
- click.echo(f"\n==>Notebook written to {new_file_path}")
153
+ f2.write(final_output)
154
+ click.echo(f"\n==> Notebook written to {new_file_path}")
155
+ else:
156
+ click.echo("\nNo updates detected. New File not created.")
154
157
 
155
158
 
156
159
 
@@ -30,6 +30,7 @@ commands = ["Create Glossary", "Update Glossary",
30
30
  ERROR = "ERROR-> "
31
31
  INFO = "INFO- "
32
32
  WARNING = "WARNING-> "
33
+ pre_command = "\n---\n==> Processing command:"
33
34
 
34
35
  def is_valid_iso_date(date_text) -> bool:
35
36
  """Checks if the given string is a valid ISO date."""
@@ -65,22 +66,30 @@ def extract_attribute (text: str, label: str) -> str | None:
65
66
  """
66
67
  pattern = r"## " + re.escape(label) + r"\n(.*?)(?:##|$)" # Construct pattern
67
68
  match = re.search(pattern, text, re.DOTALL)
68
- if match:
69
- return match.group(1).strip()
69
+ if match and not match.group(1).isspace():
70
+ txt =match.group(1).strip()
71
+ return txt
70
72
  return None
71
73
 
72
74
  def update_a_command(txt: str, command: str, obj_type: str, q_name: str, u_guid: str)->str:
73
75
  u_guid = u_guid if u_guid else " "
74
- txt = txt.replace(f"{command}", f'**Update {obj_type}**\n') # update the command
76
+ verb = command.split(' ')[0].strip()
77
+ action = "Update" if (verb == "Create" and u_guid is not None) else "Create"
78
+ txt = txt.replace(f"{command}", f'**{action} {obj_type}**\n') # update the command
75
79
  txt = txt.replace('<GUID>', f'**GUID**\n{u_guid}') # update with GUID
76
80
  txt = txt.replace('<Qualified Name>', f"**Qualified Name**\n{q_name}")
81
+ if "Qualified Name" not in txt:
82
+ txt += f"\n## **Qualified Name**\n{q_name}\n"
83
+ if "GUID" not in txt:
84
+ txt += f"\n## **GUID**\n{u_guid}\n"
77
85
  # if command == "Update Term":
78
86
  # txt = txt.replace('Update Description', f"**Update Description**\n")
79
87
  return txt
80
88
 
81
89
 
82
90
 
83
- def process_glossary_upsert_command(egeria_client: EgeriaTech, txt: str, directive: str = "display" ) -> str | None:
91
+ def process_glossary_upsert_command(egeria_client: EgeriaTech, element_dictionary: dict, txt: str,
92
+ directive: str = "display" ) -> str | None:
84
93
  """
85
94
  Processes a glossary create or update command by extracting key attributes such as
86
95
  glossary name, language, description, and usage from the given cell.
@@ -95,15 +104,17 @@ def process_glossary_upsert_command(egeria_client: EgeriaTech, txt: str, directi
95
104
  object_action = command.split(' ')[0].strip()
96
105
 
97
106
  glossary_name = extract_attribute(txt, 'Glossary Name')
98
- print(f"\n==> Processing command: {command} for glossary: {glossary_name} with directive: {directive} ")
107
+ print(Markdown(f"{pre_command} `{command}` for glossary: `{glossary_name}` with directive: `{directive}` "))
99
108
  language = extract_attribute(txt, 'Language')
100
109
  description = extract_attribute(txt, 'Description')
101
110
  usage = extract_attribute(txt, 'Usage')
102
111
  glossary_display = (f"\n* Command: {command}\n\t* Glossary: {glossary_name}\n\t"
103
- f"* Language: {language}\n\t* Description: {description}\n\t"
104
- f"* Usage: {usage}")
112
+ f"* Language: {language}\n\t* Description:\n{description}\n"
113
+ f"* Usage: {usage}\n"
114
+ f"* Qualified Name: <Qualified Name>\n"
115
+ f"* GUID: <GUID>\n\n")
105
116
 
106
- def validate_glossary(obj_action: str) -> tuple[bool, bool, str]:
117
+ def validate_glossary(obj_action: str) -> tuple[bool, bool, str | None, str | None]:
107
118
  valid = True
108
119
  msg = ""
109
120
  known_glossary_guid = None
@@ -124,18 +135,25 @@ def process_glossary_upsert_command(egeria_client: EgeriaTech, txt: str, directi
124
135
  if description is None:
125
136
  msg += f"* {INFO}Description is missing\n"
126
137
 
138
+ if len(glossary_details) > 1 and glossary_exists:
139
+ msg += f"* {ERROR}More than one glossary with name {glossary_name} found\n"
140
+ valid = False
141
+ if len(glossary_details) == 1:
142
+ known_glossary_guid = glossary_details[0]['elementHeader'].get('guid', None)
143
+ known_q_name = glossary_details[0]['glossaryProperties'].get('qualifiedName', None)
144
+
127
145
  if obj_action == "Update":
128
146
  q_name = extract_attribute(txt, 'Qualified Name')
129
147
 
130
148
  if not glossary_exists:
131
149
  msg += f"* {ERROR}Glossary {glossary_name} does not exist\n"
132
150
  valid = False
133
- if len(glossary_details) > 1 and glossary_exists:
134
- msg += f"* {ERROR}More than one glossary with name {glossary_name} found\n"
135
- valid = False
136
- if len(glossary_details) == 1:
137
- known_glossary_guid = glossary_details[0]['elementHeader'].get('guid', None)
138
- known_q_name = glossary_details[0]['glossaryProperties'].get('qualifiedName',None)
151
+ # if len(glossary_details) > 1 and glossary_exists:
152
+ # msg += f"* {ERROR}More than one glossary with name {glossary_name} found\n"
153
+ # valid = False
154
+ # if len(glossary_details) == 1:
155
+ # known_glossary_guid = glossary_details[0]['elementHeader'].get('guid', None)
156
+ # known_q_name = glossary_details[0]['glossaryProperties'].get('qualifiedName',None)
139
157
  if q_name is None:
140
158
  msg += f"* {INFO}Qualified Name is missing => can use known qualified name of {known_q_name}\n"
141
159
  valid = True
@@ -147,16 +165,18 @@ def process_glossary_upsert_command(egeria_client: EgeriaTech, txt: str, directi
147
165
  msg += f"* -->Glossary {glossary_name} exists and can be updated\n"
148
166
  else:
149
167
  msg += f"* --> validation failed\n"
150
- msg+='---'
168
+
151
169
  print(Markdown(msg))
152
170
  return valid, glossary_exists, known_glossary_guid, known_q_name
153
171
 
154
172
  elif obj_action == "Create":
155
173
  if glossary_exists:
156
- msg += f"{ERROR}Glossary {glossary_name} already exists"
157
- valid = False
158
- else:
174
+ msg += f"{ERROR}Glossary {glossary_name} already exists\n"
175
+
176
+ elif valid:
159
177
  msg += f"-->It is valid to create Glossary \'{glossary_name}\' with:\n"
178
+ msg += glossary_display
179
+
160
180
  print(Markdown(msg))
161
181
  return valid, glossary_exists, known_glossary_guid, known_q_name
162
182
 
@@ -175,8 +195,9 @@ def process_glossary_upsert_command(egeria_client: EgeriaTech, txt: str, directi
175
195
  return None
176
196
  if object_action == "Update":
177
197
  if not exists:
178
- print(f"\n-->Glossary {glossary_name} does not exist")
179
- return None
198
+ print(f"\n{ERROR}Glossary {glossary_name} does not exist! Updating result document with Create command\n")
199
+ return update_a_command(txt, command, object_type, known_q_name, known_guid)
200
+
180
201
  body = {
181
202
  "class": "ReferenceableRequestBody",
182
203
  "elementProperties":
@@ -190,26 +211,32 @@ def process_glossary_upsert_command(egeria_client: EgeriaTech, txt: str, directi
190
211
  }
191
212
  egeria_client.update_glossary(known_guid, body)
192
213
  print(f"\n-->Updated Glossary {glossary_name} with GUID {known_guid}")
214
+ element_dictionary[f"glossary.{glossary_name}"] = {'guid' : known_guid,
215
+ 'q_name' : known_q_name
216
+ }
193
217
  return update_a_command(txt, command, object_type, known_q_name, known_guid)
194
218
  elif object_action == "Create" :
195
219
  guid = None
196
- q_name = f"Glossary:{glossary_name}:{get_current_datetime_string()}"
197
220
 
198
221
  if exists:
199
- print(f"Glossary {glossary_name} already exists")
222
+ print(f"\nGlossary {glossary_name} already exists and result document updated\n")
200
223
  return update_a_command(txt, command, object_type, known_q_name, known_guid)
201
224
  else:
202
225
  guid = egeria_client.create_glossary(glossary_name, description,
203
226
  language, usage)
204
227
  glossary = egeria_client.get_glossary_by_guid(guid)
205
228
  if glossary == NO_GLOSSARIES_FOUND:
206
- print(f"Just created with GUID {guid} but Glossary not found")
229
+ print(f"{ERROR}Just created with GUID {guid} but Glossary not found\n")
207
230
  return None
208
- q_name = glossary['glossaryProperties']["qualifiedName"]
209
- return update_a_command(txt, command, object_type, q_name, guid)
231
+ qualified_name = glossary['glossaryProperties']["qualifiedName"]
232
+ element_dictionary[f"glossary.{glossary_name}"] = {
233
+ 'guid': guid,
234
+ 'q_name': qualified_name
235
+ }
236
+ return update_a_command(txt, command, object_type, qualified_name, guid)
210
237
 
211
238
 
212
- def process_term_upsert_command(egeria_client: EgeriaTech, txt: str, directive: str = "display" ) -> str | None:
239
+ def process_term_upsert_command(egeria_client: EgeriaTech, element_dictionary: dict, txt: str, directive: str = "display" ) -> str | None:
213
240
  """
214
241
  Processes a term create or update command by extracting key attributes such as
215
242
  term name, summary, description, abbreviation, examples, usage, version, and status from the given cell.
@@ -234,9 +261,10 @@ def process_term_upsert_command(egeria_client: EgeriaTech, txt: str, directive:
234
261
  status = extract_attribute(txt, 'Status')
235
262
  glossary_name = extract_attribute(txt, 'Glossary Name')
236
263
 
237
- print(f"\n==> Processing command: {command} for Term {term_name} with directive: {directive}")
264
+ print(Markdown(f"{pre_command} `{command}` for term: `{term_name}` with directive: `{directive}`"))
238
265
 
239
- def validate_term(obj_action: str) -> tuple[bool, bool, str]:
266
+ def validate_term(obj_action: str) -> tuple[bool, bool, str | None, str | None]:
267
+ nonlocal version
240
268
  valid = True
241
269
  msg = ""
242
270
  known_term_guid = None
@@ -256,8 +284,25 @@ def process_term_upsert_command(egeria_client: EgeriaTech, txt: str, directive:
256
284
  valid = False
257
285
  if status is None:
258
286
  msg += f"* {INFO}Term status is missing - will default to DRAFT"
259
- if obj_action == "Update": # check to see if provided information exists and is consistent with existing info
260
287
 
288
+ if summary is None:
289
+ msg += f"* {INFO}Term summary is missing\n"
290
+
291
+ if description is None:
292
+ msg += f"* {INFO}Term description is missing\n"
293
+
294
+ if abbreviation is None:
295
+ msg += f"* {INFO}Term abbreviation is missing\n"
296
+ if examples is None:
297
+ msg += f"* {INFO}Term examples is missing\n"
298
+ if usage is None:
299
+ msg += f"* {INFO}Term usage is missing\n"
300
+ if version is None:
301
+ msg += f"* {INFO}Term version is missing - will default to 0.0.1\n"
302
+ version = "0.0.1"
303
+
304
+
305
+ if obj_action == "Update": # check to see if provided information exists and is consistent with existing info
261
306
  if not term_exists:
262
307
  msg += f"* {ERROR}Term {term_name} does not exist\n"
263
308
  valid = False
@@ -274,19 +319,20 @@ def process_term_upsert_command(egeria_client: EgeriaTech, txt: str, directive:
274
319
  else:
275
320
  msg += f"--> * Term {term_name} exists and can be updated\n"
276
321
  msg += term_display
277
- msg += '\n---\n'
322
+
278
323
  print(Markdown(msg))
279
- return valid, term_exists, known_term_guid
324
+ return valid, term_exists, known_term_guid, known_q_name
280
325
 
281
326
  elif obj_action == 'Create': # if the command is create, check that it doesn't already exist
282
327
  if term_exists:
283
- msg += f"{WARNING}Term \'{term_name}\' already exists\n"
284
-
328
+ msg += f"\n{WARNING}Term \'{term_name}\' already exists, response document updated.\n"
329
+ elif not valid:
330
+ msg += f"\n-->Validation checks failed in creating Term \'{term_name}\' with: {term_display}\n"
285
331
  else:
286
- msg += f"-->It is valid to create Term \'{term_name}\' with: {term_display}\n"
287
- msg += '\n---\n'
332
+ msg += f"\n-->It is valid to create Term \'{term_name}\' with: {term_display}\n"
333
+
288
334
  print(Markdown(msg))
289
- return valid, term_exists, known_term_guid
335
+ return valid, term_exists, known_term_guid, known_q_name
290
336
 
291
337
  if object_action == "Update":
292
338
  term_guid = extract_attribute(txt, 'GUID')
@@ -311,11 +357,11 @@ def process_term_upsert_command(egeria_client: EgeriaTech, txt: str, directive:
311
357
  print(Markdown(term_display))
312
358
  return None
313
359
  elif directive == "validate":
314
- is_valid, exists, known_guid = validate_term(object_action)
360
+ is_valid, exists, known_guid, known_q_name = validate_term(object_action)
315
361
  valid = is_valid if is_valid else None
316
362
  return valid
317
363
  elif directive == "process":
318
- is_valid, exists, known_guid = validate_term(object_action)
364
+ is_valid, exists, known_guid, known_q_name = validate_term(object_action)
319
365
  if not is_valid: # First validate the term before we process it
320
366
  return None
321
367
 
@@ -328,7 +374,7 @@ def process_term_upsert_command(egeria_client: EgeriaTech, txt: str, directive:
328
374
  "elementProperties":
329
375
  {
330
376
  "class": "GlossaryTermProperties",
331
- "qualifiedName": q_name,
377
+ "qualifiedName": known_q_name,
332
378
  "summary": summary,
333
379
  "description": description,
334
380
  "abbreviation": abbreviation,
@@ -341,20 +387,28 @@ def process_term_upsert_command(egeria_client: EgeriaTech, txt: str, directive:
341
387
  }
342
388
  egeria_client.update_term(known_guid, body)
343
389
  print(f"\n-->Updated Term {term_name} with GUID {known_guid}")
344
- return update_a_command(txt, command, object_type, q_name, known_guid)
390
+ return update_a_command(txt, command, object_type, known_q_name, known_guid)
345
391
 
346
392
  elif object_action == "Create" :
347
393
  guid = None
348
394
  q_name = f"GlossaryTerm:{term_name}:{get_current_datetime_string()}"
349
395
  if exists:
350
- print(f"\n-->Term {term_name} exists and document updated")
351
- return update_a_command(txt, command, object_type, q_name, guid)
396
+ print(f"\n{ERROR}Term {term_name} exists and result document updated")
397
+ return update_a_command(txt, command, object_type, q_name, known_guid)
352
398
  else:
353
- ## get the guid for the glossary from the name
354
- glossary_guid = egeria_client.__get_guid__(property_name="displayName", display_name=glossary_name)
355
- if glossary_guid == NO_ELEMENTS_FOUND:
356
- print(f"Glossary {glossary_name} not found")
357
- return None
399
+ ## get the guid for the glossary from the name - first look locally
400
+ glossary = element_dictionary.get(f"glossary.{glossary_name}",None)
401
+
402
+ if glossary is not None:
403
+ glossary_guid = glossary.get('guid', None)
404
+ if glossary_guid is None:
405
+ print(f"{ERROR}Glossary reference {glossary_name} not found")
406
+ return None
407
+ else:
408
+ glossary_guid = egeria_client.__get_guid__(property_name="displayName", display_name=glossary_name)
409
+ if glossary_guid == NO_ELEMENTS_FOUND:
410
+ print(f"{ERROR}Glossary {glossary_name} not found")
411
+ return None
358
412
  term_body = {
359
413
  "class": "ReferenceableRequestBody",
360
414
  "elementProperties":
@@ -377,10 +431,15 @@ def process_term_upsert_command(egeria_client: EgeriaTech, txt: str, directive:
377
431
  "initialStatus": status
378
432
  }
379
433
  term_guid = egeria_client.create_controlled_glossary_term(glossary_guid, term_body)
434
+ if term_guid == NO_ELEMENTS_FOUND:
435
+ print(f"{ERROR}Term {term_name} not created")
436
+ return None
380
437
  print(f"\n-->Created Term {term_name} with GUID {term_guid}")
438
+ element_dictionary[f"term.{term_name}"] = {'guid': term_guid, 'q_name': q_name}
381
439
  return update_a_command(txt, command, object_type, q_name, term_guid)
382
440
 
383
- def process_per_proj_upsert_command(egeria_client: EgeriaTech, txt: str, directive: str = "display" ) -> str | None:
441
+
442
+ def process_per_proj_upsert_command(egeria_client: EgeriaTech, element_dictionary: dict, txt: str, directive: str = "display" ) -> str | None:
384
443
  """
385
444
  Processes a personal project create or update command by extracting key attributes such as
386
445
  glossary name, language, description, and usage from the given cell.
@@ -403,7 +462,7 @@ def process_per_proj_upsert_command(egeria_client: EgeriaTech, txt: str, directi
403
462
  project_health = extract_attribute(txt, 'Project Health')
404
463
  start_date = extract_attribute(txt, 'Start Date')
405
464
  planned_end_date = extract_attribute(txt, 'Planned End Date')
406
- print(f"\n==> Processing command: {command} for project: {project_name} with directive: {directive} ")
465
+ print(Markdown(f"{pre_command} `{command}` for project: `{project_name}` with directive: `{directive}` "))
407
466
 
408
467
  project_display = (f"\n* Command: {command}\n\t* Project: {project_name}\n\t"
409
468
  f"* Status: {project_status}\n\t* Description: {description}\n\t"
@@ -512,9 +571,8 @@ def process_per_proj_upsert_command(egeria_client: EgeriaTech, txt: str, directi
512
571
  return update_a_command(txt, command, object_type, known_q_name, known_guid)
513
572
  elif object_action == "Create" :
514
573
  guid = None
515
-
516
574
  if exists:
517
- print(f"Project {project_name} already exists and")
575
+ print(f"Project {project_name} already exists and update document created")
518
576
  return update_a_command(txt, command, object_type, known_q_name, known_guid)
519
577
  else:
520
578
  guid = egeria_client.create_project(None,None, None, False,
@@ -526,5 +584,7 @@ def process_per_proj_upsert_command(egeria_client: EgeriaTech, txt: str, directi
526
584
  if project_g == NO_GLOSSARIES_FOUND:
527
585
  print(f"Just created with GUID {guid} but Project not found")
528
586
  return None
529
- q_name = project_g['prjectProperties']["qualifiedName"]
587
+
588
+ q_name = project_g['projectProperties']["qualifiedName"]
589
+ element_dictionary[f"project.{project_name}"] = {'guid': guid, 'q_name': q_name}
530
590
  return update_a_command(txt, command, object_type, q_name, guid)