An extremely fast Python linter, written in Rust.
Project description
ruff
An extremely fast Python linter, written in Rust.
Linting the CPython codebase from scratch.
Major features:
- 10-100x faster than your current linter.
- Installable via
pip. - Python 3.10 compatibility.
- ESLint-inspired cache semantics.
- TypeScript-inspired
--watchsemantics. pyproject.tomlsupport.
ruff is a proof-of-concept and not yet intended for production use. It supports only a small subset of the Flake8 rules, and may crash on your codebase.
Installation and usage
Installation
Available as ruff on PyPI:
pip install ruff
For now, wheels are only available for macOS (on Python 3.7, 3.8, 3.9, and 3.10). If you're using a
different operating system or Python version, you'll need to install the Rust toolchain
prior to running pip install ruff. (This is an effort limitation on my part, not a technical
limitation.)
Usage
To run ruff, try any of the following:
ruff path/to/code/to/check.py
ruff path/to/code/
ruff path/to/code/*.py
You can run ruff in --watch mode to automatically re-run on-change:
ruff path/to/code/ --watch
Configuration
ruff is configurable both via pyproject.toml and the command line.
For example, you could configure ruff to only enforce a subset of rules with:
[tool.ruff]
line-length = 88
select = [
"F401",
"F403",
]
Alternatively, on the command-line:
ruff path/to/code/ --select F401 F403
See ruff --help for more:
ruff
A Python linter written in Rust
USAGE:
ruff [OPTIONS] <FILES>...
ARGS:
<FILES>...
OPTIONS:
-e, --exit-zero Exit with status code "0", even upon detecting errors
-h, --help Print help information
--ignore <IGNORE>... Comma-separated list of error codes to ignore
-n, --no-cache Disable cache reads
-q, --quiet Disable all logging (but still exit with status code "1" upon
detecting errors)
--select <SELECT>... Comma-separated list of error codes to enable
-v, --verbose Enable verbose logging
-w, --watch Run in watch mode by re-running whenever files change
Development
ruff is written in Rust (1.63.0). You'll need to install the Rust toolchain for development.
Assuming you have cargo installed, you can run:
cargo run resources/test/src
cargo fmt
cargo clippy
cargo test
Deployment
ruff is distributed on PyPI, and published via maturin.
For now, releases are cut and published manually:
for TARGET in x86_64-apple-darwin aarch64-apple-darwin
do
maturin publish --username crmarsh --skip-existing --target ${TARGET} -i \
/usr/local/opt/python@3.7/libexec/bin/python \
/usr/local/opt/python@3.8/libexec/bin/python \
/usr/local/opt/python@3.9/libexec/bin/python \
/usr/local/opt/python@3.10/libexec/bin/python
done
Benchmarking
First, clone CPython. It's a large and diverse Python codebase, which makes it a good target for benchmarking.
git clone --branch 3.10 https://github.com/python/cpython.git resources/test/cpython
Add this pyproject.toml to the CPython directory:
[tool.linter]
line-length = 88
exclude = [
"Lib/ctypes/test/test_numbers.py",
"Lib/dataclasses.py",
"Lib/lib2to3/tests/data/bom.py",
"Lib/lib2to3/tests/data/crlf.py",
"Lib/lib2to3/tests/data/different_encoding.py",
"Lib/lib2to3/tests/data/false_encoding.py",
"Lib/lib2to3/tests/data/py2_test_grammar.py",
"Lib/sqlite3/test/factory.py",
"Lib/sqlite3/test/hooks.py",
"Lib/sqlite3/test/regression.py",
"Lib/sqlite3/test/transactions.py",
"Lib/sqlite3/test/types.py",
"Lib/test/bad_coding2.py",
"Lib/test/badsyntax_3131.py",
"Lib/test/badsyntax_pep3120.py",
"Lib/test/encoded_modules/module_iso_8859_1.py",
"Lib/test/encoded_modules/module_koi8_r.py",
"Lib/test/sortperf.py",
"Lib/test/test_email/torture_test.py",
"Lib/test/test_fstring.py",
"Lib/test/test_genericpath.py",
"Lib/test/test_getopt.py",
"Lib/test/test_grammar.py",
"Lib/test/test_htmlparser.py",
"Lib/test/test_importlib/stubs.py",
"Lib/test/test_importlib/test_files.py",
"Lib/test/test_importlib/test_metadata_api.py",
"Lib/test/test_importlib/test_open.py",
"Lib/test/test_importlib/test_util.py",
"Lib/test/test_named_expressions.py",
"Lib/test/test_patma.py",
"Lib/test/test_peg_generator/__main__.py",
"Lib/test/test_pipes.py",
"Lib/test/test_source_encoding.py",
"Lib/test/test_weakref.py",
"Lib/test/test_webbrowser.py",
"Lib/tkinter/__main__.py",
"Lib/tkinter/test/test_tkinter/test_variables.py",
"Modules/_decimal/libmpdec/literature/fnt.py",
"Modules/_decimal/tests/deccheck.py",
"Tools/c-analyzer/c_parser/parser/_delim.py",
"Tools/i18n/pygettext.py",
"Tools/test2to3/maintest.py",
"Tools/test2to3/setup.py",
"Tools/test2to3/test/test_foo.py",
"Tools/test2to3/test2to3/hello.py",
]
Next, to benchmark the release build:
cargo build --release
hyperfine --ignore-failure --warmup 1 \
"./target/release/ruff ./resources/test/cpython/ --no-cache" \
"./target/release/ruff ./resources/test/cpython/"
Benchmark 1: ./target/release/ruff ./resources/test/cpython/ --no-cache
Time (mean ± σ): 353.6 ms ± 7.6 ms [User: 2868.8 ms, System: 171.5 ms]
Range (min … max): 344.4 ms … 367.3 ms 10 runs
Benchmark 2: ./target/release/ruff ./resources/test/cpython/
Time (mean ± σ): 59.6 ms ± 2.5 ms [User: 36.4 ms, System: 345.6 ms]
Range (min … max): 55.9 ms … 67.0 ms 48 runs
To benchmark the ecosystem's existing tools:
hyperfine --ignore-failure --warmup 1 \
"pylint --recursive=y resources/test/cpython/" \
"pyflakes resources/test/cpython" \
"autoflake --recursive --expand-star-imports --remove-all-unused-imports --remove-unused-variables --remove-duplicate-keys resources/test/cpython" \
"pycodestyle resources/test/cpython" \
"pycodestyle --select E501 resources/test/cpython" \
"flake8 resources/test/cpython" \
"flake8 --select=F831,F541,F634,F403,F706,F901,E501 resources/test/cpython" \
"python -m scripts.run_flake8 resources/test/cpython" \
"python -m scripts.run_flake8 resources/test/cpython --select=F831,F541,F634,F403,F706,F901,E501"
In order, these evaluate:
- Pylint
- PyFlakes
- autoflake
- pycodestyle
- pycodestyle, limited to the checks supported by ruff
- Flake8
- Flake8, limited to the checks supported by ruff
- Flake8, with a hack to enable multiprocessing on macOS
- Flake8, with a hack to enable multiprocessing on macOS, limited to the checks supported by ruff
(You can poetry install from ./scripts to create a working environment for the above.)
Benchmark 1: ./target/release/ruff ./resources/test/cpython/ --no-cache
Time (mean ± σ): 566.9 ms ± 36.6 ms [User: 2618.0 ms, System: 992.0 ms]
Range (min … max): 504.8 ms … 634.0 ms 10 runs
Warning: Ignoring non-zero exit code.
Benchmark 2: ./target/release/ruff ./resources/test/cpython/
Time (mean ± σ): 79.5 ms ± 2.3 ms [User: 330.1 ms, System: 254.3 ms]
Range (min … max): 75.6 ms … 85.2 ms 35 runs
Warning: Ignoring non-zero exit code.
Benchmark 3: pylint --recursive=y resources/test/cpython/
Time (mean ± σ): 27.532 s ± 0.207 s [User: 26.606 s, System: 0.899 s]
Range (min … max): 27.344 s … 28.064 s 10 runs
Warning: Ignoring non-zero exit code.
Benchmark 4: pyflakes resources/test/cpython
Time (mean ± σ): 28.074 s ± 0.551 s [User: 27.845 s, System: 0.212 s]
Range (min … max): 27.479 s … 29.467 s 10 runs
Warning: Ignoring non-zero exit code.
Benchmark 5: autoflake --recursive --expand-star-imports --remove-all-unused-imports --remove-unused-variables --remove-duplicate-keys resources/test/cpython
Time (mean ± σ): 4.986 s ± 0.190 s [User: 43.257 s, System: 0.801 s]
Range (min … max): 4.837 s … 5.462 s 10 runs
Warning: Ignoring non-zero exit code.
Benchmark 6: pycodestyle resources/test/cpython
Time (mean ± σ): 42.400 s ± 0.211 s [User: 42.177 s, System: 0.213 s]
Range (min … max): 42.106 s … 42.677 s 10 runs
Warning: Ignoring non-zero exit code.
Benchmark 7: pycodestyle --select E501 resources/test/cpython
Time (mean ± σ): 14.578 s ± 0.068 s [User: 14.466 s, System: 0.108 s]
Range (min … max): 14.475 s … 14.726 s 10 runs
Warning: Ignoring non-zero exit code.
Benchmark 8: flake8 resources/test/cpython
Time (mean ± σ): 76.414 s ± 0.461 s [User: 75.611 s, System: 0.652 s]
Range (min … max): 75.691 s … 77.180 s 10 runs
Warning: Ignoring non-zero exit code.
Benchmark 9: flake8 --select=F831,F541,F634,F403,F706,F901,E501 resources/test/cpython
Time (mean ± σ): 75.960 s ± 0.610 s [User: 75.255 s, System: 0.634 s]
Range (min … max): 75.159 s … 77.066 s 10 runs
Warning: Ignoring non-zero exit code.
Benchmark 10: python -m scripts.run_flake8 resources/test/cpython
Time (mean ± σ): 13.536 s ± 0.584 s [User: 90.911 s, System: 0.934 s]
Range (min … max): 12.831 s … 14.699 s 10 runs
Benchmark 11: python -m scripts.run_flake8 resources/test/cpython --select=F831,F541,F634,F403,F706,F901,E501
Time (mean ± σ): 12.781 s ± 0.192 s [User: 89.525 s, System: 0.882 s]
Range (min … max): 12.568 s … 13.119 s 10 runs
Summary
'./target/release/ruff ./resources/test/cpython/' ran
7.13 ± 0.50 times faster than './target/release/ruff ./resources/test/cpython/ --no-cache'
62.69 ± 3.01 times faster than 'autoflake --recursive --expand-star-imports --remove-all-unused-imports --remove-unused-variables --remove-duplicate-keys resources/test/cpython'
160.71 ± 5.26 times faster than 'python -m scripts.run_flake8 resources/test/cpython --select=F831,F541,F634,F403,F706,F901,E501'
170.21 ± 8.86 times faster than 'python -m scripts.run_flake8 resources/test/cpython'
183.30 ± 5.40 times faster than 'pycodestyle --select E501 resources/test/cpython'
346.19 ± 10.40 times faster than 'pylint --recursive=y resources/test/cpython/'
353.00 ± 12.39 times faster than 'pyflakes resources/test/cpython'
533.14 ± 15.74 times faster than 'pycodestyle resources/test/cpython'
955.13 ± 28.83 times faster than 'flake8 --select=F831,F541,F634,F403,F706,F901,E501 resources/test/cpython'
960.82 ± 28.55 times faster than 'flake8 resources/test/cpython'
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
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ruff-0.0.18.tar.gz.
File metadata
- Download URL: ruff-0.0.18.tar.gz
- Upload date:
- Size: 71.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
338194a789a57ed6d7b0aa3cba19cf38e1a6fc7bd8799c9e57795d832be048bf
|
|
| MD5 |
1f469abc48a3f1995231f9728293ea43
|
|
| BLAKE2b-256 |
db0bc00b65d4bb50c1ba128f69d9c76383d145578a5c82bdea99487146228b1c
|
File details
Details for the file ruff-0.0.18-cp310-none-win_amd64.whl.
File metadata
- Download URL: ruff-0.0.18-cp310-none-win_amd64.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
74d14ff072ad8f081e4d440a5f0cc102dfcb88c6d75c1219eb799e73675fcaa7
|
|
| MD5 |
128a6cfbb59dbcb16e393e6a8b96a6e1
|
|
| BLAKE2b-256 |
b6360e8e710cd9c316d4315c89ccc2b5ca1a85665eb67525beb19c7ce5c46bb4
|
File details
Details for the file ruff-0.0.18-cp310-none-win32.whl.
File metadata
- Download URL: ruff-0.0.18-cp310-none-win32.whl
- Upload date:
- Size: 1.6 MB
- Tags: CPython 3.10, Windows x86
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6407d7193815fc9274016d90ba095323d3867653fa0b1b7d694c775ee3402715
|
|
| MD5 |
d9910cd1366f416e95f6f5b14b1297aa
|
|
| BLAKE2b-256 |
918335cf06a01309dcf45d80f458ac464cba13895ad21ca485b6f3055643609c
|
File details
Details for the file ruff-0.0.18-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl.
File metadata
- Download URL: ruff-0.0.18-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl
- Upload date:
- Size: 2.1 MB
- Tags: CPython 3.10, manylinux: glibc 2.17+ s390x
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e29c6313844d6b000b1b02122f39a6c1c3979017fde67234b6fbbbf766ddddac
|
|
| MD5 |
c1bb160c963c8f6d7a010c8499d60b6b
|
|
| BLAKE2b-256 |
2f4886770c7cca948414b72f10b657abb17bd2a4dfd8d81e34ae4f57719bec87
|
File details
Details for the file ruff-0.0.18-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.
File metadata
- Download URL: ruff-0.0.18-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
- Upload date:
- Size: 1.9 MB
- Tags: CPython 3.10, manylinux: glibc 2.17+ ppc64le
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
271b7b5148d2fa328d315d30562f4f23765e5738311823477e925e95a50051a2
|
|
| MD5 |
add72a95ac32e733a494f9737f190129
|
|
| BLAKE2b-256 |
16cbb2ccd8cbf4ac53e0110e6178dd635558c3eba2de372b645eeda50f901efc
|
File details
Details for the file ruff-0.0.18-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.
File metadata
- Download URL: ruff-0.0.18-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.10, manylinux: glibc 2.17+ ARMv7l
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
510a651c721c08d2c9b9d9befeb88fef64d3437f000c1cf45ae6bc21d0f6ec99
|
|
| MD5 |
b6ec4455a918c20b8f3c5e5a9f52fd2a
|
|
| BLAKE2b-256 |
e3cb9abe7ff6bfb1ea7d466319d6c197eee9bf8c06d06043a5d8360da1557d3b
|
File details
Details for the file ruff-0.0.18-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: ruff-0.0.18-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.10, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6ad65a978c5e38ec626b15052025d2dc40039964d6942a4d1d7dbf79098fb8af
|
|
| MD5 |
fee31280589789abd6a0b332786247bd
|
|
| BLAKE2b-256 |
9f047f0d35a3c0b145c95d1af27639239f1fd79ee00708b7760e4a7a5431ef0e
|
File details
Details for the file ruff-0.0.18-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl.
File metadata
- Download URL: ruff-0.0.18-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
- Upload date:
- Size: 1.8 MB
- Tags: CPython 3.10, manylinux: glibc 2.12+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2b3f2c7951c70cf050fa48e5960bbfba312d4f0f4512a798bb9e976658ecd85c
|
|
| MD5 |
873208af4749052c564bad1433860ec1
|
|
| BLAKE2b-256 |
3f51eab09cc5c651078195a607c774b0d4e7535572484d5b220c092d5dc7a39b
|
File details
Details for the file ruff-0.0.18-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl.
File metadata
- Download URL: ruff-0.0.18-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl
- Upload date:
- Size: 1.8 MB
- Tags: CPython 3.10, manylinux: glibc 2.12+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f12dcfca268d31de2450b7f9920c6eb59553cc32fa7df891192c9be9e9b98bfe
|
|
| MD5 |
1a2f22f8fb914212696b8bd62dc0d859
|
|
| BLAKE2b-256 |
c9527c87a11ba41c146603e36ba4dac3b584f879b5e4af3e4c8ae2ca1cebf618
|
File details
Details for the file ruff-0.0.18-cp310-cp310-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl.
File metadata
- Download URL: ruff-0.0.18-cp310-cp310-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
- Upload date:
- Size: 3.2 MB
- Tags: CPython 3.10, macOS 10.9+ universal2 (ARM64, x86-64), macOS 10.9+ x86-64, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bac22a8f611d9533b69ae1a9ab08b042083effec1b12f6ca5f5c099e1f577299
|
|
| MD5 |
f9dec1583b7a2e7d1a93de697a9f944a
|
|
| BLAKE2b-256 |
907df79b0fcf0ca5cdc91c9012751978470d490128ffb1031719e48176a115e6
|
File details
Details for the file ruff-0.0.18-cp310-cp310-macosx_10_7_x86_64.whl.
File metadata
- Download URL: ruff-0.0.18-cp310-cp310-macosx_10_7_x86_64.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.10, macOS 10.7+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
459f9d94131ab77bb6603e2cd241c9320ff689742e8c789a32469e4c206156f5
|
|
| MD5 |
bee90c7835792619d1893a1863801694
|
|
| BLAKE2b-256 |
013ad64ac7cce55707e9736ded0f393c57f7d81ac3579e30a2d4db3121cb7062
|
File details
Details for the file ruff-0.0.18-cp39-none-win_amd64.whl.
File metadata
- Download URL: ruff-0.0.18-cp39-none-win_amd64.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.9, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e95c32653fdfa87e19c24b88e13de09bfdd32bbd301f7c02763dd7934eddc463
|
|
| MD5 |
a9643fde238b8ff4f958058381feb23e
|
|
| BLAKE2b-256 |
d27fa70660198652c298bcb9f377530793d9fe63d511f4f09054991541976a54
|
File details
Details for the file ruff-0.0.18-cp39-none-win32.whl.
File metadata
- Download URL: ruff-0.0.18-cp39-none-win32.whl
- Upload date:
- Size: 1.6 MB
- Tags: CPython 3.9, Windows x86
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4d761603c1efd50e334964cc5fd5522579555d0f665b807aa54708dac752ed52
|
|
| MD5 |
6827ad0c053904da6cfe1f3dcba7105a
|
|
| BLAKE2b-256 |
4a53ecc72bce3326559b25abe610815e570b5af1e03d5bdc04117dcbe4d84fb4
|
File details
Details for the file ruff-0.0.18-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl.
File metadata
- Download URL: ruff-0.0.18-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl
- Upload date:
- Size: 2.1 MB
- Tags: CPython 3.9, manylinux: glibc 2.17+ s390x
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c61953a6ad7f5a3e4951df445d743a35a7188a5227c185aaacc60d8730289007
|
|
| MD5 |
e9932557a18ed632caefac06f18abbce
|
|
| BLAKE2b-256 |
b4f62a3d4a22eda1f570de4704bd1fb7e47ae70cdf4a05bf172de1b99bfd3f0a
|
File details
Details for the file ruff-0.0.18-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.
File metadata
- Download URL: ruff-0.0.18-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
- Upload date:
- Size: 1.9 MB
- Tags: CPython 3.9, manylinux: glibc 2.17+ ppc64le
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
65a9b425bd41f1e273cc9d77a099c5f11e07133b0d66404e695a919071fbcced
|
|
| MD5 |
fd242dc0f54c4126c1e4d8ea7b34b8fc
|
|
| BLAKE2b-256 |
eb3876a20b9c72dc1dabdff6f128072746a1aaed9d5c7b31694ff349df54ab10
|
File details
Details for the file ruff-0.0.18-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.
File metadata
- Download URL: ruff-0.0.18-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.9, manylinux: glibc 2.17+ ARMv7l
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0731789c088713764d43c690f6d2b2275f1a0014c7db4a319af68435a4ad4e4d
|
|
| MD5 |
d17067cc8ffdec30c67dac1a4724330a
|
|
| BLAKE2b-256 |
4b29d924d3ce91b5f5601481d912a6c43a373b244670699ed2bb760887f85b96
|
File details
Details for the file ruff-0.0.18-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: ruff-0.0.18-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.9, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7c907a6f729b4194602ce5b49ab25c0a341aa89a333e9310aba7944dec04819c
|
|
| MD5 |
d1ee0bc69864253e30b8e35ad8ca26ce
|
|
| BLAKE2b-256 |
0a97b6299c46c194c6eaf17169cf4cef849ff5e4d430ad2b6a9d880254afd263
|
File details
Details for the file ruff-0.0.18-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl.
File metadata
- Download URL: ruff-0.0.18-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
- Upload date:
- Size: 1.8 MB
- Tags: CPython 3.9, manylinux: glibc 2.12+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
30c04b0ca4fe22ab585fe8b5e4fae2401413b5763e06d0e47a203dabdc3ba08b
|
|
| MD5 |
7872fc910b9f6430db2813f3c149dd64
|
|
| BLAKE2b-256 |
1233878859c581de1532a218e30c0872605a2545349d1d08e668de49abf0d661
|
File details
Details for the file ruff-0.0.18-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl.
File metadata
- Download URL: ruff-0.0.18-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl
- Upload date:
- Size: 1.8 MB
- Tags: CPython 3.9, manylinux: glibc 2.12+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
563eb3371cf6f08738f0f246935173de27ab35f834a718fed8a3aa24ac75a980
|
|
| MD5 |
428a19d57d2219696811d2f599f679c3
|
|
| BLAKE2b-256 |
4065a9259acbe9bee1b58352984b59b9c6b9dc7cdd263fb2620de9c3a0ea5f9f
|
File details
Details for the file ruff-0.0.18-cp39-cp39-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl.
File metadata
- Download URL: ruff-0.0.18-cp39-cp39-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
- Upload date:
- Size: 3.2 MB
- Tags: CPython 3.9, macOS 10.9+ universal2 (ARM64, x86-64), macOS 10.9+ x86-64, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
84c237c217778451e9a0d20c7938af5acca27033d9c4d9b90de280e17d058c9d
|
|
| MD5 |
98395bfce618a64c8f1c37a1b81c3639
|
|
| BLAKE2b-256 |
91fcb0e6056dd442815827660926e0cefa8afa1c5226f4536e9a842208d7cb28
|
File details
Details for the file ruff-0.0.18-cp39-cp39-macosx_10_7_x86_64.whl.
File metadata
- Download URL: ruff-0.0.18-cp39-cp39-macosx_10_7_x86_64.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.9, macOS 10.7+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2fcbd1494509350454419a52a607307add3108ce49864ef64e2e061767a92b78
|
|
| MD5 |
f07f30a207c5251711caf814fdfef55c
|
|
| BLAKE2b-256 |
5fe51d6059c89708783fd6ab423ee53aceb0ac7d27fd0659383574f316ab41ae
|
File details
Details for the file ruff-0.0.18-cp38-none-win_amd64.whl.
File metadata
- Download URL: ruff-0.0.18-cp38-none-win_amd64.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.8, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d5b7b2079f04f4ae7ad247aa3e9cfc0b2e917f69498b72c95f2625ad58a95c21
|
|
| MD5 |
de90673432289dbf7861323293997a11
|
|
| BLAKE2b-256 |
1892bfb61f1f5a88498bff29e00e0f42a173e370e0d52de7eb4328d099217f4a
|
File details
Details for the file ruff-0.0.18-cp38-none-win32.whl.
File metadata
- Download URL: ruff-0.0.18-cp38-none-win32.whl
- Upload date:
- Size: 1.6 MB
- Tags: CPython 3.8, Windows x86
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
37aed592e82ad36f21a144a0bbcada6290167874ec13b7b1f9d936d4bf1d2922
|
|
| MD5 |
1953b0b01421d15367af7c27e04440af
|
|
| BLAKE2b-256 |
fde7a853cb925a05ab6c2a44f57489a6cc2718f3ffc7fb3ffbeeefdb7738c346
|
File details
Details for the file ruff-0.0.18-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl.
File metadata
- Download URL: ruff-0.0.18-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl
- Upload date:
- Size: 2.1 MB
- Tags: CPython 3.8, manylinux: glibc 2.17+ s390x
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5bcff208ad0cf44f8f300676853f9fac7dde4fc6bd76ebee502d1e32cec54c2e
|
|
| MD5 |
d46450baa26d8415314c86d24b82f9c6
|
|
| BLAKE2b-256 |
d3c4cfc9aa1fca7441850d68d353439c5e13cd65ab2c6918b9bf5b05d38d0db7
|
File details
Details for the file ruff-0.0.18-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.
File metadata
- Download URL: ruff-0.0.18-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
- Upload date:
- Size: 1.9 MB
- Tags: CPython 3.8, manylinux: glibc 2.17+ ppc64le
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3ecfe3eac7d63600039eeedf248aa1c87933a8cbbf17524ad78d53b8ce52e0bd
|
|
| MD5 |
fc0f0858cab71dfa1b0d5eb79be488c6
|
|
| BLAKE2b-256 |
271bf1b99ac404672e9c6f403656a1b869192f652d0ae2219abc908d6ef5967e
|
File details
Details for the file ruff-0.0.18-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.
File metadata
- Download URL: ruff-0.0.18-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.8, manylinux: glibc 2.17+ ARMv7l
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
98d78cfec84aed6c5518ae3b46ca2683e2bc1859f2389ac50dcd4fbc1b86d1c2
|
|
| MD5 |
524fd2161e4e025b9bd2680d3e3354c5
|
|
| BLAKE2b-256 |
cfa494177a0f3c9496fbdb636335666c18abe8054452dae8bf17f9054bc7867a
|
File details
Details for the file ruff-0.0.18-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: ruff-0.0.18-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.8, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b0248375e1665485d8cd3b247af49456fe9317f6f2e86104529cb297106ac6fa
|
|
| MD5 |
9bbbfa883099e585f3ef8fbf8887a041
|
|
| BLAKE2b-256 |
bde3ea3ed56ba2ff08b42f30053dbed599a30fdee18815b13f13aa72bcdd98a1
|
File details
Details for the file ruff-0.0.18-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl.
File metadata
- Download URL: ruff-0.0.18-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
- Upload date:
- Size: 1.8 MB
- Tags: CPython 3.8, manylinux: glibc 2.12+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
41ae06d255f1b5a27f42db927561cb7a26ee9f6730be57a6f1be5c5b9eca286c
|
|
| MD5 |
c11159a730f8d0e34efb010bc765cf7b
|
|
| BLAKE2b-256 |
6b51484173c466d8f64e82745132ff6d9dc3debd3f3301712c1babbecf808fd3
|
File details
Details for the file ruff-0.0.18-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl.
File metadata
- Download URL: ruff-0.0.18-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl
- Upload date:
- Size: 1.8 MB
- Tags: CPython 3.8, manylinux: glibc 2.12+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
13d16be5e6f8d2949f51553fd0d4265a966b25877df2c9477efa41283d230f00
|
|
| MD5 |
8d7bb701c5bd8e431c6ffe07a4b58398
|
|
| BLAKE2b-256 |
cc994545b6baa0724ee966dc33570cdcc6f5d0e9921a0cf603e539f77c94bc82
|
File details
Details for the file ruff-0.0.18-cp38-cp38-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl.
File metadata
- Download URL: ruff-0.0.18-cp38-cp38-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
- Upload date:
- Size: 3.2 MB
- Tags: CPython 3.8, macOS 10.9+ universal2 (ARM64, x86-64), macOS 10.9+ x86-64, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ab8d40d4f50f925630668cc9176debade659becb2c30b17d66195258dd44ae22
|
|
| MD5 |
d90ea00558b5a0795c65ea662ef5c63b
|
|
| BLAKE2b-256 |
e54cf2199c2e2277b838c8215f3ab7497b467da5cb6b6ae13e4cd4d8c6543258
|
File details
Details for the file ruff-0.0.18-cp38-cp38-macosx_10_7_x86_64.whl.
File metadata
- Download URL: ruff-0.0.18-cp38-cp38-macosx_10_7_x86_64.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.8, macOS 10.7+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5e303301050f8aa1b40759ecb33ec5a927dfd3144d1df931cd6b68b32f58aea9
|
|
| MD5 |
74b2c5f6c4ca386a41645369df2d57e4
|
|
| BLAKE2b-256 |
33035da9b17cb93b7f7a23dec613f13d808b8003300f1c4b4f0c9fd4a60d7a0e
|
File details
Details for the file ruff-0.0.18-cp37-none-win_amd64.whl.
File metadata
- Download URL: ruff-0.0.18-cp37-none-win_amd64.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.7, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
60fee0616ccedf4ade8577491b445465b8dc07004b5a670e60ae5be0e1d0a72a
|
|
| MD5 |
956ae3ca0a6d9be91ba99b7ba643d022
|
|
| BLAKE2b-256 |
215100cd9963d486aac87b54398fe659f6eb0ce5f2f49e3898b26d49cb476986
|
File details
Details for the file ruff-0.0.18-cp37-none-win32.whl.
File metadata
- Download URL: ruff-0.0.18-cp37-none-win32.whl
- Upload date:
- Size: 1.6 MB
- Tags: CPython 3.7, Windows x86
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
047c8863c3a2925ff9d6915231771959c476e36e0586e4054ad99d949b96e7ce
|
|
| MD5 |
880293ab4fbfeba23a6034487073dd39
|
|
| BLAKE2b-256 |
c45f97343e1ce20f2bc926dc5fdba37ce121feabac5d2ab175a3c71f839cf2e4
|
File details
Details for the file ruff-0.0.18-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl.
File metadata
- Download URL: ruff-0.0.18-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl
- Upload date:
- Size: 2.1 MB
- Tags: CPython 3.7m, manylinux: glibc 2.17+ s390x
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
625c368bef294837f17e78528aa4fdd829d6d08cef81ae0efe5a6bf071c6ae63
|
|
| MD5 |
64fc3b2b3ecc063bdfabb8f6ab08a558
|
|
| BLAKE2b-256 |
0b464c9c7308971602ac1bf1ebf03bf70c08a4878a9d3ab97e3f4352543dff85
|
File details
Details for the file ruff-0.0.18-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.
File metadata
- Download URL: ruff-0.0.18-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
- Upload date:
- Size: 1.9 MB
- Tags: CPython 3.7m, manylinux: glibc 2.17+ ppc64le
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d83eff5dff39b2740310ec34d1045c885d4a4377beccf01c532f1e244c8e3a06
|
|
| MD5 |
89a73ad0ec9ce3b42510badecd9086e9
|
|
| BLAKE2b-256 |
aa2b95bab9b48be6837a8ed63a5f956f179a07c7368f3760c4cb74f1c2de2ed6
|
File details
Details for the file ruff-0.0.18-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.
File metadata
- Download URL: ruff-0.0.18-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.7m, manylinux: glibc 2.17+ ARMv7l
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
846877276776480285f30b8242ef755c7de7117d7b1b9db845943bb30d61b374
|
|
| MD5 |
2a33cf78aa8d6f1720af3948a100d390
|
|
| BLAKE2b-256 |
ce1c67f4b928c726212e6ffbf7469f15848d8d68e104e48f305cea18e810ea9c
|
File details
Details for the file ruff-0.0.18-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: ruff-0.0.18-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.7m, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bea3f58827c8e36ce31005b8d7913e2fa39442a0f135985e3550cc82568b8601
|
|
| MD5 |
3fa3cf633efc0d7578251620711adf1b
|
|
| BLAKE2b-256 |
d38609b3bbc58ccc9129b85d935fa34421a155099cb42d4c6c79ea2add152c04
|
File details
Details for the file ruff-0.0.18-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl.
File metadata
- Download URL: ruff-0.0.18-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
- Upload date:
- Size: 1.8 MB
- Tags: CPython 3.7m, manylinux: glibc 2.12+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dc17d49d9533d290d7d64800c514dfdf5b219c9b7144f437f8f4e4e9769f085c
|
|
| MD5 |
1400a033d2dbe76776886b9aaed53486
|
|
| BLAKE2b-256 |
83e489c0f4641144eceea7c7c29bc25b39fc9ef7d7c074e300458557d9f45bce
|
File details
Details for the file ruff-0.0.18-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl.
File metadata
- Download URL: ruff-0.0.18-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl
- Upload date:
- Size: 1.8 MB
- Tags: CPython 3.7m, manylinux: glibc 2.12+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1db098d99e9a71a409af310b2962546aec1bfb2e91fdf119f52facff12c9f0c9
|
|
| MD5 |
51ec80d1575db76613dec68f09579c81
|
|
| BLAKE2b-256 |
b3059eeab287a39549dbce00539a41242e1d702ae235adad86e20dc8e3878f0c
|
File details
Details for the file ruff-0.0.18-cp37-cp37m-macosx_10_7_x86_64.whl.
File metadata
- Download URL: ruff-0.0.18-cp37-cp37m-macosx_10_7_x86_64.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.7m, macOS 10.7+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
310cbf1c9a116c70f4751e17709c682e145e42851e093ad136960ecbf76014eb
|
|
| MD5 |
43deebd3f16ac5aeeeac43fe3aa34253
|
|
| BLAKE2b-256 |
8b247a4dc19bec10167e3c99861c129817f164f198a748da23498455bdc7e0f9
|