refactor!: drop support for python 3.8, add some more ruff rules
Explanation of changes
- Set the minimum Python version to 3.9 wherever it's checked
- Modernise code by fixing
pyupgrade
warnings- Change all
Dict
,List
etc. annotations to lowercase - Move imports used only for type checking under a
TYPE_CHECKING
block, with the exception of those used by Pydantic models - Change
assert False
in code toraise AssertionError()
-
raise ... from None
for custom exceptions that are re-raised from others (please lmk if there are some for which you want a full/double stack trace instead) - Remove some unused loop variables (except some cases in which their end-of-loop value is [ab]used)
- Other minor adjustments
- Change all
- Add the
flake8-bugbear
rules while I'm at it- Tackle some problematic "gotchas" reported by
B
rules
- Tackle some problematic "gotchas" reported by
Motivation of changes
Because we want to drop Python 3.8 (https://endoflife.date/python).
Merge checklist
See also merge request guidelines
-
Merge request has been reviewed (in-depth by a knowledgeable contributor), and is approved by a project maintainer. -
New code is covered by unit tests (or N/A). -
New code is documented and docstrings use numpydoc format (or N/A). -
New functionality: considered making private instead of extending public API (or N/A). -
Public API changed: added @deprecated
and entry in deprecated code suggestions (or N/A). -
Newly added/adjusted documentation and docstrings render properly (or N/A). -
Pipeline fix or dependency update: post in #software-for-developers
channel to mergemain
back in or update local packages (or N/A). -
Tested on hardware (or N/A). -
CHANGELOG.md
for breaking changes andAUTHORS.md
have been updated (or N/A). -
Update Hardware backends documentation if backend interface change or N/A -
Check whether performance is significantly affected by looking at the Performance metrics results. -
Windows tests in CI pipeline pass (manually triggered by maintainers before merging). - Maintainers do not hit Auto-merge, we need to actively check as manual tests do not block pipeline
For reference, the issues workflow is described in the contribution guidelines.
Edited by Fabio Grigolo