pyegeria 5.3.5.3__py3-none-any.whl → 5.3.6.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.
- pyegeria/commands/cat/freddie_jup.py +124 -0
- pyegeria/commands/cat/freddie_jupyter.py +34 -27
- pyegeria/commands/cat/freddie_md.py +45 -42
- pyegeria/commands/cat/freddie_utils.py +113 -53
- pyegeria/commands/cat/freddies-inbox/freddie_intro.md +221 -0
- pyegeria/commands/cat/freddies-inbox/glossary_creation_experiment.ipynb +341 -0
- pyegeria/commands/cat/freddies-inbox/glossary_exp.md +158 -0
- pyegeria/commands/cat/freddies-outbox/Terms-2025-03-06-13-19-29-Report.md +69 -0
- pyegeria/commands/cat/freddies-outbox/Terms-2025-03-06-13-20-30-Update-Form.md +78 -0
- pyegeria/commands/cat/glossary_creation_experiment.ipynb +235 -0
- pyegeria/commands/cat/list_glossaries.py +40 -1
- pyegeria/commands/cat/list_terms.py +49 -2
- pyegeria/commands/cli/egeria.py +48 -2
- pyegeria/commands/cli/egeria_cat.py +30 -2
- pyegeria/commands/cli/ops_config.py +4 -0
- pyegeria/glossary_browser_omvs.py +123 -10
- pyegeria/glossary_manager_omvs.py +0 -365
- {pyegeria-5.3.5.3.dist-info → pyegeria-5.3.6.2.dist-info}/METADATA +1 -1
- {pyegeria-5.3.5.3.dist-info → pyegeria-5.3.6.2.dist-info}/RECORD +22 -15
- {pyegeria-5.3.5.3.dist-info → pyegeria-5.3.6.2.dist-info}/LICENSE +0 -0
- {pyegeria-5.3.5.3.dist-info → pyegeria-5.3.6.2.dist-info}/WHEEL +0 -0
- {pyegeria-5.3.5.3.dist-info → pyegeria-5.3.6.2.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,235 @@
|
|
1
|
+
{
|
2
|
+
"cells": [
|
3
|
+
{
|
4
|
+
"cell_type": "markdown",
|
5
|
+
"id": "f211c1736f87555",
|
6
|
+
"metadata": {},
|
7
|
+
"source": [
|
8
|
+
"# This notebook contains experimental Freddie commands\n",
|
9
|
+
"## Lets see if this is parsed\n",
|
10
|
+
"meow"
|
11
|
+
]
|
12
|
+
},
|
13
|
+
{
|
14
|
+
"cell_type": "markdown",
|
15
|
+
"id": "3b321563-4977-496a-963b-9b9dd75de968",
|
16
|
+
"metadata": {},
|
17
|
+
"source": [
|
18
|
+
"# Create Glossary\n",
|
19
|
+
"## Glossary Name\n",
|
20
|
+
"\n",
|
21
|
+
"Egeria-Markdown\n",
|
22
|
+
"\n",
|
23
|
+
"## Language\n",
|
24
|
+
"English\n",
|
25
|
+
"\n",
|
26
|
+
"## Description\n",
|
27
|
+
"\n",
|
28
|
+
"Glossary to describe the vocabulary of Freddie - an Egeria Markdown language to support the exchange of metadata in a Markdown form.\n",
|
29
|
+
"Freddie allows users to input metadata using any text entry system that supports the entry of standard Markdown characters and through post-processing\n",
|
30
|
+
"commands, validates the Egeria content and allows the requests to be sent to Egeria.\n",
|
31
|
+
"\n",
|
32
|
+
"\n",
|
33
|
+
"## Usage\n",
|
34
|
+
"1) (optional) load an example or template for the type of object from Egeria.\n",
|
35
|
+
"2) Create a new document (perhaps from the template) and edit it, adding in the content with the Freddie controlled Markdown language.\n",
|
36
|
+
"3) Process the document to validate and display it before you submit it, Validation may annotate your document with recommendations and potential issues.\n",
|
37
|
+
"4) Submit the document to Egeria using the Freddie_sings command.\n",
|
38
|
+
"\n",
|
39
|
+
"## <Qualified Name>\n",
|
40
|
+
"\n",
|
41
|
+
"## <GUID>\n",
|
42
|
+
"\n"
|
43
|
+
]
|
44
|
+
},
|
45
|
+
{
|
46
|
+
"cell_type": "code",
|
47
|
+
"execution_count": null,
|
48
|
+
"id": "a7295df2-5afb-46ba-889a-94881d883678",
|
49
|
+
"metadata": {
|
50
|
+
"execution": {
|
51
|
+
"iopub.execute_input": "2025-02-27T15:23:58.820592Z",
|
52
|
+
"iopub.status.busy": "2025-02-27T15:23:58.820416Z",
|
53
|
+
"iopub.status.idle": "2025-02-27T15:24:00.802861Z",
|
54
|
+
"shell.execute_reply": "2025-02-27T15:24:00.802425Z",
|
55
|
+
"shell.execute_reply.started": "2025-02-27T15:23:58.820583Z"
|
56
|
+
}
|
57
|
+
},
|
58
|
+
"outputs": [],
|
59
|
+
"source": [
|
60
|
+
"%pip install jupyter-notebook-parser\n",
|
61
|
+
"%pip install marko"
|
62
|
+
]
|
63
|
+
},
|
64
|
+
{
|
65
|
+
"cell_type": "code",
|
66
|
+
"execution_count": null,
|
67
|
+
"id": "d02383df-f617-48f7-be54-e930b6275a7e",
|
68
|
+
"metadata": {
|
69
|
+
"execution": {
|
70
|
+
"iopub.execute_input": "2025-02-27T15:25:33.155175Z",
|
71
|
+
"iopub.status.busy": "2025-02-27T15:25:33.154695Z",
|
72
|
+
"iopub.status.idle": "2025-02-27T15:25:33.162801Z",
|
73
|
+
"shell.execute_reply": "2025-02-27T15:25:33.162362Z",
|
74
|
+
"shell.execute_reply.started": "2025-02-27T15:25:33.155158Z"
|
75
|
+
}
|
76
|
+
},
|
77
|
+
"outputs": [],
|
78
|
+
"source": [
|
79
|
+
"import json\n",
|
80
|
+
"import marko\n",
|
81
|
+
"from jupyter_notebook_parser import JupyterNotebookParser"
|
82
|
+
]
|
83
|
+
},
|
84
|
+
{
|
85
|
+
"cell_type": "code",
|
86
|
+
"execution_count": null,
|
87
|
+
"id": "b5560fcd-afe4-4133-8204-8f2535feb9b6",
|
88
|
+
"metadata": {
|
89
|
+
"execution": {
|
90
|
+
"iopub.execute_input": "2025-02-27T15:25:34.354443Z",
|
91
|
+
"iopub.status.busy": "2025-02-27T15:25:34.354300Z",
|
92
|
+
"iopub.status.idle": "2025-02-27T15:25:34.358702Z",
|
93
|
+
"shell.execute_reply": "2025-02-27T15:25:34.358236Z",
|
94
|
+
"shell.execute_reply.started": "2025-02-27T15:25:34.354435Z"
|
95
|
+
}
|
96
|
+
},
|
97
|
+
"outputs": [],
|
98
|
+
"source": [
|
99
|
+
"parsed = JupyterNotebookParser('glossary_creation_experiment.ipynb')\n",
|
100
|
+
"\n",
|
101
|
+
"parsed.get_all_cells() # returns List[Dict], each Dict is a notebook cell\n",
|
102
|
+
"\n",
|
103
|
+
"cells = parsed.get_markdown_cells() # returns List[Dict], each Dict is a markdown cel\n",
|
104
|
+
"indices = parsed.get_markdown_cell_indices() # returns List[int], each is a markdown cell's index\n",
|
105
|
+
"cell_sources = parsed.get_markdown_cell_sources() # returns List[str], each is a markdown cell's text\n",
|
106
|
+
"print(json.dumps(cell_sources, indent = 4))"
|
107
|
+
]
|
108
|
+
},
|
109
|
+
{
|
110
|
+
"cell_type": "code",
|
111
|
+
"execution_count": null,
|
112
|
+
"id": "79dffa96-7e2a-40e3-a0d7-ba363d87b70c",
|
113
|
+
"metadata": {
|
114
|
+
"execution": {
|
115
|
+
"iopub.execute_input": "2025-02-27T15:42:47.354237Z",
|
116
|
+
"iopub.status.busy": "2025-02-27T15:42:47.353238Z",
|
117
|
+
"iopub.status.idle": "2025-02-27T15:42:47.360634Z",
|
118
|
+
"shell.execute_reply": "2025-02-27T15:42:47.360090Z",
|
119
|
+
"shell.execute_reply.started": "2025-02-27T15:42:47.354193Z"
|
120
|
+
}
|
121
|
+
},
|
122
|
+
"outputs": [],
|
123
|
+
"source": [
|
124
|
+
"parsed_markdown = marko.parse(cell_sources[0])\n",
|
125
|
+
"print(type(parsed_markdown))"
|
126
|
+
]
|
127
|
+
},
|
128
|
+
{
|
129
|
+
"cell_type": "code",
|
130
|
+
"execution_count": null,
|
131
|
+
"id": "f3d66578-cf02-4e95-a102-f84fbe3aae95",
|
132
|
+
"metadata": {
|
133
|
+
"execution": {
|
134
|
+
"iopub.execute_input": "2025-02-27T15:44:51.000320Z",
|
135
|
+
"iopub.status.busy": "2025-02-27T15:44:51.000168Z",
|
136
|
+
"iopub.status.idle": "2025-02-27T15:44:51.007790Z",
|
137
|
+
"shell.execute_reply": "2025-02-27T15:44:51.007211Z",
|
138
|
+
"shell.execute_reply.started": "2025-02-27T15:44:51.000309Z"
|
139
|
+
}
|
140
|
+
},
|
141
|
+
"outputs": [],
|
142
|
+
"source": [
|
143
|
+
"parsed_source = marko.parse_source(cell_sources[0])"
|
144
|
+
]
|
145
|
+
},
|
146
|
+
{
|
147
|
+
"cell_type": "code",
|
148
|
+
"execution_count": null,
|
149
|
+
"id": "7cc1a99c-46b3-42c9-8b38-77fb721586a7",
|
150
|
+
"metadata": {
|
151
|
+
"execution": {
|
152
|
+
"iopub.execute_input": "2025-02-27T15:45:28.853162Z",
|
153
|
+
"iopub.status.busy": "2025-02-27T15:45:28.852948Z",
|
154
|
+
"iopub.status.idle": "2025-02-27T15:45:28.856556Z",
|
155
|
+
"shell.execute_reply": "2025-02-27T15:45:28.856159Z",
|
156
|
+
"shell.execute_reply.started": "2025-02-27T15:45:28.853153Z"
|
157
|
+
}
|
158
|
+
},
|
159
|
+
"outputs": [],
|
160
|
+
"source": [
|
161
|
+
"? marko"
|
162
|
+
]
|
163
|
+
},
|
164
|
+
{
|
165
|
+
"cell_type": "code",
|
166
|
+
"execution_count": null,
|
167
|
+
"id": "ca5f9660-1f56-4de9-8127-5e7e4a922b5f",
|
168
|
+
"metadata": {},
|
169
|
+
"outputs": [],
|
170
|
+
"source": []
|
171
|
+
},
|
172
|
+
{
|
173
|
+
"cell_type": "code",
|
174
|
+
"execution_count": null,
|
175
|
+
"id": "e967897d83588f86",
|
176
|
+
"metadata": {},
|
177
|
+
"outputs": [],
|
178
|
+
"source": []
|
179
|
+
},
|
180
|
+
{
|
181
|
+
"cell_type": "markdown",
|
182
|
+
"id": "ed29f0e5d46a7c20",
|
183
|
+
"metadata": {},
|
184
|
+
"source": [
|
185
|
+
"# Create Glossary\n",
|
186
|
+
"## Glossary Name\n",
|
187
|
+
"\n",
|
188
|
+
"Another Test\n",
|
189
|
+
"\n",
|
190
|
+
"## Language\n",
|
191
|
+
"English\n",
|
192
|
+
"\n",
|
193
|
+
"## Description\n",
|
194
|
+
"\n",
|
195
|
+
"Another quick test\n",
|
196
|
+
"\n",
|
197
|
+
"## Usage\n",
|
198
|
+
"Alternate sundays\n",
|
199
|
+
"\n",
|
200
|
+
"## <Qualified Name>\n",
|
201
|
+
"\n",
|
202
|
+
"## <GUID>"
|
203
|
+
]
|
204
|
+
},
|
205
|
+
{
|
206
|
+
"cell_type": "code",
|
207
|
+
"execution_count": null,
|
208
|
+
"id": "e36a5074b9a94c1a",
|
209
|
+
"metadata": {},
|
210
|
+
"outputs": [],
|
211
|
+
"source": []
|
212
|
+
}
|
213
|
+
],
|
214
|
+
"metadata": {
|
215
|
+
"kernelspec": {
|
216
|
+
"display_name": "Python 3 (ipykernel)",
|
217
|
+
"language": "python",
|
218
|
+
"name": "python3"
|
219
|
+
},
|
220
|
+
"language_info": {
|
221
|
+
"codemirror_mode": {
|
222
|
+
"name": "ipython",
|
223
|
+
"version": 3
|
224
|
+
},
|
225
|
+
"file_extension": ".py",
|
226
|
+
"mimetype": "text/x-python",
|
227
|
+
"name": "python",
|
228
|
+
"nbconvert_exporter": "python",
|
229
|
+
"pygments_lexer": "ipython3",
|
230
|
+
"version": "3.12.9"
|
231
|
+
}
|
232
|
+
},
|
233
|
+
"nbformat": 4,
|
234
|
+
"nbformat_minor": 5
|
235
|
+
}
|
@@ -43,6 +43,11 @@ EGERIA_USER = os.environ.get("EGERIA_USER", "erinoverview")
|
|
43
43
|
EGERIA_USER_PASSWORD = os.environ.get("EGERIA_USER_PASSWORD", "secret")
|
44
44
|
EGERIA_JUPYTER = bool(os.environ.get("EGERIA_JUPYTER", "False"))
|
45
45
|
EGERIA_WIDTH = int(os.environ.get("EGERIA_WIDTH", "200"))
|
46
|
+
EGERIA_GLOSSARY_PATH = os.environ.get("EGERIA_GLOSSARY_PATH", None)
|
47
|
+
EGERIA_ROOT_PATH = os.environ.get("EGERIA_ROOT_PATH", "/Users/dwolfson/localGit/egeria-v5-3/egeria-python")
|
48
|
+
EGERIA_FREDDIE_INBOX_PATH = os.environ.get("EGERIA_FREDDIE_INBOX_PATH", "pyegeria/commands/cat/freddies-inbox")
|
49
|
+
EGERIA_FREDDIE_OUTBOX_PATH = os.environ.get("EGERIA_FREDDIE_OUTBOX_PATH", "pyegeria/commands/cat/freddies-outbox")
|
50
|
+
|
46
51
|
|
47
52
|
|
48
53
|
def display_glossaries(
|
@@ -53,6 +58,8 @@ def display_glossaries(
|
|
53
58
|
user_pass: str = EGERIA_USER_PASSWORD,
|
54
59
|
jupyter: bool = EGERIA_JUPYTER,
|
55
60
|
width: int = EGERIA_WIDTH,
|
61
|
+
md: bool = False,
|
62
|
+
form: bool = False,
|
56
63
|
):
|
57
64
|
"""Display either a specified glossary or all glossaries if the search_string is '*'.
|
58
65
|
Parameters
|
@@ -71,10 +78,36 @@ def display_glossaries(
|
|
71
78
|
A boolean indicating whether the output is intended for a Jupyter notebook (default is EGERIA_JUPYTER).
|
72
79
|
width : int, optional
|
73
80
|
The width of the console output (default is EGERIA_WIDTH).
|
81
|
+
md: bool, [default=False]
|
82
|
+
If true, a simplified markdown report of the glossaries will be created. Filename is Glossaries-<DATE>-<ACTION>
|
83
|
+
The filepath is derived from the environment variables EGERIA_ROOT_PATH and EGERIA_FREDDIE_OUTPUT_PATH, respectively.
|
84
|
+
form: bool, [default=False]
|
85
|
+
If true and md is true, a form for the glossaries will be created as a markdown file.
|
86
|
+
If false and md is true, a markdown report for the glossaries will be created.
|
74
87
|
"""
|
75
88
|
m_client = EgeriaTech(view_server, view_url, user_id=user, user_pwd=user_pass)
|
76
89
|
token = m_client.create_egeria_bearer_token()
|
90
|
+
|
91
|
+
|
77
92
|
try:
|
93
|
+
if md:
|
94
|
+
if form:
|
95
|
+
action = "Update-Form"
|
96
|
+
else:
|
97
|
+
action = "Report"
|
98
|
+
file_path = os.path.join(EGERIA_ROOT_PATH, EGERIA_FREDDIE_OUTBOX_PATH)
|
99
|
+
file_name = f"Glossaries-{time.strftime('%Y-%m-%d-%H-%M-%S')}-{action}.md"
|
100
|
+
full_file_path = os.path.join(file_path, file_name)
|
101
|
+
os.makedirs(os.path.dirname(full_file_path), exist_ok=True)
|
102
|
+
output = m_client.find_glossaries(search_string, md=md, form=form)
|
103
|
+
if output == "NO_GLOSSARIES_FOUND":
|
104
|
+
print(f"\n==> No glossaries found for search string '{search_string}'")
|
105
|
+
return
|
106
|
+
with open(full_file_path, 'w') as f:
|
107
|
+
f.write(output)
|
108
|
+
print(f"\n==> Glossaries output written to {full_file_path}")
|
109
|
+
return
|
110
|
+
|
78
111
|
table = Table(
|
79
112
|
title=f"Glossary List @ {time.asctime()}",
|
80
113
|
style="bright_white on black",
|
@@ -139,8 +172,14 @@ def main():
|
|
139
172
|
search_string = Prompt.ask(
|
140
173
|
"Enter the glossary you are searching for or '*' for all:", default="*"
|
141
174
|
)
|
175
|
+
mdq = Prompt.ask("Do you want to create a markdown report?", choices=["y", "n"], default="n")
|
176
|
+
md = True if mdq.lower() == "y" else False
|
177
|
+
|
178
|
+
formq = Prompt.ask("Do you want to create a form?", choices=["y", "n"], default="n")
|
179
|
+
form = True if formq.lower() == "y" else False
|
142
180
|
|
143
|
-
display_glossaries(search_string, server, url, userid,
|
181
|
+
display_glossaries(search_string, server, url, userid,
|
182
|
+
user_pass, md = md, form = form)
|
144
183
|
|
145
184
|
except KeyboardInterrupt:
|
146
185
|
pass
|
@@ -43,7 +43,10 @@ EGERIA_USER = os.environ.get("EGERIA_USER", "erinoverview")
|
|
43
43
|
EGERIA_USER_PASSWORD = os.environ.get("EGERIA_USER_PASSWORD", "secret")
|
44
44
|
EGERIA_JUPYTER = bool(os.environ.get("EGERIA_JUPYTER", "False"))
|
45
45
|
EGERIA_WIDTH = int(os.environ.get("EGERIA_WIDTH", "200"))
|
46
|
-
|
46
|
+
EGERIA_GLOSSARY_PATH = os.environ.get("EGERIA_GLOSSARY_PATH", None)
|
47
|
+
EGERIA_ROOT_PATH = os.environ.get("EGERIA_ROOT_PATH", "/Users/dwolfson/localGit/egeria-v5-3/egeria-python")
|
48
|
+
EGERIA_FREDDIE_INBOX_PATH = os.environ.get("EGERIA_FREDDIE_INBOX_PATH", "pyegeria/commands/cat/freddies-inbox")
|
49
|
+
EGERIA_FREDDIE_OUTBOX_PATH = os.environ.get("EGERIA_FREDDIE_OUTBOX_PATH", "pyegeria/commands/cat/freddies-outbox")
|
47
50
|
|
48
51
|
|
49
52
|
def display_glossary_terms(
|
@@ -56,6 +59,8 @@ def display_glossary_terms(
|
|
56
59
|
user_pass: str = EGERIA_USER_PASSWORD,
|
57
60
|
jupyter: bool = EGERIA_JUPYTER,
|
58
61
|
width: int = EGERIA_WIDTH,
|
62
|
+
md: bool = False,
|
63
|
+
form: bool = False,
|
59
64
|
):
|
60
65
|
"""Display a table of glossary terms filtered by search_string and glossary, if specified. If no
|
61
66
|
filters then all terms are displayed. If glossary_guid or name is specified, then only terms from that
|
@@ -84,6 +89,12 @@ def display_glossary_terms(
|
|
84
89
|
Flag to indicate if the output should be formatted for Jupyter notebook. Defaults to EGERIA_JUPYTER.
|
85
90
|
width : int
|
86
91
|
The width of the console output. Defaults to EGERIA_WIDTH.
|
92
|
+
md: bool, [default=False]
|
93
|
+
If true, a simplified markdown report of the terms will be created. Filename is Terms-<DATE>-<ACTION>
|
94
|
+
The filepath is derived from the environment variables EGERIA_ROOT_PATH and EGERIA_FREDDIE_OUTPUT_PATH, respectively.
|
95
|
+
form: bool, [default=False]
|
96
|
+
If true and md is true, a form for the terms will be created as a markdown file.
|
97
|
+
If false and md is true, a markdown report for the terms will be created.
|
87
98
|
"""
|
88
99
|
|
89
100
|
console = Console(
|
@@ -101,6 +112,34 @@ def display_glossary_terms(
|
|
101
112
|
elif (glossary_guid is not None) and (len(glossary_guid) < 10):
|
102
113
|
glossary_guid = None
|
103
114
|
|
115
|
+
if md:
|
116
|
+
if form:
|
117
|
+
action = "Update-Form"
|
118
|
+
else:
|
119
|
+
action = "Report"
|
120
|
+
try:
|
121
|
+
file_path = os.path.join(EGERIA_ROOT_PATH, EGERIA_FREDDIE_OUTBOX_PATH)
|
122
|
+
file_name = f"Terms-{time.strftime('%Y-%m-%d-%H-%M-%S')}-{action}.md"
|
123
|
+
full_file_path = os.path.join(file_path, file_name)
|
124
|
+
os.makedirs(os.path.dirname(full_file_path), exist_ok=True)
|
125
|
+
output = g_client.find_glossaries(search_string, md=md, form=form)
|
126
|
+
if output == "NO_TERMS_FOUND":
|
127
|
+
print(f"\n==> No terms found for search string '{search_string}'")
|
128
|
+
return
|
129
|
+
with open(full_file_path, 'w') as f:
|
130
|
+
f.write(output)
|
131
|
+
print(f"\n==> Terms output written to {full_file_path}")
|
132
|
+
return
|
133
|
+
except (
|
134
|
+
InvalidParameterException,
|
135
|
+
PropertyServerException,
|
136
|
+
UserNotAuthorizedException,
|
137
|
+
) as e:
|
138
|
+
console.print_exception()
|
139
|
+
finally:
|
140
|
+
g_client.close_session()
|
141
|
+
|
142
|
+
|
104
143
|
def generate_table(search_string: str, glossary_guid: str) -> Table:
|
105
144
|
"""Make a new table."""
|
106
145
|
table = Table(
|
@@ -234,8 +273,16 @@ def main():
|
|
234
273
|
"Enter the name of the glossary to search or '*' for all glossaries:",
|
235
274
|
default="*",
|
236
275
|
)
|
276
|
+
|
277
|
+
mdq = Prompt.ask("Do you want to create a markdown report?", choices=["y", "n"], default="n")
|
278
|
+
md = True if mdq.lower() == "y" else False
|
279
|
+
|
280
|
+
formq = Prompt.ask("Do you want to create a form?", choices=["y", "n"], default="n")
|
281
|
+
form = True if formq.lower() == "y" else False
|
282
|
+
|
237
283
|
display_glossary_terms(
|
238
|
-
|
284
|
+
search_string, guid, glossary_name, server, url,
|
285
|
+
userid, user_pass, md = md, form = form
|
239
286
|
)
|
240
287
|
|
241
288
|
except KeyboardInterrupt:
|
pyegeria/commands/cli/egeria.py
CHANGED
@@ -211,6 +211,19 @@ from pyegeria.commands.tech.list_valid_metadata_values import display_metadata_v
|
|
211
211
|
default=os.environ.get("EGERIA_GLOSSARY_PATH", "/home/jovyan/loading-bay/glossary"),
|
212
212
|
help="Path to glossary import/export files",
|
213
213
|
)
|
214
|
+
|
215
|
+
@click.option(
|
216
|
+
"--inbox_path",
|
217
|
+
default=os.environ.get("EGERIA_ROOT_PATH", "/home/jovyan"),
|
218
|
+
help="Path to inbox files",
|
219
|
+
)
|
220
|
+
|
221
|
+
@click.option(
|
222
|
+
"--outbox_path",
|
223
|
+
default=os.environ.get("EGERIA_FREDDIE_OUTBOX_PATH", "distribution-hub/freddies-outbox"),
|
224
|
+
help="Path to outbox files",
|
225
|
+
)
|
226
|
+
|
214
227
|
@click.pass_context
|
215
228
|
def cli(
|
216
229
|
ctx,
|
@@ -231,6 +244,9 @@ def cli(
|
|
231
244
|
width,
|
232
245
|
home_glossary_guid,
|
233
246
|
glossary_path,
|
247
|
+
inbox_path,
|
248
|
+
outbox_path,
|
249
|
+
|
234
250
|
):
|
235
251
|
"""An Egeria Command Line interface for Operations"""
|
236
252
|
ctx.obj = Config(
|
@@ -251,6 +267,8 @@ def cli(
|
|
251
267
|
width,
|
252
268
|
home_glossary_guid,
|
253
269
|
glossary_path,
|
270
|
+
inbox_path,
|
271
|
+
outbox_path
|
254
272
|
)
|
255
273
|
ctx.max_content_width = 250
|
256
274
|
ctx.ensure_object(Config)
|
@@ -1114,8 +1132,20 @@ def glossary_group(ctx):
|
|
1114
1132
|
default="*",
|
1115
1133
|
help="Optionally restrict search to a specific named glossary",
|
1116
1134
|
)
|
1135
|
+
@click.option(
|
1136
|
+
"--markdown",
|
1137
|
+
flag_value=True,
|
1138
|
+
default=False,
|
1139
|
+
help="Optionally display glossary list in markdown format",
|
1140
|
+
)
|
1141
|
+
@click.option(
|
1142
|
+
"--form",
|
1143
|
+
flag_value=True,
|
1144
|
+
default=False,
|
1145
|
+
help="Optionally display glossary list as an update form",
|
1146
|
+
)
|
1117
1147
|
@click.pass_context
|
1118
|
-
def show_terms(ctx, search_string, glossary_guid, glossary_name):
|
1148
|
+
def show_terms(ctx, search_string, glossary_guid, glossary_name, md, form):
|
1119
1149
|
"""Find and display glossary terms"""
|
1120
1150
|
c = ctx.obj
|
1121
1151
|
display_glossary_terms(
|
@@ -1128,6 +1158,8 @@ def show_terms(ctx, search_string, glossary_guid, glossary_name):
|
|
1128
1158
|
c.password,
|
1129
1159
|
c.jupyter,
|
1130
1160
|
c.width,
|
1161
|
+
md,
|
1162
|
+
form,
|
1131
1163
|
)
|
1132
1164
|
|
1133
1165
|
|
@@ -1685,8 +1717,20 @@ def databases(ctx):
|
|
1685
1717
|
|
1686
1718
|
@glossary_group.command("glossaries")
|
1687
1719
|
@click.option("--search_string", default="*", help="Name to search for glossaries")
|
1720
|
+
@click.option(
|
1721
|
+
"--markdown",
|
1722
|
+
flag_value=True,
|
1723
|
+
default=False,
|
1724
|
+
help="Optionally display glossary list in markdown format",
|
1725
|
+
)
|
1726
|
+
@click.option(
|
1727
|
+
"--form",
|
1728
|
+
flag_value=True,
|
1729
|
+
default=False,
|
1730
|
+
help="Optionally display glossary list as an update form",
|
1731
|
+
)
|
1688
1732
|
@click.pass_context
|
1689
|
-
def glossaries(ctx, search_string):
|
1733
|
+
def glossaries(ctx, search_string, md, form):
|
1690
1734
|
"""Display a list of glossaries"""
|
1691
1735
|
c = ctx.obj
|
1692
1736
|
display_glossaries(
|
@@ -1697,6 +1741,8 @@ def glossaries(ctx, search_string):
|
|
1697
1741
|
c.password,
|
1698
1742
|
c.jupyter,
|
1699
1743
|
c.width,
|
1744
|
+
md,
|
1745
|
+
form
|
1700
1746
|
)
|
1701
1747
|
|
1702
1748
|
|
@@ -325,8 +325,20 @@ def glossary_group(ctx):
|
|
325
325
|
default="*",
|
326
326
|
help="Optionally restrict search to a specific named glossary",
|
327
327
|
)
|
328
|
+
@click.option(
|
329
|
+
"--markdown",
|
330
|
+
flag_value=True,
|
331
|
+
default=False,
|
332
|
+
help="Optionally display glossary list in markdown format",
|
333
|
+
)
|
334
|
+
@click.option(
|
335
|
+
"--form",
|
336
|
+
flag_value=True,
|
337
|
+
default=False,
|
338
|
+
help="Optionally display glossary list as an update form",
|
339
|
+
)
|
328
340
|
@click.pass_context
|
329
|
-
def show_terms(ctx, search_string, glossary_guid, glossary_name):
|
341
|
+
def show_terms(ctx, search_string, glossary_guid, glossary_name, md, form):
|
330
342
|
"""Find and display glossary terms"""
|
331
343
|
c = ctx.obj
|
332
344
|
display_glossary_terms(
|
@@ -339,13 +351,27 @@ def show_terms(ctx, search_string, glossary_guid, glossary_name):
|
|
339
351
|
c.password,
|
340
352
|
c.jupyter,
|
341
353
|
c.width,
|
354
|
+
md,
|
355
|
+
form,
|
342
356
|
)
|
343
357
|
|
344
358
|
|
345
359
|
@glossary_group.command("glossaries")
|
346
360
|
@click.option("--search_string", default="*", help="Name to search for glossaries")
|
361
|
+
@click.option(
|
362
|
+
"--markdown",
|
363
|
+
flag_value=True,
|
364
|
+
default=False,
|
365
|
+
help="Optionally display glossary list in markdown format",
|
366
|
+
)
|
367
|
+
@click.option(
|
368
|
+
"--form",
|
369
|
+
flag_value=True,
|
370
|
+
default=False,
|
371
|
+
help="Optionally display glossary list as an update form",
|
372
|
+
)
|
347
373
|
@click.pass_context
|
348
|
-
def glossaries(ctx, search_string):
|
374
|
+
def glossaries(ctx, search_string, md, form):
|
349
375
|
"""Display a list of glossaries"""
|
350
376
|
c = ctx.obj
|
351
377
|
display_glossaries(
|
@@ -356,6 +382,8 @@ def glossaries(ctx, search_string):
|
|
356
382
|
c.password,
|
357
383
|
c.jupyter,
|
358
384
|
c.width,
|
385
|
+
md,
|
386
|
+
form,
|
359
387
|
)
|
360
388
|
|
361
389
|
|
@@ -21,6 +21,8 @@ class Config(object):
|
|
21
21
|
width: int,
|
22
22
|
home_glossary_guid: str,
|
23
23
|
glossary_path: str,
|
24
|
+
inbox_path: str,
|
25
|
+
outbox_path: str
|
24
26
|
):
|
25
27
|
self.metadata_store = server
|
26
28
|
self.metadata_store_url = url
|
@@ -41,6 +43,8 @@ class Config(object):
|
|
41
43
|
self.url = url
|
42
44
|
self.home_glossary_guid = home_glossary_guid
|
43
45
|
self.glossary_path = glossary_path
|
46
|
+
self.inbox_path = inbox_path
|
47
|
+
self.outbox_path = outbox_path
|
44
48
|
|
45
49
|
|
46
50
|
pass_config = click.make_pass_decorator(Config)
|