





"""simple docstring"""





from typing import List

from .keymap import KEYMAP, get_character
def  __A   (_SCREAMING_SNAKE_CASE			)					->Optional[int]:





  """simple docstring"""


  def decorator(_SCREAMING_SNAKE_CASE			):
    lowerCAmelCase__			:Dict											=							getattr(_SCREAMING_SNAKE_CASE     ,   'handle_key'     ,   []			)
    handle += [key]
    setattr(_SCREAMING_SNAKE_CASE     ,   'handle_key'     ,   _SCREAMING_SNAKE_CASE			)
    return func

  return decorator
def  __A   (*_SCREAMING_SNAKE_CASE			)					->Optional[int]:





  """simple docstring"""


  def decorator(_SCREAMING_SNAKE_CASE			):
    lowerCAmelCase__			:Any											=							getattr(_SCREAMING_SNAKE_CASE     ,   'handle_key'     ,   []			)
    handle += keys
    setattr(_SCREAMING_SNAKE_CASE     ,   'handle_key'     ,   _SCREAMING_SNAKE_CASE			)
    return func

  return decorator






class 					_lowerCAmelCase   (     a       ):
       """simple docstring"""




       def __new__(    cls    , __UpperCAmelCase    , __UpperCAmelCase    , __UpperCAmelCase      ):



         '''simple docstring'''

         lowerCAmelCase__			:Union[str, Any]											=							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():
           lowerCAmelCase__			:List[Any]											=							getattr(__UpperCAmelCase    , 'handle_key'    , []      )
           for key in handled_keys:
             lowerCAmelCase__			:Any											=							value
         return new_cls






       @staticmethod
       def      snake_case						(    cls      ):



         '''simple docstring'''

         lowerCAmelCase__			:Optional[Any]											=							get_character()
         if char != KEYMAP["undefined"]:
           lowerCAmelCase__			:Optional[int]											=							ord(__UpperCAmelCase      )
         lowerCAmelCase__			:Optional[Any]											=							cls.key_handler.get(__UpperCAmelCase      )
         if handler:
           lowerCAmelCase__			:List[Any]											=							char
           return handler(cls      )
         else:
           return None






def  __A   (cls			)					->Tuple:





  """simple docstring"""


  return KeyHandler(cls.__name__     ,   cls.__bases__     ,   cls.__dict__.copy()			)







"""simple docstring"""





from typing import TYPE_CHECKING

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


__A											=		{
    """configuration_owlvit""": [
        """OWLVIT_PRETRAINED_CONFIG_ARCHIVE_MAP""",
        """OwlViTConfig""",
        """OwlViTOnnxConfig""",
        """OwlViTTextConfig""",
        """OwlViTVisionConfig""",
    ],
    """processing_owlvit""": ["""OwlViTProcessor"""],
}


try:
  if not is_vision_available():
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  pass
else:
  __A											=		["""OwlViTFeatureExtractor"""]
  __A											=		["""OwlViTImageProcessor"""]

try:
  if not is_torch_available():
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  pass
else:
  __A											=		[
      """OWLVIT_PRETRAINED_MODEL_ARCHIVE_LIST""",
      """OwlViTModel""",
      """OwlViTPreTrainedModel""",
      """OwlViTTextModel""",
      """OwlViTVisionModel""",
      """OwlViTForObjectDetection""",
  ]

if TYPE_CHECKING:
  from .configuration_owlvit import (
      OWLVIT_PRETRAINED_CONFIG_ARCHIVE_MAP,
      OwlViTConfig,
      OwlViTOnnxConfig,
      OwlViTTextConfig,
      OwlViTVisionConfig,
  )
  from .processing_owlvit import OwlViTProcessor

  try:
    if not is_vision_available():
      raise OptionalDependencyNotAvailable()
  except OptionalDependencyNotAvailable:
    pass
  else:
    from .feature_extraction_owlvit import OwlViTFeatureExtractor
    from .image_processing_owlvit import OwlViTImageProcessor

  try:
    if not is_torch_available():
      raise OptionalDependencyNotAvailable()
  except OptionalDependencyNotAvailable:
    pass
  else:
    from .modeling_owlvit import (
        OWLVIT_PRETRAINED_MODEL_ARCHIVE_LIST,
        OwlViTForObjectDetection,
        OwlViTModel,
        OwlViTPreTrainedModel,
        OwlViTTextModel,
        OwlViTVisionModel,
    )

else:
  import sys

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