




"""simple docstring"""




from typing import List

from .keymap import KEYMAP, get_character







def 			__UpperCAmelCase			(      __UpperCamelCase     ):





			def decorator(__UpperCamelCase     ):
						__lowercase       :   Optional[Any]        =    getattr(SCREAMING_SNAKE_CASE__     ,							'''handle_key'''     ,							[]     )
						handle += [key]
						setattr(SCREAMING_SNAKE_CASE__     ,							'''handle_key'''     ,							SCREAMING_SNAKE_CASE__     )
						return func

			return decorator







def 			__UpperCAmelCase			(      *__UpperCamelCase     ):





			def decorator(__UpperCamelCase     ):
						__lowercase       :   Tuple        =    getattr(SCREAMING_SNAKE_CASE__     ,							'''handle_key'''     ,							[]     )
						handle += keys
						setattr(SCREAMING_SNAKE_CASE__     ,							'''handle_key'''     ,							SCREAMING_SNAKE_CASE__     )
						return func

			return decorator

class    UpperCAmelCase_  (       UpperCamelCase_						):
		def __new__(		cls							,		UpperCamelCase_							,		UpperCamelCase_							,		UpperCamelCase_    )		->    List[Any]:
					__lowercase       :   Optional[Any]        =    super().__new__(cls							,		lowercase_							,		lowercase_							,		lowercase_    )
					if not hasattr(lowercase_							,		'''key_handler'''    ):
								setattr(lowercase_							,		'''key_handler'''							,		{}    )
					setattr(lowercase_							,		'''handle_input'''							,		KeyHandler.handle_input    )

					for value in attrs.values():
								__lowercase       :   Any        =    getattr(lowercase_							,		'''handle_key'''							,		[]    )
								for key in handled_keys:
											__lowercase       :   Tuple        =    value
					return new_cls
		@staticmethod
		def      _lowerCamelCase				(		cls    )		->    str:
					__lowercase       :   str        =    get_character()
					if char != KEYMAP["undefined"]:
								__lowercase       :   Tuple        =    ord(lowercase_    )
					__lowercase       :   Optional[int]        =    cls.key_handler.get(lowercase_    )
					if handler:
								__lowercase       :   Union[str, Any]        =    char
								return handler(cls    )
					else:
								return None







def 			__UpperCAmelCase			(      cls     ):
			return KeyHandler(cls.__name__     ,							cls.__bases__     ,							cls.__dict__.copy()     )







import sys

from .dependency_versions_table import deps
from .utils.versions import require_version, require_version_core


# define which module versions we always want to check at run time
# (usually the ones defined in `install_requires` in setup.py)
#
# order specific notes:
# - tqdm must be checked before tokenizers

lowerCamelCase											=       'python tqdm regex requests packaging filelock numpy tokenizers'.split()
if sys.version_info < (3, 7):
 pkgs_to_check_at_runtime.append('dataclasses')
if sys.version_info < (3, 8):
 pkgs_to_check_at_runtime.append('importlib_metadata')

for pkg in pkgs_to_check_at_runtime:
 if pkg in deps:
  if pkg == "tokenizers":
   # must be loaded here, or else tqdm check may fail
   from .utils import is_tokenizers_available

   if not is_tokenizers_available():
    continue  # not required, check version only if installed

  require_version_core(deps[pkg])
 else:
  raise ValueError(F"""can't find {pkg} in {deps.keys()}, check dependency_versions_table.py""")




def 	a_      (    SCREAMING_SNAKE_CASE__					:      int		,			SCREAMING_SNAKE_CASE__					:      str=None     ):
       '''simple docstring'''





       require_version(deps[pkg]		,			SCREAMING_SNAKE_CASE__     )


