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.9/install.sh | sh
powershell -c "irm https://astral.sh/ruff/0.12.9/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.9
  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.9.tar.gz (5.3 MB view details)

Uploaded Source

Built Distributions

ruff-0.12.9-py3-none-win_arm64.whl (11.9 MB view details)

Uploaded Python 3Windows ARM64

ruff-0.12.9-py3-none-win_amd64.whl (12.8 MB view details)

Uploaded Python 3Windows x86-64

ruff-0.12.9-py3-none-win32.whl (11.7 MB view details)

Uploaded Python 3Windows x86

ruff-0.12.9-py3-none-musllinux_1_2_x86_64.whl (13.0 MB view details)

Uploaded Python 3musllinux: musl 1.2+ x86-64

ruff-0.12.9-py3-none-musllinux_1_2_i686.whl (12.5 MB view details)

Uploaded Python 3musllinux: musl 1.2+ i686

ruff-0.12.9-py3-none-musllinux_1_2_armv7l.whl (11.5 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARMv7l

ruff-0.12.9-py3-none-musllinux_1_2_aarch64.whl (11.8 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARM64

ruff-0.12.9-py3-none-manylinux_2_31_riscv64.whl (12.9 MB view details)

Uploaded Python 3manylinux: glibc 2.31+ riscv64

ruff-0.12.9-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (13.0 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

ruff-0.12.9-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl (12.7 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ s390x

ruff-0.12.9-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (13.7 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ppc64le

ruff-0.12.9-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl (14.3 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ppc64

ruff-0.12.9-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl (13.3 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ i686

ruff-0.12.9-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (11.6 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARMv7l

ruff-0.12.9-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (11.9 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

ruff-0.12.9-py3-none-macosx_11_0_arm64.whl (11.7 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

ruff-0.12.9-py3-none-macosx_10_12_x86_64.whl (12.5 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

ruff-0.12.9-py3-none-linux_armv6l.whl (11.8 MB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for ruff-0.12.9.tar.gz
Algorithm Hash digest
SHA256 fbd94b2e3c623f659962934e52c2bea6fc6da11f667a427a368adaf3af2c866a
MD5 4f22d7a75abd28275852c4adf3a75e56
BLAKE2b-256 4a452e403fa7007816b5fbb324cb4f8ed3c7402a927a0a0cb2b6279879a8bfdc

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for ruff-0.12.9-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 63c8c819739d86b96d500cce885956a1a48ab056bbcbc61b747ad494b2485089
MD5 01f4b100b5a68be6aa7856782f406890
BLAKE2b-256 acfd669816bc6b5b93b9586f3c1d87cd6bc05028470b3ecfebb5938252c47a35

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for ruff-0.12.9-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 6fb15b1977309741d7d098c8a3cb7a30bc112760a00fb6efb7abc85f00ba5908
MD5 96fc956b17a6bbd82f96a26c51d5cd3b
BLAKE2b-256 fa66cdddc2d1d9a9f677520b7cfc490d234336f523d4b429c1298de359a3be08

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for ruff-0.12.9-py3-none-win32.whl
Algorithm Hash digest
SHA256 cc7a37bd2509974379d0115cc5608a1a4a6c4bff1b452ea69db83c8855d53f93
MD5 afbc263cd8770093a643e2dcc4967294
BLAKE2b-256 c7c15f9a839a697ce1acd7af44836f7c2181cdae5accd17a5cb85fcbd694075e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruff-0.12.9-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f6be1d2ca0686c54564da8e7ee9e25f93bdd6868263805f8c0b8fc6a449db6d7
MD5 f6cb86a77cf71193f07532797a497b51
BLAKE2b-256 bd4bd8b95c6795a6c93b439bc913ee7a94fda42bb30a79285d47b80074003ee7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruff-0.12.9-py3-none-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 f5cd34fabfdea3933ab85d72359f118035882a01bff15bd1d2b15261d85d5f66
MD5 3affd979ef7bbf9e78432daa60869485
BLAKE2b-256 209c56f869d314edaa9fc1f491706d1d8a47747b9d714130368fbd69ce9024e9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruff-0.12.9-py3-none-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 07adb221c54b6bba24387911e5734357f042e5669fa5718920ee728aba3cbadc
MD5 bd8dfd95fb4ec99588703452671a80f1
BLAKE2b-256 58d6383e9f818a2441b1a0ed898d7875f11273f10882f997388b2b51cb2ae8b5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruff-0.12.9-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 43f07a3ccfc62cdb4d3a3348bf0588358a66da756aa113e071b8ca8c3b9826af
MD5 40574619ad0efb2c30c9efcd65c86058
BLAKE2b-256 a0bdb614d7c08515b1428ed4d3f1d4e3d687deffb2479703b90237682586fa66

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruff-0.12.9-py3-none-manylinux_2_31_riscv64.whl
Algorithm Hash digest
SHA256 881465ed56ba4dd26a691954650de6ad389a2d1fdb130fe51ff18a25639fe4bb
MD5 4997c2b46606b947c9c263dc567174e4
BLAKE2b-256 528ed0dbf2f9dca66c2d7131feefc386523404014968cd6d22f057763935ab32

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruff-0.12.9-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9fc83e4e9751e6c13b5046d7162f205d0a7bac5840183c5beebf824b08a27340
MD5 242575cd4c7e622639753fb7325551a9
BLAKE2b-256 470925033198bff89b24d734e6479e39b1968e4c992e82262d61cdccaf11afb9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruff-0.12.9-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 a03242c1522b4e0885af63320ad754d53983c9599157ee33e77d748363c561ce
MD5 f0432cad01d836a3a74055b01a34cab5
BLAKE2b-256 3b2f1c5cf6d8f656306d42a686f1e207f71d7cebdcbe7b2aa18e4e8a0cb74da3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruff-0.12.9-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 72db7521860e246adbb43f6ef464dd2a532ef2ef1f5dd0d470455b8d9f1773e0
MD5 eb4b8bbdc8d4d1b13aae7326d8df6549
BLAKE2b-256 d2821d0c53bd37dcb582b2c521d352fbf4876b1e28bc0d8894344198f6c9950d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruff-0.12.9-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl
Algorithm Hash digest
SHA256 17d5b6b0b3a25259b69ebcba87908496e6830e03acfb929ef9fd4c58675fa2ea
MD5 fcd6a37581c2469819c60e8470501276
BLAKE2b-256 a221eaf3806f0a3d4c6be0a69d435646fba775b65f3f2097d54898b0fd4bb12e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruff-0.12.9-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 3d02faa2977fb6f3f32ddb7828e212b7dd499c59eb896ae6c03ea5c303575756
MD5 1a1d3856b8c0c48efe5efeb96d45a75b
BLAKE2b-256 5920b73132f66f2856bc29d2d263c6ca457f8476b0bbbe064dac3ac3337a270f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruff-0.12.9-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 1b15599931a1a7a03c388b9c5df1bfa62be7ede6eb7ef753b272381f39c3d0ff
MD5 46b16225ad67a215407891c1bbfe8151
BLAKE2b-256 fdd19b7d46625d617c7df520d40d5ac6cdcdf20cbccb88fad4b5ecd476a6bb8d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruff-0.12.9-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d596c2d0393c2502eaabfef723bd74ca35348a8dac4267d18a94910087807c53
MD5 901733145cc3674c973e408534aa04f9
BLAKE2b-256 72e644615c754b55662200c48bebb02196dbb14111b6e266ab071b7e7297b4ec

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruff-0.12.9-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5b15ea354c6ff0d7423814ba6d44be2807644d0c05e9ed60caca87e963e93f70
MD5 babe4fa1118b143e75f9eb3bfed3992b
BLAKE2b-256 8b45cfcdf6d3eb5fc78a5b419e7e616d6ccba0013dc5b180522920af2897e1be

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruff-0.12.9-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 aed9d15f8c5755c0e74467731a007fcad41f19bcce41cd75f768bbd687f8535f
MD5 20232228953f3b16864f5b3d92d767c7
BLAKE2b-256 204dc764ee423002aac1ec66b9d541285dd29d2c0640a8086c87de59ebbe80d5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruff-0.12.9-py3-none-linux_armv6l.whl
Algorithm Hash digest
SHA256 fcebc6c79fcae3f220d05585229463621f5dbf24d79fdc4936d9302e177cfa3e
MD5 de8a4fbdcd01cc3f20ef535c5dcaec31
BLAKE2b-256 ad2053bf098537adb7b6a97d98fcdebf6e916fcd11b2e21d15f8c171507909cc

See more details on using hashes here.

Supported by

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