J. Nick Koston
03eea7bd3f
Avoid subprocess memory copy when c library supports posix_spawn ( #87958 )
...
* use posix spawn on alpine
* Avoid subprocess memory copy when c library supports posix_spawn
By default python 3.10 will use the fork() which has to
copy all the memory of the parent process (in our case
this can be huge since Home Assistant core can use
hundreds of megabytes of RAM). By using posix_spawn
this is avoided.
In python 3.11 vfork will also be available
https://github.com/python/cpython/issues/80004#issuecomment-1093810689
https://github.com/python/cpython/pull/11671 but we won't
always be able to use it and posix_spawn is considered safer
https://bugzilla.kernel.org/show_bug.cgi?id=215813#c14
The subprocess library doesn't know about musl though
even though it supports posix_spawn https://git.musl-libc.org/cgit/musl/log/src/process/posix_spawn.c
so we have to teach it since it only has checks for glibc
1b736838e6/Lib/subprocess.py (L745)
The constant is documented as being able to be flipped here:
https://docs.python.org/3/library/subprocess.html#disabling-use-of-vfork-or-posix-spawn
* Avoid subprocess memory copy when c library supports posix_spawn
By default python 3.10 will use the fork() which has to
copy memory of the parent process (in our case
this can be huge since Home Assistant core can use
hundreds of megabytes of RAM). By using posix_spawn
this is avoided and subprocess creation does not
get discernibly slow the larger the Home Assistant
python process grows.
In python 3.11 vfork will also be available
https://github.com/python/cpython/issues/80004#issuecomment-1093810689
https://github.com/python/cpython/pull/11671 but we won't
always be able to use it and posix_spawn is considered safer
https://bugzilla.kernel.org/show_bug.cgi?id=215813#c14
The subprocess library doesn't know about musl though
even though it supports posix_spawn https://git.musl-libc.org/cgit/musl/log/src/process/posix_spawn.c
so we have to teach it since it only has checks for glibc
1b736838e6/Lib/subprocess.py (L745)
The constant is documented as being able to be flipped here:
https://docs.python.org/3/library/subprocess.html#disabling-use-of-vfork-or-posix-spawn
* missed some
* adjust more tests
* coverage
2023-02-13 09:02:51 -05:00
Erik Montnemery
45ac8c515e
Update unit system unit conversions ( #87632 )
...
* Update unit system unit conversions
* Tweak tests
2023-02-08 10:52:54 +01:00
epenet
c98b4e3204
Add typing to tests with single hass argument (2) ( #87675 )
...
* Add typing to tests with single hass argument (2)
* a few more
2023-02-08 08:51:43 +01:00
epenet
4142f0d15d
Add return type to tests without arguments ( #87613 )
...
* Add return type to tests without arguments
* Black
* Cancel fixture amends
2023-02-07 14:20:06 +01:00
epenet
aa00114c2f
Add return type to async tests without arguments ( #87612 )
2023-02-07 10:26:56 +01:00
Franck Nijhof
ca1a12898c
Enable Ruff D212 ( #87347 )
2023-02-03 23:08:48 +01:00
epenet
810367b757
Fix `can not` typo ( #87254 )
2023-02-03 11:37:16 +01:00
epenet
1225c5e97d
Add enum util ( #87082 )
...
* Add enum helper
* docstring
* Move to util
* Add use case
2023-02-01 15:00:27 +01:00
Franck Nijhof
c56832bb2c
Enable Ruff SIM300 ( #86793 )
2023-01-30 11:03:23 +01:00
Franck Nijhof
89c0b27b42
Migrates tests to use UnitOfPressure enum ( #86785 )
2023-01-27 12:13:27 +01:00
epenet
561fc2d771
Remove deprecated unit system properties ( #86643 )
...
* Remove deprecated unit system properties
* Fix tests
2023-01-27 12:09:26 +01:00
Franck Nijhof
49148421cb
Migrates tests to use UnitOfSpeed enum ( #86777 )
2023-01-27 10:58:55 +01:00
Franck Nijhof
e50a531cd9
Code styling tweaks to the tests - Part 2 ( #86662 )
...
Co-authored-by: jjlawren <jjlawren@users.noreply.github.com>
2023-01-26 01:23:53 +01:00
SgtBatten
0ccab19d2c
Add Mega Joule as valid unit of energy ( #86055 )
...
* Add Mega joule
* Reorder valid energy types
Alphabetical
* Add Mega Joule
* Add Mega Joule as valid energy unit
* Add Mega Joule
* Add Mega Joule as a Unit of Measurement to Energy
* Update tests
* Update tests
* Update number docstring
Co-authored-by: Roving Ronin <108674933+Roving-Ronin@users.noreply.github.com>
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2023-01-25 14:13:42 +01:00
epenet
64535175b1
Add missing conversion tests in unit conversion ( #86434 )
2023-01-23 10:11:11 +01:00
epenet
30bf0634fe
Add per-file-ignore to pylint ( #86289 )
2023-01-22 17:26:24 +01:00
epenet
e1fc494b54
Add missing ratio test cases in unit conversion ( #86340 )
...
* Add missing ratio test cases in unit conversion
* Improve ratio test to check inverse
2023-01-22 16:39:45 +01:00
epenet
e8d19e7c62
Ensure all unit converters are tested ( #86271 )
...
* Ensure all unit converters are tested
* Adjust
* Simplify
* Simplify
* docstring
2023-01-21 13:11:13 +01:00
Erik Montnemery
f93bbd55ba
Improve logging shutdown ( #85812 )
...
* Improve logging shutdown
* Update test
2023-01-17 20:06:25 +01:00
SukramJ
005bc8994d
Add mA to SensorDeviceClass.CURRENT units ( #84492 )
...
fixes undefined
2022-12-30 13:55:14 +01:00
epenet
f68a7636c5
Cleanup pytest.approx in unit conversion tests ( #84810 )
2022-12-30 10:16:20 +01:00
epenet
6261994fcf
Enable unit conversion for DATA_SIZE ( #84699 )
2022-12-29 09:58:15 +01:00
epenet
46e02ebaff
Enable unit conversion for DATA_RATE ( #84698 )
2022-12-28 21:49:00 +01:00
epenet
f4c13645d2
Add support for CCF volume unit ( #84029 )
2022-12-19 14:57:04 +01:00
epenet
4a848e8222
Add stones to mass units ( #83933 )
2022-12-13 17:35:14 +01:00
epenet
583b4aef07
Enable automatic conversion for pressures ( #83525 )
...
* Enable automatic conversion between bar and psi
* Fix tests
* Fix mazda tests
* Fix oncue tests
* Adjust US pressures
* Adjust metric pressures
* Adjust tests
* Adjust tests
2022-12-12 12:42:35 +01:00
epenet
b172abaeeb
Add new atmospheric pressure device class ( #83455 )
...
* Add new atmospheric pressure device class
* Translations
* Automatic conversion
* Convert all pressure units
2022-12-09 08:02:53 +01:00
Joakim Plate
c576a68d33
Upgrade pytest-aiohttp ( #82475 )
...
* Upgrade pytest-aiohttp
* Make sure executors, tasks and timers are closed
Some test will trigger warnings on garbage collect, these warnings
spills over into next test.
Some test trigger tasks that raise errors on shutdown, these spill
over into next test.
This is to mimic older pytest-aiohttp and it's behaviour on test
cleanup.
Discussions on similar changes for pytest-aiohttp are here:
https://github.com/pytest-dev/pytest-asyncio/pull/309
* Replace loop with event_loop
* Make sure time is frozen for tests
* Make sure the ConditionType is not async
/home-assistant/homeassistant/helpers/template.py:2082: RuntimeWarning: coroutine 'AsyncMockMixin._execute_mock_call' was never awaited
def wrapper(*args, **kwargs):
Enable tracemalloc to get traceback where the object was allocated.
See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info.
* Increase litejet press tests with a factor 10
The times are simulated anyway, and we can't stop the normal
event from occuring.
* Use async handlers for aiohttp
tests/components/motioneye/test_camera.py::test_get_still_image_from_camera
tests/components/motioneye/test_camera.py::test_get_still_image_from_camera
tests/components/motioneye/test_camera.py::test_get_stream_from_camera
tests/components/motioneye/test_camera.py::test_get_stream_from_camera
tests/components/motioneye/test_camera.py::test_camera_option_stream_url_template
tests/components/motioneye/test_camera.py::test_camera_option_stream_url_template
/Users/joakim/src/hass/home-assistant/venv/lib/python3.9/site-packages/aiohttp/web_urldispatcher.py:189: DeprecationWarning: Bare functions are deprecated, use async ones
warnings.warn(
* Switch to freezegun in modbus tests
The tests allowed clock to tick in between steps
* Make sure skybell object are fully mocked
Old tests would trigger attempts to post to could services:
```
DEBUG:aioskybell:HTTP post https://cloud.myskybell.com/api/v3/login/ Request with headers: {'content-type': 'application/json', 'accept': '*/*', 'x-skybell-app-id': 'd2b542c7-a7e4-4e1e-b77d-2b76911c7c46', 'x-skybell-client-id': '1f36a3c0-6dee-4997-a6db-4e1c67338e57'}
```
* Fix sorting that broke after rebase
2022-11-29 22:36:36 +01:00
J. Nick Koston
1589c06203
Significantly reduce clock_gettime syscalls on platforms with broken vdso ( #81257 )
2022-10-31 09:35:08 -04:00
epenet
2a2e097e17
Use unit enums in unit utilities ( #81030 )
2022-10-26 20:47:17 +02:00
epenet
842cb18d39
Migrate energy units to an enum ( #80998 )
2022-10-26 13:56:51 +02:00
Erik Montnemery
352976fd1d
Add rules for converting volumes ( #80951 )
...
* Add rules for converting volumes
* Use SensorDeviceClass in new tests
* Tweak tests
* Update flo tests
* Update sensor tests
2022-10-26 10:29:33 +02:00
epenet
870a5b6f37
Adjust formatting in unit system tests ( #80958 )
...
* Adjust black formatting in unit system tests
* Split tests
2022-10-25 17:36:21 +02:00
epenet
7838bb3ebe
Replace new PRECIPITATION_INTENSITY with enum ( #80653 )
2022-10-25 16:45:45 +02:00
Erik Montnemery
727eccfec4
Add GJ as supported unit for energy sensors ( #80870 )
...
* Add GJ as supported unit for energy sensors
* Update homeassistant/const.py
Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
2022-10-25 16:43:00 +02:00
epenet
0018939142
Adjust unit_system type hints ( #80946 )
2022-10-25 15:56:18 +02:00
Erik Montnemery
b07e1281da
Add rules for converting speeds ( #80943 )
...
* Add rules for converting speeds
* Update metoffice wind speed sensors to prefer mph
* Don't convert speeds measured in knots
2022-10-25 14:53:59 +02:00
Erik Montnemery
aea0067e49
Add additional rules for converting distances ( #80940 )
...
* Add additional rules for converting distances
* Convert in to mm
* Adjust existing tests
* Add test
2022-10-25 12:51:23 +02:00
Erik Montnemery
6979cd95b0
Add suggested_unit_of_measurement attribute to sensors ( #80638 )
...
* Add suggested_unit_of_measurement attribute to sensors
* Lazy calculation of initial entity options
* Add type alias for entity options
* Small tweak
* Add tests
* Store suggested_unit_of_measurement in its own option key
* Adapt to renaming of IMPERIAL_SYSTEM
* Fix rebase mistakes
* Apply suggestions from code review
Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
2022-10-24 16:08:02 +02:00
epenet
8a1cc05e0c
Enforce kwargs in unit system initialisation ( #80620 )
...
* Enforce kwargs in unit system initialisation
* Fix tests
* Sort kwargs in unit_system
2022-10-20 10:43:32 +02:00
epenet
9afb4c6c9e
Adjust precipitation units ( #79780 )
...
* Adjust precipitation units
* Use PRECIPITATION_INTENSITY
* Revert isy994
* Adjust SensorDeviceClass docstring
* Adjust comment
2022-10-19 14:35:49 +02:00
epenet
67d1dde69f
Rename IMPERIAL_SYSTEM to US_CUSTOMARY_SYSTEM ( #80253 )
...
* Rename IMPERIAL_SYSTEM
* Deprecate is_metric property and adjust tests
* Adjust unit_system config validation
* Add yaml tests
* Add tests for private name
* Fix incorrect rebase
* Adjust docstring
* Add store migration
* Update unit_system.py
* Minimise test tweaks
* Fix tests
* Add conversion to migration
* Rename new key and adjust tests
* Adjust websocket_detect_config
* Move original_unit_system tracking to subclass
2022-10-19 13:31:08 +02:00
epenet
bff5d1123f
Deprecate CONF_UNIT_SYSTEM_*** constants ( #80320 )
...
* Deprecate CONF_UNIT_SYSTEM_*** constants
* Adjust pylint plugin
* Add tests
* Remove single-use function
* Revert logic change
* Revert "Revert logic change"
This reverts commit 60959a0050
.
* Tweak again
2022-10-14 16:50:04 +02:00
epenet
6a757662e4
Deprecate is_metric property of unit system ( #80313 )
2022-10-14 13:44:18 +02:00
epenet
4dd0c079d5
Deprecate name property of unit system ( #80257 )
2022-10-14 12:06:14 +02:00
epenet
aa0bb9c3d2
Improve precision in pressure conversion ( #79362 )
...
* Improve precision in pressure conversion
* Use _STANDARD_GRAVITY
* Add again pytest.approx
2022-10-06 12:48:31 +02:00
Erik Montnemery
47d0598e75
Use Kelvin as the preferred color temperature unit ( #79591 )
...
* Use Kelvin as the preferred white temperature unit
* Update homekit
* Adjust tests
2022-10-06 12:22:39 +02:00
epenet
825f9502ad
Align temperature conversion with other converters ( #79521 )
...
* Align temperature conversion with other converters
* Add comments and docstring
* Align tests
2022-10-03 10:09:55 +02:00
epenet
9c3b40dad1
Deprecate conversion utilities ( #78957 )
...
* Deprecate utilities
* Deprecate distance and speed
* Add tests
* Adjust pylint
* Simplify temperature deprecation
2022-09-28 19:39:44 +02:00
epenet
5438552d4a
Cleanup unit conversion ( #79197 )
...
* Move UNIT_RATIO to BaseUnitConverter
* Make UNIT_CONVERSION private
* Remove STATISTIC_UNIT_TO_UNIT_CLASS constant
* Cleanup websocket_api
* Imrpove valid_units check
2022-09-28 13:49:46 +02:00