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.12/install.sh | sh
powershell -c "irm https://astral.sh/ruff/0.12.12/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.12
  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.12.tar.gz (5.4 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.12-py3-none-win_arm64.whl (12.3 MB view details)

Uploaded Python 3Windows ARM64

ruff-0.12.12-py3-none-win_amd64.whl (13.2 MB view details)

Uploaded Python 3Windows x86-64

ruff-0.12.12-py3-none-win32.whl (12.1 MB view details)

Uploaded Python 3Windows x86

ruff-0.12.12-py3-none-musllinux_1_2_x86_64.whl (13.4 MB view details)

Uploaded Python 3musllinux: musl 1.2+ x86-64

ruff-0.12.12-py3-none-musllinux_1_2_i686.whl (12.9 MB view details)

Uploaded Python 3musllinux: musl 1.2+ i686

ruff-0.12.12-py3-none-musllinux_1_2_armv7l.whl (11.9 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARMv7l

ruff-0.12.12-py3-none-musllinux_1_2_aarch64.whl (12.1 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARM64

ruff-0.12.12-py3-none-manylinux_2_31_riscv64.whl (13.3 MB view details)

Uploaded Python 3manylinux: glibc 2.31+ riscv64

ruff-0.12.12-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (13.3 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

ruff-0.12.12-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl (13.1 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ s390x

ruff-0.12.12-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (14.1 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ppc64le

ruff-0.12.12-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl (14.6 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ppc64

ruff-0.12.12-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl (13.7 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ i686

ruff-0.12.12-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (11.9 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARMv7l

ruff-0.12.12-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (12.3 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

ruff-0.12.12-py3-none-macosx_11_0_arm64.whl (12.0 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

ruff-0.12.12-py3-none-macosx_10_12_x86_64.whl (12.9 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

ruff-0.12.12-py3-none-linux_armv6l.whl (12.1 MB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for ruff-0.12.12.tar.gz
Algorithm Hash digest
SHA256 b86cd3415dbe31b3b46a71c598f4c4b2f550346d1ccf6326b347cc0c8fd063d6
MD5 ee72719d05088dc154405fcae6fc0263
BLAKE2b-256 a8f0e0965dd709b8cabe6356811c0ee8c096806bb57d20b5019eb4e48a117410

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for ruff-0.12.12-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 2a8199cab4ce4d72d158319b63370abf60991495fb733db96cd923a34c52d093
MD5 b2ab0454b077270a25ac9e4101d903ff
BLAKE2b-256 287e61c42657f6e4614a4258f1c3b0c5b93adc4d1f8575f5229d1906b483099b

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for ruff-0.12.12-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 e99620bf01884e5f38611934c09dd194eb665b0109104acae3ba6102b600fd0d
MD5 709b919526f1083e3816b102aa638692
BLAKE2b-256 8560d1e335417804df452589271818749d061b22772b87efda88354cf35cdb7a

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for ruff-0.12.12-py3-none-win32.whl
Algorithm Hash digest
SHA256 173be2bfc142af07a01e3a759aba6f7791aa47acf3604f610b1c36db888df7b1
MD5 46b5d88f44f32500ccfd609a9d52bd05
BLAKE2b-256 c8fa05b6428a008e60f79546c943e54068316f32ec8ab5c4f73e4563934fbdc7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruff-0.12.12-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 26a1b5a2bf7dd2c47e3b46d077cd9c0fc3b93e6c6cc9ed750bd312ae9dc302ee
MD5 14b4bcb98cff5858504b163fa026be34
BLAKE2b-256 219c28a8dacce4855e6703dcb8cdf6c1705d0b23dd01d60150786cd55aa93b16

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruff-0.12.12-py3-none-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 5f12856123b0ad0147d90b3961f5c90e7427f9acd4b40050705499c98983f489
MD5 7dd4ae7b261a10ec8b0d74ac656b1289
BLAKE2b-256 df5830185fcb0e89f05e7ea82e5817b47798f7fa7179863f9d9ba6fd4fe1b098

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruff-0.12.12-py3-none-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 b9c456fb2fc8e1282affa932c9e40f5ec31ec9cbb66751a316bd131273b57c23
MD5 a99ee5f35600f97c341c13d0afe19dc6
BLAKE2b-256 7704a910078284b47fad54506dc0af13839c418ff704e341c176f64e1127e461

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruff-0.12.12-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 a0fbafe8c58e37aae28b84a80ba1817f2ea552e9450156018a478bf1fa80f4e4
MD5 f5de9ac8c079192fbceda4c32017eccd
BLAKE2b-256 7f14d9577fdeaf791737ada1b4f5c6b59c21c3326f3f683229096cccd7674e0c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruff-0.12.12-py3-none-manylinux_2_31_riscv64.whl
Algorithm Hash digest
SHA256 0c0945246f5ad776cb8925e36af2438e66188d2b57d9cf2eed2c382c58b371e5
MD5 60de05b7e789152f504beb3079632da2
BLAKE2b-256 2a81de5a29af7eb8f341f8140867ffb93f82e4fde7256dadee79016ac87c2716

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruff-0.12.12-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2afc2fa864197634e549d87fb1e7b6feb01df0a80fd510d6489e1ce8c0b1cc45
MD5 315ca3bcd036e145b3207ec81f7fb1f8
BLAKE2b-256 53068deb52d48a9a624fd37390555d9589e719eac568c020b27e96eed671f25f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruff-0.12.12-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 01543c137fd3650d322922e8b14cc133b8ea734617c4891c5a9fccf4bfc9aa92
MD5 fd8d7d20b4414fc8db6940799cb7e5e6
BLAKE2b-256 13fc8962e7ddd2e81863d5c92400820f650b86f97ff919c59836fbc4c1a6d84c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruff-0.12.12-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 9ac93d87047e765336f0c18eacad51dad0c1c33c9df7484c40f98e1d773876f5
MD5 8a3617739316301cd4a9522325eef04c
BLAKE2b-256 745d88f3f06a142f58ecc8ecb0c2fe0b82343e2a2b04dcd098809f717cf74b6c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruff-0.12.12-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl
Algorithm Hash digest
SHA256 59f909c0fdd8f1dcdbfed0b9569b8bf428cf144bec87d9de298dcd4723f5bee8
MD5 77027157b9887a86ab42d9a30c7cdb57
BLAKE2b-256 980e91421368ae6c4f3765dd41a150f760c5f725516028a6be30e58255e3c668

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruff-0.12.12-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 b216ec0a0674e4b1214dcc998a5088e54eaf39417327b19ffefba1c4a1e4971e
MD5 bd9ef5e05f893fe313d5d51df8e9dcaf
BLAKE2b-256 9d3df8b1038f4b9822e26ec3d5b49cf2bc313e3c1564cceb4c1a42820bf74853

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruff-0.12.12-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 42a67d16e5b1ffc6d21c5f67851e0e769517fb57a8ebad1d0781b30888aa704e
MD5 4360ebfacda592f3055cc958c6e14276
BLAKE2b-256 9fd5707b92a61310edf358a389477eabd8af68f375c0ef858194be97ca5b6069

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruff-0.12.12-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 968e77094b1d7a576992ac078557d1439df678a34c6fe02fd979f973af167577
MD5 838617570122e3262103cba757591a61
BLAKE2b-256 e9036816b2ed08836be272e87107d905f0908be5b4a40c14bfc91043e76631b8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruff-0.12.12-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 abf4073688d7d6da16611f2f126be86523a8ec4343d15d276c614bda8ec44edb
MD5 37433b1a81e7a00f4278e49fb3ee58da
BLAKE2b-256 e8d29e3e40d399abc95336b1843f52fc0daaceb672d0e3c9290a28ff1a96f79d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruff-0.12.12-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 7acd6045e87fac75a0b0cdedacf9ab3e1ad9d929d149785903cff9bb69ad9727
MD5 5916b41f902fadc0f45c5f825a96e69d
BLAKE2b-256 c3c36e599657fe192462f94861a09aae935b869aea8a1da07f47d6eae471397c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruff-0.12.12-py3-none-linux_armv6l.whl
Algorithm Hash digest
SHA256 de1c4b916d98ab289818e55ce481e2cacfaad7710b01d1f990c497edf217dafc
MD5 8d9966dee9344fad75318047d9d9537c
BLAKE2b-256 09798d3d687224d88367b51c7974cec1040c4b015772bfbeffac95face14c04a

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