pyegeria 5.3.6.6__py3-none-any.whl → 5.3.7__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.
- pyegeria/__init__.py +2 -2
- pyegeria/commands/cat/dr_egeria_jupyter.py +6 -5
- pyegeria/commands/cat/dr_egeria_md.py +117 -93
- pyegeria/commands/cat/list_terms.py +10 -12
- pyegeria/commands/cli/egeria_cat.py +1 -11
- pyegeria/egeria_client.py +14 -9
- pyegeria/glossary_browser_omvs.py +10 -5
- pyegeria/md_processing_utils.py +49 -29
- {pyegeria-5.3.6.6.dist-info → pyegeria-5.3.7.dist-info}/METADATA +1 -1
- {pyegeria-5.3.6.6.dist-info → pyegeria-5.3.7.dist-info}/RECORD +13 -13
- {pyegeria-5.3.6.6.dist-info → pyegeria-5.3.7.dist-info}/entry_points.txt +1 -1
- {pyegeria-5.3.6.6.dist-info → pyegeria-5.3.7.dist-info}/LICENSE +0 -0
- {pyegeria-5.3.6.6.dist-info → pyegeria-5.3.7.dist-info}/WHEEL +0 -0
pyegeria/__init__.py
CHANGED
@@ -61,7 +61,7 @@ from .collection_manager_omvs import CollectionManager
|
|
61
61
|
from .core_omag_server_config import CoreServerConfig
|
62
62
|
from .create_tech_guid_lists import build_global_guid_lists
|
63
63
|
from .egeria_cat_client import EgeriaCat
|
64
|
-
from .egeria_client import Egeria
|
64
|
+
# from .egeria_client import Egeria
|
65
65
|
from .egeria_config_client import EgeriaConfig
|
66
66
|
from .egeria_my_client import EgeriaMy
|
67
67
|
from .egeria_tech_client import EgeriaTech
|
@@ -92,7 +92,7 @@ from .valid_metadata_omvs import ValidMetadataManager
|
|
92
92
|
from .x_action_author_omvs import ActionAuthor
|
93
93
|
from .md_processing_utils import (extract_command, process_glossary_upsert_command, process_term_upsert_command,
|
94
94
|
process_categories_upsert_command,
|
95
|
-
get_current_datetime_string, process_per_proj_upsert_command,
|
95
|
+
get_current_datetime_string, process_per_proj_upsert_command, command_list,
|
96
96
|
render_markdown, process_provenance_command)
|
97
97
|
|
98
98
|
#
|
@@ -6,12 +6,13 @@ import nbformat
|
|
6
6
|
import os
|
7
7
|
from rich import print
|
8
8
|
from rich.console import Console
|
9
|
+
|
10
|
+
from pyegeria.egeria_tech_client import EgeriaTech
|
9
11
|
from pyegeria.md_processing_utils import (extract_command, process_glossary_upsert_command, process_term_upsert_command,
|
10
|
-
get_current_datetime_string, process_per_proj_upsert_command,
|
12
|
+
get_current_datetime_string, process_per_proj_upsert_command, command_list,
|
13
|
+
)
|
11
14
|
import click
|
12
|
-
|
13
|
-
get_current_datetime_string, process_per_proj_upsert_command, commands,EgeriaTech
|
14
|
-
)
|
15
|
+
|
15
16
|
from pyegeria._exceptions import (
|
16
17
|
print_exception_response,
|
17
18
|
)
|
@@ -76,7 +77,7 @@ def process_jupyter_notebook(
|
|
76
77
|
if cell.cell_type == 'markdown':
|
77
78
|
if cell.source.strip().startswith('#'):
|
78
79
|
potential_command = extract_command(cell.source)
|
79
|
-
if potential_command in
|
80
|
+
if potential_command in command_list:
|
80
81
|
if potential_command in ["Create Glossary", "Update Glossary"]:
|
81
82
|
result = process_glossary_upsert_command(client, element_dictionary,
|
82
83
|
cell.source, directive)
|
@@ -6,17 +6,13 @@ import json
|
|
6
6
|
import os
|
7
7
|
from rich import print
|
8
8
|
from rich.console import Console
|
9
|
-
from rich.markdown import Markdown
|
10
9
|
from rich.prompt import Prompt
|
11
10
|
|
12
|
-
from pyegeria import (extract_command, process_glossary_upsert_command, process_term_upsert_command,
|
13
|
-
get_current_datetime_string, process_per_proj_upsert_command, commands,
|
14
|
-
process_provenance_command)
|
15
11
|
|
16
12
|
import click
|
17
13
|
from pyegeria import (extract_command, process_glossary_upsert_command, process_term_upsert_command,
|
18
|
-
process_categories_upsert_command,
|
19
|
-
get_current_datetime_string, process_per_proj_upsert_command,
|
14
|
+
process_categories_upsert_command, process_provenance_command,
|
15
|
+
get_current_datetime_string, process_per_proj_upsert_command, command_list,EgeriaTech,
|
20
16
|
)
|
21
17
|
from datetime import datetime
|
22
18
|
|
@@ -47,16 +43,17 @@ EGERIA_OUTBOX_PATH = os.environ.get("EGERIA_OUTBOX_PATH", "pyegeria/commands/cat
|
|
47
43
|
|
48
44
|
|
49
45
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
46
|
+
@click.command("process_markdown_file", help="Process a markdown file and return the output as a string.")
|
47
|
+
@click.option("--file-path", help="File path to markdown file",
|
48
|
+
default="glossary_exp.md", required=True, prompt=False)
|
49
|
+
@click.option("--directive", default="display", help="How to process the file",
|
50
|
+
type=click.Choice(["display","validate","process"],case_sensitive=False), prompt=False,)
|
51
|
+
@click.option("--server", default=EGERIA_VIEW_SERVER, help="Egeria view server to use.")
|
52
|
+
@click.option(
|
53
|
+
"--url", default=EGERIA_VIEW_SERVER_URL, help="URL of Egeria platform to connect to"
|
54
|
+
)
|
55
|
+
@click.option("--userid", default=EGERIA_USER, help="Egeria user")
|
56
|
+
@click.option("--user_pass", default=EGERIA_USER_PASSWORD, help="Egeria user password")
|
60
57
|
def process_markdown_file(
|
61
58
|
file_path: str,
|
62
59
|
directive: str,
|
@@ -68,6 +65,7 @@ def process_markdown_file(
|
|
68
65
|
"""
|
69
66
|
Process a markdown file by parsing and executing Dr. Egeria commands. Write output to a new file.
|
70
67
|
"""
|
68
|
+
|
71
69
|
console = Console(width=int(EGERIA_WIDTH))
|
72
70
|
client = EgeriaTech(server, url, user_id=userid)
|
73
71
|
token = client.create_egeria_bearer_token(userid, user_pass)
|
@@ -82,67 +80,96 @@ def process_markdown_file(
|
|
82
80
|
print(f"Error: File not found at path: {full_file_path}")
|
83
81
|
return {} # Return empty dict if file not found
|
84
82
|
|
85
|
-
final_output =
|
83
|
+
final_output = []
|
86
84
|
prov_found = False
|
87
|
-
prov_output = (f"\n* Results from processing file {file_path} on "
|
85
|
+
prov_output = (f"\n# Provenance\n\n* Results from processing file {file_path} on "
|
88
86
|
f"{datetime.now().strftime("%Y-%m-%d %H:%M")}\n")
|
89
87
|
h1_blocks = []
|
90
88
|
current_block = ""
|
91
89
|
in_h1_block = False
|
92
90
|
element_dictionary = {}
|
93
91
|
|
94
|
-
#
|
92
|
+
# Helper function to process the current block
|
93
|
+
def process_current_block(current_block):
|
94
|
+
nonlocal updated, final_output, prov_found, prov_output, h1_blocks, in_h1_block, element_dictionary
|
95
|
+
|
96
|
+
if not current_block:
|
97
|
+
return # No block to process
|
98
|
+
|
99
|
+
potential_command = extract_command(current_block) # Extract command
|
100
|
+
if potential_command in command_list:
|
101
|
+
# Process the block based on the command
|
102
|
+
if potential_command == "Provenance":
|
103
|
+
result = process_provenance_command(file_path, current_block)
|
104
|
+
prov_found = True
|
105
|
+
|
106
|
+
elif potential_command in ["Create Glossary", "Update Glossary"]:
|
107
|
+
result = process_glossary_upsert_command(client, element_dictionary, current_block, directive)
|
108
|
+
elif potential_command in ["Create Category", "Update Category"]:
|
109
|
+
result = process_categories_upsert_command(client, element_dictionary, current_block, directive)
|
110
|
+
elif potential_command in ["Create Term", "Update Term"]:
|
111
|
+
result = process_term_upsert_command(client, element_dictionary, current_block, directive)
|
112
|
+
elif potential_command in ["Create Personal Project", "Update Personal Project"]:
|
113
|
+
result = process_per_proj_upsert_command(client, element_dictionary, current_block, directive)
|
114
|
+
else:
|
115
|
+
# If command is not recognized, keep the block as-is
|
116
|
+
result = None
|
117
|
+
|
118
|
+
if result:
|
119
|
+
if directive == "process":
|
120
|
+
updated = True
|
121
|
+
final_output.append(result)
|
122
|
+
# print(json.dumps(element_dictionary, indent=4))
|
123
|
+
# elif directive == "validate":
|
124
|
+
# print(json.dumps(element_dictionary, indent=4))
|
125
|
+
elif directive == "process":
|
126
|
+
# Handle errors (skip this block but notify the user)
|
127
|
+
print(f"\n==>\tErrors found while processing command: \'{potential_command}\'\n"
|
128
|
+
f"\tPlease correct and try again. \n")
|
129
|
+
final_output.append(current_block)
|
130
|
+
else:
|
131
|
+
# If there is no command, append the block as-is
|
132
|
+
final_output.append(current_block)
|
133
|
+
|
134
|
+
# Main parsing loop
|
95
135
|
for line in lines:
|
96
136
|
line = line.strip() # Remove leading/trailing whitespace
|
97
137
|
|
98
|
-
|
99
|
-
|
138
|
+
# Handle a new H1 block (starting with `# `)
|
139
|
+
if line.startswith("# "):
|
140
|
+
if in_h1_block:
|
141
|
+
# Process the current block before starting a new one
|
142
|
+
process_current_block(current_block)
|
143
|
+
|
144
|
+
# Start a new H1 block
|
145
|
+
current_block = line
|
100
146
|
in_h1_block = True
|
101
|
-
elif line.startswith("---") and in_h1_block: # End of the current H1 block
|
102
|
-
# Process the completed H1 block
|
103
|
-
current_block += f"\n{line}" # Add the closing line
|
104
|
-
potential_command = extract_command(current_block) # Extract command
|
105
|
-
|
106
|
-
if potential_command in commands:
|
107
|
-
# Process the block based on the command
|
108
|
-
if potential_command == "Provenance":
|
109
|
-
prov_found = True
|
110
|
-
result = process_provenance_command(file_path, current_block)
|
111
|
-
elif potential_command in ["Create Glossary", "Update Glossary"]:
|
112
|
-
result = process_glossary_upsert_command(client, element_dictionary, current_block, directive)
|
113
|
-
elif potential_command in ["Create Category", "Update Category"]:
|
114
|
-
result = process_categories_upsert_command(client, element_dictionary, current_block, directive)
|
115
|
-
elif potential_command in ["Create Term", "Update Term"]:
|
116
|
-
result = process_term_upsert_command(client, element_dictionary, current_block, directive)
|
117
|
-
elif potential_command in ["Create Personal Project", "Update Personal Project"]:
|
118
|
-
result = process_per_proj_upsert_command(client, element_dictionary, current_block, directive)
|
119
|
-
else:
|
120
|
-
# If command is not recognized, keep the block as-is
|
121
|
-
result = None
|
122
|
-
|
123
|
-
if result:
|
124
|
-
if directive == "process":
|
125
|
-
updated = True
|
126
|
-
final_output += f"\n---\n{result}\n"
|
127
|
-
print(json.dumps(element_dictionary, indent=4))
|
128
|
-
elif directive == "process":
|
129
|
-
# Handle errors (skip this block but notify the user)
|
130
|
-
print(f"\n==>\tErrors found while processing command: \'{potential_command}\'\n"
|
131
|
-
f"\tPlease correct and try again. \n")
|
132
|
-
final_output += f"\n---\n{current_block}\n"
|
133
|
-
else:
|
134
|
-
# If there is no command, append the block as-is
|
135
|
-
final_output += f"\n---\n{current_block}\n"
|
136
147
|
|
137
|
-
|
138
|
-
|
139
|
-
|
148
|
+
# Handle the end of a block (line starts with `---`)
|
149
|
+
elif line.startswith("---"):
|
150
|
+
if in_h1_block:
|
151
|
+
# Process the current block when it ends with `---`
|
152
|
+
current_block += f"\n{line}"
|
153
|
+
process_current_block(current_block)
|
154
|
+
current_block = "" # Clear the block
|
155
|
+
in_h1_block = False
|
156
|
+
|
157
|
+
# Add lines to the current H1 block
|
158
|
+
elif in_h1_block:
|
140
159
|
current_block += f"\n{line}"
|
160
|
+
|
161
|
+
# Append non-H1 content directly to the output
|
141
162
|
else:
|
142
|
-
|
143
|
-
|
163
|
+
final_output.append(line)
|
164
|
+
|
165
|
+
# Ensure the final H1 block is processed if the file doesn't end with `---`
|
166
|
+
if in_h1_block:
|
167
|
+
process_current_block(current_block)
|
168
|
+
|
169
|
+
# Join the final output list into a single string
|
170
|
+
final_output = "\n".join(final_output)
|
171
|
+
|
144
172
|
|
145
|
-
# Write the final_output to a new file if updated
|
146
173
|
try:
|
147
174
|
if updated:
|
148
175
|
path, filename = os.path.split(file_path) # Get both parts
|
@@ -152,11 +179,8 @@ def process_markdown_file(
|
|
152
179
|
|
153
180
|
with open(new_file_path, 'w') as f2:
|
154
181
|
f2.write(final_output)
|
155
|
-
|
156
|
-
|
157
|
-
# prov_output += f"\n# Provenance:\n{prov_output}\n"
|
158
|
-
|
159
|
-
f2.write(prov_output)
|
182
|
+
if not prov_found:
|
183
|
+
f2.write(prov_output)
|
160
184
|
click.echo(f"\n==> Notebook written to {new_file_path}")
|
161
185
|
else:
|
162
186
|
click.echo("\nNo updates detected. New File not created.")
|
@@ -165,29 +189,29 @@ def process_markdown_file(
|
|
165
189
|
console.print_exception(show_locals=True)
|
166
190
|
|
167
191
|
|
168
|
-
def main():
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
if __name__ == "__main__":
|
193
|
-
|
192
|
+
# def main():
|
193
|
+
# parser = argparse.ArgumentParser()
|
194
|
+
# parser.add_argument("--server", help="Name of the server to display status for")
|
195
|
+
# parser.add_argument("--url", help="URL Platform to connect to")
|
196
|
+
# parser.add_argument("--userid", help="User Id")
|
197
|
+
# parser.add_argument("--password", help="User Password")
|
198
|
+
# parser.add_argument("--time_out", help="Time Out")
|
199
|
+
#
|
200
|
+
# args = parser.parse_args()
|
201
|
+
#
|
202
|
+
# server = args.server if args.server is not None else EGERIA_VIEW_SERVER
|
203
|
+
# url = args.url if args.url is not None else EGERIA_PLATFORM_URL
|
204
|
+
# userid = args.userid if args.userid is not None else EGERIA_USER
|
205
|
+
# user_pass = args.password if args.password is not None else EGERIA_USER_PASSWORD
|
206
|
+
# time_out = args.time_out if args.time_out is not None else 60
|
207
|
+
# try:
|
208
|
+
# file_path = Prompt.ask("Markdown File name to process:", default="")
|
209
|
+
# directive = Prompt.ask("Processing Directive:", choices=[ "display", "validate", "process"], default="validate")
|
210
|
+
#
|
211
|
+
# process_markdown_file(file_path, directive, server, url, userid, user_pass)
|
212
|
+
# except KeyboardInterrupt:
|
213
|
+
# pass
|
214
|
+
#
|
215
|
+
#
|
216
|
+
# if __name__ == "__main__":
|
217
|
+
# main()
|
@@ -41,7 +41,7 @@ EGERIA_ADMIN_PASSWORD = os.environ.get("ADMIN_PASSWORD", "secret")
|
|
41
41
|
EGERIA_USER = os.environ.get("EGERIA_USER", "erinoverview")
|
42
42
|
EGERIA_USER_PASSWORD = os.environ.get("EGERIA_USER_PASSWORD", "secret")
|
43
43
|
EGERIA_JUPYTER = bool(os.environ.get("EGERIA_JUPYTER", "False"))
|
44
|
-
EGERIA_WIDTH = int(os.environ.get("EGERIA_WIDTH", "
|
44
|
+
EGERIA_WIDTH = int(os.environ.get("EGERIA_WIDTH", "250"))
|
45
45
|
EGERIA_GLOSSARY_PATH = os.environ.get("EGERIA_GLOSSARY_PATH", None)
|
46
46
|
EGERIA_ROOT_PATH = os.environ.get("EGERIA_ROOT_PATH", "/Users/dwolfson/localGit/egeria-v5-3/egeria-python")
|
47
47
|
EGERIA_INBOX_PATH = os.environ.get("EGERIA_INBOX_PATH", "pyegeria/commands/cat/dr_egeria_inbox")
|
@@ -148,16 +148,14 @@ def display_glossary_terms(
|
|
148
148
|
caption=f"View Server '{view_server}' @ Platform - {view_url}",
|
149
149
|
expand=True,
|
150
150
|
)
|
151
|
-
table.add_column("Term Name")
|
151
|
+
table.add_column("Term Name / Abbreviation / Version")
|
152
152
|
table.add_column("Qualified Name / GUID", width=38, no_wrap=True)
|
153
|
-
table.add_column("Abbreviation")
|
154
153
|
table.add_column("Summary")
|
155
154
|
table.add_column("Description")
|
156
|
-
table.add_column("Version Id")
|
157
155
|
table.add_column("Glossary")
|
158
156
|
table.add_column("Status")
|
159
|
-
table.add_column("Example")
|
160
157
|
table.add_column("Categories")
|
158
|
+
table.add_column("Example/Usage", min_width=50)
|
161
159
|
|
162
160
|
terms = g_client.find_glossary_terms(
|
163
161
|
search_string,
|
@@ -183,7 +181,7 @@ def display_glossary_terms(
|
|
183
181
|
if props == "None":
|
184
182
|
return table
|
185
183
|
|
186
|
-
display_name =
|
184
|
+
display_name = props.get("displayName","---")
|
187
185
|
qualified_name = props["qualifiedName"]
|
188
186
|
term_guid = term["elementHeader"]["guid"]
|
189
187
|
q_name = Text(
|
@@ -197,7 +195,9 @@ def display_glossary_terms(
|
|
197
195
|
style=style,
|
198
196
|
justify="center",
|
199
197
|
)
|
200
|
-
example =
|
198
|
+
example = props.get("example", " ")
|
199
|
+
usage = props.get("usage", " ")
|
200
|
+
ex_us_out = Markdown(f"Example:\n{example}\n---\nUsage: \n{usage}")
|
201
201
|
|
202
202
|
classifications = term["elementHeader"]["classifications"]
|
203
203
|
glossary_guid = None
|
@@ -221,20 +221,18 @@ def display_glossary_terms(
|
|
221
221
|
for category in category_list:
|
222
222
|
category_name = category["glossaryCategoryProperties"].get("displayName",'---')
|
223
223
|
category_list_md += f"* {category_name}\n"
|
224
|
-
|
224
|
+
term_abb_ver_out = Markdown(f"{display_name}\n---\n{abbrev}\n---\n{version}")
|
225
225
|
category_list_out = Markdown(category_list_md)
|
226
226
|
term_status = term["elementHeader"].get("status","---")
|
227
227
|
table.add_row(
|
228
|
-
|
228
|
+
term_abb_ver_out,
|
229
229
|
q_name,
|
230
|
-
abbrev,
|
231
230
|
summary,
|
232
231
|
description,
|
233
|
-
version,
|
234
232
|
glossary_name,
|
235
233
|
term_status,
|
236
|
-
example,
|
237
234
|
category_list_out,
|
235
|
+
ex_us_out,
|
238
236
|
style="bold white on black",
|
239
237
|
)
|
240
238
|
|
@@ -674,17 +674,7 @@ def tell_dr_egeria(ctx):
|
|
674
674
|
"""Execute Dr.Egeria actions"""
|
675
675
|
pass
|
676
676
|
|
677
|
-
|
678
|
-
@click.option("--file-path", help="File path to markdown file",
|
679
|
-
default="glossary_exp.md")
|
680
|
-
@click.option("--directive", type=click.Choice(['Display','Validate','Process'], case_sensitive=False),
|
681
|
-
default="validate", help="How to process the file")
|
682
|
-
@click.pass_context
|
683
|
-
def process_markdown_file(ctx, file_path, directive):
|
684
|
-
"""Process a markdown file"""
|
685
|
-
c = ctx.obj
|
686
|
-
process_markdown_file(file_path, directive, c.view_server, c.view_server_url, c.userid, c.password)
|
687
|
-
|
677
|
+
tell_dr_egeria.add_command(process_markdown_file)
|
688
678
|
|
689
679
|
@tell.group("glossary")
|
690
680
|
@click.pass_context
|
pyegeria/egeria_client.py
CHANGED
@@ -11,7 +11,7 @@ for all use cases..using the more role based clients is often appropriate:
|
|
11
11
|
* EgeriaTech - for technical users such as data scientists and engineers
|
12
12
|
|
13
13
|
"""
|
14
|
-
from pyegeria.x_action_author_omvs import ActionAuthor
|
14
|
+
# from pyegeria.x_action_author_omvs import ActionAuthor
|
15
15
|
from pyegeria.asset_catalog_omvs import AssetCatalog
|
16
16
|
from pyegeria.collection_manager_omvs import CollectionManager
|
17
17
|
from pyegeria.glossary_manager_omvs import GlossaryManager
|
@@ -22,19 +22,21 @@ from pyegeria.template_manager_omvs import TemplateManager
|
|
22
22
|
from pyegeria.runtime_manager_omvs import RuntimeManager
|
23
23
|
from pyegeria.full_omag_server_config import FullServerConfig
|
24
24
|
from pyegeria.metadata_explorer_omvs import MetadataExplorer
|
25
|
-
from pyegeria.
|
25
|
+
from pyegeria.my_profile_omvs import MyProfile
|
26
|
+
from pyegeria.feedback_manager_omvs import FeedbackManager
|
26
27
|
from pyegeria.solution_architect_omvs import SolutionArchitect
|
27
28
|
from pyegeria.server_operations import ServerOps
|
28
29
|
from pyegeria.registered_info import RegisteredInfo
|
29
30
|
from pyegeria.valid_metadata_omvs import ValidMetadataManager
|
30
31
|
from pyegeria.egeria_config_client import EgeriaConfig
|
31
|
-
from pyegeria.md_processing_utils import render_markdown
|
32
|
+
# from pyegeria.md_processing_utils import render_markdown
|
32
33
|
|
33
34
|
|
34
35
|
class Egeria(
|
35
36
|
AssetCatalog,
|
36
37
|
CollectionManager,
|
37
|
-
|
38
|
+
MyProfile,
|
39
|
+
FeedbackManager,
|
38
40
|
GlossaryManager,
|
39
41
|
# GovernanceAuthor,
|
40
42
|
# PeopleOrganizer,
|
@@ -42,15 +44,14 @@ class Egeria(
|
|
42
44
|
RuntimeManager,
|
43
45
|
ServerOps,
|
44
46
|
FullServerConfig,
|
45
|
-
ActionAuthor,
|
47
|
+
# ActionAuthor,
|
46
48
|
AutomatedCuration,
|
47
49
|
ClassificationManager,
|
48
50
|
RegisteredInfo,
|
49
|
-
|
51
|
+
TemplateManager,
|
50
52
|
ValidMetadataManager,
|
51
53
|
MetadataExplorer,
|
52
54
|
SolutionArchitect,
|
53
|
-
EgeriaMy,
|
54
55
|
EgeriaConfig,
|
55
56
|
):
|
56
57
|
"""
|
@@ -87,7 +88,10 @@ class Egeria(
|
|
87
88
|
self, view_server, platform_url, user_id, user_pwd, token
|
88
89
|
)
|
89
90
|
|
90
|
-
|
91
|
+
MyProfile.__init__(self, view_server, platform_url, user_id, user_pwd, token)
|
92
|
+
FeedbackManager.__init__(
|
93
|
+
self, view_server, platform_url, user_id, user_pwd, token
|
94
|
+
)
|
91
95
|
|
92
96
|
GlossaryManager.__init__(
|
93
97
|
self, view_server, platform_url, user_id, user_pwd, token
|
@@ -104,7 +108,7 @@ class Egeria(
|
|
104
108
|
|
105
109
|
EgeriaConfig.__init__(self, view_server, platform_url, user_id, user_pwd)
|
106
110
|
|
107
|
-
ActionAuthor.__init__(self, view_server, platform_url, user_id, user_pwd, token)
|
111
|
+
# ActionAuthor.__init__(self, view_server, platform_url, user_id, user_pwd, token)
|
108
112
|
AutomatedCuration.__init__(
|
109
113
|
self, view_server, platform_url, user_id, user_pwd, token
|
110
114
|
)
|
@@ -120,3 +124,4 @@ class Egeria(
|
|
120
124
|
SolutionArchitect.__init__(
|
121
125
|
self, view_server, platform_url, user_id, user_pwd, token
|
122
126
|
)
|
127
|
+
print(Egeria.mro())
|
@@ -93,8 +93,8 @@ class GlossaryBrowser(Client):
|
|
93
93
|
|
94
94
|
def make_md_attribute(self, attribute_name: str, attribute_value: str, output_type: str) -> str | None:
|
95
95
|
output = ""
|
96
|
-
attribute_value = attribute_value.strip() if attribute_value else
|
97
|
-
attribute_title = attribute_name.title() if attribute_name else
|
96
|
+
attribute_value = attribute_value.strip() if attribute_value else ""
|
97
|
+
attribute_title = attribute_name.title() if attribute_name else ""
|
98
98
|
if output_type in ["FORM", "MD"]:
|
99
99
|
output = f"## {attribute_title}\n{attribute_value}\n\n"
|
100
100
|
elif output_type == "REPORT":
|
@@ -149,7 +149,7 @@ class GlossaryBrowser(Client):
|
|
149
149
|
description = element_properties.get("description", None)
|
150
150
|
examples = element_properties.get("examples", None)
|
151
151
|
usage = element_properties.get("usage", None)
|
152
|
-
pub_version = element_properties.get("
|
152
|
+
pub_version = element_properties.get("publishVersionIdentifier", None)
|
153
153
|
qualified_name = element_properties.get("qualifiedName", None)
|
154
154
|
status = element['elementHeader'].get('status', None)
|
155
155
|
|
@@ -161,9 +161,14 @@ class GlossaryBrowser(Client):
|
|
161
161
|
if type(category_list) is str and category_list == NO_CATEGORIES_FOUND:
|
162
162
|
category_list_md = ['---']
|
163
163
|
elif isinstance(category_list, list) and len(category_list) > 0:
|
164
|
+
first_cat = True
|
164
165
|
for category in category_list:
|
165
166
|
category_name = category["glossaryCategoryProperties"].get("qualifiedName", '---')
|
166
|
-
|
167
|
+
if first_cat:
|
168
|
+
category_list_md += f" {category_name}\n"
|
169
|
+
first_cat = False
|
170
|
+
else:
|
171
|
+
category_list_md += f", {category_name}\n"
|
167
172
|
|
168
173
|
if output_format in ['FORM', 'MD']:
|
169
174
|
elements_md += f"# {elements_action}\n\n"
|
@@ -180,7 +185,7 @@ class GlossaryBrowser(Client):
|
|
180
185
|
elements_md += self.make_md_attribute( "description", description, output_format)
|
181
186
|
elements_md += self.make_md_attribute( "examples", examples, output_format)
|
182
187
|
elements_md += self.make_md_attribute("usage", usage, output_format)
|
183
|
-
elements_md += self.make_md_attribute("
|
188
|
+
elements_md += self.make_md_attribute("version", pub_version, output_format)
|
184
189
|
elements_md += self.make_md_attribute("qualified name", qualified_name, output_format)
|
185
190
|
elements_md += self.make_md_attribute("GUID", guid, output_format)
|
186
191
|
elements_md += MD_SEPERATOR
|
pyegeria/md_processing_utils.py
CHANGED
@@ -12,26 +12,28 @@ from typing import List, Optional
|
|
12
12
|
|
13
13
|
import os
|
14
14
|
import re
|
15
|
-
|
15
|
+
|
16
16
|
from rich import box, print
|
17
17
|
from rich.console import Console
|
18
18
|
from rich.markdown import Markdown
|
19
|
-
|
20
|
-
from
|
21
|
-
import
|
22
|
-
|
23
|
-
from pyegeria.
|
19
|
+
|
20
|
+
from pyegeria import body_slimmer
|
21
|
+
from pyegeria._globals import NO_TERMS_FOUND, NO_GLOSSARIES_FOUND, NO_TERMS_FOUND, NO_ELEMENTS_FOUND, NO_PROJECTS_FOUND, NO_CATEGORIES_FOUND
|
22
|
+
|
23
|
+
from pyegeria.project_manager_omvs import ProjectManager
|
24
|
+
from pyegeria.glossary_manager_omvs import GlossaryManager
|
25
|
+
|
24
26
|
from datetime import datetime
|
25
27
|
EGERIA_WIDTH = int(os.environ.get("EGERIA_WIDTH", "200"))
|
26
28
|
console = Console(width=EGERIA_WIDTH)
|
27
29
|
|
28
|
-
|
30
|
+
command_list = ["Provenance", "Create Glossary", "Update Glossary", "Create Term", "Update Term", "Create Personal Project",
|
29
31
|
"Update Personal Project", "Create Category", "Update Category"]
|
30
32
|
ERROR = "ERROR-> "
|
31
33
|
INFO = "INFO- "
|
32
34
|
WARNING = "WARNING-> "
|
33
35
|
pre_command = "\n---\n==> Processing command:"
|
34
|
-
|
36
|
+
|
35
37
|
element_dictionary = {}
|
36
38
|
|
37
39
|
def render_markdown(markdown_text: str) -> None:
|
@@ -42,7 +44,7 @@ def render_markdown(markdown_text: str) -> None:
|
|
42
44
|
def is_valid_iso_date(date_text) -> bool:
|
43
45
|
"""Checks if the given string is a valid ISO date."""
|
44
46
|
try:
|
45
|
-
datetime.
|
47
|
+
datetime.strptime(date_text, '%Y-%m-%d')
|
46
48
|
return True
|
47
49
|
except ValueError:
|
48
50
|
return False
|
@@ -54,7 +56,7 @@ def get_current_datetime_string():
|
|
54
56
|
return now
|
55
57
|
|
56
58
|
|
57
|
-
def add_term_to_categories(egeria_client:
|
59
|
+
def add_term_to_categories(egeria_client: GlossaryManager, term_guid: str, categories_exist: bool,
|
58
60
|
categories_list: List[str], element_dictionary: dict) -> None:
|
59
61
|
if categories_exist is True and categories_list is not None:
|
60
62
|
for category in categories_list:
|
@@ -97,7 +99,6 @@ def extract_attribute(text: str, labels: List[str]) -> Optional[str]:
|
|
97
99
|
if not extracted_text.isspace() and extracted_text:
|
98
100
|
return extracted_text # Return the cleaned text
|
99
101
|
|
100
|
-
return None
|
101
102
|
|
102
103
|
|
103
104
|
def update_a_command(txt: str, command: str, obj_type: str, q_name: str, u_guid: str) -> str:
|
@@ -126,17 +127,26 @@ def update_a_command(txt: str, command: str, obj_type: str, q_name: str, u_guid:
|
|
126
127
|
txt = re.sub(pattern, replacement, txt)
|
127
128
|
return txt
|
128
129
|
|
129
|
-
def process_provenance_command(file_path: str, txt: str) -> str:
|
130
|
+
def process_provenance_command(file_path: str, txt: [str]) -> str:
|
130
131
|
"""This commands processes a provenence command by pre-pending the current file name and time to the provenance
|
131
132
|
output"""
|
132
133
|
output = (f"* Derived from processing file {file_path} on "
|
133
134
|
f"{get_current_datetime_string()}\n")
|
134
|
-
|
135
|
+
pattern = rf"# {re.escape('Provenance')}\n(.*?)(?:#|---|$)"
|
136
|
+
match = re.search(pattern, txt, re.DOTALL)
|
137
|
+
if match:
|
138
|
+
# Extract matched text and replace consecutive \n with a single \n
|
139
|
+
extracted_text = re.sub(r'\n+', '\n', match.group(1).strip())
|
140
|
+
if not extracted_text.isspace() and extracted_text:
|
141
|
+
existing_prov = extracted_text # Return the cleaned text
|
142
|
+
else:
|
143
|
+
existing_prov = None
|
144
|
+
print(f"txt is: {txt}, existing_prov: {existing_prov}")
|
135
145
|
existing_prov = existing_prov if existing_prov else " "
|
136
146
|
return f"\n# Provenance:\n{existing_prov}\n{output}\n"
|
137
147
|
|
138
148
|
|
139
|
-
def process_glossary_upsert_command(egeria_client:
|
149
|
+
def process_glossary_upsert_command(egeria_client: GlossaryManager, element_dictionary: dict, txt: str,
|
140
150
|
directive: str = "display") -> Optional[str]:
|
141
151
|
"""
|
142
152
|
Processes a glossary create or update command by extracting key attributes such as
|
@@ -199,12 +209,7 @@ def process_glossary_upsert_command(egeria_client: EgeriaTech, element_dictionar
|
|
199
209
|
if not glossary_exists:
|
200
210
|
msg += f"* {ERROR}Glossary {glossary_name} does not exist\n"
|
201
211
|
valid = False
|
202
|
-
|
203
|
-
# msg += f"* {ERROR}More than one glossary with name {glossary_name} found\n"
|
204
|
-
# valid = False
|
205
|
-
# if len(glossary_details) == 1:
|
206
|
-
# known_glossary_guid = glossary_details[0]['elementHeader'].get('guid', None)
|
207
|
-
# known_q_name = glossary_details[0]['glossaryProperties'].get('qualifiedName',None)
|
212
|
+
|
208
213
|
if q_name is None:
|
209
214
|
msg += f"* {INFO}Qualified Name is missing => can use known qualified name of {known_q_name}\n"
|
210
215
|
valid = True
|
@@ -215,6 +220,7 @@ def process_glossary_upsert_command(egeria_client: EgeriaTech, element_dictionar
|
|
215
220
|
if valid:
|
216
221
|
msg += glossary_display
|
217
222
|
msg += f"* -->Glossary `{glossary_name}` exists and can be updated\n"
|
223
|
+
element_dictionary[known_q_name] = {'display_name': glossary_name, 'guid': known_glossary_guid}
|
218
224
|
else:
|
219
225
|
msg += f"* --> validation failed\n"
|
220
226
|
|
@@ -228,6 +234,8 @@ def process_glossary_upsert_command(egeria_client: EgeriaTech, element_dictionar
|
|
228
234
|
elif valid:
|
229
235
|
msg += f"-->It is valid to create Glossary \'{glossary_name}\' with:\n"
|
230
236
|
msg += glossary_display
|
237
|
+
expected_q_name = egeria_client.__create_qualified_name__('Glossary', glossary_name)
|
238
|
+
element_dictionary[expected_q_name] = {'display_name': glossary_name}
|
231
239
|
|
232
240
|
print(Markdown(msg))
|
233
241
|
return valid, glossary_exists, known_glossary_guid, known_q_name
|
@@ -284,7 +292,7 @@ def process_glossary_upsert_command(egeria_client: EgeriaTech, element_dictionar
|
|
284
292
|
return egeria_client.get_glossary_by_guid(glossary_guid, output_format = 'MD')
|
285
293
|
|
286
294
|
|
287
|
-
def process_categories_upsert_command(egeria_client:
|
295
|
+
def process_categories_upsert_command(egeria_client: GlossaryManager, element_dictionary: dict, txt: str,
|
288
296
|
directive: str = "display") -> Optional[str]:
|
289
297
|
"""
|
290
298
|
Processes a glossary category create or update command by extracting key attributes such as
|
@@ -383,6 +391,7 @@ def process_categories_upsert_command(egeria_client: EgeriaTech, element_diction
|
|
383
391
|
if valid:
|
384
392
|
msg += category_display
|
385
393
|
msg += f"* -->category `{category_name}` exists and can be updated\n"
|
394
|
+
element_dictionary[known_q_name] = {'display_name': glossary_name, 'guid': known_category_guid}
|
386
395
|
else:
|
387
396
|
msg += f"* --> validation failed\n"
|
388
397
|
|
@@ -396,6 +405,8 @@ def process_categories_upsert_command(egeria_client: EgeriaTech, element_diction
|
|
396
405
|
elif valid:
|
397
406
|
msg += f"-->It is valid to create category `{category_name}` with:\n"
|
398
407
|
msg += category_display
|
408
|
+
expected_q_name = egeria_client.__create_qualified_name__('Category', category_name)
|
409
|
+
element_dictionary[expected_q_name] = {'display_name': category_name}
|
399
410
|
|
400
411
|
print(Markdown(msg))
|
401
412
|
return valid, category_exists, known_category_guid, known_q_name, glossary_guid
|
@@ -452,7 +463,7 @@ def process_categories_upsert_command(egeria_client: EgeriaTech, element_diction
|
|
452
463
|
return egeria_client.get_categories_by_guid(category_guid, output_format='MD')
|
453
464
|
|
454
465
|
|
455
|
-
def process_term_upsert_command(egeria_client:
|
466
|
+
def process_term_upsert_command(egeria_client: GlossaryManager, element_dictionary: dict, txt: str,
|
456
467
|
directive: str = "display") -> Optional[str]:
|
457
468
|
"""
|
458
469
|
Processes a term create or update command by extracting key attributes such as
|
@@ -475,7 +486,7 @@ def process_term_upsert_command(egeria_client: EgeriaTech, element_dictionary: d
|
|
475
486
|
examples = extract_attribute(txt, ['Examples'])
|
476
487
|
usage = extract_attribute(txt, ['Usage'])
|
477
488
|
status = extract_attribute(txt, ['Status'])
|
478
|
-
version = extract_attribute(txt, ['Version', "Version Identifier"])
|
489
|
+
version = extract_attribute(txt, ['Version', "Version Identifier", "Published Version"])
|
479
490
|
categories = extract_attribute(txt, ['Categories'])
|
480
491
|
q_name = extract_attribute(txt, ['Qualified Name'])
|
481
492
|
# q_name = q_name if q_name else " "
|
@@ -598,6 +609,7 @@ def process_term_upsert_command(egeria_client: EgeriaTech, element_dictionary: d
|
|
598
609
|
else:
|
599
610
|
msg += f"\n--> * Term {term_name} exists and can be updated\n"
|
600
611
|
msg += term_display
|
612
|
+
element_dictionary[known_q_name] = {'display_name': term_name, 'guid': known_term_guid}
|
601
613
|
|
602
614
|
print(Markdown(msg))
|
603
615
|
return valid, term_exists, known_term_guid, known_q_name
|
@@ -609,6 +621,8 @@ def process_term_upsert_command(egeria_client: EgeriaTech, element_dictionary: d
|
|
609
621
|
msg += f"\n-->Validation checks failed in creating Term \'{term_name}\' with: {term_display}\n"
|
610
622
|
else:
|
611
623
|
msg += f"\n-->It is valid to create Term \'{term_name}\' with: {term_display}\n"
|
624
|
+
expected_q_name = egeria_client.__create_qualified_name__('Term', term_name)
|
625
|
+
element_dictionary[expected_q_name] = {'display_name': term_name}
|
612
626
|
|
613
627
|
print(Markdown(msg))
|
614
628
|
return valid, term_exists, known_term_guid, known_q_name
|
@@ -667,7 +681,7 @@ def process_term_upsert_command(egeria_client: EgeriaTech, element_dictionary: d
|
|
667
681
|
},
|
668
682
|
"updateDescription": update_description
|
669
683
|
}
|
670
|
-
egeria_client.update_term(known_guid, body)
|
684
|
+
egeria_client.update_term(known_guid, body_slimmer(body))
|
671
685
|
# if cats_exist is True and categories_list is not None:
|
672
686
|
# for category in categories_list:
|
673
687
|
# cat_guid = element_dictionary.get(f"category.{category}", None)
|
@@ -686,7 +700,7 @@ def process_term_upsert_command(egeria_client: EgeriaTech, element_dictionary: d
|
|
686
700
|
elif object_action == "Create":
|
687
701
|
guid = None
|
688
702
|
|
689
|
-
q_name = egeria_client.__create_qualified_name__("Term",term_name
|
703
|
+
q_name = egeria_client.__create_qualified_name__("Term",term_name)
|
690
704
|
if exists:
|
691
705
|
print(f"\n{WARNING}Term {term_name} exists and result document updated")
|
692
706
|
return update_a_command(txt, command, object_type, q_name, known_guid)
|
@@ -706,9 +720,15 @@ def process_term_upsert_command(egeria_client: EgeriaTech, element_dictionary: d
|
|
706
720
|
return None
|
707
721
|
term_body = {
|
708
722
|
"class": "ReferenceableRequestBody", "elementProperties": {
|
709
|
-
"class": "GlossaryTermProperties",
|
710
|
-
"
|
711
|
-
"
|
723
|
+
"class": "GlossaryTermProperties",
|
724
|
+
"qualifiedName": q_name,
|
725
|
+
"displayName": term_name,
|
726
|
+
"summary": summary,
|
727
|
+
"description": description,
|
728
|
+
"abbreviation": abbreviation,
|
729
|
+
"examples": examples,
|
730
|
+
"usage": usage,
|
731
|
+
"publishVersionIdentifier": version
|
712
732
|
# "additionalProperties":
|
713
733
|
# {
|
714
734
|
# "propertyName1": "xxxx",
|
@@ -733,7 +753,7 @@ def process_term_upsert_command(egeria_client: EgeriaTech, element_dictionary: d
|
|
733
753
|
console.print_exception(show_locals=True)
|
734
754
|
return None
|
735
755
|
|
736
|
-
def process_per_proj_upsert_command(egeria_client:
|
756
|
+
def process_per_proj_upsert_command(egeria_client: ProjectManager, element_dictionary: dict, txt: str,
|
737
757
|
directive: str = "display") -> str | None:
|
738
758
|
"""
|
739
759
|
Processes a personal project create or update command by extracting key attributes such as
|
@@ -1,5 +1,5 @@
|
|
1
1
|
pyegeria/README.md,sha256=PwX5OC7-YSZUCIsoyHh1O-WBM2hE84sm3Bd4O353NOk,1464
|
2
|
-
pyegeria/__init__.py,sha256=
|
2
|
+
pyegeria/__init__.py,sha256=4ANzq4fFT3vpvPX0Khav7S0mkPZXFRpSJifE0ujSK3o,30272
|
3
3
|
pyegeria/_client.py,sha256=nhUPmeQFHqbobM6_3EGmUy-STYURxb15BEXf6erY2oI,31733
|
4
4
|
pyegeria/_deprecated_gov_engine.py,sha256=dWNcwVsE5__dF2u4QiIyQrssozzzOjBbLld8MdpmVCQ,17264
|
5
5
|
pyegeria/_exceptions.py,sha256=1SrnV194V4_YJNnNAU0myTHQ3dhLn4GF2B2gZcj1u90,18153
|
@@ -16,8 +16,8 @@ pyegeria/commands/cat/README.md,sha256=-aaAnIT2fcfU63vajgB-RzQk4l4yFdhkyVfSaTPiq
|
|
16
16
|
pyegeria/commands/cat/__init__.py,sha256=5OCy4m_yZsnSxdy_gvkCyP_OkjvuWKimqUGHYCJc_qA,450
|
17
17
|
pyegeria/commands/cat/dr_egeria_inbox/glossary_creation_experiment.ipynb,sha256=dbzNu90fCKNohOWVSRBOB1GLyd95x8Qw51I5AkaPtso,11552
|
18
18
|
pyegeria/commands/cat/dr_egeria_inbox/glossary_exp.md,sha256=KsUeTzDe5QkrTmIfIAXR74qZ29oSfRW-NAEn0RYIRqM,2534
|
19
|
-
pyegeria/commands/cat/dr_egeria_jupyter.py,sha256=
|
20
|
-
pyegeria/commands/cat/dr_egeria_md.py,sha256=
|
19
|
+
pyegeria/commands/cat/dr_egeria_jupyter.py,sha256=U-3m9BMoCXj2fvuawr3PTc2HQWAXThqQ3sIXjyCWv6s,5912
|
20
|
+
pyegeria/commands/cat/dr_egeria_md.py,sha256=CcqRdO5lIPmbMuHu59DDD5731sPu1Q_A08cQ0L7E_f4,9523
|
21
21
|
pyegeria/commands/cat/exp_list_glossaries.py,sha256=dC6Bnfm3YSMTKPP146qeslIFRiZnGu5b7iDYE07p4iU,5817
|
22
22
|
pyegeria/commands/cat/get_asset_graph.py,sha256=xnXJfpDTVH1TJ2TwE3dtjaXU36Di6-N6JAyhothzz2o,12461
|
23
23
|
pyegeria/commands/cat/get_collection.py,sha256=kXPcP8u-SMWfrVyyBhNoxG8mcgB7EV_5i9N9w_IBU7o,5379
|
@@ -37,12 +37,12 @@ pyegeria/commands/cat/list_glossaries.py,sha256=jlhe840GxadFVM2qIcVm7-YwZ-8EBN-a
|
|
37
37
|
pyegeria/commands/cat/list_projects.py,sha256=NzWTuepTGUEyxK-eWvuUxtBgCtNWubVwmz2eqm2UN1c,7997
|
38
38
|
pyegeria/commands/cat/list_tech_type_elements.py,sha256=-9omj5en9dSP1xMSljYVHyfXsuhuE1bO2IFj_bZPhAs,6873
|
39
39
|
pyegeria/commands/cat/list_tech_types.py,sha256=uqZcXHCzAznhEG6WWeM5j-spwUh8ycygFqpVDeXOG-0,4653
|
40
|
-
pyegeria/commands/cat/list_terms.py,sha256=
|
40
|
+
pyegeria/commands/cat/list_terms.py,sha256=GwhbQeesYMCXOx3o4Hsom21wtC2nzmbpjhpwRLZ7iVE,12177
|
41
41
|
pyegeria/commands/cat/list_todos.py,sha256=NitCw0uyVVjmN1hxb1W-I4FbOsa8wQxW2ICyOElHyc8,6556
|
42
42
|
pyegeria/commands/cat/list_user_ids.py,sha256=X5Q-YNEp38saPYDuy9VwdQC5Qpa4HyC3WvAdbyp_P6M,5108
|
43
43
|
pyegeria/commands/cli/__init__.py,sha256=hpTVSMP2gnPRhcAZPdeUEsQ-eaDySlXlk239dNWYmng,292
|
44
44
|
pyegeria/commands/cli/egeria.py,sha256=_Z__gugx11bpwyWU6Uiacw_0r0q5o4mbAZ-ipDozFwc,52884
|
45
|
-
pyegeria/commands/cli/egeria_cat.py,sha256=
|
45
|
+
pyegeria/commands/cli/egeria_cat.py,sha256=C57P0qltiwNZKF9WrsetqbVB5ezKQgZwj3mo_gZ3AzA,18345
|
46
46
|
pyegeria/commands/cli/egeria_login_tui.py,sha256=W5ouG3nlN7z2Waa-wzYFS7yyoGfOrK-lNB0FMt2JdOk,9492
|
47
47
|
pyegeria/commands/cli/egeria_my.py,sha256=0KTH7OIeKyp16ZeN7zK5uhadbPfAQsq38GMzJNWYG8g,6386
|
48
48
|
pyegeria/commands/cli/egeria_ops.py,sha256=8W4t2jFGn22OOOtyUAapQH8yyOl1wo09CVNTojRQKvo,12817
|
@@ -219,16 +219,16 @@ pyegeria/commands/tech/x_list_related_elements.py,sha256=ynaw792VnbMZ9IXBi5mmG7x
|
|
219
219
|
pyegeria/core_omag_server_config.py,sha256=pNQpocICkZx8sRsTw5DPUe-TFyxlIo1U88qqgci_f7I,97764
|
220
220
|
pyegeria/create_tech_guid_lists.py,sha256=hf5q8Xrdsz-bqeIW3yTORZ1XB6_BrKzLDWWwC_bNG2g,4811
|
221
221
|
pyegeria/egeria_cat_client.py,sha256=d8dQNPLzL4efi99OJfH1T-Rt1N0k9Rf9LX8LpuhiFls,2179
|
222
|
-
pyegeria/egeria_client.py,sha256=
|
222
|
+
pyegeria/egeria_client.py,sha256=UjvwDkTO3iYaPEGuPZJTiK_k_i4ZuVeB8QMTVNUHwxg,4490
|
223
223
|
pyegeria/egeria_config_client.py,sha256=3TZUeXSl1f7SQ2WWYTbgOu1Cu1YqApilErAgjZLzbWY,1391
|
224
224
|
pyegeria/egeria_my_client.py,sha256=eOKLk2zdI6FHZnhAimfR_0yNdBjpUgD41dJZcJODcqE,1607
|
225
225
|
pyegeria/egeria_tech_client.py,sha256=uycgYfCpb4jzFfaQ7I5JxbZ5PKsWdaWxLOJjbw6C2Zk,3817
|
226
226
|
pyegeria/feedback_manager_omvs.py,sha256=0xBs0p54vmdfVYYgQ8pOanLC4fxfgTk1Z61Y6D1U7_I,152978
|
227
227
|
pyegeria/full_omag_server_config.py,sha256=CQqLCy_3DZFvJZEOcGf50HWdFaWpiAIs6z-kKyjvpDA,47464
|
228
|
-
pyegeria/glossary_browser_omvs.py,sha256=
|
228
|
+
pyegeria/glossary_browser_omvs.py,sha256=NHcLStpzejiT3BinIpm4FmYKPiVcBKSvp2ihZfNwTik,109579
|
229
229
|
pyegeria/glossary_manager_omvs.py,sha256=QSOVqbwEASueCQzpvYNEOaUIAhOvwqLWWhfzwT8hrrs,70275
|
230
230
|
pyegeria/m_test.py,sha256=M5-M2ZczsAJLXWfSeqTTADHdx6Ku-y4PbQ4M21JthAE,7778
|
231
|
-
pyegeria/md_processing_utils.py,sha256=
|
231
|
+
pyegeria/md_processing_utils.py,sha256=oELxTiJBB3ilViMjNtjxAicG2awEPmhjipd8rvXKPr4,42704
|
232
232
|
pyegeria/mermaid_utilities.py,sha256=sQqdFUWdNpHu9d3Tk9UVe80M-5bOzses0XcFYX5FF-E,54254
|
233
233
|
pyegeria/metadata_explorer_omvs.py,sha256=xHnZTQKbd6XwOhYia-RiIisrvZcqHi0SL1l6OCf04Gk,86911
|
234
234
|
pyegeria/my_profile_omvs.py,sha256=d0oJYCJG7pS9BINPuGciVa00ac0jwPHNANXDCLginEc,34720
|
@@ -242,8 +242,8 @@ pyegeria/template_manager_omvs.py,sha256=PfJ9dOfmBvf59DgRdZ9Dl1Kl_UYqjF-JncXVnbC
|
|
242
242
|
pyegeria/utils.py,sha256=GCt1C0bp0Xng1ahzbZhzV9qQwH7Dj93IaCt2dvWb-sg,5417
|
243
243
|
pyegeria/valid_metadata_omvs.py,sha256=Xq9DqBQvBFFJzaFIRKcVZ2k4gJvSh9yeXs_j-O3vn1w,65050
|
244
244
|
pyegeria/x_action_author_omvs.py,sha256=RcqSzahUKCtvb_3u_wyintAlc9WFkC_2v0E12TZs8lQ,6433
|
245
|
-
pyegeria-5.3.
|
246
|
-
pyegeria-5.3.
|
247
|
-
pyegeria-5.3.
|
248
|
-
pyegeria-5.3.
|
249
|
-
pyegeria-5.3.
|
245
|
+
pyegeria-5.3.7.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
246
|
+
pyegeria-5.3.7.dist-info/METADATA,sha256=7rhI0QxgXZv4dtwa4poxMpzrup7d9Doljw1-YXqgQ58,2741
|
247
|
+
pyegeria-5.3.7.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
|
248
|
+
pyegeria-5.3.7.dist-info/entry_points.txt,sha256=eAvQ_vkejlF3JzMzEc5VD93ymLA_hSFV0HM8fntG-d8,6791
|
249
|
+
pyegeria-5.3.7.dist-info/RECORD,,
|
@@ -10,7 +10,7 @@ delete_glossary=pyegeria.commands.cat.glossary_actions:delete_glossary
|
|
10
10
|
delete_term=pyegeria.commands.cat.glossary_actions:delete_term
|
11
11
|
delete_todo=pyegeria.commands.my.todo_actions:delete_todo
|
12
12
|
dr_egeria_jupyter=pyegeria.commands.cat.dr_egeria_jupyter:process_jupyter_notebook
|
13
|
-
dr_egeria_md=pyegeria.commands.cat.dr_egeria_md:
|
13
|
+
dr_egeria_md=pyegeria.commands.cat.dr_egeria_md:process_markdown_file
|
14
14
|
egeria_login=pyegeria.commands.cli.egeria_login_tui:login
|
15
15
|
export_terms_to_csv_file=pyegeria.commands.cat.glossary_actions:export_terms_csv
|
16
16
|
get_asset_graph=pyegeria.commands.cat.get_asset_graph:main
|
File without changes
|
File without changes
|