pyegeria 5.4.0.26__py3-none-any.whl → 5.4.0.28__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.
Files changed (46) hide show
  1. commands/cat/debug_log +868 -7794
  2. commands/cat/debug_log.2025-08-18_11-34-38_088636.zip +0 -0
  3. commands/cat/list_collections.py +1 -1
  4. commands/cat/list_format_set.py +6 -8
  5. commands/cli/egeria.py +2 -2
  6. commands/cli/egeria_cat.py +3 -2
  7. commands/ops/load_archive.py +2 -2
  8. md_processing/data/commands.json +7 -7
  9. md_processing/dr_egeria_inbox/dr_egeria_intro_part1.md +7 -7
  10. md_processing/dr_egeria_inbox/dr_egeria_intro_part2.md +36 -31
  11. md_processing/dr_egeria_outbox/friday/processed-2025-08-22 21:22-dr_egeria_intro_part1.md +312 -0
  12. md_processing/dr_egeria_outbox/friday/processed-2025-08-22 21:23-dr_egeria_intro_part1.md +265 -0
  13. md_processing/dr_egeria_outbox/friday/processed-2025-08-23 15:06-dr_egeria_intro_part1.md +230 -0
  14. md_processing/dr_egeria_outbox/friday/processed-2025-08-23 15:30-dr_egeria_intro_part1.md +296 -0
  15. md_processing/dr_egeria_outbox/friday/processed-2025-08-23 15:31-dr_egeria_intro_part1.md +253 -0
  16. md_processing/dr_egeria_outbox/friday/processed-2025-08-23 16:08-dr_egeria_intro_part2.md +343 -0
  17. md_processing/dr_egeria_outbox/friday/processed-2025-08-23 16:12-dr_egeria_intro_part2.md +343 -0
  18. md_processing/md_commands/glossary_commands.py +888 -951
  19. md_processing/md_commands/product_manager_commands.py +8 -270
  20. md_processing/md_commands/project_commands.py +1 -1
  21. md_processing/md_processing_utils/common_md_proc_utils.py +138 -64
  22. md_processing/md_processing_utils/common_md_utils.py +2 -1
  23. pyegeria/__init__.py +2 -3
  24. pyegeria/_client_new.py +4 -3
  25. pyegeria/_output_formats.py +5 -3
  26. pyegeria/collection_manager.py +32 -29
  27. pyegeria/{load_config.py → config.py} +7 -2
  28. pyegeria/data_designer.py +154 -194
  29. pyegeria/egeria_cat_client.py +46 -28
  30. pyegeria/egeria_client.py +71 -72
  31. pyegeria/egeria_config_client.py +37 -7
  32. pyegeria/egeria_my_client.py +45 -10
  33. pyegeria/egeria_tech_client.py +68 -57
  34. pyegeria/glossary_manager.py +495 -124
  35. pyegeria/governance_officer.py +2 -2
  36. pyegeria/logging_configuration.py +1 -4
  37. pyegeria/models.py +1 -1
  38. pyegeria/project_manager.py +359 -511
  39. pyegeria/utils.py +1 -3
  40. {pyegeria-5.4.0.26.dist-info → pyegeria-5.4.0.28.dist-info}/METADATA +1 -1
  41. {pyegeria-5.4.0.26.dist-info → pyegeria-5.4.0.28.dist-info}/RECORD +44 -38
  42. md_processing/md_processing_utils/solution_architect_log.log +0 -0
  43. pyegeria/glossary_browser.py +0 -1259
  44. {pyegeria-5.4.0.26.dist-info → pyegeria-5.4.0.28.dist-info}/LICENSE +0 -0
  45. {pyegeria-5.4.0.26.dist-info → pyegeria-5.4.0.28.dist-info}/WHEEL +0 -0
  46. {pyegeria-5.4.0.26.dist-info → pyegeria-5.4.0.28.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,230 @@
1
+ # Introduction to Dr.Egeria - an Egeria Markdown Processor
2
+
3
+
4
+ A constant challenge in managing information is gathering enough metadata about the information to
5
+ allow us to manage it. A common approach is to build fancy graphical user interfaces hoping that they
6
+ will be attractive enough and easy enough to use that people will do so.
7
+
8
+ Unfortunately, however, this ignores the fundamental fact that to use one of these nice GUI
9
+ applications, you have to step away from the tools and processes that you were in the midst of performing.
10
+ You have to leave your world and enter a new, often less familiar one.
11
+
12
+ Dr.Egeria, is an experiment in turning this around. Its not that fancy graphical user
13
+ interfaces don't have a role - but rather, to look at what we can do to support the
14
+ tools and approaches people already use. And maybe even make their day job a little
15
+ easier and a little more enjoyable.
16
+
17
+ So this is what we are exploring with Dr.Egeria. An Egeria Markdown language that allows
18
+ users to intermix requests to Egeria with other text through the use of standard Markdown. The markdown text
19
+ that we process can be in standard markdown (.md) files, in Jupyter notebooks, and perhaps other file formats.
20
+
21
+ This markdown file is an example. You will see that we intersperse normal narrative text (such as this)
22
+ with Commands to Egeria. We introduce a specific vocabulary to make Egeria requests.
23
+
24
+ In the example below we will create a new Egeria glossary to hold definitions related to Dr.Egeria.
25
+ We will then show how we can process this file which will record the information into Egeria and create a new
26
+ output file that acts as both a receipt showing what was processed as well as a starting point for making updates.
27
+
28
+ So here we go! First lets define a new Glossary::
29
+
30
+ ___
31
+
32
+ # Don't Update Glossary
33
+
34
+ ## Glossary Name
35
+
36
+ Egeria-Markdown
37
+
38
+ ## Language
39
+
40
+ English
41
+
42
+ ## Description
43
+
44
+ A Glossary to describe the vocabulary of Dr.Egeria - an Egeria Markdown language to support the exchange of metadata in a Markdown form.
45
+ Dr.Egeria allows users to create metadata annotations using any text entry system that supports the entry of standard Markdown
46
+ notation and, through post-processing
47
+ commands, validates the Egeria content and sends the requests to be sent to Egeria.
48
+
49
+ ## Usage
50
+
51
+ 1. (optional) load an example or template for the type of object from Egeria.
52
+
53
+ 2. Create a new document (perhaps from a template) and edit it, adding in the content with the Dr.Egeria controlled Markdown language.
54
+ 3. Process the document to validate and display it before you submit it, Validation may annotate your document with recommendations and potential issues.
55
+ 4. Submit the document to Egeria using the Dr.Egeria commands.
56
+ 5. Review the resulting output document to see what was created and give you a starting point for making updates.
57
+
58
+ > Hint: Many of the hey_egeria commands have the option to save their output as Dr.Egeria markdown form.
59
+
60
+ ## Version
61
+
62
+
63
+ ## Status
64
+
65
+ ACTIVE
66
+
67
+
68
+
69
+ ___
70
+
71
+
72
+ # First Walk-Through
73
+ The block of markdown above is a request to create a new Egeria Glossary called `Egeria-Markdown`. Let's briefly walk
74
+ through. The command starts when we see `# Create Glossary`. This is a known phrase in Dr.Egeria. When we see this
75
+ phrase we recognize that this is an Egeria markdown request block. The request block ends if we encounter another `#` or
76
+ `___`, or run out of text. Within this request block we note some **attributes** that begin with a `## `. The first that we encounter is `## Glossary Name`. Not all attributes need to be filled in. Later, we'll process this file and demonstrate how to tell - but first, lets look at the attributes shown:
77
+
78
+ * `## Glossary Name` - this is the display name of the glossary. In this case the name is `Egeria-Markdown` As you can see, the value of the attribute is the plain text that follows it.
79
+ * `## Language` - what language will the terms of the glossary be in (yes there are ways to have mixed language but Dr.Egeria strives to be as simple as possible).
80
+ * `## Description` - a description of the glossary and its purpose.
81
+ * `## Usage` - how the glossary is meant to be used, and by whom.
82
+ * `## Qualified Name` - every element in Egeria must have a unique qualified name that we use to distinguish it from all other elements. The qualified name is meant to be understandable by humans, although it may follow formatting conventions. This attribute can be left blank for now - it will be automatically generated if empty.
83
+ * `## GUID` - same story as qualified name except that this is meant for automation and not people. It is always created for us.
84
+
85
+ And that's it. That's all we need to do to specify the creation of a new glossary (well - mostly - we'll reveal a few
86
+ more details a bit later).
87
+
88
+ ## Great! That was easy!
89
+
90
+ We now have a nice, clean, new...and empty...glossary - guess we better start filling it. Lets start filling it with terms.
91
+
92
+ ___
93
+
94
+ No elements found
95
+
96
+ # Don't Create Term
97
+
98
+ ## In Glossary
99
+
100
+ Glossary::Egeria-Markdown
101
+
102
+ ## Term Name
103
+
104
+ Source
105
+
106
+ ## Summary
107
+
108
+ Source of the markdown content.
109
+
110
+ ## Description
111
+
112
+ Source of the markdown content - could be jupter or plain markdown file.
113
+
114
+ ## Abbreviation
115
+
116
+ ## Examples
117
+
118
+ ## Usage
119
+
120
+ ## Version
121
+
122
+ 0.2
123
+
124
+ ## Status
125
+
126
+ ACTIVE
127
+
128
+ ## Qualified Name
129
+
130
+ ## GUID
131
+
132
+
133
+ ___
134
+
135
+ # Don't Create Term
136
+
137
+ ## In Glossary
138
+
139
+ Glossary::Egeria-Markdown
140
+
141
+ ## Term Name
142
+
143
+ Directive
144
+
145
+ ## Summary
146
+
147
+ A directive defines how the command is to be processed.
148
+
149
+ ## Description
150
+
151
+ Directives are one of:
152
+
153
+ * display - just display what we've found
154
+ * validate - check the validity of the requested action
155
+ * process - process the requested action
156
+
157
+
158
+ ## Version
159
+
160
+ 0.1
161
+
162
+ ## Status
163
+
164
+ ACTIVE
165
+
166
+ ## Qualified Name
167
+
168
+ ## GUID
169
+
170
+ ___
171
+
172
+ # Some terms specified - Now what?
173
+
174
+ Ok - we've now defined a glossary and three terms to go into the glossary. A few observations.
175
+
176
+ * There is a degree of freedom in writing the definitions. The attributes aren't always in the same
177
+ order and optional attributes don't need to be specified at all. We try to make things as easy as possible.
178
+ * We can run a definition file through a validation process to check our proposed definition and provide feedback.
179
+ * When we process a definition we will use the same validation process before trying to update Egeria
180
+ with the requested definitions - requests may get rejected or altered - this will be consistent with the feedback we
181
+ provide during validation.
182
+
183
+ Here is what we'll do next.
184
+
185
+ ## Next
186
+ > Tip: An easy way to get started is by installing [Egeria Workspaces](https://github.com/odpi/egeria-workspaces) and
187
+ > using the hey_egeria command line interface. Tutorials are available at [Egeria-Workspaces](https://youtu.be/Dc5i5EpRusE).
188
+
189
+ We will run a small program called `dr_egeria_md.py` to operate on this markdown file.
190
+ When we run this program we tell it not just the name of the file to process but also provide a directive on what to do.
191
+ Currently we have the choice of:
192
+
193
+ 1. Display - just parse the file, breaking it down into request blocks, and display what we find
194
+ 2. Validate - parse the file and validate if the commands can be processed - showing information about what we observe.
195
+ 3. Process - parse the request blocks and execute the commands - and produce a new output file to simplify further processing.
196
+
197
+
198
+ # Great --> let's give it a try!
199
+
200
+ Ok - its processed the file and generated output to the console that shows us what it has done.
201
+ We also now have a new file in the designated outbox (specified by an Environment Variable).
202
+ If we review that file, we see that it has similar content to this original file except that
203
+ the **Create** statements have been replaced with **Update** statements and
204
+ attributes such as **Qualified Name** and **GUID** now contain the known values.
205
+
206
+ This means that if we want to make changes to the definitions that we have
207
+ created, all we need to do is to make changes to the updatable attributes in this
208
+ new document and resubmit it - pretty simple.
209
+
210
+ Here is a diagram of this process from the user perspective:
211
+
212
+ ```mermaid
213
+ flowchart TD
214
+ A[Text Editor or Jupyter Notebook] --> B(dr.egeria content)
215
+ B --> C{dr.egeria command}
216
+ C -->|display| D[console output]
217
+ C -->|validate| E[console validation output and file]
218
+ C -->|process| F[console output and processed output file]
219
+ F-->|Additional Updates|A
220
+ E-->|Additional Updates|A
221
+ ```
222
+
223
+ In the next section we'll see how we can update and extend what we have done by creating
224
+ some glossary categories and then assigning categories to the terms.
225
+ To do this we will copy the output document that we just created and call the
226
+ copy dr_egeria_intro_part2.md. The text of the document has also been updated
227
+ to reflect the purpose. Let's open that now!
228
+ # Provenance
229
+
230
+ * Results from processing file dr_egeria_intro_part1.md on 2025-08-23 15:06
@@ -0,0 +1,296 @@
1
+ # Introduction to Dr.Egeria - an Egeria Markdown Processor
2
+
3
+
4
+ A constant challenge in managing information is gathering enough metadata about the information to
5
+ allow us to manage it. A common approach is to build fancy graphical user interfaces hoping that they
6
+ will be attractive enough and easy enough to use that people will do so.
7
+
8
+ Unfortunately, however, this ignores the fundamental fact that to use one of these nice GUI
9
+ applications, you have to step away from the tools and processes that you were in the midst of performing.
10
+ You have to leave your world and enter a new, often less familiar one.
11
+
12
+ Dr.Egeria, is an experiment in turning this around. Its not that fancy graphical user
13
+ interfaces don't have a role - but rather, to look at what we can do to support the
14
+ tools and approaches people already use. And maybe even make their day job a little
15
+ easier and a little more enjoyable.
16
+
17
+ So this is what we are exploring with Dr.Egeria. An Egeria Markdown language that allows
18
+ users to intermix requests to Egeria with other text through the use of standard Markdown. The markdown text
19
+ that we process can be in standard markdown (.md) files, in Jupyter notebooks, and perhaps other file formats.
20
+
21
+ This markdown file is an example. You will see that we intersperse normal narrative text (such as this)
22
+ with Commands to Egeria. We introduce a specific vocabulary to make Egeria requests.
23
+
24
+ In the example below we will create a new Egeria glossary to hold definitions related to Dr.Egeria.
25
+ We will then show how we can process this file which will record the information into Egeria and create a new
26
+ output file that acts as both a receipt showing what was processed as well as a starting point for making updates.
27
+
28
+ So here we go! First lets define a new Glossary::
29
+
30
+ ___
31
+
32
+ # Don't Update Glossary
33
+
34
+ ## Glossary Name
35
+
36
+ Egeria-Markdown
37
+
38
+ ## Language
39
+
40
+ English
41
+
42
+ ## Description
43
+
44
+ A Glossary to describe the vocabulary of Dr.Egeria - an Egeria Markdown language to support the exchange of metadata in a Markdown form.
45
+ Dr.Egeria allows users to create metadata annotations using any text entry system that supports the entry of standard Markdown
46
+ notation and, through post-processing
47
+ commands, validates the Egeria content and sends the requests to be sent to Egeria.
48
+
49
+ ## Usage
50
+
51
+ 1. (optional) load an example or template for the type of object from Egeria.
52
+
53
+ 2. Create a new document (perhaps from a template) and edit it, adding in the content with the Dr.Egeria controlled Markdown language.
54
+ 3. Process the document to validate and display it before you submit it, Validation may annotate your document with recommendations and potential issues.
55
+ 4. Submit the document to Egeria using the Dr.Egeria commands.
56
+ 5. Review the resulting output document to see what was created and give you a starting point for making updates.
57
+
58
+ > Hint: Many of the hey_egeria commands have the option to save their output as Dr.Egeria markdown form.
59
+
60
+ ## Version
61
+
62
+
63
+ ## Status
64
+
65
+ ACTIVE
66
+
67
+
68
+
69
+ ___
70
+
71
+
72
+ # First Walk-Through
73
+ The block of markdown above is a request to create a new Egeria Glossary called `Egeria-Markdown`. Let's briefly walk
74
+ through. The command starts when we see `# Create Glossary`. This is a known phrase in Dr.Egeria. When we see this
75
+ phrase we recognize that this is an Egeria markdown request block. The request block ends if we encounter another `#` or
76
+ `___`, or run out of text. Within this request block we note some **attributes** that begin with a `## `. The first that we encounter is `## Glossary Name`. Not all attributes need to be filled in. Later, we'll process this file and demonstrate how to tell - but first, lets look at the attributes shown:
77
+
78
+ * `## Glossary Name` - this is the display name of the glossary. In this case the name is `Egeria-Markdown` As you can see, the value of the attribute is the plain text that follows it.
79
+ * `## Language` - what language will the terms of the glossary be in (yes there are ways to have mixed language but Dr.Egeria strives to be as simple as possible).
80
+ * `## Description` - a description of the glossary and its purpose.
81
+ * `## Usage` - how the glossary is meant to be used, and by whom.
82
+ * `## Qualified Name` - every element in Egeria must have a unique qualified name that we use to distinguish it from all other elements. The qualified name is meant to be understandable by humans, although it may follow formatting conventions. This attribute can be left blank for now - it will be automatically generated if empty.
83
+ * `## GUID` - same story as qualified name except that this is meant for automation and not people. It is always created for us.
84
+
85
+ And that's it. That's all we need to do to specify the creation of a new glossary (well - mostly - we'll reveal a few
86
+ more details a bit later).
87
+
88
+ ## Great! That was easy!
89
+
90
+ We now have a nice, clean, new...and empty...glossary - guess we better start filling it. Lets start filling it with terms.
91
+
92
+ ___
93
+
94
+
95
+ ## Reporting on Default Base Attributes - Perhaps couldn't find a valid combination of output_format_set and output_format?
96
+
97
+ # Update GlossaryTerm
98
+
99
+ ## GlossaryTerm Name
100
+
101
+ Command
102
+
103
+ ## Display Name
104
+ Command
105
+
106
+ ## Qualified Name
107
+ [Term::Command::0.2](#7bb48da4-f242-4deb-9293-375bb67bbbcf)
108
+
109
+ ## Category
110
+ None
111
+
112
+ ## Description
113
+ Commands are how a user can request Egeria to take an action such as Create or Update an Egeria element. Dr.Egeriaprovides a limited (but growing) set of commands. Dr.Egeria commands align with the pyegeria ''''''''hey-egeria''''''''command line interface and, of course, the underlying Egeria REST API.The commands currently use the following verbs to act on Egeria elements:* Create* Update* List* Provenance
114
+
115
+ ## GUID
116
+ 7bb48da4-f242-4deb-9293-375bb67bbbcf
117
+
118
+ ## Type Name
119
+ GlossaryTerm
120
+
121
+ ## Metadata Collection Id
122
+ 9905c3cb-94c5-4494-9229-0d6f69c0b842
123
+
124
+ ## Metadata Collection Name
125
+ qs-metadata-store
126
+
127
+ ## Version Identifier
128
+ None
129
+
130
+ ## Classifications
131
+ []
132
+
133
+ ## Additional Properties
134
+ None
135
+
136
+ ## Created By
137
+ erinoverview
138
+
139
+ ## Create Time
140
+ 2025-08-23T20:06:54.150+00:00
141
+
142
+ ## Updated By
143
+ erinoverview
144
+
145
+ ## Update Time
146
+ None
147
+
148
+ ## Effective From
149
+ None
150
+
151
+ ## Effective To
152
+ None
153
+
154
+ ## Version
155
+ 3
156
+
157
+ ## Open Metadata Type Name
158
+ GlossaryTerm
159
+
160
+
161
+
162
+ # Don't Create Term
163
+
164
+ ## In Glossary
165
+
166
+ Glossary::Egeria-Markdown
167
+
168
+ ## Term Name
169
+
170
+ Source
171
+
172
+ ## Summary
173
+
174
+ Source of the markdown content.
175
+
176
+ ## Description
177
+
178
+ Source of the markdown content - could be jupter or plain markdown file.
179
+
180
+ ## Abbreviation
181
+
182
+ ## Examples
183
+
184
+ ## Usage
185
+
186
+ ## Version
187
+
188
+ 0.2
189
+
190
+ ## Status
191
+
192
+ ACTIVE
193
+
194
+ ## Qualified Name
195
+
196
+ ## GUID
197
+
198
+
199
+ ___
200
+
201
+ # Don't Create Term
202
+
203
+ ## In Glossary
204
+
205
+ Glossary::Egeria-Markdown
206
+
207
+ ## Term Name
208
+
209
+ Directive
210
+
211
+ ## Summary
212
+
213
+ A directive defines how the command is to be processed.
214
+
215
+ ## Description
216
+
217
+ Directives are one of:
218
+
219
+ * display - just display what we've found
220
+ * validate - check the validity of the requested action
221
+ * process - process the requested action
222
+
223
+
224
+ ## Version
225
+
226
+ 0.1
227
+
228
+ ## Status
229
+
230
+ ACTIVE
231
+
232
+ ## Qualified Name
233
+
234
+ ## GUID
235
+
236
+ ___
237
+
238
+ # Some terms specified - Now what?
239
+
240
+ Ok - we've now defined a glossary and three terms to go into the glossary. A few observations.
241
+
242
+ * There is a degree of freedom in writing the definitions. The attributes aren't always in the same
243
+ order and optional attributes don't need to be specified at all. We try to make things as easy as possible.
244
+ * We can run a definition file through a validation process to check our proposed definition and provide feedback.
245
+ * When we process a definition we will use the same validation process before trying to update Egeria
246
+ with the requested definitions - requests may get rejected or altered - this will be consistent with the feedback we
247
+ provide during validation.
248
+
249
+ Here is what we'll do next.
250
+
251
+ ## Next
252
+ > Tip: An easy way to get started is by installing [Egeria Workspaces](https://github.com/odpi/egeria-workspaces) and
253
+ > using the hey_egeria command line interface. Tutorials are available at [Egeria-Workspaces](https://youtu.be/Dc5i5EpRusE).
254
+
255
+ We will run a small program called `dr_egeria_md.py` to operate on this markdown file.
256
+ When we run this program we tell it not just the name of the file to process but also provide a directive on what to do.
257
+ Currently we have the choice of:
258
+
259
+ 1. Display - just parse the file, breaking it down into request blocks, and display what we find
260
+ 2. Validate - parse the file and validate if the commands can be processed - showing information about what we observe.
261
+ 3. Process - parse the request blocks and execute the commands - and produce a new output file to simplify further processing.
262
+
263
+
264
+ # Great --> let's give it a try!
265
+
266
+ Ok - its processed the file and generated output to the console that shows us what it has done.
267
+ We also now have a new file in the designated outbox (specified by an Environment Variable).
268
+ If we review that file, we see that it has similar content to this original file except that
269
+ the **Create** statements have been replaced with **Update** statements and
270
+ attributes such as **Qualified Name** and **GUID** now contain the known values.
271
+
272
+ This means that if we want to make changes to the definitions that we have
273
+ created, all we need to do is to make changes to the updatable attributes in this
274
+ new document and resubmit it - pretty simple.
275
+
276
+ Here is a diagram of this process from the user perspective:
277
+
278
+ ```mermaid
279
+ flowchart TD
280
+ A[Text Editor or Jupyter Notebook] --> B(dr.egeria content)
281
+ B --> C{dr.egeria command}
282
+ C -->|display| D[console output]
283
+ C -->|validate| E[console validation output and file]
284
+ C -->|process| F[console output and processed output file]
285
+ F-->|Additional Updates|A
286
+ E-->|Additional Updates|A
287
+ ```
288
+
289
+ In the next section we'll see how we can update and extend what we have done by creating
290
+ some glossary categories and then assigning categories to the terms.
291
+ To do this we will copy the output document that we just created and call the
292
+ copy dr_egeria_intro_part2.md. The text of the document has also been updated
293
+ to reflect the purpose. Let's open that now!
294
+ # Provenance
295
+
296
+ * Results from processing file dr_egeria_intro_part1.md on 2025-08-23 15:30