

'''simple docstring'''







from typing import TYPE_CHECKING

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


__lowerCamelCase		       =    {
    "configuration_blip": [
        "BLIP_PRETRAINED_CONFIG_ARCHIVE_MAP",
        "BlipConfig",
        "BlipTextConfig",
        "BlipVisionConfig",
    ],
    "processing_blip": ["BlipProcessor"],
}

try:
      if not is_vision_available():
            raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
      pass
else:
      __lowerCamelCase		       =    ["BlipImageProcessor"]


try:
      if not is_torch_available():
            raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
      pass
else:
      __lowerCamelCase		       =    [
          "BLIP_PRETRAINED_MODEL_ARCHIVE_LIST",
          "BlipModel",
          "BlipPreTrainedModel",
          "BlipForConditionalGeneration",
          "BlipForQuestionAnswering",
          "BlipVisionModel",
          "BlipTextModel",
          "BlipForImageTextRetrieval",
      ]

try:
      if not is_tf_available():
            raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
      pass
else:
      __lowerCamelCase		       =    [
          "TF_BLIP_PRETRAINED_MODEL_ARCHIVE_LIST",
          "TFBlipModel",
          "TFBlipPreTrainedModel",
          "TFBlipForConditionalGeneration",
          "TFBlipForQuestionAnswering",
          "TFBlipVisionModel",
          "TFBlipTextModel",
          "TFBlipForImageTextRetrieval",
      ]

if TYPE_CHECKING:
      from .configuration_blip import BLIP_PRETRAINED_CONFIG_ARCHIVE_MAP, BlipConfig, BlipTextConfig, BlipVisionConfig
      from .processing_blip import BlipProcessor

      try:
            if not is_vision_available():
                  raise OptionalDependencyNotAvailable()
      except OptionalDependencyNotAvailable:
            pass
      else:
            from .image_processing_blip import BlipImageProcessor

      try:
            if not is_torch_available():
                  raise OptionalDependencyNotAvailable()
      except OptionalDependencyNotAvailable:
            pass
      else:
            from .modeling_blip import (
                BLIP_PRETRAINED_MODEL_ARCHIVE_LIST,
                BlipForConditionalGeneration,
                BlipForImageTextRetrieval,
                BlipForQuestionAnswering,
                BlipModel,
                BlipPreTrainedModel,
                BlipTextModel,
                BlipVisionModel,
            )

      try:
            if not is_tf_available():
                  raise OptionalDependencyNotAvailable()
      except OptionalDependencyNotAvailable:
            pass
      else:
            from .modeling_tf_blip import (
                TF_BLIP_PRETRAINED_MODEL_ARCHIVE_LIST,
                TFBlipForConditionalGeneration,
                TFBlipForImageTextRetrieval,
                TFBlipForQuestionAnswering,
                TFBlipModel,
                TFBlipPreTrainedModel,
                TFBlipTextModel,
                TFBlipVisionModel,
            )

else:
      import sys

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



'''simple docstring'''







def       UpperCAmelCase__    (      UpperCAmelCase__,       UpperCAmelCase__,       UpperCAmelCase__ = 0,       UpperCAmelCase__ = 0				)			->			int:
       A_						=      right or len(UpperCAmelCase__				) - 1
       if left > right:
              return -1
       elif list_data[left] == key:
              return left
       elif list_data[right] == key:
              return right
       else:
              return search(UpperCAmelCase__,       UpperCAmelCase__,       left + 1,       right - 1				)


if __name__ == "__main__":
      import doctest

      doctest.testmod()
