



from packaging import version

from .import_utils import is_accelerate_available


if is_accelerate_available():
 import accelerate





def   __snake_case			(    _UpperCAmelCase       ):
    if not is_accelerate_available():
        return method
    __a		 =       version.parse(accelerate.__version__       ).base_version
    if version.parse(_UpperCAmelCase       ) < version.parse('''0.17.0'''       ):
        return method

    def wrapper(self     ,				*_UpperCAmelCase     ,				**_UpperCAmelCase       ):
        if hasattr(self     ,				'''_hf_hook'''       ) and hasattr(self._hf_hook     ,				'''pre_forward'''       ):
            self._hf_hook.pre_forward(self       )
        return method(self     ,				*_UpperCAmelCase     ,				**_UpperCAmelCase       )

    return wrapper










def   __snake_case			(    _UpperCAmelCase     ,				_UpperCAmelCase = False       ):

    if not isinstance(_UpperCAmelCase     ,				_UpperCAmelCase       ):
        __a		 =       f'Expected string as input, found {type(_UpperCAmelCase       )}'
        raise ValueError(_UpperCAmelCase       )
    if not isinstance(_UpperCAmelCase     ,				_UpperCAmelCase       ):
        __a		 =       f'Expected boolean as use_pascal parameter, found {type(_UpperCAmelCase       )}'
        raise ValueError(_UpperCAmelCase       )

    __a		 =       input_str.split('''_'''       )

    __a		 =       0 if use_pascal else 1

    __a		 =       words[start_index:]

    __a		 =       [word[0].upper() + word[1:] for word in words_to_capitalize]

    __a		 =       '''''' if use_pascal else words[0]

    return "".join([initial_word, *capitalized_words]       )


if __name__ == "__main__":
 from doctest import testmod

 testmod()





