def length_conversion(value: float, from_type: str, to_type: str) -> float:
    '\n    Conversion between length units.\n\n    >>> length_conversion(4, "METER", "FEET")\n    13.12336\n    >>> length_conversion(4, "M", "FT")\n    13.12336\n    >>> length_conversion(1, "meter", "kilometer")\n    0.001\n    >>> length_conversion(1, "kilometer", "inch")\n    39370.1\n    >>> length_conversion(3, "kilometer", "mile")\n    1.8641130000000001\n    >>> length_conversion(2, "feet", "meter")\n    0.6096\n    >>> length_conversion(4, "feet", "yard")\n    1.333329312\n    >>> length_conversion(1, "inch", "meter")\n    0.0254\n    >>> length_conversion(2, "inch", "mile")\n    3.15656468e-05\n    >>> length_conversion(2, "centimeter", "millimeter")\n    20.0\n    >>> length_conversion(2, "centimeter", "yard")\n    0.0218722\n    >>> length_conversion(4, "yard", "meter")\n    3.6576\n    >>> length_conversion(4, "yard", "kilometer")\n    0.0036576\n    >>> length_conversion(3, "foot", "meter")\n    0.9144000000000001\n    >>> length_conversion(3, "foot", "inch")\n    36.00001944\n    >>> length_conversion(4, "mile", "kilometer")\n    6.43736\n    >>> length_conversion(2, "miles", "InChEs")\n    126719.753468\n    >>> length_conversion(3, "millimeter", "centimeter")\n    0.3\n    >>> length_conversion(3, "mm", "in")\n    0.1181103\n    >>> length_conversion(4, "wrongUnit", "inch")\n    Traceback (most recent call last):\n      ...\n    ValueError: Invalid \'from_type\' value: \'wrongUnit\'.\n    Conversion abbreviations are: mm, cm, m, km, in, ft, yd, mi\n    '
    new_from = from_type.lower().rstrip('s')
    new_from = TYPE_CONVERSION.get(new_from, new_from)
    new_to = to_type.lower().rstrip('s')
    new_to = TYPE_CONVERSION.get(new_to, new_to)
    if (new_from not in METRIC_CONVERSION):
        raise ValueError(f'''Invalid 'from_type' value: {from_type!r}.
Conversion abbreviations are: {', '.join(METRIC_CONVERSION)}''')
    if (new_to not in METRIC_CONVERSION):
        raise ValueError(f'''Invalid 'to_type' value: {to_type!r}.
Conversion abbreviations are: {', '.join(METRIC_CONVERSION)}''')
    return ((value * METRIC_CONVERSION[new_from].from_) * METRIC_CONVERSION[new_to].to)
Conversion between length units.

>>> length_conversion(4, "METER", "FEET")
13.12336
>>> length_conversion(4, "M", "FT")
13.12336
>>> length_conversion(1, "meter", "kilometer")
0.001
>>> length_conversion(1, "kilometer", "inch")
39370.1
>>> length_conversion(3, "kilometer", "mile")
1.8641130000000001
>>> length_conversion(2, "feet", "meter")
0.6096
>>> length_conversion(4, "feet", "yard")
1.333329312
>>> length_conversion(1, "inch", "meter")
0.0254
>>> length_conversion(2, "inch", "mile")
3.15656468e-05
>>> length_conversion(2, "centimeter", "millimeter")
20.0
>>> length_conversion(2, "centimeter", "yard")
0.0218722
>>> length_conversion(4, "yard", "meter")
3.6576
>>> length_conversion(4, "yard", "kilometer")
0.0036576
>>> length_conversion(3, "foot", "meter")
0.9144000000000001
>>> length_conversion(3, "foot", "inch")
36.00001944
>>> length_conversion(4, "mile", "kilometer")
6.43736
>>> length_conversion(2, "miles", "InChEs")
126719.753468
>>> length_conversion(3, "millimeter", "centimeter")
0.3
>>> length_conversion(3, "mm", "in")
0.1181103
>>> length_conversion(4, "wrongUnit", "inch")
Traceback (most recent call last):
  ...
ValueError: Invalid 'from_type' value: 'wrongUnit'.
Conversion abbreviations are: mm, cm, m, km, in, ft, yd, mi
def length_conversion(value: float, from_type: str, to_type: str) -> float:
    '\n    Conversion between length units.\n\n    >>> length_conversion(4, "METER", "FEET")\n    13.12336\n    >>> length_conversion(4, "M", "FT")\n    13.12336\n    >>> length_conversion(1, "meter", "kilometer")\n    0.001\n    >>> length_conversion(1, "kilometer", "inch")\n    39370.1\n    >>> length_conversion(3, "kilometer", "mile")\n    1.8641130000000001\n    >>> length_conversion(2, "feet", "meter")\n    0.6096\n    >>> length_conversion(4, "feet", "yard")\n    1.333329312\n    >>> length_conversion(1, "inch", "meter")\n    0.0254\n    >>> length_conversion(2, "inch", "mile")\n    3.15656468e-05\n    >>> length_conversion(2, "centimeter", "millimeter")\n    20.0\n    >>> length_conversion(2, "centimeter", "yard")\n    0.0218722\n    >>> length_conversion(4, "yard", "meter")\n    3.6576\n    >>> length_conversion(4, "yard", "kilometer")\n    0.0036576\n    >>> length_conversion(3, "foot", "meter")\n    0.9144000000000001\n    >>> length_conversion(3, "foot", "inch")\n    36.00001944\n    >>> length_conversion(4, "mile", "kilometer")\n    6.43736\n    >>> length_conversion(2, "miles", "InChEs")\n    126719.753468\n    >>> length_conversion(3, "millimeter", "centimeter")\n    0.3\n    >>> length_conversion(3, "mm", "in")\n    0.1181103\n    >>> length_conversion(4, "wrongUnit", "inch")\n    Traceback (most recent call last):\n      ...\n    ValueError: Invalid \'from_type\' value: \'wrongUnit\'.\n    Conversion abbreviations are: mm, cm, m, km, in, ft, yd, mi\n    '
    new_from = from_type.lower().rstrip('s')
    new_from = TYPE_CONVERSION.get(new_from, new_from)
    new_to = to_type.lower().rstrip('s')
    new_to = TYPE_CONVERSION.get(new_to, new_to)
    if (new_from not in METRIC_CONVERSION):
        raise ValueError(f'Invalid 'from_type' value: {from_type!r}.
Conversion abbreviations are: {', '.join(METRIC_CONVERSION)}')
    if (new_to not in METRIC_CONVERSION):
        raise ValueError(f'Invalid 'to_type' value: {to_type!r}.
Conversion abbreviations are: {', '.join(METRIC_CONVERSION)}')
    return ((value * METRIC_CONVERSION[new_from].from_) * METRIC_CONVERSION[new_to].to)