CARVIEW |
Select Language
HTTP/2 200
date: Thu, 31 Jul 2025 11:20:29 GMT
content-type: text/html; charset=utf-8
vary: X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With,Accept-Encoding, Accept, X-Requested-With
etag: W/"1d0b4387aa77b979ed81ae552f991246"
cache-control: max-age=0, private, must-revalidate
strict-transport-security: max-age=31536000; includeSubdomains; preload
x-frame-options: deny
x-content-type-options: nosniff
x-xss-protection: 0
referrer-policy: no-referrer-when-downgrade
content-security-policy: default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com wss://alive-staging.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/
server: github.com
content-encoding: gzip
accept-ranges: bytes
set-cookie: _gh_sess=cQiVVplUj7DsD%2Fk9mcrPl1oPSI%2BUoX28ymnmS%2F6EsQog3Up6hhrUcUzX9ltQpJK9vfq7JE7A%2FVwwf5NYBvoaTdsZkyrOyMTZOybSLkU%2Bm3gCmEC%2Ffkt0mYbDdGhArQkNroG92YL4NvRllXtpssOnB1fizst%2By4doStkZcVh%2FfU%2FC1UNf9OgM%2FH%2B1ucZphG39OdMJaTx8ZqGl59iTDCZ%2BAm%2FLBqdq8%2Foai%2B3G5ZQgj6jsewXZSA%2BjZAWM%2BkmQ5emERw0ng%2Fm8C2UpICrUP3yEyg%3D%3D--x%2FR5QVYvaf%2FCe%2Fk2--YcyGT95Zr%2Fd1EFUQ7P5TFg%3D%3D; Path=/; HttpOnly; Secure; SameSite=Lax
set-cookie: _octo=GH1.1.739884870.1753960828; Path=/; Domain=github.com; Expires=Fri, 31 Jul 2026 11:20:28 GMT; Secure; SameSite=Lax
set-cookie: logged_in=no; Path=/; Domain=github.com; Expires=Fri, 31 Jul 2026 11:20:28 GMT; HttpOnly; Secure; SameSite=Lax
x-github-request-id: DF30:3C0FA8:910334:AD405D:688B517C
Release 0.12.1 Β· astral-sh/ruff Β· GitHub
Loading
Skip to content
Navigation Menu
{{ message }}
-
Notifications
You must be signed in to change notification settings - Fork 1.5k
0.12.1
Compare
32c5418
This commit was created on GitHub.com and signed with GitHubβs verified signature.
Release Notes
Preview features
- [
flake8-errmsg
] ExtendEM101
to support byte strings (#18867) - [
flake8-use-pathlib
] Add autofix forPTH202
(#18763) - [
pygrep-hooks
] AddAsyncMock
methods toinvalid-mock-access
(PGH005
) (#18547) - [
pylint
] Ignore__init__.py
files in (PLC0414
) (#18400) - [
ruff
] TriggerRUF037
for empty string and byte strings (#18862) - [formatter] Fix missing blank lines before decorated classes in
.pyi
files (#18888)
Bug fixes
- Avoid generating diagnostics with per-file ignores (#18801)
- Handle parenthesized arguments in
remove_argument
(#18805) - [
flake8-logging
] Avoid false positive forexc_info=True
outsidelogger.exception
(LOG014
) (#18737) - [
flake8-pytest-style
] Enforcepytest
import for decorators (#18779) - [
flake8-pytest-style
] Mark autofix forPT001
andPT023
as unsafe if there's comments in the decorator (#18792) - [
flake8-pytest-style
]PT001
/PT023
fix makes syntax error on parenthesized decorator (#18782) - [
flake8-raise
] Make fix unsafe if it deletes comments (RSE102
) (#18788) - [
flake8-simplify
] FixSIM911
autofix creating a syntax error (#18793) - [
flake8-simplify
] Fix false negatives for shadowed bindings (SIM910
,SIM911
) (#18794) - [
flake8-simplify
] Preserve original behavior forexcept ()
and bareexcept
(SIM105
) (#18213) - [
flake8-pyi
] FixPYI041
's fix causingTypeError
withNone | None | ...
(#18637) - [
perflint
] FixPERF101
autofix creating a syntax error and mark autofix as unsafe if there are comments in thelist
call expr (#18803) - [
perflint
] Fix false negative inPERF401
(#18866) - [
pylint
] Avoid flattening nestedmin
/max
when outer call has single argument (PLW3301
) (#16885) - [
pylint
] FixPLC2801
autofix creating a syntax error (#18857) - [
pylint
] MarkPLE0241
autofix as unsafe if there's comments in the base classes (#18832) - [
pylint
] SuppressPLE2510
/PLE2512
/PLE2513
/PLE2514
/PLE2515
autofix if the text contains an odd number of backslashes (#18856) - [
refurb
] Detect more exotic float literals inFURB164
(#18925) - [
refurb
] FixFURB163
autofix creating a syntax error foryield
expressions (#18756) - [
refurb
] MarkFURB129
autofix as unsafe if there's comments in thereadlines
call (#18858) - [
ruff
] Fix false positives and negatives inRUF010
(#18690) - Fix casing of
analyze.direction
variant names (#18892)
Rule changes
- Fix f-string interpolation escaping in generated fixes (#18882)
- [
flake8-return
] MarkRET501
fix unsafe if comments are inside (#18780) - [
flake8-async
] Fix detection for large integer sleep durations inASYNC116
rule (#18767) - [
flake8-async
] Mark autofix forASYNC115
as unsafe if the call expression contains comments (#18753) - [
flake8-bugbear
] Mark autofix forB004
as unsafe if thehasattr
call expr contains comments (#18755) - [
flake8-comprehension
] Mark autofix forC420
as unsafe if there's comments inside the dict comprehension (#18768) - [
flake8-comprehensions
] Handle template strings for comprehension fixes (#18710) - [
flake8-future-annotations
] Add autofix (FA100
) (#18903) - [
pyflakes
] MarkF504
/F522
/F523
autofix as unsafe if there's a call with side effect (#18839) - [
pylint
] Allow fix with comments and document performance implications (PLW3301
) (#18936) - [
pylint
] Detect more exoticNaN
literals inPLW0177
(#18630) - [
pylint
] FixPLC1802
autofix creating a syntax error and mark autofix as unsafe if there's comments in thelen
call (#18836) - [
pyupgrade
] Extend version detection to includesys.version_info.major
(UP036
) (#18633) - [
ruff
] Add lint ruleRUF064
for callingchmod
with non-octal integers (#18541) - [
ruff
] Addedcls.__dict__.get('__annotations__')
check (RUF063
) (#18233) - [
ruff
] Frozendataclass
default should be valid (RUF009
) (#18735)
Server
- Consider virtual path for various server actions (#18910)
Documentation
- Add fix safety sections (#18940,#18841,#18802,#18837,#18800,#18415,#18853,#18842)
- Use updated pre-commit id (#18718)
- [
perflint
] Small docs improvement toPERF401
(#18786) - [
pyupgrade
]: Usesuper()
, not__super__
in error messages (UP008
) (#18743) - [
flake8-pie
] Small docs fix toPIE794
(#18829) - [
flake8-pyi
] Correctcollections-named-tuple
example to use PascalCase assignment (#16884) - [
flake8-pie
] Add note on type checking benefits tounnecessary-dict-kwargs
(PIE804
) (#18666) - [
pycodestyle
] Clarify PEP 8 relationship towhitespace-around-operator
rules (#18870)
Other changes
- Disallow newlines in format specifiers of single quoted f- or t-strings (#18708)
- [
flake8-logging
] Add fix safety section toLOG002
(#18840) - [
pyupgrade
] Add fix safety section toUP010
(#18838)
Contributors
- @AlexWaygood
- @Andrej730
- @BurntSushi
- @GideonBear
- @InSyncWithFoo
- @JosiahKane
- @LaBatata101
- @LyricalToxic
- @MeGaGiGaGon
- @MichaReiser
- @RazerM
- @VascoSch92
- @alpaylan
- @carljm
- @charliermarsh
- @chirizxc
- @danparizher
- @dcreager
- @dericcrago
- @dhruvmanila
- @dylwil3
- @gopoto
- @hmvp
- @krikera
- @lubaskinc0de
- @mashehu
- @med1844
- @njhearp
- @ntBre
- @renovate
- @robsdedude
- @sharkdp
- @sobolevn
- @suneettipirneni
- @yunchipang
- @zanieb
Install ruff 0.12.1
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/ruff/releases/download/0.12.1/ruff-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/ruff/releases/download/0.12.1/ruff-installer.ps1 | iex"
Download ruff 0.12.1
Assets 42
26 people reacted
You canβt perform that action at this time.