Commit Graph

516 Commits (2169b70874c06c9ba3fe59e1d40690faf4634470)

Author SHA1 Message Date
J. Nick Koston 8d0e54d776
Use the orjson equivalent default encoder when save_json is passed the default encoder () 2022-07-04 08:41:23 -05:00
Erik Montnemery d3f4108a91
Support knots and ft/s in weather wind speed () 2022-06-29 16:34:41 +02:00
Erik Montnemery c186a73e57
Tweak speed util () 2022-06-29 12:01:09 +02:00
[pʲɵs] 91a119917d
List more private and link-local IP networks ()
List more private and link-local IP networks

The IPv6 link-local network is especially important as without it
local accounts don't work on IPv6-capable networks with no IPv6 DHCP
server.
2022-06-27 22:00:44 -07:00
J. Nick Koston 1866a1e925
Handle non-str keys when storing json data () 2022-06-24 09:59:01 -05:00
J. Nick Koston 2f78faa718
Make aiohttp mockers aware of the json loads kwarg () 2022-06-24 08:44:35 +02:00
J. Nick Koston fd9fdc6283
Fix error reporting with unserializable json () 2022-06-23 20:32:45 +02:00
J. Nick Koston 8b067e83f7
Initial orjson support take 3 ()
* Initial orjson support take 2

Still need to work out problem building wheels

--

Redux of  /  Now possible since the following is solved:
 (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
2022-06-22 21:59:51 +02:00
J. Nick Koston 034c0c0593
Improve YAML Dump times with C Dumper () 2022-06-13 13:14:30 -07:00
J. Nick Koston dca4d3cd61
Significantly improve yaml load times when the C loader is available () 2022-06-13 08:44:46 -10:00
J. Nick Koston c365454afb
Revert "Initial orjson support ()" ()
This was causing the wheels to fail to build. We need
to workout why when we don't have release pressure

This reverts commit d9d22a9556.
2022-05-31 13:51:55 -07:00
J. Nick Koston d9d22a9556
Initial orjson support () 2022-05-31 12:18:11 -07:00
Marc Mueller 3c246b7800
Update mypy to 0.960 () 2022-05-25 11:42:14 -07:00
Kevin Stillhammer 90e5d69184
Add template as_timedelta () 2022-05-23 19:32:22 +02:00
J. Nick Koston 4e9bc9eaff
Small cleanups to find_next_time_expression and addition of tests () 2022-05-14 12:13:32 -07:00
J. Nick Koston ebce5660e3
Sync event timed_fired and the context ulid time () 2022-05-14 12:12:08 -07:00
J. Nick Koston 222baa53dd
Make database access in the eventloop raise an exception () 2022-05-09 15:22:08 -05:00
J. Nick Koston 2a9f043039
Use ULID short format for context ids () 2022-05-01 21:44:54 -07:00
Marc Mueller 9a3908d21d
Improve typing [util.logging] () 2022-04-27 22:26:56 +02:00
Marc Mueller 02ddfd513a
Improve typing [util.location] () 2022-04-27 17:20:56 +02:00
Marc Mueller 97af164858
Prepare for upcoming mypy update () 2022-04-26 07:41:52 -07:00
J. Nick Koston d03760d0bb
Switch to using ULIDs for context_ids () 2022-04-18 22:45:41 -07:00
Erik Montnemery 91f6e58e9a
Allow customizing unit for temperature and pressure sensors ()
* Allow customizing unit for temperature and pressure sensors

* pylint

* Adjust google_wifi tests

* Address review comments and add tests

* Improve rounding when scaling

* Tweak rounding

* Further tweak rounding

* Allow setting entity options with config/entity_registry/update

* Address review comments

* Tweak tests

* Load custom unit when sensor is added

* Override async_internal_added_to_hass

* Adjust tests after rebase

* Apply suggestions from code review

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>

* Address review comments

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2022-03-30 15:43:04 +02:00
Paulus Schoutsen 929df2bc29
Improve error handling process_play_media_url () 2022-03-20 20:25:15 -07:00
Marc Mueller be7ef6115c
Make TypeVars private (1) () 2022-03-17 18:52:38 +01:00
Joakim Sørensen 9a6f5bbc04
Update whoami URL () 2022-03-07 11:11:25 +01:00
Marc Mueller ec980a574b
Improve typing [util.decorator] () 2022-02-23 20:58:42 +01:00
Marc Mueller 30e2411761
Add type ignore error codes [last ones] () 2022-02-18 18:15:57 +01:00
Marc Mueller 0188e8b319
Add type ignore error codes [util] () 2022-02-18 11:30:59 +01:00
Marc Mueller cdd5d22b38
Remove ThreadPoolExecutor `shutdown` backport () 2022-02-17 10:39:33 -06:00
Erik Montnemery 2538af4b06
Add workaround for python bug to HAQueueHandler () 2022-02-15 10:49:14 +01:00
Marc Mueller 80394e3de6
Improve `util.async_` typing () 2022-02-14 15:41:09 +01:00
J. Nick Koston ffcac67d99
Add is_ipv4_address and is_ipv6_address utils () 2022-02-13 15:23:11 -06:00
J. Nick Koston 676edb610f
Add coverage for color_rgbww_to_rgb, fix divzero case () 2022-02-05 10:59:32 -06:00
Franck Nijhof fa09cf663e
Update black to 22.1.0 () 2022-02-05 14:19:37 +01:00
Paulus Schoutsen 5da923c341
Protect state.as_dict from mutation () 2022-02-04 14:45:25 -08:00
J. Nick Koston 26ff6d2aa0
Fix warm/cold reversal in rgbww_to_color_temperature () 2022-02-04 11:36:30 -08:00
Erik Montnemery 63680f0b36
Make util.async_.protect_loop name names () 2022-02-03 14:06:40 +01:00
Erik Montnemery 5a34feb7de
Don't warn on time.sleep injected by the debugger () 2022-02-02 08:58:14 -08:00
Marc Mueller d8f167bbac
Remove `backports.zoneinfo` dependency () 2022-01-27 09:59:27 -08:00
Erik Montnemery 2caad1a474
Add support for converting to and from mmHg () 2022-01-24 22:57:56 +01:00
Michael 2f0059fa8b
Revert fix MultiDict typing with multidict-6.0.0 () ()
* revert 

* pin down multidict to < 6.0.0
2022-01-23 23:22:16 +01:00
J. Nick Koston 5d753abd79
Fix MultiDict typing with multidict-6.0.0 () 2022-01-22 20:49:48 -08:00
Erik Montnemery b3421cf727
Remove Windows workarounds () 2022-01-13 20:41:11 +01:00
Marc Mueller 12757a8cd2
Update typing - collections.abc (1) ()
* Update typing - collections.abc (1)

* Additional typing updates
2022-01-12 07:56:35 +01:00
Marc Mueller 240c9979c7
Move `disallow-any-generics` to mypy.ini () 2022-01-11 13:33:25 -08:00
Matthias Alphart dc58bc375a
Warn on`time.sleep` in event loop ()
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-01-11 17:55:24 +01:00
Marc Mueller f3bc9fc740
Update Python version used for pylint () 2022-01-11 13:41:57 +01:00
Paulus Schoutsen 1ea3a17d89
Allow sending webhooks via WS connection () 2022-01-07 10:41:36 -08:00
Marc Mueller 3e51659ba7
Remove some unused TypeVars () 2022-01-04 15:38:34 +01:00