Skip to main content

An extremely fast Python linter and code formatter, written in Rust.

Project description

Ruff

Ruff image image image Actions status Discord

Docs | Playground

An extremely fast Python linter and code formatter, written in Rust.

Shows a bar chart with benchmark results.

Linting the CPython codebase from scratch.

  • ⚡️ 10-100x faster than existing linters (like Flake8) and formatters (like Black)
  • 🐍 Installable via pip
  • 🛠️ pyproject.toml support
  • 🤝 Python 3.13 compatibility
  • ⚖️ Drop-in parity with Flake8, isort, and Black
  • 📦 Built-in caching, to avoid re-analyzing unchanged files
  • 🔧 Fix support, for automatic error correction (e.g., automatically remove unused imports)
  • 📏 Over 800 built-in rules, with native re-implementations of popular Flake8 plugins, like flake8-bugbear
  • ⌨️ First-party editor integrations for VS Code and more
  • 🌎 Monorepo-friendly, with hierarchical and cascading configuration

Ruff aims to be orders of magnitude faster than alternative tools while integrating more functionality behind a single, common interface.

Ruff can be used to replace Flake8 (plus dozens of plugins), Black, isort, pydocstyle, pyupgrade, autoflake, and more, all while executing tens or hundreds of times faster than any individual tool.

Ruff is extremely actively developed and used in major open-source projects like:

...and many more.

Ruff is backed by Astral. Read the launch post, or the original project announcement.

Testimonials

Sebastián Ramírez, creator of FastAPI:

Ruff is so fast that sometimes I add an intentional bug in the code just to confirm it's actually running and checking the code.

Nick Schrock, founder of Elementl, co-creator of GraphQL:

Why is Ruff a gamechanger? Primarily because it is nearly 1000x faster. Literally. Not a typo. On our largest module (dagster itself, 250k LOC) pylint takes about 2.5 minutes, parallelized across 4 cores on my M1. Running ruff against our entire codebase takes .4 seconds.

Bryan Van de Ven, co-creator of Bokeh, original author of Conda:

Ruff is ~150-200x faster than flake8 on my machine, scanning the whole repo takes ~0.2s instead of ~20s. This is an enormous quality of life improvement for local dev. It's fast enough that I added it as an actual commit hook, which is terrific.

Timothy Crosley, creator of isort:

Just switched my first project to Ruff. Only one downside so far: it's so fast I couldn't believe it was working till I intentionally introduced some errors.

Tim Abbott, lead developer of Zulip:

This is just ridiculously fast... ruff is amazing.

Table of Contents

For more, see the documentation.

  1. Getting Started
  2. Configuration
  3. Rules
  4. Contributing
  5. Support
  6. Acknowledgements
  7. Who's Using Ruff?
  8. License

Getting Started

For more, see the documentation.

Installation

Ruff is available as ruff on PyPI.

Invoke Ruff directly with uvx:

uvx ruff check   # Lint all files in the current directory.
uvx ruff format  # Format all files in the current directory.

Or install Ruff with uv (recommended), pip, or pipx:

# With uv.
uv tool install ruff@latest  # Install Ruff globally.
uv add --dev ruff            # Or add Ruff to your project.

# With pip.
pip install ruff

# With pipx.
pipx install ruff

Starting with version 0.5.0, Ruff can be installed with our standalone installers:

# On macOS and Linux.
curl -LsSf https://astral.sh/ruff/install.sh | sh

# On Windows.
powershell -c "irm https://astral.sh/ruff/install.ps1 | iex"

# For a specific version.
curl -LsSf https://astral.sh/ruff/0.12.10/install.sh | sh
powershell -c "irm https://astral.sh/ruff/0.12.10/install.ps1 | iex"

You can also install Ruff via Homebrew, Conda, and with a variety of other package managers.

Usage

To run Ruff as a linter, try any of the following:

ruff check                          # Lint all files in the current directory (and any subdirectories).
ruff check path/to/code/            # Lint all files in `/path/to/code` (and any subdirectories).
ruff check path/to/code/*.py        # Lint all `.py` files in `/path/to/code`.
ruff check path/to/code/to/file.py  # Lint `file.py`.
ruff check @arguments.txt           # Lint using an input file, treating its contents as newline-delimited command-line arguments.

Or, to run Ruff as a formatter:

ruff format                          # Format all files in the current directory (and any subdirectories).
ruff format path/to/code/            # Format all files in `/path/to/code` (and any subdirectories).
ruff format path/to/code/*.py        # Format all `.py` files in `/path/to/code`.
ruff format path/to/code/to/file.py  # Format `file.py`.
ruff format @arguments.txt           # Format using an input file, treating its contents as newline-delimited command-line arguments.

Ruff can also be used as a pre-commit hook via ruff-pre-commit:

- repo: https://github.com/astral-sh/ruff-pre-commit
  # Ruff version.
  rev: v0.12.10
  hooks:
    # Run the linter.
    - id: ruff-check
      args: [ --fix ]
    # Run the formatter.
    - id: ruff-format

Ruff can also be used as a VS Code extension or with various other editors.

Ruff can also be used as a GitHub Action via ruff-action:

name: Ruff
on: [ push, pull_request ]
jobs:
  ruff:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: astral-sh/ruff-action@v3

Configuration

Ruff can be configured through a pyproject.toml, ruff.toml, or .ruff.toml file (see: Configuration, or Settings for a complete list of all configuration options).

If left unspecified, Ruff's default configuration is equivalent to the following ruff.toml file:

# Exclude a variety of commonly ignored directories.
exclude = [
    ".bzr",
    ".direnv",
    ".eggs",
    ".git",
    ".git-rewrite",
    ".hg",
    ".ipynb_checkpoints",
    ".mypy_cache",
    ".nox",
    ".pants.d",
    ".pyenv",
    ".pytest_cache",
    ".pytype",
    ".ruff_cache",
    ".svn",
    ".tox",
    ".venv",
    ".vscode",
    "__pypackages__",
    "_build",
    "buck-out",
    "build",
    "dist",
    "node_modules",
    "site-packages",
    "venv",
]

# Same as Black.
line-length = 88
indent-width = 4

# Assume Python 3.9
target-version = "py39"

[lint]
# Enable Pyflakes (`F`) and a subset of the pycodestyle (`E`) codes by default.
select = ["E4", "E7", "E9", "F"]
ignore = []

# Allow fix for all enabled rules (when `--fix`) is provided.
fixable = ["ALL"]
unfixable = []

# Allow unused variables when underscore-prefixed.
dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"

[format]
# Like Black, use double quotes for strings.
quote-style = "double"

# Like Black, indent with spaces, rather than tabs.
indent-style = "space"

# Like Black, respect magic trailing commas.
skip-magic-trailing-comma = false

# Like Black, automatically detect the appropriate line ending.
line-ending = "auto"

Note that, in a pyproject.toml, each section header should be prefixed with tool.ruff. For example, [lint] should be replaced with [tool.ruff.lint].

Some configuration options can be provided via dedicated command-line arguments, such as those related to rule enablement and disablement, file discovery, and logging level:

ruff check --select F401 --select F403 --quiet

The remaining configuration options can be provided through a catch-all --config argument:

ruff check --config "lint.per-file-ignores = {'some_file.py' = ['F841']}"

To opt in to the latest lint rules, formatter style changes, interface updates, and more, enable preview mode by setting preview = true in your configuration file or passing --preview on the command line. Preview mode enables a collection of unstable features that may change prior to stabilization.

See ruff help for more on Ruff's top-level commands, or ruff help check and ruff help format for more on the linting and formatting commands, respectively.

Rules

Ruff supports over 800 lint rules, many of which are inspired by popular tools like Flake8, isort, pyupgrade, and others. Regardless of the rule's origin, Ruff re-implements every rule in Rust as a first-party feature.

By default, Ruff enables Flake8's F rules, along with a subset of the E rules, omitting any stylistic rules that overlap with the use of a formatter, like ruff format or Black.

If you're just getting started with Ruff, the default rule set is a great place to start: it catches a wide variety of common errors (like unused imports) with zero configuration.

Beyond the defaults, Ruff re-implements some of the most popular Flake8 plugins and related code quality tools, including:

For a complete enumeration of the supported rules, see Rules.

Contributing

Contributions are welcome and highly appreciated. To get started, check out the contributing guidelines.

You can also join us on Discord.

Support

Having trouble? Check out the existing issues on GitHub, or feel free to open a new one.

You can also ask for help on Discord.

Acknowledgements

Ruff's linter draws on both the APIs and implementation details of many other tools in the Python ecosystem, especially Flake8, Pyflakes, pycodestyle, pydocstyle, pyupgrade, and isort.

In some cases, Ruff includes a "direct" Rust port of the corresponding tool. We're grateful to the maintainers of these tools for their work, and for all the value they've provided to the Python community.

Ruff's formatter is built on a fork of Rome's rome_formatter, and again draws on both API and implementation details from Rome, Prettier, and Black.

Ruff's import resolver is based on the import resolution algorithm from Pyright.

Ruff is also influenced by a number of tools outside the Python ecosystem, like Clippy and ESLint.

Ruff is the beneficiary of a large number of contributors.

Ruff is released under the MIT license.

Who's Using Ruff?

Ruff is used by a number of major open-source projects and companies, including:

Show Your Support

If you're using Ruff, consider adding the Ruff badge to your project's README.md:

[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)

...or README.rst:

.. image:: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json
    :target: https://github.com/astral-sh/ruff
    :alt: Ruff

...or, as HTML:

<a href="https://github.com/astral-sh/ruff"><img src="https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json" alt="Ruff" style="max-width:100%;"></a>

License

This repository is licensed under the MIT License

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ruff-0.12.10.tar.gz (5.3 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

ruff-0.12.10-py3-none-win_arm64.whl (12.1 MB view details)

Uploaded Python 3Windows ARM64

ruff-0.12.10-py3-none-win_amd64.whl (13.0 MB view details)

Uploaded Python 3Windows x86-64

ruff-0.12.10-py3-none-win32.whl (11.9 MB view details)

Uploaded Python 3Windows x86

ruff-0.12.10-py3-none-musllinux_1_2_x86_64.whl (13.2 MB view details)

Uploaded Python 3musllinux: musl 1.2+ x86-64

ruff-0.12.10-py3-none-musllinux_1_2_i686.whl (12.7 MB view details)

Uploaded Python 3musllinux: musl 1.2+ i686

ruff-0.12.10-py3-none-musllinux_1_2_armv7l.whl (11.7 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARMv7l

ruff-0.12.10-py3-none-musllinux_1_2_aarch64.whl (11.9 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARM64

ruff-0.12.10-py3-none-manylinux_2_31_riscv64.whl (13.1 MB view details)

Uploaded Python 3manylinux: glibc 2.31+ riscv64

ruff-0.12.10-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (13.1 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

ruff-0.12.10-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl (12.9 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ s390x

ruff-0.12.10-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (13.9 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ppc64le

ruff-0.12.10-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl (14.4 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ppc64

ruff-0.12.10-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl (13.5 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ i686

ruff-0.12.10-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (11.7 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARMv7l

ruff-0.12.10-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (12.1 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

ruff-0.12.10-py3-none-macosx_11_0_arm64.whl (11.9 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

ruff-0.12.10-py3-none-macosx_10_12_x86_64.whl (12.7 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

ruff-0.12.10-py3-none-linux_armv6l.whl (11.9 MB view details)

Uploaded Python 3

File details

Details for the file ruff-0.12.10.tar.gz.

File metadata

  • Download URL: ruff-0.12.10.tar.gz
  • Upload date:
  • Size: 5.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.8.12

File hashes

Hashes for ruff-0.12.10.tar.gz
Algorithm Hash digest
SHA256 189ab65149d11ea69a2d775343adf5f49bb2426fc4780f65ee33b423ad2e47f9
MD5 256be9b02313d160dc0d6c0d25edbc65
BLAKE2b-256 3beb8c073deb376e46ae767f4961390d17545e8535921d2f65101720ed8bd434

See more details on using hashes here.

File details

Details for the file ruff-0.12.10-py3-none-win_arm64.whl.

File metadata

  • Download URL: ruff-0.12.10-py3-none-win_arm64.whl
  • Upload date:
  • Size: 12.1 MB
  • Tags: Python 3, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.8.12

File hashes

Hashes for ruff-0.12.10-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 cc138cc06ed9d4bfa9d667a65af7172b47840e1a98b02ce7011c391e54635ffc
MD5 92263429ae7210b1a1fa391ed5171089
BLAKE2b-256 243c21cf283d67af33a8e6ed242396863af195a8a6134ec581524fd22b9811b6

See more details on using hashes here.

File details

Details for the file ruff-0.12.10-py3-none-win_amd64.whl.

File metadata

  • Download URL: ruff-0.12.10-py3-none-win_amd64.whl
  • Upload date:
  • Size: 13.0 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.8.12

File hashes

Hashes for ruff-0.12.10-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 7837eca8787f076f67aba2ca559cefd9c5cbc3a9852fd66186f4201b87c1563e
MD5 c5f0df07b80c1b7417374ab792da7d52
BLAKE2b-256 ad142ad38fd4037daab9e023456a4a40ed0154e9971f8d6aed41bdea390aabd9

See more details on using hashes here.

File details

Details for the file ruff-0.12.10-py3-none-win32.whl.

File metadata

  • Download URL: ruff-0.12.10-py3-none-win32.whl
  • Upload date:
  • Size: 11.9 MB
  • Tags: Python 3, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.8.12

File hashes

Hashes for ruff-0.12.10-py3-none-win32.whl
Algorithm Hash digest
SHA256 9de785e95dc2f09846c5e6e1d3a3d32ecd0b283a979898ad427a9be7be22b266
MD5 829042f039394ac1a353631f86106b1e
BLAKE2b-256 47d41aaa7fb201a74181989970ebccd12f88c0fc074777027e2a21de5a90657e

See more details on using hashes here.

File details

Details for the file ruff-0.12.10-py3-none-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for ruff-0.12.10-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ae479e1a18b439c59138f066ae79cc0f3ee250712a873d00dbafadaad9481e5b
MD5 9eb43bcb1612a838777c2afcf8c1fab0
BLAKE2b-256 ad3763a9c788bbe0b0850611669ec6b8589838faf2f4f959647f2d3e320383ae

See more details on using hashes here.

File details

Details for the file ruff-0.12.10-py3-none-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for ruff-0.12.10-py3-none-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 e67d96827854f50b9e3e8327b031647e7bcc090dbe7bb11101a81a3a2cbf1cc9
MD5 2b6263d8f6617a986527919c770d7612
BLAKE2b-256 5980d982c55e91df981f3ab62559371380616c57ffd0172d96850280c2b04fa8

See more details on using hashes here.

File details

Details for the file ruff-0.12.10-py3-none-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for ruff-0.12.10-py3-none-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 7d1a4e0bdfafcd2e3e235ecf50bf0176f74dd37902f241588ae1f6c827a36c56
MD5 d768d2c215830717499025cc3e602f7d
BLAKE2b-256 674c6d092bb99ea9ea6ebda817a0e7ad886f42a58b4501a7e27cd97371d0ba54

See more details on using hashes here.

File details

Details for the file ruff-0.12.10-py3-none-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for ruff-0.12.10-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 f3fc21178cd44c98142ae7590f42ddcb587b8e09a3b849cbc84edb62ee95de60
MD5 43ef63a157a4e839f12b6e7a193ae061
BLAKE2b-256 128c9e6660007fb10189ccb78a02b41691288038e51e4788bf49b0a60f740604

See more details on using hashes here.

File details

Details for the file ruff-0.12.10-py3-none-manylinux_2_31_riscv64.whl.

File metadata

File hashes

Hashes for ruff-0.12.10-py3-none-manylinux_2_31_riscv64.whl
Algorithm Hash digest
SHA256 141ce3d88803c625257b8a6debf4a0473eb6eed9643a6189b68838b43e78165a
MD5 0807d2d190eb2faf39cb1b926d3ba1f7
BLAKE2b-256 ff0058f7b873b21114456e880b75176af3490d7a2836033779ca42f50de3b47a

See more details on using hashes here.

File details

Details for the file ruff-0.12.10-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ruff-0.12.10-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1f68433c4fbc63efbfa3ba5db31727db229fa4e61000f452c540474b03de52a9
MD5 9188ca853e3676594eefb3a266eacfe5
BLAKE2b-256 c01db4207ec35e7babaee62c462769e77457e26eb853fbdc877af29417033333

See more details on using hashes here.

File details

Details for the file ruff-0.12.10-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for ruff-0.12.10-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 4f1345fbf8fb0531cd722285b5f15af49b2932742fc96b633e883da8d841896b
MD5 79fbba1bd2da89d39d33b3d646f4da2b
BLAKE2b-256 1919dd7273b69bf7f93a070c9cec9494a94048325ad18fdcf50114f07e6bf417

See more details on using hashes here.

File details

Details for the file ruff-0.12.10-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for ruff-0.12.10-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 1bef6161e297c68908b7218fa6e0e93e99a286e5ed9653d4be71e687dff101cf
MD5 c79e18c5885ee92d49507fe30976295a
BLAKE2b-256 e3035da8cad4b0d5242a936eb203b58318016db44f5c5d351b07e3f5e211bb89

See more details on using hashes here.

File details

Details for the file ruff-0.12.10-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl.

File metadata

File hashes

Hashes for ruff-0.12.10-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl
Algorithm Hash digest
SHA256 059e863ea3a9ade41407ad71c1de2badfbe01539117f38f763ba42a1206f7559
MD5 e42c898fdbd1d7d74ac0352486d7d343
BLAKE2b-256 029e39369e6ac7f2a1848f22fb0b00b690492f20811a1ac5c1fd1d2798329263

See more details on using hashes here.

File details

Details for the file ruff-0.12.10-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for ruff-0.12.10-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 2c6f4064c69d2542029b2a61d39920c85240c39837599d7f2e32e80d36401d6e
MD5 62d79b7617516a86447dabf208724933
BLAKE2b-256 63c5b21cde720f54a1d1db71538c0bc9b73dee4b563a7dd7d2e404914904d7f5

See more details on using hashes here.

File details

Details for the file ruff-0.12.10-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for ruff-0.12.10-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 37b4a64f4062a50c75019c61c7017ff598cb444984b638511f48539d3a1c98db
MD5 fe49a0882cbdee94c0169c55ec4c9eb6
BLAKE2b-256 061fed6c265e199568010197909b25c896d66e4ef2c5e1c3808caf461f6f3579

See more details on using hashes here.

File details

Details for the file ruff-0.12.10-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for ruff-0.12.10-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 822d9677b560f1fdeab69b89d1f444bf5459da4aa04e06e766cf0121771ab844
MD5 56b3cfe41ada28fbb7bb93a107cd4dc1
BLAKE2b-256 12ad44f606d243f744a75adc432275217296095101f83f966842063d78eee2d3

See more details on using hashes here.

File details

Details for the file ruff-0.12.10-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ruff-0.12.10-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d59e58586829f8e4a9920788f6efba97a13d1fa320b047814e8afede381c6839
MD5 f95f393976ca82ac1e2e63cb7997096f
BLAKE2b-256 d7f197f509b4108d7bae16c48389f54f005b62ce86712120fd8b2d8e88a7cb49

See more details on using hashes here.

File details

Details for the file ruff-0.12.10-py3-none-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for ruff-0.12.10-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 ebb7333a45d56efc7c110a46a69a1b32365d5c5161e7244aaf3aa20ce62399c1
MD5 1b5c24ce80b4fb02234b99a23a75cb77
BLAKE2b-256 d1b0ad2464922a1113c365d12b8f80ed70fcfb39764288ac77c995156080488d

See more details on using hashes here.

File details

Details for the file ruff-0.12.10-py3-none-linux_armv6l.whl.

File metadata

File hashes

Hashes for ruff-0.12.10-py3-none-linux_armv6l.whl
Algorithm Hash digest
SHA256 8b593cb0fb55cc8692dac7b06deb29afda78c721c7ccfed22db941201b7b8f7b
MD5 a5a8b20a9514858953f0293f1d5b6e65
BLAKE2b-256 24e7560d049d15585d6c201f9eeacd2fd130def3741323e5ccf123786e0e3c95

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page