pyegeria 5.4.3.3__py3-none-any.whl → 5.4.4__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.
- commands/cat/debug_log.2025-09-02_07-44-39_567276.log.zip +0 -0
- commands/cat/debug_log.2025-09-03_07-45-21_986388.log.zip +0 -0
- commands/cat/debug_log.2025-09-04_08-21-58_788009.log.zip +0 -0
- commands/cat/debug_log.2025-09-05_09-37-53_062579.log.zip +0 -0
- commands/cat/list_format_set.py +5 -3
- commands/tech/list_information_supply_chains.py +1 -1
- commands/tech/list_solution_blueprints.py +1 -1
- commands/tech/list_solution_components.py +1 -1
- commands/tech/list_solution_roles.py +1 -1
- md_processing/__init__.py +9 -5
- md_processing/data/commands.json +7182 -1401
- md_processing/data/generated_format_sets.json +4137 -0
- md_processing/data/generated_format_sets.py +51 -0
- md_processing/dr_egeria.py +20 -11
- md_processing/md_commands/data_designer_commands.py +90 -425
- md_processing/md_commands/ext_ref_commands.py +543 -0
- md_processing/md_commands/old_solution_architect_commands.py +1139 -0
- md_processing/md_commands/solution_architect_commands.py +26 -59
- md_processing/md_processing_utils/common_md_utils.py +50 -1
- md_processing/md_processing_utils/debug_log +1 -3
- md_processing/md_processing_utils/dr-egeria-help-2025-09-09T11:10:03.md +3305 -0
- md_processing/md_processing_utils/extraction_utils.py +14 -7
- md_processing/md_processing_utils/gen_format_sets.py +422 -0
- md_processing/md_processing_utils/md_processing_constants.py +20 -2
- pyegeria/__init__.py +1 -1
- pyegeria/_client_new.py +9 -7
- pyegeria/_output_formats.py +278 -3
- pyegeria/collection_manager.py +20 -59
- pyegeria/config.py +10 -1
- pyegeria/data_designer.py +166 -117
- pyegeria/egeria_client.py +1 -1
- pyegeria/egeria_tech_client.py +4 -1
- pyegeria/external_references.py +1794 -0
- pyegeria/glossary_manager.py +71 -85
- pyegeria/governance_officer.py +26 -29
- pyegeria/output_formatter.py +127 -1
- pyegeria/project_manager.py +33 -36
- pyegeria/{solution_architect_omvs.py → solution_architect.py} +733 -873
- {pyegeria-5.4.3.3.dist-info → pyegeria-5.4.4.dist-info}/METADATA +1 -1
- {pyegeria-5.4.3.3.dist-info → pyegeria-5.4.4.dist-info}/RECORD +43 -219
- commands/.DS_Store +0 -0
- commands/cat/.DS_Store +0 -0
- commands/cat/.env +0 -8
- commands/cat/debug_log.2025-08-29_07-07-27_848189.log.zip +0 -0
- commands/cat/debug_log.2025-08-30_21-15-48_528443.log.zip +0 -0
- commands/cat/debug_log.log +0 -6102
- commands/cat/logs/pyegeria.log +0 -90
- commands/cli/debug_log.log +0 -0
- commands/doc/.DS_Store +0 -0
- commands/ops/logs/pyegeria.log +0 -0
- md_processing/.DS_Store +0 -0
- md_processing/.idea/.gitignore +0 -8
- md_processing/.idea/inspectionProfiles/Project_Default.xml +0 -59
- md_processing/.idea/md_processing.iml +0 -15
- md_processing/.idea/modules.xml +0 -8
- md_processing/.idea/sonarlint/issuestore/index.pb +0 -0
- md_processing/.idea/sonarlint/securityhotspotstore/index.pb +0 -0
- md_processing/.idea/vcs.xml +0 -6
- md_processing/.idea/workspace.xml +0 -107
- md_processing/dr_egeria_inbox/Derive-Dr-Gov-Defs.md +0 -8
- md_processing/dr_egeria_inbox/Dr.Egeria Templates.md +0 -873
- md_processing/dr_egeria_inbox/arch_test.md +0 -57
- md_processing/dr_egeria_inbox/archive/dr_egeria_intro.md +0 -254
- md_processing/dr_egeria_inbox/archive/dr_egeria_intro_more_terms.md +0 -696
- md_processing/dr_egeria_inbox/archive/dr_egeria_intro_part1.md +0 -254
- md_processing/dr_egeria_inbox/archive/dr_egeria_intro_part2.md +0 -298
- md_processing/dr_egeria_inbox/archive/dr_egeria_intro_part3.md +0 -608
- md_processing/dr_egeria_inbox/archive/dr_egeria_intro_part4.md +0 -94
- md_processing/dr_egeria_inbox/archive/freddie_intro.md +0 -284
- md_processing/dr_egeria_inbox/archive/freddie_intro_orig.md +0 -275
- md_processing/dr_egeria_inbox/archive/test-term.md +0 -110
- md_processing/dr_egeria_inbox/cat_test.md +0 -100
- md_processing/dr_egeria_inbox/collections.md +0 -39
- md_processing/dr_egeria_inbox/data_designer_debug.log +0 -6
- md_processing/dr_egeria_inbox/data_designer_out.md +0 -60
- md_processing/dr_egeria_inbox/data_designer_search_test.md +0 -11
- md_processing/dr_egeria_inbox/data_field.md +0 -54
- md_processing/dr_egeria_inbox/data_spec.md +0 -77
- md_processing/dr_egeria_inbox/data_spec_test.md +0 -2340
- md_processing/dr_egeria_inbox/data_test.md +0 -179
- md_processing/dr_egeria_inbox/data_test2.md +0 -429
- md_processing/dr_egeria_inbox/data_test3.md +0 -462
- md_processing/dr_egeria_inbox/dr_egeria_data_designer_1.md +0 -124
- md_processing/dr_egeria_inbox/dr_egeria_intro_categories.md +0 -168
- md_processing/dr_egeria_inbox/dr_egeria_intro_part1.md +0 -280
- md_processing/dr_egeria_inbox/dr_egeria_intro_part2.md +0 -318
- md_processing/dr_egeria_inbox/dr_egeria_intro_part3.md +0 -1073
- md_processing/dr_egeria_inbox/dr_egeria_isc1.md +0 -44
- md_processing/dr_egeria_inbox/generated_help_report.md +0 -9
- md_processing/dr_egeria_inbox/generated_help_terms.md +0 -842
- md_processing/dr_egeria_inbox/glossary_list.md +0 -5
- md_processing/dr_egeria_inbox/glossary_search_test.md +0 -40
- md_processing/dr_egeria_inbox/glossary_test1.md +0 -378
- md_processing/dr_egeria_inbox/gov_def.md +0 -718
- md_processing/dr_egeria_inbox/gov_def2.md +0 -447
- md_processing/dr_egeria_inbox/img.png +0 -0
- md_processing/dr_egeria_inbox/output_tests.md +0 -114
- md_processing/dr_egeria_inbox/product.md +0 -211
- md_processing/dr_egeria_inbox/rel.md +0 -8
- md_processing/dr_egeria_inbox/sb.md +0 -119
- md_processing/dr_egeria_inbox/solution-components.md +0 -136
- md_processing/dr_egeria_inbox/solution_blueprints.md +0 -118
- md_processing/dr_egeria_inbox/synonym_test.md +0 -42
- md_processing/dr_egeria_inbox/t2.md +0 -268
- md_processing/dr_egeria_outbox/.DS_Store +0 -0
- md_processing/dr_egeria_outbox/.obsidian/app.json +0 -1
- md_processing/dr_egeria_outbox/.obsidian/appearance.json +0 -1
- md_processing/dr_egeria_outbox/.obsidian/community-plugins.json +0 -7
- md_processing/dr_egeria_outbox/.obsidian/core-plugins.json +0 -33
- md_processing/dr_egeria_outbox/.obsidian/plugins/buttons/main.js +0 -5164
- md_processing/dr_egeria_outbox/.obsidian/plugins/buttons/manifest.json +0 -10
- md_processing/dr_egeria_outbox/.obsidian/plugins/buttons/styles.css +0 -624
- md_processing/dr_egeria_outbox/.obsidian/plugins/calendar/data.json +0 -10
- md_processing/dr_egeria_outbox/.obsidian/plugins/calendar/main.js +0 -4459
- md_processing/dr_egeria_outbox/.obsidian/plugins/calendar/manifest.json +0 -10
- md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-kanban/data.json +0 -3
- md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-kanban/main.js +0 -153
- md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-kanban/manifest.json +0 -11
- md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-kanban/styles.css +0 -1
- md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-tasks-plugin/main.js +0 -500
- md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-tasks-plugin/manifest.json +0 -12
- md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-tasks-plugin/styles.css +0 -1
- md_processing/dr_egeria_outbox/.obsidian/plugins/templater-obsidian/data.json +0 -38
- md_processing/dr_egeria_outbox/.obsidian/plugins/templater-obsidian/main.js +0 -37
- md_processing/dr_egeria_outbox/.obsidian/plugins/templater-obsidian/manifest.json +0 -11
- md_processing/dr_egeria_outbox/.obsidian/plugins/templater-obsidian/styles.css +0 -220
- md_processing/dr_egeria_outbox/.obsidian/types.json +0 -28
- md_processing/dr_egeria_outbox/.obsidian/workspace.json +0 -270
- md_processing/dr_egeria_outbox/Button Test.md +0 -11
- md_processing/dr_egeria_outbox/Scripts/.DS_Store +0 -0
- md_processing/dr_egeria_outbox/Scripts/sendRest.js +0 -24
- md_processing/dr_egeria_outbox/Templates/sendToApi.md.md +0 -17
- md_processing/dr_egeria_outbox/Untitled.canvas +0 -1
- md_processing/dr_egeria_outbox/monday/processed-2025-09-01 09:26-product.md +0 -210
- md_processing/dr_egeria_outbox/monday/processed-2025-09-01 14:03-product.md +0 -209
- md_processing/dr_egeria_outbox/monday/processed-2025-09-01 14:24-product.md +0 -263
- md_processing/dr_egeria_outbox/monday/processed-2025-09-01 16:03-data_spec_test.md +0 -2374
- md_processing/dr_egeria_outbox/monday/processed-2025-09-01 16:05-data_spec_test.md +0 -2374
- md_processing/dr_egeria_outbox/monday/processed-2025-09-02 08:28-data_spec_test.md +0 -2321
- md_processing/dr_egeria_outbox/monday/processed-2025-09-02 08:37-data_spec_test.md +0 -2304
- md_processing/dr_egeria_outbox/monday/processed-2025-09-02 08:56-data_spec_test.md +0 -2324
- md_processing/dr_egeria_outbox/monday/processed-2025-09-02 09:00-data_spec_test.md +0 -2324
- md_processing/dr_egeria_outbox/processed-2025-08-30 16:56-generated_help_terms.md +0 -795
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 15:00-Derive-Dr-Gov-Defs.md +0 -719
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 20:13-Derive-Dr-Gov-Defs.md +0 -41
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 20:14-Derive-Dr-Gov-Defs.md +0 -33
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 20:50-Derive-Dr-Gov-Defs.md +0 -192
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 22:08-gov_def2.md +0 -486
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 22:10-gov_def2.md +0 -486
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-18 08:53-gov_def2.md +0 -486
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-18 08:54-gov_def2.md +0 -486
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-18 09:03-gov_def2.md +0 -486
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-18 09:06-gov_def2.md +0 -486
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-18 09:10-gov_def2.md +0 -486
- md_processing/dr_egeria_outbox/tuesday/processed-2025-09-02 13:07-gov_def.md +0 -492
- md_processing/dr_egeria_outbox/tuesday/processed-2025-09-02 13:25-gov_def.md +0 -520
- md_processing/dr_egeria_outbox/tuesday/processed-2025-09-02 16:43-gov_def.md +0 -636
- md_processing/dr_egeria_outbox/tuesday/processed-2025-09-02 16:46-gov_def.md +0 -636
- md_processing/family_docs/Data Designer/Create_Data_Class.md +0 -164
- md_processing/family_docs/Data Designer/Create_Data_Dictionary.md +0 -30
- md_processing/family_docs/Data Designer/Create_Data_Field.md +0 -162
- md_processing/family_docs/Data Designer/Create_Data_Specification.md +0 -36
- md_processing/family_docs/Data Designer/Create_Data_Structure.md +0 -38
- md_processing/family_docs/Data Designer/View_Data_Classes.md +0 -78
- md_processing/family_docs/Data Designer/View_Data_Dictionaries.md +0 -78
- md_processing/family_docs/Data Designer/View_Data_Fields.md +0 -78
- md_processing/family_docs/Data Designer/View_Data_Specifications.md +0 -78
- md_processing/family_docs/Data Designer/View_Data_Structures.md +0 -78
- md_processing/family_docs/Data Designer.md +0 -842
- md_processing/family_docs/Digital Product Manager/Add_Member->Collection.md +0 -42
- md_processing/family_docs/Digital Product Manager/Attach_Collection->Resource.md +0 -36
- md_processing/family_docs/Digital Product Manager/Create_Agreement.md +0 -96
- md_processing/family_docs/Digital Product Manager/Create_Data_Sharing_Agreement.md +0 -72
- md_processing/family_docs/Digital Product Manager/Create_DigitalSubscription.md +0 -102
- md_processing/family_docs/Digital Product Manager/Create_Digital_Product.md +0 -134
- md_processing/family_docs/Digital Product Manager/Link_Agreement_Items.md +0 -60
- md_processing/family_docs/Digital Product Manager/Link_Contracts.md +0 -26
- md_processing/family_docs/Digital Product Manager/Link_Digital_Product_-_Digital_Product.md +0 -30
- md_processing/family_docs/Digital Product Manager/Link_Subscribers.md +0 -48
- md_processing/family_docs/Digital Product Manager.md +0 -668
- md_processing/family_docs/Glossary/Attach_Category_Parent.md +0 -18
- md_processing/family_docs/Glossary/Attach_Term-Term_Relationship.md +0 -26
- md_processing/family_docs/Glossary/Create_Category.md +0 -38
- md_processing/family_docs/Glossary/Create_Glossary.md +0 -42
- md_processing/family_docs/Glossary/Create_Term.md +0 -70
- md_processing/family_docs/Glossary.md +0 -206
- md_processing/family_docs/Governance Officer/Create_Business_Imperative.md +0 -106
- md_processing/family_docs/Governance Officer/Create_Certification_Type.md +0 -112
- md_processing/family_docs/Governance Officer/Create_Governance_Approach.md +0 -114
- md_processing/family_docs/Governance Officer/Create_Governance_Obligation.md +0 -114
- md_processing/family_docs/Governance Officer/Create_Governance_Principle.md +0 -114
- md_processing/family_docs/Governance Officer/Create_Governance_Procedure.md +0 -128
- md_processing/family_docs/Governance Officer/Create_Governance_Process.md +0 -122
- md_processing/family_docs/Governance Officer/Create_Governance_Processing_Purpose.md +0 -106
- md_processing/family_docs/Governance Officer/Create_Governance_Responsibility.md +0 -122
- md_processing/family_docs/Governance Officer/Create_Governance_Rule.md +0 -122
- md_processing/family_docs/Governance Officer/Create_Governance_Strategy.md +0 -106
- md_processing/family_docs/Governance Officer/Create_License_Type.md +0 -112
- md_processing/family_docs/Governance Officer/Create_Naming_Standard_Rule.md +0 -122
- md_processing/family_docs/Governance Officer/Create_Regulation_Article.md +0 -106
- md_processing/family_docs/Governance Officer/Create_Regulation_Definition.md +0 -118
- md_processing/family_docs/Governance Officer/Create_Security_Access_Control.md +0 -114
- md_processing/family_docs/Governance Officer/Create_Security_Group.md +0 -120
- md_processing/family_docs/Governance Officer/Create_Service_Level_Objectives.md +0 -122
- md_processing/family_docs/Governance Officer/Create_Threat_Definition.md +0 -106
- md_processing/family_docs/Governance Officer/Link_Governance_Controls.md +0 -32
- md_processing/family_docs/Governance Officer/Link_Governance_Drivers.md +0 -32
- md_processing/family_docs/Governance Officer/Link_Governance_Policies.md +0 -32
- md_processing/family_docs/Governance Officer/View_Governance_Definitions.md +0 -82
- md_processing/family_docs/Governance Officer.md +0 -2412
- md_processing/family_docs/Solution Architect/Create_Information_Supply_Chain.md +0 -70
- md_processing/family_docs/Solution Architect/Create_Solution_Blueprint.md +0 -44
- md_processing/family_docs/Solution Architect/Create_Solution_Component.md +0 -96
- md_processing/family_docs/Solution Architect/Create_Solution_Role.md +0 -66
- md_processing/family_docs/Solution Architect/Link_Information_Supply_Chain_Peers.md +0 -32
- md_processing/family_docs/Solution Architect/Link_Solution_Component_Peers.md +0 -32
- md_processing/family_docs/Solution Architect/View_Information_Supply_Chains.md +0 -32
- md_processing/family_docs/Solution Architect/View_Solution_Blueprints.md +0 -32
- md_processing/family_docs/Solution Architect/View_Solution_Components.md +0 -32
- md_processing/family_docs/Solution Architect/View_Solution_Roles.md +0 -32
- md_processing/family_docs/Solution Architect.md +0 -490
- md_processing/md_commands/old_project_commands.py +0 -164
- md_processing/md_processing_utils/debug_log.log +0 -5580
- md_processing/md_processing_utils/generated_help_terms.md +0 -842
- md_processing/md_processing_utils/logs/pyegeria.log +0 -56
- pyegeria/.DS_Store +0 -0
- pyegeria/___external_references.py +0 -3267
- {pyegeria-5.4.3.3.dist-info → pyegeria-5.4.4.dist-info}/LICENSE +0 -0
- {pyegeria-5.4.3.3.dist-info → pyegeria-5.4.4.dist-info}/WHEEL +0 -0
- {pyegeria-5.4.3.3.dist-info → pyegeria-5.4.4.dist-info}/entry_points.txt +0 -0
@@ -12,10 +12,11 @@ from rich.console import Console
|
|
12
12
|
from rich.markdown import Markdown
|
13
13
|
|
14
14
|
from md_processing.md_processing_utils.common_md_proc_utils import (parse_upsert_command, parse_view_command)
|
15
|
-
from md_processing.md_processing_utils.common_md_utils import update_element_dictionary
|
15
|
+
from md_processing.md_processing_utils.common_md_utils import update_element_dictionary, set_element_prop_body, \
|
16
|
+
set_update_body, set_create_body
|
16
17
|
from md_processing.md_processing_utils.extraction_utils import (extract_command_plus, update_a_command)
|
17
18
|
from md_processing.md_processing_utils.md_processing_constants import (load_commands)
|
18
|
-
from pyegeria import body_slimmer, EgeriaTech
|
19
|
+
from pyegeria import body_slimmer, EgeriaTech, PyegeriaException, print_basic_exception
|
19
20
|
|
20
21
|
load_commands('commands.json')
|
21
22
|
|
@@ -275,30 +276,15 @@ def process_blueprint_upsert_command(egeria_client: EgeriaTech, txt: str, direct
|
|
275
276
|
attributes = parsed_output['attributes']
|
276
277
|
description = attributes.get('Description', {}).get('value', None)
|
277
278
|
display_name = attributes['Display Name'].get('value', None)
|
278
|
-
version_identifier = attributes.get('Version Identifier', {}).get('value', None)
|
279
|
-
effective_time = attributes.get('Effective Time', {}).get('value', None)
|
280
|
-
effective_from = attributes.get('Effective From', {}).get('value', None)
|
281
|
-
effective_to = attributes.get('Effective To', {}).get('value', None)
|
282
|
-
external_source_guid = attributes.get('External Source GUID', {}).get('value', None)
|
283
|
-
external_source_name = attributes.get('External Source Name', {}).get('value', None)
|
284
279
|
|
285
|
-
anchor_guid = attributes.get('Anchor ID', {}).get('guid', None)
|
286
|
-
parent_guid = attributes.get('Parent ID', {}).get('guid', None)
|
287
|
-
parent_relationship_type_name = attributes.get('Parent Relationship Type Name', {}).get('value', None)
|
288
|
-
parent_at_end1 = attributes.get('Parent at End1', {}).get('value', True)
|
289
280
|
|
290
|
-
anchor_scope_guid = attributes.get('Anchor Scope GUID', {}).get('value', None)
|
291
|
-
is_own_anchor = attributes.get('Is Own Anchor', {}).get('value', True)
|
292
|
-
if parent_guid is None:
|
293
|
-
is_own_anchor = True
|
294
281
|
|
295
|
-
|
296
|
-
additional_properties = json.loads(additional_prop) if additional_prop is not None else None
|
297
|
-
extended_prop = attributes.get('Extended Properties', {}).get('value', None)
|
298
|
-
extended_properties = json.loads(extended_prop) if extended_prop is not None else None
|
282
|
+
|
299
283
|
component_guids = attributes.get('Solution Components', {}).get('guid_list', None)
|
300
284
|
|
301
|
-
|
285
|
+
status = attributes.get('Status', {}).get('value', None)
|
286
|
+
if status is None:
|
287
|
+
status = "ACTIVE"
|
302
288
|
|
303
289
|
replace_all_props = not attributes.get('Merge Update', {}).get('value', True)
|
304
290
|
|
@@ -313,6 +299,8 @@ def process_blueprint_upsert_command(egeria_client: EgeriaTech, txt: str, direct
|
|
313
299
|
return valid
|
314
300
|
|
315
301
|
elif directive == "process":
|
302
|
+
prop_body = set_element_prop_body(object_type, qualified_name, attributes)
|
303
|
+
|
316
304
|
try:
|
317
305
|
if object_action == "Update":
|
318
306
|
if not exists:
|
@@ -326,16 +314,19 @@ def process_blueprint_upsert_command(egeria_client: EgeriaTech, txt: str, direct
|
|
326
314
|
print(Markdown(
|
327
315
|
f"==> Validation of {command} completed successfully! Proceeding to apply the changes.\n"))
|
328
316
|
|
329
|
-
body =
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
317
|
+
body = set_update_body(object_type, attributes)
|
318
|
+
body['properties'] = prop_body
|
319
|
+
egeria_client.update_solution_blueprint(guid, body)
|
320
|
+
if status:
|
321
|
+
egeria_client.update_solution_element_status(guid, status)
|
322
|
+
|
323
|
+
msg = f"Updated {object_type} `{display_name}` with GUID {guid}\n\n___"
|
324
|
+
update_element_dictionary(qualified_name, {
|
325
|
+
'guid': guid, 'display_name': display_name
|
326
|
+
})
|
327
|
+
logger.info(msg)
|
328
|
+
logger.success(msg)
|
329
|
+
return egeria_client.find_solution_blueprints(qualified_name, output_format='MD')
|
339
330
|
|
340
331
|
egeria_client.update_solution_blueprint(guid, body, replace_all_props)
|
341
332
|
logger.success(f"==> Updated {object_type} `{display_name}` with GUID {guid}\n\n")
|
@@ -363,32 +354,8 @@ def process_blueprint_upsert_command(egeria_client: EgeriaTech, txt: str, direct
|
|
363
354
|
return
|
364
355
|
|
365
356
|
else:
|
366
|
-
body =
|
367
|
-
|
368
|
-
"externalSourceGUID": external_source_guid,
|
369
|
-
"externalSourceName": external_source_name,
|
370
|
-
"forLineage": False,
|
371
|
-
"forDuplicateProcessing": False,
|
372
|
-
"effectiveTime": effective_time,
|
373
|
-
"anchorGUID": anchor_guid,
|
374
|
-
"isOwnAnchor": is_own_anchor,
|
375
|
-
"anchorScopeGUID": anchor_scope_guid,
|
376
|
-
"parentGUID": parent_guid,
|
377
|
-
"parentRelationshipTypeName": parent_relationship_type_name,
|
378
|
-
"parentAtEnd1": parent_at_end1,
|
379
|
-
"properties": {
|
380
|
-
"class": "SolutionBlueprintProperties",
|
381
|
-
"effectiveFrom": effective_from,
|
382
|
-
"effectiveTo": effective_to, # "typeName": type_name,
|
383
|
-
"extendedProperties": extended_properties,
|
384
|
-
"qualifiedName": qualified_name,
|
385
|
-
"additionalProperties": additional_properties,
|
386
|
-
"displayName": display_name,
|
387
|
-
"description": description,
|
388
|
-
"versionIdentifier": version_identifier
|
389
|
-
},
|
390
|
-
"initialStatus": initial_status,
|
391
|
-
}
|
357
|
+
body = set_create_body(object_type,attributes)
|
358
|
+
body['properties'] = prop_body
|
392
359
|
guid = egeria_client.create_solution_blueprint(body)
|
393
360
|
except Exception as e:
|
394
361
|
print(f"Unexpected error: {e}, {type(valid)}, {valid}")
|
@@ -406,8 +373,8 @@ def process_blueprint_upsert_command(egeria_client: EgeriaTech, txt: str, direct
|
|
406
373
|
logger.error(msg)
|
407
374
|
return None
|
408
375
|
|
409
|
-
except
|
410
|
-
|
376
|
+
except PyegeriaException as e:
|
377
|
+
print_basic_exception(e)
|
411
378
|
logger.error(f"Error performing {command}: {e}")
|
412
379
|
return None
|
413
380
|
else:
|
@@ -240,6 +240,14 @@ def set_find_body(object_type: str, attributes: dict)->dict:
|
|
240
240
|
|
241
241
|
|
242
242
|
def set_create_body(object_type: str, attributes: dict)->dict:
|
243
|
+
"""
|
244
|
+
Build the OUTER request body for a create action (NewElementRequestBody).
|
245
|
+
|
246
|
+
Notes on two-layer convention:
|
247
|
+
- Outer layer (this function): action wrapper with metadata like externalSource*, effectiveTime, anchor/parent hints, and an empty "properties" field.
|
248
|
+
- Inner layer: an element-type-specific Properties structure built by set_element_prop_body, set_product_body, set_data_field_body, etc.
|
249
|
+
Callers should build the inner body separately with the appropriate helper and then assign it to body["properties"].
|
250
|
+
"""
|
243
251
|
prop_name = object_type.replace(" ", "")
|
244
252
|
body = {
|
245
253
|
"class": "NewElementRequestBody",
|
@@ -266,6 +274,13 @@ def set_create_body(object_type: str, attributes: dict)->dict:
|
|
266
274
|
|
267
275
|
|
268
276
|
def set_update_body(object_type: str, attributes: dict)->dict:
|
277
|
+
"""
|
278
|
+
Build the OUTER request body for an update action (UpdateElementRequestBody).
|
279
|
+
|
280
|
+
Two-layer convention:
|
281
|
+
- Outer layer (this function) provides action metadata and an empty "properties" slot.
|
282
|
+
- Inner layer must be constructed via element-specific helpers (e.g., set_element_prop_body) and assigned to the returned dict's "properties" key by the caller before invoking the client.
|
283
|
+
"""
|
269
284
|
return {
|
270
285
|
"class" : "UpdateElementRequestBody",
|
271
286
|
"externalSourceGUID": attributes.get('External Source GUID', {}).get('guid', None),
|
@@ -292,6 +307,16 @@ def set_rel_prop_body(object_type: str, attributes: dict)->dict:
|
|
292
307
|
}
|
293
308
|
|
294
309
|
def set_element_prop_body(object_type: str, qualified_name: str, attributes: dict)->dict:
|
310
|
+
"""
|
311
|
+
Build the INNER element-specific Properties body to be placed under the outer body's "properties" key.
|
312
|
+
|
313
|
+
This returns the typed properties structure (e.g., "ReferenceableProperties" subtypes) appropriate for the object_type.
|
314
|
+
Usage example:
|
315
|
+
- outer = set_create_body(object_type, attributes)
|
316
|
+
- props = set_element_prop_body(object_type, qualified_name, attributes)
|
317
|
+
- outer["properties"] = props
|
318
|
+
- client.create_xxx(outer)
|
319
|
+
"""
|
295
320
|
prop_name = object_type.replace(" ", "")
|
296
321
|
display_name = attributes.get('Display Name', {}).get('value', None)
|
297
322
|
|
@@ -323,7 +348,21 @@ def set_product_body(object_type: str, qualified_name: str, attributes: dict)->d
|
|
323
348
|
prop_bod["nextVersion"] = attributes.get('Next Version Date', {}).get('value', [])
|
324
349
|
return prop_bod
|
325
350
|
|
326
|
-
|
351
|
+
def set_data_field_body(object_type: str, qualified_name: str, attributes: dict)->dict:
|
352
|
+
prop_bod = set_element_prop_body(object_type, qualified_name, attributes)
|
353
|
+
prop_bod["namespace"] = attributes.get('Namespace', {}).get('value', None)
|
354
|
+
prop_bod["aliases"] = attributes.get('Aliases', {}).get('value', [])
|
355
|
+
prop_bod["namePatterns"] = attributes.get('Name Patterns', {}).get('value', [])
|
356
|
+
prop_bod["defaultValue"] = attributes.get('Default Value', {}).get('value', None)
|
357
|
+
prop_bod["isNullable"] = attributes.get('Is Nullable', {}).get('value', None)
|
358
|
+
prop_bod["dataType"] = attributes.get('Data Type', {}).get('value', None)
|
359
|
+
prop_bod["units"] = attributes.get('Units', {}).get('value', None)
|
360
|
+
prop_bod["minimumLength"] = attributes.get('Minimum Length', {}).get('value', None)
|
361
|
+
prop_bod["length"] = attributes.get('Length', {}).get('value', None)
|
362
|
+
prop_bod["precision"] = attributes.get('Precision', {}).get('value', None)
|
363
|
+
prop_bod["orderedValues"] = attributes.get('Ordered Values', {}).get('value', [])
|
364
|
+
prop_bod["sortOrder"] = attributes.get('Sort Order', {}).get('value', None)
|
365
|
+
return prop_bod
|
327
366
|
|
328
367
|
def set_update_status_body(object_type: str, attributes: dict)->dict:
|
329
368
|
return {
|
@@ -394,6 +433,11 @@ def update_gov_body_for_type(object_type: str, body: dict, attributes: dict) ->
|
|
394
433
|
|
395
434
|
|
396
435
|
def set_rel_request_body(object_type: str, attributes: dict)->dict:
|
436
|
+
"""
|
437
|
+
Build the OUTER request body for creating a relationship (NewRelationshipRequestBody).
|
438
|
+
The inner relationship properties must be assigned to the returned dict under the "properties" key,
|
439
|
+
commonly via set_rel_prop_body or set_rel_request_body_for_type.
|
440
|
+
"""
|
397
441
|
return {
|
398
442
|
"class" : "NewRelationshipRequestBody",
|
399
443
|
"externalSourceGUID": attributes.get('External Source GUID', {}).get('guid', None),
|
@@ -416,6 +460,11 @@ def set_peer_gov_def_request_body(object_type: str, attributes: dict)->dict:
|
|
416
460
|
return rel_body
|
417
461
|
|
418
462
|
def set_rel_request_body_for_type(object_type: str, attributes: dict)->dict:
|
463
|
+
"""
|
464
|
+
Convenience helper that builds both layers (outer + inner) for a relationship of a known type.
|
465
|
+
It creates the outer NewRelationshipRequestBody via set_rel_request_body and fills rel_body["properties"]
|
466
|
+
with a typed properties structure under the "class" of f"{object_type}Properties".
|
467
|
+
"""
|
419
468
|
rel_body = set_rel_request_body(object_type, attributes)
|
420
469
|
# class_prop = camel_to_title_case(object_type) + "Properties"
|
421
470
|
class_prop = f"{object_type}Properties"
|
@@ -1,3 +1 @@
|
|
1
|
-
D 2025-
|
2
|
-
D 2025-08-27T10:11:41.452446-0500 | INFO | create_help_terms | 184 | Help documentation saved to ././dr-egeria-help-2025-08-27T10:11:41.md | {}
|
3
|
-
D 2025-08-27T10:33:31.756212-0500 | INFO | create_help_terms | 184 | Help documentation saved to ././dr-egeria-help-2025-08-27T10:33:31.md | {}
|
1
|
+
D 2025-09-09T11:10:03.787382-0500 | INFO | create_help_terms | 184 | Help documentation saved to ././dr-egeria-help-2025-09-09T11:10:03.md | {}
|