pyegeria 0.3.7__py3-none-any.whl → 0.3.8__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.
Files changed (26) hide show
  1. pyegeria/__init__.py +2 -1
  2. pyegeria/loaded_resources_omvs.py +159 -0
  3. pyegeria/my_profile_omvs.py +6 -5
  4. pyegeria/registered_info.py +1 -1
  5. {pyegeria-0.3.7.data → pyegeria-0.3.8.data}/scripts/engine_action_status.py +7 -4
  6. {pyegeria-0.3.7.data → pyegeria-0.3.8.data}/scripts/find_todos.py +3 -3
  7. {pyegeria-0.3.7.dist-info → pyegeria-0.3.8.dist-info}/METADATA +1 -1
  8. {pyegeria-0.3.7.dist-info → pyegeria-0.3.8.dist-info}/RECORD +26 -25
  9. {pyegeria-0.3.7.data → pyegeria-0.3.8.data}/scripts/collection_viewer.py +0 -0
  10. {pyegeria-0.3.7.data → pyegeria-0.3.8.data}/scripts/get_relationship_types.py +0 -0
  11. {pyegeria-0.3.7.data → pyegeria-0.3.8.data}/scripts/get_tech_details.py +0 -0
  12. {pyegeria-0.3.7.data → pyegeria-0.3.8.data}/scripts/get_tech_types.py +0 -0
  13. {pyegeria-0.3.7.data → pyegeria-0.3.8.data}/scripts/glossary_view.py +0 -0
  14. {pyegeria-0.3.7.data → pyegeria-0.3.8.data}/scripts/gov_engine_status.py +0 -0
  15. {pyegeria-0.3.7.data → pyegeria-0.3.8.data}/scripts/integration_daemon_status.py +0 -0
  16. {pyegeria-0.3.7.data → pyegeria-0.3.8.data}/scripts/list_asset_types.py +0 -0
  17. {pyegeria-0.3.7.data → pyegeria-0.3.8.data}/scripts/multi-server_status.py +0 -0
  18. {pyegeria-0.3.7.data → pyegeria-0.3.8.data}/scripts/my_todos.py +0 -0
  19. {pyegeria-0.3.7.data → pyegeria-0.3.8.data}/scripts/open_todos.py +0 -0
  20. {pyegeria-0.3.7.data → pyegeria-0.3.8.data}/scripts/project_list_viewer.py +0 -0
  21. {pyegeria-0.3.7.data → pyegeria-0.3.8.data}/scripts/server_status.py +0 -0
  22. {pyegeria-0.3.7.data → pyegeria-0.3.8.data}/scripts/server_status_widget.py +0 -0
  23. {pyegeria-0.3.7.data → pyegeria-0.3.8.data}/scripts/view_my_profile.py +0 -0
  24. {pyegeria-0.3.7.dist-info → pyegeria-0.3.8.dist-info}/LICENSE +0 -0
  25. {pyegeria-0.3.7.dist-info → pyegeria-0.3.8.dist-info}/WHEEL +0 -0
  26. {pyegeria-0.3.7.dist-info → pyegeria-0.3.8.dist-info}/top_level.txt +0 -0
pyegeria/__init__.py CHANGED
@@ -43,4 +43,5 @@ from .server_operations import ServerOps
43
43
  from .collection_manager_omvs import CollectionManager
44
44
  from .project_manager_omvs import ProjectManager
45
45
  from .valid_metadata_omvs import ValidMetadataManager
46
- __version__ = "0.3"
46
+ from .loaded_resources_omvs import LoadedResources
47
+ __version__ = "0.38"
@@ -0,0 +1,159 @@
1
+ """
2
+ SPDX-License-Identifier: Apache-2.0
3
+ Copyright Contributors to the ODPi Egeria project.
4
+
5
+
6
+
7
+ This module allows users to query the available (registered) capabilities of Egeria. Detailed information is returned
8
+ to provide both insight and understanding in how to use these capabilities. For example, when configuring an Egeria
9
+ integration service, it is importregistered_info.pyant to know what companion service it depends on so that you can make sure the
10
+ companion service is also configured and running.
11
+
12
+ """
13
+
14
+ import pandas as pd
15
+ from tabulate import tabulate
16
+
17
+ from pyegeria._client import Client
18
+ from pyegeria.utils import wrap_text
19
+
20
+
21
+ class LoadedResources(Client):
22
+ """ Client to search and retrieve currently loaded information about connectors, templates, governance actions,
23
+ etc.
24
+
25
+ Attributes:
26
+ ----------
27
+ server_name: str
28
+ Name of the server to use.
29
+ platform_url : str
30
+ URL of the server platform to connect to
31
+ user_id : str
32
+ The identity of the user calling the method - this sets a default optionally used by the methods
33
+ when the user doesn't pass the user_id on a method call.
34
+ user_pwd: str
35
+ The password associated with the user_id. Defaults to None
36
+ verify_flag: bool
37
+ Flag to indicate if SSL Certificates should be verified in the HTTP requests.
38
+ Defaults to False.
39
+
40
+ Methods:
41
+ -------
42
+
43
+ """
44
+
45
+ admin_command_root: str
46
+
47
+ def __init__(
48
+ self,
49
+ server_name: str,
50
+ platform_url: str,
51
+ user_id: str,
52
+ user_pwd: str = None,
53
+ verify_flag: bool = False,
54
+ ):
55
+ if server_name is None:
56
+ server_name = "NA"
57
+ Client.__init__(self, server_name, platform_url,
58
+ user_id, user_pwd, verify_flag)
59
+
60
+ def get_all_templates(self, server: str = None, start_from: int = 0, page_size: int = 0) -> list | str:
61
+ """ Get Loaded templates for the Server.
62
+
63
+ Parameters
64
+ ----------
65
+
66
+ Returns
67
+ -------
68
+ dict | str
69
+ A dictionary containing a simplified list of key template attributes.
70
+
71
+ Raises
72
+ ------
73
+ InvalidParameterException
74
+ If the response code is not 200.
75
+ PropertyServerException:
76
+ Raised by the server when an issue arises in processing a valid request
77
+ NotAuthorizedException:
78
+ The principle specified by the user_id does not have authorization for the requested action
79
+
80
+ """
81
+ server = self.server_name if server is None else server
82
+ url = (f"{self.platform_url}/servers/{server}/open-metadata/framework-services/asset-owner/open-metadata-store/"
83
+ f"users/{self.user_id}/metadata-elements/by-search-string?startFrom=start_from&pageSize=page_size")
84
+ body = {
85
+ "class" : "SearchStringRequestBody",
86
+ "searchString" : ".*Template.*"
87
+ }
88
+ response = self.make_request("POST", url, body)
89
+ return response.json().get("elementList", "No elements")
90
+
91
+ def list_severity_definitions(self, fmt: str = 'json', skinny: bool = True, wrap_len: int = 30) -> list | str:
92
+ """ Get the registered severities for the OMAG Server
93
+
94
+ Parameters
95
+ ----------
96
+ fmt: str, optional, default = 'json'
97
+ If fmt is 'json', then return the result as a JSON string. If fmt is 'table', then
98
+ return the result as a nicely formatted table string.
99
+ skinny: bool, optional, default = True
100
+ If a table is being created and `skinny` is true, then return a subset of the information,
101
+ if false return all columns.
102
+ wrap_len: int, optional, default = 30
103
+ If a table is being created, the width of the column to wrap text to.
104
+
105
+ Returns
106
+ -------
107
+ dict | str
108
+ If fmt is 'JSON' then return a dictionary containing the registered services for the specified
109
+ platform. If fmt is 'table' then return the result as a nicely formatted printable table string.
110
+
111
+ Raises
112
+ ------
113
+ InvalidParameterException
114
+ If the response code is not 200.
115
+ PropertyServerException:
116
+ Raised by the server when an issue arises in processing a valid request
117
+ NotAuthorizedException:
118
+ The principle specified by the user_id does not have authorization for the requested action
119
+
120
+ """
121
+ url = (f"{self.platform_url}/servers/{self.server_name}/open-metadata/repository-services"
122
+ f"/users/{self.user_id}/audit-log/severity-definitions"
123
+ )
124
+ response = self.make_request("GET", url)
125
+ if fmt == 'json':
126
+ return response.json().get("severities", "No severities found")
127
+ elif fmt == 'table':
128
+ df = pd.DataFrame(response.json().get("severities", []))
129
+ if skinny:
130
+ df = df.drop(columns=['ordinal'])
131
+ return tabulate(wrap_text(df, wrap_len=wrap_len), headers='keys', tablefmt='psql')
132
+
133
+ def list_asset_types(self, server: str = None) -> list | str:
134
+ """ Get the registered severities for the OMAG Server
135
+
136
+ Parameters
137
+ ----------
138
+ server: str, optional, default = None
139
+
140
+ Returns
141
+ -------
142
+ dict | str
143
+ Returns a list of the asset types.
144
+
145
+ Raises
146
+ ------
147
+ InvalidParameterException
148
+ If the response code is not 200.
149
+ PropertyServerException:
150
+ Raised by the server when an issue arises in processing a valid request
151
+ NotAuthorizedException:
152
+ The principle specified by the user_id does not have authorization for the requested action
153
+
154
+ """
155
+ server = self.server_name if server is None else server
156
+ url = f"{self.platform_url}/servers/{self.server_name}/api/open-metadata/asset-catalog/assets/types"
157
+
158
+ response = self.make_request("GET", url)
159
+ return response.json().get('types', 'no types found')
@@ -721,7 +721,7 @@ class MyProfile(Client):
721
721
  loop.run_until_complete(self._async_reassign_to_do(todo_guid, actor_guid, status, server_name))
722
722
  return
723
723
 
724
- async def _async_find_to_do(self, search_string: str = "*", server_name: str = "None", status: str = None,
724
+ async def _async_find_to_do(self, search_string: str = "*", server_name: str = "None", status: str = "OPEN",
725
725
  starts_with: bool = False, ends_with: bool = False, ignore_case: bool = True,
726
726
  start_from: int = 0, page_size: int = 100) -> list | str:
727
727
  """ find To-Do items. Async version.
@@ -765,7 +765,8 @@ class MyProfile(Client):
765
765
  search_string = " "
766
766
 
767
767
  body = {
768
- "status": status,
768
+ "class": "ToDoStatusSearchString",
769
+ "toDoStatus": status,
769
770
  "searchString": search_string
770
771
  }
771
772
 
@@ -777,10 +778,10 @@ class MyProfile(Client):
777
778
 
778
779
  response = await self._async_make_request("POST", url, body)
779
780
  # return response.text
780
- return response.json().get("toDoElements", "No guid returned")
781
+ return response.json().get("toDoElements", "No ToDos found")
781
782
 
782
783
  def find_to_do(self, search_string: str, server_name: str = None, status: str = "OPEN",
783
- starts_with: bool = True, ends_with: bool = False, ignore_case: bool = False,
784
+ starts_with: bool = False, ends_with: bool = False, ignore_case: bool = True,
784
785
  start_from: int = 0, page_size: int = 100) -> list | str:
785
786
  """ find To-Do items.
786
787
  Parameters
@@ -865,7 +866,7 @@ class MyProfile(Client):
865
866
  f"{todo_type}?startFrom={start_from}&pageSize={page_size}")
866
867
 
867
868
  response = await self._async_make_request("POST", url, body)
868
- return response.text if response is not None else "No Results"
869
+ return response.json().get("toDoElements","No ToDos found")
869
870
 
870
871
  def get_to_dos_by_type(self, todo_type: str, server_name: str = None, status: str = "OPEN",
871
872
  start_from: int = 0, page_size: int = 100) -> list | str:
@@ -6,7 +6,7 @@ Copyright Contributors to the ODPi Egeria project.
6
6
 
7
7
  This module allows users to query the available (registered) capabilities of Egeria. Detailed information is returned
8
8
  to provide both insight and understanding in how to use these capabilities. For example, when configuring an Egeria
9
- integration service, it is important to know what companion service it depends on so that you can make sure the
9
+ integration service, it is importregistered_info.pyant to know what companion service it depends on so that you can make sure the
10
10
  companion service is also configured and running.
11
11
 
12
12
  """
@@ -12,6 +12,7 @@ A simple status display for Engine Actions
12
12
  import argparse
13
13
  import json
14
14
  import time
15
+ import sys
15
16
 
16
17
  from rich import box
17
18
  from rich.live import Live
@@ -76,7 +77,7 @@ def display_status_engine_actions(server: str = good_server_3, url: str = good_p
76
77
 
77
78
  token = g_client.create_egeria_bearer_token()
78
79
  action_status = g_client.get_engine_actions()
79
- if "No Elements" in action_status:
80
+ if type(action_status) is str:
80
81
  requested_time = " "
81
82
  start_time = " "
82
83
  completion_time = " "
@@ -86,9 +87,9 @@ def display_status_engine_actions(server: str = good_server_3, url: str = good_p
86
87
  target_element = " "
87
88
  process_name = " "
88
89
  completion_message = " "
89
- else:
90
+ elif type(action_status) is list:
90
91
  for action in action_status:
91
- requested_time = action["requestedTime"]
92
+ requested_time = action.get("requestedTime", " ")
92
93
  start_time = action.get("startTime", " ")
93
94
  completion_time = action.get("completionTime", " ")
94
95
 
@@ -115,7 +116,9 @@ def display_status_engine_actions(server: str = good_server_3, url: str = good_p
115
116
  requested_time, start_time, action_guid,engine_name, request_type,
116
117
  action_status, target_element, completion_time, process_name, completion_message
117
118
  )
118
-
119
+ else:
120
+ print("Egeria integration daemon not running")
121
+ sys.exit()
119
122
  # g_client.close_session()
120
123
  return table
121
124
 
@@ -81,9 +81,9 @@ def display_to_dos(search_string: str, guid: str=None, server: str = good_server
81
81
  table.add_column("Status")
82
82
  table.add_column("Sponsor")
83
83
 
84
- todo_items = m_client.find_to_do("*", starts_with=True)
84
+ todo_items = m_client.find_to_do(search_string)
85
85
 
86
- if todo_items is None:
86
+ if type(todo_items) is str:
87
87
  name = " "
88
88
  type_name = " "
89
89
  created = " "
@@ -107,7 +107,7 @@ def display_to_dos(search_string: str, guid: str=None, server: str = good_server
107
107
  sponsor = "erinoverview"
108
108
  if status in ("WAITING", "OPEN"):
109
109
  status = f"[yellow]{status}"
110
- elif status in ("INPROGRESS", "COMPLETE"):
110
+ elif status in ("IN_PROGRESS", "COMPLETE"):
111
111
  status = f"[green]{status}"
112
112
  else:
113
113
  status = f"[red]{status}"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyegeria
3
- Version: 0.3.7
3
+ Version: 0.3.8
4
4
  Summary: A python client for Egeria
5
5
  Home-page: https://egeria-project.org/egeria-python
6
6
  Author: Dan Wolfson
@@ -1,4 +1,4 @@
1
- pyegeria/__init__.py,sha256=bBRHgbVWPZAt7yL150rrJm9UhELyXf8VMyycg4j3bOk,1769
1
+ pyegeria/__init__.py,sha256=81gLQyRhtYqk5Sx5M7OD4nl0De4KeTAVCQonNpx8cTE,1821
2
2
  pyegeria/_client.py,sha256=8-8r1-_fACDEGgmfJdkeODlPmftcdiKwb-bmrSA3ac4,23606
3
3
  pyegeria/_exceptions.py,sha256=LImJPHy7MVgoH17LfqEL4ytLKcOhV7oCe66wZiDBzec,18399
4
4
  pyegeria/_globals.py,sha256=WgJ6O7_ACiAG8CUUHT_AbGgahLhO0APU8Y4rCwv9DRw,558
@@ -10,32 +10,33 @@ pyegeria/full_omag_server_config.py,sha256=sVBeG40Hp6ZG7dsz2BZqzO3bluPeu-j0fGTui
10
10
  pyegeria/glossary_omvs.py,sha256=KcKRMNgm53suqbFLqsnThln5-zzAEJ8OseexiJ8BSsk,36500
11
11
  pyegeria/gov_engine.py,sha256=3SBSZlbUTVG4x8OhlEIqipe8mB8_KEYOacHmxk7loSM,19697
12
12
  pyegeria/governance_author.py,sha256=m0wsfmyO-VxRDaPpACeIDw8eVAFu3RVbo45RPCUel9M,6340
13
- pyegeria/my_profile_omvs.py,sha256=gLIHiG0cO5fJKLK7EtVHtoC43WrABqDIJvdh91s_KDY,42441
13
+ pyegeria/loaded_resources_omvs.py,sha256=ACRftAkI4Uy9HL8rMnuPO4ZWT7vVhLymKQOqbon2tcA,6226
14
+ pyegeria/my_profile_omvs.py,sha256=0yOpGYstIDvGgFuoNFBg19ec-vRtR_84d9lFPAyN6ss,42489
14
15
  pyegeria/platform_services.py,sha256=_povbV9ezjKv9TE-QE0iceuyI8aHqzJS_am1jjLlvHs,41955
15
16
  pyegeria/project_manager_omvs.py,sha256=j-rlfoKZArghS1NPQT_sawn8Z-qvaV4MW7mwoRNeDoA,77305
16
- pyegeria/registered_info.py,sha256=H7mgH83JKtMeDZ1vVOWoFM9iARD38Rnb6igvfEM46AA,8775
17
+ pyegeria/registered_info.py,sha256=j4kNzgKVWVuDBNFr3j2bA7tGSg2GBYGMDcDQm3jvFDU,8793
17
18
  pyegeria/server_operations.py,sha256=iMBfIgPGqFM1TkABqFFJDt8tVUSY2qwSrRURrmWuma0,16323
18
19
  pyegeria/utils.py,sha256=H0mew9IRcbsEi-pZfaT9HGuPO9CMOwnhOgIltyNvqTY,5240
19
20
  pyegeria/valid_metadata_omvs.py,sha256=Li_XLLIXJTN9gUqB_H1WbVpnDMSgc7ne6yuzKoBW7sU,29710
20
- pyegeria-0.3.7.data/scripts/collection_viewer.py,sha256=KWyOt4XeJ5ZaPrzNeMIH-qA3BeV9G7P64kAPceMsRmk,3628
21
- pyegeria-0.3.7.data/scripts/engine_action_status.py,sha256=vtZhXTGsZS3_xui7QLSX7aj2IWHT5TJ5Fje7CSOA6Co,5220
22
- pyegeria-0.3.7.data/scripts/find_todos.py,sha256=A75s7cwtXVukMCbVYFlbJoDYFg1A8fHU3dCTK2s6JtM,5171
23
- pyegeria-0.3.7.data/scripts/get_relationship_types.py,sha256=STySVwdbSo_nMcpYlBRqmF0DNxKwrb3621GU688jhXM,4933
24
- pyegeria-0.3.7.data/scripts/get_tech_details.py,sha256=Tg4UCazeEh7He9-l7yQbCuJso7ZcpaLhdmMUT866RzU,6843
25
- pyegeria-0.3.7.data/scripts/get_tech_types.py,sha256=xZoCrnmBXa-_WXDW3tBG6dt6IxH-aeQfg07pXM2IrsA,3924
26
- pyegeria-0.3.7.data/scripts/glossary_view.py,sha256=tZvdX9Sc7Q2rL9oiEjRIFFt-saqwMs8PQ3BCgp-v710,4594
27
- pyegeria-0.3.7.data/scripts/gov_engine_status.py,sha256=ZTVbhrvGsfzmN4j9Xz95rEMTjqTNvKi9Ojvy43Z5sI8,4000
28
- pyegeria-0.3.7.data/scripts/integration_daemon_status.py,sha256=9XRQKdjmYqwfxwNoo4EUhX8vrplR0etS-5Yq89lXGMw,4575
29
- pyegeria-0.3.7.data/scripts/list_asset_types.py,sha256=09xmGyEoScq4OeSflElhI-ThJL2RUPV6mb9zRA7UzEA,3485
30
- pyegeria-0.3.7.data/scripts/multi-server_status.py,sha256=XlBaIERVqYXjHO2x18WY64Oo0fUZS1onpOLAJcIlJk0,3690
31
- pyegeria-0.3.7.data/scripts/my_todos.py,sha256=wzGKekUAT-DfzE-R8O1_byvh0trB_FMd0YvdNkTw10Q,5660
32
- pyegeria-0.3.7.data/scripts/open_todos.py,sha256=f02BXZ-LgqjUOe5QiK1SKA9RDSH9m6-u_x0HTCQAD8E,4649
33
- pyegeria-0.3.7.data/scripts/project_list_viewer.py,sha256=yTZR0KS-PTCxDjbjkIRniWk7DR1qvUzuTGQ3eN37-7o,5434
34
- pyegeria-0.3.7.data/scripts/server_status.py,sha256=BgBLjYeMDN41zk9ADyPWZFBaQX0TqiCZ9pjesnByUhM,3346
35
- pyegeria-0.3.7.data/scripts/server_status_widget.py,sha256=tyx1I7olr6e5kJF22ou9rqsztrRDdrPCq5uVa3hhPBU,3088
36
- pyegeria-0.3.7.data/scripts/view_my_profile.py,sha256=KFeGAkR-DHX01jcOPOP7HMCTrAyY3i4mQKhq1dG86vE,4605
37
- pyegeria-0.3.7.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
38
- pyegeria-0.3.7.dist-info/METADATA,sha256=rf_0Bd7zF0K5gOXRsgMxN8OmFSuY4OALk66qVbok1pM,2398
39
- pyegeria-0.3.7.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
40
- pyegeria-0.3.7.dist-info/top_level.txt,sha256=tHowU8jow7WJGmbr4QdIk7gJWdslRgbWBiF2lMeduLQ,9
41
- pyegeria-0.3.7.dist-info/RECORD,,
21
+ pyegeria-0.3.8.data/scripts/collection_viewer.py,sha256=KWyOt4XeJ5ZaPrzNeMIH-qA3BeV9G7P64kAPceMsRmk,3628
22
+ pyegeria-0.3.8.data/scripts/engine_action_status.py,sha256=mosVQ5vI_vcGpi0gZDVZP8cQqgKVVf4jrJSHdsS5A9s,5359
23
+ pyegeria-0.3.8.data/scripts/find_todos.py,sha256=VU6pJBJpn5O7ML2gclh1BqmppVLllVJ6lbQw-NpZsb4,5169
24
+ pyegeria-0.3.8.data/scripts/get_relationship_types.py,sha256=STySVwdbSo_nMcpYlBRqmF0DNxKwrb3621GU688jhXM,4933
25
+ pyegeria-0.3.8.data/scripts/get_tech_details.py,sha256=Tg4UCazeEh7He9-l7yQbCuJso7ZcpaLhdmMUT866RzU,6843
26
+ pyegeria-0.3.8.data/scripts/get_tech_types.py,sha256=xZoCrnmBXa-_WXDW3tBG6dt6IxH-aeQfg07pXM2IrsA,3924
27
+ pyegeria-0.3.8.data/scripts/glossary_view.py,sha256=tZvdX9Sc7Q2rL9oiEjRIFFt-saqwMs8PQ3BCgp-v710,4594
28
+ pyegeria-0.3.8.data/scripts/gov_engine_status.py,sha256=ZTVbhrvGsfzmN4j9Xz95rEMTjqTNvKi9Ojvy43Z5sI8,4000
29
+ pyegeria-0.3.8.data/scripts/integration_daemon_status.py,sha256=9XRQKdjmYqwfxwNoo4EUhX8vrplR0etS-5Yq89lXGMw,4575
30
+ pyegeria-0.3.8.data/scripts/list_asset_types.py,sha256=09xmGyEoScq4OeSflElhI-ThJL2RUPV6mb9zRA7UzEA,3485
31
+ pyegeria-0.3.8.data/scripts/multi-server_status.py,sha256=XlBaIERVqYXjHO2x18WY64Oo0fUZS1onpOLAJcIlJk0,3690
32
+ pyegeria-0.3.8.data/scripts/my_todos.py,sha256=wzGKekUAT-DfzE-R8O1_byvh0trB_FMd0YvdNkTw10Q,5660
33
+ pyegeria-0.3.8.data/scripts/open_todos.py,sha256=f02BXZ-LgqjUOe5QiK1SKA9RDSH9m6-u_x0HTCQAD8E,4649
34
+ pyegeria-0.3.8.data/scripts/project_list_viewer.py,sha256=yTZR0KS-PTCxDjbjkIRniWk7DR1qvUzuTGQ3eN37-7o,5434
35
+ pyegeria-0.3.8.data/scripts/server_status.py,sha256=BgBLjYeMDN41zk9ADyPWZFBaQX0TqiCZ9pjesnByUhM,3346
36
+ pyegeria-0.3.8.data/scripts/server_status_widget.py,sha256=tyx1I7olr6e5kJF22ou9rqsztrRDdrPCq5uVa3hhPBU,3088
37
+ pyegeria-0.3.8.data/scripts/view_my_profile.py,sha256=KFeGAkR-DHX01jcOPOP7HMCTrAyY3i4mQKhq1dG86vE,4605
38
+ pyegeria-0.3.8.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
39
+ pyegeria-0.3.8.dist-info/METADATA,sha256=IpiRLomvSvYR48yEKcqJN9Yi1lIsQvfIhwVLsjCrHWQ,2398
40
+ pyegeria-0.3.8.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
41
+ pyegeria-0.3.8.dist-info/top_level.txt,sha256=tHowU8jow7WJGmbr4QdIk7gJWdslRgbWBiF2lMeduLQ,9
42
+ pyegeria-0.3.8.dist-info/RECORD,,