diff --git a/docs/source/api/util.rst b/docs/source/api/util.rst index 4c74417e4d4..f670fc52204 100644 --- a/docs/source/api/util.rst +++ b/docs/source/api/util.rst @@ -46,14 +46,6 @@ homeassistant.util.decorator :undoc-members: :show-inheritance: -homeassistant.util.distance ---------------------------- - -.. automodule:: homeassistant.util.distance - :members: - :undoc-members: - :show-inheritance: - homeassistant.util.dt --------------------- diff --git a/homeassistant/util/distance.py b/homeassistant/util/distance.py deleted file mode 100644 index 45b105aea9f..00000000000 --- a/homeassistant/util/distance.py +++ /dev/null @@ -1,58 +0,0 @@ -"""Distance util functions.""" -from __future__ import annotations - -from collections.abc import Callable - -# pylint: disable-next=hass-deprecated-import -from homeassistant.const import ( # noqa: F401 - LENGTH, - LENGTH_CENTIMETERS, - LENGTH_FEET, - LENGTH_INCHES, - LENGTH_KILOMETERS, - LENGTH_METERS, - LENGTH_MILES, - LENGTH_MILLIMETERS, - LENGTH_YARD, - UNIT_NOT_RECOGNIZED_TEMPLATE, -) -from homeassistant.helpers.frame import report - -from .unit_conversion import DistanceConverter - -VALID_UNITS = DistanceConverter.VALID_UNITS - -TO_METERS: dict[str, Callable[[float], float]] = { - LENGTH_METERS: lambda meters: meters, - LENGTH_MILES: lambda miles: miles * 1609.344, - LENGTH_YARD: lambda yards: yards * 0.9144, - LENGTH_FEET: lambda feet: feet * 0.3048, - LENGTH_INCHES: lambda inches: inches * 0.0254, - LENGTH_KILOMETERS: lambda kilometers: kilometers * 1000, - LENGTH_CENTIMETERS: lambda centimeters: centimeters * 0.01, - LENGTH_MILLIMETERS: lambda millimeters: millimeters * 0.001, -} - -METERS_TO: dict[str, Callable[[float], float]] = { - LENGTH_METERS: lambda meters: meters, - LENGTH_MILES: lambda meters: meters * 0.000621371, - LENGTH_YARD: lambda meters: meters * 1.09361, - LENGTH_FEET: lambda meters: meters * 3.28084, - LENGTH_INCHES: lambda meters: meters * 39.3701, - LENGTH_KILOMETERS: lambda meters: meters * 0.001, - LENGTH_CENTIMETERS: lambda meters: meters * 100, - LENGTH_MILLIMETERS: lambda meters: meters * 1000, -} - - -def convert(value: float, from_unit: str, to_unit: str) -> float: - """Convert one unit of measurement to another.""" - report( - ( - "uses distance utility. This is deprecated since 2022.10 and will " - "stop working in Home Assistant 2023.4, it should be updated to use " - "unit_conversion.DistanceConverter instead" - ), - error_if_core=False, - ) - return DistanceConverter.convert(value, from_unit, to_unit) diff --git a/tests/util/test_distance.py b/tests/util/test_distance.py deleted file mode 100644 index c6a9d59cb73..00000000000 --- a/tests/util/test_distance.py +++ /dev/null @@ -1,211 +0,0 @@ -"""Test Home Assistant distance utility functions.""" - -import pytest - -from homeassistant.const import UnitOfLength -from homeassistant.exceptions import HomeAssistantError -import homeassistant.util.distance as distance_util - -INVALID_SYMBOL = "bob" -VALID_SYMBOL = UnitOfLength.KILOMETERS - - -def test_raise_deprecation_warning(caplog: pytest.LogCaptureFixture) -> None: - """Ensure that a warning is raised on use of convert.""" - assert distance_util.convert(2, UnitOfLength.METERS, UnitOfLength.METERS) == 2 - assert "use unit_conversion.DistanceConverter instead" in caplog.text - - -def test_convert_same_unit() -> None: - """Test conversion from any unit to same unit.""" - assert ( - distance_util.convert(5, UnitOfLength.KILOMETERS, UnitOfLength.KILOMETERS) == 5 - ) - assert distance_util.convert(2, UnitOfLength.METERS, UnitOfLength.METERS) == 2 - assert ( - distance_util.convert(6, UnitOfLength.CENTIMETERS, UnitOfLength.CENTIMETERS) - == 6 - ) - assert ( - distance_util.convert(3, UnitOfLength.MILLIMETERS, UnitOfLength.MILLIMETERS) - == 3 - ) - assert distance_util.convert(10, UnitOfLength.MILES, UnitOfLength.MILES) == 10 - assert distance_util.convert(9, UnitOfLength.YARDS, UnitOfLength.YARDS) == 9 - assert distance_util.convert(8, UnitOfLength.FEET, UnitOfLength.FEET) == 8 - assert distance_util.convert(7, UnitOfLength.INCHES, UnitOfLength.INCHES) == 7 - - -def test_convert_invalid_unit() -> None: - """Test exception is thrown for invalid units.""" - with pytest.raises(HomeAssistantError, match="is not a recognized .* unit"): - distance_util.convert(5, INVALID_SYMBOL, VALID_SYMBOL) - - with pytest.raises(HomeAssistantError, match="is not a recognized .* unit"): - distance_util.convert(5, VALID_SYMBOL, INVALID_SYMBOL) - - -def test_convert_nonnumeric_value() -> None: - """Test exception is thrown for nonnumeric type.""" - with pytest.raises(TypeError): - distance_util.convert("a", UnitOfLength.KILOMETERS, UnitOfLength.METERS) - - -@pytest.mark.parametrize( - ("unit", "expected"), - [ - (UnitOfLength.KILOMETERS, 8.04672), - (UnitOfLength.METERS, 8046.72), - (UnitOfLength.CENTIMETERS, 804672.0), - (UnitOfLength.MILLIMETERS, 8046720.0), - (UnitOfLength.YARDS, 8800.0), - (UnitOfLength.FEET, 26400.0008448), - (UnitOfLength.INCHES, 316800.171072), - ], -) -def test_convert_from_miles(unit, expected) -> None: - """Test conversion from miles to other units.""" - miles = 5 - assert distance_util.convert(miles, UnitOfLength.MILES, unit) == pytest.approx( - expected - ) - - -@pytest.mark.parametrize( - ("unit", "expected"), - [ - (UnitOfLength.KILOMETERS, 0.0045720000000000005), - (UnitOfLength.METERS, 4.572), - (UnitOfLength.CENTIMETERS, 457.2), - (UnitOfLength.MILLIMETERS, 4572), - (UnitOfLength.MILES, 0.002840908212), - (UnitOfLength.FEET, 15.00000048), - (UnitOfLength.INCHES, 180.0000972), - ], -) -def test_convert_from_yards(unit, expected) -> None: - """Test conversion from yards to other units.""" - yards = 5 - assert distance_util.convert(yards, UnitOfLength.YARDS, unit) == pytest.approx( - expected - ) - - -@pytest.mark.parametrize( - ("unit", "expected"), - [ - (UnitOfLength.KILOMETERS, 1.524), - (UnitOfLength.METERS, 1524), - (UnitOfLength.CENTIMETERS, 152400.0), - (UnitOfLength.MILLIMETERS, 1524000.0), - (UnitOfLength.MILES, 0.9469694040000001), - (UnitOfLength.YARDS, 1666.66667), - (UnitOfLength.INCHES, 60000.032400000004), - ], -) -def test_convert_from_feet(unit, expected) -> None: - """Test conversion from feet to other units.""" - feet = 5000 - assert distance_util.convert(feet, UnitOfLength.FEET, unit) == pytest.approx( - expected - ) - - -@pytest.mark.parametrize( - ("unit", "expected"), - [ - (UnitOfLength.KILOMETERS, 0.127), - (UnitOfLength.METERS, 127.0), - (UnitOfLength.CENTIMETERS, 12700.0), - (UnitOfLength.MILLIMETERS, 127000.0), - (UnitOfLength.MILES, 0.078914117), - (UnitOfLength.YARDS, 138.88889), - (UnitOfLength.FEET, 416.66668), - ], -) -def test_convert_from_inches(unit, expected) -> None: - """Test conversion from inches to other units.""" - inches = 5000 - assert distance_util.convert(inches, UnitOfLength.INCHES, unit) == pytest.approx( - expected - ) - - -@pytest.mark.parametrize( - ("unit", "expected"), - [ - (UnitOfLength.METERS, 5000), - (UnitOfLength.CENTIMETERS, 500000), - (UnitOfLength.MILLIMETERS, 5000000), - (UnitOfLength.MILES, 3.106855), - (UnitOfLength.YARDS, 5468.066), - (UnitOfLength.FEET, 16404.2), - (UnitOfLength.INCHES, 196850.5), - ], -) -def test_convert_from_kilometers(unit, expected) -> None: - """Test conversion from kilometers to other units.""" - km = 5 - assert distance_util.convert(km, UnitOfLength.KILOMETERS, unit) == pytest.approx( - expected - ) - - -@pytest.mark.parametrize( - ("unit", "expected"), - [ - (UnitOfLength.KILOMETERS, 5), - (UnitOfLength.CENTIMETERS, 500000), - (UnitOfLength.MILLIMETERS, 5000000), - (UnitOfLength.MILES, 3.106855), - (UnitOfLength.YARDS, 5468.066), - (UnitOfLength.FEET, 16404.2), - (UnitOfLength.INCHES, 196850.5), - ], -) -def test_convert_from_meters(unit, expected) -> None: - """Test conversion from meters to other units.""" - m = 5000 - assert distance_util.convert(m, UnitOfLength.METERS, unit) == pytest.approx( - expected - ) - - -@pytest.mark.parametrize( - ("unit", "expected"), - [ - (UnitOfLength.KILOMETERS, 5), - (UnitOfLength.METERS, 5000), - (UnitOfLength.MILLIMETERS, 5000000), - (UnitOfLength.MILES, 3.106855), - (UnitOfLength.YARDS, 5468.066), - (UnitOfLength.FEET, 16404.2), - (UnitOfLength.INCHES, 196850.5), - ], -) -def test_convert_from_centimeters(unit, expected) -> None: - """Test conversion from centimeters to other units.""" - cm = 500000 - assert distance_util.convert(cm, UnitOfLength.CENTIMETERS, unit) == pytest.approx( - expected - ) - - -@pytest.mark.parametrize( - ("unit", "expected"), - [ - (UnitOfLength.KILOMETERS, 5), - (UnitOfLength.METERS, 5000), - (UnitOfLength.CENTIMETERS, 500000), - (UnitOfLength.MILES, 3.106855), - (UnitOfLength.YARDS, 5468.066), - (UnitOfLength.FEET, 16404.2), - (UnitOfLength.INCHES, 196850.5), - ], -) -def test_convert_from_millimeters(unit, expected) -> None: - """Test conversion from millimeters to other units.""" - mm = 5000000 - assert distance_util.convert(mm, UnitOfLength.MILLIMETERS, unit) == pytest.approx( - expected - )