mirror of
https://github.com/home-assistant/core
synced 2024-08-06 09:34:49 +02:00
8b067e83f7
* Initial orjson support take 2 Still need to work out problem building wheels -- Redux of #72754 / #32153 Now possible since the following is solved: ijl/orjson#220 (comment) This implements orjson where we use our default encoder. This does not implement orjson where `ExtendedJSONEncoder` is used as these areas tend to be called far less frequently. If its desired, this could be done in a followup, but it seemed like a case of diminishing returns (except maybe for large diagnostics files, or traces, but those are not expected to be downloaded frequently). Areas where this makes a perceptible difference: - Anything that subscribes to entities (Initial subscribe_entities payload) - Initial download of registries on first connection / restore - History queries - Saving states to the database - Large logbook queries - Anything that subscribes to events (appdaemon) Cavets: orjson supports serializing dataclasses natively (and much faster) which eliminates the need to implement `as_dict` in many places when the data is already in a dataclass. This works well as long as all the data in the dataclass can also be serialized. I audited all places where we have an `as_dict` for a dataclass and found only backups needs to be adjusted (support for `Path` needed to be added for backups). I was a little bit worried about `SensorExtraStoredData` with `Decimal` but it all seems to work out from since it converts it before it gets to the json encoding cc @dgomes If it turns out to be a problem we can disable this with option |= [orjson.OPT_PASSTHROUGH_DATACLASS](https://github.com/ijl/orjson#opt_passthrough_dataclass) and it will fallback to `as_dict` Its quite impressive for history queries <img width="1271" alt="Screen_Shot_2022-05-30_at_23_46_30" src="https://user-images.githubusercontent.com/663432/171145699-661ad9db-d91d-4b2d-9c1a-9d7866c03a73.png"> * use for views as well * handle UnicodeEncodeError * tweak * DRY * DRY * not needed * fix tests * Update tests/components/http/test_view.py * Update tests/components/http/test_view.py * black * templates |
||
---|---|---|
.devcontainer | ||
.github | ||
.vscode | ||
docs | ||
homeassistant | ||
machine | ||
pylint/plugins | ||
rootfs | ||
script | ||
tests | ||
.core_files.yaml | ||
.coveragerc | ||
.dockerignore | ||
.gitattributes | ||
.gitignore | ||
.hadolint.yaml | ||
.ignore | ||
.pre-commit-config.yaml | ||
.prettierignore | ||
.readthedocs.yml | ||
.strict-typing | ||
.yamllint | ||
build.yaml | ||
CLA.md | ||
CODE_OF_CONDUCT.md | ||
codecov.yml | ||
CODEOWNERS | ||
CONTRIBUTING.md | ||
Dockerfile | ||
Dockerfile.dev | ||
LICENSE.md | ||
MANIFEST.in | ||
mypy.ini | ||
pyproject.toml | ||
README.rst | ||
requirements_all.txt | ||
requirements_docs.txt | ||
requirements_test_all.txt | ||
requirements_test_pre_commit.txt | ||
requirements_test.txt | ||
requirements.txt | ||
setup.cfg | ||
tox.ini |
Home Assistant |Chat Status| ================================================================================= Open source home automation that puts local control and privacy first. Powered by a worldwide community of tinkerers and DIY enthusiasts. Perfect to run on a Raspberry Pi or a local server. Check out `home-assistant.io <https://home-assistant.io>`__ for `a demo <https://home-assistant.io/demo/>`__, `installation instructions <https://home-assistant.io/getting-started/>`__, `tutorials <https://home-assistant.io/getting-started/automation/>`__ and `documentation <https://home-assistant.io/docs/>`__. |screenshot-states| Featured integrations --------------------- |screenshot-components| The system is built using a modular approach so support for other devices or actions can be implemented easily. See also the `section on architecture <https://developers.home-assistant.io/docs/architecture_index/>`__ and the `section on creating your own components <https://developers.home-assistant.io/docs/creating_component_index/>`__. If you run into issues while using Home Assistant or during development of a component, check the `Home Assistant help section <https://home-assistant.io/help/>`__ of our website for further help and information. .. |Chat Status| image:: https://img.shields.io/discord/330944238910963714.svg :target: https://discord.gg/c5DvZ4e .. |screenshot-states| image:: https://raw.githubusercontent.com/home-assistant/core/master/docs/screenshots.png :target: https://home-assistant.io/demo/ .. |screenshot-components| image:: https://raw.githubusercontent.com/home-assistant/core/dev/docs/screenshot-components.png :target: https://home-assistant.io/integrations/