





"""simple docstring"""





from ..utils import DummyObject, requires_backends
class 		SCREAMING_SNAKE_CASE_				(     metaclass=snake_case__ ):
				"""simple docstring"""
				__snake_case :							Optional[int]									=		["""transformers""", """torch""", """note_seq"""]




				def __init__(  self	:Optional[int]    ,     *__lowercase	:Dict    ,     **__lowercase	:Union[str, Any]      ):
											requires_backends(self    ,     ['''transformers''', '''torch''', '''note_seq''']      )




				@classmethod
				def        __lowercase	(  cls	:List[Any]    ,     *__lowercase	:Any    ,     **__lowercase	:Tuple      ):
											requires_backends(cls    ,     ['''transformers''', '''torch''', '''note_seq''']      )




				@classmethod
				def        __lowercase	(  cls	:Optional[Any]    ,     *__lowercase	:Optional[Any]    ,     **__lowercase	:str      ):
											requires_backends(cls    ,     ['''transformers''', '''torch''', '''note_seq''']      )











"""simple docstring"""





from packaging import version

from .import_utils import is_accelerate_available


if is_accelerate_available():
							import accelerate



def 					lowerCAmelCase_      (   SCREAMING_SNAKE_CASE							:				str ):


							'''simple docstring'''







							if not is_accelerate_available():
														return method
							__lowerCamelCase   :   Dict       =version.parse(accelerate.__version__ ).base_version
							if version.parse(SCREAMING_SNAKE_CASE ) < version.parse('''0.17.0''' ):
														return method

							def wrapper(self							:				List[Any]     ,    *SCREAMING_SNAKE_CASE							:				Any     ,    **SCREAMING_SNAKE_CASE							:				List[str] ):
														if hasattr(self     ,    '''_hf_hook''' ) and hasattr(self._hf_hook     ,    '''pre_forward''' ):
																					self._hf_hook.pre_forward(self )
														return method(self     ,    *SCREAMING_SNAKE_CASE     ,    **SCREAMING_SNAKE_CASE )

							return wrapper




