pyegeria 5.3.9.9.3__py3-none-any.whl → 5.5.3.3__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.

Potentially problematic release.


This version of pyegeria might be problematic. Click here for more details.

Files changed (272) hide show
  1. commands/__init__.py +24 -0
  2. commands/cat/Dr-Egeria_md-orig.py +2 -2
  3. commands/cat/__init__.py +1 -17
  4. commands/cat/collection_actions.py +197 -0
  5. commands/cat/dr_egeria_command_help.py +372 -0
  6. commands/cat/dr_egeria_jupyter.py +7 -7
  7. commands/cat/dr_egeria_md.py +27 -182
  8. commands/cat/exp_list_glossaries.py +11 -14
  9. commands/cat/get_asset_graph.py +37 -267
  10. commands/cat/{get_collection.py → get_collection_tree.py} +10 -18
  11. commands/cat/get_project_dependencies.py +14 -14
  12. commands/cat/get_project_structure.py +15 -14
  13. commands/cat/get_tech_type_elements.py +16 -116
  14. commands/cat/glossary_actions.py +145 -298
  15. commands/cat/list_assets.py +3 -11
  16. commands/cat/list_cert_types.py +17 -63
  17. commands/cat/list_collections.py +46 -138
  18. commands/cat/list_deployed_catalogs.py +15 -27
  19. commands/cat/list_deployed_database_schemas.py +27 -43
  20. commands/cat/list_deployed_databases.py +16 -31
  21. commands/cat/list_deployed_servers.py +35 -54
  22. commands/cat/list_glossaries.py +18 -17
  23. commands/cat/list_projects.py +10 -12
  24. commands/cat/list_tech_type_elements.py +21 -37
  25. commands/cat/list_tech_types.py +13 -25
  26. commands/cat/list_terms.py +38 -79
  27. commands/cat/list_todos.py +4 -11
  28. commands/cat/list_user_ids.py +3 -10
  29. commands/cat/my_reports.py +559 -0
  30. commands/cat/run_report.py +394 -0
  31. commands/cat/run_report_orig.py +528 -0
  32. commands/cli/egeria.py +222 -247
  33. commands/cli/egeria_cat.py +68 -81
  34. commands/cli/egeria_my.py +13 -0
  35. commands/cli/egeria_ops.py +69 -74
  36. commands/cli/egeria_tech.py +17 -93
  37. commands/cli/ops_config.py +3 -6
  38. commands/{cat/list_categories.py → deprecated/list_data_designer.py} +53 -64
  39. commands/{cat/list_data_structures.py → deprecated/list_data_structures_full.py} +3 -6
  40. commands/deprecated/old_get_asset_graph.py +315 -0
  41. commands/my/__init__.py +0 -2
  42. commands/my/list_my_profile.py +27 -34
  43. commands/my/list_my_roles.py +1 -7
  44. commands/my/monitor_my_todos.py +1 -7
  45. commands/my/monitor_open_todos.py +6 -7
  46. commands/my/todo_actions.py +4 -5
  47. commands/ops/__init__.py +0 -2
  48. commands/ops/gov_server_actions.py +17 -21
  49. commands/ops/list_archives.py +17 -38
  50. commands/ops/list_catalog_targets.py +33 -40
  51. commands/ops/load_archive.py +35 -26
  52. commands/ops/{monitor_engine_activity_c.py → monitor_active_engine_activity.py} +51 -82
  53. commands/ops/{monitor_integ_daemon_status.py → monitor_daemon_status.py} +35 -55
  54. commands/ops/monitor_engine_activity.py +79 -77
  55. commands/ops/{monitor_gov_eng_status.py → monitor_engine_status.py} +10 -7
  56. commands/ops/monitor_platform_status.py +38 -50
  57. commands/ops/monitor_server_startup.py +6 -11
  58. commands/ops/monitor_server_status.py +7 -11
  59. commands/ops/orig_monitor_server_list.py +8 -8
  60. commands/ops/orig_monitor_server_status.py +1 -5
  61. commands/ops/refresh_integration_daemon.py +5 -5
  62. commands/ops/restart_integration_daemon.py +5 -5
  63. commands/ops/table_integ_daemon_status.py +6 -6
  64. commands/ops/x_engine_actions.py +7 -7
  65. commands/tech/__init__.py +0 -2
  66. commands/tech/{generic_actions.py → element_actions.py} +6 -11
  67. commands/tech/get_element_info.py +20 -29
  68. commands/tech/get_guid_info.py +23 -42
  69. commands/tech/get_tech_details.py +20 -35
  70. commands/tech/get_tech_type_template.py +28 -39
  71. commands/tech/list_all_om_type_elements.py +24 -30
  72. commands/tech/list_all_om_type_elements_x.py +22 -28
  73. commands/tech/list_all_related_elements.py +19 -28
  74. commands/tech/list_anchored_elements.py +22 -30
  75. commands/tech/list_asset_types.py +19 -24
  76. commands/tech/list_elements_by_classification_by_property_value.py +26 -32
  77. commands/tech/list_elements_by_property_value.py +19 -25
  78. commands/tech/list_elements_by_property_value_x.py +20 -28
  79. commands/tech/list_elements_for_classification.py +28 -41
  80. commands/tech/list_gov_action_processes.py +16 -27
  81. commands/tech/list_information_supply_chains.py +22 -30
  82. commands/tech/list_registered_services.py +14 -26
  83. commands/tech/list_related_elements_with_prop_value.py +15 -25
  84. commands/tech/list_related_specification.py +1 -4
  85. commands/tech/list_relationship_types.py +15 -25
  86. commands/tech/list_relationships.py +20 -36
  87. commands/tech/list_solution_blueprints.py +28 -33
  88. commands/tech/list_solution_components.py +23 -29
  89. commands/tech/list_solution_roles.py +21 -32
  90. commands/tech/list_tech_templates.py +51 -54
  91. commands/tech/list_valid_metadata_values.py +5 -9
  92. commands/tech/table_tech_templates.py +2 -6
  93. commands/tech/x_list_related_elements.py +1 -4
  94. examples/GeoSpatial Products Example.py +524 -0
  95. examples/Jupyter Notebooks/P-egeria-server-config.ipynb +2137 -0
  96. examples/Jupyter Notebooks/README.md +2 -0
  97. examples/Jupyter Notebooks/common/P-environment-check.ipynb +115 -0
  98. examples/Jupyter Notebooks/common/__init__.py +14 -0
  99. examples/Jupyter Notebooks/common/common-functions.ipynb +4694 -0
  100. examples/Jupyter Notebooks/common/environment-check.ipynb +52 -0
  101. examples/Jupyter Notebooks/common/globals.ipynb +184 -0
  102. examples/Jupyter Notebooks/common/globals.py +154 -0
  103. examples/Jupyter Notebooks/common/orig_globals.py +152 -0
  104. examples/format_sets/all_format_sets.json +910 -0
  105. examples/format_sets/custom_format_sets.json +268 -0
  106. examples/format_sets/subset_format_sets.json +187 -0
  107. examples/format_sets_save_load_example.py +291 -0
  108. examples/jacquard_data_sets.py +129 -0
  109. examples/output_formats_example.py +193 -0
  110. examples/test_jacquard_data_sets.py +54 -0
  111. examples/test_jacquard_data_sets_scenarios.py +94 -0
  112. md_processing/__init__.py +90 -0
  113. md_processing/command_dispatcher.py +33 -0
  114. md_processing/command_mapping.py +221 -0
  115. md_processing/data/commands/commands_data_designer.json +537 -0
  116. md_processing/data/commands/commands_external_reference.json +733 -0
  117. md_processing/data/commands/commands_feedback.json +155 -0
  118. md_processing/data/commands/commands_general.json +204 -0
  119. md_processing/data/commands/commands_glossary.json +218 -0
  120. md_processing/data/commands/commands_governance.json +3678 -0
  121. md_processing/data/commands/commands_product_manager.json +865 -0
  122. md_processing/data/commands/commands_project.json +642 -0
  123. md_processing/data/commands/commands_solution_architect.json +366 -0
  124. md_processing/data/commands.json +17568 -0
  125. md_processing/data/commands_working.json +30641 -0
  126. md_processing/data/gened_report_specs.py +6584 -0
  127. md_processing/data/generated_format_sets.json +6533 -0
  128. md_processing/data/generated_format_sets_old.json +4137 -0
  129. md_processing/data/generated_format_sets_old.py +45 -0
  130. md_processing/dr_egeria.py +182 -0
  131. md_processing/md_commands/__init__.py +3 -0
  132. md_processing/md_commands/data_designer_commands.py +1276 -0
  133. md_processing/md_commands/ext_ref_commands.py +530 -0
  134. md_processing/md_commands/feedback_commands.py +726 -0
  135. md_processing/md_commands/glossary_commands.py +684 -0
  136. md_processing/md_commands/governance_officer_commands.py +600 -0
  137. md_processing/md_commands/product_manager_commands.py +1266 -0
  138. md_processing/md_commands/project_commands.py +383 -0
  139. md_processing/md_commands/solution_architect_commands.py +1184 -0
  140. md_processing/md_commands/view_commands.py +295 -0
  141. md_processing/md_processing_utils/__init__.py +4 -0
  142. md_processing/md_processing_utils/common_md_proc_utils.py +1249 -0
  143. md_processing/md_processing_utils/common_md_utils.py +578 -0
  144. md_processing/md_processing_utils/determine_width.py +103 -0
  145. md_processing/md_processing_utils/extraction_utils.py +547 -0
  146. md_processing/md_processing_utils/gen_report_specs.py +643 -0
  147. md_processing/md_processing_utils/generate_dr_help.py +193 -0
  148. md_processing/md_processing_utils/generate_md_cmd_templates.py +144 -0
  149. md_processing/md_processing_utils/generate_md_templates.py +83 -0
  150. md_processing/md_processing_utils/md_processing_constants.py +1228 -0
  151. md_processing/md_processing_utils/message_constants.py +19 -0
  152. pyegeria/__init__.py +201 -443
  153. pyegeria/core/__init__.py +40 -0
  154. pyegeria/core/_base_platform_client.py +574 -0
  155. pyegeria/core/_base_server_client.py +573 -0
  156. pyegeria/core/_exceptions.py +457 -0
  157. pyegeria/core/_globals.py +60 -0
  158. pyegeria/core/_server_client.py +6073 -0
  159. pyegeria/core/_validators.py +257 -0
  160. pyegeria/core/config.py +654 -0
  161. pyegeria/{create_tech_guid_lists.py → core/create_tech_guid_lists.py} +0 -1
  162. pyegeria/core/load_config.py +37 -0
  163. pyegeria/core/logging_configuration.py +207 -0
  164. pyegeria/core/mcp_adapter.py +144 -0
  165. pyegeria/core/mcp_server.py +212 -0
  166. pyegeria/core/utils.py +405 -0
  167. pyegeria/deprecated/__init__.py +0 -0
  168. pyegeria/{_client.py → deprecated/_client.py} +62 -24
  169. pyegeria/{_deprecated_gov_engine.py → deprecated/_deprecated_gov_engine.py} +16 -16
  170. pyegeria/{classification_manager_omvs.py → deprecated/classification_manager_omvs.py} +1988 -1878
  171. pyegeria/deprecated/output_formatter_with_machine_keys.py +1127 -0
  172. pyegeria/{runtime_manager_omvs.py → deprecated/runtime_manager_omvs.py} +216 -229
  173. pyegeria/{valid_metadata_omvs.py → deprecated/valid_metadata_omvs.py} +93 -93
  174. pyegeria/{x_action_author_omvs.py → deprecated/x_action_author_omvs.py} +2 -3
  175. pyegeria/egeria_cat_client.py +25 -51
  176. pyegeria/egeria_client.py +140 -98
  177. pyegeria/egeria_config_client.py +48 -24
  178. pyegeria/egeria_tech_client.py +170 -83
  179. pyegeria/models/__init__.py +150 -0
  180. pyegeria/models/collection_models.py +168 -0
  181. pyegeria/models/models.py +654 -0
  182. pyegeria/omvs/__init__.py +84 -0
  183. pyegeria/omvs/action_author.py +342 -0
  184. pyegeria/omvs/actor_manager.py +5980 -0
  185. pyegeria/omvs/asset_catalog.py +842 -0
  186. pyegeria/omvs/asset_maker.py +2736 -0
  187. pyegeria/omvs/automated_curation.py +4403 -0
  188. pyegeria/omvs/classification_manager.py +11213 -0
  189. pyegeria/omvs/collection_manager.py +5780 -0
  190. pyegeria/omvs/community_matters_omvs.py +468 -0
  191. pyegeria/{core_omag_server_config.py → omvs/core_omag_server_config.py} +157 -157
  192. pyegeria/{data_designer_omvs.py → omvs/data_designer.py} +1991 -1691
  193. pyegeria/omvs/data_discovery.py +869 -0
  194. pyegeria/omvs/data_engineer.py +372 -0
  195. pyegeria/omvs/digital_business.py +1133 -0
  196. pyegeria/omvs/external_links.py +1752 -0
  197. pyegeria/omvs/feedback_manager.py +834 -0
  198. pyegeria/{full_omag_server_config.py → omvs/full_omag_server_config.py} +73 -69
  199. pyegeria/omvs/glossary_manager.py +3231 -0
  200. pyegeria/omvs/governance_officer.py +3009 -0
  201. pyegeria/omvs/lineage_linker.py +314 -0
  202. pyegeria/omvs/location_arena.py +1525 -0
  203. pyegeria/omvs/metadata_expert.py +668 -0
  204. pyegeria/omvs/metadata_explorer_omvs.py +2943 -0
  205. pyegeria/omvs/my_profile.py +1042 -0
  206. pyegeria/omvs/notification_manager.py +358 -0
  207. pyegeria/omvs/people_organizer.py +394 -0
  208. pyegeria/{platform_services.py → omvs/platform_services.py} +113 -193
  209. pyegeria/omvs/product_manager.py +1825 -0
  210. pyegeria/omvs/project_manager.py +1907 -0
  211. pyegeria/omvs/reference_data.py +1140 -0
  212. pyegeria/omvs/registered_info.py +334 -0
  213. pyegeria/omvs/runtime_manager.py +2817 -0
  214. pyegeria/omvs/schema_maker.py +446 -0
  215. pyegeria/{server_operations.py → omvs/server_operations.py} +27 -26
  216. pyegeria/omvs/solution_architect.py +6490 -0
  217. pyegeria/omvs/specification_properties.py +37 -0
  218. pyegeria/omvs/subject_area.py +1042 -0
  219. pyegeria/omvs/template_manager_omvs.py +236 -0
  220. pyegeria/omvs/time_keeper.py +1761 -0
  221. pyegeria/omvs/valid_metadata.py +3221 -0
  222. pyegeria/omvs/valid_metadata_lists.py +37 -0
  223. pyegeria/omvs/valid_type_lists.py +37 -0
  224. pyegeria/view/__init__.py +28 -0
  225. pyegeria/view/_output_format_models.py +514 -0
  226. pyegeria/view/_output_formats.py +14 -0
  227. pyegeria/view/base_report_formats.py +2719 -0
  228. pyegeria/view/dr_egeria_reports.py +56 -0
  229. pyegeria/view/format_set_executor.py +397 -0
  230. pyegeria/{md_processing_utils.py → view/md_processing_utils.py} +5 -5
  231. pyegeria/{mermaid_utilities.py → view/mermaid_utilities.py} +2 -154
  232. pyegeria/view/output_formatter.py +1297 -0
  233. pyegeria-5.5.3.3.dist-info/METADATA +218 -0
  234. pyegeria-5.5.3.3.dist-info/RECORD +241 -0
  235. {pyegeria-5.3.9.9.3.dist-info → pyegeria-5.5.3.3.dist-info}/WHEEL +2 -1
  236. pyegeria-5.5.3.3.dist-info/entry_points.txt +103 -0
  237. pyegeria-5.5.3.3.dist-info/top_level.txt +4 -0
  238. commands/cat/.DS_Store +0 -0
  239. commands/cat/README.md +0 -16
  240. commands/cli/txt_custom_v2.tcss +0 -19
  241. commands/my/README.md +0 -17
  242. commands/ops/README.md +0 -24
  243. commands/ops/monitor_asset_events.py +0 -108
  244. commands/tech/README.md +0 -24
  245. pyegeria/.DS_Store +0 -0
  246. pyegeria/README.md +0 -35
  247. pyegeria/_globals.py +0 -47
  248. pyegeria/_validators.py +0 -385
  249. pyegeria/asset_catalog_omvs.py +0 -864
  250. pyegeria/automated_curation_omvs.py +0 -3765
  251. pyegeria/collection_manager_omvs.py +0 -2744
  252. pyegeria/dr.egeria spec.md +0 -9
  253. pyegeria/egeria_my_client.py +0 -56
  254. pyegeria/feedback_manager_omvs.py +0 -4573
  255. pyegeria/glossary_browser_omvs.py +0 -3728
  256. pyegeria/glossary_manager_omvs.py +0 -2440
  257. pyegeria/m_test.py +0 -118
  258. pyegeria/md_processing_helpers.py +0 -58
  259. pyegeria/md_processing_utils_orig.py +0 -1103
  260. pyegeria/metadata_explorer_omvs.py +0 -2326
  261. pyegeria/my_profile_omvs.py +0 -1022
  262. pyegeria/output_formatter.py +0 -389
  263. pyegeria/project_manager_omvs.py +0 -1933
  264. pyegeria/registered_info.py +0 -167
  265. pyegeria/solution_architect_omvs.py +0 -2156
  266. pyegeria/template_manager_omvs.py +0 -1414
  267. pyegeria/utils.py +0 -197
  268. pyegeria-5.3.9.9.3.dist-info/METADATA +0 -72
  269. pyegeria-5.3.9.9.3.dist-info/RECORD +0 -143
  270. pyegeria-5.3.9.9.3.dist-info/entry_points.txt +0 -99
  271. /pyegeria/{_exceptions.py → deprecated/_exceptions.py} +0 -0
  272. {pyegeria-5.3.9.9.3.dist-info → pyegeria-5.5.3.3.dist-info/licenses}/LICENSE +0 -0
@@ -53,7 +53,7 @@ from commands.tech.list_solution_components import solution_component_list
53
53
  from commands.tech.list_solution_roles import solution_role_list
54
54
  from commands.tech.list_tech_templates import display_templates_spec
55
55
  from commands.tech.list_valid_metadata_values import display_metadata_values
56
- from commands.tech.generic_actions import delete_element
56
+ from commands.tech.element_actions import delete_element
57
57
 
58
58
  @tui()
59
59
  @click.version_option("0.0.1", prog_name="egeria_ops")
@@ -360,17 +360,8 @@ def show_elements_by_classification_by_prop(
360
360
  """Show elements by classification and property value"""
361
361
  c = ctx.obj
362
362
  if extended:
363
- find_elements_by_prop_value_x(
364
- om_type,
365
- property_value,
366
- [property_names],
367
- c.view_server,
368
- c.view_server_url,
369
- c.userid,
370
- c.password,
371
- c.jupyter,
372
- c.width,
373
- )
363
+ find_elements_by_prop_value_x(om_type, property_value, [property_names], c.view_server, c.view_server_url,
364
+ c.userid, c.password, c.jupyter, c.width)
374
365
  else:
375
366
  find_elements_by_prop_value(
376
367
  om_type,
@@ -404,17 +395,8 @@ def show_elements_by_classification_by_prop(
404
395
  def show_related_elements(ctx, element_guid, om_type, rel_type):
405
396
  """Show all elements related to specified guid"""
406
397
  c = ctx.obj
407
- list_related_elements(
408
- element_guid,
409
- om_type,
410
- rel_type,
411
- c.view_server,
412
- c.view_server_url,
413
- c.userid,
414
- c.password,
415
- c.jupyter,
416
- c.width,
417
- )
398
+ list_related_elements(element_guid, om_type, rel_type, c.view_server, c.view_server_url, c.userid, c.password,
399
+ c.jupyter, c.width)
418
400
 
419
401
 
420
402
  @show_elements.command("related-elements_by_prop")
@@ -491,9 +473,7 @@ def show_tech_types(ctx, search_string):
491
473
  """
492
474
 
493
475
  c = ctx.obj
494
- display_tech_types(
495
- search_string, c.view_server, c.view_server_url, c.userid, c.password
496
- )
476
+ display_tech_types(search_string, c.view_server, c.view_server_url, c.userid, c.password)
497
477
 
498
478
 
499
479
  @show_tech.command("tech-details")
@@ -507,15 +487,7 @@ def show_tech_details(ctx, tech_name):
507
487
  tech-name is a valid technology name (see 'show tech-types')
508
488
  """
509
489
  c = ctx.obj
510
- tech_details_viewer(
511
- tech_name,
512
- c.view_server,
513
- c.view_server_url,
514
- c.userid,
515
- c.password,
516
- c.jupyter,
517
- c.width,
518
- )
490
+ tech_details_viewer(tech_name, c.view_server, c.view_server_url, c.userid, c.password, c.jupyter, c.width)
519
491
 
520
492
 
521
493
  @show_tech.command("tech-type-templates")
@@ -552,7 +524,7 @@ def show_asset_types(ctx):
552
524
  @show_info.command("registered-services")
553
525
  @click.option(
554
526
  "--services",
555
- type=click.Choice(
527
+ type_name = click.Choice(
556
528
  [
557
529
  "all",
558
530
  "access-services",
@@ -571,15 +543,7 @@ def show_asset_types(ctx):
571
543
  def show_registered_services(ctx, services):
572
544
  """Show information about a registered services"""
573
545
  c = ctx.obj
574
- display_registered_svcs(
575
- services,
576
- c.view_server,
577
- c.view_server_url,
578
- c.userid,
579
- c.password,
580
- c.jupyter,
581
- c.width,
582
- )
546
+ display_registered_svcs(services, c.view_server, c.view_server_url, c.userid, c.password, c.jupyter, c.width)
583
547
 
584
548
 
585
549
  @show_info.command("relationship-types")
@@ -592,16 +556,8 @@ def show_registered_services(ctx, services):
592
556
  def show_relationship_types(ctx, rel_type):
593
557
  """Show information about the specified relationship type"""
594
558
  c = ctx.obj
595
- display_relationship_types(
596
- rel_type,
597
- c.view_server,
598
- c.view_server_url,
599
- c.userid,
600
- c.password,
601
- False,
602
- c.jupyter,
603
- c.width,
604
- )
559
+ display_relationship_types(rel_type, c.view_server, c.view_server_url, c.userid, c.password, False, c.jupyter,
560
+ c.width)
605
561
 
606
562
 
607
563
  @show_tech.command("tech-templates")
@@ -701,15 +657,7 @@ def list_element_info(ctx):
701
657
  def get_element_info(ctx, om_type):
702
658
  """Display graph of elements for an Open Metadata Type"""
703
659
  c = ctx.obj
704
- display_elements(
705
- om_type,
706
- c.view_server,
707
- c.view_server_url,
708
- c.userid,
709
- c.password,
710
- c.jupyter,
711
- c.width,
712
- )
660
+ display_elements(om_type, c.view_server, c.view_server_url, c.userid, c.password, c.jupyter, c.width)
713
661
 
714
662
 
715
663
  @show_elements.command("elements")
@@ -752,15 +700,7 @@ def list_all_om_type_elements(ctx, om_type, extended):
752
700
  def list_supply_chains(ctx, search_string):
753
701
  """Display supply chains"""
754
702
  c = ctx.obj
755
- supply_chain_viewer(
756
- search_string,
757
- c.view_server,
758
- c.view_server_url,
759
- c.userid,
760
- c.password,
761
- c.jupyter,
762
- c.width,
763
- )
703
+ supply_chain_viewer(search_string, c.view_server, c.view_server_url, c.userid, c.password, c.jupyter, c.width)
764
704
 
765
705
 
766
706
  @show_supply_chains.command("blueprints")
@@ -769,22 +709,14 @@ def list_supply_chains(ctx, search_string):
769
709
  def list_blueprints(ctx, search_string):
770
710
  """Display solution blueprints"""
771
711
  c = ctx.obj
772
- blueprint_list(
773
- search_string,
774
- c.view_server,
775
- c.view_server_url,
776
- c.userid,
777
- c.password,
778
- c.jupyter,
779
- c.width,
780
- )
712
+ blueprint_list(search_string, c.view_server, c.view_server_url, c.userid, c.password, c.jupyter, c.width)
781
713
 
782
714
 
783
- @show_supply_chains.command("solution-roles")
715
+ @show_supply_chains.command("solution-perspectives")
784
716
  @click.option("--search-string", default="*", help="Search string")
785
717
  @click.pass_context
786
718
  def list_solution_roles(ctx, search_string):
787
- """Display solution roles"""
719
+ """Display solution perspectives"""
788
720
  c = ctx.obj
789
721
  solution_role_list(
790
722
  search_string,
@@ -803,15 +735,7 @@ def list_solution_roles(ctx, search_string):
803
735
  def list_solution_components(ctx, search_string):
804
736
  """Display solution componentss"""
805
737
  c = ctx.obj
806
- solution_component_list(
807
- search_string,
808
- c.view_server,
809
- c.view_server_url,
810
- c.userid,
811
- c.password,
812
- c.jupyter,
813
- c.width,
814
- )
738
+ solution_component_list(search_string, c.view_server, c.view_server_url, c.userid, c.password, c.jupyter, c.width)
815
739
 
816
740
 
817
741
  #
@@ -12,14 +12,12 @@ class Config(object):
12
12
  integration_daemon_url: str,
13
13
  engine_host: str,
14
14
  engine_host_url: str,
15
- admin_user: str,
16
- admin_user_password: str,
17
15
  userid: str,
18
16
  password: str,
19
17
  timeout: int,
20
18
  jupyter: bool,
21
19
  width: int,
22
- home_glossary_guid: str,
20
+ home_glossary_name: str,
23
21
  glossary_path: str,
24
22
  root_path: str,
25
23
  inbox_path: str,
@@ -33,8 +31,7 @@ class Config(object):
33
31
  self.integration_daemon_url = integration_daemon_url
34
32
  self.engine_host = engine_host
35
33
  self.engine_host_url = engine_host_url
36
- self.admin_user = admin_user
37
- self.admin_user_password = admin_user_password
34
+
38
35
  self.userid = userid
39
36
  self.password = password
40
37
  self.timeout = timeout
@@ -42,7 +39,7 @@ class Config(object):
42
39
  self.width = width
43
40
  self.server = server
44
41
  self.url = url
45
- self.home_glossary_guid = home_glossary_guid
42
+ self.home_glossary_name = home_glossary_name
46
43
  self.glossary_path = glossary_path
47
44
  self.root_path = root_path
48
45
  self.inbox_path = inbox_path
@@ -1,3 +1,4 @@
1
+
1
2
  #!/usr/bin/env python3
2
3
  """
3
4
  SPDX-License-Identifier: Apache-2.0
@@ -13,18 +14,19 @@ import os
13
14
  import sys
14
15
  import time
15
16
 
16
- from rich import box
17
+ from rich import box, print
17
18
  from rich.console import Console
18
19
  from rich.prompt import Prompt
19
20
  from rich.table import Table
20
21
  from rich.text import Text
22
+ from rich.console import Console
23
+ from rich.markdown import Markdown
24
+
21
25
 
22
26
  from pyegeria import (
23
27
  EgeriaTech,
24
- InvalidParameterException,
25
- PropertyServerException,
26
- UserNotAuthorizedException,
27
- print_exception_response,
28
+ PyegeriaAPIException, PyegeriaClientException, print_basic_exception, print_exception_table
29
+ NO_ELEMENTS_FOUND
28
30
  )
29
31
 
30
32
  disable_ssl_warnings = True
@@ -48,9 +50,11 @@ EGERIA_ROOT_PATH = os.environ.get("EGERIA_ROOT_PATH", "../../")
48
50
  EGERIA_INBOX_PATH = os.environ.get("EGERIA_INBOX_PATH", "md_processing/dr_egeria_inbox")
49
51
  EGERIA_OUTBOX_PATH = os.environ.get("EGERIA_OUTBOX_PATH", "md_processing/dr_egeria_outbox")
50
52
 
53
+ console = Console(width=EGERIA_WIDTH)
51
54
 
52
55
 
53
- def display_categories(
56
+ def display_data_obj(
57
+ object_type: str,
54
58
  search_string: str = "*",
55
59
  view_server: str = EGERIA_VIEW_SERVER,
56
60
  view_url: str = EGERIA_VIEW_SERVER_URL,
@@ -63,6 +67,8 @@ def display_categories(
63
67
  """Display either a specified category or all categories if the search_string is '*'.
64
68
  Parameters
65
69
  ----------
70
+ object_type: str
71
+ The type of object to display,
66
72
  search_string : str, default is '*'
67
73
  The string used to search for categories.
68
74
  view_server : str
@@ -83,76 +89,48 @@ def display_categories(
83
89
  m_client = EgeriaTech(view_server, view_url, user_id=user, user_pwd=user_pass)
84
90
  token = m_client.create_egeria_bearer_token()
85
91
 
92
+ match object_type:
93
+ case "Data Structures":
94
+ find_proc = m_client.find_data_structures
95
+ case "Data Fields":
96
+ find_proc = m_client.find_data_fields
97
+ case "Data Classes":
98
+ find_proc = m_client.find_data_classes
99
+ case _: #catch invalid patterns
100
+ print(f"Invalid object type: {object_type}")
101
+ return
86
102
 
87
103
  try:
104
+ if not callable(find_proc):
105
+ raise TypeError(f"find_proc is not callable for object type '{object_type}'")
106
+
88
107
  if output_format == "FORM":
89
108
  action = "Update-Form"
90
109
  elif output_format == "REPORT":
91
110
  action = "Report"
92
111
  if output_format != "TABLE":
93
112
  file_path = os.path.join(EGERIA_ROOT_PATH, EGERIA_OUTBOX_PATH)
94
- file_name = f"Categories-{time.strftime('%Y-%m-%d-%H-%M-%S')}-{action}.md"
113
+ file_name = f"{object_type}-{time.strftime('%Y-%m-%d-%H-%M-%S')}-{action}.md"
95
114
  full_file_path = os.path.join(file_path, file_name)
96
115
  os.makedirs(os.path.dirname(full_file_path), exist_ok=True)
97
- output = m_client.find_glossary_categories(search_string, output_format=output_format)
98
- if output == "NO_CATEGORIES_FOUND":
99
- print(f"\n==> No categories found for search string '{search_string}'")
116
+ output = find_proc(search_string, output_format=output_format)
117
+ if output == NO_ELEMENTS_FOUND:
118
+ print(f"\n==> No elements found for search string '{search_string}'")
100
119
  return
101
120
  with open(full_file_path, 'w') as f:
102
121
  f.write(output)
103
- print(f"\n==> Categories output written to {full_file_path}")
122
+ print(f"\n==> Elements output written to {full_file_path}")
123
+ return
124
+ else:
125
+ output =find_proc(search_string, output_format="LIST")
126
+ if output == NO_ELEMENTS_FOUND:
127
+ print(f"\n==> No elements found for search string '{search_string}'")
128
+ return
129
+ console.print(Markdown(output))
104
130
  return
105
131
 
106
- table = Table(
107
- title=f"Category List @ {time.asctime()}",
108
- style="bright_white on black",
109
- header_style="bright_white on dark_blue",
110
- title_style="bold white on black",
111
- caption_style="white on black",
112
- show_lines=True,
113
- box=box.ROUNDED,
114
- caption=f"View Server '{view_server}' @ Platform - {view_url}",
115
- expand=True,
116
- )
117
- table.add_column("Category Name")
118
- table.add_column(
119
- "Qualified Name & GUID", width=38, no_wrap=True, justify="center"
120
- )
121
- table.add_column("Description")
122
- table.add_column("In Glossary")
123
- table.add_column("Parent Category")
124
-
125
- categories = m_client.find_glossary_categories(search_string)
126
- if type(categories) is list:
127
- sorted_category_list = sorted(
128
- categories, key=lambda k: k["glossaryCategoryProperties"]["displayName"]
129
- )
130
- for category in sorted_category_list:
131
- display_name = category["glossaryCategoryProperties"].get("displayName",'---')
132
- qualified_name = category["glossaryCategoryProperties"]["qualifiedName"]
133
- category_guid = category["elementHeader"]["guid"]
134
- q_name = Text(f"{qualified_name}\n&\n{category_guid}", justify="center")
135
- description = category["glossaryCategoryProperties"].get("description",'---')
136
- classification_props = category["elementHeader"]['classifications'][0].get('classificationProperties',None)
137
- glossary_qualified_name = '---'
138
- if classification_props is not None:
139
- glossary_guid = classification_props.get('anchorScopeGUID','---')
140
- glossary_qualified_name = (
141
- m_client.get_glossary_by_guid(glossary_guid))['glossaryProperties']['qualifiedName']
142
- cat_info = m_client.get_category_parent(category_guid)
143
- if type(cat_info) is dict:
144
- parent_qn = cat_info['glossaryCategoryProperties']['qualifiedName']
145
- else:
146
- parent_qn = '---'
147
-
148
-
149
- table.add_row(display_name, q_name, description, glossary_qualified_name, parent_qn)
150
- console = Console(
151
- style="bold bright_white on black",
152
- width=width,
153
- force_terminal=not jupyter,
154
- )
155
- console.print(table)
132
+
133
+
156
134
 
157
135
  except (InvalidParameterException, PropertyServerException) as e:
158
136
  print_exception_response(e)
@@ -160,8 +138,18 @@ def display_categories(
160
138
  m_client.close_session()
161
139
 
162
140
 
163
- def main():
141
+ def main_structs():
142
+ main(object_type = "Data Structures")
143
+
144
+ def main_fields():
145
+ main(object_type = "Data Fields")
146
+
147
+ def main_classes():
148
+ main(object_type = "Data Classes")
149
+
150
+ def main(object_type: str="Data Fields"):
164
151
  parser = argparse.ArgumentParser()
152
+ parser.add_argument("--kind", choices=["Data Structures", "Data Fields", "Data Classes"])
165
153
  parser.add_argument("--server", help="Name of the server to display status for")
166
154
  parser.add_argument("--url", help="URL Platform to connect to")
167
155
  parser.add_argument("--userid", help="User Id")
@@ -173,15 +161,16 @@ def main():
173
161
  url = args.url if args.url is not None else EGERIA_PLATFORM_URL
174
162
  userid = args.userid if args.userid is not None else EGERIA_USER
175
163
  user_pass = args.password if args.password is not None else EGERIA_USER_PASSWORD
164
+ kind = args.kind if args.kind is not None else object_type
176
165
 
177
166
  try:
178
167
  search_string = Prompt.ask(
179
- "Enter the category you are searching for or '*' for all:", default="*"
168
+ "Enter the element you are searching for or '*' for all:", default="*"
180
169
  )
181
170
  output_format = Prompt.ask("What output format do you want?", choices=["TABLE", "FORM", "REPORT"],
182
171
  default="TABLE")
183
172
 
184
- display_categories(search_string, server, url, userid,
173
+ display_data_obj(kind, search_string, server, url, userid,
185
174
  user_pass, output_format = output_format)
186
175
 
187
176
  except KeyboardInterrupt:
@@ -19,10 +19,7 @@ from rich.text import Text
19
19
 
20
20
  from pyegeria import (
21
21
  EgeriaTech,
22
- InvalidParameterException,
23
- PropertyServerException,
24
- UserNotAuthorizedException,
25
- print_exception_response, NO_ELEMENTS_FOUND,
22
+ PyegeriaAPIException, PyegeriaClientException, print_basic_exception, print_exception_table NO_ELEMENTS_FOUND,
26
23
  )
27
24
 
28
25
  disable_ssl_warnings = True
@@ -89,7 +86,7 @@ def display_data_struct(
89
86
  action = "Dict"
90
87
  elif output_format == "MERMAID":
91
88
  action = "Mermaid"
92
- filter = search_string.strip() if search_string != "*" else None
89
+ filter_string = search_string.strip() if search_string != "*" else None
93
90
 
94
91
  body = {
95
92
  "class": "FilterRequestBody",
@@ -100,7 +97,7 @@ def display_data_struct(
100
97
  "limitResultsByStatus": ["ACTIVE"],
101
98
  "sequencingOrder": "PROPERTY_ASCENDING",
102
99
  "sequencingProperty": "qualifiedName",
103
- "filter": filter
100
+ "filter": filter_string
104
101
  }
105
102
 
106
103
  if output_format != "TABLE":