


lowerCAmelCase__      		= {
    'meter': 'm',
    'kilometer': 'km',
    'megametre': 'Mm',
    'gigametre': 'Gm',
    'terametre': 'Tm',
    'petametre': 'Pm',
    'exametre': 'Em',
    'zettametre': 'Zm',
    'yottametre': 'Ym',
}
# Exponent of the factor(meter)
lowerCAmelCase__      		= {
    'm': 0,
    'km': 3,
    'Mm': 6,
    'Gm': 9,
    'Tm': 12,
    'Pm': 15,
    'Em': 18,
    'Zm': 21,
    'Ym': 24,
}
def 							_UpperCAmelCase				(UpperCamelCase__     :  float				,							UpperCamelCase__     :  str				,							UpperCamelCase__     :  str						):
       _A      :       Dict				    = from_type.lower().strip("s"						)
       _A      :       str				    = to_type.lower().strip("s"						)

       _A      :       Optional[Any]				    = UNIT_SYMBOL.get(UpperCamelCase__				,							UpperCamelCase__						)
       _A      :       int				    = UNIT_SYMBOL.get(UpperCamelCase__				,							UpperCamelCase__						)

       if from_sanitized not in METRIC_CONVERSION:
              _A      :       List[str]				    = (
                  f"Invalid 'from_type' value: {from_type!r}.\n"
                  f"Conversion abbreviations are: {', '.join(UpperCamelCase__						)}"
              )
              raise ValueError(UpperCamelCase__						)
       if to_sanitized not in METRIC_CONVERSION:
              _A      :       Optional[Any]				    = (
                  f"Invalid 'to_type' value: {to_type!r}.\n"
                  f"Conversion abbreviations are: {', '.join(UpperCamelCase__						)}"
              )
              raise ValueError(UpperCamelCase__						)
       _A      :       str				    = METRIC_CONVERSION[from_sanitized]
       _A      :       Union[str, Any]				    = METRIC_CONVERSION[to_sanitized]
       _A      :       str				    = 1

       if from_exponent > to_exponent:
              _A      :       Union[str, Any]				    = from_exponent - to_exponent
       else:
              _A      :       Any				    = -(to_exponent - from_exponent)

       return value * pow(10				,							UpperCamelCase__						)


if __name__ == "__main__":
    from doctest import testmod

    testmod()




def 							_UpperCAmelCase				(UpperCamelCase__     :  str				,							UpperCamelCase__     :  bool = False						):

       if not isinstance(UpperCamelCase__				,							UpperCamelCase__						):
              _A      :       Optional[Any]				    = f"Expected string as input, found {type(UpperCamelCase__						)}"
              raise ValueError(UpperCamelCase__						)
       if not isinstance(UpperCamelCase__				,							UpperCamelCase__						):
              _A      :       Union[str, Any]				    = f"Expected boolean as use_pascal parameter, found {type(UpperCamelCase__						)}"
              raise ValueError(UpperCamelCase__						)

       _A      :       int				    = input_str.split("_"						)

       _A      :       str				    = 0 if use_pascal else 1

       _A      :       str				    = words[start_index:]

       _A      :       Optional[Any]				    = [word[0].upper() + word[1:] for word in words_to_capitalize]

       _A      :       Any				    = "" if use_pascal else words[0]

       return "".join([initial_word, *capitalized_words]						)


if __name__ == "__main__":
    from doctest import testmod

    testmod()
