from typing import TYPE_CHECKING

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


SCREAMING_SNAKE_CASE			:						Tuple				  =		{
    """configuration_mobilevit""": ["""MOBILEVIT_PRETRAINED_CONFIG_ARCHIVE_MAP""", """MobileViTConfig""", """MobileViTOnnxConfig"""],
}

try:
  if not is_vision_available():
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  pass
else:
  SCREAMING_SNAKE_CASE			:						List[Any]				  =		["""MobileViTFeatureExtractor"""]
  SCREAMING_SNAKE_CASE			:						Optional[Any]				  =		["""MobileViTImageProcessor"""]

try:
  if not is_torch_available():
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  pass
else:
  SCREAMING_SNAKE_CASE			:						Optional[Any]				  =		[
      """MOBILEVIT_PRETRAINED_MODEL_ARCHIVE_LIST""",
      """MobileViTForImageClassification""",
      """MobileViTForSemanticSegmentation""",
      """MobileViTModel""",
      """MobileViTPreTrainedModel""",
  ]

try:
  if not is_tf_available():
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  pass
else:
  SCREAMING_SNAKE_CASE			:						Dict				  =		[
      """TF_MOBILEVIT_PRETRAINED_MODEL_ARCHIVE_LIST""",
      """TFMobileViTForImageClassification""",
      """TFMobileViTForSemanticSegmentation""",
      """TFMobileViTModel""",
      """TFMobileViTPreTrainedModel""",
  ]

if TYPE_CHECKING:
  from .configuration_mobilevit import MOBILEVIT_PRETRAINED_CONFIG_ARCHIVE_MAP, MobileViTConfig, MobileViTOnnxConfig

  try:
    if not is_vision_available():
      raise OptionalDependencyNotAvailable()
  except OptionalDependencyNotAvailable:
    pass
  else:
    from .feature_extraction_mobilevit import MobileViTFeatureExtractor
    from .image_processing_mobilevit import MobileViTImageProcessor

  try:
    if not is_torch_available():
      raise OptionalDependencyNotAvailable()
  except OptionalDependencyNotAvailable:
    pass
  else:
    from .modeling_mobilevit import (
        MOBILEVIT_PRETRAINED_MODEL_ARCHIVE_LIST,
        MobileViTForImageClassification,
        MobileViTForSemanticSegmentation,
        MobileViTModel,
        MobileViTPreTrainedModel,
    )

  try:
    if not is_tf_available():
      raise OptionalDependencyNotAvailable()
  except OptionalDependencyNotAvailable:
    pass
  else:
    from .modeling_tf_mobilevit import (
        TF_MOBILEVIT_PRETRAINED_MODEL_ARCHIVE_LIST,
        TFMobileViTForImageClassification,
        TFMobileViTForSemanticSegmentation,
        TFMobileViTModel,
        TFMobileViTPreTrainedModel,
    )


else:
  import sys

  SCREAMING_SNAKE_CASE			:						Tuple				  =		_LazyModule(__name__, globals()["""__file__"""], _import_structure, module_spec=__spec__)










def   __lowercase       (			snake_case			):







				"""simple docstring"""






				if not isinstance(snake_case,	snake_case			):
								raise ValueError('''multiplicative_persistence() only accepts integral values'''			)
				if num < 0:
								raise ValueError('''multiplicative_persistence() does not accept negative values'''			)

				__magic_name__		:str   =   0
				__magic_name__		:Dict   =   str(snake_case			)

				while len(snake_case			) != 1:
								__magic_name__		:Optional[Any]   =   [int(snake_case			) for i in num_string]

								__magic_name__		:Dict   =   1
								for i in range(0,	len(snake_case			)			):
												total *= numbers[i]

								__magic_name__		:int   =   str(snake_case			)

								steps += 1
				return steps

def   __lowercase       (			snake_case			):







				"""simple docstring"""






				if not isinstance(snake_case,	snake_case			):
								raise ValueError('''additive_persistence() only accepts integral values'''			)
				if num < 0:
								raise ValueError('''additive_persistence() does not accept negative values'''			)

				__magic_name__		:str   =   0
				__magic_name__		:Union[str, Any]   =   str(snake_case			)

				while len(snake_case			) != 1:
								__magic_name__		:str   =   [int(snake_case			) for i in num_string]

								__magic_name__		:Optional[int]   =   0
								for i in range(0,	len(snake_case			)			):
												total += numbers[i]

								__magic_name__		:int   =   str(snake_case			)

								steps += 1
				return steps


if __name__ == "__main__":
					import doctest

					doctest.testmod()






