



"""simple docstring"""







from typing import TYPE_CHECKING

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


UpperCAmelCase:  Dict			     =				{"""configuration_levit""": ["""LEVIT_PRETRAINED_CONFIG_ARCHIVE_MAP""", """LevitConfig""", """LevitOnnxConfig"""]}

try:
		if not is_vision_available():
				raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
		pass
else:
		UpperCAmelCase:  Union[str, Any]			     =				["""LevitFeatureExtractor"""]
		UpperCAmelCase:  Tuple			     =				["""LevitImageProcessor"""]

try:
		if not is_torch_available():
				raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
		pass
else:
		UpperCAmelCase:  Optional[int]			     =				[
		    """LEVIT_PRETRAINED_MODEL_ARCHIVE_LIST""",
		    """LevitForImageClassification""",
		    """LevitForImageClassificationWithTeacher""",
		    """LevitModel""",
		    """LevitPreTrainedModel""",
		]


if TYPE_CHECKING:
		from .configuration_levit import LEVIT_PRETRAINED_CONFIG_ARCHIVE_MAP, LevitConfig, LevitOnnxConfig

		try:
				if not is_vision_available():
						raise OptionalDependencyNotAvailable()
		except OptionalDependencyNotAvailable:
				pass
		else:
				from .feature_extraction_levit import LevitFeatureExtractor
				from .image_processing_levit import LevitImageProcessor

		try:
				if not is_torch_available():
						raise OptionalDependencyNotAvailable()
		except OptionalDependencyNotAvailable:
				pass
		else:
				from .modeling_levit import (
				    LEVIT_PRETRAINED_MODEL_ARCHIVE_LIST,
				    LevitForImageClassification,
				    LevitForImageClassificationWithTeacher,
				    LevitModel,
				    LevitPreTrainedModel,
				)
else:
		import sys

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







'''simple docstring'''







import math
from timeit import timeit







def _UpperCamelCase			(	__A       )				->						int:


      '''simple docstring'''



      UpperCamelCase__      =							0
      UpperCamelCase__      =							abs(__A       )
      while True:
            UpperCamelCase__      =							n // 10
            digits += 1
            if n == 0:
                  break
      return digits







def _UpperCamelCase			(	__A       )				->						int:


      '''simple docstring'''



      return 1 if n == 0 else math.floor(math.log(abs(__A       ) ,     10       ) + 1       )







def _UpperCamelCase			(	__A       )				->						int:


      '''simple docstring'''



      return len(str(abs(__A       )       )       )







def _UpperCamelCase			(	)				->						None:


      '''simple docstring'''



      from collections.abc import Callable

      def benchmark_a_function(__A ,     __A       ) -> None:
            UpperCamelCase__      =							F'''{func.__name__}({value})'''
            UpperCamelCase__      =							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()





