


from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_tf_available,
    is_tokenizers_available,
    is_torch_available,
)


lowerCAmelCase			=				{
    'configuration_convbert': ['CONVBERT_PRETRAINED_CONFIG_ARCHIVE_MAP', 'ConvBertConfig', 'ConvBertOnnxConfig'],
    'tokenization_convbert': ['ConvBertTokenizer'],
}

try:
			if not is_tokenizers_available():
						raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
			pass
else:
			lowerCAmelCase			=				['ConvBertTokenizerFast']

try:
			if not is_torch_available():
						raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
			pass
else:
			lowerCAmelCase			=				[
			    'CONVBERT_PRETRAINED_MODEL_ARCHIVE_LIST',
			    'ConvBertForMaskedLM',
			    'ConvBertForMultipleChoice',
			    'ConvBertForQuestionAnswering',
			    'ConvBertForSequenceClassification',
			    'ConvBertForTokenClassification',
			    'ConvBertLayer',
			    'ConvBertModel',
			    'ConvBertPreTrainedModel',
			    'load_tf_weights_in_convbert',
			]


try:
			if not is_tf_available():
						raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
			pass
else:
			lowerCAmelCase			=				[
			    'TF_CONVBERT_PRETRAINED_MODEL_ARCHIVE_LIST',
			    'TFConvBertForMaskedLM',
			    'TFConvBertForMultipleChoice',
			    'TFConvBertForQuestionAnswering',
			    'TFConvBertForSequenceClassification',
			    'TFConvBertForTokenClassification',
			    'TFConvBertLayer',
			    'TFConvBertModel',
			    'TFConvBertPreTrainedModel',
			]


if TYPE_CHECKING:
			from .configuration_convbert import CONVBERT_PRETRAINED_CONFIG_ARCHIVE_MAP, ConvBertConfig, ConvBertOnnxConfig
			from .tokenization_convbert import ConvBertTokenizer

			try:
						if not is_tokenizers_available():
									raise OptionalDependencyNotAvailable()
			except OptionalDependencyNotAvailable:
						pass
			else:
						from .tokenization_convbert_fast import ConvBertTokenizerFast

			try:
						if not is_torch_available():
									raise OptionalDependencyNotAvailable()
			except OptionalDependencyNotAvailable:
						pass
			else:
						from .modeling_convbert import (
						    CONVBERT_PRETRAINED_MODEL_ARCHIVE_LIST,
						    ConvBertForMaskedLM,
						    ConvBertForMultipleChoice,
						    ConvBertForQuestionAnswering,
						    ConvBertForSequenceClassification,
						    ConvBertForTokenClassification,
						    ConvBertLayer,
						    ConvBertModel,
						    ConvBertPreTrainedModel,
						    load_tf_weights_in_convbert,
						)

			try:
						if not is_tf_available():
									raise OptionalDependencyNotAvailable()
			except OptionalDependencyNotAvailable:
						pass
			else:
						from .modeling_tf_convbert import (
						    TF_CONVBERT_PRETRAINED_MODEL_ARCHIVE_LIST,
						    TFConvBertForMaskedLM,
						    TFConvBertForMultipleChoice,
						    TFConvBertForQuestionAnswering,
						    TFConvBertForSequenceClassification,
						    TFConvBertForTokenClassification,
						    TFConvBertLayer,
						    TFConvBertModel,
						    TFConvBertPreTrainedModel,
						)


else:
			import sys

			lowerCAmelCase			=				_LazyModule(__name__, globals()['__file__'], _import_structure, module_spec=__spec__)










"""simple docstring"""





from typing import List

from .keymap import KEYMAP, get_character



def   a    (     __UpperCAmelCase      :    str  )    ->							Optional[int]:

						def decorator(__UpperCAmelCase      :    List[str]  ):
												__magic_name__:	Union[str, Any]							=       getattr(__UpperCAmelCase      ,   """handle_key"""      ,   []  )
												handle += [key]
												setattr(__UpperCAmelCase      ,   """handle_key"""      ,   __UpperCAmelCase  )
												return func

						return decorator



def   a    (     *__UpperCAmelCase      :    List[str]  )    ->							Union[str, Any]:

						def decorator(__UpperCAmelCase      :    Tuple  ):
												__magic_name__:	Union[str, Any]							=       getattr(__UpperCAmelCase      ,   """handle_key"""      ,   []  )
												handle += keys
												setattr(__UpperCAmelCase      ,   """handle_key"""      ,   __UpperCAmelCase  )
												return func

						return decorator



class       __A		(   SCREAMING_SNAKE_CASE_			):

					def __new__(			cls  :      Optional[Any]     ,		__snake_case  :      List[str]     ,		__snake_case  :      Optional[Any]     ,		__snake_case  :      Any					)			->							List[Any]:
											__magic_name__:	str							=       super().__new__(cls     ,		__snake_case     ,		__snake_case     ,		__snake_case					)
											if not hasattr(__snake_case     ,		"""key_handler"""					):
																	setattr(__snake_case     ,		"""key_handler"""     ,		{}					)
											setattr(__snake_case     ,		"""handle_input"""     ,		KeyHandler.handle_input					)

											for value in attrs.values():
																	__magic_name__:	List[str]							=       getattr(__snake_case     ,		"""handle_key"""     ,		[]					)
																	for key in handled_keys:
																							__magic_name__:	Any							=       value
											return new_cls






					@staticmethod
					def   lowerCamelCase__   (			cls  :      List[Any]					)			->							Optional[Any]:
											__magic_name__:	List[str]							=       get_character()
											if char != KEYMAP["undefined"]:
																	__magic_name__:	Union[str, Any]							=       ord(__snake_case					)
											__magic_name__:	Dict							=       cls.key_handler.get(__snake_case					)
											if handler:
																	__magic_name__:	List[str]							=       char
																	return handler(cls					)
											else:
																	return None



def   a    (     cls      :    List[Any]  )    ->							int:
						return KeyHandler(cls.__name__      ,   cls.__bases__      ,   cls.__dict__.copy()  )



