



from typing import List

from .keymap import KEYMAP, get_character



def       _lowerCAmelCase			(_lowerCAmelCase):


					def decorator(_lowerCAmelCase):
										UpperCamelCase_						     =      getattr(_SCREAMING_SNAKE_CASE      ,		"handle_key"      ,		[])
										handle += [key]
										setattr(_SCREAMING_SNAKE_CASE      ,		"handle_key"      ,		_SCREAMING_SNAKE_CASE)
										return func

					return decorator



def       _lowerCAmelCase			(*_lowerCAmelCase):


					def decorator(_lowerCAmelCase):
										UpperCamelCase_						     =      getattr(_SCREAMING_SNAKE_CASE      ,		"handle_key"      ,		[])
										handle += keys
										setattr(_SCREAMING_SNAKE_CASE      ,		"handle_key"      ,		_SCREAMING_SNAKE_CASE)
										return func

					return decorator


class 					_lowercase      (a_					):
				'''simple docstring'''







				def __new__(       cls   ,       snake_case__   ,       snake_case__   ,       snake_case__			):

									'''simple docstring'''


									UpperCamelCase_						     =      super().__new__(cls   ,       __UpperCAmelCase   ,       __UpperCAmelCase   ,       __UpperCAmelCase			)
									if not hasattr(__UpperCAmelCase   ,       "key_handler"			):
														setattr(__UpperCAmelCase   ,       "key_handler"   ,       {}			)
									setattr(__UpperCAmelCase   ,       "handle_input"   ,       KeyHandler.handle_input			)

									for value in attrs.values():
														UpperCamelCase_						     =      getattr(__UpperCAmelCase   ,       "handle_key"   ,       []			)
														for key in handled_keys:
																			UpperCamelCase_						     =      value
									return new_cls

				@staticmethod
				def 					_lowerCamelCase    (       cls			):

									'''simple docstring'''


									UpperCamelCase_						     =      get_character()
									if char != KEYMAP["undefined"]:
														UpperCamelCase_						     =      ord(__UpperCAmelCase			)
									UpperCamelCase_						     =      cls.key_handler.get(__UpperCAmelCase			)
									if handler:
														UpperCamelCase_						     =      char
														return handler(cls			)
									else:
														return None




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







"""simple docstring"""





from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_tf_available, is_torch_available


__A											=		{
    """configuration_data2vec_audio""": ["""DATA2VEC_AUDIO_PRETRAINED_CONFIG_ARCHIVE_MAP""", """Data2VecAudioConfig"""],
    """configuration_data2vec_text""": [
        """DATA2VEC_TEXT_PRETRAINED_CONFIG_ARCHIVE_MAP""",
        """Data2VecTextConfig""",
        """Data2VecTextOnnxConfig""",
    ],
    """configuration_data2vec_vision""": [
        """DATA2VEC_VISION_PRETRAINED_CONFIG_ARCHIVE_MAP""",
        """Data2VecVisionConfig""",
        """Data2VecVisionOnnxConfig""",
    ],
}

try:
  if not is_torch_available():
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  pass
else:
  __A											=		[
      """DATA2VEC_AUDIO_PRETRAINED_MODEL_ARCHIVE_LIST""",
      """Data2VecAudioForAudioFrameClassification""",
      """Data2VecAudioForCTC""",
      """Data2VecAudioForSequenceClassification""",
      """Data2VecAudioForXVector""",
      """Data2VecAudioModel""",
      """Data2VecAudioPreTrainedModel""",
  ]
  __A											=		[
      """DATA2VEC_TEXT_PRETRAINED_MODEL_ARCHIVE_LIST""",
      """Data2VecTextForCausalLM""",
      """Data2VecTextForMaskedLM""",
      """Data2VecTextForMultipleChoice""",
      """Data2VecTextForQuestionAnswering""",
      """Data2VecTextForSequenceClassification""",
      """Data2VecTextForTokenClassification""",
      """Data2VecTextModel""",
      """Data2VecTextPreTrainedModel""",
  ]
  __A											=		[
      """DATA2VEC_VISION_PRETRAINED_MODEL_ARCHIVE_LIST""",
      """Data2VecVisionForImageClassification""",
      """Data2VecVisionForMaskedImageModeling""",
      """Data2VecVisionForSemanticSegmentation""",
      """Data2VecVisionModel""",
      """Data2VecVisionPreTrainedModel""",
  ]

if is_tf_available():
  __A											=		[
      """TFData2VecVisionForImageClassification""",
      """TFData2VecVisionForSemanticSegmentation""",
      """TFData2VecVisionModel""",
      """TFData2VecVisionPreTrainedModel""",
  ]

if TYPE_CHECKING:
  from .configuration_dataavec_audio import DATA2VEC_AUDIO_PRETRAINED_CONFIG_ARCHIVE_MAP, DataaVecAudioConfig
  from .configuration_dataavec_text import (
      DATA2VEC_TEXT_PRETRAINED_CONFIG_ARCHIVE_MAP,
      DataaVecTextConfig,
      DataaVecTextOnnxConfig,
  )
  from .configuration_dataavec_vision import (
      DATA2VEC_VISION_PRETRAINED_CONFIG_ARCHIVE_MAP,
      DataaVecVisionConfig,
      DataaVecVisionOnnxConfig,
  )

  try:
    if not is_torch_available():
      raise OptionalDependencyNotAvailable()
  except OptionalDependencyNotAvailable:
    pass
  else:
    from .modeling_dataavec_audio import (
        DATA2VEC_AUDIO_PRETRAINED_MODEL_ARCHIVE_LIST,
        DataaVecAudioForAudioFrameClassification,
        DataaVecAudioForCTC,
        DataaVecAudioForSequenceClassification,
        DataaVecAudioForXVector,
        DataaVecAudioModel,
        DataaVecAudioPreTrainedModel,
    )
    from .modeling_dataavec_text import (
        DATA2VEC_TEXT_PRETRAINED_MODEL_ARCHIVE_LIST,
        DataaVecTextForCausalLM,
        DataaVecTextForMaskedLM,
        DataaVecTextForMultipleChoice,
        DataaVecTextForQuestionAnswering,
        DataaVecTextForSequenceClassification,
        DataaVecTextForTokenClassification,
        DataaVecTextModel,
        DataaVecTextPreTrainedModel,
    )
    from .modeling_dataavec_vision import (
        DATA2VEC_VISION_PRETRAINED_MODEL_ARCHIVE_LIST,
        DataaVecVisionForImageClassification,
        DataaVecVisionForMaskedImageModeling,
        DataaVecVisionForSemanticSegmentation,
        DataaVecVisionModel,
        DataaVecVisionPreTrainedModel,
    )
  if is_tf_available():
    from .modeling_tf_dataavec_vision import (
        TFDataaVecVisionForImageClassification,
        TFDataaVecVisionForSemanticSegmentation,
        TFDataaVecVisionModel,
        TFDataaVecVisionPreTrainedModel,
    )

else:
  import sys

  __A											=		_LazyModule(__name__, globals()["""__file__"""], _import_structure, module_spec=__spec__)
