pyegeria 5.4.4.3__py3-none-any.whl → 5.4.4.5__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.
@@ -849,99 +849,6 @@ class GovernanceOfficer(Client2):
849
849
  loop = asyncio.get_event_loop()
850
850
  loop.run_until_complete(self._async_update_governance_definition(guid, body))
851
851
 
852
- @dynamic_catch
853
- async def _async_update_governance_definition_status(self, guid: str, status: str = None,
854
- body: dict | UpdateStatusRequestBody = None) -> None:
855
- """ Update the status of a governance definition. Async Version.
856
-
857
- Parameters
858
- ----------
859
- guid: str
860
- guid of the governance definition to update.
861
- status: str, optional, default is None
862
- The status to update the governance definition to. Superseded by the body definition if present.
863
- body: dict
864
- A dictionary containing the updates to the governance definition.
865
-
866
- Returns
867
- -------
868
-
869
- None
870
-
871
- Raises
872
- ------
873
- InvalidParameterException
874
- one of the parameters is null or invalid or
875
- PropertyServerException
876
- There is a problem adding the element properties to the metadata repository or
877
- UserNotAuthorizedException
878
- the requesting user is not authorized to issue this request.
879
-
880
- Notes
881
- ----
882
-
883
- Body structure:
884
- {
885
- "class": "UpdateGovernanceDefinitionRequestBody",
886
- "externalSourceGUID": "add guid here",
887
- "externalSourceName": "add qualified name here",
888
- "effectiveTime": "{{$isoTimestamp}}",
889
- "forLineage": false,
890
- "forDuplicateProcessing": false,
891
- "status": "ACTIVE"
892
- }
893
- """
894
-
895
- url = (
896
- f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/{self.url_marker}/governance-defnitions/"
897
- f"{guid}/update-status")
898
-
899
- # await self._async_update_status_request(url, status, body)
900
-
901
- def update_governance_definition_status(self, guid: str, status: str = None,
902
- body: dict | UpdateStatusRequestBody = None) -> None:
903
- """ Update the status of a governance definition.
904
-
905
- Parameters
906
- ----------
907
- guid: str
908
- guid of the information governance definition to update.
909
- status: str, optional, default is None
910
- The status to update the governance definition to. Superseded by the body definition if present.
911
- body: dict
912
- A dictionary containing the updates to the governance definition.
913
-
914
- Returns
915
- -------
916
-
917
- None
918
-
919
- Raises
920
- ------
921
- InvalidParameterException
922
- one of the parameters is null or invalid or
923
- PropertyServerException
924
- There is a problem adding the element properties to the metadata repository or
925
- UserNotAuthorizedException
926
- the requesting user is not authorized to issue this request.
927
-
928
- Notes
929
- ----
930
-
931
- Body structure:
932
- {
933
- "class" : "UpdateGovernanceDefinitionRequestBody",
934
- "externalSourceGUID": "add guid here",
935
- "externalSourceName": "add qualified name here",
936
- "effectiveTime" : "{{$isoTimestamp}}",
937
- "forLineage" : false,
938
- "forDuplicateProcessing" : false,
939
- "status": "ACTIVE"
940
- }
941
- """
942
- loop = asyncio.get_event_loop()
943
- loop.run_until_complete(self._async_update_governance_definition_status(guid, status, body))
944
-
945
852
  @dynamic_catch
946
853
  async def _async_delete_governance_definition(self, definition_guid: str,
947
854
  body: dict | DeleteRequestBody = None,
@@ -1430,7 +1337,7 @@ class GovernanceOfficer(Client2):
1430
1337
  logger.info(f"Detached digital supporting definitions: {definition_guid1} -> {definition_guid2}")
1431
1338
 
1432
1339
  @dynamic_catch
1433
- def detach_supporting_definitions(self, definition_guid1: str, relationship_type: str, definition_guid2: str,
1340
+ def detach_supporting_definitions(self, definition_guid: str, relationship_type: str, definition_guid2: str,
1434
1341
  body: dict | DeleteRequestBody = None) -> None:
1435
1342
  """ Detach a governance definition from a supporting governance definition.
1436
1343
  Request body is optional.
@@ -1476,6 +1383,197 @@ class GovernanceOfficer(Client2):
1476
1383
  loop.run_until_complete(
1477
1384
  self._async_detach_supporting_definitions(definition_guid1, relationship_type, definition_guid2, body))
1478
1385
 
1386
+
1387
+
1388
+ async def _async_attach_governed_by_definition(self, element_guid: str, definition_guid: str,
1389
+ body: dict | NewRelationshipRequestBody = None) -> None:
1390
+ """ Link a governance definition to an element using the GovernedBy relationship. Request body is optional.
1391
+
1392
+ Async Version.
1393
+
1394
+ Parameters
1395
+ ----------
1396
+ element_guid: str
1397
+ guid of the element to be governed.
1398
+ definition_guid: str
1399
+ the governance definition guid.
1400
+ body: dict
1401
+ The body describing the link between the two.
1402
+
1403
+ Returns
1404
+ -------
1405
+ None
1406
+
1407
+ Raises
1408
+ ------
1409
+ PyegeriaException
1410
+ ValidationError
1411
+
1412
+ Notes
1413
+ ----
1414
+
1415
+ Body structure:
1416
+ {
1417
+ "class" : "NewRelationshipRequestBody",
1418
+ "properties" : {
1419
+ "class" : "GovernedByProperties",
1420
+ "label" : "add label here",
1421
+ "description" : "add description here"
1422
+ },
1423
+ "externalSourceGUID": "Add guid here",
1424
+ "externalSourceName": "Add qualified name here",
1425
+ "forLineage": false,
1426
+ "forDuplicateProcessing": false,
1427
+ "effectiveTime" : "{{$isoTimestamp}}"
1428
+ }
1429
+ """
1430
+ url = (
1431
+ f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/"
1432
+ f"{self.url_marker}/elements/{element_guid}/governed-by/definition/{definition_guid}/attach"
1433
+ )
1434
+ await self._async_new_relationship_request(url, "GovernedByProperties", body)
1435
+ logger.info(f"Linked Governed-By {definition_guid1} -> {definition_guid2}")
1436
+
1437
+ @dynamic_catch
1438
+ def attach_governed_by_definition(self, element_guid: str, definition_guid: str,
1439
+ body: dict | NewRelationshipRequestBody = None) -> None:
1440
+ """ Link a governance definition to an element using the GovernedBy relationship. Request body is optional.
1441
+
1442
+ Parameters
1443
+ ----------
1444
+ element_guid: str
1445
+ guid of the element to be governed.
1446
+ definition_guid: str
1447
+ the governance definition guid.
1448
+ body: dict
1449
+ The body describing the link between the two.
1450
+
1451
+ Returns
1452
+ -------
1453
+ None
1454
+
1455
+ Raises
1456
+ ------
1457
+ PyegeriaException
1458
+ ValidationError
1459
+
1460
+ Notes
1461
+ ----
1462
+
1463
+ Body structure:
1464
+ {
1465
+ "class" : "NewRelationshipRequestBody",
1466
+ "properties" : {
1467
+ "class" : "GovernedByProperties",
1468
+ "label" : "add label here",
1469
+ "description" : "add description here"
1470
+ },
1471
+ "externalSourceGUID": "Add guid here",
1472
+ "externalSourceName": "Add qualified name here",
1473
+ "forLineage": false,
1474
+ "forDuplicateProcessing": false,
1475
+ "effectiveTime" : "{{$isoTimestamp}}"
1476
+ }
1477
+ """
1478
+ loop = asyncio.get_event_loop()
1479
+ loop.run_until_complete(
1480
+ self._async_attach_governed_by_definition(element_guid, definition_guid, body))
1481
+
1482
+ @dynamic_catch
1483
+ async def _async_detach_governed_by_definition(self, element_guid: str, definition_guid: str,
1484
+ body: dict | DeleteRequestBody = None) -> None:
1485
+ """ Detach a governance definition from a supporting governance definition.
1486
+ Request body is optional. Async Version.
1487
+
1488
+ Parameters
1489
+ ----------
1490
+ element_guid: str
1491
+ guid of the element to be governed.
1492
+ definition_guid: str
1493
+ the governance definition guid.
1494
+ body: dict
1495
+ The body describing the link between the two.
1496
+
1497
+ Returns
1498
+ -------
1499
+ None
1500
+
1501
+ Raises
1502
+ ------
1503
+ InvalidParameterException
1504
+ one of the parameters is null or invalid or
1505
+ PropertyServerException
1506
+ There is a problem adding the element properties to the metadata repository or
1507
+ UserNotAuthorizedException
1508
+ the requesting user is not authorized to issue this request.
1509
+
1510
+ Notes
1511
+ ----
1512
+
1513
+ Body structure:
1514
+ {
1515
+ "class" : "DeleteRequestBody",
1516
+ "externalSourceGUID": "add guid here",
1517
+ "externalSourceName": "add qualified name here",
1518
+ "effectiveTime" : "{{$isoTimestamp}}",
1519
+ "forLineage" : false,
1520
+ "forDuplicateProcessing" : false
1521
+ }
1522
+ """
1523
+ url = (
1524
+ f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/"
1525
+ f"{self.url_marker}/elements/{element_guid}/governed-by/{definition_guid}/detach"
1526
+ )
1527
+ await self._async_delete_request(url, body)
1528
+ logger.info(f"Detached governed-by relationshup between: {definition_guid} -> {element_guid}")
1529
+
1530
+ @dynamic_catch
1531
+ def detach_governed_by_definitio(self, element_guid: str, definition_guid: str,
1532
+ body: dict | DeleteRequestBody = None) -> None:
1533
+ """ Detach a governance definition from a supporting governance definition.
1534
+ Request body is optional.
1535
+
1536
+ Parameters
1537
+ ----------
1538
+ element_guid: str
1539
+ guid of the element to be governed.
1540
+ definition_guid: str
1541
+ the governance definition guid.
1542
+ body: dict
1543
+ The body describing the link between the two.
1544
+
1545
+ Returns
1546
+ -------
1547
+ None
1548
+
1549
+ Raises
1550
+ ------
1551
+ InvalidParameterException
1552
+ one of the parameters is null or invalid or
1553
+ PropertyServerException
1554
+ There is a problem adding the element properties to the metadata repository or
1555
+ UserNotAuthorizedException
1556
+ the requesting user is not authorized to issue this request.
1557
+
1558
+ Notes
1559
+ ----
1560
+
1561
+ Body structure:
1562
+ {
1563
+ "class" : "DeleteRequestBody",
1564
+ "externalSourceGUID": "add guid here",
1565
+ "externalSourceName": "add qualified name here",
1566
+ "effectiveTime" : "{{$isoTimestamp}}",
1567
+ "forLineage" : false,
1568
+ "forDuplicateProcessing" : false
1569
+ }
1570
+ """
1571
+ loop = asyncio.get_event_loop()
1572
+ loop.run_until_complete(
1573
+ self._async_detach_governed_by_definition(element_guid, definition_guid, body))
1574
+
1575
+
1576
+
1479
1577
  @dynamic_catch
1480
1578
  async def _async_delete_governance_definition(self, guid: str, body: dict | DeleteRequestBody = None) -> None:
1481
1579
  """ Delete an information supply. Async version.
@@ -1484,7 +1582,7 @@ class GovernanceOfficer(Client2):
1484
1582
  ----------
1485
1583
  guid: str
1486
1584
  GUID of the governance definition to delete.
1487
-
1585
+
1488
1586
  body: dict, optional
1489
1587
  A dictionary containing the definition of the governance definition to create.
1490
1588
 
@@ -1522,6 +1620,7 @@ class GovernanceOfficer(Client2):
1522
1620
  await self._async_delete_request(url, body)
1523
1621
  logger.info(f"Deleted governance definition: {guid} ")
1524
1622
 
1623
+
1525
1624
  @dynamic_catch
1526
1625
  def delete_governance_definition(self, guid: str, body: dict | DeleteRequestBody = None) -> None:
1527
1626
  """ Delete an information supply. Request body is optional. Async version.
@@ -2373,6 +2472,188 @@ class GovernanceOfficer(Client2):
2373
2472
  loop = asyncio.get_event_loop()
2374
2473
  loop.run_until_complete(self._async_detach_implementation_resource(design_desc_guid, implementation_guid, body))
2375
2474
 
2475
+
2476
+ @dynamic_catch
2477
+ async def _async_link_governance_results(self, gov_metric_guid: str, data_asset_guid: str,
2478
+ body: dict | NewRelationshipRequestBody = None) -> None:
2479
+ """ Attach a governance metric to a data asset that describes where its measurements are kept.
2480
+ Request body is optional. https://egeria-project.org/concepts/governance-definition/
2481
+
2482
+ Async Version.
2483
+
2484
+ Parameters
2485
+ ----------
2486
+ gov_metric_guid: str
2487
+ guid of the governance metric to link.
2488
+ data_asset_guid: str
2489
+ guid of the data asset to link.
2490
+ body: dict, optional
2491
+ The body describing the link between the two elements.
2492
+
2493
+ Returns
2494
+ -------
2495
+ None
2496
+
2497
+ Raises
2498
+ ------
2499
+ PyegeriaException
2500
+ ValidationError
2501
+
2502
+ Notes
2503
+ ----
2504
+
2505
+ Body structure:
2506
+ {
2507
+ "class" : "NewRelationshipRequestBody",
2508
+ "properties": {
2509
+ "class": "GovernanceResultsProperties",
2510
+ "description": "",
2511
+ "effectiveFrom": "{{$isoTimestamp}}",
2512
+ "effectiveTo": "{{$isoTimestamp}}"
2513
+ },
2514
+ "externalSourceGUID": "add guid here",
2515
+ "externalSourceName": "add qualified name here",
2516
+ "effectiveTime" : "{{$isoTimestamp}}",
2517
+ "forLineage" : false,
2518
+ "forDuplicateProcessing" : false
2519
+ }
2520
+ """
2521
+
2522
+ url = (f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/{self.url_marker}/governance-metrics/"
2523
+ f"{gov_metric_guid}/measurements/{data_asset_guid}/attach"
2524
+ )
2525
+ await self._async_new_relationship_request(url, "GovernanceResultsProperties", body)
2526
+ logger.info(f"Linked governance metric to a data asset containing its measurements.: {gov_metric_guid} -> {data_asset_guid}")
2527
+
2528
+ @dynamic_catch
2529
+ def link_governance_results(self, gov_metric_guid: str, data_asset_guid: str,
2530
+ body: dict | NewRelationshipRequestBody = None) -> None:
2531
+ """ Attach a governance metric to a data asset that describes where its measurements are kept.
2532
+ Request body is optional. https://egeria-project.org/concepts/governance-definition/
2533
+
2534
+
2535
+ Parameters
2536
+ ----------
2537
+ gov_metric_guid: str
2538
+ guid of the governance metric to link.
2539
+ data_asset_guid: str
2540
+ guid of the data asset to link.
2541
+ body: dict, optional
2542
+ The body describing the link between the two elements.
2543
+
2544
+ Returns
2545
+ -------
2546
+ None
2547
+
2548
+ Raises
2549
+ ------
2550
+ PyegeriaException
2551
+ ValidationError
2552
+
2553
+ Notes
2554
+ ----
2555
+
2556
+ Body structure:
2557
+ {
2558
+ "class" : "NewRelationshipRequestBody",
2559
+ "properties": {
2560
+ "class": "GovernanceResultsProperties",
2561
+ "description": "",
2562
+ "effectiveFrom": "{{$isoTimestamp}}",
2563
+ "effectiveTo": "{{$isoTimestamp}}"
2564
+ },
2565
+ "externalSourceGUID": "add guid here",
2566
+ "externalSourceName": "add qualified name here",
2567
+ "effectiveTime" : "{{$isoTimestamp}}",
2568
+ "forLineage" : false,
2569
+ "forDuplicateProcessing" : false
2570
+ }
2571
+ """
2572
+ loop = asyncio.get_event_loop()
2573
+ loop.run_until_complete(self._async_link_governance_results(gov_metric_guid, data_asset_guid, implementation_guid, body))
2574
+
2575
+ @dynamic_catch
2576
+ async def _async_detach_governance_results(self, gov_metric_guid: str, data_asset_guid: str, body: dict | DeleteRequestBody = None) -> None:
2577
+ """ Detach an governance metric from its measurements data set. Request body is optional.
2578
+ https://egeria-project.org/concepts/governance-definition/ Async version.
2579
+
2580
+ Parameters
2581
+ ----------
2582
+ gov_metric_guid: str
2583
+ guid of the governance metric to link.
2584
+ data_asset_guid: str
2585
+ guid of the data asset to link.
2586
+ body: dict, optional
2587
+ The body describing the link between the two elements.
2588
+
2589
+ Returns
2590
+ -------
2591
+ None
2592
+
2593
+ Raises
2594
+ ------
2595
+ PyegeriaException
2596
+ ValidationError
2597
+
2598
+ Notes
2599
+ ----
2600
+
2601
+ Body structure:
2602
+ {
2603
+ "class": "MetadataSourceRequestBody",
2604
+ "externalSourceGUID": "string",
2605
+ "externalSourceName": "string",
2606
+ "forLineage": true,
2607
+ "forDuplicateProcessing": true,
2608
+ "effectiveTime": "2025-06-13T15:13:31.339Z"
2609
+ }
2610
+ """
2611
+
2612
+ url = (f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/{self.url_marker}/governance-metrics/"
2613
+ f"{gov_metric_guid}/measurements/{data_asset_guid}/detach")
2614
+ await self._async_delete_request(url, body)
2615
+ logger.info(
2616
+ f"Detached governance metric from the asset where measurements were stored: {gov_metric_guid} -> {data_asset_guid}")
2617
+
2618
+ def detach_governance_results(self, gov_metric_guid: str, data_asset_guid: str,
2619
+ body: dict | DeleteRequestBody = None) -> None:
2620
+ """ Detach an governance metric from its measurements data set. Request body is optional.
2621
+ https://egeria-project.org/concepts/governance-definition/
2622
+
2623
+ Parameters
2624
+ ----------
2625
+ gov_metric_guid: str
2626
+ guid of the governance metric to link.
2627
+ data_asset_guid: str
2628
+ guid of the data asset to link.
2629
+ body: dict, optional
2630
+ The body describing the link between the two elements.
2631
+
2632
+ Returns
2633
+ -------
2634
+ None
2635
+
2636
+ Raises
2637
+ ------
2638
+ PyegeriaException
2639
+ ValidationError
2640
+
2641
+ Notes
2642
+ ----
2643
+
2644
+ Body structure:
2645
+ {
2646
+ "class": "MetadataSourceRequestBody",
2647
+ "externalSourceGUID": "string",
2648
+ "externalSourceName": "string",
2649
+ "forLineage": true,
2650
+ "forDuplicateProcessing": true,
2651
+ "effectiveTime": "2025-06-13T15:13:31.339Z"
2652
+ }
2653
+ """
2654
+ loop = asyncio.get_event_loop()
2655
+ loop.run_until_complete(self._async_detach_governance_results(gov_metric_guid, data_asset_guid, data_asset_guid, body))
2656
+
2376
2657
  # async def _async_get_gov_def_in_context(self, guid: str, body: dict = None, output_format: str = "JSON",
2377
2658
  # start_from: int = 0,
2378
2659
  # page_size: int = 0) -> list[dict] | str:
@@ -72,6 +72,7 @@ class ProjectManager(Client2):
72
72
  self.project_command_base: str = (
73
73
  f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/project-manager/projects"
74
74
  )
75
+ self.url_marker = 'project-manager'
75
76
  Client2.__init__(self, view_server, platform_url, user_id, user_pwd, token)
76
77
 
77
78
  def _extract_additional_project_properties(self, element: dict, columns_struct: dict)-> dict:
@@ -2612,96 +2612,6 @@ class SolutionArchitect(Client2):
2612
2612
  loop.run_until_complete(self._async_delete_info_supply_chain(guid, body, cascade))
2613
2613
 
2614
2614
 
2615
- @dynamic_catch
2616
- async def _async_update_solution_element_status(self, guid: str, status: str= None, body: dict| UpdateStatusRequestBody = None,
2617
- ) -> None:
2618
- """ Update the properties of a blueprint, solution component, or solution port. Async Version.
2619
-
2620
- Parameters
2621
- ----------
2622
- guid: str
2623
- guid of the information supply chain to update.
2624
- body: dict | UpdateStatusRequestBody, optional
2625
- A dictionary containing the updates to the supply chain.
2626
- status: str, optional
2627
- The status to update the supply chain to.
2628
-
2629
- Returns
2630
- -------
2631
-
2632
- None
2633
-
2634
- Raises
2635
- ------
2636
- InvalidParameterException
2637
- one of the parameters is null or invalid or
2638
- PropertyServerException
2639
- There is a problem adding the element properties to the metadata repository or
2640
- UserNotAuthorizedException
2641
- the requesting user is not authorized to issue this request.
2642
-
2643
- Notes
2644
- ----
2645
-
2646
- Body structure:
2647
- {
2648
- "class" : "UpdateStatusRequestBody",
2649
- "status" : "APPROVED",
2650
- "externalSourceGUID": "add guid here",
2651
- "externalSourceName": "add qualified name here",
2652
- "effectiveTime" : "{{$isoTimestamp}}",
2653
- "forLineage" : false,
2654
- "forDuplicateProcessing" : false
2655
- }
2656
- """
2657
-
2658
- url = (f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/solution-architect/"
2659
- f"solution-blueprints/{guid}/update")
2660
-
2661
- await self._async_update_status_request(url, status, body)
2662
-
2663
- @dynamic_catch
2664
- def update_solution_element_status(self, guid: str, status: str = None, body: dict| UpdateStatusRequestBody = None) -> None:
2665
- """ Update the status of a blueprint, solution component, or solution port.
2666
-
2667
- Parameters
2668
- ----------
2669
- guid: str
2670
- guid of the information supply chain to update.
2671
- body: dict
2672
- A dictionary containing the updates to the supply chain.
2673
-
2674
- Returns
2675
- -------
2676
- None
2677
-
2678
- Raises
2679
- ------
2680
- InvalidParameterException
2681
- one of the parameters is null or invalid or
2682
- PropertyServerException
2683
- There is a problem adding the element properties to the metadata repository or
2684
- UserNotAuthorizedException
2685
- the requesting user is not authorized to issue this request.
2686
-
2687
- Notes
2688
- ----
2689
-
2690
- Body structure:
2691
- {
2692
- "class" : "SolutionElementStatusRequestBody",
2693
- "status" : "APPROVED",
2694
- "externalSourceGUID": "add guid here",
2695
- "externalSourceName": "add qualified name here",
2696
- "effectiveTime" : "{{$isoTimestamp}}",
2697
- "forLineage" : false,
2698
- "forDuplicateProcessing" : false
2699
- }
2700
- """
2701
- loop = asyncio.get_event_loop()
2702
- loop.run_until_complete(self._async_update_solution_element_status(guid = guid, status= status, body=body))
2703
-
2704
-
2705
2615
  @dynamic_catch
2706
2616
  async def _async_link_solution_component_to_blueprint(self, blueprint_guid: str, component_guid: str,
2707
2617
  body: dict | NewRelationshipRequestBody) -> None:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: pyegeria
3
- Version: 5.4.4.3
3
+ Version: 5.4.4.5
4
4
  Summary: A python client for Egeria
5
5
  License: Apache 2.0
6
6
  Keywords: egeria,metadata,governance