pyegeria 0.7.14__tar.gz → 0.7.16__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 (87) hide show
  1. {pyegeria-0.7.14 → pyegeria-0.7.16}/PKG-INFO +1 -1
  2. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/widgets/cat/list_relationships.py +6 -2
  3. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/widgets/cli/egeria.py +16 -1
  4. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/widgets/cli/egeria_tech.py +11 -1
  5. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/widgets/ops/engine_actions.py +1 -7
  6. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/widgets/ops/list_catalog_targets.py +1 -1
  7. pyegeria-0.7.16/examples/widgets/tech/list_related_elements.py +145 -0
  8. {pyegeria-0.7.14 → pyegeria-0.7.16}/pyproject.toml +2 -1
  9. {pyegeria-0.7.14 → pyegeria-0.7.16}/LICENSE +0 -0
  10. {pyegeria-0.7.14 → pyegeria-0.7.16}/README.md +0 -0
  11. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/doc_samples/Create_Collection_Sample.py +0 -0
  12. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/doc_samples/Create_Sustainability_Collection_Sample.py +0 -0
  13. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/widgets/cat/README.md +0 -0
  14. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/widgets/cat/__init__.py +0 -0
  15. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/widgets/cat/get_asset_graph.py +0 -0
  16. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/widgets/cat/get_collection.py +0 -0
  17. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/widgets/cat/get_project_structure.py +0 -0
  18. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/widgets/cat/get_tech_type_elements.py +0 -0
  19. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/widgets/cat/get_tech_type_template.py +0 -0
  20. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/widgets/cat/list_assets.py +0 -0
  21. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/widgets/cat/list_cert_types.py +0 -0
  22. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/widgets/cat/list_glossary.py +0 -0
  23. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/widgets/cat/list_projects.py +0 -0
  24. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/widgets/cat/list_tech_types.py +0 -0
  25. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/widgets/cat/list_todos.py +0 -0
  26. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/widgets/cli/__init__.py +0 -0
  27. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/widgets/cli/egeria_cat.py +0 -0
  28. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/widgets/cli/egeria_my.py +0 -0
  29. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/widgets/cli/egeria_ops.py +0 -0
  30. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/widgets/cli/ops_config.py +0 -0
  31. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/widgets/my/README.md +0 -0
  32. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/widgets/my/__init__.py +0 -0
  33. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/widgets/my/list_my_profile.py +0 -0
  34. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/widgets/my/list_my_roles.py +0 -0
  35. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/widgets/my/monitor_my_todos.py +0 -0
  36. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/widgets/my/monitor_open_todos.py +0 -0
  37. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/widgets/my/my_profile_actions.py +0 -0
  38. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/widgets/ops/README.md +0 -0
  39. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/widgets/ops/__init__.py +0 -0
  40. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/widgets/ops/integration_daemon_actions.py +0 -0
  41. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/widgets/ops/load_archive.py +0 -0
  42. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/widgets/ops/monitor_asset_events.py +0 -0
  43. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/widgets/ops/monitor_coco_status.py +0 -0
  44. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/widgets/ops/monitor_engine_activity.py +0 -0
  45. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/widgets/ops/monitor_gov_eng_status.py +0 -0
  46. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/widgets/ops/monitor_integ_daemon_status.py +0 -0
  47. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/widgets/ops/monitor_platform_status.py +0 -0
  48. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/widgets/ops/monitor_server_list.py +0 -0
  49. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/widgets/ops/monitor_server_status.py +0 -0
  50. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/widgets/ops/refresh_integration_daemon.py +0 -0
  51. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/widgets/ops/restart_integration_daemon.py +0 -0
  52. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/widgets/tech/README.md +0 -0
  53. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/widgets/tech/__init__.py +0 -0
  54. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/widgets/tech/get_guid_info.py +0 -0
  55. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/widgets/tech/get_tech_details.py +0 -0
  56. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/widgets/tech/list_asset_types.py +0 -0
  57. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/widgets/tech/list_elements.py +0 -0
  58. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/widgets/tech/list_registered_services.py +0 -0
  59. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/widgets/tech/list_relationship_types.py +0 -0
  60. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/widgets/tech/list_tech_templates.py +0 -0
  61. {pyegeria-0.7.14 → pyegeria-0.7.16}/examples/widgets/tech/list_valid_metadata_values.py +0 -0
  62. {pyegeria-0.7.14 → pyegeria-0.7.16}/pyegeria/Xloaded_resources_omvs.py +0 -0
  63. {pyegeria-0.7.14 → pyegeria-0.7.16}/pyegeria/__init__.py +0 -0
  64. {pyegeria-0.7.14 → pyegeria-0.7.16}/pyegeria/_client.py +0 -0
  65. {pyegeria-0.7.14 → pyegeria-0.7.16}/pyegeria/_deprecated_gov_engine.py +0 -0
  66. {pyegeria-0.7.14 → pyegeria-0.7.16}/pyegeria/_exceptions.py +0 -0
  67. {pyegeria-0.7.14 → pyegeria-0.7.16}/pyegeria/_globals.py +0 -0
  68. {pyegeria-0.7.14 → pyegeria-0.7.16}/pyegeria/_validators.py +0 -0
  69. {pyegeria-0.7.14 → pyegeria-0.7.16}/pyegeria/action_author_omvs.py +0 -0
  70. {pyegeria-0.7.14 → pyegeria-0.7.16}/pyegeria/asset_catalog_omvs.py +0 -0
  71. {pyegeria-0.7.14 → pyegeria-0.7.16}/pyegeria/automated_curation_omvs.py +0 -0
  72. {pyegeria-0.7.14 → pyegeria-0.7.16}/pyegeria/classification_manager_omvs.py +0 -0
  73. {pyegeria-0.7.14 → pyegeria-0.7.16}/pyegeria/collection_manager_omvs.py +0 -0
  74. {pyegeria-0.7.14 → pyegeria-0.7.16}/pyegeria/core_omag_server_config.py +0 -0
  75. {pyegeria-0.7.14 → pyegeria-0.7.16}/pyegeria/create_tech_guid_lists.py +0 -0
  76. {pyegeria-0.7.14 → pyegeria-0.7.16}/pyegeria/feedback_manager_omvs.py +0 -0
  77. {pyegeria-0.7.14 → pyegeria-0.7.16}/pyegeria/full_omag_server_config.py +0 -0
  78. {pyegeria-0.7.14 → pyegeria-0.7.16}/pyegeria/glossary_browser_omvs.py +0 -0
  79. {pyegeria-0.7.14 → pyegeria-0.7.16}/pyegeria/glossary_manager_omvs.py +0 -0
  80. {pyegeria-0.7.14 → pyegeria-0.7.16}/pyegeria/my_profile_omvs.py +0 -0
  81. {pyegeria-0.7.14 → pyegeria-0.7.16}/pyegeria/platform_services.py +0 -0
  82. {pyegeria-0.7.14 → pyegeria-0.7.16}/pyegeria/project_manager_omvs.py +0 -0
  83. {pyegeria-0.7.14 → pyegeria-0.7.16}/pyegeria/registered_info.py +0 -0
  84. {pyegeria-0.7.14 → pyegeria-0.7.16}/pyegeria/runtime_manager_omvs.py +0 -0
  85. {pyegeria-0.7.14 → pyegeria-0.7.16}/pyegeria/server_operations.py +0 -0
  86. {pyegeria-0.7.14 → pyegeria-0.7.16}/pyegeria/utils.py +0 -0
  87. {pyegeria-0.7.14 → pyegeria-0.7.16}/pyegeria/valid_metadata_omvs.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyegeria
3
- Version: 0.7.14
3
+ Version: 0.7.16
4
4
  Summary: A python client for Egeria
5
5
  Home-page: https://github.com/odpi/egeria-python
6
6
  License: Apache 2.0
@@ -87,8 +87,12 @@ def list_relationships(search_string: str, server: str, url: str, username: str,
87
87
  end2_type = rel['end2']['type']['typeName']
88
88
 
89
89
  rel_md = ''
90
- for key in rel['properties'].keys():
91
- rel_md += f"* {key}: {rel['properties'][key]}\n"
90
+ p_test = rel.get('properties','---')
91
+ if type(p_test) is str:
92
+ rel_md = '---'
93
+ else:
94
+ for key in rel['properties'].keys():
95
+ rel_md += f"* {key}: {rel['properties'][key]}\n"
92
96
 
93
97
  rel_out = Markdown(rel_md)
94
98
 
@@ -24,6 +24,7 @@ from examples.widgets.cat.list_projects import display_project_list
24
24
  from examples.widgets.cat.list_tech_types import display_tech_types
25
25
  from examples.widgets.cat.list_todos import display_to_dos
26
26
  from examples.widgets.cli.ops_config import Config
27
+ from examples.widgets.cat.list_relationships import list_relationships
27
28
 
28
29
  from examples.widgets.ops.engine_actions import start_server as start_engine_host, \
29
30
  stop_server as stop_engine_host
@@ -51,7 +52,8 @@ from examples.widgets.tech.list_relationship_types import display_relationship_t
51
52
  from examples.widgets.tech.list_tech_templates import display_templates_spec
52
53
  from examples.widgets.tech.list_valid_metadata_values import display_metadata_values
53
54
  from examples.widgets.tech.list_elements import list_elements
54
- from examples.widgets.cat.list_relationships import list_relationships
55
+ from examples.widgets.tech.list_related_elements import display_related_elements
56
+
55
57
 
56
58
  @tui()
57
59
  # @tui('menu', 'menu', 'A textual command line interface')
@@ -275,6 +277,19 @@ def show_registered_services(ctx, services):
275
277
  display_registered_svcs(services, c.view_server, c.view_server_url,
276
278
  c.userid, c.password, c.jupyter, c.width)
277
279
 
280
+ @show.command('related-elements')
281
+ @click.pass_context
282
+ @click.argument('element-guid')
283
+ @click.option('--rel-type',default = 'SpecificationPropertyAssignment',
284
+ help="Relationship type to find related elements of")
285
+ @click.option('--om_type', default = None, help="Optional Open Metadata Type to filter by.")
286
+ def show_related_elements(ctx, element_guid, rel_type, om_type):
287
+ c = ctx.obj
288
+ display_related_elements(element_guid,rel_type,om_type, c.view_server, c.view_server_url,
289
+ c.userid, c.password, c.jupyter, c.width)
290
+
291
+
292
+
278
293
 
279
294
  @show.command('relationship-types')
280
295
  @click.option('--rel-type', default='AssetOwner', help='Relationship type to get information about')
@@ -23,6 +23,7 @@ from examples.widgets.tech.list_tech_templates import display_templates_spec
23
23
  from examples.widgets.tech.list_valid_metadata_values import display_metadata_values
24
24
  from examples.widgets.cat.get_tech_type_template import template_viewer
25
25
  from examples.widgets.tech.list_elements import list_elements
26
+ from examples.widgets.tech.list_related_elements import display_related_elements
26
27
 
27
28
 
28
29
 
@@ -216,7 +217,16 @@ def get_element_info(ctx, om_type):
216
217
  list_elements(om_type, c.view_server, c.view_server_url,
217
218
  c.userid, c.password, c.jupyter, c.width)
218
219
 
219
-
220
+ @show.command('related-elements')
221
+ @click.pass_context
222
+ @click.argument('element-guid')
223
+ @click.option('--rel-type',default = 'SpecificationPropertyAssignment',
224
+ help="Relationship type to find related elements of")
225
+ @click.option('--om_type', default = None, help="Optional Open Metadata Type to filter by.")
226
+ def show_related_elements(ctx, element_guid, rel_type, om_type):
227
+ c = ctx.obj
228
+ display_related_elements(element_guid,rel_type,om_type, c.view_server, c.view_server_url,
229
+ c.userid, c.password, c.jupyter, c.width)
220
230
 
221
231
  #
222
232
  # Tell
@@ -4,15 +4,9 @@ Copyright Contributors to the ODPi Egeria project.
4
4
 
5
5
 
6
6
 
7
- This script restarts an integration daemon.
7
+ Execute engine actions.
8
8
 
9
9
  """
10
-
11
- import os
12
- from rich import print, print_json
13
- from rich.console import Console
14
-
15
- import time
16
10
  import click
17
11
  # from ops_config import Config, pass_config
18
12
  from pyegeria import ServerOps, AutomatedCuration, INTEGRATION_GUIDS, Platform
@@ -3,10 +3,10 @@
3
3
  SPDX-License-Identifier: Apache-2.0
4
4
  Copyright Contributors to the ODPi Egeria project.
5
5
 
6
- Unit tests for the Utils helper functions using the Pytest framework.
7
6
 
8
7
 
9
8
  List catalog targets
9
+
10
10
  """
11
11
  import argparse
12
12
  import os
@@ -0,0 +1,145 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ SPDX-License-Identifier: Apache-2.0
4
+ Copyright Contributors to the ODPi Egeria project.
5
+
6
+ List elements related to given element guid by the specified relationship type. Optionally filter by a specified
7
+ open metadata type.
8
+
9
+ """
10
+ import argparse
11
+ import os
12
+ import sys
13
+ import time
14
+
15
+ from rich import box
16
+ from rich.console import Console
17
+ from rich.markdown import Markdown
18
+ from rich.prompt import Prompt
19
+ from rich.table import Table
20
+
21
+ from pyegeria import (
22
+ InvalidParameterException,
23
+ PropertyServerException,
24
+ UserNotAuthorizedException,
25
+ print_exception_response,
26
+ ClassificationManager
27
+ )
28
+
29
+ console = Console()
30
+ EGERIA_METADATA_STORE = os.environ.get("EGERIA_METADATA_STORE", "active-metadata-store")
31
+ EGERIA_KAFKA_ENDPOINT = os.environ.get('KAFKA_ENDPOINT', 'localhost:9092')
32
+ EGERIA_PLATFORM_URL = os.environ.get('EGERIA_PLATFORM_URL', 'https://localhost:9443')
33
+ EGERIA_VIEW_SERVER = os.environ.get('VIEW_SERVER', 'view-server')
34
+ EGERIA_VIEW_SERVER_URL = os.environ.get('EGERIA_VIEW_SERVER_URL', 'https://localhost:9443')
35
+ EGERIA_INTEGRATION_DAEMON = os.environ.get('INTEGRATION_DAEMON', 'integration-daemon')
36
+ EGERIA_ADMIN_USER = os.environ.get('ADMIN_USER', 'garygeeke')
37
+ EGERIA_ADMIN_PASSWORD = os.environ.get('ADMIN_PASSWORD', 'secret')
38
+ EGERIA_USER = os.environ.get('EGERIA_USER', 'erinoverview')
39
+ EGERIA_USER_PASSWORD = os.environ.get('EGERIA_USER_PASSWORD', 'secret')
40
+ EGERIA_JUPYTER = bool(os.environ.get('EGERIA_JUPYTER', 'False'))
41
+ EGERIA_WIDTH = int(os.environ.get('EGERIA_WIDTH', '200'))
42
+
43
+
44
+ def display_related_elements(element_guid: str, relationship: str, om_type: str, server: str,
45
+ url: str, username: str, password: str, jupyter: bool = EGERIA_JUPYTER,
46
+ width: int = EGERIA_WIDTH
47
+ ):
48
+ c_client = ClassificationManager(server, url, user_id=username, user_pwd=password)
49
+ token = c_client.create_egeria_bearer_token()
50
+ rel_el = c_client.get_related_elements(element_guid, relationship, om_type)
51
+
52
+ if type(rel_el) is str:
53
+ print(f"\n\nWas not able find related elements for {element_guid} with relationship {relationship}\n\n")
54
+ sys.exit(0)
55
+
56
+ def generate_table() -> Table:
57
+ """Make a new table."""
58
+ table = Table(
59
+ title=f"Elements Related to guid: {element_guid} by relationship: {relationship} @ {time.asctime()}",
60
+ style="bold bright_white on black",
61
+ row_styles=["bold bright_white on black"],
62
+ header_style="white on dark_blue",
63
+ title_style="bold bright_white on black",
64
+ caption_style="white on black",
65
+ show_lines=True,
66
+ box=box.ROUNDED,
67
+ caption=f"Elements from Server '{server}' @ Platform - {url}",
68
+ expand=True,
69
+ # width=500
70
+ )
71
+
72
+ table.add_column("Relationship Properties")
73
+ table.add_column("Preferred Value")
74
+ table.add_column("Case Sensitive")
75
+ table.add_column("Description")
76
+ table.add_column("Additional Properties")
77
+
78
+ for related_element in rel_el:
79
+ relationship_props = related_element["relationshipProperties"]
80
+
81
+ rel_prop_md = ''
82
+ for key in relationship_props.keys():
83
+ rel_prop_md += f"{key}: {relationship_props[key]}\n"
84
+ # rel_prop_out = Markdown(rel_prop_md)
85
+
86
+ rel_element = related_element['relatedElement']
87
+ el = rel_element["properties"]
88
+ for prop in el:
89
+ el_case = el.get("isCaseSensitive", '---')
90
+ el_pref = el.get("preferredValue", '---')
91
+ el_desc = el.get("description", '---')
92
+ el_add = el.get("additionalProperties", '---')
93
+
94
+ el_add_md = ''
95
+ el_add_f = el_add.replace('\u003d',':')
96
+ s = el_add.strip('{}').strip()
97
+ pairs = [i.split('=') for i in s.split(', ')]
98
+ # d_add_prop = dict(pairs)
99
+ # for key in d_add_prop.keys():
100
+ # el_add_md += f"{key}: {d_add_prop[key]}\n"
101
+ # el_add_out = Markdown(el_add_md)
102
+
103
+ table.add_row(rel_prop_md, el_pref, el_case, el_desc, s)
104
+
105
+ return table
106
+
107
+ try:
108
+ console = Console(width=width, force_terminal=not jupyter)
109
+
110
+ with console.pager(styles=True):
111
+ console.print(generate_table())
112
+
113
+ except (InvalidParameterException, PropertyServerException, UserNotAuthorizedException) as e:
114
+ print_exception_response(e)
115
+ assert e.related_http_code != "200", "Invalid parameters"
116
+ finally:
117
+ c_client.close_session()
118
+
119
+
120
+ def main():
121
+ parser = argparse.ArgumentParser()
122
+ parser.add_argument("--server", help="Name of the server to display status for")
123
+ parser.add_argument("--url", help="URL Platform to connect to")
124
+ parser.add_argument("--userid", help="User Id")
125
+ parser.add_argument("--password", help="Password")
126
+
127
+ args = parser.parse_args()
128
+
129
+ server = args.server if args.server is not None else EGERIA_VIEW_SERVER
130
+ url = args.url if args.url is not None else EGERIA_PLATFORM_URL
131
+ userid = args.userid if args.userid is not None else EGERIA_USER
132
+ password = args.password if args.password is not None else EGERIA_USER_PASSWORD
133
+ guid = None
134
+
135
+ try:
136
+ element_guid = Prompt.ask("Enter an Element GUID find relationships for")
137
+ relationship = Prompt.ask("Enter the relationship to search", default="SpecificationPropertyAssignment")
138
+ om_type = Prompt.ask("Enter an optional Open Metadata Type", default=None)
139
+ display_related_elements(element_guid, relationship, om_type, server, url, userid, password)
140
+ except(KeyboardInterrupt):
141
+ pass
142
+
143
+
144
+ if __name__ == "__main__":
145
+ main()
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "pyegeria"
3
- version = "0.7.14"
3
+ version = "0.7.16"
4
4
  license = 'Apache 2.0'
5
5
  authors = ["Dan Wolfson <dan.wolfson@pdr-associates.com>"]
6
6
  readme = "README.md"
@@ -100,5 +100,6 @@ pytest = "^8.2.2"
100
100
  list_tech_templates = "examples.widgets.tech.list_tech_templates:main"
101
101
  get_element_info = "examples.widgets.tech.get_element_info:main"
102
102
  list_elements = "examples.widgets.tech.list_elements:main"
103
+ list_related_elements = "examples.widgets.tech.list_related_elements:main"
103
104
 
104
105
  list_valid_metadata_values = "examples.widgets.tech.list_valid_metadata_values:main"
File without changes
File without changes
File without changes
File without changes