pyegeria 5.4.7.6__py3-none-any.whl → 5.4.7.7__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.
@@ -100,13 +100,15 @@ def process_external_reference_upsert_command(egeria_client: EgeriaTech, txt: st
100
100
  prop_body["copyright"] = attributes.get('Copyright', {}).get('value', None)
101
101
  prop_body["attribution"] = attributes.get('Attribution', {}).get('value', None)
102
102
 
103
- if object_type == "RelatedMedia":
103
+ if object_type in ["RelatedMedia", "Related Media"]:
104
+ object_type = "RelatedMedia"
104
105
  prop_body["class"] = "RelatedProperties"
105
106
  prop_body["mediaType"] = attributes.get('Media Type', {}).get('value', None)
106
107
  prop_body["mediaTypeOtherId"] = attributes.get('Media Type Other ID', {}).get('value', None)
107
108
  prop_body["defaultMediaUsage"]= attributes.get('Default Media Usage', {}).get('value', None)
108
109
  prop_body["defaultMediaUsageOtherId"] = attributes.get('Default Media Usage Other ID', {}).get('value', None)
109
- elif object_type == "CitedDocument":
110
+ elif object_type in ["CitedDocument", "Cited Document"]:
111
+ object_type = "CitedDocument"
110
112
  prop_body["class"] = "CitedDocumentProperties"
111
113
  prop_body["numberOfPages"] = attributes.get('Number of Pages', {}).get('value', None)
112
114
  prop_body["pageRange"] = attributes.get('Page Range', {}).get('value', None)
@@ -119,7 +121,8 @@ def process_external_reference_upsert_command(egeria_client: EgeriaTech, txt: st
119
121
  prop_body["publicationCity"] = attributes.get('Publication City', {}).get('value', None)
120
122
  prop_body["publicationYear"] = attributes.get('Publication Year', {}).get('value', None)
121
123
  prop_body["publicationNumbers"]= attributes.get('Publication Numbers', {}).get('value', None)
122
-
124
+ elif object_type in ["ExternalReference", "External Reference"]:
125
+ object_type = "ExternalReference"
123
126
 
124
127
 
125
128
  if object_action == "Update":
pyegeria/_client_new.py CHANGED
@@ -1565,7 +1565,7 @@ class Client2:
1565
1565
  json_body = validated_body.model_dump_json(indent=2, exclude_none=True)
1566
1566
 
1567
1567
  response = await self._async_make_request("POST", url, json_body)
1568
- elements = response.json().get("element", NO_ELEMENTS_FOUND)
1568
+ elements = response.json().get("elements", NO_ELEMENTS_FOUND)
1569
1569
  if type(elements) is str:
1570
1570
  logger.info(NO_ELEMENTS_FOUND)
1571
1571
  return NO_ELEMENTS_FOUND
@@ -298,6 +298,26 @@ base_output_format_sets = FormatSetDict({
298
298
  )
299
299
  ],
300
300
  ),
301
+ "TechTypeDetail": FormatSet(
302
+ target_type="TechTypeDetail",
303
+ heading="Technology Type Details",
304
+ description="Details of a Technology Type Valid Value.",
305
+ annotations={}, # No specific annotations
306
+ formats=[
307
+ Format(
308
+ types=["ALL"],
309
+ columns= [
310
+ Column(name='Display Name', key='display_name'),
311
+ Column(name="Qualified Name", key='qualified_name'),
312
+ Column(name="GUID", key='guid'),
313
+ Column(name="Description", key='description'),
314
+ Column(name="Catalog Template Placeholders", key='catalog_template_specs'),
315
+ Column(name="Reference URL", key='ref_url'),
316
+ ],
317
+ )
318
+ ],
319
+ ),
320
+
301
321
  "ExternalReference": FormatSet(
302
322
  target_type="External Reference",
303
323
  heading="External Reference Attributes",
@@ -75,44 +75,35 @@ class AutomatedCuration(Client2):
75
75
  Extract properties from a technology type element and populate the provided columns_struct.
76
76
  Tolerant to missing fields.
77
77
  """
78
- # Populate direct properties first
79
- col_data = populate_columns_from_properties(element, columns_struct)
80
- columns_list = col_data.get("formats", {}).get("columns", [])
81
-
82
- # Referenceable header extraction (GUID, qualifiedName, displayName, etc.)
83
- header_props = _extract_referenceable_properties(element)
84
- for column in columns_list:
85
- key = column.get("key")
86
- if key in header_props:
87
- column["value"] = header_props.get(key)
88
- elif isinstance(key, str) and key.lower() == "guid":
89
- column["value"] = header_props.get("GUID")
78
+ # # Populate direct properties first
79
+ # col_data = populate_columns_from_properties(element, columns_struct)
80
+ # columns_list = col_data.get("formats", {}).get("columns", [])
81
+ #
82
+ # # Referenceable header extraction (GUID, qualifiedName, displayName, etc.)
83
+ # header_props = _extract_referenceable_properties(element)
84
+ # for column in columns_list:
85
+ # key = column.get("key")
86
+ # if key in header_props:
87
+ # column["value"] = header_props.get(key)
88
+ # elif isinstance(key, str) and key.lower() == "guid":
89
+ # column["value"] = header_props.get("GUID")
90
+ #
91
+ # # Try common category/type fields
92
+ # category = (
93
+ # element.get("properties", {}).get("category")
94
+ # or element.get("elementProperties", {}).get("category")
95
+ # or element.get("elementType", {}).get("typeName")
96
+ # or ""
97
+ # )
98
+ columns_list = columns_struct.get("formats", {}).get("columns", [])
99
+
100
+ guid = element.get('technologyTypeGUID',None)
101
+ qualified_name = element.get('qualifiedName',None)
102
+ display_name = element.get('displayName',None)
103
+ description = element.get('description',None)
104
+ catalog_templates = element.get('catalogTemplates',None)
105
+ external_references = element.get('externalReferences',None)
90
106
 
91
- # Try common category/type fields
92
- category = (
93
- element.get("properties", {}).get("category")
94
- or element.get("elementProperties", {}).get("category")
95
- or element.get("elementType", {}).get("typeName")
96
- or ""
97
- )
98
- for column in columns_list:
99
- if column.get("key") in ("category", "type_name"):
100
- column["value"] = category
101
-
102
- # Classification names if present
103
- class_names = []
104
- for c in (element.get("elementHeader", {}).get("classifications") or []):
105
- name = c.get("classificationName")
106
- if name:
107
- class_names.append(name)
108
- if class_names:
109
- for column in columns_list:
110
- if column.get("key") == "classifications":
111
- column["value"] = ", ".join(class_names)
112
- break
113
-
114
- # Relationship-driven fields (generic handling)
115
- col_data = get_required_relationships(element, col_data)
116
107
 
117
108
  # Mermaid graph support if present
118
109
  mermaid_val = element.get("mermaidGraph", "") or ""
@@ -120,8 +111,33 @@ class AutomatedCuration(Client2):
120
111
  if column.get("key") == "mermaid":
121
112
  column["value"] = mermaid_val
122
113
  break
123
-
124
- return col_data
114
+ elif column.get("key") == "catalog_template_specs":
115
+ specs = ""
116
+ for template in catalog_templates:
117
+ for placeholder in template['specification']['placeholderProperty']:
118
+ specs += (f"* Placeholder Property: {placeholder['placeholderPropertyName']}\n\t"
119
+ f"Type: {placeholder.get('dataType',"")}\n\t"
120
+ f"Description: {placeholder.get('description',"")}\n\t"
121
+ f"Required: {placeholder.get("required","")}\n\t"
122
+ f"Example: {placeholder.get("example","")}\n\n")
123
+ column["value"] = specs
124
+ elif column.get("key") == "catalog_templates":
125
+ column["value"] =catalog_templates
126
+ elif column.get("key") == "guid":
127
+ column["value"] = guid
128
+ elif column.get("key") == "qualified_name":
129
+ column["value"] = qualified_name
130
+ elif column.get("key") == "display_name":
131
+ column["value"] = display_name
132
+ elif column.get("key") == "description":
133
+ column["value"] = description
134
+ elif column.get("key") == "external_references":
135
+ column["value"] = external_references
136
+ elif column.get("key") == "ref_url":
137
+ column["value"] = external_references[0]['relatedElement']['properties'].get('url',"")
138
+
139
+ columns_struct["formats"]["columns"] = columns_list
140
+ return columns_struct
125
141
 
126
142
  def _generate_tech_type_output(
127
143
  self,
@@ -3306,7 +3322,7 @@ class AutomatedCuration(Client2):
3306
3322
  )
3307
3323
  return response
3308
3324
 
3309
- async def _async_get_technology_type_detail(self, type_name: str, template_only: bool = False,
3325
+ async def _async_get_technology_type_detail(self, type_name: str,
3310
3326
  body: dict | FilterRequestBody = None,
3311
3327
  output_format: str = "JSON",
3312
3328
  output_format_set: str | dict = "TechType") -> list | str:
@@ -3316,13 +3332,9 @@ class AutomatedCuration(Client2):
3316
3332
  ----------
3317
3333
  type_name : str
3318
3334
  The name of the technology type to retrieve detailed information for.
3319
- template_only : bool
3320
- If true, only the template information will be returned.
3321
3335
  body: dict | FilterRequestBody
3322
3336
  If provided, the information in the body supersedes the other parameters and allows more advanced requests.
3323
3337
 
3324
-
3325
-
3326
3338
  Returns
3327
3339
  -------
3328
3340
  list[dict] | str
@@ -3356,27 +3368,24 @@ class AutomatedCuration(Client2):
3356
3368
  # validate_name(type_name)
3357
3369
  url = str(HttpUrl(f"{self.curation_command_root}/technology-types/by-name"))
3358
3370
  if body is None:
3359
- classified_elements = ["Template"] if template_only else []
3360
3371
  body = {
3361
3372
  "class": "FilterRequestBody",
3362
- "filter": type_name,
3363
- "includeOnlyClassifiedElements": classified_elements,
3373
+ "filter": type_name
3364
3374
  }
3365
- response = await self._async_get_name_request(
3366
- url,
3367
- _type=self.TECH_TYPE_ENTITY_LABEL,
3368
- _gen_output=self._generate_tech_type_output,
3369
- filter_string=type_name,
3370
- classification_names=classified_elements if template_only else None,
3371
- start_from=0,
3372
- page_size=0,
3373
- output_format=output_format,
3374
- output_format_set=output_format_set,
3375
- body=body,
3376
- )
3377
- return response
3378
3375
 
3379
- def get_technology_type_detail(self, type_name: str, template_only: bool = False,
3376
+ response = await self._async_make_request("POST", url, body)
3377
+ element = response.json().get("element", NO_ELEMENTS_FOUND)
3378
+ if type(element) is str:
3379
+ logger.info(NO_ELEMENTS_FOUND)
3380
+ return NO_ELEMENTS_FOUND
3381
+
3382
+ if output_format != 'JSON': # return a simplified markdown representation
3383
+ logger.info(f"Found elements, output format: {output_format} and output_format_set: {output_format_set}")
3384
+ return self._generate_tech_type_output(element, type_name, "ValidMetadataValue",
3385
+ output_format, output_format_set)
3386
+ return element
3387
+
3388
+ def get_technology_type_detail(self, type_name: str,
3380
3389
  body: dict | FilterRequestBody = None,
3381
3390
  output_format: str = "JSON",
3382
3391
  output_format_set: str | dict = "TechType") -> list | str:
@@ -3386,13 +3395,9 @@ class AutomatedCuration(Client2):
3386
3395
  ----------
3387
3396
  type_name : str
3388
3397
  The name of the technology type to retrieve detailed information for.
3389
- template_only : bool
3390
- If true, only the template information will be returned.
3391
3398
  body: dict | FilterRequestBody
3392
3399
  If provided, the information in the body supersedes the other parameters and allows more advanced requests.
3393
3400
 
3394
-
3395
-
3396
3401
  Returns
3397
3402
  -------
3398
3403
  list[dict] | str
@@ -3425,7 +3430,7 @@ class AutomatedCuration(Client2):
3425
3430
 
3426
3431
  loop = asyncio.get_event_loop()
3427
3432
  response = loop.run_until_complete(
3428
- self._async_get_technology_type_detail(type_name, template_only=template_only, body=body,
3433
+ self._async_get_technology_type_detail(type_name, body=body,
3429
3434
  output_format=output_format,
3430
3435
  output_format_set=output_format_set)
3431
3436
  )
@@ -209,7 +209,7 @@ class CollectionManager(Client2):
209
209
 
210
210
  url = (f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/collection-manager/"
211
211
  f"metadata-elements/{parent_guid}/collections")
212
- return await self._async_get_name_request(url, body, output_format, output_format_set)
212
+
213
213
  response = await self._async_make_request("POST", url, body_slimmer(body))
214
214
  elements = response.json().get("elements", NO_ELEMENTS_FOUND)
215
215
  if type(elements) is str:
@@ -1403,7 +1403,7 @@ class ExternalReferences(Client2):
1403
1403
  The principle specified by the user_id does not have authorization for the requested action
1404
1404
  """
1405
1405
  url = str(HttpUrl(f"{self.command_root}/external-references/by-name"))
1406
- response = await self._async_get_name_request(url, _type="Collection",
1406
+ response = await self._async_get_name_request(url, _type="ExternalReference",
1407
1407
  _gen_output=self._generate_external_reference_output,
1408
1408
  filter_string=filter_string,
1409
1409
  classification_names=classification_names,
@@ -46,7 +46,7 @@ def load_mermaid():
46
46
  <script>
47
47
  document.addEventListener('DOMContentLoaded', function() {
48
48
  mermaid.initialize({startOnLoad: true},
49
- {maxTextSize: 300000});
49
+ {maxTextSize: 300000}, {securityLevel: 'loose'});
50
50
  });
51
51
  </script>
52
52
 
@@ -23,7 +23,9 @@ Console = Console(width=settings.Environment.console_width)
23
23
 
24
24
  def _extract_referenceable_properties(element: dict[str, Any]) -> dict[str, Any]:
25
25
  # Get general header attributes
26
- guid = element['elementHeader'].get("guid", None)
26
+ guid = element.get('elementHeader', {}).get("guid", None)
27
+ if guid is None:
28
+ return {}
27
29
  metadata_collection_id = element['elementHeader']['origin'].get("homeMetadataCollectionId", None)
28
30
  metadata_collection_name = element['elementHeader']['origin'].get("homeMetadataCollectionName", None)
29
31
  origin_category = element['elementHeader'].get("origin_category", None)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyegeria
3
- Version: 5.4.7.6
3
+ Version: 5.4.7.7
4
4
  Summary: A python client for Egeria
5
5
  Author-email: Dan Wolfson <dan.wolfson@pdr-associates.com>
6
6
  License-Expression: Apache-2.0
@@ -98,7 +98,7 @@ md_processing/data/generated_format_sets.json,sha256=TXvGK_Gm5ieq9i6u9M1j4CaNPzo
98
98
  md_processing/data/generated_format_sets.py,sha256=2BfRzb5G5n8Cz6VwirQXlBq1fHBISIh4x7jquXg6QEw,36402
99
99
  md_processing/md_commands/__init__.py,sha256=ssEojzFlSYtY2bHqqOoKo8PFaANZ_kq_gIbtlXnuc2s,93
100
100
  md_processing/md_commands/data_designer_commands.py,sha256=WGCDlTPmGhcETdmus89w6Y8a3EhyQJ86SJURvphnM24,65516
101
- md_processing/md_commands/ext_ref_commands.py,sha256=vrUDcDiCIDC2MdG8ghIaQC2AxOkhxn2bHoYcwl_7Ygg,23124
101
+ md_processing/md_commands/ext_ref_commands.py,sha256=zYKRKlyw6Wlxd1eXZqZUDNPb3obwN5TQwbFPhge47ZY,23380
102
102
  md_processing/md_commands/glossary_commands.py,sha256=g0SHac8Gu_rtaUcscJYZHEbKDlK_NLqL2G_dno_Vhpk,33391
103
103
  md_processing/md_commands/governance_officer_commands.py,sha256=c7SnJqQooPr3zCebDzeztAM8wZq9G7ZB4EpJ-uR5moI,26479
104
104
  md_processing/md_commands/product_manager_commands.py,sha256=4YKKdd_2tI5ekZlSJBiJJGqFISD7X6m0rfEd2wEL_PY,57790
@@ -118,19 +118,19 @@ md_processing/md_processing_utils/md_processing_constants.py,sha256=_j8FSsB1mZ2S
118
118
  md_processing/md_processing_utils/message_constants.py,sha256=UBf18obM83umM6zplR7ychre4xLRbBnTzidHDZ2gNvM,548
119
119
  pyegeria/__init__.py,sha256=jbqMHk7Txugk-oRCz5hws4el-brzv1njjK0gwOgiQb8,4536
120
120
  pyegeria/_client.py,sha256=hJHn5pD8sbelP_M9dK-M5Z2CYqpRXzXfg1UCgAdQ6dQ,33416
121
- pyegeria/_client_new.py,sha256=nXR4RXw-FYdYO5Hyv7wgPFjALcHWComTBjFOmivwsS0,92753
121
+ pyegeria/_client_new.py,sha256=RCyRMqgiEt8RGi1NNNk-GOpGVgLDwHj4CJ7WjtvtJPQ,92754
122
122
  pyegeria/_deprecated_gov_engine.py,sha256=dWNcwVsE5__dF2u4QiIyQrssozzzOjBbLld8MdpmVCQ,17264
123
123
  pyegeria/_exceptions.py,sha256=1SrnV194V4_YJNnNAU0myTHQ3dhLn4GF2B2gZcj1u90,18153
124
124
  pyegeria/_exceptions_new.py,sha256=srmrlqoWy7VvOJOhPcYFKW32MCIovgEg5J7PrYDxzQA,19706
125
125
  pyegeria/_globals.py,sha256=EY4IR6wnET11GgoxFIllj8fXFrMWBZwl2vsbl1zAfAQ,8520
126
126
  pyegeria/_output_format_models.py,sha256=p9fTYaIa5KyTMIR4-JAbE9g66_gGMPTnUqjIq20Zr1o,14494
127
- pyegeria/_output_formats.py,sha256=0IXO8ol5nuZAtttBfQPYoUyEa3qX1RlkMLons2Xrmi8,184307
127
+ pyegeria/_output_formats.py,sha256=FG7K0OVH_NSfTntbJZ-Oy7vtsXzffBoKwafBIeOcO0g,185108
128
128
  pyegeria/_validators.py,sha256=pNxND0dN2qvyuGE52N74l1Ezfrh2p9Hao2ziR_t1ENI,7425
129
129
  pyegeria/asset_catalog_omvs.py,sha256=sBXPgkRe_ZFOunZ-xoZe4qndILf9L0dPRHpQb_95bHw,29030
130
- pyegeria/automated_curation.py,sha256=34N4stE52OENMJHIuESm4TiR4B5AlyH_WV_o-8szEHM,142016
130
+ pyegeria/automated_curation.py,sha256=QIYDT9ThXMCe6-UdTPHEG0hV1aI4edNaA-5lC2_rukk,143021
131
131
  pyegeria/classification_manager.py,sha256=wT42fqcdtu9qt3N9_gazxDzkjK63tc5Xg6uG801Opmk,250435
132
132
  pyegeria/classification_manager_omvs.py,sha256=QkcH33BmdoOnyM9Ojwi084ULC3BaesZV6_a-pNyYkcU,184192
133
- pyegeria/collection_manager.py,sha256=kNIo1XXoG5b7tQpSZWNnkjZ8lp8X8pTamyvGZmmkqe8,239194
133
+ pyegeria/collection_manager.py,sha256=no1SPwHT-oxrQjPib1E1An8YaXYvTyIufWl35P7u5lo,239100
134
134
  pyegeria/collection_models.py,sha256=d3DdWONqDdAeuUQgussiCNfvhKIDFpaI35cdW_Tv4_0,5315
135
135
  pyegeria/config.py,sha256=N-qHq74GN29Mwfp8MbXvj7uEsKCIXotL7MDwFcj3nIU,29380
136
136
  pyegeria/core_omag_server_config.py,sha256=pNQpocICkZx8sRsTw5DPUe-TFyxlIo1U88qqgci_f7I,97764
@@ -141,7 +141,7 @@ pyegeria/egeria_client.py,sha256=N_CvaUgb8tQtRLsy8dfLNJ2lPPiCrfW-AFiLBxqIlyI,610
141
141
  pyegeria/egeria_config_client.py,sha256=YkgndiZ6-CfhwVeBW9ErS7l95SIrd0G9--H8kAfeBJY,2479
142
142
  pyegeria/egeria_my_client.py,sha256=3dSBUlrivzih75hodNHe-2BM9pGB8AQVLru-_NbhYNE,3186
143
143
  pyegeria/egeria_tech_client.py,sha256=zHuhLe6s3wihS9LMqu3pIm_fLjL9wXqdRpkOW-LyrjI,4863
144
- pyegeria/external_references.py,sha256=8cTB02N1NhUAz-QFYzHoBhypVsELMNf0nPBEqrUHj2U,74751
144
+ pyegeria/external_references.py,sha256=w4xl3pOMNatZkbhSqI-bGA4iv7jwTdAbVK2scywPIGw,74758
145
145
  pyegeria/feedback_manager_omvs.py,sha256=0xBs0p54vmdfVYYgQ8pOanLC4fxfgTk1Z61Y6D1U7_I,152978
146
146
  pyegeria/format_set_executor.py,sha256=schuaWyb1q9XjGV28gLArsI1rWx0OuItzfJhaeQLmac,11571
147
147
  pyegeria/full_omag_server_config.py,sha256=832EiMX7oeTHQxWf_4NQ4gXze9PMA9Vsx1jn9m9a_Mw,47457
@@ -153,11 +153,11 @@ pyegeria/mcp_adapter.py,sha256=GGyHmXLI6TxVh5vlm8x2ldzyIkStU9WGEFPvXNaQrCs,4971
153
153
  pyegeria/mcp_server.py,sha256=nycijG18RiabYJ-iY6D079sboYbcy29-vaUI7dcjg4Y,8349
154
154
  pyegeria/md_processing_utils.py,sha256=U0a07f-yeopDb06PW3G9jwotewm2FJT3yLU64jG2QYc,99106
155
155
  pyegeria/md_processing_utils_orig.py,sha256=CCZ7IPdHtf_o1oeGTf8K-yc_tzGwNkxxhTVUEeA_Yno,52599
156
- pyegeria/mermaid_utilities.py,sha256=HMmikLQwQbg1X3rWeL_YN_LD5fTuSw5zJKiBdhuoMdE,48054
156
+ pyegeria/mermaid_utilities.py,sha256=G0zPyy_xRBs-3jA6Ws0q6KyvB7N5--IzWSHNjt3htnE,48080
157
157
  pyegeria/metadata_explorer_omvs.py,sha256=xHnZTQKbd6XwOhYia-RiIisrvZcqHi0SL1l6OCf04Gk,86911
158
158
  pyegeria/models.py,sha256=Ar7Yg26vODjsITT1kxJz26G8m2-W5S9AC0OtczYIT0A,20580
159
159
  pyegeria/my_profile_omvs.py,sha256=d0oJYCJG7pS9BINPuGciVa00ac0jwPHNANXDCLginEc,34720
160
- pyegeria/output_formatter.py,sha256=huSGkVyve8hd3OocvxI_5Vz-44eoiZ4UY5FjVER1Ztc,43676
160
+ pyegeria/output_formatter.py,sha256=N7ByHgx6VLjTK6VIG_app4-bORVIBI0lcRDZU9AtrMQ,43723
161
161
  pyegeria/platform_services.py,sha256=AJNa8n2mKfAMK68q886YCD-p5bpCxIlCxBsRdr0R9O4,41708
162
162
  pyegeria/project_manager.py,sha256=erATGo7KrcvPdGdM8uGMhuXLqyGub7M2HJI17nyGmSA,66341
163
163
  pyegeria/reference_data.py,sha256=QWyTjrk-xfpIs578GxQO9gtOyl1gdc4PXhD12mbkwwI,42074
@@ -169,9 +169,9 @@ pyegeria/template_manager_omvs.py,sha256=chBljs1vy5wr9DRAtbvIt4Cob_7HxGfxLkCNlDT
169
169
  pyegeria/utils.py,sha256=xOTxk9PH8ZGZmgIwz_a6rczTVLADLEjucr10ZJTUnY4,9272
170
170
  pyegeria/valid_metadata_omvs.py,sha256=Xq9DqBQvBFFJzaFIRKcVZ2k4gJvSh9yeXs_j-O3vn1w,65050
171
171
  pyegeria/x_action_author_omvs.py,sha256=XyRsUgN-xnWR-cJayzo5RtY4Xv1uBDML4pwaKHrwC1w,6430
172
- pyegeria-5.4.7.6.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
173
- pyegeria-5.4.7.6.dist-info/METADATA,sha256=FN5gJq9nKqd-vmXtGw9gweZEZySzxfZ27PpQF7MKt2s,5898
174
- pyegeria-5.4.7.6.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
175
- pyegeria-5.4.7.6.dist-info/entry_points.txt,sha256=Ig9cZyl-nq_RohLvahgWXzZbcpHzLS3Zdc1A8qvdPG0,6595
176
- pyegeria-5.4.7.6.dist-info/top_level.txt,sha256=48Mt-O3p8yO7jiEv6-Y9bUsryqJn9BQsiyV0BqSn8tk,32
177
- pyegeria-5.4.7.6.dist-info/RECORD,,
172
+ pyegeria-5.4.7.7.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
173
+ pyegeria-5.4.7.7.dist-info/METADATA,sha256=V2XTIO-Kgv5pRrTBEOYoooFvAFyUlk9wJG8UIBrXxBU,5898
174
+ pyegeria-5.4.7.7.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
175
+ pyegeria-5.4.7.7.dist-info/entry_points.txt,sha256=Ig9cZyl-nq_RohLvahgWXzZbcpHzLS3Zdc1A8qvdPG0,6595
176
+ pyegeria-5.4.7.7.dist-info/top_level.txt,sha256=48Mt-O3p8yO7jiEv6-Y9bUsryqJn9BQsiyV0BqSn8tk,32
177
+ pyegeria-5.4.7.7.dist-info/RECORD,,