




from typing import TYPE_CHECKING

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


a_ 		=  {
    "configuration_flava": [
        "FLAVA_PRETRAINED_CONFIG_ARCHIVE_MAP",
        "FlavaConfig",
        "FlavaImageCodebookConfig",
        "FlavaImageConfig",
        "FlavaMultimodalConfig",
        "FlavaTextConfig",
    ],
}

try:
 if not is_vision_available():
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 pass
else:
 a_ 		=  ["FlavaFeatureExtractor"]
 a_ 		=  ["FlavaImageProcessor"]
 a_ 		=  ["FlavaProcessor"]

try:
 if not is_torch_available():
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 pass
else:
 a_ 		=  [
     "FLAVA_PRETRAINED_MODEL_ARCHIVE_LIST",
     "FlavaForPreTraining",
     "FlavaImageCodebook",
     "FlavaImageModel",
     "FlavaModel",
     "FlavaMultimodalModel",
     "FlavaPreTrainedModel",
     "FlavaTextModel",
 ]

if TYPE_CHECKING:
 from .configuration_flava import (
     FLAVA_PRETRAINED_CONFIG_ARCHIVE_MAP,
     FlavaConfig,
     FlavaImageCodebookConfig,
     FlavaImageConfig,
     FlavaMultimodalConfig,
     FlavaTextConfig,
 )

 try:
  if not is_vision_available():
   raise OptionalDependencyNotAvailable()
 except OptionalDependencyNotAvailable:
  pass
 else:
  from .feature_extraction_flava import FlavaFeatureExtractor
  from .image_processing_flava import FlavaImageProcessor
  from .processing_flava import FlavaProcessor

 try:
  if not is_torch_available():
   raise OptionalDependencyNotAvailable()
 except OptionalDependencyNotAvailable:
  pass
 else:
  from .modeling_flava import (
      FLAVA_PRETRAINED_MODEL_ARCHIVE_LIST,
      FlavaForPreTraining,
      FlavaImageCodebook,
      FlavaImageModel,
      FlavaModel,
      FlavaMultimodalModel,
      FlavaPreTrainedModel,
      FlavaTextModel,
  )

else:
 import sys

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








'''simple docstring'''





import math
from timeit import timeit

def   A			(							A_				:       int							):
						snake_case							:  List[str]			=     0
						snake_case							:  Any			=     abs(A_							)
						while True:
												snake_case							:  List[Any]			=     n // 10
												digits += 1
												if n == 0:
																		break
						return digits

def   A			(							A_				:       int							):
						return 1 if n == 0 else math.floor(math.log(abs(A_							)     ,				10							) + 1							)

def   A			(							A_				:       int							):
						return len(str(abs(A_							)							)							)

def   A			(							):
						from collections.abc import Callable

						def benchmark_a_function(A_				:       Callable     ,				A_				:       int							) -> None:
												snake_case							:  Optional[int]			=     F"""{func.__name__}({value})"""
												snake_case							:  Optional[int]			=     timeit(F"""__main__.{call}"""     ,				setup='''import __main__'''							)
												print(F"""{call}: {func(A_							)} -- {timing} seconds"""							)

						for value in (262144, 1125899906842624, 1267650600228229401496703205376):
												for func in (num_digits, num_digits_fast, num_digits_faster):
																		benchmark_a_function(A_     ,				A_							)
												print()


if __name__ == "__main__":
						import doctest

						doctest.testmod()
						benchmark()

