pyegeria 5.4.8.6__py3-none-any.whl → 5.4.8.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.
- examples/Coco_config/README.md +19 -0
- examples/Coco_config/__init__.py +4 -0
- examples/Coco_config/config_cocoMDS1.py +108 -0
- examples/Coco_config/config_cocoMDS2.py +126 -0
- examples/Coco_config/config_cocoMDS3.py +109 -0
- examples/Coco_config/config_cocoMDS4.py +91 -0
- examples/Coco_config/config_cocoMDS5.py +116 -0
- examples/Coco_config/config_cocoMDS6.py +114 -0
- examples/Coco_config/config_cocoMDSx.py +119 -0
- examples/Coco_config/config_cocoView1.py +155 -0
- examples/Coco_config/config_coco_core.py +255 -0
- examples/Coco_config/config_coco_datalake.py +450 -0
- examples/Coco_config/config_exchangeDL01.py +106 -0
- examples/Coco_config/config_governDL01.py +80 -0
- examples/Coco_config/config_monitorDev01.py +60 -0
- examples/Coco_config/config_monitorGov01.py +194 -0
- examples/Coco_config/globals.py +154 -0
- examples/GeoSpatial Products Example.py +535 -0
- examples/Jupyter Notebooks/P-egeria-server-config.ipynb +2137 -0
- examples/Jupyter Notebooks/README.md +2 -0
- examples/Jupyter Notebooks/common/P-environment-check.ipynb +115 -0
- examples/Jupyter Notebooks/common/__init__.py +14 -0
- examples/Jupyter Notebooks/common/common-functions.ipynb +4694 -0
- examples/Jupyter Notebooks/common/environment-check.ipynb +53 -0
- examples/Jupyter Notebooks/common/globals.ipynb +184 -0
- examples/Jupyter Notebooks/common/globals.py +154 -0
- examples/Jupyter Notebooks/common/orig_globals.py +152 -0
- examples/format_sets/all_format_sets.json +910 -0
- examples/format_sets/custom_format_sets.json +268 -0
- examples/format_sets/subset_format_sets.json +187 -0
- examples/format_sets_save_load_example.py +294 -0
- examples/output_formats_example.py +193 -0
- md_processing/__init__.py +6 -0
- md_processing/data/commands.json +30640 -59579
- md_processing/dr_egeria.py +18 -0
- md_processing/md_commands/feedback_commands.py +763 -0
- md_processing/md_commands/project_commands.py +1 -1
- md_processing/md_processing_utils/md_processing_constants.py +134 -4
- pyegeria/__init__.py +1 -1
- pyegeria/_client_new.py +109 -12
- pyegeria/_globals.py +3 -2
- pyegeria/base_report_formats.py +17 -0
- pyegeria/format_set_executor.py +5 -2
- {pyegeria-5.4.8.6.dist-info → pyegeria-5.4.8.8.dist-info}/METADATA +1 -1
- {pyegeria-5.4.8.6.dist-info → pyegeria-5.4.8.8.dist-info}/RECORD +49 -16
- {pyegeria-5.4.8.6.dist-info → pyegeria-5.4.8.8.dist-info}/top_level.txt +1 -0
- {pyegeria-5.4.8.6.dist-info → pyegeria-5.4.8.8.dist-info}/WHEEL +0 -0
- {pyegeria-5.4.8.6.dist-info → pyegeria-5.4.8.8.dist-info}/entry_points.txt +0 -0
- {pyegeria-5.4.8.6.dist-info → pyegeria-5.4.8.8.dist-info}/licenses/LICENSE +0 -0
|
@@ -167,7 +167,8 @@ COLLECTION_CREATE = ["Create Collection", "Update Collection", "Create Digital P
|
|
|
167
167
|
"Update Digital Product Catalog",
|
|
168
168
|
"Create Root Collection", "Update Root Collection", "Create Folder", "Update Folder",
|
|
169
169
|
]
|
|
170
|
-
|
|
170
|
+
FEEDBACK_COMMANDS = ["Create Comment", "Update Comment", "Create NoteLog", "Update NoteLog", "Create Note", "Update Note",
|
|
171
|
+
"Create Informal Tag", "Update Informal Tag", "Tag Element"]
|
|
171
172
|
|
|
172
173
|
command_list = ["Provenance", "Create Glossary", "Update Glossary", "Create Term", "Update Term", "List Terms",
|
|
173
174
|
"List Term Details", "List Glossary Terms", "List Term History", "List Term Revision History",
|
|
@@ -256,7 +257,7 @@ command_list.extend(PROJECT_COMMANDS)
|
|
|
256
257
|
command_list.extend(EXT_REF_COMMANDS)
|
|
257
258
|
command_list.extend(["Link Governance Response", "Detach Governance Response",
|
|
258
259
|
"Link Governance Mechanism", "Detach Governance Mechanism"])
|
|
259
|
-
|
|
260
|
+
command_list.extend(FEEDBACK_COMMANDS)
|
|
260
261
|
pre_command = "\n---\n==> Processing object_action:"
|
|
261
262
|
command_seperator = Markdown("\n---\n")
|
|
262
263
|
EXISTS_REQUIRED = "Exists Required"
|
|
@@ -265,18 +266,147 @@ COMMAND_DEFINITIONS = {}
|
|
|
265
266
|
debug_level = DEBUG_LEVEL
|
|
266
267
|
|
|
267
268
|
|
|
269
|
+
# def load_commands(filename: str) -> None:
|
|
270
|
+
# global COMMAND_DEFINITIONS
|
|
271
|
+
#
|
|
272
|
+
# try:
|
|
273
|
+
# config_path = importlib.resources.files("md_processing") / "data" / filename
|
|
274
|
+
# config_str = config_path.read_text(encoding="utf-8")
|
|
275
|
+
# COMMAND_DEFINITIONS = json.loads(config_str)
|
|
276
|
+
#
|
|
277
|
+
# except FileNotFoundError:
|
|
278
|
+
# msg = f"ERROR: File {filename} not found."
|
|
279
|
+
# print(ERROR, msg, debug_level)
|
|
280
|
+
|
|
268
281
|
def load_commands(filename: str) -> None:
|
|
269
282
|
global COMMAND_DEFINITIONS
|
|
270
283
|
|
|
271
284
|
try:
|
|
272
285
|
config_path = importlib.resources.files("md_processing") / "data" / filename
|
|
273
286
|
config_str = config_path.read_text(encoding="utf-8")
|
|
274
|
-
|
|
287
|
+
|
|
288
|
+
# Validate JSON before attempting to load
|
|
289
|
+
try:
|
|
290
|
+
COMMAND_DEFINITIONS = json.loads(config_str)
|
|
291
|
+
print(f"Successfully loaded {filename}")
|
|
292
|
+
except json.JSONDecodeError as json_err:
|
|
293
|
+
# Provide detailed error information
|
|
294
|
+
error_line = json_err.lineno
|
|
295
|
+
error_col = json_err.colno
|
|
296
|
+
error_pos = json_err.pos
|
|
297
|
+
|
|
298
|
+
# Extract context around the error
|
|
299
|
+
lines = config_str.split('\n')
|
|
300
|
+
start_line = max(0, error_line - 3)
|
|
301
|
+
end_line = min(len(lines), error_line + 2)
|
|
302
|
+
|
|
303
|
+
context = '\n'.join([
|
|
304
|
+
f"Line {i + 1}: {lines[i]}"
|
|
305
|
+
for i in range(start_line, end_line)
|
|
306
|
+
])
|
|
307
|
+
|
|
308
|
+
error_msg = (
|
|
309
|
+
f"\n{'=' * 80}\n"
|
|
310
|
+
f"ERROR: Invalid JSON in {filename}\n"
|
|
311
|
+
f"{'=' * 80}\n"
|
|
312
|
+
f"Location: Line {error_line}, Column {error_col} (char position {error_pos})\n"
|
|
313
|
+
f"Error: {json_err.msg}\n"
|
|
314
|
+
f"\nContext around error:\n{context}\n"
|
|
315
|
+
f"{'=' * 80}\n"
|
|
316
|
+
f"\nPlease fix the JSON syntax error in {filename} at line {error_line}.\n"
|
|
317
|
+
f"Common issues:\n"
|
|
318
|
+
f" - Missing comma between elements\n"
|
|
319
|
+
f" - Trailing comma before closing bracket/brace\n"
|
|
320
|
+
f" - Unescaped quotes in strings\n"
|
|
321
|
+
f" - Missing closing bracket/brace\n"
|
|
322
|
+
f"{'=' * 80}\n"
|
|
323
|
+
)
|
|
324
|
+
|
|
325
|
+
print(error_msg)
|
|
326
|
+
|
|
327
|
+
# Initialize with empty dict to allow application to continue
|
|
328
|
+
# (though functionality will be limited)
|
|
329
|
+
COMMAND_DEFINITIONS = {}
|
|
330
|
+
|
|
331
|
+
# Re-raise with more context
|
|
332
|
+
raise json.JSONDecodeError(
|
|
333
|
+
f"Invalid JSON in {filename}: {json_err.msg}",
|
|
334
|
+
json_err.doc,
|
|
335
|
+
json_err.pos
|
|
336
|
+
) from json_err
|
|
275
337
|
|
|
276
338
|
except FileNotFoundError:
|
|
277
339
|
msg = f"ERROR: File {filename} not found."
|
|
278
|
-
print(
|
|
340
|
+
print(msg)
|
|
341
|
+
COMMAND_DEFINITIONS = {}
|
|
342
|
+
raise FileNotFoundError(msg)
|
|
343
|
+
except Exception as e:
|
|
344
|
+
msg = f"ERROR: Unexpected error loading {filename}: {str(e)}"
|
|
345
|
+
print(msg)
|
|
346
|
+
COMMAND_DEFINITIONS = {}
|
|
347
|
+
raise
|
|
348
|
+
|
|
349
|
+
|
|
350
|
+
def validate_json_file(filename: str) -> tuple[bool, str]:
|
|
351
|
+
"""
|
|
352
|
+
Validate a JSON file and return status with error details.
|
|
353
|
+
|
|
354
|
+
Returns:
|
|
355
|
+
tuple: (is_valid: bool, message: str)
|
|
356
|
+
"""
|
|
357
|
+
try:
|
|
358
|
+
config_path = importlib.resources.files("md_processing") / "data" / filename
|
|
359
|
+
config_str = config_path.read_text(encoding="utf-8")
|
|
360
|
+
json.loads(config_str)
|
|
361
|
+
return True, f"JSON file {filename} is valid"
|
|
362
|
+
except json.JSONDecodeError as e:
|
|
363
|
+
error_msg = (
|
|
364
|
+
f"Invalid JSON at line {e.lineno}, column {e.colno}: {e.msg}\n"
|
|
365
|
+
f"Character position: {e.pos}"
|
|
366
|
+
)
|
|
367
|
+
return False, error_msg
|
|
368
|
+
except Exception as e:
|
|
369
|
+
return False, f"Error reading file: {str(e)}"
|
|
370
|
+
|
|
371
|
+
|
|
372
|
+
def find_json_errors(filename: str, max_errors: int = 10) -> list[str]:
|
|
373
|
+
"""
|
|
374
|
+
Attempt to find multiple JSON errors in a file.
|
|
375
|
+
|
|
376
|
+
This function tries to parse the JSON and collect error information.
|
|
377
|
+
"""
|
|
378
|
+
errors = []
|
|
379
|
+
try:
|
|
380
|
+
config_path = importlib.resources.files("md_processing") / "data" / filename
|
|
381
|
+
config_str = config_path.read_text(encoding="utf-8")
|
|
382
|
+
|
|
383
|
+
# Try to parse
|
|
384
|
+
json.loads(config_str)
|
|
385
|
+
return ["No errors found - JSON is valid"]
|
|
386
|
+
|
|
387
|
+
except json.JSONDecodeError as e:
|
|
388
|
+
lines = config_str.split('\n')
|
|
389
|
+
error_line = e.lineno - 1 # Convert to 0-indexed
|
|
390
|
+
|
|
391
|
+
# Get context
|
|
392
|
+
start = max(0, error_line - 2)
|
|
393
|
+
end = min(len(lines), error_line + 3)
|
|
394
|
+
|
|
395
|
+
error_context = []
|
|
396
|
+
for i in range(start, end):
|
|
397
|
+
prefix = ">>> " if i == error_line else " "
|
|
398
|
+
error_context.append(f"{prefix}Line {i + 1}: {lines[i]}")
|
|
399
|
+
|
|
400
|
+
error_msg = (
|
|
401
|
+
f"Error at line {e.lineno}, column {e.colno}: {e.msg}\n" +
|
|
402
|
+
"\n".join(error_context)
|
|
403
|
+
)
|
|
404
|
+
errors.append(error_msg)
|
|
405
|
+
|
|
406
|
+
except Exception as e:
|
|
407
|
+
errors.append(f"Unexpected error: {str(e)}")
|
|
279
408
|
|
|
409
|
+
return errors
|
|
280
410
|
|
|
281
411
|
def get_command_spec(command: str) -> dict | None:
|
|
282
412
|
global COMMAND_DEFINITIONS
|
pyegeria/__init__.py
CHANGED
|
@@ -15,7 +15,7 @@ the server platform and servers.
|
|
|
15
15
|
from ._globals import (default_time_out, disable_ssl_warnings, enable_ssl_check,
|
|
16
16
|
is_debug, max_paging_size, NO_ELEMENTS_FOUND, NO_ASSETS_FOUND, NO_SERVERS_FOUND,
|
|
17
17
|
NO_CATALOGS_FOUND, NO_GLOSSARIES_FOUND, NO_TERMS_FOUND, NO_CATEGORIES_FOUND, NO_ELEMENT_FOUND,
|
|
18
|
-
NO_PROJECTS_FOUND, DEBUG_LEVEL, NO_COLLECTION_FOUND, NO_GUID_RETURNED,
|
|
18
|
+
NO_PROJECTS_FOUND, DEBUG_LEVEL, NO_COLLECTION_FOUND, NO_GUID_RETURNED, COMMENT_TYPES
|
|
19
19
|
)
|
|
20
20
|
|
|
21
21
|
|
pyegeria/_client_new.py
CHANGED
|
@@ -23,7 +23,7 @@ from pyegeria._base_client import BaseClient
|
|
|
23
23
|
from pyegeria._exceptions_new import (
|
|
24
24
|
PyegeriaConnectionException, PyegeriaInvalidParameterException, PyegeriaException
|
|
25
25
|
)
|
|
26
|
-
from pyegeria._globals import max_paging_size, NO_ELEMENTS_FOUND, default_time_out
|
|
26
|
+
from pyegeria._globals import max_paging_size, NO_ELEMENTS_FOUND, default_time_out, COMMENT_TYPES
|
|
27
27
|
from pyegeria.base_report_formats import get_report_spec_match
|
|
28
28
|
from pyegeria.base_report_formats import select_report_spec
|
|
29
29
|
from pyegeria.models import (SearchStringRequestBody, FilterRequestBody, GetRequestBody, NewElementRequestBody,
|
|
@@ -920,12 +920,15 @@ class Client2(BaseClient):
|
|
|
920
920
|
|
|
921
921
|
"""
|
|
922
922
|
if body is None:
|
|
923
|
+
if comment_type not in COMMENT_TYPES:
|
|
924
|
+
context = {"issue": "Invalid comment type"}
|
|
925
|
+
raise PyegeriaInvalidParameterException(context=context)
|
|
923
926
|
body = {
|
|
924
927
|
"class": "NewAttachmentRequestBody",
|
|
925
928
|
"properties": {
|
|
926
929
|
"class": "CommentProperties",
|
|
927
|
-
"qualifiedName": self.make_feedback_qn("
|
|
928
|
-
"
|
|
930
|
+
"qualifiedName": self.make_feedback_qn("Comment", comment_guid),
|
|
931
|
+
"description": comment,
|
|
929
932
|
"commentType": comment_type
|
|
930
933
|
}
|
|
931
934
|
}
|
|
@@ -1005,6 +1008,9 @@ class Client2(BaseClient):
|
|
|
1005
1008
|
|
|
1006
1009
|
"""
|
|
1007
1010
|
if body is None:
|
|
1011
|
+
if comment_type not in COMMENT_TYPES:
|
|
1012
|
+
context = {"issue": "Invalid comment type"}
|
|
1013
|
+
raise PyegeriaInvalidParameterException(context=context)
|
|
1008
1014
|
body = {
|
|
1009
1015
|
"class": "NewAttachmentRequestBody",
|
|
1010
1016
|
"properties": {
|
|
@@ -1095,6 +1101,9 @@ class Client2(BaseClient):
|
|
|
1095
1101
|
|
|
1096
1102
|
"""
|
|
1097
1103
|
if body is None and comment:
|
|
1104
|
+
if comment_type not in COMMENT_TYPES:
|
|
1105
|
+
context = {"issue": "Invalid comment type"}
|
|
1106
|
+
raise PyegeriaInvalidParameterException(context=context)
|
|
1098
1107
|
body = {
|
|
1099
1108
|
"class": "UpdateElementRequestBody",
|
|
1100
1109
|
"mergeUpdate": merge_update,
|
|
@@ -1426,7 +1435,7 @@ class Client2(BaseClient):
|
|
|
1426
1435
|
"""
|
|
1427
1436
|
loop = asyncio.get_event_loop()
|
|
1428
1437
|
response = loop.run_until_complete(
|
|
1429
|
-
self.
|
|
1438
|
+
self._async_get_comment_by_guid(comment_guid, element_type, body, output_format, report_spec)
|
|
1430
1439
|
)
|
|
1431
1440
|
return response
|
|
1432
1441
|
|
|
@@ -1707,8 +1716,8 @@ class Client2(BaseClient):
|
|
|
1707
1716
|
description: str, optional
|
|
1708
1717
|
- text of the note log
|
|
1709
1718
|
body
|
|
1710
|
-
- contains the name of the log and text. If present, the contents
|
|
1711
|
-
the supplied parameters.
|
|
1719
|
+
- contains the name of the log and text. If present, the contents overrides
|
|
1720
|
+
the supplied parameters. If no element is provided, the property class must be "NewElementRequestBody".
|
|
1712
1721
|
|
|
1713
1722
|
Returns
|
|
1714
1723
|
-------
|
|
@@ -1719,7 +1728,7 @@ class Client2(BaseClient):
|
|
|
1719
1728
|
PyegeriaException
|
|
1720
1729
|
Notes:
|
|
1721
1730
|
------
|
|
1722
|
-
Sample Body:
|
|
1731
|
+
Sample Body (simple version attaching to an associated element):
|
|
1723
1732
|
|
|
1724
1733
|
{
|
|
1725
1734
|
"class" : "NewAttachmentRequestBody",
|
|
@@ -1740,8 +1749,47 @@ class Client2(BaseClient):
|
|
|
1740
1749
|
}
|
|
1741
1750
|
}
|
|
1742
1751
|
}
|
|
1752
|
+
|
|
1753
|
+
Full feature version allowing optional standalone use or attachment to an additional element:
|
|
1754
|
+
{
|
|
1755
|
+
"class" : "NewElementRequestBody",
|
|
1756
|
+
"anchorGUID" : "add guid here",
|
|
1757
|
+
"isOwnAnchor": false,
|
|
1758
|
+
"parentGUID": "add guid here",
|
|
1759
|
+
"parentRelationshipTypeName": "add type name here",
|
|
1760
|
+
"parentRelationshipProperties": {
|
|
1761
|
+
"class": "RelationshipElementProperties",
|
|
1762
|
+
"propertyValueMap" : {
|
|
1763
|
+
"description" : {
|
|
1764
|
+
"class": "PrimitiveTypePropertyValue",
|
|
1765
|
+
"typeName": "string",
|
|
1766
|
+
"primitiveValue" : "New description"
|
|
1767
|
+
}
|
|
1768
|
+
}
|
|
1769
|
+
},
|
|
1770
|
+
"parentAtEnd1": false,
|
|
1771
|
+
"properties": {
|
|
1772
|
+
"class": "NoteLogProperties",
|
|
1773
|
+
"qualifiedName": "Add unique name here",
|
|
1774
|
+
"displayName": "Add name here",
|
|
1775
|
+
"description": "Add description here",
|
|
1776
|
+
"additionalProperties": {
|
|
1777
|
+
"propertyName 1": "property value 1",
|
|
1778
|
+
"propertyName 2": "property value 2"
|
|
1779
|
+
},
|
|
1780
|
+
"effectiveFrom": "{{$isoTimestamp}}",
|
|
1781
|
+
"effectiveTo": "{{$isoTimestamp}}"
|
|
1782
|
+
},
|
|
1783
|
+
"externalSourceGUID": "add guid here",
|
|
1784
|
+
"externalSourceName": "add qualified name here",
|
|
1785
|
+
"effectiveTime" : "{{$isoTimestamp}}",
|
|
1786
|
+
"forLineage" : false,
|
|
1787
|
+
"forDuplicateProcessing" : false
|
|
1788
|
+
}
|
|
1789
|
+
|
|
1790
|
+
|
|
1743
1791
|
"""
|
|
1744
|
-
if body is None:
|
|
1792
|
+
if body is None and element_guid:
|
|
1745
1793
|
body = {
|
|
1746
1794
|
"class": "NewAttachmentRequestBody",
|
|
1747
1795
|
"properties": {
|
|
@@ -1751,6 +1799,17 @@ class Client2(BaseClient):
|
|
|
1751
1799
|
"description": description,
|
|
1752
1800
|
}
|
|
1753
1801
|
}
|
|
1802
|
+
elif body is None and not element_guid:
|
|
1803
|
+
body = {
|
|
1804
|
+
"class": "NewAElementRequestBody",
|
|
1805
|
+
"properties": {
|
|
1806
|
+
"class": "NoteLogProperties",
|
|
1807
|
+
"displayName": display_name,
|
|
1808
|
+
"qualifiedName": self.make_feedback_qn("NoteLog", element_guid, display_name),
|
|
1809
|
+
"description": description,
|
|
1810
|
+
}
|
|
1811
|
+
}
|
|
1812
|
+
|
|
1754
1813
|
elif body is None and display_name is None:
|
|
1755
1814
|
context = {"issue": "Invalid display name and body not provided"}
|
|
1756
1815
|
raise PyegeriaInvalidParameterException(context=context)
|
|
@@ -1815,6 +1874,44 @@ class Client2(BaseClient):
|
|
|
1815
1874
|
}
|
|
1816
1875
|
}
|
|
1817
1876
|
}
|
|
1877
|
+
|
|
1878
|
+
Full feature version allowing optional standalone use or attachment to an additional element:
|
|
1879
|
+
{
|
|
1880
|
+
"class" : "NewElementRequestBody",
|
|
1881
|
+
"anchorGUID" : "add guid here",
|
|
1882
|
+
"isOwnAnchor": false,
|
|
1883
|
+
"parentGUID": "add guid here",
|
|
1884
|
+
"parentRelationshipTypeName": "add type name here",
|
|
1885
|
+
"parentRelationshipProperties": {
|
|
1886
|
+
"class": "RelationshipElementProperties",
|
|
1887
|
+
"propertyValueMap" : {
|
|
1888
|
+
"description" : {
|
|
1889
|
+
"class": "PrimitiveTypePropertyValue",
|
|
1890
|
+
"typeName": "string",
|
|
1891
|
+
"primitiveValue" : "New description"
|
|
1892
|
+
}
|
|
1893
|
+
}
|
|
1894
|
+
},
|
|
1895
|
+
"parentAtEnd1": false,
|
|
1896
|
+
"properties": {
|
|
1897
|
+
"class": "NoteLogProperties",
|
|
1898
|
+
"qualifiedName": "Add unique name here",
|
|
1899
|
+
"displayName": "Add name here",
|
|
1900
|
+
"description": "Add description here",
|
|
1901
|
+
"additionalProperties": {
|
|
1902
|
+
"propertyName 1": "property value 1",
|
|
1903
|
+
"propertyName 2": "property value 2"
|
|
1904
|
+
},
|
|
1905
|
+
"effectiveFrom": "{{$isoTimestamp}}",
|
|
1906
|
+
"effectiveTo": "{{$isoTimestamp}}"
|
|
1907
|
+
},
|
|
1908
|
+
"externalSourceGUID": "add guid here",
|
|
1909
|
+
"externalSourceName": "add qualified name here",
|
|
1910
|
+
"effectiveTime" : "{{$isoTimestamp}}",
|
|
1911
|
+
"forLineage" : false,
|
|
1912
|
+
"forDuplicateProcessing" : false
|
|
1913
|
+
}
|
|
1914
|
+
|
|
1818
1915
|
"""
|
|
1819
1916
|
loop = asyncio.get_event_loop()
|
|
1820
1917
|
response = loop.run_until_complete(
|
|
@@ -2208,7 +2305,7 @@ class Client2(BaseClient):
|
|
|
2208
2305
|
return response
|
|
2209
2306
|
|
|
2210
2307
|
@dynamic_catch
|
|
2211
|
-
def
|
|
2308
|
+
def get_note_logs_by_name(
|
|
2212
2309
|
self, filter: str,
|
|
2213
2310
|
element_type: str = "NoteLog",
|
|
2214
2311
|
body: dict | FilterRequestBody = None,
|
|
@@ -3354,7 +3451,7 @@ class Client2(BaseClient):
|
|
|
3354
3451
|
)
|
|
3355
3452
|
|
|
3356
3453
|
@dynamic_catch
|
|
3357
|
-
async def
|
|
3454
|
+
async def _async_get_tag_by_guid(
|
|
3358
3455
|
self,
|
|
3359
3456
|
tag_guid: str,
|
|
3360
3457
|
body: dict | GetRequestBody = None,
|
|
@@ -3396,7 +3493,7 @@ class Client2(BaseClient):
|
|
|
3396
3493
|
return response
|
|
3397
3494
|
|
|
3398
3495
|
@dynamic_catch
|
|
3399
|
-
def
|
|
3496
|
+
def get_tag_by_guid(
|
|
3400
3497
|
self,
|
|
3401
3498
|
tag_guid: str,
|
|
3402
3499
|
body: dict | GetRequestBody = None,
|
|
@@ -3427,7 +3524,7 @@ class Client2(BaseClient):
|
|
|
3427
3524
|
"""
|
|
3428
3525
|
loop = asyncio.get_event_loop()
|
|
3429
3526
|
response = loop.run_until_complete(
|
|
3430
|
-
self.
|
|
3527
|
+
self._async_get_tag_by_guid(tag_guid, body, output_format, report_spec)
|
|
3431
3528
|
)
|
|
3432
3529
|
return response
|
|
3433
3530
|
|
pyegeria/_globals.py
CHANGED
|
@@ -15,13 +15,14 @@ enable_ssl_check = False
|
|
|
15
15
|
max_paging_size = 500
|
|
16
16
|
default_time_out = 30
|
|
17
17
|
DEBUG_LEVEL = "quiet"
|
|
18
|
-
|
|
18
|
+
COMMENT_TYPES = (
|
|
19
|
+
"STANDARD_COMMENT",
|
|
19
20
|
"ANSWER",
|
|
20
21
|
"OTHER",
|
|
21
22
|
"QUESTION",
|
|
22
|
-
"STANDARD_COMMENT",
|
|
23
23
|
"SUGGESTION",
|
|
24
24
|
"USAGE_EXPERIENCE",
|
|
25
|
+
"REQUIREMENT"
|
|
25
26
|
)
|
|
26
27
|
star_ratings = (
|
|
27
28
|
"FIVE_STARS",
|
pyegeria/base_report_formats.py
CHANGED
|
@@ -348,6 +348,23 @@ base_report_specs = FormatSetDict({
|
|
|
348
348
|
)
|
|
349
349
|
],
|
|
350
350
|
),
|
|
351
|
+
"Comments-DrE": FormatSet(
|
|
352
|
+
target_type="Comments",
|
|
353
|
+
heading="Comments",
|
|
354
|
+
description="Details of a comment.",
|
|
355
|
+
annotations={}, # No specific annotations
|
|
356
|
+
formats=[
|
|
357
|
+
Format(
|
|
358
|
+
types=["ALL"],
|
|
359
|
+
attributes=[
|
|
360
|
+
Column(name='Display Name', key='display_name'),
|
|
361
|
+
Column(name="Qualified Name", key='qualified_name'),
|
|
362
|
+
Column(name="GUID", key='guid'),
|
|
363
|
+
Column(name="Comment", key='description')
|
|
364
|
+
],
|
|
365
|
+
)
|
|
366
|
+
],
|
|
367
|
+
),
|
|
351
368
|
|
|
352
369
|
"ExternalReference": FormatSet(
|
|
353
370
|
target_type="External Reference",
|
pyegeria/format_set_executor.py
CHANGED
|
@@ -202,7 +202,7 @@ async def _async_run_report(
|
|
|
202
202
|
|
|
203
203
|
|
|
204
204
|
def exec_report_spec(
|
|
205
|
-
format_set_name: str,
|
|
205
|
+
format_set_name: str | dict,
|
|
206
206
|
*,
|
|
207
207
|
output_format: str = "DICT",
|
|
208
208
|
params: Optional[Dict[str, Any]] = None,
|
|
@@ -224,7 +224,10 @@ def exec_report_spec(
|
|
|
224
224
|
params = dict(params or {})
|
|
225
225
|
|
|
226
226
|
# Resolve the format set and action
|
|
227
|
-
|
|
227
|
+
if isinstance(format_set_name, dict):
|
|
228
|
+
fmt = format_set_name
|
|
229
|
+
else:
|
|
230
|
+
fmt = select_report_spec(format_set_name, output_format)
|
|
228
231
|
if not fmt:
|
|
229
232
|
raise ValueError(
|
|
230
233
|
f"Output format set '{format_set_name}' does not have a compatible '{output_format}' format."
|
|
@@ -90,19 +90,52 @@ commands/tech/list_tech_templates.py,sha256=5hhDJJjrqGyWDPPcFzFeFs-4rsal1M2Bl7EU
|
|
|
90
90
|
commands/tech/list_valid_metadata_values.py,sha256=_zgOdq2N6s7GjLd8iEc5xVfplKfOnKZ-ySM-lSdgYn8,6315
|
|
91
91
|
commands/tech/table_tech_templates.py,sha256=jI1c9YKa3KirArMNXeCRKeaiVdwQSN-ztPqkag6jdZs,9500
|
|
92
92
|
commands/tech/x_list_related_elements.py,sha256=ynaw792VnbMZ9IXBi5mmG7xBfC0kn0esKiFTsjvLGzc,5900
|
|
93
|
-
|
|
94
|
-
|
|
93
|
+
examples/GeoSpatial Products Example.py,sha256=nc3V0USKBhnBEVDFm49HAH3sDUbmdBfomzxTAXxX4X4,20509
|
|
94
|
+
examples/format_sets_save_load_example.py,sha256=zYmP8TT1oRBSh_iA6C6bg77SezGRg-YmMBFl2xP_fbY,10358
|
|
95
|
+
examples/output_formats_example.py,sha256=4Kvw1cO7Ry2B3939dUnlyF20eTT-G3j5QswjIsSf4wY,6842
|
|
96
|
+
examples/Coco_config/README.md,sha256=esOnItNjjk06ojF_cJoIrP07n8-gaGYej8TNUNlkkec,926
|
|
97
|
+
examples/Coco_config/__init__.py,sha256=ot3LsIUH5nGOJIf2NNZRyK604DRQHOohkGZ9qtf_SE4,45
|
|
98
|
+
examples/Coco_config/config_cocoMDS1.py,sha256=8xCOCQPCoz3t6roxAkfdCqBDJjEFamqXp7-I9bDks14,3861
|
|
99
|
+
examples/Coco_config/config_cocoMDS2.py,sha256=eDIOZpWgMwPl7vpT4J31R5K89OmnU5ryDG1eTwEsTAU,5040
|
|
100
|
+
examples/Coco_config/config_cocoMDS3.py,sha256=44hqsnP8q-JgiMyz5OVL3uSgXRNS6QZbzT6hsFqO3Po,3584
|
|
101
|
+
examples/Coco_config/config_cocoMDS4.py,sha256=MOkv7gqD-THf0rDKAd0dXMB1l5ZTF7QHQv4PbHhXxao,2774
|
|
102
|
+
examples/Coco_config/config_cocoMDS5.py,sha256=lDjzAgoycVaclYDJg_JCtD2MVoqqV3kq7JBjPXVyZyI,3093
|
|
103
|
+
examples/Coco_config/config_cocoMDS6.py,sha256=gVX0XqVV9fuNxdsRmFQnqjuaFmezhlL9WlnZPdgTbM0,3803
|
|
104
|
+
examples/Coco_config/config_cocoMDSx.py,sha256=Rqt1EEiqvhld-z51Z3Dzy248jZk8n0oJQ2OzzhSz8Zk,4111
|
|
105
|
+
examples/Coco_config/config_cocoView1.py,sha256=2I9SoDnQ8g0fU8_BDm31O2G8LC4DPH0kM8WgWum_3a4,5384
|
|
106
|
+
examples/Coco_config/config_coco_core.py,sha256=-1xVHx6ga0Yv4f7tVTRBTG9hiRFN-b9QK6EcukXDNK0,8919
|
|
107
|
+
examples/Coco_config/config_coco_datalake.py,sha256=GQojkwTNb1kBGVDBtpHm0Xm970LLIQodcNl9daIhvk4,14996
|
|
108
|
+
examples/Coco_config/config_exchangeDL01.py,sha256=mN6nASqLX_dH3-AagHAIbl1tVuSYIlFKslno_nPs3ps,3287
|
|
109
|
+
examples/Coco_config/config_governDL01.py,sha256=peZ8VTOlIctqFQmwpBPkzfkQuHYerUwh3ewvq09_Jz0,2341
|
|
110
|
+
examples/Coco_config/config_monitorDev01.py,sha256=cAdxWBw3yKFY4QbGLq3vxZ_kPg2MiAPz27U4XIlTpVE,1896
|
|
111
|
+
examples/Coco_config/config_monitorGov01.py,sha256=Xsq4MZF3DfrKTO1sUOIzar4homvQBWj0v9gwdHxdr-A,7148
|
|
112
|
+
examples/Coco_config/globals.py,sha256=fpaUhvvxKS4LE7sHvHhmtdz8ErPg-ZnidcviWfZMIKQ,5709
|
|
113
|
+
examples/Jupyter Notebooks/P-egeria-server-config.ipynb,sha256=IOuDa3Q6SqiIyXEDGMWC8y_DzSaGoU4mWxJxuWL-MzY,111675
|
|
114
|
+
examples/Jupyter Notebooks/README.md,sha256=1ZqEQWu3nrNcf8KG2b7q08OIx2J6iZ6sPyuwSdkRy40,170
|
|
115
|
+
examples/Jupyter Notebooks/common/P-environment-check.ipynb,sha256=fX34h-QZRphgAlzR0GGZttl78KxJlQP_2q4kNiSZhW8,2942
|
|
116
|
+
examples/Jupyter Notebooks/common/__init__.py,sha256=iA_4Q_V3MbNseuq7PFWunX9GmJo3FvJhz-fv7xpIGbU,407
|
|
117
|
+
examples/Jupyter Notebooks/common/common-functions.ipynb,sha256=ctOqx8zG-Yk5elPMWgM6lNx2hUCFSVMzYIjxWYwsGvs,276828
|
|
118
|
+
examples/Jupyter Notebooks/common/environment-check.ipynb,sha256=zQtXLCQBNvhIX9_eOviXHaX3MQ1g5Pgx-aGElFgckAA,1449
|
|
119
|
+
examples/Jupyter Notebooks/common/globals.ipynb,sha256=egoxpNUevuSeNTBV1d909u6W9NzfDPKcbgY_aZgX4Sg,7845
|
|
120
|
+
examples/Jupyter Notebooks/common/globals.py,sha256=Gn4Iij9DvVjinGqUPqtijfhewnU0vuramdmtk-Fs-8U,5710
|
|
121
|
+
examples/Jupyter Notebooks/common/orig_globals.py,sha256=VtwTB336p9WyNJaFEtE9keo9vdDl-GnvkZPaKiVa1VA,5659
|
|
122
|
+
examples/format_sets/all_format_sets.json,sha256=rPesOiP-Vgooe78Y_epuQjyk_KrabTV6icHwXF73p3s,19991
|
|
123
|
+
examples/format_sets/custom_format_sets.json,sha256=X3NG9Qe8L0KlfrUfjd2ju15I2IayV1mFEQxC4rdW2Fg,5614
|
|
124
|
+
examples/format_sets/subset_format_sets.json,sha256=cRgpGuuQht9KkJR6nLxQ8GaEAZtc-ZmbCgU8syHcNkc,4009
|
|
125
|
+
md_processing/__init__.py,sha256=2SrcrDsGaetFZgPLjNnDJ7q3t_19FsY-cFLOz5h1A4Q,7758
|
|
126
|
+
md_processing/dr_egeria.py,sha256=tir3svioN0y0O5lbK2LhrRQZ6ZcszJo9jme-czE9788,22174
|
|
95
127
|
md_processing/data/commands-working.json,sha256=uCo_azcuuYqGm7QffJeCGj7PyZuZRGdu7kKf4XWmMoA,1162560
|
|
96
|
-
md_processing/data/commands.json,sha256=
|
|
128
|
+
md_processing/data/commands.json,sha256=1kd-soUijSsNCig9SbENdgCf5Zm1oLADJ1z_QR3AcYQ,1035975
|
|
97
129
|
md_processing/data/generated_format_sets.json,sha256=80Z9yt8ll4x-gODzOQyGIweKoqfSsVIin9esaKUeKsA,98631
|
|
98
130
|
md_processing/data/generated_format_sets.py,sha256=2BfRzb5G5n8Cz6VwirQXlBq1fHBISIh4x7jquXg6QEw,36402
|
|
99
131
|
md_processing/md_commands/__init__.py,sha256=ssEojzFlSYtY2bHqqOoKo8PFaANZ_kq_gIbtlXnuc2s,93
|
|
100
132
|
md_processing/md_commands/data_designer_commands.py,sha256=ab0uZo4NutKKpwbMnZhZvkyny2jf6lZjx4pJXdOPQ70,65456
|
|
101
133
|
md_processing/md_commands/ext_ref_commands.py,sha256=jYTD_FsMK0M6pefnkluEpWEcS_VShllMvNFYsZTE3NQ,23558
|
|
134
|
+
md_processing/md_commands/feedback_commands.py,sha256=CgCkFWlJRMXycfK5srElBzN8aqU6mVMv61-fFOgiEz4,32919
|
|
102
135
|
md_processing/md_commands/glossary_commands.py,sha256=F8BPFL5GlCQ3oSs8svSL5PipzmWBiXpCqUAdKUZhGkY,33373
|
|
103
136
|
md_processing/md_commands/governance_officer_commands.py,sha256=drq7H-f9J8j1x9Gw2FKi9M92RsF22oX7cu_9JJdzWJ4,26467
|
|
104
137
|
md_processing/md_commands/product_manager_commands.py,sha256=RPfApQQ4z0dLTBF9jUN1AaxnYAk_Vn6axlzvSiOgMk8,57742
|
|
105
|
-
md_processing/md_commands/project_commands.py,sha256=
|
|
138
|
+
md_processing/md_commands/project_commands.py,sha256=mpQNQ1xj8QpSHQzBe-Egc-WSv_EUmZMoScl5fkeCJuc,17094
|
|
106
139
|
md_processing/md_commands/solution_architect_commands.py,sha256=Oqtz6nIKA-ZoznZCzevq0rCnsp29j1_mwi1uQoiNyL0,55302
|
|
107
140
|
md_processing/md_commands/view_commands.py,sha256=AQsjR6whW_mV-_I_Ihq2xCv3dbEXip6EQEpzB0-UiA0,12042
|
|
108
141
|
md_processing/md_processing_utils/__init__.py,sha256=LxAmxlcji26ziKV4gGar01d95gL9vgToRIeJW8N-Ifs,80
|
|
@@ -114,23 +147,23 @@ md_processing/md_processing_utils/gen_format_sets.py,sha256=JoOUT56IEj3jT1StMdMe
|
|
|
114
147
|
md_processing/md_processing_utils/generate_dr_help.py,sha256=NKSC2Tf7QzkYkGJD3u_o_Xn9nN9ZvrQU_jPt-R7X3Js,7422
|
|
115
148
|
md_processing/md_processing_utils/generate_md_cmd_templates.py,sha256=mFenxe9Jq8QivgmI0ZFtO_iu6P6RH_EiNa__CGyDw_0,5809
|
|
116
149
|
md_processing/md_processing_utils/generate_md_templates.py,sha256=DMnMQ7_LbmQCS8aG-ppHGTu25obOSn4ZzSg7V21k9jo,3547
|
|
117
|
-
md_processing/md_processing_utils/md_processing_constants.py,sha256=
|
|
150
|
+
md_processing/md_processing_utils/md_processing_constants.py,sha256=19v2zggks8SijjvUXah9rxR7zuqiHkznU14cWUBcFGs,25827
|
|
118
151
|
md_processing/md_processing_utils/message_constants.py,sha256=UBf18obM83umM6zplR7ychre4xLRbBnTzidHDZ2gNvM,548
|
|
119
|
-
pyegeria/__init__.py,sha256=
|
|
152
|
+
pyegeria/__init__.py,sha256=_Q93impwC_PIz1PQRy-6ka6r28VuiN3ASdDmLHf4m_s,4466
|
|
120
153
|
pyegeria/_base_client.py,sha256=w2Cid4GZOTwc4dutipk2vy2cs2qj-faMF21eClitFEI,21525
|
|
121
154
|
pyegeria/_client.py,sha256=hJHn5pD8sbelP_M9dK-M5Z2CYqpRXzXfg1UCgAdQ6dQ,33416
|
|
122
|
-
pyegeria/_client_new.py,sha256=
|
|
155
|
+
pyegeria/_client_new.py,sha256=h6seD2_1WSiLSbo-R2LtGyR4x7klKDf-j2Oqql0fqcc,200517
|
|
123
156
|
pyegeria/_client_new_backup.py,sha256=Kznc1iHG_y1T4D2UlccbgHpczmcQkPSrTut4Wxqq2Rg,187354
|
|
124
157
|
pyegeria/_deprecated_gov_engine.py,sha256=dWNcwVsE5__dF2u4QiIyQrssozzzOjBbLld8MdpmVCQ,17264
|
|
125
158
|
pyegeria/_exceptions.py,sha256=1SrnV194V4_YJNnNAU0myTHQ3dhLn4GF2B2gZcj1u90,18153
|
|
126
159
|
pyegeria/_exceptions_new.py,sha256=DthS0OQ6PPOrmQ8-LJA0xhIy_A4i_RZrppFEvL-nn74,19875
|
|
127
|
-
pyegeria/_globals.py,sha256=
|
|
160
|
+
pyegeria/_globals.py,sha256=fE0txOo3lkNmVLLAqzvUUxzLtg6LxWt_GjGyImBhrIQ,8538
|
|
128
161
|
pyegeria/_output_format_models.py,sha256=LB5ryEMF0xBFE38ZP9rAKFRof_4_mNBOPHhRJY0ur2M,15448
|
|
129
162
|
pyegeria/_output_formats.py,sha256=u8_7zOI5VCWT-hJM5Bc7eCHQZI4kEfOhjzufINivEtg,384
|
|
130
163
|
pyegeria/_validators.py,sha256=pNxND0dN2qvyuGE52N74l1Ezfrh2p9Hao2ziR_t1ENI,7425
|
|
131
164
|
pyegeria/asset_catalog_omvs.py,sha256=sBXPgkRe_ZFOunZ-xoZe4qndILf9L0dPRHpQb_95bHw,29030
|
|
132
165
|
pyegeria/automated_curation.py,sha256=DaEg_qB2TfgveKm4Y0aEKppoWwyUeY96VqjumVDCYN4,143103
|
|
133
|
-
pyegeria/base_report_formats.py,sha256=
|
|
166
|
+
pyegeria/base_report_formats.py,sha256=qJumPuAMPolVnNoCVpWqyNNSIPIog--QdyQCHCXnDJQ,194914
|
|
134
167
|
pyegeria/classification_manager.py,sha256=HO5UcSb65FjeKWx8COD4kNYKd3zUfeGG05TiHV2CYis,282275
|
|
135
168
|
pyegeria/classification_manager_omvs.py,sha256=CFFEZv9hBPv0UXIwyu5JyGBg_edGlRn5w6MUkPVC4pY,183952
|
|
136
169
|
pyegeria/collection_manager.py,sha256=bfFQQiqOo2cVf5IqkQxFwZJn-SLhBngCGzJdS7KzncY,239812
|
|
@@ -146,7 +179,7 @@ pyegeria/egeria_tech_client.py,sha256=Kk9-0gHbPlftZ03W6_IerOnnAjWMiIsi01RhnQxo41
|
|
|
146
179
|
pyegeria/external_links.py,sha256=kYruxxwrN75wLq9BAJLV4tUC5ceQUOjm8gWy3QW7MRM,74466
|
|
147
180
|
pyegeria/feedback_manager.py,sha256=Y2lUJrb2_mejlKvmnpgRQbHPiSC7nDTRa7P7lky1Jpc,25911
|
|
148
181
|
pyegeria/feedback_manager_omvs.py,sha256=FYWE-EIQiJ8B0rUkiqr9_cbGXZLDM4PlGsidgpL_D6o,148801
|
|
149
|
-
pyegeria/format_set_executor.py,sha256=
|
|
182
|
+
pyegeria/format_set_executor.py,sha256=daQuhWpT75epp9zbRLBHxAGcY_6dtI7I6Stb4colD0k,12487
|
|
150
183
|
pyegeria/full_omag_server_config.py,sha256=832EiMX7oeTHQxWf_4NQ4gXze9PMA9Vsx1jn9m9a_Mw,47457
|
|
151
184
|
pyegeria/glossary_manager.py,sha256=pZYtB-K1WWYEPdlNaPG_qYw5p_Ae6Hu9jQLdWRCwnog,106904
|
|
152
185
|
pyegeria/governance_officer.py,sha256=VOwt6HMxVhbPEfmQNNAs93qXj-x2PLzO9TZ0lrDJ9Ps,109381
|
|
@@ -172,9 +205,9 @@ pyegeria/template_manager_omvs.py,sha256=chBljs1vy5wr9DRAtbvIt4Cob_7HxGfxLkCNlDT
|
|
|
172
205
|
pyegeria/utils.py,sha256=xOTxk9PH8ZGZmgIwz_a6rczTVLADLEjucr10ZJTUnY4,9272
|
|
173
206
|
pyegeria/valid_metadata_omvs.py,sha256=Xq9DqBQvBFFJzaFIRKcVZ2k4gJvSh9yeXs_j-O3vn1w,65050
|
|
174
207
|
pyegeria/x_action_author_omvs.py,sha256=XyRsUgN-xnWR-cJayzo5RtY4Xv1uBDML4pwaKHrwC1w,6430
|
|
175
|
-
pyegeria-5.4.8.
|
|
176
|
-
pyegeria-5.4.8.
|
|
177
|
-
pyegeria-5.4.8.
|
|
178
|
-
pyegeria-5.4.8.
|
|
179
|
-
pyegeria-5.4.8.
|
|
180
|
-
pyegeria-5.4.8.
|
|
208
|
+
pyegeria-5.4.8.8.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
209
|
+
pyegeria-5.4.8.8.dist-info/METADATA,sha256=8WqvNOSaCuirDp9vrVmziijPJjq1RdKz12jDeh1fkQE,7295
|
|
210
|
+
pyegeria-5.4.8.8.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
211
|
+
pyegeria-5.4.8.8.dist-info/entry_points.txt,sha256=erl7EsY2vrll8DL_wr28FlvoWk7TQ2liioGYej0C2X4,6585
|
|
212
|
+
pyegeria-5.4.8.8.dist-info/top_level.txt,sha256=79GSLIQLdnCT1ApFEbFYr2flWPPANEUlnvMZXWn4fng,41
|
|
213
|
+
pyegeria-5.4.8.8.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|