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
commands/ops/README.md DELETED
@@ -1,24 +0,0 @@
1
- <!-- SPDX-License-Identifier: CC-BY-4.0 -->
2
- <!-- Copyright Contributors to the Egeria project. -->
3
-
4
- # Operational
5
-
6
- These widgets display different kinds of information useful to monitor the status of different elements of an Egeria deployment.
7
- Widgets will continue to be added over time to cover more facets of catalog use.
8
-
9
- * get_eng_action_status.py - lists assets containing the user provided search string in the display name or qualified name. Search string must be a minimum of three characters.
10
- * get_tech_type_elements.py - shows a tree view for the details of a supported technology type.
11
- * get_tech_type_template.py - shows a tree view of the template associated with a supported technology type.
12
- * view_coco_status.py - provides a tree view of a collection with all nested collections and items within the collection.
13
- * view_eng_action_status.py - provides a live view of the status of engine actions.
14
- * view_gov_eng_status.py - provides a live view of a governance engine status.
15
- * view_integ_daemeon_status.py - provides a live view of an integration daemon status.
16
- * view_platform_status.py - provides a live status view of the known servers on known platforms.
17
- * view_server_list.py - provides a more detailed live status view of the servers on a single platform.
18
- * view_server_status.py - provides a minimal live status view of the servers on a single platform.
19
- * view_asset_changes.py - experiment in progress
20
- * view_asset_events.py - experiment in progress
21
-
22
- ----
23
- License: [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/),
24
- Copyright Contributors to the Egeria project.
@@ -1,108 +0,0 @@
1
- #!/usr/bin/env python3
2
- """
3
- SPDX-License-Identifier: Apache-2.0
4
- Copyright Contributors to the ODPi Egeria project.
5
-
6
- Display the status of cataloged platforms and servers.
7
- """
8
- import argparse
9
- import json
10
- import os
11
- import time
12
- from datetime import datetime
13
-
14
- from confluent_kafka import Consumer, KafkaException
15
- from rich.console import Console
16
- from rich.live import Live
17
- from rich.markdown import Markdown
18
- from rich.prompt import Prompt
19
- from rich.table import Table
20
-
21
- EGERIA_METADATA_STORE = os.environ.get("EGERIA_METADATA_STORE", "active-metadata-store")
22
- EGERIA_KAFKA_ENDPOINT = os.environ.get("KAFKA_ENDPOINT", "localhost:9192")
23
- EGERIA_PLATFORM_URL = os.environ.get("EGERIA_PLATFORM_URL", "https://localhost:9443")
24
- EGERIA_VIEW_SERVER = os.environ.get("EGERIA_VIEW_SERVER", "view-server")
25
- EGERIA_VIEW_SERVER_URL = os.environ.get(
26
- "EGERIA_VIEW_SERVER_URL", "https://localhost:9443"
27
- )
28
- EGERIA_INTEGRATION_DAEMON = os.environ.get("EGERIA_INTEGRATION_DAEMON", "integration-daemon")
29
- EGERIA_ADMIN_USER = os.environ.get("ADMIN_USER", "garygeeke")
30
- EGERIA_ADMIN_PASSWORD = os.environ.get("ADMIN_PASSWORD", "secret")
31
- EGERIA_USER = os.environ.get("EGERIA_USER", "erinoverview")
32
- EGERIA_USER_PASSWORD = os.environ.get("EGERIA_USER_PASSWORD", "secret")
33
- EGERIA_JUPYTER = os.environ.get("EGERIA_JUPYTER", False)
34
- EGERIA_WIDTH = os.environ.get("EGERIA_WIDTH", 200)
35
-
36
-
37
- def main(ep: str = EGERIA_KAFKA_ENDPOINT):
38
- disable_ssl_warnings = True
39
- console = Console(width=200)
40
- now = datetime.now()
41
- current_time = now.strftime("%H:%M:%S")
42
-
43
- earliest_latest = Prompt.ask("Msgs from earliest or latest:", default="earliest")
44
-
45
- # Define the Kafka consumer configuration.
46
- config = {
47
- "bootstrap.servers": ep, # replace with your Kafka broker(s)
48
- "group.id": f"view_asset_events:{current_time}", # replace with your consumer group
49
- "auto.offset.reset": earliest_latest, # can be set to 'earliest' or 'latest'
50
- }
51
- print(f"Kafka config is {json.dumps(config)}")
52
- # Initialize a Kafka consumer.
53
- consumer = Consumer(config)
54
-
55
- # Subscribe to a Kafka topic.
56
- consumer.subscribe(
57
- ["egeria.omag.server.active-metadata-store.omas.assetconsumer.outTopic"]
58
- ) # replace with your Kafka topic
59
-
60
- try:
61
- while True:
62
- msg = consumer.poll(2.0) # timeout set to 1 second
63
-
64
- if msg is None:
65
- continue
66
- elif msg.error():
67
- raise KafkaException(msg.error())
68
- else:
69
- event = json.loads(msg.value())
70
- event_time = event["eventTime"]
71
- event_type = event["eventType"]
72
- guid = event["elementHeader"]["guid"]
73
-
74
- type_name = event["elementHeader"]["type"]["typeName"]
75
- origin = event["elementHeader"]["origin"]["sourceServer"]
76
-
77
- element_properties = event["elementProperties"]
78
- element_properties_keys = element_properties.keys()
79
- props = " "
80
- for key in element_properties_keys:
81
- value = element_properties[key]
82
- props += f"* {key}: {value}\n"
83
- console.rule(style="[bold red]")
84
- console.rule(
85
- f"\tMessage TimeStamp: {event_time}\t eventType: {event_type}\t typeName: {type_name}\t guid: {guid}"
86
- )
87
- msg = f"properties: \n[bright white on black]{props}\n\n"
88
- msg = Markdown(msg)
89
-
90
- console.print(msg)
91
-
92
- except KeyboardInterrupt:
93
- pass
94
-
95
- finally:
96
- # Close down consumer to commit final offsets.
97
- consumer.close()
98
-
99
-
100
- if __name__ == "__main__":
101
- parser = argparse.ArgumentParser()
102
-
103
- parser.add_argument("--ep", help="Endpoint to connect to")
104
- args = parser.parse_args()
105
-
106
- ep = args.ep if args.ep is not None else EGERIA_KAFKA_ENDPOINT
107
-
108
- main(ep)
commands/tech/README.md DELETED
@@ -1,24 +0,0 @@
1
- <!-- SPDX-License-Identifier: CC-BY-4.0 -->
2
- <!-- Copyright Contributors to the Egeria project. -->
3
-
4
- # Developer
5
-
6
- These widgets display different kinds of information useful to developers. Widgets
7
- will continue to be added over time to cover more facets. Useful developer information
8
- can also be found on [Egeria Project](https://egeria-project.org) and in [Egeria Explorers](https://egeria-project.org/release-notes/june-2024/?h=brain#egeria-explorers).
9
-
10
- * get_guid_info.py - lists information about the metadata element specified by the Egeria guid.
11
- * get_tech_details.py - shows a tree view showing the Egeria support for a particular technology (e.g PostgreSQL Server).
12
- * list_asset_types.py - provides a tree view of a collection with all nested collections and items within the collection.
13
- * list_registered_services.py - lists the services available on an Egeria platform.
14
- * list_relationship_types.py - list the relationships details for a specified Egeria type.
15
- * list_tech_templates.py - list template details for technology types
16
- * list_tech_types.py - list the technology types that Egeria currently supports
17
- * list_valid_metadata_values.py - list valid metadata values for a particular property and category.
18
-
19
-
20
-
21
-
22
- ----
23
- License: [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/),
24
- Copyright Contributors to the Egeria project.
pyegeria/.DS_Store DELETED
Binary file
pyegeria/README.md DELETED
@@ -1,35 +0,0 @@
1
- <!-- SPDX-License-Identifier: CC-BY-4.0 -->
2
- <!-- Copyright Contributors to the ODPi Egeria project. -->
3
-
4
- ![Egeria Logo](https://egeria-project.org/assets/images/egeria-header.png)
5
-
6
- [![GitHub](https://img.shields.io/github/license/odpi/egeria)](LICENSE)
7
-
8
-
9
- # pyegeria: a python client for Egeria
10
-
11
- This is a package for easily using the Egeria
12
- open metadata environment from python. Details about the
13
- open source Egeria project can be found at [Egeria Project](https://egeria-project.org).
14
-
15
- This package is in active development. There is initial
16
- support for many of Egeria's services including configuration and operation. This client depends on
17
- This release supports Egeria 5.1 and above - although most of the functions may work on earlier versions of Egeria as well.
18
-
19
- The code is organized to mimic the existing Egeria Java Client structure.
20
-
21
- WARNING: files that start with "X" are in-progress placeholders that are not meant to be used..they will mature and
22
- evolve.
23
-
24
- All feedback is welcome. Please engage via our [community](http://egeria-project.org/guides/community/),
25
- team calls, or via github issues in this repo. If interested in contributing,
26
- you can engage via the community or directly reach out to
27
- [dan.wolfson\@pdr-associates.com](mailto:dan.wolfson@pdr-associates.com?subject=pyegeria).
28
-
29
- This is a learning experience.
30
-
31
-
32
-
33
- ----
34
- License: [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/),
35
- Copyright Contributors to the ODPi Egeria project.
pyegeria/_globals.py DELETED
@@ -1,47 +0,0 @@
1
- """
2
- SPDX-License-Identifier: Apache-2.0
3
- Copyright Contributors to the ODPi Egeria project.
4
- """
5
-
6
- """
7
- This common file is used to set some global values and enumerations used by the overall package.
8
-
9
- """
10
-
11
-
12
- is_debug = False
13
- disable_ssl_warnings = True
14
- enable_ssl_check = False
15
- max_paging_size = 500
16
- default_time_out = 30
17
- DEBUG_LEVEL = "quiet"
18
- comment_types = (
19
- "ANSWER",
20
- "OTHER",
21
- "QUESTION",
22
- "STANDARD_COMMENT",
23
- "SUGGESTION",
24
- "USAGE_EXPERIENCE",
25
- )
26
- star_ratings = (
27
- "FIVE_STARS",
28
- "FOUR_STARS",
29
- "NO_RECOMMENDATION",
30
- "ONE_STAR",
31
- "THREE_STARS",
32
- "TWO_STARS",
33
- )
34
-
35
- TEMPLATE_GUIDS: dict = {}
36
- INTEGRATION_GUIDS: dict = {}
37
-
38
- NO_ELEMENTS_FOUND = "No elements found"
39
- NO_ASSETS_FOUND = "No assets found"
40
- NO_SERVERS_FOUND = "No servers found"
41
- NO_CATALOGS_FOUND = "No catalogs found"
42
- NO_GLOSSARIES_FOUND = "No glossaries found"
43
- NO_TERMS_FOUND = "No terms found"
44
- NO_CATEGORIES_FOUND = "No categories found"
45
- NO_ELEMENT_FOUND = "No element found"
46
- NO_PROJECTS_FOUND = "No projects found"
47
- NO_COLLECTION_FOUND = "No collection found"
pyegeria/_validators.py DELETED
@@ -1,385 +0,0 @@
1
- """
2
- SPDX-License-Identifier: Apache-2.0
3
- Copyright Contributors to the ODPi Egeria project.
4
- """
5
-
6
- import inspect
7
- import json
8
- from json import JSONDecodeError
9
-
10
- import validators
11
-
12
- from pyegeria._exceptions import InvalidParameterException, OMAGCommonErrorCode
13
-
14
- """
15
- This package contains internally used validators.
16
-
17
- """
18
-
19
-
20
- def validate_user_id(user_id: str) -> bool:
21
- """
22
- Validate that the provided user id is neither null nor empty.
23
-
24
- Parameters
25
- ----------
26
- user_id : str The user id string to validate
27
-
28
- Returns
29
- -------
30
- bool: True if valid, If invalid an InvalidParameterException is raised.
31
-
32
- Raises
33
- ------
34
- InvalidParameterException
35
- If the provided user id is null or empty
36
- """
37
- if (user_id is None) or len(user_id) == 0:
38
- msg = str(OMAGCommonErrorCode.NULL_USER_ID.value["message_template"]).format(
39
- "user_id"
40
- )
41
- calling_frame = inspect.currentframe().f_back
42
- caller_method = inspect.getframeinfo(calling_frame).function
43
-
44
- exc_msg = json.dumps(
45
- {
46
- "class": "VoidResponse",
47
- "relatedHTTPCode": 400,
48
- "exceptionClassName": "InvalidParameterException",
49
- "actionDescription": caller_method,
50
- "exceptionErrorMessage": msg,
51
- "exceptionErrorMessageId": OMAGCommonErrorCode.NULL_USER_ID.value[
52
- "message_id"
53
- ],
54
- "exceptionErrorMessageParameters": user_id,
55
- "exceptionSystemAction": OMAGCommonErrorCode.NULL_USER_ID.value[
56
- "system_action"
57
- ],
58
- "exceptionUserAction": OMAGCommonErrorCode.NULL_USER_ID.value[
59
- "user_action"
60
- ],
61
- "exceptionProperties": {"user_id": user_id},
62
- }
63
- )
64
- raise InvalidParameterException(exc_msg)
65
- else:
66
- return True
67
-
68
-
69
- def validate_server_name(server_name: str) -> bool:
70
- """
71
- Validate that the provided server name is neither null nor empty.
72
-
73
- Parameters
74
- ----------
75
- server_name : str The user id string to validate
76
-
77
- Returns
78
- -------
79
- bool - True if valid, If invalid an InvalidParameterException is raised.
80
-
81
- """
82
- calling_frame = inspect.currentframe().f_back
83
- caller_method = inspect.getframeinfo(calling_frame).function
84
-
85
- if (server_name is None) or (len(server_name) == 0):
86
- msg = str(
87
- OMAGCommonErrorCode.SERVER_NAME_NOT_SPECIFIED.value["message_template"]
88
- )
89
- exc_msg = json.dumps(
90
- {
91
- "class": "VoidResponse",
92
- "relatedHTTPCode": 400,
93
- "exceptionClassName": "InvalidParameterException",
94
- "actionDescription": caller_method,
95
- "exceptionErrorMessage": msg,
96
- "exceptionErrorMessageId": OMAGCommonErrorCode.NULL_USER_ID.value[
97
- "message_id"
98
- ],
99
- "exceptionErrorMessageParameters": server_name,
100
- "exceptionSystemAction": OMAGCommonErrorCode.NULL_USER_ID.value[
101
- "system_action"
102
- ],
103
- "exceptionUserAction": OMAGCommonErrorCode.NULL_USER_ID.value[
104
- "user_action"
105
- ],
106
- "exceptionProperties": {"view_server": server_name},
107
- }
108
- )
109
- raise InvalidParameterException(exc_msg)
110
- else:
111
- return True
112
-
113
-
114
- def validate_guid(guid: str) -> bool:
115
- """
116
- Validate that the provided guid is neither null nor empty.
117
-
118
- Parameters
119
- ----------
120
- guid : str The user id string to validate
121
-
122
- Returns
123
- -------
124
- bool - True if valid, If invalid an InvalidParameterException is raised.
125
-
126
- """
127
- calling_frame = inspect.currentframe().f_back
128
- caller_method = inspect.getframeinfo(calling_frame).function
129
-
130
- if (guid is None) or (len(guid) == 0) or (type(guid) is not str):
131
- msg = str(OMAGCommonErrorCode.NULL_GUID.value["message_template"])
132
- exc_msg = json.dumps(
133
- {
134
- "class": "VoidResponse",
135
- "relatedHTTPCode": 400,
136
- "exceptionClassName": "InvalidParameterException",
137
- "actionDescription": caller_method,
138
- "exceptionErrorMessage": msg,
139
- "exceptionErrorMessageId": OMAGCommonErrorCode.NULL_USER_ID.value[
140
- "message_id"
141
- ],
142
- "exceptionErrorMessageParameters": guid,
143
- "exceptionSystemAction": OMAGCommonErrorCode.NULL_USER_ID.value[
144
- "system_action"
145
- ],
146
- "exceptionUserAction": OMAGCommonErrorCode.NULL_USER_ID.value[
147
- "user_action"
148
- ],
149
- "exceptionProperties": {"guid": guid},
150
- }
151
- )
152
- raise InvalidParameterException(exc_msg)
153
- else:
154
- return True
155
-
156
-
157
- def validate_name(name: str) -> bool:
158
- """
159
- Validate that the provided name is neither null nor empty.
160
-
161
- Parameters
162
- ----------
163
- name: str The user id string to validate
164
-
165
- Returns
166
- -------
167
- bool - True if valid, If invalid an InvalidParameterException is raised.
168
-
169
- """
170
- calling_frame = inspect.currentframe().f_back
171
- caller_method = inspect.getframeinfo(calling_frame).function
172
-
173
- if (name is None) or (len(name) == 0):
174
- msg = str(OMAGCommonErrorCode.NULL_NAME.value["message_template"])
175
- exc_msg = json.dumps(
176
- {
177
- "class": "VoidResponse",
178
- "relatedHTTPCode": 400,
179
- "exceptionClassName": "InvalidParameterException",
180
- "actionDescription": caller_method,
181
- "exceptionErrorMessage": msg,
182
- "exceptionErrorMessageId": OMAGCommonErrorCode.NULL_USER_ID.value[
183
- "message_id"
184
- ],
185
- "exceptionErrorMessageParameters": name,
186
- "exceptionSystemAction": OMAGCommonErrorCode.NULL_USER_ID.value[
187
- "system_action"
188
- ],
189
- "exceptionUserAction": OMAGCommonErrorCode.NULL_USER_ID.value[
190
- "user_action"
191
- ],
192
- "exceptionProperties": {"name": name},
193
- }
194
- )
195
- raise InvalidParameterException(exc_msg)
196
- else:
197
- return True
198
-
199
-
200
- def validate_search_string(search_string: str) -> bool:
201
- """
202
- Validate that the provided search string is neither null nor empty.
203
-
204
- Parameters
205
- ----------
206
- search_string : str The user id string to validate
207
-
208
- Returns
209
- -------
210
- bool - True if valid, If invalid an InvalidParameterException is raised.
211
-
212
- """
213
- calling_frame = inspect.currentframe().f_back
214
- caller_method = inspect.getframeinfo(calling_frame).function
215
-
216
- if (search_string is None) or (len(search_string) == 0):
217
- msg = str(
218
- OMAGCommonErrorCode.NULL_SEARCH_STRING.value["message_template"].format(
219
- "search_string", caller_method
220
- )
221
- )
222
- exc_msg = json.dumps(
223
- {
224
- "class": "VoidResponse",
225
- "relatedHTTPCode": 400,
226
- "exceptionClassName": "InvalidParameterException",
227
- "actionDescription": caller_method,
228
- "exceptionErrorMessage": msg,
229
- "exceptionErrorMessageId": OMAGCommonErrorCode.NULL_USER_ID.value[
230
- "message_id"
231
- ],
232
- "exceptionErrorMessageParameters": [search_string, caller_method],
233
- "exceptionSystemAction": OMAGCommonErrorCode.NULL_USER_ID.value[
234
- "system_action"
235
- ],
236
- "exceptionUserAction": OMAGCommonErrorCode.NULL_USER_ID.value[
237
- "user_action"
238
- ],
239
- "exceptionProperties": {"search_string": search_string},
240
- }
241
- )
242
- raise InvalidParameterException(exc_msg)
243
- else:
244
- return True
245
-
246
-
247
- def validate_public(is_public: bool) -> bool:
248
- """
249
- Validate that the provided flag is boolean.
250
-
251
- Parameters
252
- ----------
253
- is_public : bool The flag must be boolean
254
-
255
- Returns
256
- -------
257
- bool - True if valid, If invalid an InvalidParameterException is raised.
258
-
259
- """
260
- calling_frame = inspect.currentframe().f_back
261
- caller_method = inspect.getframeinfo(calling_frame).function
262
-
263
- if is_public is None:
264
- msg = str(OMAGCommonErrorCode.NULL_OBJECT.value["message_template"])
265
- exc_msg = json.dumps(
266
- {
267
- "class": "VoidResponse",
268
- "relatedHTTPCode": 400,
269
- "exceptionClassName": "InvalidParameterException",
270
- "actionDescription": caller_method,
271
- "exceptionErrorMessage": msg,
272
- "exceptionErrorMessageId": OMAGCommonErrorCode.NULL_USER_ID.value[
273
- "message_id"
274
- ],
275
- "exceptionErrorMessageParameters": is_public,
276
- "exceptionSystemAction": OMAGCommonErrorCode.NULL_USER_ID.value[
277
- "system_action"
278
- ],
279
- "exceptionUserAction": OMAGCommonErrorCode.NULL_USER_ID.value[
280
- "user_action"
281
- ],
282
- "exceptionProperties": {"is_public": is_public},
283
- }
284
- )
285
- raise InvalidParameterException(exc_msg)
286
- else:
287
- return True
288
-
289
-
290
- def validate_url(url: str) -> bool:
291
- """
292
- Validate that the provided url is neither null nor empty. The syntax of the url
293
- string is also checked to see that it conforms to standards.
294
-
295
- Parameters
296
- ----------
297
- url : str The url string to validate.
298
-
299
- Returns
300
- -------
301
- bool - True if valid, If invalid an InvalidParameterException is raised.
302
-
303
- """
304
- calling_frame = inspect.currentframe().f_back
305
- caller_method = inspect.getframeinfo(calling_frame).function
306
-
307
- if (url is None) or (len(url) == 0):
308
- msg = str(
309
- OMAGCommonErrorCode.SERVER_URL_NOT_SPECIFIED.value["message_template"]
310
- )
311
- exc_msg = json.dumps(
312
- {
313
- "class": "VoidResponse",
314
- "relatedHTTPCode": 400,
315
- "exceptionClassName": "InvalidParameterException",
316
- "actionDescription": caller_method,
317
- "exceptionErrorMessage": msg,
318
- "exceptionErrorMessageId": OMAGCommonErrorCode.SERVER_URL_MALFORMED.value[
319
- "message_id"
320
- ],
321
- "exceptionErrorMessageParameters": url,
322
- "exceptionSystemAction": OMAGCommonErrorCode.SERVER_URL_MALFORMED.value[
323
- "system_action"
324
- ],
325
- "exceptionUserAction": OMAGCommonErrorCode.SERVER_URL_MALFORMED.value[
326
- "user_action"
327
- ],
328
- "exceptionProperties": {"url": url},
329
- }
330
- )
331
- raise InvalidParameterException(exc_msg)
332
-
333
- # The following hack allows localhost to be used as a hostname - which is disallowed by the
334
- # validations package
335
- if ("localhost" in url) and ("localhost." not in url):
336
- url = url.replace("localhost", "127.0.0.1")
337
-
338
- result = validators.url(url)
339
- if result is not True:
340
- msg = OMAGCommonErrorCode.SERVER_URL_MALFORMED.value["message_template"].format(
341
- url
342
- )
343
- exc_msg = json.dumps(
344
- {
345
- "class": "VoidResponse",
346
- "relatedHTTPCode": 400,
347
- "exceptionClassName": "InvalidParameterException",
348
- "actionDescription": caller_method,
349
- "exceptionErrorMessage": msg,
350
- "exceptionErrorMessageId": OMAGCommonErrorCode.SERVER_URL_MALFORMED.value[
351
- "message_id"
352
- ],
353
- "exceptionErrorMessageParameters": url,
354
- "exceptionSystemAction": OMAGCommonErrorCode.SERVER_URL_MALFORMED.value[
355
- "system_action"
356
- ],
357
- "exceptionUserAction": OMAGCommonErrorCode.SERVER_URL_MALFORMED.value[
358
- "user_action"
359
- ],
360
- "exceptionProperties": {"url": url},
361
- }
362
- )
363
- raise InvalidParameterException(exc_msg)
364
- else:
365
- return True
366
-
367
-
368
- def is_json(txt: str) -> bool:
369
- """
370
- Parameters
371
- ----------
372
- txt : str
373
- The string to check if it is a valid JSON.
374
-
375
- Returns
376
- -------
377
- bool
378
- True if the string is a valid JSON, False otherwise.
379
- """
380
- try:
381
- json.loads(txt)
382
- return True
383
- except (ValueError, JSONDecodeError) as e:
384
- print(e)
385
- return False