pyegeria 5.3.9.9.3__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 (272) hide show
  1. commands/__init__.py +24 -0
  2. commands/cat/Dr-Egeria_md-orig.py +2 -2
  3. commands/cat/__init__.py +1 -17
  4. commands/cat/collection_actions.py +197 -0
  5. commands/cat/dr_egeria_command_help.py +372 -0
  6. commands/cat/dr_egeria_jupyter.py +7 -7
  7. commands/cat/dr_egeria_md.py +27 -182
  8. commands/cat/exp_list_glossaries.py +11 -14
  9. commands/cat/get_asset_graph.py +37 -267
  10. commands/cat/{get_collection.py → get_collection_tree.py} +10 -18
  11. commands/cat/get_project_dependencies.py +14 -14
  12. commands/cat/get_project_structure.py +15 -14
  13. commands/cat/get_tech_type_elements.py +16 -116
  14. commands/cat/glossary_actions.py +145 -298
  15. commands/cat/list_assets.py +3 -11
  16. commands/cat/list_cert_types.py +17 -63
  17. commands/cat/list_collections.py +46 -138
  18. commands/cat/list_deployed_catalogs.py +15 -27
  19. commands/cat/list_deployed_database_schemas.py +27 -43
  20. commands/cat/list_deployed_databases.py +16 -31
  21. commands/cat/list_deployed_servers.py +35 -54
  22. commands/cat/list_glossaries.py +18 -17
  23. commands/cat/list_projects.py +10 -12
  24. commands/cat/list_tech_type_elements.py +21 -37
  25. commands/cat/list_tech_types.py +13 -25
  26. commands/cat/list_terms.py +38 -79
  27. commands/cat/list_todos.py +4 -11
  28. commands/cat/list_user_ids.py +3 -10
  29. commands/cat/my_reports.py +559 -0
  30. commands/cat/run_report.py +394 -0
  31. commands/cat/run_report_orig.py +528 -0
  32. commands/cli/egeria.py +222 -247
  33. commands/cli/egeria_cat.py +68 -81
  34. commands/cli/egeria_my.py +13 -0
  35. commands/cli/egeria_ops.py +69 -74
  36. commands/cli/egeria_tech.py +17 -93
  37. commands/cli/ops_config.py +3 -6
  38. commands/{cat/list_categories.py → deprecated/list_data_designer.py} +53 -64
  39. commands/{cat/list_data_structures.py → deprecated/list_data_structures_full.py} +3 -6
  40. commands/deprecated/old_get_asset_graph.py +315 -0
  41. commands/my/__init__.py +0 -2
  42. commands/my/list_my_profile.py +27 -34
  43. commands/my/list_my_roles.py +1 -7
  44. commands/my/monitor_my_todos.py +1 -7
  45. commands/my/monitor_open_todos.py +6 -7
  46. commands/my/todo_actions.py +4 -5
  47. commands/ops/__init__.py +0 -2
  48. commands/ops/gov_server_actions.py +17 -21
  49. commands/ops/list_archives.py +17 -38
  50. commands/ops/list_catalog_targets.py +33 -40
  51. commands/ops/load_archive.py +35 -26
  52. commands/ops/{monitor_engine_activity_c.py → monitor_active_engine_activity.py} +51 -82
  53. commands/ops/{monitor_integ_daemon_status.py → monitor_daemon_status.py} +35 -55
  54. commands/ops/monitor_engine_activity.py +79 -77
  55. commands/ops/{monitor_gov_eng_status.py → monitor_engine_status.py} +10 -7
  56. commands/ops/monitor_platform_status.py +38 -50
  57. commands/ops/monitor_server_startup.py +6 -11
  58. commands/ops/monitor_server_status.py +7 -11
  59. commands/ops/orig_monitor_server_list.py +8 -8
  60. commands/ops/orig_monitor_server_status.py +1 -5
  61. commands/ops/refresh_integration_daemon.py +5 -5
  62. commands/ops/restart_integration_daemon.py +5 -5
  63. commands/ops/table_integ_daemon_status.py +6 -6
  64. commands/ops/x_engine_actions.py +7 -7
  65. commands/tech/__init__.py +0 -2
  66. commands/tech/{generic_actions.py → element_actions.py} +6 -11
  67. commands/tech/get_element_info.py +20 -29
  68. commands/tech/get_guid_info.py +23 -42
  69. commands/tech/get_tech_details.py +20 -35
  70. commands/tech/get_tech_type_template.py +28 -39
  71. commands/tech/list_all_om_type_elements.py +24 -30
  72. commands/tech/list_all_om_type_elements_x.py +22 -28
  73. commands/tech/list_all_related_elements.py +19 -28
  74. commands/tech/list_anchored_elements.py +22 -30
  75. commands/tech/list_asset_types.py +19 -24
  76. commands/tech/list_elements_by_classification_by_property_value.py +26 -32
  77. commands/tech/list_elements_by_property_value.py +19 -25
  78. commands/tech/list_elements_by_property_value_x.py +20 -28
  79. commands/tech/list_elements_for_classification.py +28 -41
  80. commands/tech/list_gov_action_processes.py +16 -27
  81. commands/tech/list_information_supply_chains.py +22 -30
  82. commands/tech/list_registered_services.py +14 -26
  83. commands/tech/list_related_elements_with_prop_value.py +15 -25
  84. commands/tech/list_related_specification.py +1 -4
  85. commands/tech/list_relationship_types.py +15 -25
  86. commands/tech/list_relationships.py +20 -36
  87. commands/tech/list_solution_blueprints.py +28 -33
  88. commands/tech/list_solution_components.py +23 -29
  89. commands/tech/list_solution_roles.py +21 -32
  90. commands/tech/list_tech_templates.py +51 -54
  91. commands/tech/list_valid_metadata_values.py +5 -9
  92. commands/tech/table_tech_templates.py +2 -6
  93. commands/tech/x_list_related_elements.py +1 -4
  94. examples/GeoSpatial Products Example.py +524 -0
  95. examples/Jupyter Notebooks/P-egeria-server-config.ipynb +2137 -0
  96. examples/Jupyter Notebooks/README.md +2 -0
  97. examples/Jupyter Notebooks/common/P-environment-check.ipynb +115 -0
  98. examples/Jupyter Notebooks/common/__init__.py +14 -0
  99. examples/Jupyter Notebooks/common/common-functions.ipynb +4694 -0
  100. examples/Jupyter Notebooks/common/environment-check.ipynb +52 -0
  101. examples/Jupyter Notebooks/common/globals.ipynb +184 -0
  102. examples/Jupyter Notebooks/common/globals.py +154 -0
  103. examples/Jupyter Notebooks/common/orig_globals.py +152 -0
  104. examples/format_sets/all_format_sets.json +910 -0
  105. examples/format_sets/custom_format_sets.json +268 -0
  106. examples/format_sets/subset_format_sets.json +187 -0
  107. examples/format_sets_save_load_example.py +291 -0
  108. examples/jacquard_data_sets.py +129 -0
  109. examples/output_formats_example.py +193 -0
  110. examples/test_jacquard_data_sets.py +54 -0
  111. examples/test_jacquard_data_sets_scenarios.py +94 -0
  112. md_processing/__init__.py +90 -0
  113. md_processing/command_dispatcher.py +33 -0
  114. md_processing/command_mapping.py +221 -0
  115. md_processing/data/commands/commands_data_designer.json +537 -0
  116. md_processing/data/commands/commands_external_reference.json +733 -0
  117. md_processing/data/commands/commands_feedback.json +155 -0
  118. md_processing/data/commands/commands_general.json +204 -0
  119. md_processing/data/commands/commands_glossary.json +218 -0
  120. md_processing/data/commands/commands_governance.json +3678 -0
  121. md_processing/data/commands/commands_product_manager.json +865 -0
  122. md_processing/data/commands/commands_project.json +642 -0
  123. md_processing/data/commands/commands_solution_architect.json +366 -0
  124. md_processing/data/commands.json +17568 -0
  125. md_processing/data/commands_working.json +30641 -0
  126. md_processing/data/gened_report_specs.py +6584 -0
  127. md_processing/data/generated_format_sets.json +6533 -0
  128. md_processing/data/generated_format_sets_old.json +4137 -0
  129. md_processing/data/generated_format_sets_old.py +45 -0
  130. md_processing/dr_egeria.py +182 -0
  131. md_processing/md_commands/__init__.py +3 -0
  132. md_processing/md_commands/data_designer_commands.py +1276 -0
  133. md_processing/md_commands/ext_ref_commands.py +530 -0
  134. md_processing/md_commands/feedback_commands.py +726 -0
  135. md_processing/md_commands/glossary_commands.py +684 -0
  136. md_processing/md_commands/governance_officer_commands.py +600 -0
  137. md_processing/md_commands/product_manager_commands.py +1266 -0
  138. md_processing/md_commands/project_commands.py +383 -0
  139. md_processing/md_commands/solution_architect_commands.py +1184 -0
  140. md_processing/md_commands/view_commands.py +295 -0
  141. md_processing/md_processing_utils/__init__.py +4 -0
  142. md_processing/md_processing_utils/common_md_proc_utils.py +1249 -0
  143. md_processing/md_processing_utils/common_md_utils.py +578 -0
  144. md_processing/md_processing_utils/determine_width.py +103 -0
  145. md_processing/md_processing_utils/extraction_utils.py +547 -0
  146. md_processing/md_processing_utils/gen_report_specs.py +643 -0
  147. md_processing/md_processing_utils/generate_dr_help.py +193 -0
  148. md_processing/md_processing_utils/generate_md_cmd_templates.py +144 -0
  149. md_processing/md_processing_utils/generate_md_templates.py +83 -0
  150. md_processing/md_processing_utils/md_processing_constants.py +1228 -0
  151. md_processing/md_processing_utils/message_constants.py +19 -0
  152. pyegeria/__init__.py +201 -443
  153. pyegeria/core/__init__.py +40 -0
  154. pyegeria/core/_base_platform_client.py +574 -0
  155. pyegeria/core/_base_server_client.py +573 -0
  156. pyegeria/core/_exceptions.py +457 -0
  157. pyegeria/core/_globals.py +60 -0
  158. pyegeria/core/_server_client.py +6073 -0
  159. pyegeria/core/_validators.py +257 -0
  160. pyegeria/core/config.py +654 -0
  161. pyegeria/{create_tech_guid_lists.py → core/create_tech_guid_lists.py} +0 -1
  162. pyegeria/core/load_config.py +37 -0
  163. pyegeria/core/logging_configuration.py +207 -0
  164. pyegeria/core/mcp_adapter.py +144 -0
  165. pyegeria/core/mcp_server.py +212 -0
  166. pyegeria/core/utils.py +405 -0
  167. pyegeria/deprecated/__init__.py +0 -0
  168. pyegeria/{_client.py → deprecated/_client.py} +62 -24
  169. pyegeria/{_deprecated_gov_engine.py → deprecated/_deprecated_gov_engine.py} +16 -16
  170. pyegeria/{classification_manager_omvs.py → deprecated/classification_manager_omvs.py} +1988 -1878
  171. pyegeria/deprecated/output_formatter_with_machine_keys.py +1127 -0
  172. pyegeria/{runtime_manager_omvs.py → deprecated/runtime_manager_omvs.py} +216 -229
  173. pyegeria/{valid_metadata_omvs.py → deprecated/valid_metadata_omvs.py} +93 -93
  174. pyegeria/{x_action_author_omvs.py → deprecated/x_action_author_omvs.py} +2 -3
  175. pyegeria/egeria_cat_client.py +25 -51
  176. pyegeria/egeria_client.py +140 -98
  177. pyegeria/egeria_config_client.py +48 -24
  178. pyegeria/egeria_tech_client.py +170 -83
  179. pyegeria/models/__init__.py +150 -0
  180. pyegeria/models/collection_models.py +168 -0
  181. pyegeria/models/models.py +654 -0
  182. pyegeria/omvs/__init__.py +84 -0
  183. pyegeria/omvs/action_author.py +342 -0
  184. pyegeria/omvs/actor_manager.py +5980 -0
  185. pyegeria/omvs/asset_catalog.py +842 -0
  186. pyegeria/omvs/asset_maker.py +2736 -0
  187. pyegeria/omvs/automated_curation.py +4403 -0
  188. pyegeria/omvs/classification_manager.py +11213 -0
  189. pyegeria/omvs/collection_manager.py +5780 -0
  190. pyegeria/omvs/community_matters_omvs.py +468 -0
  191. pyegeria/{core_omag_server_config.py → omvs/core_omag_server_config.py} +157 -157
  192. pyegeria/{data_designer_omvs.py → omvs/data_designer.py} +1991 -1691
  193. pyegeria/omvs/data_discovery.py +869 -0
  194. pyegeria/omvs/data_engineer.py +372 -0
  195. pyegeria/omvs/digital_business.py +1133 -0
  196. pyegeria/omvs/external_links.py +1752 -0
  197. pyegeria/omvs/feedback_manager.py +834 -0
  198. pyegeria/{full_omag_server_config.py → omvs/full_omag_server_config.py} +73 -69
  199. pyegeria/omvs/glossary_manager.py +3231 -0
  200. pyegeria/omvs/governance_officer.py +3009 -0
  201. pyegeria/omvs/lineage_linker.py +314 -0
  202. pyegeria/omvs/location_arena.py +1525 -0
  203. pyegeria/omvs/metadata_expert.py +668 -0
  204. pyegeria/omvs/metadata_explorer_omvs.py +2943 -0
  205. pyegeria/omvs/my_profile.py +1042 -0
  206. pyegeria/omvs/notification_manager.py +358 -0
  207. pyegeria/omvs/people_organizer.py +394 -0
  208. pyegeria/{platform_services.py → omvs/platform_services.py} +113 -193
  209. pyegeria/omvs/product_manager.py +1825 -0
  210. pyegeria/omvs/project_manager.py +1907 -0
  211. pyegeria/omvs/reference_data.py +1140 -0
  212. pyegeria/omvs/registered_info.py +334 -0
  213. pyegeria/omvs/runtime_manager.py +2817 -0
  214. pyegeria/omvs/schema_maker.py +446 -0
  215. pyegeria/{server_operations.py → omvs/server_operations.py} +27 -26
  216. pyegeria/omvs/solution_architect.py +6490 -0
  217. pyegeria/omvs/specification_properties.py +37 -0
  218. pyegeria/omvs/subject_area.py +1042 -0
  219. pyegeria/omvs/template_manager_omvs.py +236 -0
  220. pyegeria/omvs/time_keeper.py +1761 -0
  221. pyegeria/omvs/valid_metadata.py +3221 -0
  222. pyegeria/omvs/valid_metadata_lists.py +37 -0
  223. pyegeria/omvs/valid_type_lists.py +37 -0
  224. pyegeria/view/__init__.py +28 -0
  225. pyegeria/view/_output_format_models.py +514 -0
  226. pyegeria/view/_output_formats.py +14 -0
  227. pyegeria/view/base_report_formats.py +2719 -0
  228. pyegeria/view/dr_egeria_reports.py +56 -0
  229. pyegeria/view/format_set_executor.py +397 -0
  230. pyegeria/{md_processing_utils.py → view/md_processing_utils.py} +5 -5
  231. pyegeria/{mermaid_utilities.py → view/mermaid_utilities.py} +2 -154
  232. pyegeria/view/output_formatter.py +1297 -0
  233. pyegeria-5.5.3.3.dist-info/METADATA +218 -0
  234. pyegeria-5.5.3.3.dist-info/RECORD +241 -0
  235. {pyegeria-5.3.9.9.3.dist-info → pyegeria-5.5.3.3.dist-info}/WHEEL +2 -1
  236. pyegeria-5.5.3.3.dist-info/entry_points.txt +103 -0
  237. pyegeria-5.5.3.3.dist-info/top_level.txt +4 -0
  238. commands/cat/.DS_Store +0 -0
  239. commands/cat/README.md +0 -16
  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/monitor_asset_events.py +0 -108
  244. commands/tech/README.md +0 -24
  245. pyegeria/.DS_Store +0 -0
  246. pyegeria/README.md +0 -35
  247. pyegeria/_globals.py +0 -47
  248. pyegeria/_validators.py +0 -385
  249. pyegeria/asset_catalog_omvs.py +0 -864
  250. pyegeria/automated_curation_omvs.py +0 -3765
  251. pyegeria/collection_manager_omvs.py +0 -2744
  252. pyegeria/dr.egeria spec.md +0 -9
  253. pyegeria/egeria_my_client.py +0 -56
  254. pyegeria/feedback_manager_omvs.py +0 -4573
  255. pyegeria/glossary_browser_omvs.py +0 -3728
  256. pyegeria/glossary_manager_omvs.py +0 -2440
  257. pyegeria/m_test.py +0 -118
  258. pyegeria/md_processing_helpers.py +0 -58
  259. pyegeria/md_processing_utils_orig.py +0 -1103
  260. pyegeria/metadata_explorer_omvs.py +0 -2326
  261. pyegeria/my_profile_omvs.py +0 -1022
  262. pyegeria/output_formatter.py +0 -389
  263. pyegeria/project_manager_omvs.py +0 -1933
  264. pyegeria/registered_info.py +0 -167
  265. pyegeria/solution_architect_omvs.py +0 -2156
  266. pyegeria/template_manager_omvs.py +0 -1414
  267. pyegeria/utils.py +0 -197
  268. pyegeria-5.3.9.9.3.dist-info/METADATA +0 -72
  269. pyegeria-5.3.9.9.3.dist-info/RECORD +0 -143
  270. pyegeria-5.3.9.9.3.dist-info/entry_points.txt +0 -99
  271. /pyegeria/{_exceptions.py → deprecated/_exceptions.py} +0 -0
  272. {pyegeria-5.3.9.9.3.dist-info → pyegeria-5.5.3.3.dist-info/licenses}/LICENSE +0 -0
@@ -8,116 +8,66 @@ Execute Glossary actions.
8
8
 
9
9
  """
10
10
 
11
- import csv
12
11
  import json
13
12
  import os
14
13
  import sys
15
- import time
16
- from datetime import datetime
17
14
 
18
15
  import click
19
16
 
20
-
21
- from pyegeria import EgeriaTech, body_slimmer
22
- from pyegeria._exceptions import (
23
- InvalidParameterException,
24
- PropertyServerException,
25
- print_exception_response,
17
+ from pyegeria import (
18
+ EgeriaTech, body_slimmer, settings, NO_ELEMENTS_FOUND, TERM_STATUS,
19
+ PyegeriaAPIException, PyegeriaClientException, print_basic_exception, print_exception_table
26
20
  )
27
21
 
28
- EGERIA_METADATA_STORE = os.environ.get("EGERIA_METADATA_STORE", "active-metadata-store")
29
- EGERIA_KAFKA_ENDPOINT = os.environ.get("KAFKA_ENDPOINT", "localhost:9092")
30
- EGERIA_PLATFORM_URL = os.environ.get("EGERIA_PLATFORM_URL", "https://localhost:9443")
31
- EGERIA_VIEW_SERVER = os.environ.get("EGERIA_VIEW_SERVER", "view-server")
32
- EGERIA_VIEW_SERVER_URL = os.environ.get(
33
- "EGERIA_VIEW_SERVER_URL", "https://localhost:9443"
34
- )
35
- EGERIA_INTEGRATION_DAEMON = os.environ.get("EGERIA_INTEGRATION_DAEMON", "integration-daemon")
36
- EGERIA_INTEGRATION_DAEMON_URL = os.environ.get(
37
- "EGERIA_INTEGRATION_DAEMON_URL", "https://localhost:9443"
38
- )
39
- EGERIA_ADMIN_USER = os.environ.get("ADMIN_USER", "garygeeke")
40
- EGERIA_ADMIN_PASSWORD = os.environ.get("ADMIN_PASSWORD", "secret")
22
+ app_config = settings.Environment
23
+
41
24
  EGERIA_USER = os.environ.get("EGERIA_USER", "erinoverview")
42
25
  EGERIA_USER_PASSWORD = os.environ.get("EGERIA_USER_PASSWORD", "secret")
43
- EGERIA_WIDTH = os.environ.get("EGERIA_WIDTH", 200)
44
- EGERIA_JUPYTER = os.environ.get("EGERIA_JUPYTER", False)
45
- EGERIA_HOME_GLOSSARY_GUID = os.environ.get("EGERIA_HOME_GLOSSARY_GUID", None)
46
- EGERIA_GLOSSARY_PATH = os.environ.get("EGERIA_GLOSSARY_PATH", None)
26
+
47
27
 
48
28
 
49
29
  @click.command("create-glossary")
50
30
  @click.option("--name", help="Name of Glossary", required=True)
51
31
  @click.option("--language", help="Language of Glossary", default="English")
52
- @click.option(
53
- "--description",
54
- help="Description of Glossary",
55
- default="A description goes here",
56
- )
57
- @click.option(
58
- "--usage",
59
- help="Purpose of glossary",
60
- default="Definitions",
61
- )
62
- @click.option("--server", default=EGERIA_VIEW_SERVER, help="Egeria view server to use.")
63
- @click.option(
64
- "--url", default=EGERIA_VIEW_SERVER_URL, help="URL of Egeria platform to connect to"
65
- )
32
+ @click.option("--description", help="Description of Glossary", default="A description goes here")
33
+ @click.option("--usage", help="Purpose of glossary", default="Definitions")
34
+ @click.option("--category", help="Category of glossary")
35
+ @click.option("--server", default=app_config.egeria_view_server, help="Egeria view server to use.")
36
+ @click.option("--url", default=app_config.egeria_view_server_url, help="URL of view server to connect to")
66
37
  @click.option("--userid", default=EGERIA_USER, help="Egeria user")
67
38
  @click.option("--password", default=EGERIA_USER_PASSWORD, help="Egeria user password")
68
39
  @click.option("--timeout", default=60, help="Number of seconds to wait")
69
40
  def create_glossary(
70
- server: str,
71
- url: str,
72
- userid: str,
73
- password: str,
74
- timeout: int,
75
- name: str,
76
- language: str,
77
- description: str,
78
- usage: str,
41
+ server: str,
42
+ url: str,
43
+ userid: str,
44
+ password: str,
45
+ timeout: int,
46
+ name: str,
47
+ language: str,
48
+ description: str,
49
+ usage: str,
50
+ category: str,
79
51
  ) -> None:
80
- """Create a new Glossary"""
52
+ """Create a new Glossary """
81
53
 
82
54
  try:
83
55
  m_client = EgeriaTech(server, url, userid, password)
84
56
  token = m_client.create_egeria_bearer_token()
85
57
 
86
- existing_glossary = m_client.find_glossaries(name)
87
- if type(existing_glossary) is list:
88
- click.echo(
89
- f"\nFound {len(existing_glossary)} existing Glossaries with a similar name!\n"
90
- )
91
- for glossary in existing_glossary:
92
- if (
93
- glossary["glossaryProperties"]["qualifiedName"]
94
- == "Glossary:" + name
95
- ):
96
- click.echo(
97
- (
98
- f"\tFound existing glossary: {glossary['glossaryProperties']['qualifiedName']} with id of {glossary['elementHeader']['guid']}\n"
99
- "Exiting\n"
100
- )
101
- )
102
- sys.exit(0)
103
- else:
104
- click.echo(
105
- "Found glossaries with similar names but different qualifiedNames...proceeding\n"
106
- )
107
-
108
- glossary_guid = m_client.create_glossary(name, description, language, usage)
109
- print(f"New glossary {name} created with id of {glossary_guid}")
110
-
111
- except (InvalidParameterException, PropertyServerException) as e:
112
- print_exception_response(e)
58
+ glossary_guid = m_client.create_glossary(name, description, language, usage, category)
59
+ print(f"New glossary `{name}` created with id of `{glossary_guid}`")
60
+
61
+ except (PyegeriaAPIException, PyegeriaClientException) as e:
62
+ print_basic_exception(e)
113
63
  finally:
114
64
  m_client.close_session()
115
65
 
116
66
 
117
67
  @click.command("delete-glossary")
118
- @click.option("--server", default=EGERIA_VIEW_SERVER, help="Egeria view server to use")
68
+ @click.option("--server", default=app_config.egeria_view_server, help="Egeria view server to use")
119
69
  @click.option(
120
- "--url", default=EGERIA_VIEW_SERVER_URL, help="URL of Egeria platform to connect to"
70
+ "--url", default=app_config.egeria_view_server_url, help="URL of Egeria platform to connect to"
121
71
  )
122
72
  @click.option("--userid", default=EGERIA_USER, help="Egeria user")
123
73
  @click.option("--password", default=EGERIA_USER_PASSWORD, help="Egeria user password")
@@ -128,12 +78,12 @@ def delete_glossary(server, url, userid, password, timeout, glossary_guid):
128
78
  m_client = EgeriaTech(server, url, user_id=userid, user_pwd=password)
129
79
  token = m_client.create_egeria_bearer_token()
130
80
  try:
131
- m_client.delete_glossary(glossary_guid, cascade = True)
81
+ m_client.delete_glossary(glossary_guid, cascade=False)
132
82
 
133
- click.echo(f"Deleted glossary: {glossary_guid}")
83
+ click.echo(f"Deleted glossary: `{glossary_guid}`")
134
84
 
135
- except (InvalidParameterException, PropertyServerException) as e:
136
- print_exception_response(e)
85
+ except (PyegeriaAPIException, PyegeriaClientException) as e:
86
+ print_basic_exception(e)
137
87
  finally:
138
88
  m_client.close_session()
139
89
 
@@ -141,50 +91,43 @@ def delete_glossary(server, url, userid, password, timeout, glossary_guid):
141
91
  @click.command("create-term")
142
92
  @click.option("--glossary-name", help="Name of Glossary", required=True)
143
93
  @click.option("--term-name", help="Name of Term", required=True)
144
- @click.option("--qualified-name", help="Qualified name of Term", default=None)
145
- @click.option(
146
- "--summary",
147
- help="Summary definition",
148
- default="Summary goes here",
149
- )
150
- @click.option(
151
- "--description",
152
- help="Full description",
153
- default="Description goes here",
154
- )
94
+ @click.option("--qualified-name", help="Qualified name of Term", default=None)
95
+ @click.option("--summary", help="Summary definition", default="Summary goes here")
96
+ @click.option("--description", help="Full description", default="Description goes here")
155
97
  @click.option("--abbrev", help="Abbreviation", default=None)
156
98
  @click.option("--examples", help="Example usage", default=None)
157
99
  @click.option("--usage", help="Usage notes", default=None)
158
100
  @click.option("--version", help="Version", default="1.0")
159
- @click.option(
160
- "--status",
161
- help="Status",
162
- type=click.Choice(
163
- ["DRAFT", "ACTIVE", "DEPRECATED", "OBSOLETE", "OTHER"], case_sensitive=False
164
- ),
165
- default="DRAFT",
166
- )
167
- @click.option("--server", default=EGERIA_VIEW_SERVER, help="Egeria view server to use.")
168
- @click.option(
169
- "--url", default=EGERIA_VIEW_SERVER_URL, help="URL of Egeria platform to connect to"
170
- )
101
+ @click.option("--status", help="Status",
102
+ type_name = click.Choice(TERM_STATUS, case_sensitive=False
103
+ ), default="DRAFT")
104
+ @click.option("--server", default=app_config.egeria_view_server, help="Egeria view server to use.")
105
+ @click.option("--url", default=app_config.egeria_view_server_url,
106
+ help="URL of Egeria platform to connect to")
171
107
  @click.option("--userid", default=EGERIA_USER, help="Egeria user")
172
108
  @click.option("--password", default=EGERIA_USER_PASSWORD, help="Egeria user password")
173
109
  @click.option("--timeout", default=60, help="Number of seconds to wait")
174
110
  def create_term(server, url, userid, password, glossary_name, term_name, summary, description, abbrev, examples, usage,
175
111
  version, status, timeout: int = 120, qualified_name=None) -> str:
176
- """Create a new term
177
-
178
- Args:
179
- qualified_name:
180
- """
112
+ """Create a new term """
181
113
  m_client = EgeriaTech(server, url, user_id=userid, user_pwd=password)
182
114
  token = m_client.create_egeria_bearer_token()
183
115
  if qualified_name is None:
184
- qualified_name = m_client.__create_qualified_name__('Term', term_name)
116
+ qualified_name = m_client.__create_qualified_name__('Term', term_name,
117
+ settings.User_Profile.egeria_local_qualifier)
185
118
  try:
119
+ glossary_guid = m_client.__get_guid__(display_name = glossary_name, property_name = "displayName")
120
+ if glossary_guid == NO_ELEMENTS_FOUND:
121
+ click.echo(f"The glossary name {glossary_name} was not found..exiting\n")
122
+ sys.exit(0)
123
+
186
124
  body = {
187
- "class": "ReferenceableRequestBody",
125
+ "class": "NewElementRequestBody",
126
+ "parentGUID" : glossary_guid,
127
+ "parentRelationshipTypeName" : "CollectionMembership",
128
+ "anchorScopeGUID" : glossary_guid,
129
+ "isOwnAnchor": True,
130
+ "parentAtEnd1": True,
188
131
  "elementProperties": {
189
132
  "class": "GlossaryTermProperties",
190
133
  "qualifiedName": qualified_name,
@@ -198,124 +141,131 @@ def create_term(server, url, userid, password, glossary_name, term_name, summary
198
141
  },
199
142
  "initialStatus": status,
200
143
  }
201
- exists = False
202
- glossary_info = m_client.find_glossaries(glossary_name)
203
- if type(glossary_info) is list:
204
- for glossary in glossary_info:
205
- if glossary["glossaryProperties"]["displayName"] == glossary_name:
206
- exists = True
207
- glossary_guid = glossary["elementHeader"]["guid"]
208
-
209
- if not exists:
210
- click.echo(f"The glossary name {glossary_name} was not found..exiting\n")
211
- sys.exit(0)
212
144
 
213
- term_guid = m_client.create_controlled_glossary_term(
214
- glossary_guid, body_slimmer(body)
145
+ term_guid = m_client.create_glossary_term(body_slimmer(body)
215
146
  )
216
147
 
217
148
  click.echo(
218
- f"Successfully created term {term_name} with GUID {term_guid}, in glossary {glossary_name}.\n"
149
+ f"Successfully created term `{term_name}` with GUID `{term_guid}`, in glossary `{glossary_name}`.\n"
219
150
  )
220
151
  return term_guid
221
- except (InvalidParameterException, PropertyServerException) as e:
222
- print_exception_response(e)
152
+ except (PyegeriaAPIException, PyegeriaClientException) as e:
153
+ print_basic_exception(e)
223
154
  finally:
224
155
  m_client.close_session()
225
156
 
226
157
 
227
- @click.command("delete-term")
228
- @click.option("--server", default=EGERIA_VIEW_SERVER, help="Egeria view server to use")
229
- @click.option(
230
- "--url", default=EGERIA_VIEW_SERVER_URL, help="URL of Egeria platform to connect to"
231
- )
158
+ @click.command("update-term")
159
+ @click.option("--term-guid", help="GUID of the Term", required=True)
160
+ @click.option("--summary", help="Summary definition", default="Summary goes here")
161
+ @click.option("--description", help="Full description", default="Description goes here")
162
+ @click.option("--abbrev", help="Abbreviation", default=None)
163
+ @click.option("--examples", help="Example usage", default=None)
164
+ @click.option("--usage", help="Usage notes", default=None)
165
+ @click.option("--version", help="Version", default="1.0")
166
+ @click.option("--server", default=app_config.egeria_view_server, help="Egeria view server to use.")
167
+ @click.option("--url", default=app_config.egeria_view_server_url,
168
+ help="URL of Egeria platform to connect to")
232
169
  @click.option("--userid", default=EGERIA_USER, help="Egeria user")
233
170
  @click.option("--password", default=EGERIA_USER_PASSWORD, help="Egeria user password")
234
171
  @click.option("--timeout", default=60, help="Number of seconds to wait")
235
- @click.argument("term-guid")
236
- def delete_term(server, url, userid, password, timeout, term_guid):
237
- """Delete a glossary term"""
172
+ def update_term(server, url, userid, password, term_name, summary, description, abbrev, examples, usage,
173
+ version, timeout: int = 120) -> None:
174
+ """Update a term """
238
175
  m_client = EgeriaTech(server, url, user_id=userid, user_pwd=password)
239
176
  token = m_client.create_egeria_bearer_token()
177
+
240
178
  try:
241
- term_guid = term_guid.strip()
242
- term_info = m_client.get_terms_by_guid(term_guid)
179
+ body = {
180
+ "class": "UpdateElementRequestBody",
181
+ "mergeUpdate": True,
182
+ "elementProperties": {
183
+ "class": "GlossaryTermProperties",
184
+ "displayName": term_name,
185
+ "summary": summary,
186
+ "description": description,
187
+ "abbreviation": abbrev,
188
+ "examples": examples,
189
+ "usage": usage,
190
+ "publishVersionIdentifier": version,
191
+ },
192
+ }
243
193
 
244
- m_client.delete_term(term_guid)
194
+ term_guid = m_client.update_glossary_term(body_slimmer(body)
195
+ )
245
196
 
246
197
  click.echo(
247
- f"Deleted term with GUID: {term_guid} and Display Name: {term_info['glossaryTermProperties']['displayName']}"
198
+ f"Successfully updated term `{term_name}` with GUID `{term_guid}`.\n"
248
199
  )
249
200
 
250
- except (InvalidParameterException, PropertyServerException) as e:
251
- print_exception_response(e)
201
+ except (PyegeriaAPIException, PyegeriaClientException) as e:
202
+ print_basic_exception(e)
252
203
  finally:
253
204
  m_client.close_session()
254
205
 
255
- @click.command("add-term-to-category")
256
- @click.option("--server", default=EGERIA_VIEW_SERVER, help="Egeria view server to use")
257
- @click.option(
258
- "--url", default=EGERIA_VIEW_SERVER_URL, help="URL of Egeria platform to connect to"
259
- )
206
+
207
+ @click.command("update-term-status")
208
+ @click.option("--term-guid", help="GUID of the Term", required=True)
209
+ @click.option("--status", help="Status",
210
+ type_name = click.Choice(TERM_STATUS, case_sensitive=False), default="DRAFT")
211
+ @click.option("--server", default=app_config.egeria_view_server, help="Egeria view server to use.")
212
+ @click.option("--url", default=app_config.egeria_view_server_url,
213
+ help="URL of Egeria platform to connect to")
260
214
  @click.option("--userid", default=EGERIA_USER, help="Egeria user")
261
215
  @click.option("--password", default=EGERIA_USER_PASSWORD, help="Egeria user password")
262
216
  @click.option("--timeout", default=60, help="Number of seconds to wait")
263
- @click.option("--term-guid", required=True, help="GUID of term to add to a category")
264
- @click.option("--category-guid", required=True, help="GUID of category to add term to")
265
-
266
- def add_term_to_category(server, url, userid, password, timeout, term_guid, category_guid):
267
- """Add a glossary term to a category"""
217
+ def update_term_status(server, url, userid, password, term_guid, status, timeout: int = 120) -> None:
218
+ """Update a term """
268
219
  m_client = EgeriaTech(server, url, user_id=userid, user_pwd=password)
269
220
  token = m_client.create_egeria_bearer_token()
221
+
270
222
  try:
271
- term_guid = term_guid.strip()
272
- category_guid = category_guid.strip()
273
- m_client.add_term_to_category(term_guid, category_guid)
223
+
224
+ term_guid = m_client.update_glossary_term_status(term_guid, status)
274
225
 
275
226
  click.echo(
276
- f"Added term with GUID: {term_guid} to category with GUID: {category_guid}\n"
227
+ f"Successfully updated term {term_guid} with status `{status}`.\n"
277
228
  )
278
229
 
279
- except (InvalidParameterException, PropertyServerException) as e:
280
- print_exception_response(e)
230
+ except (PyegeriaAPIException, PyegeriaClientException) as e:
231
+ print_basic_exception(e)
281
232
  finally:
282
233
  m_client.close_session()
283
234
 
284
- @click.command("remove-term-from-category")
285
- @click.option("--server", default=EGERIA_VIEW_SERVER, help="Egeria view server to use")
235
+
236
+ @click.command("delete-term")
237
+ @click.option("--server", default=app_config.egeria_view_server, help="Egeria view server to use")
286
238
  @click.option(
287
- "--url", default=EGERIA_VIEW_SERVER_URL, help="URL of Egeria platform to connect to"
239
+ "--url", default=app_config.egeria_view_server_url, help="URL of Egeria View Server to connect to"
288
240
  )
289
241
  @click.option("--userid", default=EGERIA_USER, help="Egeria user")
290
242
  @click.option("--password", default=EGERIA_USER_PASSWORD, help="Egeria user password")
291
243
  @click.option("--timeout", default=60, help="Number of seconds to wait")
292
- @click.option("--term-guid", required=True, help="GUID of term to add to a category")
293
- @click.option("--category-guid", required=True, help="GUID of category to add term to")
294
-
295
- def remove_term_from_category(server, url, userid, password, timeout, term_guid, category_guid):
296
- """Add a glossary term to a category"""
244
+ @click.argument("term-guid")
245
+ def delete_term(server, url, userid, password, timeout, term_guid):
246
+ """Delete a glossary term"""
297
247
  m_client = EgeriaTech(server, url, user_id=userid, user_pwd=password)
298
248
  token = m_client.create_egeria_bearer_token()
299
249
  try:
300
250
  term_guid = term_guid.strip()
301
- category_guid = category_guid.strip()
302
- m_client.remove_term_from_category(term_guid, category_guid)
251
+ term_info = m_client.get_terms_by_guid(term_guid)
252
+
253
+ m_client.delete_term(term_guid)
303
254
 
304
255
  click.echo(
305
- f"Removed term with GUID: {term_guid} from category with GUID: {category_guid}\n"
256
+ f"Deleted term with GUID: {term_guid} and Display Name: {term_info['glossaryTermProperties']['displayName']}"
306
257
  )
307
258
 
308
- except (InvalidParameterException, PropertyServerException) as e:
309
- print_exception_response(e)
259
+ except (PyegeriaAPIException, PyegeriaClientException) as e:
260
+ print_basic_exception(e)
310
261
  finally:
311
262
  m_client.close_session()
312
263
 
313
-
314
264
  @click.command("import-terms-from-csv")
315
265
  @click.option("--glossary_name", help="Name of Glossary", required=True)
316
266
  @click.option("--file_name", help="Name of CSV file", required=True)
317
267
  @click.option(
318
- "--file_path", help="Path of CSV file", default=EGERIA_GLOSSARY_PATH, required=False
268
+ "--input_file", help="Path of CSV file", default=app_config.egeria_glossary_path, required=False
319
269
  )
320
270
  @click.option(
321
271
  "--verbose",
@@ -329,24 +279,24 @@ def remove_term_from_category(server, url, userid, password, timeout, term_guid,
329
279
  default=True,
330
280
  help="If set, terms will be updated if they exist; otherwise they would be appended",
331
281
  )
332
- @click.option("--server", default=EGERIA_VIEW_SERVER, help="Egeria view server to use")
282
+ @click.option("--server", default=app_config.egeria_view_server, help="Egeria view server to use")
333
283
  @click.option(
334
- "--url", default=EGERIA_VIEW_SERVER_URL, help="URL of Egeria platform to connect to"
284
+ "--url", default=app_config.egeria_view_server_url, help="URL of Egeria platform to connect to"
335
285
  )
336
286
  @click.option("--userid", default=EGERIA_USER, help="Egeria user")
337
287
  @click.option("--password", default=EGERIA_USER_PASSWORD, help="Egeria user password")
338
288
  @click.option("--timeout", default=60, help="Number of seconds to wait")
339
289
  def import_terms_csv(
340
- glossary_name: str,
341
- file_path: str,
342
- file_name: str,
343
- verbose: bool,
344
- upsert: bool,
345
- server: str,
346
- url: str,
347
- userid: str,
348
- password: str,
349
- timeout: int,
290
+ glossary_name: str,
291
+ file_path: str,
292
+ file_name: str,
293
+ verbose: bool,
294
+ upsert: bool,
295
+ server: str,
296
+ url: str,
297
+ userid: str,
298
+ password: str,
299
+ timeout: int,
350
300
  ):
351
301
  """Load terms from file into the glossary specified"""
352
302
  m_client = EgeriaTech(server, url, user_id=userid, user_pwd=password)
@@ -364,10 +314,10 @@ def import_terms_csv(
364
314
  f"Loaded terms from into glossary: {glossary_name} from {file_name}"
365
315
  )
366
316
  if verbose:
367
- print(f"\n Verbose output:\n{json.dumps(result, indent = 2)}")
317
+ print(f"\n Verbose output:\n{json.dumps(result, indent=2)}")
368
318
 
369
- except (InvalidParameterException, PropertyServerException) as e:
370
- print_exception_response(e)
319
+ except (PyegeriaAPIException, PyegeriaClientException) as e:
320
+ print_basic_exception(e)
371
321
  finally:
372
322
  m_client.close_session()
373
323
 
@@ -380,17 +330,17 @@ def import_terms_csv(
380
330
  )
381
331
  @click.option("--file_name", help="Name of CSV file", required=True)
382
332
  @click.option(
383
- "--file_path", help="Path of CSV file", default=EGERIA_GLOSSARY_PATH, required=False
333
+ "--input_file", help="Path of CSV file", default=app_config.egeria_glossary_path, required=False
384
334
  )
385
- @click.option("--server", default=EGERIA_VIEW_SERVER, help="Egeria view server to use")
335
+ @click.option("--server", default=app_config.egeria_view_server, help="Egeria view server to use")
386
336
  @click.option(
387
- "--url", default=EGERIA_VIEW_SERVER_URL, help="URL of Egeria platform to connect to"
337
+ "--url", default=app_config.egeria_view_server_url, help="URL of Egeria platform to connect to"
388
338
  )
389
339
  @click.option("--userid", default=EGERIA_USER, help="Egeria user")
390
340
  @click.option("--password", default=EGERIA_USER_PASSWORD, help="Egeria user password")
391
341
  @click.option("--timeout", default=60, help="Number of seconds to wait")
392
342
  def export_terms_csv(
393
- glossary_guid: str, file_name, file_path, server, url, userid, password, timeout
343
+ glossary_guid: str, file_name, file_path, server, url, userid, password, timeout
394
344
  ):
395
345
  """Export the glossary specified"""
396
346
  m_client = EgeriaTech(server, url, user_id=userid, user_pwd=password)
@@ -402,111 +352,8 @@ def export_terms_csv(
402
352
  f"Exported {result} terms from glossary: {glossary_guid} into {file_name}"
403
353
  )
404
354
 
405
- except (InvalidParameterException, PropertyServerException) as e:
406
- print_exception_response(e)
407
- finally:
408
- m_client.close_session()
409
-
410
-
411
- @click.command("create-category")
412
- @click.option("--name", help="Name of glossary Category", required=True)
413
- @click.option("--glossary_name", help="Glossary name", required=True)
414
- @click.option(
415
- "--description",
416
- help="Description of Category",
417
- default="A description goes here",
418
- )
419
- @click.option(
420
- "--is_root",
421
- help="Is this a root category?",
422
- default=True,
423
- is_flag=True,
424
- )
425
- @click.option("--server", default=EGERIA_VIEW_SERVER, help="Egeria view server to use.")
426
- @click.option(
427
- "--url", default=EGERIA_VIEW_SERVER_URL, help="URL of Egeria platform to connect to"
428
- )
429
- @click.option("--userid", default=EGERIA_USER, help="Egeria user")
430
- @click.option("--password", default=EGERIA_USER_PASSWORD, help="Egeria user password")
431
- @click.option("--timeout", default=60, help="Number of seconds to wait")
432
- def create_category(
433
- server: str,
434
- url: str,
435
- userid: str,
436
- password: str,
437
- timeout: int,
438
- name: str,
439
- glossary_name: str,
440
- description: str,
441
- is_root: bool,
442
- ) -> None:
443
- """Create a new Glossary Category"""
444
-
445
- try:
446
- m_client = EgeriaTech(server, url, userid, password)
447
- token = m_client.create_egeria_bearer_token()
448
-
449
- existing_glossary = m_client.find_glossaries(glossary_name)
450
- if type(existing_glossary) is str:
451
- click.echo(existing_glossary)
452
- sys.exit(0)
453
- if type(existing_glossary) is list and len(existing_glossary) == 1:
454
- q_name = existing_glossary["glossaryProperties"]["qualifiedName"]
455
- glossary_guid = existing_glossary["elementHeader"]["guid"]
456
- category_guid = m_client.create_category(glossary_guid,name,description, is_root)
457
- print(f"New categry \'{name}\' created with id of \'{category_guid}\'")
458
-
459
- except (InvalidParameterException, PropertyServerException) as e:
460
- print_exception_response(e)
461
- finally:
462
- m_client.close_session()
463
-
464
-
465
- @click.command("update-category")
466
- @click.option("--server", default=EGERIA_VIEW_SERVER, help="Egeria view server to use")
467
- @click.option(
468
- "--url", default=EGERIA_VIEW_SERVER_URL, help="URL of Egeria platform to connect to"
469
- )
470
- @click.option("--userid", default=EGERIA_USER, help="Egeria user")
471
- @click.option("--password", default=EGERIA_USER_PASSWORD, help="Egeria user password")
472
- @click.option("--timeout", default=60, help="Number of seconds to wait")
473
- @click.argument("category-guid")
474
- @click.option("--name", help="Name of glossary Category", required=True)
475
- @click.option("--glossary_name", help="Glossary name", required=True)
476
- @click.option("--description", help="Description of Category", default="A description goes here")
477
- def update_category(category_guid, name, description, server, url, userid, password, timeout, ):
478
- """Delete the glossary specified"""
479
- m_client = EgeriaTech(server, url, user_id=userid, user_pwd=password)
480
- token = m_client.create_egeria_bearer_token()
481
- try:
482
- m_client.update_category(category_guid, name, description)
483
-
484
- click.echo(f"Updated glossary: {category_guid}")
485
-
486
- except (InvalidParameterException, PropertyServerException) as e:
487
- print_exception_response(e)
355
+ except (PyegeriaAPIException, PyegeriaClientException) as e:
356
+ print_basic_exception(e)
488
357
  finally:
489
358
  m_client.close_session()
490
359
 
491
- @click.command("delete-category")
492
- @click.option("--server", default=EGERIA_VIEW_SERVER, help="Egeria view server to use")
493
- @click.option(
494
- "--url", default=EGERIA_VIEW_SERVER_URL, help="URL of Egeria platform to connect to"
495
- )
496
- @click.option("--userid", default=EGERIA_USER, help="Egeria user")
497
- @click.option("--password", default=EGERIA_USER_PASSWORD, help="Egeria user password")
498
- @click.option("--timeout", default=60, help="Number of seconds to wait")
499
- @click.argument("category-guid")
500
- def delete_category(server, url, userid, password, timeout, category_guid):
501
- """Delete the glossary specified"""
502
- m_client = EgeriaTech(server, url, user_id=userid, user_pwd=password)
503
- token = m_client.create_egeria_bearer_token()
504
- try:
505
- m_client.delete_category(category_guid)
506
-
507
- click.echo(f"Deleted glossary: {category_guid}")
508
-
509
- except (InvalidParameterException, PropertyServerException) as e:
510
- print_exception_response(e)
511
- finally:
512
- m_client.close_session()
@@ -20,10 +20,7 @@ from rich.text import Text
20
20
 
21
21
  from pyegeria import (
22
22
  AssetCatalog,
23
- InvalidParameterException,
24
- PropertyServerException,
25
- UserNotAuthorizedException,
26
- print_exception_response,
23
+ PyegeriaAPIException, PyegeriaClientException, print_basic_exception, print_exception_table
27
24
  )
28
25
 
29
26
  EGERIA_METADATA_STORE = os.environ.get("EGERIA_METADATA_STORE", "active-metadata-store")
@@ -89,7 +86,6 @@ def display_assets(
89
86
  ends_with=False,
90
87
  ignore_case=True,
91
88
  page_size=100,
92
- time_out=time_out,
93
89
  )
94
90
  if type(assets) is str:
95
91
  return table
@@ -138,12 +134,8 @@ def display_assets(
138
134
  with console.pager(styles=True):
139
135
  console.print(generate_table(search_string), soft_wrap=True)
140
136
 
141
- except (
142
- InvalidParameterException,
143
- PropertyServerException,
144
- UserNotAuthorizedException,
145
- ) as e:
146
- console.print_exception()
137
+ except (PyegeriaAPIException, PyegeriaClientException) as e:
138
+ print_basic_exception(e)
147
139
  sys.exit(1)
148
140
 
149
141
  except ValueError as e: