* fixed race condition and added test case for updates before db load
* removed duplicated code
* improved comments, removed superfluous errors / assertions
* allow both possible outcomes of race condition
* use approx for float comparison
* Update tests/components/statistics/test_sensor.py
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* force new state before database load in race condition test
---------
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* introduce preserve last value option
* improve comments
* add unit test
* skip scheduling purge on a preserved value
* do not schedule sensor update if preserving last value
* fix unit test to use new mock time pattern
pattern introduced in https://github.com/home-assistant/core/pull/93499
* rename preserve_last_val to keep_last_sample
* add keep_last_sample config validation
* Add circular mean
Add support for circular mean for sensors in units of degrees, e.g. direction data.
* Update test_sensor.py
* Update sensor.py
* Remove whitespace
* Revert to degC
* Fix: shift atan2 output to positive degrees
* Add new dedicated test
* Simplify test
* Decrease event loop latency by binding time.monotonic to loop.time directly
This is a small improvment to decrease event loop latency. While the goal is
is to reduce Bluetooth connection time latency, everything using asyncio
is a bit more responsive as a result.
* relo per comments
* fix too fast by adding resolution, ensure monotonic time is patchable by freezegun
* fix test that freezes time too late and has a race loop
* Improve config checking, add device_class timestamp
* Move additional characteristics into separate branch
* Move deprecation warning for sampling_size default to other branch
* Add supports list description
* Implement optional manually defined uniqueid
* Fix test case via mocked environment
* Refactor testcases
* Fix missing awaits
* Revert order changes, reduce use of block command
* Tidy up mocked time testcases
* Add additional statistics characterics, improve rounding
* Improve name of age_usage_ratio
* Replace difference by three relevant distances
* Refactor attributes, remove stats, add metadata
* Fix binary sensor testcase
* Fix sensor defaults testcase
* Fix and enhance all testcases
* Remove age coverage from attr when not configured
* Refactor so only the relevant characteristic value is calculated
* Rename unclear characteristics, add timebound average
* Fix coverage warning
* Remove explicit functions dict
* Make statistics state characteristic selectable
* Move computation in helper function
* Add relevant config elements for clarity
* Rename variables for better readability
* Avoid reserved prefix ATTR_ for stats
* Fix NoneType base_unit error
* Add testcases for statistics characteristic
* Add testcases for state_class, unitless, and characteristics
* Add testcase coverage for no unit with binary
* Replace error catching by an exception
* Attend to review comments
* Fix statistics precision error when configured 0, fix#42547
* Add tests for statistics precision
* Apply precision=0 logic to float numbers only
* Implement contextlib way of exception handling