


from ..utils import DummyObject, requires_backends







class lowerCAmelCase_						(			metaclass=lowerCamelCase__	):

 '''simple docstring'''

 __snake_case												=  ["sentencepiece"]



 def __init__(     self		,				*_UpperCAmelCase		,				**_UpperCAmelCase ):
       requires_backends(self		,				['''sentencepiece'''] )







class lowerCAmelCase_						(			metaclass=lowerCamelCase__	):

 '''simple docstring'''

 __snake_case												=  ["sentencepiece"]



 def __init__(     self		,				*_UpperCAmelCase		,				**_UpperCAmelCase ):
       requires_backends(self		,				['''sentencepiece'''] )







class lowerCAmelCase_						(			metaclass=lowerCamelCase__	):

 '''simple docstring'''

 __snake_case												=  ["sentencepiece"]



 def __init__(     self		,				*_UpperCAmelCase		,				**_UpperCAmelCase ):
       requires_backends(self		,				['''sentencepiece'''] )







class lowerCAmelCase_						(			metaclass=lowerCamelCase__	):

 '''simple docstring'''

 __snake_case												=  ["sentencepiece"]



 def __init__(     self		,				*_UpperCAmelCase		,				**_UpperCAmelCase ):
       requires_backends(self		,				['''sentencepiece'''] )







class lowerCAmelCase_						(			metaclass=lowerCamelCase__	):

 '''simple docstring'''

 __snake_case												=  ["sentencepiece"]



 def __init__(     self		,				*_UpperCAmelCase		,				**_UpperCAmelCase ):
       requires_backends(self		,				['''sentencepiece'''] )







class lowerCAmelCase_						(			metaclass=lowerCamelCase__	):

 '''simple docstring'''

 __snake_case												=  ["sentencepiece"]



 def __init__(     self		,				*_UpperCAmelCase		,				**_UpperCAmelCase ):
       requires_backends(self		,				['''sentencepiece'''] )







class lowerCAmelCase_						(			metaclass=lowerCamelCase__	):

 '''simple docstring'''

 __snake_case												=  ["sentencepiece"]



 def __init__(     self		,				*_UpperCAmelCase		,				**_UpperCAmelCase ):
       requires_backends(self		,				['''sentencepiece'''] )







class lowerCAmelCase_						(			metaclass=lowerCamelCase__	):

 '''simple docstring'''

 __snake_case												=  ["sentencepiece"]



 def __init__(     self		,				*_UpperCAmelCase		,				**_UpperCAmelCase ):
       requires_backends(self		,				['''sentencepiece'''] )







class lowerCAmelCase_						(			metaclass=lowerCamelCase__	):

 '''simple docstring'''

 __snake_case												=  ["sentencepiece"]



 def __init__(     self		,				*_UpperCAmelCase		,				**_UpperCAmelCase ):
       requires_backends(self		,				['''sentencepiece'''] )







class lowerCAmelCase_						(			metaclass=lowerCamelCase__	):

 '''simple docstring'''

 __snake_case												=  ["sentencepiece"]



 def __init__(     self		,				*_UpperCAmelCase		,				**_UpperCAmelCase ):
       requires_backends(self		,				['''sentencepiece'''] )







class lowerCAmelCase_						(			metaclass=lowerCamelCase__	):

 '''simple docstring'''

 __snake_case												=  ["sentencepiece"]



 def __init__(     self		,				*_UpperCAmelCase		,				**_UpperCAmelCase ):
       requires_backends(self		,				['''sentencepiece'''] )







class lowerCAmelCase_						(			metaclass=lowerCamelCase__	):

 '''simple docstring'''

 __snake_case												=  ["sentencepiece"]



 def __init__(     self		,				*_UpperCAmelCase		,				**_UpperCAmelCase ):
       requires_backends(self		,				['''sentencepiece'''] )







class lowerCAmelCase_						(			metaclass=lowerCamelCase__	):

 '''simple docstring'''

 __snake_case												=  ["sentencepiece"]



 def __init__(     self		,				*_UpperCAmelCase		,				**_UpperCAmelCase ):
       requires_backends(self		,				['''sentencepiece'''] )







class lowerCAmelCase_						(			metaclass=lowerCamelCase__	):

 '''simple docstring'''

 __snake_case												=  ["sentencepiece"]



 def __init__(     self		,				*_UpperCAmelCase		,				**_UpperCAmelCase ):
       requires_backends(self		,				['''sentencepiece'''] )







class lowerCAmelCase_						(			metaclass=lowerCamelCase__	):

 '''simple docstring'''

 __snake_case												=  ["sentencepiece"]



 def __init__(     self		,				*_UpperCAmelCase		,				**_UpperCAmelCase ):
       requires_backends(self		,				['''sentencepiece'''] )







class lowerCAmelCase_						(			metaclass=lowerCamelCase__	):

 '''simple docstring'''

 __snake_case												=  ["sentencepiece"]



 def __init__(     self		,				*_UpperCAmelCase		,				**_UpperCAmelCase ):
       requires_backends(self		,				['''sentencepiece'''] )







class lowerCAmelCase_						(			metaclass=lowerCamelCase__	):

 '''simple docstring'''

 __snake_case												=  ["sentencepiece"]



 def __init__(     self		,				*_UpperCAmelCase		,				**_UpperCAmelCase ):
       requires_backends(self		,				['''sentencepiece'''] )







class lowerCAmelCase_						(			metaclass=lowerCamelCase__	):

 '''simple docstring'''

 __snake_case												=  ["sentencepiece"]



 def __init__(     self		,				*_UpperCAmelCase		,				**_UpperCAmelCase ):
       requires_backends(self		,				['''sentencepiece'''] )







class lowerCAmelCase_						(			metaclass=lowerCamelCase__	):

 '''simple docstring'''

 __snake_case												=  ["sentencepiece"]



 def __init__(     self		,				*_UpperCAmelCase		,				**_UpperCAmelCase ):
       requires_backends(self		,				['''sentencepiece'''] )







class lowerCAmelCase_						(			metaclass=lowerCamelCase__	):

 '''simple docstring'''

 __snake_case												=  ["sentencepiece"]



 def __init__(     self		,				*_UpperCAmelCase		,				**_UpperCAmelCase ):
       requires_backends(self		,				['''sentencepiece'''] )







class lowerCAmelCase_						(			metaclass=lowerCamelCase__	):

 '''simple docstring'''

 __snake_case												=  ["sentencepiece"]



 def __init__(     self		,				*_UpperCAmelCase		,				**_UpperCAmelCase ):
       requires_backends(self		,				['''sentencepiece'''] )







class lowerCAmelCase_						(			metaclass=lowerCamelCase__	):

 '''simple docstring'''

 __snake_case												=  ["sentencepiece"]



 def __init__(     self		,				*_UpperCAmelCase		,				**_UpperCAmelCase ):
       requires_backends(self		,				['''sentencepiece'''] )







class lowerCAmelCase_						(			metaclass=lowerCamelCase__	):

 '''simple docstring'''

 __snake_case												=  ["sentencepiece"]



 def __init__(     self		,				*_UpperCAmelCase		,				**_UpperCAmelCase ):
       requires_backends(self		,				['''sentencepiece'''] )







class lowerCAmelCase_						(			metaclass=lowerCamelCase__	):

 '''simple docstring'''

 __snake_case												=  ["sentencepiece"]



 def __init__(     self		,				*_UpperCAmelCase		,				**_UpperCAmelCase ):
       requires_backends(self		,				['''sentencepiece'''] )







class lowerCAmelCase_						(			metaclass=lowerCamelCase__	):

 '''simple docstring'''

 __snake_case												=  ["sentencepiece"]



 def __init__(     self		,				*_UpperCAmelCase		,				**_UpperCAmelCase ):
       requires_backends(self		,				['''sentencepiece'''] )







class lowerCAmelCase_						(			metaclass=lowerCamelCase__	):

 '''simple docstring'''

 __snake_case												=  ["sentencepiece"]



 def __init__(     self		,				*_UpperCAmelCase		,				**_UpperCAmelCase ):
       requires_backends(self		,				['''sentencepiece'''] )







class lowerCAmelCase_						(			metaclass=lowerCamelCase__	):

 '''simple docstring'''

 __snake_case												=  ["sentencepiece"]



 def __init__(     self		,				*_UpperCAmelCase		,				**_UpperCAmelCase ):
       requires_backends(self		,				['''sentencepiece'''] )







class lowerCAmelCase_						(			metaclass=lowerCamelCase__	):

 '''simple docstring'''

 __snake_case												=  ["sentencepiece"]



 def __init__(     self		,				*_UpperCAmelCase		,				**_UpperCAmelCase ):
       requires_backends(self		,				['''sentencepiece'''] )







class lowerCAmelCase_						(			metaclass=lowerCamelCase__	):

 '''simple docstring'''

 __snake_case												=  ["sentencepiece"]



 def __init__(     self		,				*_UpperCAmelCase		,				**_UpperCAmelCase ):
       requires_backends(self		,				['''sentencepiece'''] )







class lowerCAmelCase_						(			metaclass=lowerCamelCase__	):

 '''simple docstring'''

 __snake_case												=  ["sentencepiece"]



 def __init__(     self		,				*_UpperCAmelCase		,				**_UpperCAmelCase ):
       requires_backends(self		,				['''sentencepiece'''] )







class lowerCAmelCase_						(			metaclass=lowerCamelCase__	):

 '''simple docstring'''

 __snake_case												=  ["sentencepiece"]



 def __init__(     self		,				*_UpperCAmelCase		,				**_UpperCAmelCase ):
       requires_backends(self		,				['''sentencepiece'''] )



import unittest

from transformers.utils.backbone_utils import (
    BackboneMixin,
    get_aligned_output_features_output_indices,
    verify_out_features_out_indices,
)







class lowerCAmelCase_						(			unittest.TestCase	):

 '''simple docstring'''

 def 						UpperCamelCase__					(     self ):
       snake_case_	=				['''a''', '''b''', '''c''']

       # Defaults to last layer if both are None
       snake_case_	,   snake_case_	=				get_aligned_output_features_output_indices(_UpperCAmelCase		,				_UpperCAmelCase		,				_UpperCAmelCase )
       self.assertEqual(_UpperCAmelCase		,				['''c'''] )
       self.assertEqual(_UpperCAmelCase		,				[2] )

       # Out indices set to match out features
       snake_case_	,   snake_case_	=				get_aligned_output_features_output_indices(['''a''', '''c''']		,				_UpperCAmelCase		,				_UpperCAmelCase )
       self.assertEqual(_UpperCAmelCase		,				['''a''', '''c'''] )
       self.assertEqual(_UpperCAmelCase		,				[0, 2] )

       # Out features set to match out indices
       snake_case_	,   snake_case_	=				get_aligned_output_features_output_indices(_UpperCAmelCase		,				[0, 2]		,				_UpperCAmelCase )
       self.assertEqual(_UpperCAmelCase		,				['''a''', '''c'''] )
       self.assertEqual(_UpperCAmelCase		,				[0, 2] )

       # Out features selected from negative indices
       snake_case_	,   snake_case_	=				get_aligned_output_features_output_indices(_UpperCAmelCase		,				[-3, -1]		,				_UpperCAmelCase )
       self.assertEqual(_UpperCAmelCase		,				['''a''', '''c'''] )
       self.assertEqual(_UpperCAmelCase		,				[-3, -1] )



 def 						UpperCamelCase__					(     self ):
       # Stage names must be set
       with self.assertRaises(_UpperCAmelCase ):
             verify_out_features_out_indices(['''a''', '''b''']		,				(0, 1)		,				_UpperCAmelCase )

       # Out features must be a list
       with self.assertRaises(_UpperCAmelCase ):
             verify_out_features_out_indices(('''a''', '''b''')		,				(0, 1)		,				['''a''', '''b'''] )

       # Out features must be a subset of stage names
       with self.assertRaises(_UpperCAmelCase ):
             verify_out_features_out_indices(['''a''', '''b''']		,				(0, 1)		,				['''a'''] )

       # Out indices must be a list or tuple
       with self.assertRaises(_UpperCAmelCase ):
             verify_out_features_out_indices(_UpperCAmelCase		,				0		,				['''a''', '''b'''] )

       # Out indices must be a subset of stage names
       with self.assertRaises(_UpperCAmelCase ):
             verify_out_features_out_indices(_UpperCAmelCase		,				(0, 1)		,				['''a'''] )

       # Out features and out indices must be the same length
       with self.assertRaises(_UpperCAmelCase ):
             verify_out_features_out_indices(['''a''', '''b''']		,				(0,)		,				['''a''', '''b''', '''c'''] )

       # Out features should match out indices
       with self.assertRaises(_UpperCAmelCase ):
             verify_out_features_out_indices(['''a''', '''b''']		,				(0, 2)		,				['''a''', '''b''', '''c'''] )

       # Out features and out indices should be in order
       with self.assertRaises(_UpperCAmelCase ):
             verify_out_features_out_indices(['''b''', '''a''']		,				(0, 1)		,				['''a''', '''b'''] )

       # Check passes with valid inputs
       verify_out_features_out_indices(['''a''', '''b''', '''d''']		,				(0, 1, -1)		,				['''a''', '''b''', '''c''', '''d'''] )





 def 						UpperCamelCase__					(     self ):
       snake_case_	=				BackboneMixin()

       snake_case_	=				['''a''', '''b''', '''c''']
       snake_case_	=				['''a''', '''c''']
       snake_case_	=				[0, 2]

       # Check that the output features and indices are set correctly
       self.assertEqual(backbone.out_features		,				['''a''', '''c'''] )
       self.assertEqual(backbone.out_indices		,				[0, 2] )

       # Check out features and indices are updated correctly
       snake_case_	=				['''a''', '''b''']
       self.assertEqual(backbone.out_features		,				['''a''', '''b'''] )
       self.assertEqual(backbone.out_indices		,				[0, 1] )

       snake_case_	=				[-3, -1]
       self.assertEqual(backbone.out_features		,				['''a''', '''c'''] )
       self.assertEqual(backbone.out_indices		,				[-3, -1] )