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.13.3/install.sh | sh
powershell -c "irm https://astral.sh/ruff/0.13.3/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.13.3
  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.13.3.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.13.3-py3-none-win_arm64.whl (12.5 MB view details)

Uploaded Python 3Windows ARM64

ruff-0.13.3-py3-none-win_amd64.whl (13.5 MB view details)

Uploaded Python 3Windows x86-64

ruff-0.13.3-py3-none-win32.whl (12.3 MB view details)

Uploaded Python 3Windows x86

ruff-0.13.3-py3-none-musllinux_1_2_x86_64.whl (13.6 MB view details)

Uploaded Python 3musllinux: musl 1.2+ x86-64

ruff-0.13.3-py3-none-musllinux_1_2_i686.whl (13.2 MB view details)

Uploaded Python 3musllinux: musl 1.2+ i686

ruff-0.13.3-py3-none-musllinux_1_2_armv7l.whl (12.3 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARMv7l

ruff-0.13.3-py3-none-musllinux_1_2_aarch64.whl (12.4 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARM64

ruff-0.13.3-py3-none-manylinux_2_31_riscv64.whl (13.7 MB view details)

Uploaded Python 3manylinux: glibc 2.31+ riscv64

ruff-0.13.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (13.4 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

ruff-0.13.3-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl (13.4 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ s390x

ruff-0.13.3-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (14.4 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ppc64le

ruff-0.13.3-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl (15.0 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ppc64

ruff-0.13.3-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl (14.0 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ i686

ruff-0.13.3-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (12.3 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARMv7l

ruff-0.13.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (12.6 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

ruff-0.13.3-py3-none-macosx_11_0_arm64.whl (12.3 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

ruff-0.13.3-py3-none-macosx_10_12_x86_64.whl (13.1 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

ruff-0.13.3-py3-none-linux_armv6l.whl (12.5 MB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for ruff-0.13.3.tar.gz
Algorithm Hash digest
SHA256 5b0ba0db740eefdfbcce4299f49e9eaefc643d4d007749d77d047c2bab19908e
MD5 f14b52110b794b0c6c45689e32201967
BLAKE2b-256 c78ef9f9ca747fea8e3ac954e3690d4698c9737c23b51731d02df999c150b1c9

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for ruff-0.13.3-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 9e9e9d699841eaf4c2c798fa783df2fabc680b72059a02ca0ed81c460bc58330
MD5 c240e1470bf915f95325aeb4c1828834
BLAKE2b-256 fe727b83242b26627a00e3af70d0394d68f8f02750d642567af12983031777fc

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for ruff-0.13.3-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 621e2e5812b691d4f244638d693e640f188bacbb9bc793ddd46837cea0503dd2
MD5 a376be193757af5617af6af4c04f0acf
BLAKE2b-256 cf4912f5955818a1139eed288753479ba9d996f6ea0b101784bb1fe6977ec128

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for ruff-0.13.3-py3-none-win32.whl
Algorithm Hash digest
SHA256 f14e0d1fe6460f07814d03c6e32e815bff411505178a1f539a38f6097d3e8ee3
MD5 4a6e5fdcf5c037581569444ae2ade69f
BLAKE2b-256 28d3bb25ee567ce2f61ac52430cf99f446b0e6d49bdfa4188699ad005fdd16aa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruff-0.13.3-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1a993b17ec03719c502881cb2d5f91771e8742f2ca6de740034433a97c561989
MD5 aad2c65f07a49a2b3089e17bd85660ff
BLAKE2b-256 9bde7b5db7e39947d9dc1c5f9f17b838ad6e680527d45288eeb568e860467010

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruff-0.13.3-py3-none-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 9cc48a3564423915c93573f1981d57d101e617839bef38504f85f3677b3a0a3e
MD5 84416b8edddccda795f434801822cacb
BLAKE2b-256 a5994086f9c43f85e0755996d09bdcb334b6fee9b1eabdf34e7d8b877fadf964

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruff-0.13.3-py3-none-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 6b547def0a40054825de7cfa341039ebdfa51f3d4bfa6a0772940ed351d2746c
MD5 09aa9e88f5a5649de47c06684bf5ba39
BLAKE2b-256 0d1ecbe7082588d025cddbb2f23e6dfef08b1a2ef6d6f8328584ad3015b5cebd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruff-0.13.3-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 6b139f638a80eae7073c691a5dd8d581e0ba319540be97c343d60fb12949c8d0
MD5 f70f495711d16809681074b882bf8c02
BLAKE2b-256 32b0a8705065b2dafae007bcae21354e6e2e832e03eb077bb6c8e523c2becb92

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruff-0.13.3-py3-none-manylinux_2_31_riscv64.whl
Algorithm Hash digest
SHA256 8e5640349493b378431637019366bbd73c927e515c9c1babfea3e932f5e68e1d
MD5 89b951d47fc695a028d160d6127a203d
BLAKE2b-256 50a1b655298a1f3fda4fdc7340c3f671a4b260b009068fbeb3e4e151e9e3e1bf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruff-0.13.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 dc742c50f4ba72ce2a3be362bd359aef7d0d302bf7637a6f942eaa763bd292af
MD5 ecd97699b96d0f62f7f15d10d16546b9
BLAKE2b-256 abb5c0feca27d45ae74185a6bacc399f5d8920ab82df2d732a17213fb86a2c4c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruff-0.13.3-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 6052f8088728898e0a449f0dde8fafc7ed47e4d878168b211977e3e7e854f662
MD5 b1e832311788013d8828963f4899c1b1
BLAKE2b-256 39493de381343e89364c2334c9f3268b0349dc734fc18b2d99a302d0935c8345

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruff-0.13.3-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 17b951f9d9afb39330b2bdd2dd144ce1c1335881c277837ac1b50bfd99985ed3
MD5 127ac4e020cd92ce52745a4b499a31c0
BLAKE2b-256 97e5f403a60a12258e0fd0c2195341cfa170726f254c788673495d86ab5a9a9d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruff-0.13.3-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl
Algorithm Hash digest
SHA256 4fb75e7c402d504f7a9a259e0442b96403fa4a7310ffe3588d11d7e170d2b1e3
MD5 a75dd0cf19ef3238c189e8d07acda3bc
BLAKE2b-256 0ca67c8ec09d62d5a406e2b17d159e4817b63c945a8b9188a771193b7e1cc0b5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruff-0.13.3-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 78cc1abed87ce40cb07ee0667ce99dbc766c9f519eabfd948ed87295d8737c60
MD5 69382c97e60c7c95abebf782db21d1b6
BLAKE2b-256 10f8387976bf00d126b907bbd7725219257feea58650e6b055b29b224d8cb731

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruff-0.13.3-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 5bf62b705f319476c78891e0e97e965b21db468b3c999086de8ffb0d40fd2822
MD5 5f9b988500ac6f8d3dddf213d02426ee
BLAKE2b-256 ce190f3681c941cdcfa2d110ce4515624c07a964dc315d3100d889fcad3bfc9e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruff-0.13.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1c9e6469864f94a98f412f20ea143d547e4c652f45e44f369d7b74ee78185838
MD5 d9c620fd4695c3a3135d4f1fa5e7efa8
BLAKE2b-256 a542bcbccb8141305f9a6d3f72549dd82d1134299177cc7eaf832599700f95a7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruff-0.13.3-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fc6fa4637284708d6ed4e5e970d52fc3b76a557d7b4e85a53013d9d201d93286
MD5 0babcb1f9c4113dc129d5bd2a609b524
BLAKE2b-256 409015649af836d88c9f154e5be87e64ae7d2b1baa5a3ef317cb0c8fafcd882d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruff-0.13.3-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 2bdad6512fb666b40fcadb65e33add2b040fc18a24997d2e47fee7d66f7fcae2
MD5 6978a047739ec2b537c143d9b4fdb4b9
BLAKE2b-256 b0b54a21a4922e5dd6845e91896b0d9ef493574cbe061ef7d00a73c61db531af

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruff-0.13.3-py3-none-linux_armv6l.whl
Algorithm Hash digest
SHA256 311860a4c5e19189c89d035638f500c1e191d283d0cc2f1600c8c80d6dcd430c
MD5 a520ac6f5b782473ff6987546334c931
BLAKE2b-256 d2338f7163553481466a92656d35dea9331095122bb84cf98210bef597dd2ecd

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