mirror of
https://github.com/home-assistant/core.git
synced 2025-04-24 09:17:53 +00:00
Raise issue for deprecated imperial unit system (#130979)
This commit is contained in:
parent
8b579d83ce
commit
8cde404997
@ -10,6 +10,10 @@
|
||||
"title": "The country has not been configured",
|
||||
"description": "No country has been configured, please update the configuration by clicking on the \"learn more\" button below."
|
||||
},
|
||||
"imperial_unit_system": {
|
||||
"title": "The imperial unit system is deprecated",
|
||||
"description": "The imperial unit system is deprecated and your system is currently using us customary. Please update your configuration to use the us customary unit system and reload the core configuration to fix this issue."
|
||||
},
|
||||
"deprecated_yaml": {
|
||||
"title": "The {integration_title} YAML configuration is being removed",
|
||||
"description": "Configuring {integration_title} using YAML is being removed.\n\nYour existing YAML configuration has been imported into the UI automatically.\n\nRemove the `{domain}` configuration from your configuration.yaml file and restart Home Assistant to fix this issue."
|
||||
|
@ -68,11 +68,11 @@ from .util.hass_dict import HassKey
|
||||
from .util.package import is_docker_env
|
||||
from .util.unit_system import (
|
||||
_CONF_UNIT_SYSTEM_IMPERIAL,
|
||||
_CONF_UNIT_SYSTEM_METRIC,
|
||||
_CONF_UNIT_SYSTEM_US_CUSTOMARY,
|
||||
METRIC_SYSTEM,
|
||||
UnitSystem,
|
||||
get_unit_system,
|
||||
validate_unit_system,
|
||||
)
|
||||
|
||||
# Typing imports that create a circular dependency
|
||||
@ -188,6 +188,26 @@ _CUSTOMIZE_CONFIG_SCHEMA = vol.Schema(
|
||||
)
|
||||
|
||||
|
||||
def _raise_issue_if_imperial_unit_system(
|
||||
hass: HomeAssistant, config: dict[str, Any]
|
||||
) -> dict[str, Any]:
|
||||
if config.get(CONF_UNIT_SYSTEM) == _CONF_UNIT_SYSTEM_IMPERIAL:
|
||||
ir.async_create_issue(
|
||||
hass,
|
||||
HOMEASSISTANT_DOMAIN,
|
||||
"imperial_unit_system",
|
||||
is_fixable=False,
|
||||
learn_more_url="homeassistant://config/general",
|
||||
severity=ir.IssueSeverity.WARNING,
|
||||
translation_key="imperial_unit_system",
|
||||
)
|
||||
config[CONF_UNIT_SYSTEM] = _CONF_UNIT_SYSTEM_US_CUSTOMARY
|
||||
else:
|
||||
ir.async_delete_issue(hass, HOMEASSISTANT_DOMAIN, "imperial_unit_system")
|
||||
|
||||
return config
|
||||
|
||||
|
||||
def _raise_issue_if_historic_currency(hass: HomeAssistant, currency: str) -> None:
|
||||
if currency not in HISTORIC_CURRENCIES:
|
||||
ir.async_delete_issue(hass, HOMEASSISTANT_DOMAIN, "historic_currency")
|
||||
@ -249,7 +269,11 @@ CORE_CONFIG_SCHEMA = vol.All(
|
||||
CONF_ELEVATION: vol.Coerce(int),
|
||||
CONF_RADIUS: cv.positive_int,
|
||||
vol.Remove(CONF_TEMPERATURE_UNIT): cv.temperature_unit,
|
||||
CONF_UNIT_SYSTEM: validate_unit_system,
|
||||
CONF_UNIT_SYSTEM: vol.Any(
|
||||
_CONF_UNIT_SYSTEM_METRIC,
|
||||
_CONF_UNIT_SYSTEM_US_CUSTOMARY,
|
||||
_CONF_UNIT_SYSTEM_IMPERIAL,
|
||||
),
|
||||
CONF_TIME_ZONE: cv.time_zone,
|
||||
vol.Optional(CONF_INTERNAL_URL): cv.url,
|
||||
vol.Optional(CONF_EXTERNAL_URL): cv.url,
|
||||
@ -333,6 +357,9 @@ async def async_process_ha_core_config(hass: HomeAssistant, config: dict) -> Non
|
||||
# so we need to run it in an executor job.
|
||||
config = await hass.async_add_executor_job(CORE_CONFIG_SCHEMA, config)
|
||||
|
||||
# Check if we need to raise an issue for imperial unit system
|
||||
config = _raise_issue_if_imperial_unit_system(hass, config)
|
||||
|
||||
# Only load auth during startup.
|
||||
if not hasattr(hass, "auth"):
|
||||
if (auth_conf := config.get(CONF_AUTH_PROVIDERS)) is None:
|
||||
|
@ -233,7 +233,6 @@ def _deprecated_unit_system(value: str) -> str:
|
||||
"""Convert deprecated unit system."""
|
||||
|
||||
if value == _CONF_UNIT_SYSTEM_IMPERIAL:
|
||||
# need to add warning in 2023.1
|
||||
return _CONF_UNIT_SYSTEM_US_CUSTOMARY
|
||||
return value
|
||||
|
||||
|
@ -1080,3 +1080,27 @@ async def test_set_time_zone_deprecated(hass: HomeAssistant) -> None:
|
||||
),
|
||||
):
|
||||
await hass.config.set_time_zone("America/New_York")
|
||||
|
||||
|
||||
async def test_core_config_schema_imperial_unit(
|
||||
hass: HomeAssistant, issue_registry: ir.IssueRegistry
|
||||
) -> None:
|
||||
"""Test core config schema."""
|
||||
await async_process_ha_core_config(
|
||||
hass,
|
||||
{
|
||||
"latitude": 60,
|
||||
"longitude": 50,
|
||||
"elevation": 25,
|
||||
"name": "Home",
|
||||
"unit_system": "imperial",
|
||||
"time_zone": "America/New_York",
|
||||
"currency": "USD",
|
||||
"country": "US",
|
||||
"language": "en",
|
||||
"radius": 150,
|
||||
},
|
||||
)
|
||||
|
||||
issue = issue_registry.async_get_issue("homeassistant", "imperial_unit_system")
|
||||
assert issue
|
||||
|
@ -24,6 +24,8 @@ from homeassistant.const import (
|
||||
UnitOfVolume,
|
||||
UnitOfVolumetricFlux,
|
||||
)
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.core_config import async_process_ha_core_config
|
||||
from homeassistant.exceptions import HomeAssistantError
|
||||
from homeassistant.util.unit_system import ( # pylint: disable=hass-deprecated-import
|
||||
_CONF_UNIT_SYSTEM_IMPERIAL,
|
||||
@ -877,3 +879,35 @@ def test_imperial_converted_units(device_class: SensorDeviceClass) -> None:
|
||||
assert (device_class, unit) not in unit_system._conversions
|
||||
continue
|
||||
assert (device_class, unit) in unit_system._conversions
|
||||
|
||||
|
||||
async def test_imperial_deprecated_log_warning(
|
||||
hass: HomeAssistant, caplog: pytest.LogCaptureFixture
|
||||
) -> None:
|
||||
"""Test deprecated imperial unit system logs warning."""
|
||||
await async_process_ha_core_config(
|
||||
hass,
|
||||
{
|
||||
"latitude": 60,
|
||||
"longitude": 50,
|
||||
"elevation": 25,
|
||||
"name": "Home",
|
||||
"unit_system": "imperial",
|
||||
"time_zone": "America/New_York",
|
||||
"currency": "USD",
|
||||
"country": "US",
|
||||
"language": "en",
|
||||
"radius": 150,
|
||||
},
|
||||
)
|
||||
|
||||
assert hass.config.latitude == 60
|
||||
assert hass.config.longitude == 50
|
||||
assert hass.config.elevation == 25
|
||||
assert hass.config.location_name == "Home"
|
||||
assert hass.config.units is US_CUSTOMARY_SYSTEM
|
||||
assert hass.config.time_zone == "America/New_York"
|
||||
assert hass.config.currency == "USD"
|
||||
assert hass.config.country == "US"
|
||||
assert hass.config.language == "en"
|
||||
assert hass.config.radius == 150
|
||||
|
Loading…
x
Reference in New Issue
Block a user