

from typing import TYPE_CHECKING

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


__snake_case							:     int 						=	{"""configuration_vilt""": ["""VILT_PRETRAINED_CONFIG_ARCHIVE_MAP""", """ViltConfig"""]}

try:
	if not is_vision_available():
		raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
	pass
else:
	__snake_case							:     List[str] 						=	["""ViltFeatureExtractor"""]
	__snake_case							:     Optional[int] 						=	["""ViltImageProcessor"""]
	__snake_case							:     Tuple 						=	["""ViltProcessor"""]

try:
	if not is_torch_available():
		raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
	pass
else:
	__snake_case							:     List[str] 						=	[
	    """VILT_PRETRAINED_MODEL_ARCHIVE_LIST""",
	    """ViltForImageAndTextRetrieval""",
	    """ViltForImagesAndTextClassification""",
	    """ViltForTokenClassification""",
	    """ViltForMaskedLM""",
	    """ViltForQuestionAnswering""",
	    """ViltLayer""",
	    """ViltModel""",
	    """ViltPreTrainedModel""",
	]


if TYPE_CHECKING:
	from .configuration_vilt import VILT_PRETRAINED_CONFIG_ARCHIVE_MAP, ViltConfig

	try:
		if not is_vision_available():
			raise OptionalDependencyNotAvailable()
	except OptionalDependencyNotAvailable:
		pass
	else:
		from .feature_extraction_vilt import ViltFeatureExtractor
		from .image_processing_vilt import ViltImageProcessor
		from .processing_vilt import ViltProcessor

	try:
		if not is_torch_available():
			raise OptionalDependencyNotAvailable()
	except OptionalDependencyNotAvailable:
		pass
	else:
		from .modeling_vilt import (
		    VILT_PRETRAINED_MODEL_ARCHIVE_LIST,
		    ViltForImageAndTextRetrieval,
		    ViltForImagesAndTextClassification,
		    ViltForMaskedLM,
		    ViltForQuestionAnswering,
		    ViltForTokenClassification,
		    ViltLayer,
		    ViltModel,
		    ViltPreTrainedModel,
		)


else:
	import sys

	__snake_case							:     Optional[Any] 						=	_LazyModule(__name__, globals()["""__file__"""], _import_structure)




from collections import namedtuple

__snake_case							:     Optional[Any] 						=	namedtuple("""from_to""", """from_ to""")

__snake_case							:     Tuple 						=	{
    """millimeter""": """mm""",
    """centimeter""": """cm""",
    """meter""": """m""",
    """kilometer""": """km""",
    """inch""": """in""",
    """inche""": """in""",  # Trailing 's' has been stripped off
    """feet""": """ft""",
    """foot""": """ft""",
    """yard""": """yd""",
    """mile""": """mi""",
}

__snake_case							:     Optional[int] 						=	{
    """mm""": from_to(0.001, 10_00),
    """cm""": from_to(0.01, 1_00),
    """m""": from_to(1, 1),
    """km""": from_to(10_00, 0.001),
    """in""": from_to(0.0254, 39.3701),
    """ft""": from_to(0.3048, 3.2_8084),
    """yd""": from_to(0.9144, 1.0_9361),
    """mi""": from_to(1609.34, 0.0_0062_1371),
}


def 			_UpperCAmelCase							(		a__       ,					a__       ,					a__):

			'''simple docstring'''



			a_		:		List[str]				    =				from_type.lower().rstrip("""s""")
			a_		:		Union[str, Any]				    =				TYPE_CONVERSION.get(a__       ,					a__)
			a_		:		Optional[int]				    =				to_type.lower().rstrip("""s""")
			a_		:		Optional[int]				    =				TYPE_CONVERSION.get(a__       ,					a__)
			if new_from not in METRIC_CONVERSION:
						a_		:		Any				    =				(
						    f'''Invalid \'from_type\' value: {from_type!r}.\n'''
						    f'''Conversion abbreviations are: {", ".join(a__)}'''
						)
						raise ValueError(a__)
			if new_to not in METRIC_CONVERSION:
						a_		:		Union[str, Any]				    =				(
						    f'''Invalid \'to_type\' value: {to_type!r}.\n'''
						    f'''Conversion abbreviations are: {", ".join(a__)}'''
						)
						raise ValueError(a__)
			return value * METRIC_CONVERSION[new_from].from_ * METRIC_CONVERSION[new_to].to


if __name__ == "__main__":
	import doctest

	doctest.testmod()


