@@ -914,79 +914,103 @@ def _convert_items_to_upsert_format(self, _items):
914
914
_upsert_items .append (DataRowUpsertItem (payload = item , id = key ))
915
915
return _upsert_items
916
916
917
- def set_iam_integration (self , iam_integration : Union [str , IAMIntegration , None ] = None ) -> Optional [ IAMIntegration ] :
918
- """
917
+ def add_iam_integration (self , iam_integration : Union [str , IAMIntegration ] ) -> IAMIntegration :
918
+ """
919
919
Sets the IAM integration for the dataset. IAM integration is used to sign URLs for data row assets.
920
920
921
- >>> # Get all IAM integrations
922
- >>> iam_integrations = client.get_organization().get_iam_integrations()
923
- >>>
924
- >>> # Get IAM integration id
925
- >>> iam_integration_id = [integration.uid for integration
926
- >>> in iam_integrations
927
- >>> if integration.name == "My S3 integration"][0]
928
- >>>
929
- >>> # Set IAM integration for integration id
930
- >>> dataset.set_iam_integration(iam_integration_id)
931
- >>>
932
- >>> # Get IAM integration object
933
- >>> iam_integration = [integration.uid for integration
934
- >>> in iam_integrations
935
- >>> if integration.name == "My S3 integration"][0]
936
- >>>
937
- >>> # Set IAM integration for IAMIntegrtion object
938
- >>> dataset.set_iam_integration(iam_integration)
939
- >>>
940
- >>> # Unset IAM integration
941
- >>> dataset.set_iam_integration()
921
+ Args:
922
+ iam_integration (Union[str, IAMIntegration]): IAM integration object or IAM integration id.
923
+
924
+ Returns:
925
+ IAMIntegration: IAM integration object.
926
+
927
+ Raises:
928
+ LabelboxError: If the IAM integration can't be set.
929
+
930
+ Examples:
931
+
932
+ >>> # Get all IAM integrations
933
+ >>> iam_integrations = client.get_organization().get_iam_integrations()
934
+ >>>
935
+ >>> # Get IAM integration id
936
+ >>> iam_integration_id = [integration.uid for integration
937
+ >>> in iam_integrations
938
+ >>> if integration.name == "My S3 integration"][0]
939
+ >>>
940
+ >>> # Set IAM integration for integration id
941
+ >>> dataset.set_iam_integration(iam_integration_id)
942
+ >>>
943
+ >>> # Get IAM integration object
944
+ >>> iam_integration = [integration.uid for integration
945
+ >>> in iam_integrations
946
+ >>> if integration.name == "My S3 integration"][0]
947
+ >>>
948
+ >>> # Set IAM integration for IAMIntegrtion object
949
+ >>> dataset.set_iam_integration(iam_integration)
942
950
"""
943
951
944
- # Unset IAM integration if iam_integration is None
945
- if iam_integration is None :
946
- query = """mutation DetachSignerPyApi($id: ID!) {
947
- clearSignerForDataset(where: {id: $id}) {
948
- id
949
- signer {
950
- id
951
- }
952
- }
953
- }"""
954
- response = self .client .execute (query , {"id" : self .uid })
955
-
956
- if response :
957
- return response ["clearSignerForDataset" ]["signer" ]
958
- else :
959
- raise LabelboxError ("Can't unset IAM integration" )
952
+ iam_integration_id = iam_integration .uid if isinstance (iam_integration , IAMIntegration ) else iam_integration
953
+
954
+ query = """
955
+ mutation SetSignerForDatasetPyApi($signerId: ID!, $datasetId: ID!) {
956
+ setSignerForDataset(
957
+ data: { signerId: $signerId }
958
+ where: { id: $datasetId }
959
+ ) {
960
+ id
961
+ signer {
962
+ id
963
+ }
964
+ }
965
+ }
966
+ """
967
+
968
+ response = self .client .execute (query , {"signerId" : iam_integration_id , "datasetId" : self .uid })
969
+
970
+ if not response :
971
+ raise LabelboxError (f"Can't set IAM integration { iam_integration_id } " )
972
+
973
+ try :
974
+ iam_integration_id = response .get ("setSignerForDataset" , {}).get ("signer" , {})["id" ]
975
+ return [integration for integration
976
+ in self .client .get_organization ().get_iam_integrations ()
977
+ if integration .uid == iam_integration_id ][0 ]
978
+ except :
979
+ raise LabelboxError (f"Can't retrieve IAM integration { iam_integration_id } " )
960
980
961
- else :
962
-
963
- if isinstance (iam_integration , IAMIntegration ):
964
- iam_integration_id = iam_integration .uid
965
- else :
966
- iam_integration_id = iam_integration
967
-
968
- query = """mutation AttachSignerPyApi($signerId: ID!, $datasetId: ID!) {
969
- setSignerForDataset(data: {signerId: $signerId}, where: {id: $datasetId}) {
970
- id
971
- signer {
972
- id
973
- }
974
- }
975
- }"""
976
- response = self .client .execute (query , {"signerId" : iam_integration_id , "datasetId" : self .uid })
981
+ def remove_iam_integration (self ) -> None :
982
+ """
983
+ Unsets the IAM integration for the dataset.
984
+
985
+ Args:
986
+ None
987
+
988
+ Returns:
989
+ None
990
+
991
+ Raises:
992
+ LabelboxError: If the IAM integration can't be unset.
993
+
994
+ Examples:
995
+ >>> dataset.remove_iam_integration()
996
+ """
997
+
998
+ query = """
999
+ mutation DetachSignerPyApi($id: ID!) {
1000
+ clearSignerForDataset(where: { id: $id }) {
1001
+ id
1002
+ signer {
1003
+ id
1004
+ }
1005
+ }
1006
+ }
1007
+ """
1008
+
1009
+ response = self .client .execute (query , {"id" : self .uid })
1010
+
1011
+ if response :
1012
+ return response .get ("clearSignerForDataset" , {}).get ("signer" )
1013
+ else :
1014
+ raise LabelboxError ("Can't unset IAM integration" )
977
1015
978
- # Return IAM Integration object if
979
- if response :
980
- try :
981
-
982
- iam_integration_id = response .get ("setSignerForDataset" , {}).get ("signer" , {})["id" ]
983
- return [integration for integration
984
- in self .client .get_organization ().get_iam_integrations ()
985
- if integration .uid == iam_integration_id ][0 ]
986
- except :
987
- raise LabelboxError (f"Can't retrieve IAM integration { iam_integration_id } " )
988
-
989
- else :
990
- raise LabelboxError (f"Can't set IAM integration { iam_integration_id } " )
991
-
992
- return response
1016
+
0 commit comments