from typing import TYPE_CHECKING

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


A   :     List[Any]       =				{"configuration_beit": ["BEIT_PRETRAINED_CONFIG_ARCHIVE_MAP", "BeitConfig", "BeitOnnxConfig"]}

try:
      if not is_vision_available():
            raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
      pass
else:
      A   :     Tuple       =				["BeitFeatureExtractor"]
      A   :     Tuple       =				["BeitImageProcessor"]

try:
      if not is_torch_available():
            raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
      pass
else:
      A   :     Optional[int]       =				[
          "BEIT_PRETRAINED_MODEL_ARCHIVE_LIST",
          "BeitForImageClassification",
          "BeitForMaskedImageModeling",
          "BeitForSemanticSegmentation",
          "BeitModel",
          "BeitPreTrainedModel",
      ]


try:
      if not is_flax_available():
            raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
      pass
else:
      A   :     Any       =				[
          "FlaxBeitForImageClassification",
          "FlaxBeitForMaskedImageModeling",
          "FlaxBeitModel",
          "FlaxBeitPreTrainedModel",
      ]

if TYPE_CHECKING:
      from .configuration_beit import BEIT_PRETRAINED_CONFIG_ARCHIVE_MAP, BeitConfig, BeitOnnxConfig

      try:
            if not is_vision_available():
                  raise OptionalDependencyNotAvailable()
      except OptionalDependencyNotAvailable:
            pass
      else:
            from .feature_extraction_beit import BeitFeatureExtractor
            from .image_processing_beit import BeitImageProcessor

      try:
            if not is_torch_available():
                  raise OptionalDependencyNotAvailable()
      except OptionalDependencyNotAvailable:
            pass
      else:
            from .modeling_beit import (
                BEIT_PRETRAINED_MODEL_ARCHIVE_LIST,
                BeitForImageClassification,
                BeitForMaskedImageModeling,
                BeitForSemanticSegmentation,
                BeitModel,
                BeitPreTrainedModel,
            )

      try:
            if not is_flax_available():
                  raise OptionalDependencyNotAvailable()
      except OptionalDependencyNotAvailable:
            pass
      else:
            from .modeling_flax_beit import (
                FlaxBeitForImageClassification,
                FlaxBeitForMaskedImageModeling,
                FlaxBeitModel,
                FlaxBeitPreTrainedModel,
            )


else:
      import sys

      A   :     int       =				_LazyModule(__name__, globals()["__file__"], _import_structure, module_spec=__spec__)



from functools import lru_cache


@lru_cache
def    a__       (						__UpperCamelCase ):
      if num < 0:
            raise ValueError("Number should not be negative." )

      return 1 if num in (0, 1) else num * factorial(num - 1 )


if __name__ == "__main__":
      import doctest

      doctest.testmod()


