pyegeria 0.7.25__tar.gz → 0.7.27__tar.gz

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 (95) hide show
  1. {pyegeria-0.7.25 → pyegeria-0.7.27}/PKG-INFO +2 -1
  2. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/my/todo_actions.py +2 -2
  3. pyegeria-0.7.27/pyegeria/__init__.py +155 -0
  4. pyegeria-0.7.27/pyegeria/mermaid_utilities.py +217 -0
  5. {pyegeria-0.7.25 → pyegeria-0.7.27}/pyegeria/my_profile_omvs.py +3 -2
  6. {pyegeria-0.7.25 → pyegeria-0.7.27}/pyproject.toml +2 -2
  7. pyegeria-0.7.25/pyegeria/__init__.py +0 -128
  8. {pyegeria-0.7.25 → pyegeria-0.7.27}/LICENSE +0 -0
  9. {pyegeria-0.7.25 → pyegeria-0.7.27}/README.md +0 -0
  10. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/doc_samples/Create_Collection_Sample.py +0 -0
  11. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/doc_samples/Create_Sustainability_Collection_Sample.py +0 -0
  12. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/cat/README.md +0 -0
  13. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/cat/__init__.py +0 -0
  14. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/cat/get_asset_graph.py +0 -0
  15. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/cat/get_collection.py +0 -0
  16. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/cat/get_project_dependencies.py +0 -0
  17. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/cat/get_project_structure.py +0 -0
  18. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/cat/get_tech_type_elements.py +0 -0
  19. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/cat/get_tech_type_template.py +0 -0
  20. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/cat/list_assets.py +0 -0
  21. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/cat/list_cert_types.py +0 -0
  22. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/cat/list_glossary.py +0 -0
  23. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/cat/list_projects.py +0 -0
  24. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/cat/list_relationships.py +0 -0
  25. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/cat/list_tech_types.py +0 -0
  26. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/cat/list_todos.py +0 -0
  27. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/cat/list_user_ids.py +0 -0
  28. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/cli/__init__.py +0 -0
  29. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/cli/egeria.py +0 -0
  30. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/cli/egeria_cat.py +0 -0
  31. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/cli/egeria_my.py +0 -0
  32. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/cli/egeria_ops.py +0 -0
  33. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/cli/egeria_tech.py +0 -0
  34. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/cli/ops_config.py +0 -0
  35. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/my/README.md +0 -0
  36. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/my/__init__.py +0 -0
  37. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/my/list_my_profile.py +0 -0
  38. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/my/list_my_roles.py +0 -0
  39. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/my/monitor_my_todos.py +0 -0
  40. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/my/monitor_open_todos.py +0 -0
  41. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/my/my_profile_actions.py +0 -0
  42. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/ops/README.md +0 -0
  43. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/ops/__init__.py +0 -0
  44. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/ops/engine_actions.py +0 -0
  45. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/ops/integration_daemon_actions.py +0 -0
  46. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/ops/list_catalog_targets.py +0 -0
  47. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/ops/load_archive.py +0 -0
  48. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/ops/monitor_asset_events.py +0 -0
  49. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/ops/monitor_coco_status.py +0 -0
  50. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/ops/monitor_engine_activity.py +0 -0
  51. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/ops/monitor_gov_eng_status.py +0 -0
  52. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/ops/monitor_integ_daemon_status.py +0 -0
  53. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/ops/monitor_platform_status.py +0 -0
  54. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/ops/monitor_server_list.py +0 -0
  55. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/ops/monitor_server_status.py +0 -0
  56. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/ops/refresh_integration_daemon.py +0 -0
  57. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/ops/restart_integration_daemon.py +0 -0
  58. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/tech/README.md +0 -0
  59. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/tech/__init__.py +0 -0
  60. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/tech/get_element_info.py +0 -0
  61. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/tech/get_guid_info.py +0 -0
  62. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/tech/get_tech_details.py +0 -0
  63. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/tech/list_asset_types.py +0 -0
  64. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/tech/list_elements.py +0 -0
  65. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/tech/list_elements_x.py +0 -0
  66. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/tech/list_registered_services.py +0 -0
  67. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/tech/list_related_specification.py +0 -0
  68. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/tech/list_relationship_types.py +0 -0
  69. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/tech/list_tech_templates.py +0 -0
  70. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/tech/list_valid_metadata_values.py +0 -0
  71. {pyegeria-0.7.25 → pyegeria-0.7.27}/examples/widgets/tech/x_list_related_elements.py +0 -0
  72. {pyegeria-0.7.25 → pyegeria-0.7.27}/pyegeria/Xloaded_resources_omvs.py +0 -0
  73. {pyegeria-0.7.25 → pyegeria-0.7.27}/pyegeria/_client.py +0 -0
  74. {pyegeria-0.7.25 → pyegeria-0.7.27}/pyegeria/_deprecated_gov_engine.py +0 -0
  75. {pyegeria-0.7.25 → pyegeria-0.7.27}/pyegeria/_exceptions.py +0 -0
  76. {pyegeria-0.7.25 → pyegeria-0.7.27}/pyegeria/_globals.py +0 -0
  77. {pyegeria-0.7.25 → pyegeria-0.7.27}/pyegeria/_validators.py +0 -0
  78. {pyegeria-0.7.25 → pyegeria-0.7.27}/pyegeria/action_author_omvs.py +0 -0
  79. {pyegeria-0.7.25 → pyegeria-0.7.27}/pyegeria/asset_catalog_omvs.py +0 -0
  80. {pyegeria-0.7.25 → pyegeria-0.7.27}/pyegeria/automated_curation_omvs.py +0 -0
  81. {pyegeria-0.7.25 → pyegeria-0.7.27}/pyegeria/classification_manager_omvs.py +0 -0
  82. {pyegeria-0.7.25 → pyegeria-0.7.27}/pyegeria/collection_manager_omvs.py +0 -0
  83. {pyegeria-0.7.25 → pyegeria-0.7.27}/pyegeria/core_omag_server_config.py +0 -0
  84. {pyegeria-0.7.25 → pyegeria-0.7.27}/pyegeria/create_tech_guid_lists.py +0 -0
  85. {pyegeria-0.7.25 → pyegeria-0.7.27}/pyegeria/feedback_manager_omvs.py +0 -0
  86. {pyegeria-0.7.25 → pyegeria-0.7.27}/pyegeria/full_omag_server_config.py +0 -0
  87. {pyegeria-0.7.25 → pyegeria-0.7.27}/pyegeria/glossary_browser_omvs.py +0 -0
  88. {pyegeria-0.7.25 → pyegeria-0.7.27}/pyegeria/glossary_manager_omvs.py +0 -0
  89. {pyegeria-0.7.25 → pyegeria-0.7.27}/pyegeria/platform_services.py +0 -0
  90. {pyegeria-0.7.25 → pyegeria-0.7.27}/pyegeria/project_manager_omvs.py +0 -0
  91. {pyegeria-0.7.25 → pyegeria-0.7.27}/pyegeria/registered_info.py +0 -0
  92. {pyegeria-0.7.25 → pyegeria-0.7.27}/pyegeria/runtime_manager_omvs.py +0 -0
  93. {pyegeria-0.7.25 → pyegeria-0.7.27}/pyegeria/server_operations.py +0 -0
  94. {pyegeria-0.7.25 → pyegeria-0.7.27}/pyegeria/utils.py +0 -0
  95. {pyegeria-0.7.25 → pyegeria-0.7.27}/pyegeria/valid_metadata_omvs.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyegeria
3
- Version: 0.7.25
3
+ Version: 0.7.27
4
4
  Summary: A python client for Egeria
5
5
  Home-page: https://github.com/odpi/egeria-python
6
6
  License: Apache 2.0
@@ -18,6 +18,7 @@ Requires-Dist: click (>=8.1.7,<9.0.0)
18
18
  Requires-Dist: confluent-kafka (>=2.5.0,<3.0.0)
19
19
  Requires-Dist: httpx (>=0.27.0,<0.28.0)
20
20
  Requires-Dist: jupyter (>=1.0.0,<2.0.0)
21
+ Requires-Dist: mermaid-py (>=0.5.3,<0.6.0)
21
22
  Requires-Dist: pytest (>=8.2.2,<9.0.0)
22
23
  Requires-Dist: requests (>=2.32.3,<3.0.0)
23
24
  Requires-Dist: rich (>=13.7.1,<14.0.0)
@@ -128,7 +128,7 @@ def change_todo_status(server, url, userid, password, timeout, todo_guid, new_st
128
128
 
129
129
  m_client.update_to_do(todo_guid, body, is_merge_update=True)
130
130
 
131
- click.echo(f"Marked todo item {todo_guid} as complete.")
131
+ click.echo(f"Changed todo item {todo_guid} status to {new_status}.")
132
132
 
133
133
  except (InvalidParameterException, PropertyServerException) as e:
134
134
  print_exception_response(e)
@@ -145,8 +145,8 @@ def change_todo_status(server, url, userid, password, timeout, todo_guid, new_st
145
145
  @click.argument('todo-guid')
146
146
  def mark_todo_complete(server, url, userid, password, timeout, todo_guid):
147
147
  """Mark the specified todo as complete"""
148
+ m_client = MyProfile(server, url, user_id=userid, user_pwd=password)
148
149
  try:
149
- m_client = MyProfile(server, url, user_id=userid, user_pwd=password)
150
150
  token = m_client.create_egeria_bearer_token()
151
151
  body = {
152
152
  "class": "ToDoProperties",
@@ -0,0 +1,155 @@
1
+ """
2
+ SPDX-License-Identifier: Apache-2.0
3
+ Copyright Contributors to the ODPi Egeria project.
4
+
5
+ This is the pyegeria client package. The purpose of the package is to provide
6
+ easy access to Egeria (https://egeria-project.org). The package is currently in
7
+ development.
8
+
9
+ The first capabilities are around Egeria's platform services used to start and stop
10
+ the server platform and servers.
11
+
12
+ """
13
+
14
+ from ._globals import (
15
+ is_debug,
16
+ disable_ssl_warnings,
17
+ max_paging_size,
18
+ TEMPLATE_GUIDS,
19
+ INTEGRATION_GUIDS,
20
+ default_time_out,
21
+ )
22
+
23
+ if disable_ssl_warnings:
24
+ from urllib3.exceptions import InsecureRequestWarning
25
+ from urllib3 import disable_warnings
26
+
27
+ disable_warnings(InsecureRequestWarning)
28
+
29
+ from ._exceptions import (
30
+ InvalidParameterException,
31
+ PropertyServerException,
32
+ UserNotAuthorizedException,
33
+ print_exception_response,
34
+ )
35
+
36
+ # from .utils import print_response, body_slimmer, wrap_text
37
+ from .utils import print_response, body_slimmer
38
+ from ._client import Client
39
+ from .automated_curation_omvs import AutomatedCuration
40
+ from .core_omag_server_config import CoreServerConfig
41
+ from .platform_services import Platform
42
+ from .registered_info import RegisteredInfo
43
+ from .glossary_browser_omvs import GlossaryBrowser
44
+ from ._validators import (
45
+ validate_user_id,
46
+ validate_name,
47
+ validate_guid,
48
+ validate_server_name,
49
+ validate_search_string,
50
+ validate_url,
51
+ is_json,
52
+ validate_public,
53
+ )
54
+ from .asset_catalog_omvs import AssetCatalog
55
+
56
+ from .my_profile_omvs import MyProfile
57
+ from .full_omag_server_config import FullServerConfig
58
+ from .server_operations import ServerOps
59
+ from .collection_manager_omvs import CollectionManager
60
+ from .project_manager_omvs import ProjectManager
61
+ from .valid_metadata_omvs import ValidMetadataManager
62
+ from .asset_catalog_omvs import AssetCatalog
63
+ from .Xloaded_resources_omvs import LoadedResources
64
+ from ._deprecated_gov_engine import GovEng
65
+ from .runtime_manager_omvs import RuntimeManager
66
+ from .action_author_omvs import GovernanceAuthor
67
+ from .glossary_manager_omvs import GlossaryManager
68
+ from .create_tech_guid_lists import build_global_guid_lists
69
+ from .classification_manager_omvs import ClassificationManager
70
+ from .feedback_manager_omvs import FeedbackManager
71
+ from .mermaid_utilities import load_mermaid, render_mermaid, generate_process_graph
72
+
73
+
74
+ #
75
+ # The following assignments were generated by the `create_tech_guid_lists.py` utility that uses the pyegeria functions
76
+ # to interrogate Egeria (and the Core Content Pack) for the GUIDS associates with integration connectors and templates.
77
+ # While these GUIDS rarely change, they will evolve as new connectors are built and integrated. This could impact some
78
+ # of the pyegeria methods that, as a convenience, use pre-assigned GUIDS to create new elements and such.
79
+ #
80
+ # This list may also be augmented (and of use) to those wishing to extend the pyegeria methods to automate or simplify
81
+ # the use of custom connectors and templates.
82
+ #
83
+ #
84
+ global TEMPLATE_GUIDS, INTEGRATION_GUIDS
85
+
86
+ TEMPLATE_GUIDS["CSV Data File"] = "13770f93-13c8-42be-9bb8-e0b1b1e52b1f"
87
+ TEMPLATE_GUIDS["Keystore File"] = "fbcfcc0c-1652-421f-b49b-c3e1c108768f"
88
+ TEMPLATE_GUIDS["Unity Catalog Server"] = "dcca9788-b30f-4007-b1ac-ec634aff6879"
89
+ INTEGRATION_GUIDS["UnityCatalogInsideCatalog"] = "74dde22f-2249-4ea3-af2b-b39e73f79b81"
90
+ INTEGRATION_GUIDS["UnityCatalogServer"] = "06d068d9-9e08-4e67-8c59-073bbf1013af"
91
+ INTEGRATION_GUIDS["JDBC"] = "70dcd0b7-9f06-48ad-ad44-ae4d7a7762aa"
92
+ TEMPLATE_GUIDS["Data File"] = "66d8dda9-00cf-4e59-938c-4b0583596b1e"
93
+ TEMPLATE_GUIDS["View Server"] = "fd61ca01-390d-4aa2-a55d-426826aa4e1b"
94
+ TEMPLATE_GUIDS["Archive File"] = "7578e504-d00f-406d-a194-3fc0a351cdf9"
95
+ TEMPLATE_GUIDS["Unity Catalog Catalog"] = "5ee006aa-a6d6-411b-9b8d-5f720c079cae"
96
+ TEMPLATE_GUIDS[
97
+ "PostgreSQL Relational Database"
98
+ ] = "3d398b3f-7ae6-4713-952a-409f3dea8520"
99
+ INTEGRATION_GUIDS["JDBC"] = "70dcd0b7-9f06-48ad-ad44-ae4d7a7762aa"
100
+ TEMPLATE_GUIDS["Program File"] = "32d27e9c-1fdf-455a-ad2a-42b4d7d99108"
101
+ TEMPLATE_GUIDS["FileFolder"] = "fbdd8efd-1b69-474c-bb6d-0a304b394146"
102
+ INTEGRATION_GUIDS["LandingAreaFilesMonitor"] = "1b98cdac-dd0a-4621-93db-99ef5a1098bc"
103
+ INTEGRATION_GUIDS["SampleDataFilesMonitor"] = "cd6479e1-2fe7-4426-b358-8a0cf70be117"
104
+ TEMPLATE_GUIDS["PostgreSQL Server"] = "542134e6-b9ce-4dce-8aef-22e8daf34fdb"
105
+ INTEGRATION_GUIDS["PostgreSQLServer"] = "36f69fd0-54ba-4f59-8a44-11ccf2687a34"
106
+ TEMPLATE_GUIDS["Audio Data File"] = "39b4b670-7f15-4744-a5ba-62e8edafbcee"
107
+ TEMPLATE_GUIDS["Document File"] = "eb6f728d-fa54-4350-9807-1199cbf96851"
108
+ TEMPLATE_GUIDS["Integration Daemon"] = "6b3516f0-dd13-4786-9601-07215f995197"
109
+ TEMPLATE_GUIDS["XML Data File"] = "ea67ae71-c674-473e-b38b-689879d2a7d9"
110
+ TEMPLATE_GUIDS["Unity Catalog Schema"] = "5bf92b0f-3970-41ea-b0a3-aacfbf6fd92e"
111
+ TEMPLATE_GUIDS["Parquet Data File"] = "7f6cd744-79c3-4d25-a056-eeb1a91574c3"
112
+ TEMPLATE_GUIDS["3D Image Data File"] = "0059ea2b-6292-4cac-aa6f-a80a605f1114"
113
+ TEMPLATE_GUIDS["YAML File"] = "2221855b-2b64-4b45-a2ee-c40adc5e2a64"
114
+ TEMPLATE_GUIDS["Metadata Access Server"] = "bd8de890-fa79-4c24-aab8-20b41b5893dd"
115
+ TEMPLATE_GUIDS["Properties File"] = "3b281111-a0ef-4fc4-99e7-9a0ef84a7636"
116
+ TEMPLATE_GUIDS["Vector Data File"] = "db1bec7f-55a9-40d3-91c0-a57b76d422e2"
117
+ TEMPLATE_GUIDS["Apache Kafka Server"] = "5e1ff810-5418-43f7-b7c4-e6e062f9aff7"
118
+ INTEGRATION_GUIDS["KafkaTopic"] = "fa1f711c-0b34-4b57-8e6e-16162b132b0c"
119
+ TEMPLATE_GUIDS["Executable File"] = "3d99a163-7a13-4576-a212-784010a8302a"
120
+ TEMPLATE_GUIDS["Unity Catalog Table"] = "6cc1e5f5-4c1e-4290-a80e-e06643ffb13d"
121
+ TEMPLATE_GUIDS["JSON Data File"] = "c4836635-7e9e-446a-83b5-15e206b1aff3"
122
+ TEMPLATE_GUIDS["File System"] = "522f228c-097c-4f90-9efc-26c1f2696f87"
123
+ TEMPLATE_GUIDS["Source Code File"] = "9c7013ef-f29b-4b01-a8ea-5ea14f64c67a"
124
+ TEMPLATE_GUIDS["Apple MacBook Pro"] = "32a9fd56-85c9-47fe-a211-9da3871bf4da"
125
+ TEMPLATE_GUIDS["Build Instruction File"] = "fbb2fa2e-8bcb-402e-9be7-5c6db9f2c504"
126
+ TEMPLATE_GUIDS["Spreadsheet Data File"] = "e4fabff5-2ba9-4050-9076-6ed917970b4c"
127
+ TEMPLATE_GUIDS["UNIX File System"] = "27117270-8667-41d0-a99a-9118f9b60199"
128
+ TEMPLATE_GUIDS["Video Data File"] = "93b2b722-ec0f-4da4-960a-b8d4922f8bf5"
129
+ TEMPLATE_GUIDS["Unity Catalog Function"] = "a490ba65-6104-4213-9be9-524e16fed8aa"
130
+ TEMPLATE_GUIDS[
131
+ "PostgreSQL Relational Database Schema"
132
+ ] = "82a5417c-d882-4271-8444-4c6a996a8bfc"
133
+ TEMPLATE_GUIDS["Engine Host"] = "1764a891-4234-45f1-8cc3-536af40c790d"
134
+ TEMPLATE_GUIDS["Avro Data File"] = "9f5be428-058e-41dd-b506-3a222283b579"
135
+ TEMPLATE_GUIDS["Unity Catalog Volume"] = "92d2d2dc-0798-41f0-9512-b10548d312b7"
136
+ TEMPLATE_GUIDS["File"] = "ae3067c7-cc72-4a18-88e1-746803c2c86f"
137
+ TEMPLATE_GUIDS["Apache Kafka Topic"] = "ea8f81c9-c59c-47de-9525-7cc59d1251e5"
138
+ TEMPLATE_GUIDS["Script File"] = "dbd5e6bb-1ff8-46f4-a007-fb0485f68c92"
139
+ TEMPLATE_GUIDS["Apache Atlas Server"] = "fe6dce45-a978-4417-ab55-17f05b8bcea7"
140
+ TEMPLATE_GUIDS["Raster Data File"] = "47211156-f03f-4881-8526-015e695a3dac"
141
+ TEMPLATE_GUIDS["Data Folder"] = "372a0379-7060-4c9d-8d84-bc709b31794c"
142
+ TEMPLATE_GUIDS["OMAG Server Platform"] = "9b06c4dc-ddc8-47ae-b56b-28775d3a96f0"
143
+ INTEGRATION_GUIDS["OpenAPI"] = "b89d9a5a-2ea6-49bc-a4fc-e7df9f3ca93e"
144
+ INTEGRATION_GUIDS["PostgreSQLServerCataloguer"] = "36f69fd0-54ba-4f59-8a44-11ccf2687a34"
145
+ INTEGRATION_GUIDS[
146
+ "UnityCatalogInsideCatalogSynchronizer"
147
+ ] = "74dde22f-2249-4ea3-af2b-b39e73f79b81"
148
+ INTEGRATION_GUIDS["JDBCDatabaseCataloguer"] = "70dcd0b7-9f06-48ad-ad44-ae4d7a7762aa"
149
+ INTEGRATION_GUIDS["SampleDataCataloguer"] = "cd6479e1-2fe7-4426-b358-8a0cf70be117"
150
+ INTEGRATION_GUIDS["OpenAPICataloguer"] = "b89d9a5a-2ea6-49bc-a4fc-e7df9f3ca93e"
151
+ INTEGRATION_GUIDS["ApacheKafkaCataloguer"] = "fa1f711c-0b34-4b57-8e6e-16162b132b0c"
152
+ INTEGRATION_GUIDS[
153
+ "UnityCatalogServerSynchronizer"
154
+ ] = "06d068d9-9e08-4e67-8c59-073bbf1013af"
155
+ INTEGRATION_GUIDS["LandingAreaCataloguer"] = "1b98cdac-dd0a-4621-93db-99ef5a1098bc"
@@ -0,0 +1,217 @@
1
+ """
2
+ SPDX-License-Identifier: Apache-2.0
3
+ Copyright Contributors to the ODPi Egeria project.
4
+
5
+
6
+
7
+ This module provides a set of utility functions to render Mermaid markdown in a Jupyter notebook.
8
+
9
+ A running Egeria environment is needed to run these functions.
10
+ These functions have been tested in a Jupyter notebook - but may work in other environments.
11
+
12
+ """
13
+
14
+ import os
15
+ import time
16
+
17
+ import nest_asyncio
18
+
19
+ nest_asyncio.apply()
20
+ from pyegeria import (
21
+ AutomatedCuration,
22
+ InvalidParameterException,
23
+ PropertyServerException,
24
+ UserNotAuthorizedException,
25
+ )
26
+ from IPython.display import display, HTML
27
+ from rich.console import Console
28
+
29
+ EGERIA_METADATA_STORE = os.environ.get("EGERIA_METADATA_STORE", "active-metadata-store")
30
+ EGERIA_KAFKA_ENDPOINT = os.environ.get("KAFKA_ENDPOINT", "localhost:9092")
31
+ EGERIA_PLATFORM_URL = os.environ.get("EGERIA_PLATFORM_URL", "https://localhost:9443")
32
+ EGERIA_VIEW_SERVER = os.environ.get("VIEW_SERVER", "view-server")
33
+ EGERIA_VIEW_SERVER_URL = os.environ.get(
34
+ "EGERIA_VIEW_SERVER_URL", "https://localhost:9443"
35
+ )
36
+ EGERIA_INTEGRATION_DAEMON = os.environ.get("INTEGRATION_DAEMON", "integration-daemon")
37
+ EGERIA_ADMIN_USER = os.environ.get("ADMIN_USER", "garygeeke")
38
+ EGERIA_ADMIN_PASSWORD = os.environ.get("ADMIN_PASSWORD", "secret")
39
+ EGERIA_USER = os.environ.get("EGERIA_USER", "erinoverview")
40
+ EGERIA_USER_PASSWORD = os.environ.get("EGERIA_USER_PASSWORD", "secret")
41
+ EGERIA_JUPYTER = bool(os.environ.get("EGERIA_JUPYTER", "False"))
42
+ EGERIA_WIDTH = int(os.environ.get("EGERIA_WIDTH", "200"))
43
+
44
+
45
+ def load_mermaid():
46
+ """Inject Mermaid.js library"""
47
+ mermaid_js = """
48
+ <script type="text/javascript">
49
+ if (!window.mermaid) {
50
+ var mermaidScript = document.createElement('script');
51
+ mermaidScript.src = "https://cdnjs.cloudflare.com/ajax/libs/mermaid/10.9.1/mermaid.min.js";
52
+ document.head.appendChild(mermaidScript);
53
+ }
54
+ </script>
55
+ """
56
+ display(HTML(mermaid_js))
57
+
58
+
59
+ def render_mermaid(mermaid_code):
60
+ """Function to display a Mermaid diagram in a Jupyter notebook"""
61
+ mermaid_html = f"""
62
+ <div class="mermaid">
63
+ {mermaid_code}
64
+ </div>
65
+ <script type="text/javascript">
66
+ if (window.mermaid) {{
67
+ mermaid.initialize({{startOnLoad: true}});
68
+ mermaid.contentLoaded();
69
+ }}
70
+ </script>
71
+ """
72
+ display(HTML(mermaid_html))
73
+
74
+
75
+ def generate_process_graph(
76
+ process_guid: str = "508d3878-8eae-47e5-8507-ee936f33b418",
77
+ view_server: str = EGERIA_VIEW_SERVER,
78
+ url: str = EGERIA_VIEW_SERVER_URL,
79
+ user_id: str = EGERIA_USER,
80
+ user_pass: str = EGERIA_USER_PASSWORD,
81
+ ) -> str:
82
+ """Generate Mermaid Markdown text reflecting the Egeria process graph identified by the GUID
83
+
84
+ Parameters
85
+ ----------
86
+ process_guid: str
87
+ The identity of the progress to generate a graph of.
88
+
89
+ Returns
90
+ -------
91
+ str
92
+
93
+ A Mermaid markdown string
94
+
95
+ Raises
96
+ ------
97
+
98
+ InvalidParameterException
99
+ If the client passes incorrect parameters on the request - such as bad URLs or invalid values
100
+ PropertyServerException
101
+ Raised by the server when an issue arises in processing a valid request
102
+ NotAuthorizedException
103
+ The principle specified by the user_id does not have authorization for the requested action
104
+
105
+ """
106
+ console = Console()
107
+ a_client = AutomatedCuration(view_server, url, user_id, user_pass)
108
+ try:
109
+ token = a_client.create_egeria_bearer_token()
110
+
111
+ start_time = time.perf_counter()
112
+ response = a_client.get_gov_action_process_graph(process_guid)
113
+ duration = time.perf_counter() - start_time
114
+
115
+ if type(response) is dict:
116
+ process_steps: [dict]
117
+ step_links: [dict] = []
118
+ gov_process_qn = response["governanceActionProcess"]["processProperties"][
119
+ "qualifiedName"
120
+ ]
121
+ gov_process_dn = response["governanceActionProcess"]["processProperties"][
122
+ "displayName"
123
+ ]
124
+
125
+ md = f"\n---\ntitle: {gov_process_dn}\n---\nflowchart LR\n"
126
+ element = response["firstProcessStep"]["element"]
127
+ qname = element["processStepProperties"]["qualifiedName"]
128
+ dname = element["processStepProperties"]["displayName"]
129
+ domain_id = element["processStepProperties"]["domainIdentifier"]
130
+ guid = element["elementHeader"]["guid"]
131
+ wait = element["processStepProperties"]["waitTime"]
132
+ ignore_mult_trig = element["processStepProperties"][
133
+ "ignoreMultipleTriggers"
134
+ ]
135
+ link = response["firstProcessStep"]["linkGUID"]
136
+
137
+ md = f'{md}\nStep1[("`**{dname}**\n*nwait_time*: {wait}\n*nmult_trig*: {ignore_mult_trig}`")]'
138
+ process_steps = {
139
+ qname: {
140
+ "step": "Step1",
141
+ "displayName": dname,
142
+ "guid": guid,
143
+ "domain": domain_id,
144
+ "ignoreMultTrig": ignore_mult_trig,
145
+ "waitTime": wait,
146
+ "link_guid": link,
147
+ }
148
+ }
149
+ next_steps = response.get("nextProcessSteps", None)
150
+ if next_steps is not None:
151
+ i = 1
152
+ for step in next_steps:
153
+ i += 1
154
+ qname = step["processStepProperties"]["qualifiedName"]
155
+ dname = step["processStepProperties"]["displayName"]
156
+ wait = step["processStepProperties"]["waitTime"]
157
+ step = f"Step{i}"
158
+ md = f'{md}\n{step}("`**{dname}**\n*wait_time*: {wait}\n*mult_trig*: {ignore_mult_trig}`")'
159
+ process_steps.update(
160
+ {
161
+ qname: {
162
+ "step": step,
163
+ "displayName": dname,
164
+ "guid": guid,
165
+ "domain": domain_id,
166
+ "ignoreMultTrig": ignore_mult_trig,
167
+ "waitTime": wait,
168
+ }
169
+ }
170
+ ) # process_steps.append({qname: {"step": step,"displayName": dname, "waitTime": wait}})
171
+ # print(md)
172
+ # Now process the links
173
+ process_step_links = response.get("processStepLinks", None)
174
+ if process_step_links is not None:
175
+ for slink in process_step_links:
176
+ prev_step_name = slink["previousProcessStep"]["uniqueName"]
177
+ next_step_name = slink["nextProcessStep"]["uniqueName"]
178
+ next_step_link_guid = slink["nextProcessStepLinkGUID"]
179
+ guard = slink["guard"]
180
+ mandatory_guard = slink["mandatoryGuard"]
181
+ # print(f"\n\n Links: prev_step: {prev_step_name}\t next_step: {next_step_name}\t next_step_link:
182
+ # {next_step_link_guid}\t Guard: {guard}\t mandatory_guard: {mandatory_guard}")
183
+ step_links.append(
184
+ {
185
+ next_step_link_guid: {
186
+ "prev_step_name": prev_step_name,
187
+ "next_step_name": next_step_name,
188
+ "guard": guard,
189
+ "mandatory_guard": mandatory_guard,
190
+ }
191
+ }
192
+ )
193
+ step_p = process_steps[prev_step_name]["step"]
194
+ step_n = process_steps[next_step_name]["step"]
195
+ if mandatory_guard:
196
+ link = f"Mandatory:{guard}"
197
+ else:
198
+ link = guard
199
+ md = f"{md}\n{step_p}-->|{link}|{step_n}"
200
+ i = 1
201
+
202
+ return md
203
+
204
+ elif type(response) is str:
205
+ console.log("\n\n" + response)
206
+ assert True
207
+
208
+ except (
209
+ InvalidParameterException,
210
+ PropertyServerException,
211
+ UserNotAuthorizedException,
212
+ ) as e:
213
+ console.print_exception(show_locals=True)
214
+ assert False, "Invalid request"
215
+
216
+ finally:
217
+ a_client.close_session()
@@ -6,6 +6,7 @@ This module contains the MyProfile class and its methods.
6
6
  import asyncio
7
7
  import json
8
8
 
9
+ from pyegeria import body_slimmer
9
10
  from pyegeria._client import Client
10
11
  from pyegeria._validators import validate_name, validate_search_string
11
12
 
@@ -715,7 +716,7 @@ class MyProfile(Client):
715
716
  loop.run_until_complete(self._async_reassign_to_do(todo_guid, actor_guid, status, server_name))
716
717
  return
717
718
 
718
- async def _async_find_to_do(self, search_string: str = "*", server_name: str = "None", status: str = "OPEN",
719
+ async def _async_find_to_do(self, search_string: str = "*", server_name: str = "None", status: str = None,
719
720
  starts_with: bool = False, ends_with: bool = False, ignore_case: bool = True,
720
721
  start_from: int = 0, page_size: int = 100) -> list | str:
721
722
  """ find To-Do items. Async version.
@@ -770,7 +771,7 @@ class MyProfile(Client):
770
771
  f"find-by-search-string?startFrom={start_from}&pageSize={page_size}&"
771
772
  f"startsWith={starts_with_s}&endsWith={ends_with_s}&ignoreCase={ignore_case_s}")
772
773
 
773
- response = await self._async_make_request("POST", url, body)
774
+ response = await self._async_make_request("POST", url, body_slimmer(body))
774
775
  # return response.text
775
776
  return response.json().get("elements", "No ToDos found")
776
777
 
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "pyegeria"
3
- version = "0.7.25"
3
+ version = "0.7.27"
4
4
  license = 'Apache 2.0'
5
5
  authors = ["Dan Wolfson <dan.wolfson@pdr-associates.com>"]
6
6
  readme = "README.md"
@@ -38,7 +38,7 @@ click = "^8.1.7"
38
38
  trogon = "^0.5.0"
39
39
  textual-forms = "^0.3.0"
40
40
  textual = "^0.75.1"
41
-
41
+ mermaid-py = "^0.5.3"
42
42
 
43
43
  [build-system]
44
44
  requires = ["poetry-core"]
@@ -1,128 +0,0 @@
1
- """
2
- SPDX-License-Identifier: Apache-2.0
3
- Copyright Contributors to the ODPi Egeria project.
4
-
5
- This is the pyegeria client package. The purpose of the package is to provide
6
- easy access to Egeria (https://egeria-project.org). The package is currently in
7
- development.
8
-
9
- The first capabilities are around Egeria's platform services used to start and stop
10
- the server platform and servers.
11
-
12
- """
13
-
14
- from ._globals import (is_debug, disable_ssl_warnings, max_paging_size, TEMPLATE_GUIDS, INTEGRATION_GUIDS,
15
- default_time_out
16
- )
17
-
18
- if disable_ssl_warnings:
19
- from urllib3.exceptions import InsecureRequestWarning
20
- from urllib3 import disable_warnings
21
-
22
- disable_warnings(InsecureRequestWarning)
23
-
24
- from ._exceptions import (InvalidParameterException, PropertyServerException, UserNotAuthorizedException,
25
- print_exception_response)
26
- # from .utils import print_response, body_slimmer, wrap_text
27
- from .utils import print_response, body_slimmer
28
- from ._client import Client
29
- from .automated_curation_omvs import AutomatedCuration
30
- from .core_omag_server_config import CoreServerConfig
31
- from .platform_services import Platform
32
- from .registered_info import RegisteredInfo
33
- from .glossary_browser_omvs import GlossaryBrowser
34
- from ._validators import (validate_user_id, validate_name, validate_guid, validate_server_name, validate_search_string,
35
- validate_url, is_json, validate_public)
36
- from .asset_catalog_omvs import AssetCatalog
37
-
38
- from .my_profile_omvs import MyProfile
39
- from .full_omag_server_config import FullServerConfig
40
- from .server_operations import ServerOps
41
- from .collection_manager_omvs import CollectionManager
42
- from .project_manager_omvs import ProjectManager
43
- from .valid_metadata_omvs import ValidMetadataManager
44
- from .asset_catalog_omvs import AssetCatalog
45
- from .Xloaded_resources_omvs import LoadedResources
46
- from ._deprecated_gov_engine import GovEng
47
- from .runtime_manager_omvs import RuntimeManager
48
- from .action_author_omvs import GovernanceAuthor
49
- from .glossary_manager_omvs import GlossaryManager
50
- from .create_tech_guid_lists import build_global_guid_lists
51
- from .classification_manager_omvs import ClassificationManager
52
- from .feedback_manager_omvs import FeedbackManager
53
-
54
-
55
- #
56
- # The following assignments were generated by the `create_tech_guid_lists.py` utility that uses the pyegeria functions
57
- # to interrogate Egeria (and the Core Content Pack) for the GUIDS associates with integration connectors and templates.
58
- # While these GUIDS rarely change, they will evolve as new connectors are built and integrated. This could impact some
59
- # of the pyegeria methods that, as a convenience, use pre-assigned GUIDS to create new elements and such.
60
- #
61
- # This list may also be augmented (and of use) to those wishing to extend the pyegeria methods to automate or simplify
62
- # the use of custom connectors and templates.
63
- #
64
- #
65
- global TEMPLATE_GUIDS, INTEGRATION_GUIDS
66
-
67
- TEMPLATE_GUIDS['CSV Data File'] = '13770f93-13c8-42be-9bb8-e0b1b1e52b1f'
68
- TEMPLATE_GUIDS['Keystore File'] = 'fbcfcc0c-1652-421f-b49b-c3e1c108768f'
69
- TEMPLATE_GUIDS['Unity Catalog Server'] = 'dcca9788-b30f-4007-b1ac-ec634aff6879'
70
- INTEGRATION_GUIDS['UnityCatalogInsideCatalog'] = '74dde22f-2249-4ea3-af2b-b39e73f79b81'
71
- INTEGRATION_GUIDS['UnityCatalogServer'] = '06d068d9-9e08-4e67-8c59-073bbf1013af'
72
- INTEGRATION_GUIDS['JDBC'] = '70dcd0b7-9f06-48ad-ad44-ae4d7a7762aa'
73
- TEMPLATE_GUIDS['Data File'] = '66d8dda9-00cf-4e59-938c-4b0583596b1e'
74
- TEMPLATE_GUIDS['View Server'] = 'fd61ca01-390d-4aa2-a55d-426826aa4e1b'
75
- TEMPLATE_GUIDS['Archive File'] = '7578e504-d00f-406d-a194-3fc0a351cdf9'
76
- TEMPLATE_GUIDS['Unity Catalog Catalog'] = '5ee006aa-a6d6-411b-9b8d-5f720c079cae'
77
- TEMPLATE_GUIDS['PostgreSQL Relational Database'] = '3d398b3f-7ae6-4713-952a-409f3dea8520'
78
- INTEGRATION_GUIDS['JDBC'] = '70dcd0b7-9f06-48ad-ad44-ae4d7a7762aa'
79
- TEMPLATE_GUIDS['Program File'] = '32d27e9c-1fdf-455a-ad2a-42b4d7d99108'
80
- TEMPLATE_GUIDS['FileFolder'] = 'fbdd8efd-1b69-474c-bb6d-0a304b394146'
81
- INTEGRATION_GUIDS['LandingAreaFilesMonitor'] = '1b98cdac-dd0a-4621-93db-99ef5a1098bc'
82
- INTEGRATION_GUIDS['SampleDataFilesMonitor'] = 'cd6479e1-2fe7-4426-b358-8a0cf70be117'
83
- TEMPLATE_GUIDS['PostgreSQL Server'] = '542134e6-b9ce-4dce-8aef-22e8daf34fdb'
84
- INTEGRATION_GUIDS['PostgreSQLServer'] = '36f69fd0-54ba-4f59-8a44-11ccf2687a34'
85
- TEMPLATE_GUIDS['Audio Data File'] = '39b4b670-7f15-4744-a5ba-62e8edafbcee'
86
- TEMPLATE_GUIDS['Document File'] = 'eb6f728d-fa54-4350-9807-1199cbf96851'
87
- TEMPLATE_GUIDS['Integration Daemon'] = '6b3516f0-dd13-4786-9601-07215f995197'
88
- TEMPLATE_GUIDS['XML Data File'] = 'ea67ae71-c674-473e-b38b-689879d2a7d9'
89
- TEMPLATE_GUIDS['Unity Catalog Schema'] = '5bf92b0f-3970-41ea-b0a3-aacfbf6fd92e'
90
- TEMPLATE_GUIDS['Parquet Data File'] = '7f6cd744-79c3-4d25-a056-eeb1a91574c3'
91
- TEMPLATE_GUIDS['3D Image Data File'] = '0059ea2b-6292-4cac-aa6f-a80a605f1114'
92
- TEMPLATE_GUIDS['YAML File'] = '2221855b-2b64-4b45-a2ee-c40adc5e2a64'
93
- TEMPLATE_GUIDS['Metadata Access Server'] = 'bd8de890-fa79-4c24-aab8-20b41b5893dd'
94
- TEMPLATE_GUIDS['Properties File'] = '3b281111-a0ef-4fc4-99e7-9a0ef84a7636'
95
- TEMPLATE_GUIDS['Vector Data File'] = 'db1bec7f-55a9-40d3-91c0-a57b76d422e2'
96
- TEMPLATE_GUIDS['Apache Kafka Server'] = '5e1ff810-5418-43f7-b7c4-e6e062f9aff7'
97
- INTEGRATION_GUIDS['KafkaTopic'] = 'fa1f711c-0b34-4b57-8e6e-16162b132b0c'
98
- TEMPLATE_GUIDS['Executable File'] = '3d99a163-7a13-4576-a212-784010a8302a'
99
- TEMPLATE_GUIDS['Unity Catalog Table'] = '6cc1e5f5-4c1e-4290-a80e-e06643ffb13d'
100
- TEMPLATE_GUIDS['JSON Data File'] = 'c4836635-7e9e-446a-83b5-15e206b1aff3'
101
- TEMPLATE_GUIDS['File System'] = '522f228c-097c-4f90-9efc-26c1f2696f87'
102
- TEMPLATE_GUIDS['Source Code File'] = '9c7013ef-f29b-4b01-a8ea-5ea14f64c67a'
103
- TEMPLATE_GUIDS['Apple MacBook Pro'] = '32a9fd56-85c9-47fe-a211-9da3871bf4da'
104
- TEMPLATE_GUIDS['Build Instruction File'] = 'fbb2fa2e-8bcb-402e-9be7-5c6db9f2c504'
105
- TEMPLATE_GUIDS['Spreadsheet Data File'] = 'e4fabff5-2ba9-4050-9076-6ed917970b4c'
106
- TEMPLATE_GUIDS['UNIX File System'] = '27117270-8667-41d0-a99a-9118f9b60199'
107
- TEMPLATE_GUIDS['Video Data File'] = '93b2b722-ec0f-4da4-960a-b8d4922f8bf5'
108
- TEMPLATE_GUIDS['Unity Catalog Function'] = 'a490ba65-6104-4213-9be9-524e16fed8aa'
109
- TEMPLATE_GUIDS['PostgreSQL Relational Database Schema'] = '82a5417c-d882-4271-8444-4c6a996a8bfc'
110
- TEMPLATE_GUIDS['Engine Host'] = '1764a891-4234-45f1-8cc3-536af40c790d'
111
- TEMPLATE_GUIDS['Avro Data File'] = '9f5be428-058e-41dd-b506-3a222283b579'
112
- TEMPLATE_GUIDS['Unity Catalog Volume'] = '92d2d2dc-0798-41f0-9512-b10548d312b7'
113
- TEMPLATE_GUIDS['File'] = 'ae3067c7-cc72-4a18-88e1-746803c2c86f'
114
- TEMPLATE_GUIDS['Apache Kafka Topic'] = 'ea8f81c9-c59c-47de-9525-7cc59d1251e5'
115
- TEMPLATE_GUIDS['Script File'] = 'dbd5e6bb-1ff8-46f4-a007-fb0485f68c92'
116
- TEMPLATE_GUIDS['Apache Atlas Server'] = 'fe6dce45-a978-4417-ab55-17f05b8bcea7'
117
- TEMPLATE_GUIDS['Raster Data File'] = '47211156-f03f-4881-8526-015e695a3dac'
118
- TEMPLATE_GUIDS['Data Folder'] = '372a0379-7060-4c9d-8d84-bc709b31794c'
119
- TEMPLATE_GUIDS['OMAG Server Platform'] = '9b06c4dc-ddc8-47ae-b56b-28775d3a96f0'
120
- INTEGRATION_GUIDS['OpenAPI'] = 'b89d9a5a-2ea6-49bc-a4fc-e7df9f3ca93e'
121
- INTEGRATION_GUIDS['PostgreSQLServerCataloguer'] = '36f69fd0-54ba-4f59-8a44-11ccf2687a34'
122
- INTEGRATION_GUIDS['UnityCatalogInsideCatalogSynchronizer'] = '74dde22f-2249-4ea3-af2b-b39e73f79b81'
123
- INTEGRATION_GUIDS['JDBCDatabaseCataloguer'] = '70dcd0b7-9f06-48ad-ad44-ae4d7a7762aa'
124
- INTEGRATION_GUIDS['SampleDataCataloguer'] = 'cd6479e1-2fe7-4426-b358-8a0cf70be117'
125
- INTEGRATION_GUIDS['OpenAPICataloguer'] = 'b89d9a5a-2ea6-49bc-a4fc-e7df9f3ca93e'
126
- INTEGRATION_GUIDS['ApacheKafkaCataloguer'] = 'fa1f711c-0b34-4b57-8e6e-16162b132b0c'
127
- INTEGRATION_GUIDS['UnityCatalogServerSynchronizer'] = '06d068d9-9e08-4e67-8c59-073bbf1013af'
128
- INTEGRATION_GUIDS['LandingAreaCataloguer'] = '1b98cdac-dd0a-4621-93db-99ef5a1098bc'
File without changes
File without changes
File without changes
File without changes