@@ -914,79 +914,103 @@ def _convert_items_to_upsert_format(self, _items):
914914 _upsert_items .append (DataRowUpsertItem (payload = item , id = key ))
915915 return _upsert_items
916916
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+ """
919919 Sets the IAM integration for the dataset. IAM integration is used to sign URLs for data row assets.
920920
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)
942950 """
943951
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 } " )
960980
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" )
9771015
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