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.
@@ -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, user_pass)
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
- EGERIA_HOME_GLOSSARY_GUID = os.environ.get("EGERIA_HOME_GLOSSARY_GUID", None)
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
- search_string, guid, glossary_name, server, url, userid, user_pass
284
+ search_string, guid, glossary_name, server, url,
285
+ userid, user_pass, md = md, form = form
239
286
  )
240
287
 
241
288
  except KeyboardInterrupt:
@@ -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)