Drop minus sign on negative zero (#86939)

* Drop minus sign on negative zero

* Add tests
This commit is contained in:
Erik Montnemery 2023-01-30 14:31:27 +01:00 committed by GitHub
parent 5f57648578
commit d4489faa68
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 26 additions and 0 deletions

View file

@ -9,6 +9,7 @@ from datetime import date, datetime, timedelta, timezone
from decimal import Decimal, InvalidOperation as DecimalInvalidOperation
import logging
from math import ceil, floor, log10
import re
from typing import Any, Final, cast, final
from homeassistant.config_entries import ConfigEntry
@ -84,6 +85,8 @@ _LOGGER: Final = logging.getLogger(__name__)
ENTITY_ID_FORMAT: Final = DOMAIN + ".{}"
NEGATIVE_ZERO_PATTERN = re.compile(r"^-(0\.?0*)$")
SCAN_INTERVAL: Final = timedelta(seconds=30)
__all__ = [
@ -647,8 +650,14 @@ class SensorEntity(Entity):
unit_of_measurement,
)
value = f"{converted_numerical_value:.{precision}f}"
# This can be replaced with adding the z option when we drop support for
# Python 3.10
value = NEGATIVE_ZERO_PATTERN.sub(r"\1", value)
elif precision is not None:
value = f"{numerical_value:.{precision}f}"
# This can be replaced with adding the z option when we drop support for
# Python 3.10
value = NEGATIVE_ZERO_PATTERN.sub(r"\1", value)
# Validate unit of measurement used for sensors with a device class
if (

View file

@ -537,6 +537,15 @@ async def test_custom_unit(
"29.921", # Native precision is 3
"1013.24", # One digit of precision removed when converting
),
(
SensorDeviceClass.ATMOSPHERIC_PRESSURE,
UnitOfPressure.INHG,
UnitOfPressure.HPA,
-0.0001,
3,
"0.000", # Native precision is 3
"0.00", # One digit of precision removed when converting
),
],
)
async def test_native_precision_scaling(
@ -594,6 +603,14 @@ async def test_native_precision_scaling(
"1000.000",
"1000.0000",
),
(
SensorDeviceClass.DISTANCE,
UnitOfLength.KILOMETERS,
1,
-0.04,
"-0.040",
"0.0", # Make sure minus is dropped
),
],
)
async def test_custom_precision_native_precision(