pyegeria 5.4.0.33__py3-none-any.whl → 5.4.0.34__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 (132) hide show
  1. commands/.DS_Store +0 -0
  2. commands/cat/.DS_Store +0 -0
  3. commands/cat/.env +8 -0
  4. commands/cat/debug_log.2025-08-26_20-04-40_905576.log.zip +0 -0
  5. commands/cat/debug_log.2025-08-27_20-09-41_795022.log.zip +0 -0
  6. commands/cat/debug_log.log +898 -0
  7. commands/cat/list_format_set.py +4 -1
  8. commands/cat/logs/pyegeria.log +90 -0
  9. commands/cli/debug_log.log +0 -0
  10. commands/doc/.DS_Store +0 -0
  11. commands/ops/logs/pyegeria.log +0 -0
  12. md_processing/.DS_Store +0 -0
  13. md_processing/.idea/.gitignore +8 -0
  14. md_processing/.idea/inspectionProfiles/Project_Default.xml +59 -0
  15. md_processing/.idea/md_processing.iml +15 -0
  16. md_processing/.idea/modules.xml +8 -0
  17. md_processing/.idea/sonarlint/issuestore/index.pb +0 -0
  18. md_processing/.idea/sonarlint/securityhotspotstore/index.pb +0 -0
  19. md_processing/.idea/vcs.xml +6 -0
  20. md_processing/.idea/workspace.xml +107 -0
  21. md_processing/__init__.py +3 -2
  22. md_processing/data/commands.json +11496 -10345
  23. md_processing/dr_egeria.py +14 -6
  24. md_processing/dr_egeria_inbox/Derive-Dr-Gov-Defs.md +8 -0
  25. md_processing/dr_egeria_inbox/Dr.Egeria Templates.md +873 -0
  26. md_processing/dr_egeria_inbox/arch_test.md +57 -0
  27. md_processing/dr_egeria_inbox/archive/dr_egeria_intro.md +254 -0
  28. md_processing/dr_egeria_inbox/archive/dr_egeria_intro_more_terms.md +696 -0
  29. md_processing/dr_egeria_inbox/archive/dr_egeria_intro_part1.md +254 -0
  30. md_processing/dr_egeria_inbox/archive/dr_egeria_intro_part2.md +298 -0
  31. md_processing/dr_egeria_inbox/archive/dr_egeria_intro_part3.md +608 -0
  32. md_processing/dr_egeria_inbox/archive/dr_egeria_intro_part4.md +94 -0
  33. md_processing/dr_egeria_inbox/archive/freddie_intro.md +284 -0
  34. md_processing/dr_egeria_inbox/archive/freddie_intro_orig.md +275 -0
  35. md_processing/dr_egeria_inbox/archive/test-term.md +110 -0
  36. md_processing/dr_egeria_inbox/cat_test.md +100 -0
  37. md_processing/dr_egeria_inbox/collections.md +39 -0
  38. md_processing/dr_egeria_inbox/data_designer_debug.log +6 -0
  39. md_processing/dr_egeria_inbox/data_designer_out.md +60 -0
  40. md_processing/dr_egeria_inbox/data_designer_search_test.md +11 -0
  41. md_processing/dr_egeria_inbox/data_field.md +54 -0
  42. md_processing/dr_egeria_inbox/data_spec.md +77 -0
  43. md_processing/dr_egeria_inbox/data_spec_test.md +2406 -0
  44. md_processing/dr_egeria_inbox/data_test.md +179 -0
  45. md_processing/dr_egeria_inbox/data_test2.md +429 -0
  46. md_processing/dr_egeria_inbox/data_test3.md +462 -0
  47. md_processing/dr_egeria_inbox/dr_egeria_data_designer_1.md +124 -0
  48. md_processing/dr_egeria_inbox/dr_egeria_intro_categories.md +168 -0
  49. md_processing/dr_egeria_inbox/dr_egeria_intro_part1.md +280 -0
  50. md_processing/dr_egeria_inbox/dr_egeria_intro_part2.md +318 -0
  51. md_processing/dr_egeria_inbox/dr_egeria_intro_part3.md +1073 -0
  52. md_processing/dr_egeria_inbox/dr_egeria_isc1.md +44 -0
  53. md_processing/dr_egeria_inbox/generated_help_report.md +9 -0
  54. md_processing/dr_egeria_inbox/glossary_list.md +5 -0
  55. md_processing/dr_egeria_inbox/glossary_search_test.md +40 -0
  56. md_processing/dr_egeria_inbox/glossary_test1.md +363 -0
  57. md_processing/dr_egeria_inbox/gov_def.md +482 -0
  58. md_processing/dr_egeria_inbox/gov_def2.md +447 -0
  59. md_processing/dr_egeria_inbox/img.png +0 -0
  60. md_processing/dr_egeria_inbox/output_tests.md +103 -0
  61. md_processing/dr_egeria_inbox/product.md +211 -0
  62. md_processing/dr_egeria_inbox/rel.md +8 -0
  63. md_processing/dr_egeria_inbox/sb.md +119 -0
  64. md_processing/dr_egeria_inbox/solution-components.md +136 -0
  65. md_processing/dr_egeria_inbox/solution_blueprints.md +118 -0
  66. md_processing/dr_egeria_inbox/synonym_test.md +42 -0
  67. md_processing/dr_egeria_inbox/t2.md +268 -0
  68. md_processing/dr_egeria_outbox/.DS_Store +0 -0
  69. md_processing/dr_egeria_outbox/.obsidian/app.json +1 -0
  70. md_processing/dr_egeria_outbox/.obsidian/appearance.json +1 -0
  71. md_processing/dr_egeria_outbox/.obsidian/community-plugins.json +7 -0
  72. md_processing/dr_egeria_outbox/.obsidian/core-plugins.json +33 -0
  73. md_processing/dr_egeria_outbox/.obsidian/plugins/buttons/main.js +5164 -0
  74. md_processing/dr_egeria_outbox/.obsidian/plugins/buttons/manifest.json +10 -0
  75. md_processing/dr_egeria_outbox/.obsidian/plugins/buttons/styles.css +624 -0
  76. md_processing/dr_egeria_outbox/.obsidian/plugins/calendar/data.json +10 -0
  77. md_processing/dr_egeria_outbox/.obsidian/plugins/calendar/main.js +4459 -0
  78. md_processing/dr_egeria_outbox/.obsidian/plugins/calendar/manifest.json +10 -0
  79. md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-kanban/data.json +3 -0
  80. md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-kanban/main.js +153 -0
  81. md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-kanban/manifest.json +11 -0
  82. md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-kanban/styles.css +1 -0
  83. md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-tasks-plugin/main.js +500 -0
  84. md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-tasks-plugin/manifest.json +12 -0
  85. md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-tasks-plugin/styles.css +1 -0
  86. md_processing/dr_egeria_outbox/.obsidian/plugins/templater-obsidian/data.json +38 -0
  87. md_processing/dr_egeria_outbox/.obsidian/plugins/templater-obsidian/main.js +37 -0
  88. md_processing/dr_egeria_outbox/.obsidian/plugins/templater-obsidian/manifest.json +11 -0
  89. md_processing/dr_egeria_outbox/.obsidian/plugins/templater-obsidian/styles.css +220 -0
  90. md_processing/dr_egeria_outbox/.obsidian/types.json +28 -0
  91. md_processing/dr_egeria_outbox/.obsidian/workspace.json +270 -0
  92. md_processing/dr_egeria_outbox/Button Test.md +11 -0
  93. md_processing/dr_egeria_outbox/Scripts/.DS_Store +0 -0
  94. md_processing/dr_egeria_outbox/Scripts/sendRest.js +24 -0
  95. md_processing/dr_egeria_outbox/Templates/sendToApi.md.md +17 -0
  96. md_processing/dr_egeria_outbox/Untitled.canvas +1 -0
  97. md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 15:00-Derive-Dr-Gov-Defs.md +719 -0
  98. md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 20:13-Derive-Dr-Gov-Defs.md +41 -0
  99. md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 20:14-Derive-Dr-Gov-Defs.md +33 -0
  100. md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 20:50-Derive-Dr-Gov-Defs.md +192 -0
  101. md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 22:08-gov_def2.md +486 -0
  102. md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 22:10-gov_def2.md +486 -0
  103. md_processing/dr_egeria_outbox/thursday/processed-2025-07-18 08:53-gov_def2.md +486 -0
  104. md_processing/dr_egeria_outbox/thursday/processed-2025-07-18 08:54-gov_def2.md +486 -0
  105. md_processing/dr_egeria_outbox/thursday/processed-2025-07-18 09:03-gov_def2.md +486 -0
  106. md_processing/dr_egeria_outbox/thursday/processed-2025-07-18 09:06-gov_def2.md +486 -0
  107. md_processing/dr_egeria_outbox/thursday/processed-2025-07-18 09:10-gov_def2.md +486 -0
  108. md_processing/md_commands/glossary_commands.py +2 -2
  109. md_processing/md_commands/old_project_commands.py +164 -0
  110. md_processing/md_commands/product_manager_commands.py +5 -5
  111. md_processing/md_commands/project_commands.py +368 -134
  112. md_processing/md_processing_utils/common_md_proc_utils.py +1 -0
  113. md_processing/md_processing_utils/common_md_utils.py +13 -1
  114. md_processing/md_processing_utils/debug_log +3 -574
  115. md_processing/md_processing_utils/debug_log.log +0 -0
  116. md_processing/md_processing_utils/determine_width.py +103 -0
  117. md_processing/md_processing_utils/generate_dr_help.py +44 -18
  118. md_processing/md_processing_utils/logs/pyegeria.log +56 -0
  119. md_processing/md_processing_utils/md_processing_constants.py +37 -4
  120. pyegeria/.DS_Store +0 -0
  121. pyegeria/_output_formats.py +38 -10
  122. pyegeria/glossary_manager.py +0 -2
  123. pyegeria/output_formatter.py +9 -8
  124. pyegeria/project_manager.py +541 -420
  125. {pyegeria-5.4.0.33.dist-info → pyegeria-5.4.0.34.dist-info}/METADATA +2 -1
  126. {pyegeria-5.4.0.33.dist-info → pyegeria-5.4.0.34.dist-info}/RECORD +129 -24
  127. md_processing/dr-egeria-outbox/Collections-2025-08-12-13-30-37.md +0 -163
  128. md_processing/dr-egeria-outbox/Collections-2025-08-12-13-35-58.md +0 -474
  129. md_processing/md_processing_utils/dr-egeria-help-2025-07-17T17:22:09.md +0 -2065
  130. {pyegeria-5.4.0.33.dist-info → pyegeria-5.4.0.34.dist-info}/LICENSE +0 -0
  131. {pyegeria-5.4.0.33.dist-info → pyegeria-5.4.0.34.dist-info}/WHEEL +0 -0
  132. {pyegeria-5.4.0.33.dist-info → pyegeria-5.4.0.34.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,486 @@
1
+
2
+
3
+ # Don't Update Regulation
4
+ ## Name
5
+ A Regulation
6
+ ## Summary
7
+ Based on Talmud
8
+ ## Description
9
+ Somewhat chaotic
10
+ ## Domain Identifier
11
+ 1
12
+ ## Version Identifier
13
+
14
+ ## Scope
15
+ InterGalactic
16
+
17
+ ## Importance
18
+ Somewhat
19
+
20
+ ## Implications
21
+ Power; Money
22
+ ## Outcomes
23
+ Happiness
24
+ ## Results
25
+ Unknown
26
+ ## Status
27
+ PROPOSED
28
+
29
+ ____
30
+
31
+ # Don't Create Governance Control
32
+ ## Name
33
+ A Control
34
+ ## Summary
35
+ Based on Talmud
36
+ ## Description
37
+ Somewhat chaotic
38
+ ## Domain Identifier
39
+ 1
40
+ ## Version Identifier
41
+
42
+ ## Scope
43
+ InterGalactic
44
+
45
+ ## Importance
46
+ Somewhat
47
+
48
+ ## Implications
49
+ Power; Money
50
+ ## Outcomes
51
+ Happiness
52
+ ## Results
53
+ Unknown
54
+ ## Status
55
+ PROPOSED
56
+
57
+ ____
58
+
59
+ # Don't Create Governance Rule
60
+ ## Name
61
+ a gov rule
62
+ ## Summary
63
+ Based on Talmud
64
+ ## Description
65
+ Somewhat chaotic
66
+ ## Domain Identifier
67
+ 1
68
+ ## Version Identifier
69
+
70
+ ## Scope
71
+ InterGalactic
72
+
73
+ ## Importance
74
+ Somewhat
75
+
76
+ ## Implications
77
+ Power; Money
78
+ ## Outcomes
79
+ Happiness
80
+ ## Results
81
+ Unknown
82
+ ## Status
83
+ PROPOSED
84
+
85
+ ____
86
+
87
+ # Don't Create Service Level Objectives
88
+ ## Name
89
+ An Obligation
90
+ ## Summary
91
+ Based on Talmud
92
+ ## Description
93
+ Somewhat chaotic
94
+ ## Domain Identifier
95
+ 1
96
+ ## Version Identifier
97
+
98
+ ## Scope
99
+ InterGalactic
100
+
101
+ ## Importance
102
+ Somewhat
103
+
104
+ ## Implications
105
+ Power; Money
106
+ ## Outcomes
107
+ Happiness
108
+ ## Results
109
+ Unknown
110
+ ## Status
111
+ PROPOSED
112
+
113
+ ____
114
+
115
+ # Don't Create Governance Process
116
+ ## Name
117
+ A Gov Process
118
+ ## Summary
119
+ Based on Talmud
120
+ ## Description
121
+ Somewhat chaotic
122
+ ## Domain Identifier
123
+ 1
124
+ ## Version Identifier
125
+
126
+ ## Scope
127
+ InterGalactic
128
+
129
+ ## Importance
130
+ Somewhat
131
+
132
+ ## Implications
133
+ Power; Money
134
+ ## Outcomes
135
+ Happiness
136
+ ## Results
137
+ Unknown
138
+ ## Status
139
+ PROPOSED
140
+
141
+ ____
142
+
143
+ # Don't Create Governance Responsibility
144
+ ## Name
145
+ A Responsibility
146
+ ## Summary
147
+ Based on Talmud
148
+ ## Description
149
+ Somewhat chaotic
150
+ ## Domain Identifier
151
+ 1
152
+ ## Version Identifier
153
+
154
+ ## Scope
155
+ InterGalactic
156
+
157
+ ## Importance
158
+ Somewhat
159
+
160
+ ## Implications
161
+ Power; Money
162
+ ## Outcomes
163
+ Happiness
164
+ ## Results
165
+ Unknown
166
+ ## Status
167
+ PROPOSED
168
+
169
+ ____
170
+
171
+ # Don't Update Governance Procedure
172
+ ## Name
173
+ A Gov procedure
174
+ ## Summary
175
+ Based on Talmud
176
+ ## Description
177
+ Somewhat chaotic
178
+ ## Domain Identifier
179
+ 1
180
+ ## Version Identifier
181
+
182
+ ## Scope
183
+ InterGalactic
184
+
185
+ ## Importance
186
+ Somewhat
187
+
188
+ ## Implications
189
+ Power; Money
190
+ ## Outcomes
191
+ Happiness
192
+ ## Results
193
+ Unknown
194
+ ## Status
195
+ PROPOSED
196
+
197
+ ## Supports Policies
198
+ Approach
199
+
200
+ ## Merge Update
201
+ True
202
+ ____
203
+
204
+ # Don't Create Security Access Control
205
+ ## Name
206
+ sec access
207
+ ## Summary
208
+ Based on Talmud
209
+ ## Description
210
+ Somewhat chaotic
211
+ ## Domain Identifier
212
+ 1
213
+ ## Version Identifier
214
+
215
+ ## Scope
216
+ InterGalactic
217
+
218
+ ## Importance
219
+ Somewhat
220
+
221
+ ## Implications
222
+ Power; Money
223
+ ## Outcomes
224
+ Happiness
225
+ ## Results
226
+ Unknown
227
+ ## Status
228
+ PROPOSED
229
+
230
+ ____
231
+
232
+ # Don't Create Security Group
233
+ ## Name
234
+ a Sec Group
235
+ ## Summary
236
+ Based on Talmud
237
+ ## Description
238
+ Somewhat chaotic
239
+ ## Domain Identifier
240
+ 1
241
+ ## Version Identifier
242
+
243
+ ## Scope
244
+ InterGalactic
245
+
246
+ ## Importance
247
+ Somewhat
248
+
249
+ ## Implications
250
+ Power; Money
251
+ ## Outcomes
252
+ Happiness
253
+ ## Results
254
+ Unknown
255
+ ## Status
256
+ PROPOSED
257
+
258
+
259
+ ____
260
+
261
+ # Don't Naming Standard Rule
262
+ ## Name
263
+ a Namng Standard
264
+ ## Summary
265
+ Based on Talmud
266
+ ## Description
267
+ Somewhat chaotic
268
+ ## Domain Identifier
269
+ 1
270
+ ## Version Identifier
271
+
272
+ ## Scope
273
+ InterGalactic
274
+
275
+ ## Importance
276
+ Somewhat
277
+
278
+ ## Implications
279
+ Power; Money
280
+ ## Outcomes
281
+ Happiness
282
+ ## Results
283
+ Unknown
284
+ ## Status
285
+ PROPOSED
286
+
287
+ ____
288
+
289
+ # Don't Create Certification Type
290
+ ## Name
291
+ a Cert
292
+ ## Summary
293
+ Based on Talmud
294
+ ## Description
295
+ Somewhat chaotic
296
+ ## Domain Identifier
297
+ 1
298
+ ## Version Identifier
299
+
300
+ ## Scope
301
+ InterGalactic
302
+
303
+ ## Importance
304
+ Somewhat
305
+
306
+ ## Implications
307
+ Power; Money
308
+ ## Outcomes
309
+ Happiness
310
+ ## Results
311
+ Unknown
312
+ ## Status
313
+ PROPOSED
314
+
315
+ ____
316
+
317
+ # Don't Create License Type
318
+ ## Name
319
+ a License
320
+ ## Summary
321
+ Based on Talmud
322
+ ## Description
323
+ Somewhat chaotic
324
+ ## Domain Identifier
325
+ 1
326
+ ## Version Identifier
327
+
328
+ ## Scope
329
+ InterGalactic
330
+
331
+ ## Importance
332
+ Somewhat
333
+
334
+ ## Implications
335
+ Power; Money
336
+ ## Outcomes
337
+ Happiness
338
+ ## Results
339
+ Unknown
340
+ ## Status
341
+ PROPOSED
342
+
343
+ ___
344
+
345
+ # Don't Create Governance Principle
346
+ ## Name
347
+ Talmudic
348
+ ## Summary
349
+ Based on Talmud
350
+ ## Description
351
+ Somewhat chaotic
352
+ ## Domain Identifier
353
+ 1
354
+ ## Version Identifier
355
+
356
+ ## Scope
357
+ InterGalactic
358
+
359
+ ## Importance
360
+ Somewhat
361
+
362
+ ## Implications
363
+ Power; Money
364
+ ## Outcomes
365
+ Happiness
366
+ ## Results
367
+ Unknown
368
+ ## Status
369
+ PROPOSED
370
+
371
+ ____
372
+
373
+ # Don't Update Governance Approach
374
+ ## Name
375
+ Approach
376
+ ## Summary
377
+ Based on Talmud
378
+ ## Description
379
+ Somewhat chaotic
380
+ ## Domain Identifier
381
+ 1
382
+ ## Version Identifier
383
+
384
+ ## Scope
385
+ InterGalactic
386
+
387
+ ## Importance
388
+ Somewhat
389
+
390
+ ## Implications
391
+ Power; Money
392
+ ## Outcomes
393
+ Happiness
394
+ ## Results
395
+ Unknown
396
+ ## Status
397
+ PROPOSED
398
+ ## Drivers
399
+ A Regulation
400
+ ## Merge Update
401
+ True
402
+ ____
403
+
404
+
405
+ # Update Governance Definition
406
+
407
+ ## Governance Definition Name
408
+
409
+ Strategy
410
+
411
+ ## Type Name
412
+ GovernanceStrategy
413
+
414
+ ## Extended Properties
415
+ {'summary': 'Based on Talmud', 'description': 'Somewhat chaotic'}
416
+
417
+ ## Document Identifier
418
+ GovStrategy::Strategy
419
+
420
+ ## Title
421
+ Strategy
422
+
423
+ ## Scope
424
+ InterGalactic
425
+
426
+ ## Domain Identifier
427
+ 1
428
+
429
+ ## Importance
430
+ Somewhat
431
+
432
+ ## Outcomes
433
+ Happiness
434
+
435
+ ## Results
436
+ Unknown
437
+
438
+ ## GUID
439
+ 388ea693-5239-46c0-a339-5bb96bd6a514
440
+
441
+
442
+
443
+
444
+ # Don't Detach Governance Drivers
445
+ ## Definition 1
446
+ A Regulation
447
+ ## Definition 2
448
+ Strategy
449
+ ## Label
450
+ Don't get caught
451
+
452
+ ___
453
+
454
+ # `Governance Definitions` with filter: `*`
455
+
456
+ # Governance Definitions Table
457
+
458
+ Governance Definitions found from the search string: `All`
459
+
460
+ | Governance Definition | Type Name | Scope | Qualified Name | Summary | Importance |
461
+ |-------------|-------------|-------------|-------------|-------------|-------------|
462
+ | New Sustainability Governance Domain | GovernanceApproach | Across Coco Pharmaceuticals | GovernanceApproach::New Sustainability Governance Domain | | High |
463
+ | Valid weekly measurements data for the {{clinicalTrialId}} Clinical Trial | CertificationType | Within Project | CertificationType:: Valid weekly measurements data for the {{clinicalTrialId}} Clinical Trial | | |
464
+ | Standard Clinical Trial License | LicenseType | This license is part of the agreement made between participant of a clinical trial and Coco Pharmaceuticals. It describes the types of processing and governance that are permitted/required concerning the use of the data collected during a clinical trial. | License::Standard Clinical Trial License | | |
465
+ | A Gov procedure | GovernanceProcedure | InterGalactic | GovProcedure::A Gov procedure | | Somewhat |
466
+ | Operate Coco Pharmaceuticals in an increasingly sustainable way | GovernanceStrategy | Across Coco Pharmaceuticals | GovernanceStrategy::Operate Coco Pharmaceuticals in an increasingly sustainable way | | High |
467
+ | Cross Clinical Trial Analysis | DataProcessingPurpose | This purpose allows processing of the data beyond the scope of the specific clinical trial. However, it can only be used for processing that advances the clinical trial process, or the development of new treatments. | DataProcessingPurpose:: Cross Clinical Trial Analysis | | |
468
+ | Avoid using harmful materials | GovernancePrinciple | Across Coco Pharmaceuticals | GovernancePrinciple::Avoid using harmful materials | | High |
469
+ | Eliminate CFC/HFC Cooling Units | GovernanceResponsibility | Within Facility | GovernanceResponsibility::Eliminate CFC/HFC Cooling Units | | High |
470
+ | General Purpose | DataProcessingPurpose | This purpose allows any purpose since the data either has no license, or an open license that permits all types of processing. | DataProcessingPurpose:: General Purpose | | |
471
+ | Approved clinical trial | CertificationType | Across Coco Pharmaceuticals | CertificationType:: Approved clinical trial | | |
472
+ | Measure harmful emissions | GovernanceApproach | Across Coco Pharmaceuticals | GovernanceApproach::Measure harmful emissions | | High |
473
+ | Corporate Sustainability Reporting Directive (CSRD) | Regulation | Across Coco Pharmaceuticals | Regulation::Corporate Sustainability Reporting Directive (CSRD) | | High |
474
+ | Participating Hospital for the {{clinicalTrialId}} approved Clinical Trial | CertificationType | Within Project | CertificationType:: Participating Hospital for the {{clinicalTrialId}} approved Clinical Trial | | |
475
+ | Approach | GovernanceApproach | InterGalactic | GovApproach::Approach | | Somewhat |
476
+ | Strategy | GovernanceStrategy | InterGalactic | GovStrategy::Strategy | | Somewhat |
477
+ | Deliver Sustainability Reporting Capability | GovernanceResponsibility | Within Facility | GovernanceResponsibility::Deliver Sustainability Reporting Capability | | High |
478
+ | Sustainability Champion | GovernanceResponsibility | Within Business Capability | GovernanceResponsibility::Sustainability Champion | | High |
479
+ | A Regulation | Regulation | InterGalactic | Regulation::A Regulation | | Somewhat |
480
+ | Sustainability leadership | GovernanceResponsibility | Across Coco Pharmaceuticals | GovernanceResponsibility::Sustainability leadership | | High |
481
+ | The price of ignoring sustainability | Threat | Across Coco Pharmaceuticals | Threat::The price of ignoring sustainability | | High |
482
+ | Clinical Trial Validation | DataProcessingPurpose | This purpose limits the processing of the data to the clinical trial in which it was collected. | DataProcessingPurpose:: Clinical Trial Validation | | |
483
+
484
+ # Provenance
485
+
486
+ * Results from processing file gov_def2.md on 2025-07-18 09:10
@@ -15,7 +15,7 @@ from md_processing.md_processing_utils.common_md_proc_utils import (parse_upsert
15
15
  sync_collection_memberships)
16
16
  from md_processing.md_processing_utils.common_md_utils import update_element_dictionary, set_update_body, \
17
17
  set_element_status_request_body, set_prop_body, set_delete_request_body, set_rel_request_body, set_peer_gov_def_request_body, \
18
- set_rel_request_body, set_create_body, set_collection_classifications, set_product_body
18
+ set_rel_request_body, set_create_body, set_object_classifications, set_product_body
19
19
 
20
20
  from md_processing.md_processing_utils.extraction_utils import (extract_command_plus, update_a_command)
21
21
  from md_processing.md_processing_utils.md_processing_constants import (load_commands, ERROR)
@@ -199,7 +199,7 @@ def process_glossary_upsert_command(egeria_client: EgeriaTech, txt: str, directi
199
199
  body = set_create_body(object_type,attributes)
200
200
 
201
201
  # if this is a root or folder (maybe more in the future), then make sure that the classification is set.
202
- body["initialClassifications"] = set_collection_classifications(object_type, attributes, ["Taxonomy", "CanonicalVocabulary"])
202
+ body["initialClassifications"] = set_object_classifications(object_type, attributes, ["Taxonomy", "CanonicalVocabulary"])
203
203
  if object_type == "Taxonomy":
204
204
  body["initialClassifications"]['Taxonomy']['organizingPrinciple'] = attributes.get('Organizing Principle', {}).get('value', None)
205
205
  elif object_type == "CanonicalVocabulary":
@@ -0,0 +1,164 @@
1
+ """
2
+ This file contains project-related object_action functions for processing Egeria Markdown
3
+ """
4
+
5
+ from rich.markdown import Markdown
6
+
7
+ from md_processing.md_processing_utils.common_md_utils import (debug_level, print_msg, is_valid_iso_date)
8
+ from md_processing.md_processing_utils.extraction_utils import (extract_command, process_simple_attribute)
9
+ from md_processing.md_processing_utils.md_processing_constants import ALWAYS, ERROR, INFO, pre_command
10
+ from pyegeria._globals import NO_PROJECTS_FOUND
11
+ from pyegeria.project_manager import ProjectManager
12
+
13
+ def process_per_proj_upsert_command(egeria_client: ProjectManager, txt: str, directive: str = "display") -> str | None:
14
+ """
15
+ Processes a personal project create or update object_action by extracting key attributes such as
16
+ glossary name, language, description, and usage from the given cell.
17
+
18
+ :param txt: A string representing the input cell to be processed for
19
+ extracting glossary-related attributes.
20
+ :param directive: an optional string indicating the directive to be used - display, validate or execute
21
+ :return: A string summarizing the outcome of the processing.
22
+ """
23
+ from md_processing.md_processing_utils.common_md_utils import set_debug_level
24
+
25
+ command = extract_command(txt)
26
+ print(Markdown(f"# {command}\n"))
27
+
28
+ object = command.split()
29
+ object_type = f"{object[1]} {object[2]}"
30
+ object_action = object[0]
31
+ set_debug_level(directive)
32
+
33
+ project_name = process_simple_attribute(txt, ['Project Name'])
34
+ description = process_simple_attribute(txt, ['Description'])
35
+ project_identifier = process_simple_attribute(txt, ['Project Identifier'])
36
+ project_status = process_simple_attribute(txt, ['Status'])
37
+ project_phase = process_simple_attribute(txt, ['Project Phase'])
38
+ project_health = process_simple_attribute(txt, ['Project Health'])
39
+ start_date = process_simple_attribute(txt, ['Start Date'])
40
+ planned_end_date = process_simple_attribute(txt, ['Planned End Date'])
41
+ print(Markdown(f"{pre_command} `\'{command}\'` for project: `{project_name}` with directive: `{directive}` "))
42
+
43
+ project_display = (f"\n* Command: {command}\n\t* Project: {project_name}\n\t"
44
+ f"* Status: {project_status}\n\t* Description: {description}\n\t"
45
+ f"* Phase: {project_phase}\n\t* Health: {project_health}\n\t"
46
+ f"* Start Date: {start_date}\n\t* Planned End Date: {planned_end_date}\n")
47
+
48
+ def validate_project(obj_action: str) -> tuple[bool, bool, str, str]:
49
+ valid = True
50
+ msg = ""
51
+ known_guid = None
52
+ known_q_name = None
53
+
54
+ project_details = egeria_client.get_projects_by_name(project_name)
55
+ if project_details == NO_PROJECTS_FOUND:
56
+ project_exists = False
57
+ else:
58
+ project_exists = True
59
+
60
+ if project_name is None:
61
+ msg = f"* {ERROR}Project name is missing\n"
62
+ valid = False
63
+ if project_status is None:
64
+ msg += f"* {INFO}No Project status found\n"
65
+
66
+ if description is None:
67
+ msg += f"* {INFO}No Description found\n"
68
+
69
+ if project_identifier is None:
70
+ msg += f"* {INFO}No Project Identifier found\n"
71
+
72
+ if project_phase is None:
73
+ msg += f"* {INFO}No Project Phase found\n"
74
+
75
+ if project_health is None:
76
+ msg += f"* {INFO}No Project Health found\n"
77
+
78
+ if start_date is None:
79
+ msg += f"* {INFO}No Start Date found\n"
80
+ elif not is_valid_iso_date(start_date):
81
+ msg += f"* {ERROR}Start Date is not a valid ISO date of form YYYY-MM-DD\n"
82
+ valid = False
83
+
84
+ if planned_end_date is None:
85
+ msg += f"* {INFO} No Planned End Date found\n"
86
+ elif not is_valid_iso_date(planned_end_date):
87
+ msg += f"* {ERROR}Planned End Date is not a valid ISO date of form YYYY-MM-DD\n"
88
+ valid = False
89
+
90
+ if obj_action == "Update":
91
+ q_name = process_simple_attribute(txt, 'Qualified Name')
92
+
93
+ if not project_exists:
94
+ msg += f"* {ERROR}Project {project_name} does not exist\n"
95
+ valid = False
96
+ if len(project_details) > 1 and project_exists:
97
+ msg += f"* {ERROR}More than one project with name {project_name} found\n"
98
+ valid = False
99
+ if len(project_details) == 1:
100
+ known_guid = project_details[0]['elementHeader'].get('guid', None)
101
+ known_q_name = project_details[0]['glossaryProperties'].get('qualifiedName', None)
102
+ if q_name is None:
103
+ msg += f"* {INFO}Qualified Name is missing => can use known qualified name of {known_q_name}\n"
104
+ valid = True
105
+ elif q_name != known_q_name:
106
+ msg += (f"* {ERROR}Project {project_name} qualifiedName mismatch between {q_name} and {known_q_name}\n")
107
+ valid = False
108
+ if valid:
109
+ msg += project_display
110
+ msg += f"* -->Project {project_name} exists and can be updated\n"
111
+ else:
112
+ msg += f"* --> validation failed\n"
113
+ msg += '---'
114
+ print(Markdown(msg))
115
+ return valid, project_exists, known_guid, known_q_name
116
+
117
+ elif obj_action == "Create":
118
+ if project_exists:
119
+ msg += f"\n{ERROR}Project {project_name} already exists"
120
+ else:
121
+ msg += f"\n-->It is valid to create Project \'{project_name}\' with:\n"
122
+ print(Markdown(msg))
123
+ return valid, project_exists, known_guid, known_q_name
124
+
125
+ if directive == "display":
126
+ print(Markdown(project_display))
127
+ return None
128
+ elif directive == "validate":
129
+ valid, project_exists, known_guid, known_q_name = validate_project(object_action)
130
+ return valid
131
+ elif directive == "process":
132
+ valid, project_exists, known_guid, known_q_name = validate_project(object_action)
133
+ if valid:
134
+ if object_action == "Create":
135
+ if project_exists:
136
+ print(f"\n{ERROR}Project {project_name} already exists\n")
137
+ return None
138
+ else:
139
+ project_guid = egeria_client.create_personal_project(project_name, description, project_identifier,
140
+ project_status, project_phase, project_health,
141
+ start_date, planned_end_date)
142
+ if project_guid:
143
+ print_msg(ALWAYS, f"Created Project {project_name} with GUID {project_guid}", debug_level)
144
+ return egeria_client.get_project_by_guid(project_guid, output_format='MD')
145
+ else:
146
+ print_msg(ERROR, f"Failed to create Project {project_name}", debug_level)
147
+ return None
148
+ elif object_action == "Update":
149
+ if not project_exists:
150
+ print(f"\n{ERROR}Project {project_name} does not exist\n")
151
+ return None
152
+ else:
153
+ project_guid = egeria_client.update_personal_project(known_guid, project_name, description,
154
+ project_identifier, project_status,
155
+ project_phase, project_health, start_date,
156
+ planned_end_date)
157
+ if project_guid:
158
+ print_msg(ALWAYS, f"Updated Project {project_name} with GUID {project_guid}", debug_level)
159
+ return egeria_client.get_project_by_guid(project_guid, output_format='MD')
160
+ else:
161
+ print_msg(ERROR, f"Failed to update Project {project_name}", debug_level)
162
+ return None
163
+ else:
164
+ return None
@@ -14,7 +14,7 @@ from rich.markdown import Markdown
14
14
  from md_processing.md_processing_utils.common_md_proc_utils import (parse_upsert_command, parse_view_command)
15
15
  from md_processing.md_processing_utils.common_md_utils import update_element_dictionary, set_update_body, \
16
16
  set_element_status_request_body, set_prop_body, set_delete_request_body, set_rel_request_body, set_peer_gov_def_request_body, \
17
- set_rel_request_body, set_create_body, set_collection_classifications, set_product_body
17
+ set_rel_request_body, set_create_body, set_object_classifications, set_product_body
18
18
 
19
19
  from md_processing.md_processing_utils.extraction_utils import (extract_command_plus, update_a_command)
20
20
  from md_processing.md_processing_utils.md_processing_constants import (load_commands, ERROR)
@@ -236,7 +236,7 @@ def process_collection_upsert_command(egeria_client: EgeriaTech, txt: str, direc
236
236
  body = set_create_body(object_type,attributes)
237
237
 
238
238
  # if this is a root or folder (maybe more in the future), then make sure that the classification is set.
239
- body["initialClassifications"] = set_collection_classifications(object_type, attributes, ["Folder", "Root Collection"])
239
+ body["initialClassifications"] = set_object_classifications(object_type, attributes, ["Folder", "Root Collection"])
240
240
  body["properties"] = set_prop_body(obj, qualified_name,attributes)
241
241
  parent_guid = body.get('parentGuid', None)
242
242
  if parent_guid:
@@ -352,7 +352,7 @@ def process_digital_product_upsert_command(egeria_client: EgeriaTech, txt: str,
352
352
 
353
353
  else:
354
354
  body = set_create_body(object_type, attributes)
355
- body["initialClassifications"] = set_collection_classifications(object_type, attributes,[])
355
+ body["initialClassifications"] = set_object_classifications(object_type, attributes, [])
356
356
 
357
357
  body["properties"] = prop_body
358
358
 
@@ -468,8 +468,8 @@ def process_agreement_upsert_command(egeria_client: EgeriaTech, txt: str, direct
468
468
  body = set_create_body(object_type, attributes)
469
469
 
470
470
  # if this is a root or folder (maybe more in the future), then make sure that the classification is set.
471
- body["initialClassifications"] = set_collection_classifications(object_type, attributes,
472
- ["Data Sharing Agreement"])
471
+ body["initialClassifications"] = set_object_classifications(object_type, attributes,
472
+ ["Data Sharing Agreement"])
473
473
  body["properties"] = set_prop_body(obj, qualified_name, attributes)
474
474
 
475
475
  guid = egeria_client.create_agreement(body=body)