Popular: Data updated November 9, 2026

Categories

Internet1,378
Communication323
Audio & video914
Graphics & design552
Office & productivity1,137
Developer tools3,178
AI tools555
Security & privacy396
System tools3,169
Games532
Education & science240
Network & IT291

Ruff 0.9.5 download

An extremely fast Python linter, written in Rust.

Astral Languages & SDKs #42 Languages & SDKs
This is an older version. The current version is 0.17.2. Ruff 0.17.2 · Released:

Installer files 0.9.5

ArchitectureTypeScopeFile sizeDownloadSHA256
64-bit ZIP → Portable — — github.com VirusTotal
ARM64 ZIP → Portable — — github.com VirusTotal
32-bit ZIP → Portable — — github.com VirusTotal

Link and SHA256 come from the Windows Package Manager community manifest. Compare the hash of the downloaded file before running it.

Release notes

Preview features
- Recognize all symbols named `TYPE_CHECKING` for `in_type_checking_block` (#15719)
- [flake8-comprehensions] Handle builtins at top of file correctly for `unnecessary-dict-comprehension-for-iterable` (C420) (#15837)
- [flake8-logging] `.exception()` and `exc_info=` outside exception handlers (LOG004, LOG014) (#15799)
- [flake8-pyi] Fix incorrect behaviour of `custom-typevar-return-type` preview-mode autofix if `typing` was already imported (PYI019) (#15853)
- [flake8-pyi] Fix more complex cases (PYI019) (#15821)
- [flake8-pyi] Make PYI019 autofixable for `.py` files in preview mode as well as stubs (#15889)
- [flake8-pyi] Remove type parameter correctly when it is the last (PYI019) (#15854)
- [pylint] Fix missing parens in unsafe fix for `unnecessary-dunder-call` (PLC2801) (#15762)
- [pyupgrade] Better messages and diagnostic range (UP015) (#15872)
- [pyupgrade] Rename private type parameters in PEP 695 generics (UP049) (#15862)
- [refurb] Also report non-name expressions (FURB169) (#15905)
- [refurb] Mark fix as unsafe if there are comments (FURB171) (#15832)
- [ruff] Classes with mixed type variable style (RUF053) (#15841)
- [airflow] `BashOperator` has been moved to `airflow.providers.standard.operators.bash.BashOperator` (AIR302) (#15922)
- [flake8-pyi] Add autofix for unused-private-type-var (PYI018) (#15999)
- [flake8-pyi] Significantly improve accuracy of PYI019 if preview mode is enabled (#15888)

Rule changes
- Preserve triple quotes and prefixes for strings (#15818)
- [flake8-comprehensions] Skip when `TypeError` present from too many (kw)args for C410,C411, and C418 (#15838)
- [flake8-pyi] Rename PYI019 and improve its diagnostic message (#15885)
- [pep8-naming] Ignore `@override` methods (N803) (#15954)
- [pyupgrade] Reuse replacement logic from UP046 and UP047 to preserve more comments (UP040) (#15840)
- [ruff] Analyze deferred annotations before enforcing `mutable-(data)class-default` and `function-call-in-dataclass-default-argument` (RUF008,RUF009,RUF012) (#15921)
- [pycodestyle] Exempt `sys.path += ...` calls (E402) (#15980)

Configuration
- Config error only when `flake8-import-conventions` alias conflicts with `isort.required-imports` bound name (#15918)
- Workaround Even Better TOML crash related to `allOf` (#15992)

Bug fixes
- [flake8-comprehensions] Unnecessary `list` comprehension (rewrite as a `set` comprehension) (C403) - Handle extraneous parentheses around list comprehension (#15877)
- [flake8-comprehensions] Handle trailing comma in fixes for `unnecessary-generator-list/set` (C400,C401) (#15929)
- [flake8-pyi] Fix several correctness issues with `custom-type-var-return-type` (PYI019) (#15851)
- [pep8-naming] Consider any number of leading underscore for N801 (#15988)
- [pyflakes] Visit forward annotations in `TypeAliasType` as types (F401) (#15829)
- [pylint] Correct min/max auto-fix and suggestion for (PL1730) (#15930)
- [refurb] Handle unparenthesized tuples correctly (FURB122, FURB142) (#15953)
- [refurb] Avoid `None | None` as well as better detection and fix (FURB168) (#15779)

Documentation
- Add deprecation warning for `ruff-lsp` related settings (#15850)
- Docs (`linter.md`): clarify that Python files are always searched for in subdirectories (#15882)
- Fix a typo in `non_pep695_generic_class.rs` (#15946)
- Improve Docs: Pylint subcategories' codes (#15909)
- Remove non-existing `lint.extendIgnore` editor setting (#15844)
- Update black deviations (#15928)
- Mention UP049 in UP046 and UP047, add `See also` section to UP040 (#15956)
- Add instance variable examples to RUF012 (#15982)
- Explain precedence for `ignore` and `select` config (#15883)

https://github.com/astral-sh/ruff/releases/tag/0.9.5

Most popular in Languages & SDKs

See all
  1. Go Programming LanguageAn open source programming language that makes it simple to build secure, scalable systems.
  2. LLVMA collection of modular and reusable compiler and toolchain technologies.
  3. DenoA modern runtime for JavaScript and TypeScript
  4. CMakeCMake is a cross-platform, open-source build system generator.
  5. YarnYarn is a package manager that doubles down as project manager. Whether you work on one-shot projects or large monorepos, as a hobbyist or an enterprise user, we've got you covered.
  6. CcacheCcache is a compiler cache. It speeds up recompilation by caching previous compilations and detecting when the same compilation is being done again.
  7. sbtA build tool for Scala, Java, and more
  8. BOINCOpen-source software for volunteer computing and grid computing.
  9. Dart SDKA set of tools and libraries for the Dart programming language.
  10. TelegrafAgent for collecting, processing, aggregating, and writing metrics, logs, and other arbitrary data.

Tags

Share