pyegeria 1.5.1.1.11__py3-none-any.whl → 1.5.1.1.13__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.
- commands/cat/glossary_actions.py +33 -0
- commands/cat/list_terms.py +21 -13
- commands/cli/egeria.py +2 -0
- commands/cli/egeria_cat.py +2 -0
- pyegeria/glossary_manager_omvs.py +256 -9
- {pyegeria-1.5.1.1.11.dist-info → pyegeria-1.5.1.1.13.dist-info}/METADATA +1 -1
- {pyegeria-1.5.1.1.11.dist-info → pyegeria-1.5.1.1.13.dist-info}/RECORD +10 -10
- {pyegeria-1.5.1.1.11.dist-info → pyegeria-1.5.1.1.13.dist-info}/entry_points.txt +1 -0
- {pyegeria-1.5.1.1.11.dist-info → pyegeria-1.5.1.1.13.dist-info}/LICENSE +0 -0
- {pyegeria-1.5.1.1.11.dist-info → pyegeria-1.5.1.1.13.dist-info}/WHEEL +0 -0
commands/cat/glossary_actions.py
CHANGED
@@ -329,3 +329,36 @@ def load_terms(
|
|
329
329
|
print_exception_response(e)
|
330
330
|
finally:
|
331
331
|
m_client.close_session()
|
332
|
+
|
333
|
+
|
334
|
+
@click.command("export-terms-to-file")
|
335
|
+
@click.option("--glossary-guid", help="GUID of Glossary to export", required=True)
|
336
|
+
@click.option("--file-name", help="Path of CSV file", required=True)
|
337
|
+
@click.option(
|
338
|
+
"--verbose",
|
339
|
+
is_flag=True,
|
340
|
+
default=False,
|
341
|
+
help="If set, result descriptions are provided",
|
342
|
+
)
|
343
|
+
@click.option("--server", default=EGERIA_VIEW_SERVER, help="Egeria view server to use")
|
344
|
+
@click.option(
|
345
|
+
"--url", default=EGERIA_VIEW_SERVER_URL, help="URL of Egeria platform to connect to"
|
346
|
+
)
|
347
|
+
@click.option("--userid", default=EGERIA_USER, help="Egeria user")
|
348
|
+
@click.option("--password", default=EGERIA_USER_PASSWORD, help="Egeria user password")
|
349
|
+
@click.option("--timeout", default=60, help="Number of seconds to wait")
|
350
|
+
def export_terms(glossary_guid, file_name, server, url, userid, password, timeout):
|
351
|
+
"""Delete the glossary specified"""
|
352
|
+
m_client = EgeriaTech(server, url, user_id=userid, user_pwd=password)
|
353
|
+
token = m_client.create_egeria_bearer_token()
|
354
|
+
try:
|
355
|
+
result = m_client.export_glossary_to_csv(glossary_guid, file_name)
|
356
|
+
|
357
|
+
click.echo(
|
358
|
+
f"Exported {result} terms from glossary: {glossary_guid} into {file_name}"
|
359
|
+
)
|
360
|
+
|
361
|
+
except (InvalidParameterException, PropertyServerException) as e:
|
362
|
+
print_exception_response(e)
|
363
|
+
finally:
|
364
|
+
m_client.close_session()
|
commands/cat/list_terms.py
CHANGED
@@ -73,12 +73,12 @@ def display_glossary_terms(
|
|
73
73
|
)
|
74
74
|
table.add_column("Term Name")
|
75
75
|
table.add_column("Qualified Name / GUID")
|
76
|
-
table.add_column("Glossary")
|
77
76
|
table.add_column("Abbreviation")
|
78
77
|
table.add_column("Summary")
|
79
78
|
table.add_column("Description")
|
80
79
|
table.add_column("Version Id")
|
81
|
-
|
80
|
+
table.add_column("Glossary")
|
81
|
+
table.add_column("Status")
|
82
82
|
|
83
83
|
terms = g_client.find_glossary_terms(
|
84
84
|
search_string,
|
@@ -98,7 +98,7 @@ def display_glossary_terms(
|
|
98
98
|
style = "bright_white on black"
|
99
99
|
if type(terms) is str:
|
100
100
|
return table
|
101
|
-
|
101
|
+
glossary_info = {}
|
102
102
|
for term in sorted_terms:
|
103
103
|
props = term.get("glossaryTermProperties", "None")
|
104
104
|
if props == "None":
|
@@ -113,19 +113,31 @@ def display_glossary_terms(
|
|
113
113
|
description = Text(props.get("description", " "), style=style)
|
114
114
|
version = Text(props.get("publishVersionIdentifier", " "), style=style)
|
115
115
|
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
116
|
+
classifications = term["elementHeader"]["classifications"]
|
117
|
+
glossary_guid = None
|
118
|
+
for c in classifications:
|
119
|
+
if c["classificationName"] == "Anchors":
|
120
|
+
glossary_guid = c["classificationProperties"]["anchorGUID"]
|
121
|
+
|
122
|
+
if glossary_guid and glossary_guid in glossary_info:
|
123
|
+
glossary_name = glossary_info[glossary_guid]
|
124
|
+
elif glossary_guid:
|
125
|
+
g = g_client.get_glossary_for_term(term_guid)
|
126
|
+
glossary_name = g["glossaryProperties"].get("displayName", "---")
|
127
|
+
glossary_info[glossary_guid] = glossary_name
|
128
|
+
else:
|
129
|
+
glossary_name = "---"
|
130
|
+
|
131
|
+
term_status = term["elementHeader"]["status"]
|
120
132
|
table.add_row(
|
121
133
|
display_name,
|
122
134
|
q_name,
|
123
|
-
glossary_name,
|
124
135
|
abbrev,
|
125
136
|
summary,
|
126
137
|
description,
|
127
138
|
version,
|
128
|
-
|
139
|
+
glossary_name,
|
140
|
+
term_status,
|
129
141
|
style="bold white on black",
|
130
142
|
)
|
131
143
|
|
@@ -133,10 +145,6 @@ def display_glossary_terms(
|
|
133
145
|
return table
|
134
146
|
|
135
147
|
try:
|
136
|
-
# with Live(generate_table(), refresh_per_second=4, screen=True) as live:
|
137
|
-
# while True:
|
138
|
-
# time.sleep(2)
|
139
|
-
# live.update(generate_table(search_string))
|
140
148
|
console = Console(
|
141
149
|
style="bold bright_white on black", width=width, force_terminal=not jupyter
|
142
150
|
)
|
commands/cli/egeria.py
CHANGED
@@ -43,6 +43,7 @@ from commands.cat.glossary_actions import (
|
|
43
43
|
list_glossaries,
|
44
44
|
create_term,
|
45
45
|
load_terms,
|
46
|
+
export_terms,
|
46
47
|
)
|
47
48
|
from commands.my.todo_actions import (
|
48
49
|
mark_todo_complete,
|
@@ -993,6 +994,7 @@ tell.add_command(reassign_todo)
|
|
993
994
|
tell.add_command(delete_todo)
|
994
995
|
tell.add_command(create_todo)
|
995
996
|
tell.add_command(load_terms)
|
997
|
+
tell.add_command(export_terms)
|
996
998
|
|
997
999
|
|
998
1000
|
@tell.group("survey")
|
commands/cli/egeria_cat.py
CHANGED
@@ -24,6 +24,7 @@ from commands.cat.glossary_actions import (
|
|
24
24
|
create_term,
|
25
25
|
load_terms,
|
26
26
|
list_glossaries,
|
27
|
+
export_terms,
|
27
28
|
)
|
28
29
|
from commands.cat.list_archives import display_archive_list
|
29
30
|
from commands.cat.list_assets import display_assets
|
@@ -575,6 +576,7 @@ tell.add_command(reassign_todo)
|
|
575
576
|
tell.add_command(delete_todo)
|
576
577
|
tell.add_command(create_todo)
|
577
578
|
tell.add_command(load_terms)
|
579
|
+
tell.add_command(export_terms)
|
578
580
|
|
579
581
|
|
580
582
|
@tell.group("survey")
|
@@ -67,7 +67,7 @@ class GlossaryManager(GlossaryBrowser):
|
|
67
67
|
|
68
68
|
def __validate_term_status__(self, status: str) -> bool:
|
69
69
|
"""Return True if the status is a legal glossary term status"""
|
70
|
-
recognized_term_status =
|
70
|
+
recognized_term_status = self.get_glossary_term_statuses()
|
71
71
|
return status in recognized_term_status
|
72
72
|
|
73
73
|
async def _async_create_glossary(
|
@@ -103,7 +103,7 @@ class GlossaryManager(GlossaryBrowser):
|
|
103
103
|
"class": "ReferenceableRequestBody",
|
104
104
|
"elementProperties": {
|
105
105
|
"class": "GlossaryProperties",
|
106
|
-
"qualifiedName": f"Glossary
|
106
|
+
"qualifiedName": f"Glossary:{display_name}-{time.asctime()}",
|
107
107
|
"displayName": display_name,
|
108
108
|
"description": description,
|
109
109
|
"language": language,
|
@@ -187,6 +187,120 @@ class GlossaryManager(GlossaryBrowser):
|
|
187
187
|
response = loop.run_until_complete(self._async_delete_glossary(glossary_guid))
|
188
188
|
return response
|
189
189
|
|
190
|
+
async def _async_update_glossary(
|
191
|
+
self,
|
192
|
+
glossary_guid: str,
|
193
|
+
body: dict,
|
194
|
+
is_merge_update: bool = True,
|
195
|
+
for_lineage: bool = False,
|
196
|
+
for_duplicate_processing: bool = False,
|
197
|
+
) -> None:
|
198
|
+
"""Update Glossary.
|
199
|
+
|
200
|
+
Async version.
|
201
|
+
|
202
|
+
Parameters
|
203
|
+
----------
|
204
|
+
glossary_guid: str
|
205
|
+
The ID of the glossary to update.
|
206
|
+
body: dict
|
207
|
+
A dict containing the properties to update.
|
208
|
+
is_merge_update: bool, optional, default = True
|
209
|
+
If true, then only those properties specified in the body will be updated. If false, then all the
|
210
|
+
properties of the glossary will be replaced with those of the body.
|
211
|
+
for_lineage: bool, optional, default = False
|
212
|
+
Normally false. Used when we want to retrieve elements that have been delete but have a Memento entry.
|
213
|
+
for_duplicate_processing: bool, optional, default = False
|
214
|
+
Normally false. Set true when Egeria is told to skip deduplication because another system will do it.
|
215
|
+
|
216
|
+
|
217
|
+
Returns
|
218
|
+
-------
|
219
|
+
None
|
220
|
+
|
221
|
+
Notes
|
222
|
+
-----
|
223
|
+
|
224
|
+
Sample body:
|
225
|
+
|
226
|
+
{
|
227
|
+
"class" : "ReferenceableRequestBody",
|
228
|
+
"elementProperties" :
|
229
|
+
{
|
230
|
+
"class" : "GlossaryProperties",
|
231
|
+
"qualifiedName" : "MyGlossary",
|
232
|
+
"displayName" : "My Glossary",
|
233
|
+
"description" : "This is an example glossary"
|
234
|
+
}
|
235
|
+
}
|
236
|
+
"""
|
237
|
+
|
238
|
+
url = (
|
239
|
+
f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/glossary-manager/glossaries/"
|
240
|
+
f"{glossary_guid}/update?isMergeUpdate={is_merge_update}&forLineage={for_lineage}&"
|
241
|
+
f"forDuplicateProcessing={for_duplicate_processing}"
|
242
|
+
)
|
243
|
+
|
244
|
+
await self._async_make_request("POST", url, body_slimmer(body))
|
245
|
+
return
|
246
|
+
|
247
|
+
def update_glossary(
|
248
|
+
self,
|
249
|
+
glossary_guid: str,
|
250
|
+
body: dict,
|
251
|
+
is_merge_update: bool = True,
|
252
|
+
for_lineage: bool = False,
|
253
|
+
for_duplicate_processing: bool = False,
|
254
|
+
) -> None:
|
255
|
+
"""Update Glossary.
|
256
|
+
|
257
|
+
Parameters
|
258
|
+
----------
|
259
|
+
glossary_guid: str
|
260
|
+
The ID of the glossary to update.
|
261
|
+
body: dict
|
262
|
+
A dict containing the properties to update.
|
263
|
+
is_merge_update: bool, optional, default = True
|
264
|
+
If true, then only those properties specified in the body will be updated. If false, then all the
|
265
|
+
properties of the glossary will be replaced with those of the body.
|
266
|
+
for_lineage: bool, optional, default = False
|
267
|
+
Normally false. Used when we want to retrieve elements that have been delete but have a Memento entry.
|
268
|
+
for_duplicate_processing: bool, optional, default = False
|
269
|
+
Normally false. Set true when Egeria is told to skip deduplication because another system will do it.
|
270
|
+
|
271
|
+
|
272
|
+
Returns
|
273
|
+
-------
|
274
|
+
None
|
275
|
+
|
276
|
+
Notes
|
277
|
+
-----
|
278
|
+
|
279
|
+
Sample body:
|
280
|
+
|
281
|
+
{
|
282
|
+
"class" : "ReferenceableRequestBody",
|
283
|
+
"elementProperties" :
|
284
|
+
{
|
285
|
+
"class" : "GlossaryProperties",
|
286
|
+
"qualifiedName" : "MyGlossary",
|
287
|
+
"displayName" : "My Glossary",
|
288
|
+
"description" : "This is an example glossary"
|
289
|
+
}
|
290
|
+
}
|
291
|
+
"""
|
292
|
+
loop = asyncio.get_event_loop()
|
293
|
+
loop.run_until_complete(
|
294
|
+
self._async_update_glossary(
|
295
|
+
glossary_guid,
|
296
|
+
body,
|
297
|
+
is_merge_update,
|
298
|
+
for_lineage,
|
299
|
+
for_duplicate_processing,
|
300
|
+
)
|
301
|
+
)
|
302
|
+
return
|
303
|
+
|
190
304
|
#
|
191
305
|
# Glossaries
|
192
306
|
#
|
@@ -1471,9 +1585,10 @@ class GlossaryManager(GlossaryBrowser):
|
|
1471
1585
|
examples = row.get("Examples", None)
|
1472
1586
|
usage = row.get("Usage", None)
|
1473
1587
|
version = row.get("Version Identifier", "1.0")
|
1474
|
-
status = row.get("Status", "DRAFT")
|
1588
|
+
status = row.get("Status", "DRAFT")
|
1589
|
+
status = status.upper()
|
1475
1590
|
|
1476
|
-
#
|
1591
|
+
# quality check the row
|
1477
1592
|
if len(term_name) < 2:
|
1478
1593
|
term_info.append(
|
1479
1594
|
{
|
@@ -1494,12 +1609,64 @@ class GlossaryManager(GlossaryBrowser):
|
|
1494
1609
|
}
|
1495
1610
|
)
|
1496
1611
|
continue
|
1612
|
+
if upsert:
|
1613
|
+
# If upsert is set we need to see if it can be done (there must be a valid qualified name) and then
|
1614
|
+
# do the update for the row - if there is no qualified name we will treat the row as an insert.
|
1615
|
+
if qualified_name:
|
1616
|
+
body = {
|
1617
|
+
"class": "ReferenceableRequestBody",
|
1618
|
+
"elementProperties": {
|
1619
|
+
"class": "GlossaryTermProperties",
|
1620
|
+
"qualifiedName": qualified_name,
|
1621
|
+
"displayName": term_name,
|
1622
|
+
"summary": summary,
|
1623
|
+
"description": description,
|
1624
|
+
"abbreviation": abbrev,
|
1625
|
+
"examples": examples,
|
1626
|
+
"usage": usage,
|
1627
|
+
"publishVersionIdentifier": version,
|
1628
|
+
},
|
1629
|
+
"initialStatus": status,
|
1630
|
+
}
|
1631
|
+
term_stuff = self.get_terms_by_name(
|
1632
|
+
qualified_name, glossary_guid
|
1633
|
+
)
|
1634
|
+
if type(term_stuff) is str:
|
1635
|
+
# An existing term was not found with that qualified name
|
1636
|
+
term_info.append(
|
1637
|
+
{
|
1638
|
+
"term_name": term_name,
|
1639
|
+
"qualified_name": qualified_name,
|
1640
|
+
"term_guid": term_guid,
|
1641
|
+
"error": "Matching term not found - skipping",
|
1642
|
+
}
|
1643
|
+
)
|
1644
|
+
continue
|
1645
|
+
else:
|
1646
|
+
# An existing term was found - so update it!
|
1647
|
+
term_guid = term_stuff["elementHeader"]["guid"]
|
1648
|
+
self.update_term(
|
1649
|
+
term_guid, body_slimmer(body), is_merge_update=True
|
1650
|
+
)
|
1651
|
+
term_info.append(
|
1652
|
+
{
|
1653
|
+
"term_name": term_name,
|
1654
|
+
"qualified_name": qualified_name,
|
1655
|
+
"term_guid": term_guid,
|
1656
|
+
"updated": "the term was updated",
|
1657
|
+
}
|
1658
|
+
)
|
1659
|
+
continue
|
1497
1660
|
|
1661
|
+
# Add the term
|
1662
|
+
term_qualified_name = (
|
1663
|
+
f"GlossaryTerm: {term_name} - {datetime.now().isoformat()}"
|
1664
|
+
)
|
1498
1665
|
body = {
|
1499
1666
|
"class": "ReferenceableRequestBody",
|
1500
1667
|
"elementProperties": {
|
1501
1668
|
"class": "GlossaryTermProperties",
|
1502
|
-
"qualifiedName":
|
1669
|
+
"qualifiedName": term_qualified_name,
|
1503
1670
|
"displayName": term_name,
|
1504
1671
|
"summary": summary,
|
1505
1672
|
"description": description,
|
@@ -1511,9 +1678,6 @@ class GlossaryManager(GlossaryBrowser):
|
|
1511
1678
|
"initialStatus": status,
|
1512
1679
|
}
|
1513
1680
|
|
1514
|
-
# if upsert:
|
1515
|
-
# if len(qualified_name) > 5:
|
1516
|
-
# existing_term =
|
1517
1681
|
# Add the term
|
1518
1682
|
term_guid = self.create_controlled_glossary_term(
|
1519
1683
|
glossary_guid, body_slimmer(body)
|
@@ -1521,12 +1685,95 @@ class GlossaryManager(GlossaryBrowser):
|
|
1521
1685
|
term_info.append(
|
1522
1686
|
{
|
1523
1687
|
"term_name": term_name,
|
1524
|
-
"qualified_name":
|
1688
|
+
"qualified_name": term_qualified_name,
|
1525
1689
|
"term_guid": term_guid,
|
1526
1690
|
}
|
1527
1691
|
)
|
1528
1692
|
return term_info
|
1529
1693
|
|
1694
|
+
async def _async_export_glossary_to_csv(
|
1695
|
+
self, glossary_guid: str, target_file: str
|
1696
|
+
) -> int:
|
1697
|
+
"""Export all the terms in a glossary to a CSV file. Async version
|
1698
|
+
|
1699
|
+
Parameters:
|
1700
|
+
-----------
|
1701
|
+
glossary_guid: str
|
1702
|
+
Identity of the glossary to export.
|
1703
|
+
target_file: str
|
1704
|
+
Complete file name with path and extension to export to.
|
1705
|
+
|
1706
|
+
Returns:
|
1707
|
+
int: Number of rows exported.
|
1708
|
+
"""
|
1709
|
+
|
1710
|
+
term_list = await self._async_get_terms_for_glossary(glossary_guid)
|
1711
|
+
|
1712
|
+
header = [
|
1713
|
+
"Term Name",
|
1714
|
+
"Qualified Name",
|
1715
|
+
"Abbreviation",
|
1716
|
+
"Summary",
|
1717
|
+
"Description",
|
1718
|
+
"Examples",
|
1719
|
+
"Usage",
|
1720
|
+
"Version Identifier",
|
1721
|
+
"Status",
|
1722
|
+
]
|
1723
|
+
|
1724
|
+
with open(target_file, mode="w") as file:
|
1725
|
+
csv_writer = csv.DictWriter(file, fieldnames=header)
|
1726
|
+
csv_writer.writeheader()
|
1727
|
+
count = 0
|
1728
|
+
for term in term_list:
|
1729
|
+
term_name = term["glossaryTermProperties"]["displayName"]
|
1730
|
+
qualified_name = term["glossaryTermProperties"]["qualifiedName"]
|
1731
|
+
abbrev = term["glossaryTermProperties"]["abbreviation"]
|
1732
|
+
summary = term["glossaryTermProperties"]["summary"]
|
1733
|
+
description = term["glossaryTermProperties"]["description"]
|
1734
|
+
examples = term["glossaryTermProperties"]["examples"]
|
1735
|
+
usage = term["glossaryTermProperties"]["usage"]
|
1736
|
+
version = term["glossaryTermProperties"]["publishVersionIdentifier"]
|
1737
|
+
status = term["elementHeader"]["status"]
|
1738
|
+
|
1739
|
+
csv_writer.writerow(
|
1740
|
+
{
|
1741
|
+
"Term Name": term_name,
|
1742
|
+
"Qualified Name": qualified_name,
|
1743
|
+
"Abbreviation": abbrev,
|
1744
|
+
"Summary": summary,
|
1745
|
+
"Description": description,
|
1746
|
+
"Examples": examples,
|
1747
|
+
"Usage": usage,
|
1748
|
+
"Version Identifier": version,
|
1749
|
+
"Status": status,
|
1750
|
+
}
|
1751
|
+
)
|
1752
|
+
|
1753
|
+
count += 1
|
1754
|
+
return count
|
1755
|
+
|
1756
|
+
def export_glossary_to_csv(self, glossary_guid: str, target_file: str) -> int:
|
1757
|
+
"""Export all the terms in a glossary to a CSV file.
|
1758
|
+
|
1759
|
+
Parameters:
|
1760
|
+
-----------
|
1761
|
+
glossary_guid: str
|
1762
|
+
Identity of the glossary to export.
|
1763
|
+
target_file: str
|
1764
|
+
Complete file name with path and extension to export to.
|
1765
|
+
|
1766
|
+
Returns:
|
1767
|
+
int: Number of rows exported.
|
1768
|
+
"""
|
1769
|
+
|
1770
|
+
loop = asyncio.get_event_loop()
|
1771
|
+
response = loop.run_until_complete(
|
1772
|
+
self._async_export_glossary_to_csv(glossary_guid, target_file)
|
1773
|
+
)
|
1774
|
+
|
1775
|
+
return response
|
1776
|
+
|
1530
1777
|
async def _async_create_term_copy(
|
1531
1778
|
self,
|
1532
1779
|
glossary_guid: str,
|
@@ -6,7 +6,7 @@ commands/cat/get_project_dependencies.py,sha256=B0JaMSUi0hzVgos1sTY2uUPGy1DzKEJM
|
|
6
6
|
commands/cat/get_project_structure.py,sha256=n2GbNd07w1DTo7jTR8b2ewXRyNcat_2BcCBRyDMldwk,5969
|
7
7
|
commands/cat/get_tech_type_elements.py,sha256=-m3Q0BoNqkCtV8h75vMwTcOV-_ymEXmnJcr4Ec7WMAw,6180
|
8
8
|
commands/cat/get_tech_type_template.py,sha256=gMFVcgCIm09GQu1Vsc5ZUVH9XLhItAG1eVGZJrcnHeQ,6174
|
9
|
-
commands/cat/glossary_actions.py,sha256=
|
9
|
+
commands/cat/glossary_actions.py,sha256=_DmE_mgm24q1I_IbuytLmkqECWj83Xwmq70E1zMZk5A,13233
|
10
10
|
commands/cat/list_archives.py,sha256=FEZ2XYnQIWo2PztWqnj6unn0pbblPU0-bMbTyI3csv4,5464
|
11
11
|
commands/cat/list_assets.py,sha256=bNwSaBDz661hfnc2Rn4j4HPHAugKvz0XwN9L1m4FVQk,6529
|
12
12
|
commands/cat/list_cert_types.py,sha256=mbCls_EqC5JKG5rvS4o69k7KgZ6aNXlcqoJ3DtHsTFA,7127
|
@@ -16,12 +16,12 @@ commands/cat/list_deployed_databases.py,sha256=HE8nG-mIlxa9iSUEH-n71o-G2a4ss1Zza
|
|
16
16
|
commands/cat/list_projects.py,sha256=Jzs-DtIpPhCH-gY4PYT6mnRBWnEf4m18TFfcw8UymNU,8011
|
17
17
|
commands/cat/list_relationships.py,sha256=U9f78cOi4HyaacqNaFSMq_7rRxVcEczvwPv468GYw3Q,5869
|
18
18
|
commands/cat/list_tech_types.py,sha256=20T4v6L5qeebSsaL1nGkFMDAIsy2W3A3SMm1RcgFoh0,4609
|
19
|
-
commands/cat/list_terms.py,sha256=
|
19
|
+
commands/cat/list_terms.py,sha256=8aS_TwQefU7FCqQiMIuX7BHRAcPRhyKosULEAOLfhyw,6777
|
20
20
|
commands/cat/list_todos.py,sha256=iPxHRyW3X5tiREio4TUOwRPvNPjU0gxm3pVnUI79ir4,6542
|
21
21
|
commands/cat/list_user_ids.py,sha256=7JinL7rknPbGusIb8ikXKEaV1vvbuvx_WWtbmlfS_DY,5093
|
22
22
|
commands/cli/__init__.py,sha256=hpTVSMP2gnPRhcAZPdeUEsQ-eaDySlXlk239dNWYmng,292
|
23
|
-
commands/cli/egeria.py,sha256=
|
24
|
-
commands/cli/egeria_cat.py,sha256=
|
23
|
+
commands/cli/egeria.py,sha256=l475S6iix6PlFcry-mOcSa_ne3XDnm1mKuVvgRFQVq0,31429
|
24
|
+
commands/cli/egeria_cat.py,sha256=7BSdRFWB5AMQC726fQZIBMEti5s469pA9HJ8mESaTCE,14964
|
25
25
|
commands/cli/egeria_my.py,sha256=9zIpUDLeA_R-0rgCSQfEZTtVmkxPcEAsYcCTn1wQFrE,6181
|
26
26
|
commands/cli/egeria_ops.py,sha256=fxDXYWXRhexx06PdSLCp2FhgUtS13NdDpyg7ea775fc,11531
|
27
27
|
commands/cli/egeria_tech.py,sha256=eTDHTHDVEYmr6gUPGfido_Uf7Fec0Nuyxlkhg4KAMAw,13160
|
@@ -92,7 +92,7 @@ pyegeria/egeria_tech_client.py,sha256=7NfqpJFft5GR4NPRDVDw22L9caHbXB8fhx0TAf6qEo
|
|
92
92
|
pyegeria/feedback_manager_omvs.py,sha256=B66e3ZCaC_dirb0mcb2Nz3PYh2ZKsoMAYNOb3euNiro,152931
|
93
93
|
pyegeria/full_omag_server_config.py,sha256=LBnqUiz1ofBdlKBzECFs_pQbdJwcWigAukWHGJRR2nU,47340
|
94
94
|
pyegeria/glossary_browser_omvs.py,sha256=NcitYaZJqwVODBO5zBtWpXPNUJJ3DKzEbRaOFSAyUlg,93554
|
95
|
-
pyegeria/glossary_manager_omvs.py,sha256=
|
95
|
+
pyegeria/glossary_manager_omvs.py,sha256=s9BxAa2UJk5kinS6-U9H6xKqZUG-lp7aqHdNdStaGLs,126294
|
96
96
|
pyegeria/mermaid_utilities.py,sha256=GXiS-subb5nJcDqlThZWX2T8WspU1neFfhf4TxRoMh4,8344
|
97
97
|
pyegeria/my_profile_omvs.py,sha256=DyECbUFEcgokrIbzdMMNljC3bqfqKGXAF2wZEpzvRYs,34666
|
98
98
|
pyegeria/platform_services.py,sha256=CJIOYIFEbcIGwdWlApAQcXxZTsdrhFtpJcm4O3p7dG0,41646
|
@@ -104,8 +104,8 @@ pyegeria/template_manager_omvs.py,sha256=heqbKeum5hPCHap4r1RUZU8YB3QaQlxVNbq4GZi
|
|
104
104
|
pyegeria/utils.py,sha256=1h6bwveadd6GpbnGLTmqPBmBk68QvxdjGTI9RfbrgKY,5415
|
105
105
|
pyegeria/valid_metadata_omvs.py,sha256=tfCGXed5LLt59YA8uZNNtd9UJ-lRZfPU_uZxK31Yux0,65069
|
106
106
|
pyegeria/x_action_author_omvs.py,sha256=xu1IQ0YbhIKi17C5a7Aq9u1Az2czwahNPpX9czmyVxE,6454
|
107
|
-
pyegeria-1.5.1.1.
|
108
|
-
pyegeria-1.5.1.1.
|
109
|
-
pyegeria-1.5.1.1.
|
110
|
-
pyegeria-1.5.1.1.
|
111
|
-
pyegeria-1.5.1.1.
|
107
|
+
pyegeria-1.5.1.1.13.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
108
|
+
pyegeria-1.5.1.1.13.dist-info/METADATA,sha256=XRIsf599nDaJ1HzITqEhfrYYvBMqW2tQlxOg9wgkX0w,2998
|
109
|
+
pyegeria-1.5.1.1.13.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
110
|
+
pyegeria-1.5.1.1.13.dist-info/entry_points.txt,sha256=bmxD0DvBAXMQRU74qf5Jm-lZT6mSonssv_ZFK_uCP2c,4250
|
111
|
+
pyegeria-1.5.1.1.13.dist-info/RECORD,,
|
@@ -5,6 +5,7 @@ create_term=commands.cat.glossary_actions:create_term
|
|
5
5
|
create_todo=commands.my.todo_actions:create_todo
|
6
6
|
delete_glossary=commands.cat.glossary_actions:delete_glossary
|
7
7
|
delete_todo=commands.my.todo_actions:delete_todo
|
8
|
+
export_terms_to_file=commands.cat.glossary_actions:export_terms
|
8
9
|
get_asset_graph=commands.cat.get_asset_graph:main
|
9
10
|
get_collection=commands.cat.get_collection:main
|
10
11
|
get_element_info=commands.tech.get_element_info:main
|
File without changes
|
File without changes
|