pyegeria 5.4.7__py3-none-any.whl → 5.4.7.2__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.
- md_processing/data/commands-working.json +34850 -0
- md_processing/data/commands.json +52199 -0
- md_processing/data/generated_format_sets.json +4137 -0
- md_processing/md_commands/product_manager_commands.py +102 -102
- pyegeria/__init__.py +2 -1
- pyegeria/_output_formats.py +71 -0
- pyegeria/format_set_executor.py +136 -1
- pyegeria/mcp_adapter.py +24 -10
- pyegeria/mcp_server.py +41 -14
- {pyegeria-5.4.7.dist-info → pyegeria-5.4.7.2.dist-info}/METADATA +1 -2
- {pyegeria-5.4.7.dist-info → pyegeria-5.4.7.2.dist-info}/RECORD +15 -12
- {pyegeria-5.4.7.dist-info → pyegeria-5.4.7.2.dist-info}/WHEEL +0 -0
- {pyegeria-5.4.7.dist-info → pyegeria-5.4.7.2.dist-info}/entry_points.txt +0 -0
- {pyegeria-5.4.7.dist-info → pyegeria-5.4.7.2.dist-info}/licenses/LICENSE +0 -0
- {pyegeria-5.4.7.dist-info → pyegeria-5.4.7.2.dist-info}/top_level.txt +0 -0
pyegeria/_output_formats.py
CHANGED
@@ -121,6 +121,7 @@ COMMON_COLUMNS = [
|
|
121
121
|
Column(name='Category', key='category'),
|
122
122
|
Column(name='Description', key='description', format=True),
|
123
123
|
Column(name='Status', key='status'),
|
124
|
+
Column(name='Type Name', key='type_name')
|
124
125
|
]
|
125
126
|
|
126
127
|
|
@@ -560,6 +561,29 @@ base_output_format_sets = FormatSetDict({
|
|
560
561
|
spec_params={"metadata_element_types": ["DigitalProductCatalog"]},
|
561
562
|
),
|
562
563
|
),
|
564
|
+
"Digital-Product-Catalog-MyE": FormatSet(
|
565
|
+
target_type="DigitalProductCatalog",
|
566
|
+
heading="Catalogs for Digital Products",
|
567
|
+
description="Attributes generic to all Digital Product Catalogs..",
|
568
|
+
aliases=[],
|
569
|
+
annotations={},
|
570
|
+
formats=[
|
571
|
+
Format(
|
572
|
+
types=["DICT", "TABLE", "LIST", "MD", "FORM","REPORT"],
|
573
|
+
columns=COMMON_COLUMNS + [
|
574
|
+
Column(name="Containing Members", key='collection_members'),
|
575
|
+
Column(name="Member Of", key='member_of_collections')
|
576
|
+
]
|
577
|
+
),
|
578
|
+
|
579
|
+
],
|
580
|
+
action=ActionParameter(
|
581
|
+
function="CollectionManager.find_collections",
|
582
|
+
required_params=["search_string"],
|
583
|
+
optional_params=OPTIONAL_PARAMS,
|
584
|
+
spec_params={"metadata_element_types": ["DigitalProductCatalog"]},
|
585
|
+
),
|
586
|
+
),
|
563
587
|
|
564
588
|
"Digital-Products": FormatSet(
|
565
589
|
target_type="DigitalProduct",
|
@@ -617,6 +641,53 @@ base_output_format_sets = FormatSetDict({
|
|
617
641
|
spec_params={},
|
618
642
|
)
|
619
643
|
),
|
644
|
+
"Digital-Products-MyE": FormatSet(
|
645
|
+
target_type="DigitalProduct",
|
646
|
+
heading="Digital Product Information",
|
647
|
+
description="Attributes useful to Digital Products.",
|
648
|
+
aliases=[],
|
649
|
+
annotations={},
|
650
|
+
formats=[
|
651
|
+
Format(
|
652
|
+
types=["FORM", "DICT", "TABLE", "LIST", "MD"],
|
653
|
+
columns=COMMON_COLUMNS + [
|
654
|
+
Column(name="Status", key='status'),
|
655
|
+
Column(name='Product Name', key='product_name'),
|
656
|
+
Column(name='Members', key='members', format=True),
|
657
|
+
Column(name='Product Manager', key='assigned_actors'),
|
658
|
+
]),
|
659
|
+
Format(
|
660
|
+
types=["REPORT", "HTML"],
|
661
|
+
columns=COMMON_COLUMNS + [
|
662
|
+
Column(name="Status", key='status'),
|
663
|
+
Column(name='Product Name', key='product_name'),
|
664
|
+
Column(name='Identifier', key='identifier'),
|
665
|
+
Column(name='Maturity', key='maturity'),
|
666
|
+
Column(name='Service Life', key='service_life'),
|
667
|
+
Column(name='Next Version', key='next_version'),
|
668
|
+
Column(name='Withdraw Date', key='withdraw_date'),
|
669
|
+
Column(name='Members', key='members', format=True),
|
670
|
+
Column(name='Uses Products', key='uses_digital_products'),
|
671
|
+
Column(name='Used by Products', key='used_by_digital_products'),
|
672
|
+
Column(name='Product Manager', key='assigned_actors'),
|
673
|
+
Column(name='License', key='governed_by'),
|
674
|
+
Column(name='Solution Blueprint', key='solution_designs'),
|
675
|
+
Column(name="Mermaid", key="mermaid")
|
676
|
+
],
|
677
|
+
)
|
678
|
+
],
|
679
|
+
action=ActionParameter(
|
680
|
+
function="CollectionManager.find_collections",
|
681
|
+
required_params=["search_string"],
|
682
|
+
optional_params=OPTIONAL_PARAMS,
|
683
|
+
spec_params={"metadata_element_types": ["DigitalProduct"]},
|
684
|
+
),
|
685
|
+
get_additional_props=ActionParameter(
|
686
|
+
function="CollectionManager._extract_digital_product_properties",
|
687
|
+
required_params=[],
|
688
|
+
spec_params={},
|
689
|
+
)
|
690
|
+
),
|
620
691
|
|
621
692
|
"Agreements": FormatSet(
|
622
693
|
target_type="Agreement",
|
pyegeria/format_set_executor.py
CHANGED
@@ -13,7 +13,9 @@ Notes
|
|
13
13
|
"""
|
14
14
|
from __future__ import annotations
|
15
15
|
|
16
|
+
import asyncio
|
16
17
|
import json
|
18
|
+
import sys
|
17
19
|
from typing import Any, Dict, Optional
|
18
20
|
|
19
21
|
from loguru import logger
|
@@ -52,7 +54,140 @@ def _resolve_client_and_method(func_decl: str):
|
|
52
54
|
return (client_class, method_name)
|
53
55
|
|
54
56
|
|
55
|
-
|
57
|
+
|
58
|
+
async def safe_call_tool(func, **call_params):
|
59
|
+
"""
|
60
|
+
Safely calls a function, awaiting it only if it is an asynchronous coroutine.
|
61
|
+
"""
|
62
|
+
try:
|
63
|
+
if asyncio.iscoroutinefunction(func):
|
64
|
+
# If it's an async function, call it with await
|
65
|
+
print("DEBUG: Function is async, using await.", file=sys.stderr)
|
66
|
+
result = await func(**call_params)
|
67
|
+
else:
|
68
|
+
# If it's a synchronous function, call it directly
|
69
|
+
print("DEBUG: Function is sync, calling directly.", file=sys.stderr)
|
70
|
+
result = func(**call_params)
|
71
|
+
|
72
|
+
return result
|
73
|
+
|
74
|
+
except Exception as e:
|
75
|
+
print(f"ERROR calling function: {e}", file=sys.stderr)
|
76
|
+
raise
|
77
|
+
|
78
|
+
|
79
|
+
|
80
|
+
async def _async_run_report(
|
81
|
+
report_name: str,
|
82
|
+
egeria_client: EgeriaTech,
|
83
|
+
output_format: str = "DICT",
|
84
|
+
params: Optional[Dict[str, Any]] = None,
|
85
|
+
) -> Dict[str, Any]:
|
86
|
+
"""
|
87
|
+
Execute the action for a given format set and return a normalized result structure.
|
88
|
+
|
89
|
+
Returns shapes:
|
90
|
+
- {"kind":"empty"}
|
91
|
+
- {"kind":"json","data": <list|dict|any>}
|
92
|
+
- {"kind":"text","mime": "text/markdown"|"text/html","content": str}
|
93
|
+
- {"kind":"unknown","raw": any}
|
94
|
+
"""
|
95
|
+
params = dict(params or {})
|
96
|
+
|
97
|
+
# Resolve the format set and action
|
98
|
+
fmt = select_output_format_set(report_name, output_format)
|
99
|
+
if not fmt:
|
100
|
+
raise ValueError(
|
101
|
+
f"Output format set '{report_name}' does not have a compatible '{output_format}' format."
|
102
|
+
)
|
103
|
+
if "action" not in fmt:
|
104
|
+
raise ValueError(f"Output format set '{report_name}' does not have an action property.")
|
105
|
+
|
106
|
+
action = fmt["action"]
|
107
|
+
func_decl = action.get("function")
|
108
|
+
if isinstance(func_decl, str) and "." in func_decl:
|
109
|
+
class_name, method_name = func_decl.split(".")
|
110
|
+
|
111
|
+
if not method_name.startswith("_async_"):
|
112
|
+
method_name = "_async_" + method_name
|
113
|
+
func_decl = class_name + "." + method_name
|
114
|
+
|
115
|
+
required_params = action.get("required_params", action.get("user_params", [])) or []
|
116
|
+
optional_params = action.get("optional_params", []) or []
|
117
|
+
spec_params = action.get("spec_params", {}) or {}
|
118
|
+
print(f"func_decl={func_decl}", file=sys.stderr)
|
119
|
+
# Build call params: required/optional provided by caller + fixed spec_params
|
120
|
+
call_params: Dict[str, Any] = {}
|
121
|
+
|
122
|
+
# Populate required and optional params when provided
|
123
|
+
for p in required_params:
|
124
|
+
if p in params and params[p] is not None:
|
125
|
+
call_params[p] = params[p]
|
126
|
+
elif p not in spec_params:
|
127
|
+
# Missing required param
|
128
|
+
logger.warning(f"Required parameter '{p}' not provided for format set '{report_name}'.")
|
129
|
+
for p in optional_params:
|
130
|
+
if p in params and params[p] is not None:
|
131
|
+
call_params[p] = params[p]
|
132
|
+
|
133
|
+
# Include fixed specifics
|
134
|
+
call_params.update(spec_params)
|
135
|
+
|
136
|
+
# Always include output_format and output_format_set for downstream rendering
|
137
|
+
call_params["output_format"] = output_format
|
138
|
+
call_params["output_format_set"] = report_name
|
139
|
+
|
140
|
+
client_class, method_name = _resolve_client_and_method(func_decl)
|
141
|
+
|
142
|
+
|
143
|
+
try:
|
144
|
+
egeria_client.create_egeria_bearer_token()
|
145
|
+
func = getattr(egeria_client, method_name) if method_name and hasattr(egeria_client, method_name) else None
|
146
|
+
# Add logging to validate func
|
147
|
+
msg = f"DEBUG: func={func}, method_name={method_name}, client_class={client_class}"
|
148
|
+
logger.debug(msg)
|
149
|
+
print(msg, file=sys.stderr)
|
150
|
+
|
151
|
+
if func is None or not callable(func):
|
152
|
+
raise TypeError(
|
153
|
+
f"Resolved function '{method_name}' not found in client class '{client_class.__name__}' is not callable."
|
154
|
+
)
|
155
|
+
|
156
|
+
result = await func(**call_params)
|
157
|
+
|
158
|
+
if not result or result == NO_ELEMENTS_FOUND:
|
159
|
+
return {"kind": "empty"}
|
160
|
+
|
161
|
+
# Prepare optional preamble for narrative outputs
|
162
|
+
heading = get_output_format_set_heading(report_name)
|
163
|
+
desc = get_output_format_set_description(report_name)
|
164
|
+
preamble = f"# {heading}\n{desc}\n\n" if heading and desc else ""
|
165
|
+
|
166
|
+
if output_format in {"DICT", "JSON", "ALL"}:
|
167
|
+
# Return raw data (list/dict/any) — do not stringify here
|
168
|
+
return {"kind": "json", "data": result}
|
169
|
+
elif output_format in {"REPORT", "MERMAID"}:
|
170
|
+
content = result
|
171
|
+
if isinstance(result, (list, dict)):
|
172
|
+
# Make a simple JSON code block if the source returned structured data unexpectedly
|
173
|
+
content = preamble + "```json\n" + json.dumps(result, indent=2) + "\n```"
|
174
|
+
else:
|
175
|
+
content = preamble + str(result)
|
176
|
+
return {"kind": "text", "mime": "text/markdown", "content": content}
|
177
|
+
elif output_format == "HTML":
|
178
|
+
content = str(result)
|
179
|
+
return {"kind": "text", "mime": "text/html", "content": content}
|
180
|
+
else:
|
181
|
+
# Unknown or table-like formats which aren't appropriate for MCP by default
|
182
|
+
return {"kind": "unknown", "raw": result}
|
183
|
+
|
184
|
+
except PyegeriaException as e:
|
185
|
+
# Re-raise with a simpler message for upstream mapping
|
186
|
+
raise
|
187
|
+
|
188
|
+
|
189
|
+
|
190
|
+
def exec_format_set(
|
56
191
|
format_set_name: str,
|
57
192
|
*,
|
58
193
|
output_format: str = "DICT",
|
pyegeria/mcp_adapter.py
CHANGED
@@ -11,9 +11,6 @@ from __future__ import annotations
|
|
11
11
|
|
12
12
|
import json
|
13
13
|
import sys
|
14
|
-
import asyncio
|
15
|
-
|
16
|
-
from loguru import logger
|
17
14
|
from typing import Any, Dict, Optional
|
18
15
|
|
19
16
|
from loguru import logger
|
@@ -21,9 +18,9 @@ from loguru import logger
|
|
21
18
|
from pyegeria._output_formats import (
|
22
19
|
list_mcp_format_sets,
|
23
20
|
select_output_format_set,
|
24
|
-
get_output_format_type_match,
|
25
21
|
)
|
26
|
-
from pyegeria.
|
22
|
+
from pyegeria.egeria_tech_client import EgeriaTech
|
23
|
+
from pyegeria.format_set_executor import exec_format_set, _async_run_report
|
27
24
|
|
28
25
|
|
29
26
|
def list_reports() -> dict:
|
@@ -31,12 +28,12 @@ def list_reports() -> dict:
|
|
31
28
|
return list_mcp_format_sets()
|
32
29
|
|
33
30
|
|
34
|
-
def describe_report(name: str,
|
31
|
+
def describe_report(name: str, output_type: str = "DICT") -> Dict[str, Any]:
|
35
32
|
"""
|
36
33
|
Describe a format set for MCP discovery. If outputType != ANY, a concrete format
|
37
34
|
will be resolved; otherwise only metadata/action are returned.
|
38
35
|
"""
|
39
|
-
meta = select_output_format_set(name,
|
36
|
+
meta = select_output_format_set(name, output_type)
|
40
37
|
if not meta:
|
41
38
|
raise ValueError(f"Unknown or incompatible format set: {name}")
|
42
39
|
return meta
|
@@ -65,7 +62,7 @@ def _execute_egeria_call_blocking(
|
|
65
62
|
from pyegeria.config import settings as _settings
|
66
63
|
|
67
64
|
|
68
|
-
return
|
65
|
+
return exec_format_set(
|
69
66
|
format_set_name=report,
|
70
67
|
output_format="DICT",
|
71
68
|
params=params or {},
|
@@ -82,6 +79,7 @@ def _execute_egeria_call_blocking(
|
|
82
79
|
# }
|
83
80
|
|
84
81
|
|
82
|
+
|
85
83
|
def run_report(
|
86
84
|
*,
|
87
85
|
report: str,
|
@@ -98,8 +96,8 @@ def run_report(
|
|
98
96
|
print(f"Format set: {report}\nparams: {json.dumps(params)}\nview_server: {view_server}\nview_url: {view_url}\nuser: {user}\nuser_pass: {user_pass}", file=sys.stderr)
|
99
97
|
# Lazy import of settings to avoid circulars when optional args are None
|
100
98
|
from pyegeria.config import settings as _settings
|
101
|
-
logger.info(f"Format set: {
|
102
|
-
return
|
99
|
+
logger.info(f"Format set: {report}\nparams: {json.dumps(params)}\nview_server: {view_server}\nview_url: {view_url}\nuser: {user}\nuser_pass: {user_pass}")
|
100
|
+
return run_format_set(
|
103
101
|
format_set_name=report,
|
104
102
|
output_format="DICT",
|
105
103
|
params=params or {},
|
@@ -108,3 +106,19 @@ def run_report(
|
|
108
106
|
user=user if user is not None else _settings.User_Profile.user_name,
|
109
107
|
user_pass=user_pass if user_pass is not None else _settings.User_Profile.user_pwd,
|
110
108
|
)
|
109
|
+
|
110
|
+
async def _async_run_report_tool(
|
111
|
+
*,
|
112
|
+
report: str,
|
113
|
+
egeria_client: EgeriaTech,
|
114
|
+
params: Optional[Dict[str, Any]] = None,
|
115
|
+
) -> Dict[str, Any]:
|
116
|
+
"""
|
117
|
+
Execute a format set action as an MCP-style tool. Enforces DICT/ALL by default.
|
118
|
+
Caller may pass credentials explicitly; otherwise defaults are used from config.
|
119
|
+
"""
|
120
|
+
# Lazy import of settings to avoid circulars when optional args are None
|
121
|
+
|
122
|
+
print(f"Report: {report}\n params: {json.dumps(params)}\n", file=sys.stderr)
|
123
|
+
result = await _async_run_report(report, egeria_client, output_format="DICT", params=params)
|
124
|
+
return result
|
pyegeria/mcp_server.py
CHANGED
@@ -3,26 +3,28 @@ Copyright Contributors to the ODPi Egeria project.
|
|
3
3
|
|
4
4
|
This module provides a basic MCP server for Egeria.
|
5
5
|
"""
|
6
|
-
import asyncio
|
7
6
|
import re
|
8
7
|
import sys
|
9
|
-
from typing import Any, Dict, Optional
|
8
|
+
from typing import Any, Dict, Optional
|
9
|
+
|
10
|
+
from pyegeria.egeria_tech_client import EgeriaTech
|
11
|
+
|
12
|
+
GLOBAL_EGERIA_CLIENT: Optional[EgeriaTech] = None
|
10
13
|
|
11
14
|
try:
|
12
15
|
# We use Optional[] and List[] types, so we import them.
|
13
16
|
from mcp.server.fastmcp import FastMCP
|
17
|
+
from pyegeria.mcp_adapter import (
|
18
|
+
list_reports,
|
19
|
+
describe_report,
|
20
|
+
run_report, _execute_egeria_call_blocking,
|
21
|
+
_async_run_report_tool
|
22
|
+
)
|
14
23
|
print("MCP import successful...", file=sys.stderr)
|
15
24
|
except ImportError:
|
16
25
|
print("MCP import failed.", file=sys.stderr)
|
17
26
|
raise
|
18
27
|
|
19
|
-
from pyegeria.mcp_adapter import (
|
20
|
-
list_reports,
|
21
|
-
describe_report,
|
22
|
-
run_report, _execute_egeria_call_blocking,
|
23
|
-
)
|
24
|
-
|
25
|
-
|
26
28
|
def _ok(result: Dict[str, Any] ) -> Dict[str, Any]:
|
27
29
|
# Pass-through helper in case you want to normalize or add metadata
|
28
30
|
print("OK: Operation completed successfully.", file=sys.stderr)
|
@@ -31,6 +33,29 @@ def _ok(result: Dict[str, Any] ) -> Dict[str, Any]:
|
|
31
33
|
|
32
34
|
def main() -> None:
|
33
35
|
# Initialize the server
|
36
|
+
|
37
|
+
global GLOBAL_EGERIA_CLIENT
|
38
|
+
|
39
|
+
try:
|
40
|
+
""" Runs ONCE when the server starts.
|
41
|
+
Initializes the Egeria client and stores it in the server's state.
|
42
|
+
"""
|
43
|
+
print("DEBUG: Initializing Egeria client...", file=sys.stderr)
|
44
|
+
from pyegeria.config import settings as _settings
|
45
|
+
|
46
|
+
GLOBAL_EGERIA_CLIENT = EgeriaTech(
|
47
|
+
_settings.Environment.egeria_view_server,
|
48
|
+
_settings.Environment.egeria_view_server_url,
|
49
|
+
_settings.User_Profile.user_name,
|
50
|
+
_settings.User_Profile.user_pwd
|
51
|
+
)
|
52
|
+
GLOBAL_EGERIA_CLIENT.create_egeria_bearer_token("erinoverview","secret")
|
53
|
+
print("DEBUG: Egeria Client connected", file=sys.stderr)
|
54
|
+
|
55
|
+
except Exception as e:
|
56
|
+
print(f"DEBUG: Exception occurred: {str(e)}", file=sys.stderr)
|
57
|
+
raise
|
58
|
+
|
34
59
|
srv = FastMCP(name="pyegeria-mcp")
|
35
60
|
print("Starting MCP server...", file=sys.stderr)
|
36
61
|
|
@@ -53,7 +78,6 @@ def main() -> None:
|
|
53
78
|
print(f"DEBUG: Exception during describe_report: {str(e)}", file=sys.stderr)
|
54
79
|
raise
|
55
80
|
|
56
|
-
# run_report tool (formerly run_format_set_action)
|
57
81
|
@srv.tool(name="run_report")
|
58
82
|
async def run_report_tool(
|
59
83
|
report_name: str,
|
@@ -92,10 +116,13 @@ def main() -> None:
|
|
92
116
|
|
93
117
|
try:
|
94
118
|
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
119
|
+
egeria_client: EgeriaTech = GLOBAL_EGERIA_CLIENT
|
120
|
+
print("DEBUG: Egeria Client connected", file=sys.stderr)
|
121
|
+
|
122
|
+
result = await _async_run_report_tool(
|
123
|
+
report=report_name,
|
124
|
+
egeria_client=egeria_client,
|
125
|
+
params=params
|
99
126
|
)
|
100
127
|
print("DEBUG: run_report completed successfully", file=sys.stderr)
|
101
128
|
return _ok(result)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: pyegeria
|
3
|
-
Version: 5.4.7
|
3
|
+
Version: 5.4.7.2
|
4
4
|
Summary: A python client for Egeria
|
5
5
|
Author-email: Dan Wolfson <dan.wolfson@pdr-associates.com>
|
6
6
|
License-Expression: Apache-2.0
|
@@ -18,7 +18,6 @@ Requires-Dist: requests
|
|
18
18
|
Requires-Dist: jupyter
|
19
19
|
Requires-Dist: click
|
20
20
|
Requires-Dist: trogon
|
21
|
-
Requires-Dist: textual
|
22
21
|
Requires-Dist: mermaid-py
|
23
22
|
Requires-Dist: psycopg2-binary
|
24
23
|
Requires-Dist: jupyter-notebook-parser
|
@@ -92,13 +92,16 @@ commands/tech/table_tech_templates.py,sha256=jI1c9YKa3KirArMNXeCRKeaiVdwQSN-ztPq
|
|
92
92
|
commands/tech/x_list_related_elements.py,sha256=ynaw792VnbMZ9IXBi5mmG7xBfC0kn0esKiFTsjvLGzc,5900
|
93
93
|
md_processing/__init__.py,sha256=B3hBAEI84SsAVFDCSHqoiVnBwSVbuxpeJuX3Jfe5B6U,7327
|
94
94
|
md_processing/dr_egeria.py,sha256=T1YRmGAAlamuYZB5dnBdEeyL9oODhYsxy-G4M_DtCak,20672
|
95
|
+
md_processing/data/commands-working.json,sha256=uCo_azcuuYqGm7QffJeCGj7PyZuZRGdu7kKf4XWmMoA,1162560
|
96
|
+
md_processing/data/commands.json,sha256=_J0WEfekVTBv994aV6rXdnyWy__WvoYdUJOPhSkPY4I,1759456
|
97
|
+
md_processing/data/generated_format_sets.json,sha256=TXvGK_Gm5ieq9i6u9M1j4CaNPzoV2m0hisKK2fWCtIM,98502
|
95
98
|
md_processing/data/generated_format_sets.py,sha256=2BfRzb5G5n8Cz6VwirQXlBq1fHBISIh4x7jquXg6QEw,36402
|
96
99
|
md_processing/md_commands/__init__.py,sha256=ssEojzFlSYtY2bHqqOoKo8PFaANZ_kq_gIbtlXnuc2s,93
|
97
100
|
md_processing/md_commands/data_designer_commands.py,sha256=WGCDlTPmGhcETdmus89w6Y8a3EhyQJ86SJURvphnM24,65516
|
98
101
|
md_processing/md_commands/ext_ref_commands.py,sha256=c-ZdYkWGMsrAyku9R_IReJzrLhNaNFY6vyyiFEjxNT4,23144
|
99
102
|
md_processing/md_commands/glossary_commands.py,sha256=slKnvs6ktdAOZI_EmpVWUB7hrdSngUnitucZu9dR9PE,33411
|
100
103
|
md_processing/md_commands/governance_officer_commands.py,sha256=c7SnJqQooPr3zCebDzeztAM8wZq9G7ZB4EpJ-uR5moI,26479
|
101
|
-
md_processing/md_commands/product_manager_commands.py,sha256=
|
104
|
+
md_processing/md_commands/product_manager_commands.py,sha256=4YKKdd_2tI5ekZlSJBiJJGqFISD7X6m0rfEd2wEL_PY,57790
|
102
105
|
md_processing/md_commands/project_commands.py,sha256=peAoemgzb8bEQghi8nFU6JrZ5Hro90Bl1JDHl7_nAtM,17127
|
103
106
|
md_processing/md_commands/solution_architect_commands.py,sha256=4Ghb8j2wlDdWtHoSCrx5jCJFEJfqII4mnFJ_tqduRKI,52569
|
104
107
|
md_processing/md_commands/view_commands.py,sha256=bIOSw0GVluOcpZMQNioeO1Srr4Y_84YNz-VHMKpPfVE,12092
|
@@ -113,7 +116,7 @@ md_processing/md_processing_utils/generate_md_cmd_templates.py,sha256=mFenxe9Jq8
|
|
113
116
|
md_processing/md_processing_utils/generate_md_templates.py,sha256=DMnMQ7_LbmQCS8aG-ppHGTu25obOSn4ZzSg7V21k9jo,3547
|
114
117
|
md_processing/md_processing_utils/md_processing_constants.py,sha256=_j8FSsB1mZ2SsmDaQWaPH8iWKy1ZHYYjzOgcdIoLZPE,21108
|
115
118
|
md_processing/md_processing_utils/message_constants.py,sha256=UBf18obM83umM6zplR7ychre4xLRbBnTzidHDZ2gNvM,548
|
116
|
-
pyegeria/__init__.py,sha256=
|
119
|
+
pyegeria/__init__.py,sha256=hgrGk4lBno1rgKRBKWAcljb2wGSHAKhmtu8vbESwUZM,11955
|
117
120
|
pyegeria/_client.py,sha256=hJHn5pD8sbelP_M9dK-M5Z2CYqpRXzXfg1UCgAdQ6dQ,33416
|
118
121
|
pyegeria/_client_new.py,sha256=9GQDOlmCxGPcAhKT_kkrLlS0x7nnVhha7VVR0rAlBnQ,69777
|
119
122
|
pyegeria/_deprecated_gov_engine.py,sha256=dWNcwVsE5__dF2u4QiIyQrssozzzOjBbLld8MdpmVCQ,17264
|
@@ -121,7 +124,7 @@ pyegeria/_exceptions.py,sha256=1SrnV194V4_YJNnNAU0myTHQ3dhLn4GF2B2gZcj1u90,18153
|
|
121
124
|
pyegeria/_exceptions_new.py,sha256=srmrlqoWy7VvOJOhPcYFKW32MCIovgEg5J7PrYDxzQA,19706
|
122
125
|
pyegeria/_globals.py,sha256=qSU5hM4uuJZPp-YapEEKxfcdgH9hauc6R7gRkELLroY,1132
|
123
126
|
pyegeria/_output_format_models.py,sha256=p9fTYaIa5KyTMIR4-JAbE9g66_gGMPTnUqjIq20Zr1o,14494
|
124
|
-
pyegeria/_output_formats.py,sha256=
|
127
|
+
pyegeria/_output_formats.py,sha256=sXZrriZS8Y96mXVIwTdzZI8qu2-eGVxsbnxXbi4WmZw,184306
|
125
128
|
pyegeria/_validators.py,sha256=pNxND0dN2qvyuGE52N74l1Ezfrh2p9Hao2ziR_t1ENI,7425
|
126
129
|
pyegeria/asset_catalog_omvs.py,sha256=P6FceMP0FgakGSOt3ePxpEbsF7nnypzo1aQahjdL_94,29021
|
127
130
|
pyegeria/automated_curation.py,sha256=wmnfpDcdg4eTtYuRHTCZQe49GxLCBiBBQsKwWVnlzak,142660
|
@@ -139,14 +142,14 @@ pyegeria/egeria_my_client.py,sha256=3dSBUlrivzih75hodNHe-2BM9pGB8AQVLru-_NbhYNE,
|
|
139
142
|
pyegeria/egeria_tech_client.py,sha256=8Apr5YEFL2qgn-QTv9YWTI-23rGI94NiUp4418EiZ4k,4707
|
140
143
|
pyegeria/external_references.py,sha256=7CNUlnD7MsWZqdLASYSxqfHAU1EqBzuv8_7INYMJI3A,74755
|
141
144
|
pyegeria/feedback_manager_omvs.py,sha256=0xBs0p54vmdfVYYgQ8pOanLC4fxfgTk1Z61Y6D1U7_I,152978
|
142
|
-
pyegeria/format_set_executor.py,sha256=
|
145
|
+
pyegeria/format_set_executor.py,sha256=KkOqCuZwk7UeMQUPg_x8UDVmVKYdz5vaQZ8KjZZxDMQ,11318
|
143
146
|
pyegeria/full_omag_server_config.py,sha256=CQqLCy_3DZFvJZEOcGf50HWdFaWpiAIs6z-kKyjvpDA,47464
|
144
147
|
pyegeria/glossary_manager.py,sha256=EmCnIPG-W0bUD7MVn2Vopb-cb_TR1J8MMOOFzo38aWk,106786
|
145
148
|
pyegeria/governance_officer.py,sha256=OYEewhoe3HBcxTR6kGdKNkwLT4gkQDRGKfFIsVlD5oI,109203
|
146
149
|
pyegeria/load_config.py,sha256=XDwPAHB3MvGRuoP8kg1lJJAI4BgMWZ3TYxfxYROgJj4,1188
|
147
150
|
pyegeria/logging_configuration.py,sha256=BxTQRN-7OOdk5t1f1xSn8gKU8iT-MfWEgbn6cYWrRsY,7674
|
148
|
-
pyegeria/mcp_adapter.py,sha256=
|
149
|
-
pyegeria/mcp_server.py,sha256=
|
151
|
+
pyegeria/mcp_adapter.py,sha256=3wz-DNV4oYPeBF_6VxvNkL-ub4pwsUs49VB9L76QPwU,4970
|
152
|
+
pyegeria/mcp_server.py,sha256=UsgpV8Nq09S2nzEGTIVvJizAPUeNdARZjIuLwrTlVOE,8179
|
150
153
|
pyegeria/md_processing_helpers.py,sha256=xlQuK5eP_PJqUdy4BScQ97NyBD95jMS3EUg0wK5CsZo,2137
|
151
154
|
pyegeria/md_processing_utils.py,sha256=KRESCqAYjCgHRAdhHH49lLDDhaq740CUlqTG0bN-6Oo,99119
|
152
155
|
pyegeria/md_processing_utils_orig.py,sha256=SToZtXQiysi2_vmIY4-T2NIELRirzQ1zjkho_2jFsNE,52603
|
@@ -166,9 +169,9 @@ pyegeria/template_manager_omvs.py,sha256=chBljs1vy5wr9DRAtbvIt4Cob_7HxGfxLkCNlDT
|
|
166
169
|
pyegeria/utils.py,sha256=xOTxk9PH8ZGZmgIwz_a6rczTVLADLEjucr10ZJTUnY4,9272
|
167
170
|
pyegeria/valid_metadata_omvs.py,sha256=Xq9DqBQvBFFJzaFIRKcVZ2k4gJvSh9yeXs_j-O3vn1w,65050
|
168
171
|
pyegeria/x_action_author_omvs.py,sha256=XyRsUgN-xnWR-cJayzo5RtY4Xv1uBDML4pwaKHrwC1w,6430
|
169
|
-
pyegeria-5.4.7.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
170
|
-
pyegeria-5.4.7.dist-info/METADATA,sha256=
|
171
|
-
pyegeria-5.4.7.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
172
|
-
pyegeria-5.4.7.dist-info/entry_points.txt,sha256=Ig9cZyl-nq_RohLvahgWXzZbcpHzLS3Zdc1A8qvdPG0,6595
|
173
|
-
pyegeria-5.4.7.dist-info/top_level.txt,sha256=48Mt-O3p8yO7jiEv6-Y9bUsryqJn9BQsiyV0BqSn8tk,32
|
174
|
-
pyegeria-5.4.7.dist-info/RECORD,,
|
172
|
+
pyegeria-5.4.7.2.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
173
|
+
pyegeria-5.4.7.2.dist-info/METADATA,sha256=Ol0BECzsUW24clN-S9oXE45fljxtLJl_pIjxZQve5ZQ,5898
|
174
|
+
pyegeria-5.4.7.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
175
|
+
pyegeria-5.4.7.2.dist-info/entry_points.txt,sha256=Ig9cZyl-nq_RohLvahgWXzZbcpHzLS3Zdc1A8qvdPG0,6595
|
176
|
+
pyegeria-5.4.7.2.dist-info/top_level.txt,sha256=48Mt-O3p8yO7jiEv6-Y9bUsryqJn9BQsiyV0BqSn8tk,32
|
177
|
+
pyegeria-5.4.7.2.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|