Skip to main content

An extremely fast Python linter, written in Rust.

Project description

Ruff

Ruff image image image Actions status

Discord | Docs | Playground

An extremely fast Python linter, written in Rust.

Shows a bar chart with benchmark results.

Linting the CPython codebase from scratch.

  • ⚡️ 10-100x faster than existing linters
  • 🐍 Installable via pip
  • 🛠️ pyproject.toml support
  • 📦 Built-in caching, to avoid re-analyzing unchanged files
  • 🔧 Autofix support, for automatic error correction (e.g., automatically remove unused imports)
  • 📏 Over 400 built-in rules (and growing)
  • ⚖️ Near-parity with the built-in Flake8 rule set
  • 🔌 Native re-implementations of dozens of 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), isort, pydocstyle, yesqa, eradicate, pyupgrade, and autoflake, 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.

Read the launch blog post or the most recent project update.

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. Installation and Usage
  2. Configuration
  3. Supported Rules
  4. Contributing
  5. Support
  6. Acknowledgements
  7. Who's Using Ruff?
  8. License

Installation and Usage

For more, see the documentation.

Installation

Ruff is available as ruff on PyPI:

pip install ruff

For macOS Homebrew and Linuxbrew users, Ruff is also available as ruff on Homebrew:

brew install ruff

For Conda users, Ruff is also available as ruff on conda-forge:

conda install -c conda-forge ruff

For Arch Linux users, Ruff is also available as ruff on the official repositories:

pacman -S ruff

For Alpine users, Ruff is also available as ruff on the testing repositories:

apk add ruff

Packaging status

Usage

To run Ruff, 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`

You can run Ruff in --watch mode to automatically re-run on-change:

ruff check path/to/code/ --watch

Ruff also works with pre-commit:

- repo: https://github.com/charliermarsh/ruff-pre-commit
  # Ruff version.
  rev: 'v0.0.249'
  hooks:
    - id: ruff

Or, to enable autofix:

- repo: https://github.com/charliermarsh/ruff-pre-commit
  # Ruff version.
  rev: 'v0.0.249'
  hooks:
    - id: ruff
      args: [--fix, --exit-non-zero-on-fix]

Configuration

Ruff can be configured via a pyproject.toml file, a ruff.toml file, or through the command line.

For a complete enumeration of the available configuration options, see the documentation.

Configure via pyproject.toml

If left unspecified, the default configuration is equivalent to:

[tool.ruff]
# Enable Pyflakes `E` and `F` codes by default.
select = ["E", "F"]
ignore = []

# Allow autofix for all enabled rules (when `--fix`) is provided.
fixable = ["A", "B", "C", "D", "E", "F", "..."]
unfixable = []

# Exclude a variety of commonly ignored directories.
exclude = [
    ".bzr",
    ".direnv",
    ".eggs",
    ".git",
    ".hg",
    ".mypy_cache",
    ".nox",
    ".pants.d",
    ".pytype",
    ".ruff_cache",
    ".svn",
    ".tox",
    ".venv",
    "__pypackages__",
    "_build",
    "buck-out",
    "build",
    "dist",
    "node_modules",
    "venv",
]
per-file-ignores = {}

# Same as Black.
line-length = 88

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

# Assume Python 3.10.
target-version = "py310"

[tool.ruff.mccabe]
# Unlike Flake8, default to a complexity level of 10.
max-complexity = 10

As an example, the following would configure Ruff to: (1) enforce flake8-bugbear rules, in addition to the defaults; (2) avoid enforcing line-length violations (E501); (3) avoid attempting to fix flake8-bugbear (B) violations; and (3) ignore import-at-top-of-file violations (E402) in __init__.py files:

[tool.ruff]
# Enable flake8-bugbear (`B`) rules.
select = ["E", "F", "B"]

# Never enforce `E501` (line length violations).
ignore = ["E501"]

# Avoid trying to fix flake8-bugbear (`B`) violations.
unfixable = ["B"]

# Ignore `E402` (import violations) in all `__init__.py` files, and in `path/to/file.py`.
[tool.ruff.per-file-ignores]
"__init__.py" = ["E402"]
"path/to/file.py" = ["E402"]

Plugin configurations should be expressed as subsections, e.g.:

[tool.ruff]
# Add "Q" to the list of enabled codes.
select = ["E", "F", "Q"]

[tool.ruff.flake8-quotes]
docstring-quotes = "double"

Ruff mirrors Flake8's rule code system, in which each rule code consists of a one-to-three letter prefix, followed by three digits (e.g., F401). The prefix indicates that "source" of the rule (e.g., F for Pyflakes, E for pycodestyle, ANN for flake8-annotations). The set of enabled rules is determined by the select and ignore options, which support both the full code (e.g., F401) and the prefix (e.g., F).

As a special-case, Ruff also supports the ALL code, which enables all rules. Note that some of the pydocstyle rules conflict (e.g., D203 and D211) as they represent alternative docstring formats. Enabling ALL without further configuration may result in suboptimal behavior, especially for the pydocstyle plugin.

If you're wondering how to configure Ruff, here are some recommended guidelines:

  • Prefer select and ignore over extend-select and extend-ignore, to make your rule set explicit.
  • Use ALL with discretion. Enabling ALL will implicitly enable new rules whenever you upgrade.
  • Start with a small set of rules (select = ["E", "F"]) and add a category at-a-time. For example, you might consider expanding to select = ["E", "F", "B"] to enable the popular flake8-bugbear extension.
  • By default, Ruff's autofix is aggressive. If you find that it's too aggressive for your liking, consider turning off autofix for specific rules or categories (see: FAQ).

Configure via ruff.toml

As an alternative to pyproject.toml, Ruff will also respect a ruff.toml file, which implements an equivalent schema (though the [tool.ruff] hierarchy can be omitted). For example, the pyproject.toml described above would be represented via the following ruff.toml:

# Enable flake8-bugbear (`B`) rules.
select = ["E", "F", "B"]

# Never enforce `E501` (line length violations).
ignore = ["E501"]

# Avoid trying to fix flake8-bugbear (`B`) violations.
unfixable = ["B"]

# Ignore `E402` (import violations) in all `__init__.py` files, and in `path/to/file.py`.
[per-file-ignores]
"__init__.py" = ["E402"]
"path/to/file.py" = ["E402"]

For a full list of configurable options, see the list of all options.

Command-line interface

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

ruff check path/to/code/ --select F401 --select F403 --quiet

See ruff help for more on Ruff's top-level commands:

Ruff: An extremely fast Python linter.

Usage: ruff [OPTIONS] <COMMAND>

Commands:
  check   Run Ruff on the given files or directories (default)
  rule    Explain a rule
  config  List or describe the available configuration options
  linter  List all supported upstream linters
  clean   Clear any caches in the current directory and any subdirectories
  help    Print this message or the help of the given subcommand(s)

Options:
  -h, --help     Print help
  -V, --version  Print version

Log levels:
  -v, --verbose  Enable verbose logging
  -q, --quiet    Print lint violations, but nothing else
  -s, --silent   Disable all logging (but still exit with status code "1" upon detecting lint violations)

For help with a specific command, see: `ruff help <command>`.

Or ruff help check for more on the linting command:

Run Ruff on the given files or directories (default)

Usage: ruff check [OPTIONS] [FILES]...

Arguments:
  [FILES]...  List of files or directories to check

Options:
      --fix
          Attempt to automatically fix lint violations
      --show-source
          Show violations with source code
      --show-fixes
          Show an enumeration of all autofixed lint violations
      --diff
          Avoid writing any fixed files back; instead, output a diff for each changed file to stdout
  -w, --watch
          Run in watch mode by re-running whenever files change
      --fix-only
          Fix any fixable lint violations, but don't report on leftover violations. Implies `--fix`
      --format <FORMAT>
          Output serialization format for violations [env: RUFF_FORMAT=] [possible values: text, json, junit, grouped, github, gitlab, pylint]
      --target-version <TARGET_VERSION>
          The minimum Python version that should be supported
      --config <CONFIG>
          Path to the `pyproject.toml` or `ruff.toml` file to use for configuration
      --statistics
          Show counts for every rule with at least one violation
      --add-noqa
          Enable automatic additions of `noqa` directives to failing lines
      --show-files
          See the files Ruff will be run against with the current settings
      --show-settings
          See the settings Ruff will use to lint a given Python file
  -h, --help
          Print help

Rule selection:
      --select <RULE_CODE>
          Comma-separated list of rule codes to enable (or ALL, to enable all rules)
      --ignore <RULE_CODE>
          Comma-separated list of rule codes to disable
      --extend-select <RULE_CODE>
          Like --select, but adds additional rule codes on top of the selected ones
      --per-file-ignores <PER_FILE_IGNORES>
          List of mappings from file pattern to code to exclude
      --fixable <RULE_CODE>
          List of rule codes to treat as eligible for autofix. Only applicable when autofix itself is enabled (e.g., via `--fix`)
      --unfixable <RULE_CODE>
          List of rule codes to treat as ineligible for autofix. Only applicable when autofix itself is enabled (e.g., via `--fix`)

File selection:
      --exclude <FILE_PATTERN>         List of paths, used to omit files and/or directories from analysis
      --extend-exclude <FILE_PATTERN>  Like --exclude, but adds additional files and directories on top of those already excluded
      --respect-gitignore              Respect file exclusions via `.gitignore` and other standard ignore files
      --force-exclude                  Enforce exclusions, even for paths passed to Ruff directly on the command-line

Miscellaneous:
  -n, --no-cache
          Disable cache reads
      --isolated
          Ignore all configuration files
      --cache-dir <CACHE_DIR>
          Path to the cache directory [env: RUFF_CACHE_DIR=]
      --stdin-filename <STDIN_FILENAME>
          The name of the file when passing it through stdin
  -e, --exit-zero
          Exit with status code "0", even upon detecting lint violations
      --exit-non-zero-on-fix
          Exit with a non-zero status code if any files were modified via autofix, even if no lint violations remain

Log levels:
  -v, --verbose  Enable verbose logging
  -q, --quiet    Print lint violations, but nothing else
  -s, --silent   Disable all logging (but still exit with status code "1" upon detecting lint violations)

pyproject.toml discovery

Similar to ESLint, Ruff supports hierarchical configuration, such that the "closest" pyproject.toml file in the directory hierarchy is used for every individual file, with all paths in the pyproject.toml file (e.g., exclude globs, src paths) being resolved relative to the directory containing the pyproject.toml file.

There are a few exceptions to these rules:

  1. In locating the "closest" pyproject.toml file for a given path, Ruff ignores any pyproject.toml files that lack a [tool.ruff] section.
  2. If a configuration file is passed directly via --config, those settings are used for across files. Any relative paths in that configuration file (like exclude globs or src paths) are resolved relative to the current working directory.
  3. If no pyproject.toml file is found in the filesystem hierarchy, Ruff will fall back to using a default configuration. If a user-specific configuration file exists at ${config_dir}/ruff/pyproject.toml, that file will be used instead of the default configuration, with ${config_dir} being determined via the dirs crate, and all relative paths being again resolved relative to the current working directory.
  4. Any pyproject.toml-supported settings that are provided on the command-line (e.g., via --select) will override the settings in every resolved configuration file.

Unlike ESLint, Ruff does not merge settings across configuration files; instead, the "closest" configuration file is used, and any parent configuration files are ignored. In lieu of this implicit cascade, Ruff supports an extend field, which allows you to inherit the settings from another pyproject.toml file, like so:

# Extend the `pyproject.toml` file in the parent directory.
extend = "../pyproject.toml"
# But use a different line length.
line-length = 100

All of the above rules apply equivalently to ruff.toml files. If Ruff detects both a ruff.toml and pyproject.toml file, it will defer to the ruff.toml.

Python file discovery

When passed a path on the command-line, Ruff will automatically discover all Python files in that path, taking into account the exclude and extend-exclude settings in each directory's pyproject.toml file.

By default, Ruff will also skip any files that are omitted via .ignore, .gitignore, .git/info/exclude, and global gitignore files (see: respect-gitignore).

Files that are passed to ruff directly are always linted, regardless of the above criteria. For example, ruff check /path/to/excluded/file.py will always lint file.py.

Rule resolution

The set of enabled rules is controlled via the select and ignore settings, along with the extend-select and extend-ignore modifiers.

To resolve the enabled rule set, Ruff may need to reconcile select and ignore from a variety of sources, including the current pyproject.toml, any inherited pyproject.toml files, and the CLI (e.g., --select).

In those scenarios, Ruff uses the "highest-priority" select as the basis for the rule set, and then applies any extend-select, ignore, and extend-ignore adjustments. CLI options are given higher priority than pyproject.toml options, and the current pyproject.toml file is given higher priority than any inherited pyproject.toml files.

For example, given the following pyproject.toml file:

[tool.ruff]
select = ["E", "F"]
ignore = ["F401"]

Running ruff check --select F401 would result in Ruff enforcing F401, and no other rules.

Running ruff check --extend-select B would result in Ruff enforcing the E, F, and B rules, with the exception of F401.

Suppressing errors

To omit a lint rule entirely, add it to the "ignore" list via ignore or extend-ignore, either on the command-line or in your pyproject.toml file.

To ignore a violation inline, Ruff uses a noqa system similar to Flake8. To ignore an individual violation, add # noqa: {code} to the end of the line, like so:

# Ignore F841.
x = 1  # noqa: F841

# Ignore E741 and F841.
i = 1  # noqa: E741, F841

# Ignore _all_ violations.
x = 1  # noqa

Note that, for multi-line strings, the noqa directive should come at the end of the string, and will apply to the entire string, like so:

"""Lorem ipsum dolor sit amet.

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor.
"""  # noqa: E501

To ignore all violations across an entire file, add # ruff: noqa to any line in the file, like so:

# ruff: noqa

To ignore a specific rule across an entire file, add # ruff: noqa: {code} to any line in the file, like so:

# ruff: noqa: F841

Or see the per-file-ignores configuration setting, which enables the same functionality via a pyproject.toml file.

Note that Ruff will also respect Flake8's # flake8: noqa directive, and will treat it as equivalent to # ruff: noqa.

Automatic error suppression

Ruff supports several workflows to aid in noqa management.

First, Ruff provides a special rule code, RUF100, to enforce that your noqa directives are "valid", in that the violations they say they ignore are actually being triggered on that line (and thus suppressed). You can run ruff check /path/to/file.py --extend-select RUF100 to flag unused noqa directives.

Second, Ruff can automatically remove unused noqa directives via its autofix functionality. You can run ruff check /path/to/file.py --extend-select RUF100 --fix to automatically remove unused noqa directives.

Third, Ruff can automatically add noqa directives to all failing lines. This is useful when migrating a new codebase to Ruff. You can run ruff check /path/to/file.py --add-noqa to automatically add noqa directives to all failing lines, with the appropriate rule codes.

Action comments

Ruff respects isort's action comments (# isort: skip_file, # isort: on, # isort: off, # isort: skip, and # isort: split), which enable selectively enabling and disabling import sorting for blocks of code and other inline configuration.

See the isort documentation for more.

Exit codes

By default, Ruff exits with the following status codes:

  • 0 if no violations were found, or if all present violations were fixed automatically.
  • 1 if violations were found.
  • 2 if Ruff terminates abnormally due to invalid configuration, invalid CLI options, or an internal error.

This convention mirrors that of tools like ESLint, Prettier, and RuboCop.

Ruff supports two command-line flags that alter its exit code behavior:

  • --exit-zero will cause Ruff to exit with a status code of 0 even if violations were found. Note that Ruff will still exit with a status code of 2 if it terminates abnormally.
  • --exit-non-zero-on-fix will cause Ruff to exit with a status code of 1 if violations were found, even if all such violations were fixed automatically. Note that the use of --exit-non-zero-on-fix can result in a non-zero exit code even if no violations remain after autofixing.

Autocompletion

Ruff supports autocompletion for most shells. A shell-specific completion script can be generated by ruff generate-shell-completion <SHELL>, where <SHELL> is one of bash, elvish, fig, fish, powershell, or zsh.

The exact steps required to enable autocompletion will vary by shell. For example instructions, see the Poetry or ripgrep documentation.

As an example: to enable autocompletion for Zsh, run ruff generate-shell-completion zsh > ~/.zfunc/_ruff. Then add the following line to your ~/.zshrc file, if they're not already present:

fpath+=~/.zfunc
autoload -Uz compinit && compinit

Supported Rules

Ruff supports over 400 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 E and F rules. Ruff supports all rules from the F category, and a subset of the E category, omitting those stylistic rules made obsolete by the use of an autoformatter, like Black.

For a complete enumeration, see the list of rules in the Ruff documentation.

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 autoformatter is built on a fork of Rome's rome_formatter, and again draws on both the APIs and implementation details of Rome, Prettier, and Black.

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 in a number of major open-source projects, including:

License

MIT

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.0.249.tar.gz (727.6 kB view details)

Uploaded Source

Built Distributions

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

ruff-0.0.249-py3-none-win_arm64.whl (3.3 MB view details)

Uploaded Python 3Windows ARM64

ruff-0.0.249-py3-none-win_amd64.whl (3.5 MB view details)

Uploaded Python 3Windows x86-64

ruff-0.0.249-py3-none-win32.whl (3.4 MB view details)

Uploaded Python 3Windows x86

ruff-0.0.249-py3-none-musllinux_1_2_x86_64.whl (4.0 MB view details)

Uploaded Python 3musllinux: musl 1.2+ x86-64

ruff-0.0.249-py3-none-musllinux_1_2_i686.whl (3.7 MB view details)

Uploaded Python 3musllinux: musl 1.2+ i686

ruff-0.0.249-py3-none-musllinux_1_2_armv7l.whl (3.4 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARMv7l

ruff-0.0.249-py3-none-musllinux_1_2_aarch64.whl (3.7 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARM64

ruff-0.0.249-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.9 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

ruff-0.0.249-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl (4.7 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ s390x

ruff-0.0.249-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (4.3 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ppc64le

ruff-0.0.249-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl (4.4 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ppc64

ruff-0.0.249-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl (3.8 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ i686

ruff-0.0.249-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (3.4 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARMv7l

ruff-0.0.249-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.7 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

ruff-0.0.249-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl (7.4 MB view details)

Uploaded Python 3macOS 10.9+ universal2 (ARM64, x86-64)macOS 10.9+ x86-64macOS 11.0+ ARM64

ruff-0.0.249-py3-none-macosx_10_7_x86_64.whl (3.9 MB view details)

Uploaded Python 3macOS 10.7+ x86-64

File details

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

File metadata

  • Download URL: ruff-0.0.249.tar.gz
  • Upload date:
  • Size: 727.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.6

File hashes

Hashes for ruff-0.0.249.tar.gz
Algorithm Hash digest
SHA256 b590689f08ecef971c45555cbda6854cdf48f3828fc326802828e851b1a14b3d
MD5 437f2663e7fc48671fed3191f1e60141
BLAKE2b-256 7f94272af850e74af298d17830acd7612792e7ba048fdd21f049a6cbb4ae57fb

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ruff-0.0.249-py3-none-win_arm64.whl
  • Upload date:
  • Size: 3.3 MB
  • Tags: Python 3, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.6

File hashes

Hashes for ruff-0.0.249-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 3d2d11a7b750433f3acec30641faab673d101aa86a2ddfe4af8bcfa773b178e2
MD5 d67d7e6c3ab29cb3467f236ee7e08d44
BLAKE2b-256 f45b0ae53d2e1baf4a59e5d351e59789ee8d5bf3218f4f10cec5f59684f0f277

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ruff-0.0.249-py3-none-win_amd64.whl
  • Upload date:
  • Size: 3.5 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.6

File hashes

Hashes for ruff-0.0.249-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 4cc437ab55a35088008dbe9db598cd8e240b5f70fb88eb8ab6fa1de529007f30
MD5 f338ecb08878aa42007fca59925d8f9d
BLAKE2b-256 bbe6ecd0f327017db6f928fc48b2a729dcf4deef1a6eb7bff9316bc50f368fd9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ruff-0.0.249-py3-none-win32.whl
  • Upload date:
  • Size: 3.4 MB
  • Tags: Python 3, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.6

File hashes

Hashes for ruff-0.0.249-py3-none-win32.whl
Algorithm Hash digest
SHA256 f4837a7e6d1ff81cb027695deb28793e0945cca8d88e87b46ff845ef38d52c82
MD5 4c53973cfa7c27eeb7229ee737b7389a
BLAKE2b-256 e45e08d0b365503a1e6c61a92a4959d704b27f1e2192293a035fb20358d36342

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruff-0.0.249-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f1e988e9365b11c6d7796c0d4a0556f6a26f0627fe57e9e7411ff91f421fb502
MD5 6b8416976066f0d08c03d69bd75a9924
BLAKE2b-256 07624c5f0daab3ee0bd055a497f3c5d19710e9f3320cb67f8258c932986e0960

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ruff-0.0.249-py3-none-musllinux_1_2_i686.whl
  • Upload date:
  • Size: 3.7 MB
  • Tags: Python 3, musllinux: musl 1.2+ i686
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.6

File hashes

Hashes for ruff-0.0.249-py3-none-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 980a3bce8ba38c9b47bc000915e80a672add9f7e9c5b128375486ec8cd8f860d
MD5 b5fae0abb5c65a722ab70ae95273a250
BLAKE2b-256 558fc82bf44f2442666393b4c8a5acb54dbda3136df53b8803c3ebd3ebf6a491

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruff-0.0.249-py3-none-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 be23c57b9551d8fcf559755e5bc56ac5bcbc3215fc8a3190ea6ed1bb9133d8dd
MD5 8179520d030b091331fae1f5b63afaee
BLAKE2b-256 4a4d44c01d541559e2cc1634c9af365c826d43be6cac85ad0d07d4a684df7e04

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruff-0.0.249-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 a6f494276ee281eb09c7026cc17df1bfc2fe59ab39a87196014ce093ff27f1a0
MD5 d1a32a1efd3279f5d1860d35694e7bc1
BLAKE2b-256 e4e59a1ca1f78d727900e26837633ecee0dcfbaf69732da15e6c90510e155297

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruff-0.0.249-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e3d859744e1cc95ad5e52c4642509b3abb5ea0833f0529c380c2731b8cab5726
MD5 144c50ff843c5565365e506644331156
BLAKE2b-256 ba8af1c36cf1fd10991c52813d5f44f38f3e2357ea354cac3e5ee41bccd413ab

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruff-0.0.249-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 7b67c44ab260d3a838ec237c7234be1098bf2ef1421036fbbb229698513d1fc3
MD5 a38cd6eddb5803b1f2061cf33323c857
BLAKE2b-256 13f5ae8773875b325e0439bafdd8b5e10f45943fab5b8625f24bb91fd3ea7c30

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruff-0.0.249-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 6ab43389216cc8403db84992977e6f5e8fee83bd10aca05e1f2f262754cd8384
MD5 fec4f43cf077b7a80c50d3807a1db0d7
BLAKE2b-256 1f4e86bd3e631fde6b176b9eb2024f8456419eba15fa5cb97612972109ca0c3e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruff-0.0.249-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl
Algorithm Hash digest
SHA256 2815e05ba168dee6708dbbdab8d0c145bb3b0085c91ee552839c1c18a52f6cb1
MD5 9fc4a91cabc97f994d84667f4eded8a0
BLAKE2b-256 b49ec1e281afafd1a6f3b87409922bf638c9333496a581008d9f7cba923cc7a8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruff-0.0.249-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 bf3af16748c8539a48451edbcb687994eccc6a764c95f42de22195007ae13a24
MD5 54892db368a19dd8e08035c5b9ed5f54
BLAKE2b-256 756b9ba6a97e26009d3265116d25161288e8d3e86643b02a6c2d843ced004347

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruff-0.0.249-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 855cfe47d146a1eb68347025c7b5ad651c083343de6cb7ccf90585bda3e381db
MD5 9dbb9cbc28c961df670861e6ff94813d
BLAKE2b-256 66b89e30ea0dbd0e7fa1ed4874eedf6ba35e83d3f12bcdbde6e9e759e6e77ff2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ruff-0.0.249-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6c2dcc1f3053092aeedef8e47704e301b74687fa480fe5e7ebef2b0eb2e4a0bd
MD5 31738e90881538c2249a8ebfe84d4818
BLAKE2b-256 9ac7ea0e9965b497c8757616b8bd1878328914c042ac78cc6c0fc0761dd9c4ac

See more details on using hashes here.

File details

Details for the file ruff-0.0.249-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for ruff-0.0.249-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 46537d960221e97adc6a3556159ab3ae4b722b9985de13c50b436732d4659af0
MD5 04304e34c2b21ccf75b16e3450091931
BLAKE2b-256 9ad8001f7bcec590956dc7c7841afb5547c7c76016482321a466c73189238a36

See more details on using hashes here.

File details

Details for the file ruff-0.0.249-py3-none-macosx_10_7_x86_64.whl.

File metadata

File hashes

Hashes for ruff-0.0.249-py3-none-macosx_10_7_x86_64.whl
Algorithm Hash digest
SHA256 03a26f1cb5605508de49d921d0970895b9e3ad4021f776a53be18fa95a4fc25b
MD5 7cf0d86414e3e5843ff26d7f0c9dd105
BLAKE2b-256 2c7de0a372a2f149459b4934bb935b8aab7bd1bdeb554e93500cf4f5e720fcce

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