
'''simple docstring'''


from abc import ABC, abstractmethod
from argparse import ArgumentParser

class 	__lowercase				(  _lowercase    ):

			@staticmethod
			@abstractmethod
			def        UpperCAmelCase__ (A      ):
								raise NotImplementedError()






			@abstractmethod
			def        UpperCAmelCase__ (self      ):
								raise NotImplementedError()




'''simple docstring'''


from collections import namedtuple

__lowercase							:   List[Any]					=     namedtuple('''from_to''', '''from_ to''')

__lowercase							:   Optional[Any]					=     {
    '''cubicmeter''': from_to(1, 1),
    '''litre''': from_to(0.0_01, 1000),
    '''kilolitre''': from_to(1, 1),
    '''gallon''': from_to(0.0_04_54, 2_64.1_72),
    '''cubicyard''': from_to(0.7_64_55, 1.3_07_95),
    '''cubicfoot''': from_to(0.0_28, 35.31_47),
    '''cup''': from_to(0.0_00_23_65_88, 42_26.75),
}




def lowercase_	(   _lowercase			,       _lowercase			,       _lowercase				)     ->							float:
					'''simple docstring'''

					if from_type not in METRIC_CONVERSION:
										raise ValueError(
										    F"""Invalid 'from_type' value: {from_type!r}  Supported values are:\n"""
										    + ''', '''.join(_lowercase				)				)
					if to_type not in METRIC_CONVERSION:
										raise ValueError(
										    F"""Invalid 'to_type' value: {to_type!r}.  Supported values are:\n"""
										    + ''', '''.join(_lowercase				)				)
					return value * METRIC_CONVERSION[from_type].from_ * METRIC_CONVERSION[to_type].to


if __name__ == "__main__":
					import doctest

					doctest.testmod()


