





from typing import TYPE_CHECKING

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


UpperCAmelCase_   				=  {
    """configuration_layoutlm""": ["""LAYOUTLM_PRETRAINED_CONFIG_ARCHIVE_MAP""", """LayoutLMConfig""", """LayoutLMOnnxConfig"""],
    """tokenization_layoutlm""": ["""LayoutLMTokenizer"""],
}

try:
					if not is_tokenizers_available():
										raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
					pass
else:
					UpperCAmelCase_   				=  ["""LayoutLMTokenizerFast"""]

try:
					if not is_torch_available():
										raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
					pass
else:
					UpperCAmelCase_   				=  [
					    """LAYOUTLM_PRETRAINED_MODEL_ARCHIVE_LIST""",
					    """LayoutLMForMaskedLM""",
					    """LayoutLMForSequenceClassification""",
					    """LayoutLMForTokenClassification""",
					    """LayoutLMForQuestionAnswering""",
					    """LayoutLMModel""",
					    """LayoutLMPreTrainedModel""",
					]

try:
					if not is_tf_available():
										raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
					pass
else:
					UpperCAmelCase_   				=  [
					    """TF_LAYOUTLM_PRETRAINED_MODEL_ARCHIVE_LIST""",
					    """TFLayoutLMForMaskedLM""",
					    """TFLayoutLMForSequenceClassification""",
					    """TFLayoutLMForTokenClassification""",
					    """TFLayoutLMForQuestionAnswering""",
					    """TFLayoutLMMainLayer""",
					    """TFLayoutLMModel""",
					    """TFLayoutLMPreTrainedModel""",
					]


if TYPE_CHECKING:
					from .configuration_layoutlm import LAYOUTLM_PRETRAINED_CONFIG_ARCHIVE_MAP, LayoutLMConfig, LayoutLMOnnxConfig
					from .tokenization_layoutlm import LayoutLMTokenizer

					try:
										if not is_tokenizers_available():
															raise OptionalDependencyNotAvailable()
					except OptionalDependencyNotAvailable:
										pass
					else:
										from .tokenization_layoutlm_fast import LayoutLMTokenizerFast

					try:
										if not is_torch_available():
															raise OptionalDependencyNotAvailable()
					except OptionalDependencyNotAvailable:
										pass
					else:
										from .modeling_layoutlm import (
										    LAYOUTLM_PRETRAINED_MODEL_ARCHIVE_LIST,
										    LayoutLMForMaskedLM,
										    LayoutLMForQuestionAnswering,
										    LayoutLMForSequenceClassification,
										    LayoutLMForTokenClassification,
										    LayoutLMModel,
										    LayoutLMPreTrainedModel,
										)
					try:
										if not is_tf_available():
															raise OptionalDependencyNotAvailable()
					except OptionalDependencyNotAvailable:
										pass
					else:
										from .modeling_tf_layoutlm import (
										    TF_LAYOUTLM_PRETRAINED_MODEL_ARCHIVE_LIST,
										    TFLayoutLMForMaskedLM,
										    TFLayoutLMForQuestionAnswering,
										    TFLayoutLMForSequenceClassification,
										    TFLayoutLMForTokenClassification,
										    TFLayoutLMMainLayer,
										    TFLayoutLMModel,
										    TFLayoutLMPreTrainedModel,
										)

else:
					import sys

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










import math
from timeit import timeit





def     lowerCamelCase__  (  UpperCamelCase__      :							int    )      ->			int:



					'''simple docstring'''




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





def     lowerCamelCase__  (  UpperCamelCase__      :							int    )      ->			int:



					'''simple docstring'''




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





def     lowerCamelCase__  (  UpperCamelCase__      :							int    )      ->			int:



					'''simple docstring'''




					return len(str(abs(UpperCamelCase__    )    )    )





def     lowerCamelCase__  (  )      ->			None:



					'''simple docstring'''




					from collections.abc import Callable

					def benchmark_a_function(UpperCamelCase__      :							Callable							,     UpperCamelCase__      :							int    ) -> None:
										_snake_case						=					F'''{func.__name__}({value})'''
										_snake_case						=					timeit(F'''__main__.{call}'''							,     setup='import __main__'    )
										print(F'''{call}: {func(UpperCamelCase__    )} -- {timing} seconds'''    )

					for value in (262_144, 1_125_899_906_842_624, 1_267_650_600_228_229_401_496_703_205_376):
										for func in (num_digits, num_digits_fast, num_digits_faster):
															benchmark_a_function(UpperCamelCase__							,     UpperCamelCase__    )
										print()


if __name__ == "__main__":
					import doctest

					doctest.testmod()
					benchmark()



