* Add circular mean statistics
* fixes
* Add has_circular_mean and fix tests
* Fix mypy
* Rename to MEASUREMENT_ANGLE
* Fix kitchen_sink tests
* Fix sensor tests
* for testing only
* Revert ws command change
* Apply suggestions
* test only
* add custom handling for postgres
* fix recursion limit
* Check if column is already available
* Set default false and not nullable for has_circular_mean
* Proper fix to be backwards compatible
* Fix value is None
* Align with schema
* Remove has_circular_mean from test schemas as it's not required anymore
* fix wrong column type
* Use correct variable to reduce stats
* Add guard that the uom is matching a valid one from the state class
* Add some tests
* Fix tests again
* Use mean_type in StatisticsMetato difference between different mean type algorithms
* Fix leftovers
* Fix kitchen_sink tests
* Fix postgres
* Add circular mean test
* Add mean_type_changed stats issue
* Align the attributes with unit_changed
* Fix mean_type_change stats issue
* Add missing sensor recorder tests
* Add test_statistic_during_period_circular_mean
* Add mean_weight
* Add test_statistic_during_period_hole_circular_mean
* Use seperate migration step to null has_mean
* Typo ARITHMETIC
* Implement requested changes
* Implement requested changes
* Split into #141444
* Add StatisticMeanType.NONE and forbid that mean_type can be None
* Fix mean_type
* Implement requested changes
* Small leftover of latest StatisticMeanType changes
* Improve recorder history queries
* Remove some comments
* Update StatesManager._oldest_ts when adding pending state
* Update after review
* Improve tests
* Improve post-purge logic
* Avoid calling dt_util.utc_to_timestamp in new code
---------
Co-authored-by: J. Nick Koston <nick@koston.org>
* Close database connection before stopping the executor
related issue #117004
* Close database connection before waiting for database executor to finish
related issue #117004
* fix test
* fix
* drop unused arg
* Revert "drop unused arg"
This reverts commit 8a9fe6a24a614d7fda2058248f653fa400a5a252.
* docstring
* comment
* Refactor recorder data migration
* Fix stale docstrings
* Don't store a session object in BaseRunTimeMigration instances
* Simplify logic in EntityIDMigration.migration_done
* Fix tests
* Narrow sqlite database corruption check to ensure disk image is malformed
The database corruption check would also replace the database when it
locked externally instead of only when its malformed.
This was discovered in https://github.com/home-assistant/core/issues/121909#issuecomment-2227409124
when a user did a manual index creation while HA was online
* tweak
* tweak
* fix
* fix
* Ensure states table rebuild still happens if the event_id index was removed
If ix_states_event_id was removed by the foreign key still
exists, the states table would not get rebuilt. This should
not happen under normal circumstances and seems to only be
possible if the index was removed manually or Home
Assistant was restarted forcefully in the middle
of a previous migration from years ago.
* cover
* fix tests
* mysql wont allow at that point but thats ok as long as its gone at the end
* Improve recorder and worker thread matching in RecorderPool
Previously we would look at the name of the threads. This
was a brittle if because other integrations may name their
thread Recorder or DbWorker. Instead we now use explict thread
ids which ensures there will never be a conflict
* fix
* fixes
* fixes