This release includes full support for Python 3.12 (out now!), including the new type parameter (PEP 695) and f-string syntaxes (PEP 701).
PEP 701 lifts many of the restrictions on f-strings that existed in the past, allowing for arbitrarily nested f-strings, consistent quote style within f-strings, and more, all of which are now supported by Ruff (thanks to @dhruvmanila in astral-sh/ruff#7376).
Breaking Changes
In the formatter, format.quote-style no longer affects triple-quoted strings, to align with common conventions as well as the guidance from PEP 8 and PEP 257 (see: astral-sh/ruff#7680).
line-too-long (E501) now ignores trailing pragma comments (like # type: ignore and # noqa) when computing line length (see: astral-sh/ruff#7692). This is similar to flake8-bugbear's methodology for detecting overlong lines, and ensures that adding pragmas like # noqa does not introduce further lint errors.
unnecessary-pass (PIE790) now flags all unnecessary pass statements; previously, the rule only flagged pass statements that followed a docstring in a two-statement body (see: astral-sh/ruff#7697).
Previously, Ruff supported the non-standard compliant emoji identifiers e.g. 📦 = 1.
We decided to remove this non-standard language extension, and Ruff now reports syntax errors for emoji identifiers in your code, the same as CPython.
GitLab uses fingerprints to identify new, existing, or fixed violations. Previously, Ruff included the violation's position in the fingerprint. Using the location has the downside that changing any code before the violation causes the fingerprint to change, resulting in GitLab reporting one fixed and one new violation even though it is a pre-existing violation.
Ruff now uses a more stable location-agnostic fingerprint to minimize that existing violations incorrectly get marked as fixed and re-reported as new violations.
Expect GitLab to report each pre-existing violation in your project as fixed and a new violation in your Ruff upgrade PR.
0.0.283 / 0.284
The target Python version now defaults to 3.8 instead of 3.10 (#6397)
Previously, when a target Python version was not specified, Ruff would use a default of Python 3.10. However, it is safer to default to an older Python version to avoid assuming the availability of new features. We now default to the oldest supported Python version which is currently Python 3.8.
(We still support Python 3.7 but since it has reached EOL we've decided not to make it the default here.)
Note this change was announced in 0.0.283 but not active until 0.0.284.
0.0.277
.ipynb_checkpoints, .pyenv, .pytest_cache, and .vscode are now excluded by default (#5513)
Ruff maintains a list of default exclusions, which now consists of the following patterns:
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Bumps ruff from 0.0.285 to 0.0.292.
Release notes
Sourced from ruff's releases.
... (truncated)
Changelog
Sourced from ruff's changelog.
... (truncated)
Commits
c6d0bdd
Bump Ruff version to v0.0.292 (#7761)75f759e
Upgrade LibCST to support Python 3.12 (#7764)6b99f5e
Re-add formatter to GitHub release notes (#7763)97c092a
Add formatter TOML configuration to the README (#7762)bdf2852
Enable formatting for Jupyter notebooks (#7749)0961f00
RenameFixKind
toFixAvailability
(#7658)ebdfcee
Write full Jupyter notebook tostdout
(#7748)c71ff7e
Avoid printing continuations within import identifiers (#7744)0df2737
Bump memchr from 2.6.3 to 2.6.4 (#7758)c82d050
Bump thiserror from 1.0.48 to 1.0.49 (#7757)Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show