Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Proposed change
Skip writing bytecode files for
pytest
runs - a small performance improvement. This is only really important forpytest
as it compiles all test files as well. The other linters just read them as text files.https://docs.python.org/3/using/cmdline.html#envvar-PYTHONDONTWRITEBYTECODE
https://docs.pytest.org/en/7.1.x/how-to/assert.html#assertion-rewriting-caches-files-on-disk
I also explored caching those to speed up pytest even more. However the
.pyc
files are regenerated based on themtime
of the source code which resets with eachgit checkout
. Thus, caching them unfortunately doesn't really work.Update
Reading on it some more, Python does actually support hash based
.pyc
checks via the--invalidation-mode
option.https://docs.python.org/3/reference/import.html#cached-bytecode-invalidation
https://docs.python.org/3/library/compileall.html#cmdoption-compileall-invalidation-mode
However, pytest certainly does not.
https://github.com/pytest-dev/pytest/blob/7.4.0/src/_pytest/assertion/rewrite.py#L387-L390
Even if it would, there is still the issue that the test suite is split into multiple groups. Therefore the bytecode files would likely need to be combined for caching to be effective. A lot of work. I might explore it in the future but for now simply disabling writing the bytecode files provides the most improvements.
Type of change
Additional information
Checklist
black --fast homeassistant tests
)If user exposed functionality or configuration variables are added/changed:
If the code communicates with devices, web services, or third-party tools:
Updated and included derived files by running:
python3 -m script.hassfest
.requirements_all.txt
.Updated by running
python3 -m script.gen_requirements_all
..coveragerc
.To help with the load of incoming pull requests: