From 2ed1f78873a0655c9039de7a6fb2a2bcdaf3dac8 Mon Sep 17 00:00:00 2001 From: Charlie Marsh Date: Mon, 16 Jan 2023 17:38:40 -0500 Subject: [PATCH] Add benchmark scripts for no-IO (#1925) --- README.md | 2 + scripts/benchmarks/poetry.lock | 592 +++++++++++++++++++++++++- scripts/benchmarks/pyproject.toml | 56 +++ scripts/benchmarks/run_all.sh | 26 ++ scripts/benchmarks/run_comparisons.sh | 43 +- scripts/benchmarks/run_plugins.sh | 43 ++ scripts/benchmarks/run_silent.sh | 12 + 7 files changed, 736 insertions(+), 38 deletions(-) create mode 100755 scripts/benchmarks/run_all.sh create mode 100755 scripts/benchmarks/run_silent.sh diff --git a/README.md b/README.md index 1d1d8c4ec2..39d58edf84 100644 --- a/README.md +++ b/README.md @@ -1455,6 +1455,7 @@ natively, including: - [`flake8-tidy-imports`](https://pypi.org/project/flake8-tidy-imports/) - [`isort`](https://pypi.org/project/isort/) - [`mccabe`](https://pypi.org/project/mccabe/) +- [`pandas-vet`](https://pypi.org/project/pandas-vet/) - [`pep8-naming`](https://pypi.org/project/pep8-naming/) - [`pydocstyle`](https://pypi.org/project/pydocstyle/) - [`pygrep-hooks`](https://github.com/pre-commit/pygrep-hooks) ([#980](https://github.com/charliermarsh/ruff/issues/980)) @@ -1520,6 +1521,7 @@ Today, Ruff can be used to replace Flake8 when used with any of the following pl - [`flake8-super`](https://pypi.org/project/flake8-super/) - [`flake8-tidy-imports`](https://pypi.org/project/flake8-tidy-imports/) - [`mccabe`](https://pypi.org/project/mccabe/) +- [`pandas-vet`](https://pypi.org/project/pandas-vet/) - [`pep8-naming`](https://pypi.org/project/pep8-naming/) - [`pydocstyle`](https://pypi.org/project/pydocstyle/) diff --git a/scripts/benchmarks/poetry.lock b/scripts/benchmarks/poetry.lock index 5e6fcccebe..ad8599f8a3 100644 --- a/scripts/benchmarks/poetry.lock +++ b/scripts/benchmarks/poetry.lock @@ -1,5 +1,17 @@ # This file is automatically @generated by Poetry and should not be changed by hand. +[[package]] +name = "astor" +version = "0.8.1" +description = "Read/rewrite/write Python ASTs" +category = "main" +optional = true +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" +files = [ + {file = "astor-0.8.1-py2.py3-none-any.whl", hash = "sha256:070a54e890cefb5b3739d19f30f5a5ec840ffc9c50ffa7d23cc9fc1a38ebbfc5"}, + {file = "astor-0.8.1.tar.gz", hash = "sha256:6a6effda93f4e1ce9f618779b2dd1d9d84f1e32812c23a29b3fff6fd7f63fa5e"}, +] + [[package]] name = "astroid" version = "2.13.2" @@ -20,6 +32,25 @@ wrapt = [ {version = ">=1.14,<2", markers = "python_version >= \"3.11\""}, ] +[[package]] +name = "attrs" +version = "22.2.0" +description = "Classes Without Boilerplate" +category = "main" +optional = true +python-versions = ">=3.6" +files = [ + {file = "attrs-22.2.0-py3-none-any.whl", hash = "sha256:29e95c7f6778868dbd49170f98f8818f78f3dc5e0e37c0b1f474e3561b240836"}, + {file = "attrs-22.2.0.tar.gz", hash = "sha256:c9227bfc2f01993c03f68db37d1d15c9690188323c067c641f1a35ca58185f99"}, +] + +[package.extras] +cov = ["attrs[tests]", "coverage-enable-subprocess", "coverage[toml] (>=5.3)"] +dev = ["attrs[docs,tests]"] +docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope.interface"] +tests = ["attrs[tests-no-zope]", "zope.interface"] +tests-no-zope = ["cloudpickle", "cloudpickle", "hypothesis", "hypothesis", "mypy (>=0.971,<0.990)", "mypy (>=0.971,<0.990)", "pympler", "pympler", "pytest (>=4.3.0)", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-mypy-plugins", "pytest-xdist[psutil]", "pytest-xdist[psutil]"] + [[package]] name = "autoflake" version = "2.0.0" @@ -36,6 +67,29 @@ files = [ pyflakes = ">=3.0.0" tomli = {version = ">=2.0.1", markers = "python_version < \"3.11\""} +[[package]] +name = "bandit" +version = "1.7.4" +description = "Security oriented static analyser for python code." +category = "main" +optional = true +python-versions = ">=3.7" +files = [ + {file = "bandit-1.7.4-py3-none-any.whl", hash = "sha256:412d3f259dab4077d0e7f0c11f50f650cc7d10db905d98f6520a95a18049658a"}, + {file = "bandit-1.7.4.tar.gz", hash = "sha256:2d63a8c573417bae338962d4b9b06fbc6080f74ecd955a092849e1e65c717bd2"}, +] + +[package.dependencies] +colorama = {version = ">=0.3.9", markers = "platform_system == \"Windows\""} +GitPython = ">=1.0.1" +PyYAML = ">=5.3.1" +stevedore = ">=1.20.0" + +[package.extras] +test = ["beautifulsoup4 (>=4.8.0)", "coverage (>=4.5.4)", "fixtures (>=3.0.0)", "flake8 (>=4.0.0)", "pylint (==1.9.4)", "stestr (>=2.5.0)", "testscenarios (>=0.5.0)", "testtools (>=2.3.0)", "toml"] +toml = ["toml"] +yaml = ["PyYAML"] + [[package]] name = "black" version = "22.12.0" @@ -130,6 +184,377 @@ mccabe = ">=0.7.0,<0.8.0" pycodestyle = ">=2.10.0,<2.11.0" pyflakes = ">=3.0.0,<3.1.0" +[[package]] +name = "flake8-2020" +version = "1.7.0" +description = "flake8 plugin which checks for misuse of `sys.version` or `sys.version_info`" +category = "main" +optional = true +python-versions = ">=3.7" +files = [ + {file = "flake8_2020-1.7.0-py2.py3-none-any.whl", hash = "sha256:e3e89e2fd4077c66ac8b8739e2af7c791258ba4023037e401f825284435c7dbb"}, + {file = "flake8_2020-1.7.0.tar.gz", hash = "sha256:9342902563a7d0b0233128c395be1372b8a3e8072805931639760bfe8a3935f9"}, +] + +[package.dependencies] +flake8 = ">=5" + +[[package]] +name = "flake8-annotations" +version = "2.9.1" +description = "Flake8 Type Annotation Checks" +category = "main" +optional = true +python-versions = ">=3.7,<4.0" +files = [ + {file = "flake8-annotations-2.9.1.tar.gz", hash = "sha256:11f09efb99ae63c8f9d6b492b75fe147fbc323179fddfe00b2e56eefeca42f57"}, + {file = "flake8_annotations-2.9.1-py3-none-any.whl", hash = "sha256:a4385158a7a9fc8af1d8820a2f4c8d03387997006a83f5f8bfe5bc6085bdf88a"}, +] + +[package.dependencies] +attrs = ">=21.4" +flake8 = ">=3.7" + +[[package]] +name = "flake8-bandit" +version = "4.1.1" +description = "Automated security testing with bandit and flake8." +category = "main" +optional = true +python-versions = ">=3.6" +files = [ + {file = "flake8_bandit-4.1.1-py3-none-any.whl", hash = "sha256:4c8a53eb48f23d4ef1e59293657181a3c989d0077c9952717e98a0eace43e06d"}, + {file = "flake8_bandit-4.1.1.tar.gz", hash = "sha256:068e09287189cbfd7f986e92605adea2067630b75380c6b5733dab7d87f9a84e"}, +] + +[package.dependencies] +bandit = ">=1.7.3" +flake8 = ">=5.0.0" + +[[package]] +name = "flake8-blind-except" +version = "0.2.1" +description = "A flake8 extension that checks for blind except: statements" +category = "main" +optional = true +python-versions = "*" +files = [ + {file = "flake8-blind-except-0.2.1.tar.gz", hash = "sha256:f25a575a9dcb3eeb3c760bf9c22db60b8b5a23120224ed1faa9a43f75dd7dd16"}, +] + +[[package]] +name = "flake8-bugbear" +version = "23.1.14" +description = "A plugin for flake8 finding likely bugs and design problems in your program. Contains warnings that don't belong in pyflakes and pycodestyle." +category = "main" +optional = true +python-versions = ">=3.7" +files = [ + {file = "flake8-bugbear-23.1.14.tar.gz", hash = "sha256:ba31dd954ef9c2a8f523adee3fdd78d1f9dd1afcba59cc6ad4c116e2cc1563f3"}, + {file = "flake8_bugbear-23.1.14-py3-none-any.whl", hash = "sha256:ecaeb93acbd02f26f2246907b0e4c291cafdf65ef2ea24bbdbb596fd8d30605e"}, +] + +[package.dependencies] +attrs = ">=19.2.0" +flake8 = ">=3.0.0" + +[package.extras] +dev = ["coverage", "hypothesis", "hypothesmith (>=0.2)", "pre-commit", "pytest", "tox"] + +[[package]] +name = "flake8-builtins" +version = "2.1.0" +description = "Check for python builtins being used as variables or parameters." +category = "main" +optional = true +python-versions = ">=3.7" +files = [ + {file = "flake8-builtins-2.1.0.tar.gz", hash = "sha256:12ff1ee96dd4e1f3141141ee6c45a5c7d3b3c440d0949e9b8d345c42b39c51d4"}, + {file = "flake8_builtins-2.1.0-py3-none-any.whl", hash = "sha256:469e8f03d6d0edf4b1e62b6d5a97dce4598592c8a13ec8f0952e7a185eba50a1"}, +] + +[package.dependencies] +flake8 = "*" + +[package.extras] +test = ["pytest"] + +[[package]] +name = "flake8-commas" +version = "2.1.0" +description = "Flake8 lint for trailing commas." +category = "main" +optional = true +python-versions = "*" +files = [ + {file = "flake8-commas-2.1.0.tar.gz", hash = "sha256:940441ab8ee544df564ae3b3f49f20462d75d5c7cac2463e0b27436e2050f263"}, + {file = "flake8_commas-2.1.0-py2.py3-none-any.whl", hash = "sha256:ebb96c31e01d0ef1d0685a21f3f0e2f8153a0381430e748bf0bbbb5d5b453d54"}, +] + +[package.dependencies] +flake8 = ">=2" + +[[package]] +name = "flake8-comprehensions" +version = "3.10.1" +description = "A flake8 plugin to help you write better list/set/dict comprehensions." +category = "main" +optional = true +python-versions = ">=3.7" +files = [ + {file = "flake8-comprehensions-3.10.1.tar.gz", hash = "sha256:412052ac4a947f36b891143430fef4859705af11b2572fbb689f90d372cf26ab"}, + {file = "flake8_comprehensions-3.10.1-py3-none-any.whl", hash = "sha256:d763de3c74bc18a79c039a7ec732e0a1985b0c79309ceb51e56401ad0a2cd44e"}, +] + +[package.dependencies] +flake8 = ">=3.0,<3.2.0 || >3.2.0" + +[[package]] +name = "flake8-datetimez" +version = "20.10.0" +description = "A plugin for flake8 to ban the usage of unsafe naive datetime class." +category = "main" +optional = true +python-versions = ">=3.6" +files = [ + {file = "flake8-datetimez-20.10.0.tar.gz", hash = "sha256:78939f3bcbe2b7fe48235998545c869c27cdfac3f45685099a3f7366c1ffebc6"}, + {file = "flake8_datetimez-20.10.0-py3-none-any.whl", hash = "sha256:57aa2f55eb88797e2d8c06bd536ff8049b9f1ba877d81dc06ff8d9bdc195c1fc"}, +] + +[package.dependencies] +flake8 = ">=3.0.0" + +[[package]] +name = "flake8-debugger" +version = "4.1.2" +description = "ipdb/pdb statement checker plugin for flake8" +category = "main" +optional = true +python-versions = ">=3.7" +files = [ + {file = "flake8-debugger-4.1.2.tar.gz", hash = "sha256:52b002560941e36d9bf806fca2523dc7fb8560a295d5f1a6e15ac2ded7a73840"}, + {file = "flake8_debugger-4.1.2-py3-none-any.whl", hash = "sha256:0a5e55aeddcc81da631ad9c8c366e7318998f83ff00985a49e6b3ecf61e571bf"}, +] + +[package.dependencies] +flake8 = ">=3.0" +pycodestyle = "*" + +[[package]] +name = "flake8-docstrings" +version = "1.6.0" +description = "Extension for flake8 which uses pydocstyle to check docstrings" +category = "main" +optional = true +python-versions = "*" +files = [ + {file = "flake8-docstrings-1.6.0.tar.gz", hash = "sha256:9fe7c6a306064af8e62a055c2f61e9eb1da55f84bb39caef2b84ce53708ac34b"}, + {file = "flake8_docstrings-1.6.0-py2.py3-none-any.whl", hash = "sha256:99cac583d6c7e32dd28bbfbef120a7c0d1b6dde4adb5a9fd441c4227a6534bde"}, +] + +[package.dependencies] +flake8 = ">=3" +pydocstyle = ">=2.1" + +[[package]] +name = "flake8-errmsg" +version = "0.4.0" +description = "Flake8 checker for raw literals inside raises." +category = "main" +optional = true +python-versions = ">=3.10" +files = [ + {file = "flake8_errmsg-0.4.0-py3-none-any.whl", hash = "sha256:87b3ca16e3c12a694835bf755f107bf29eb6d9ed16064203cc499369d3325029"}, + {file = "flake8_errmsg-0.4.0.tar.gz", hash = "sha256:af4ccc699cb4004339d74338813fcb1a126afc78b1826ba4f5960d3bdf1c1b5f"}, +] + +[package.extras] +dev = ["flake8", "pytest (>=7)"] +test = ["pytest (>=7)"] + +[[package]] +name = "flake8-implicit-str-concat" +version = "0.3.0" +description = "Flake8 plugin to encourage correct string literal concatenation." +category = "main" +optional = true +python-versions = "~=3.7" +files = [ + {file = "flake8_implicit_str_concat-0.3.0-py2.py3-none-any.whl", hash = "sha256:a89ebc50567790fb7b83e032ed4014ae0db70e35d89e269c3323967135023600"}, + {file = "flake8_implicit_str_concat-0.3.0.tar.gz", hash = "sha256:c0e6ae227e46238e4c87844091f8072892caeccd3bb266576a7d449eadbf53a0"}, +] + +[package.dependencies] +attrs = ">=19.3" +more-itertools = ">=8.0.2,<9" + +[[package]] +name = "flake8-isort" +version = "6.0.0" +description = "flake8 plugin that integrates isort ." +category = "main" +optional = true +python-versions = ">=3.7" +files = [ + {file = "flake8-isort-6.0.0.tar.gz", hash = "sha256:537f453a660d7e903f602ecfa36136b140de279df58d02eb1b6a0c84e83c528c"}, + {file = "flake8_isort-6.0.0-py3-none-any.whl", hash = "sha256:aa0cac02a62c7739e370ce6b9c31743edac904bae4b157274511fc8a19c75bbc"}, +] + +[package.dependencies] +flake8 = "*" +isort = ">=5.0.0,<6" + +[package.extras] +test = ["pytest"] + +[[package]] +name = "flake8-pie" +version = "0.16.0" +description = "A flake8 extension that implements misc. lints" +category = "main" +optional = true +python-versions = ">=3.7" +files = [ + {file = "flake8-pie-0.16.0.tar.gz", hash = "sha256:b8dcb7b92706fa33d05d92a4b3e49b7a9fd3f0041849166275b646ba50e515ba"}, + {file = "flake8_pie-0.16.0-py3-none-any.whl", hash = "sha256:24cd7849b0eee22e2328b9e9d2a1dea40013b0a3106864bbadd06a4b05dbb71f"}, +] + +[package.dependencies] +typing_extensions = "*" + +[[package]] +name = "flake8-plugin-utils" +version = "1.3.2" +description = "The package provides base classes and utils for flake8 plugin writing" +category = "main" +optional = true +python-versions = ">=3.6,<4.0" +files = [ + {file = "flake8-plugin-utils-1.3.2.tar.gz", hash = "sha256:20fa2a8ca2decac50116edb42e6af0a1253ef639ad79941249b840531889c65a"}, + {file = "flake8_plugin_utils-1.3.2-py3-none-any.whl", hash = "sha256:1fe43e3e9acf3a7c0f6b88f5338cad37044d2f156c43cb6b080b5f9da8a76f06"}, +] + +[[package]] +name = "flake8-print" +version = "5.0.0" +description = "print statement checker plugin for flake8" +category = "main" +optional = true +python-versions = ">=3.7" +files = [ + {file = "flake8-print-5.0.0.tar.gz", hash = "sha256:76915a2a389cc1c0879636c219eb909c38501d3a43cc8dae542081c9ba48bdf9"}, + {file = "flake8_print-5.0.0-py3-none-any.whl", hash = "sha256:84a1a6ea10d7056b804221ac5e62b1cee1aefc897ce16f2e5c42d3046068f5d8"}, +] + +[package.dependencies] +flake8 = ">=3.0" +pycodestyle = "*" + +[[package]] +name = "flake8-quotes" +version = "3.3.2" +description = "Flake8 lint for quotes." +category = "main" +optional = true +python-versions = "*" +files = [ + {file = "flake8-quotes-3.3.2.tar.gz", hash = "sha256:6e26892b632dacba517bf27219c459a8396dcfac0f5e8204904c5a4ba9b480e1"}, +] + +[package.dependencies] +flake8 = "*" + +[[package]] +name = "flake8-return" +version = "1.2.0" +description = "Flake8 plugin that checks return values" +category = "main" +optional = true +python-versions = ">=3.6,<4.0" +files = [ + {file = "flake8-return-1.2.0.tar.gz", hash = "sha256:68dfa56582cd704febd02ad86dcf5df67e38e0836d62f1ceae7930d76d3dd955"}, + {file = "flake8_return-1.2.0-py3-none-any.whl", hash = "sha256:1f07af12954ed03ebe2c2aac2418f78b55374e9929d4956109664588f31582a1"}, +] + +[package.dependencies] +flake8-plugin-utils = ">=1.0,<2.0" + +[[package]] +name = "flake8-simplify" +version = "0.19.3" +description = "flake8 plugin which checks for code that can be simplified" +category = "main" +optional = true +python-versions = ">=3.6.1" +files = [ + {file = "flake8_simplify-0.19.3-py3-none-any.whl", hash = "sha256:1057320e9312d75849541fee822900d27bcad05b2405edc84713affee635629e"}, + {file = "flake8_simplify-0.19.3.tar.gz", hash = "sha256:2fb083bf5142a98d9c9554755cf2f56f8926eb4a33eae30c0809041b1546879e"}, +] + +[package.dependencies] +astor = ">=0.1" +flake8 = ">=3.7" + +[[package]] +name = "flake8-super" +version = "0.1.3" +description = "Python 3 super() check for flake8" +category = "main" +optional = true +python-versions = "*" +files = [ + {file = "flake8_super-0.1.3-py3-none-any.whl", hash = "sha256:595cd65af908574867accfaa3ea2b3e4790637711859306550dc433d9105cbba"}, +] + +[package.dependencies] +flake8 = ">3.0.0" +flake8-plugin-utils = ">=1.3.2,<1.4.0" + +[[package]] +name = "flake8-tidy-imports" +version = "4.8.0" +description = "A flake8 plugin that helps you write tidier imports." +category = "main" +optional = true +python-versions = ">=3.7" +files = [ + {file = "flake8-tidy-imports-4.8.0.tar.gz", hash = "sha256:df44f9c841b5dfb3a7a1f0da8546b319d772c2a816a1afefcce43e167a593d83"}, + {file = "flake8_tidy_imports-4.8.0-py3-none-any.whl", hash = "sha256:25bd9799358edefa0e010ce2c587b093c3aba942e96aeaa99b6d0500ae1bf09c"}, +] + +[package.dependencies] +flake8 = ">=3.8.0" + +[[package]] +name = "gitdb" +version = "4.0.10" +description = "Git Object Database" +category = "main" +optional = true +python-versions = ">=3.7" +files = [ + {file = "gitdb-4.0.10-py3-none-any.whl", hash = "sha256:c286cf298426064079ed96a9e4a9d39e7f3e9bf15ba60701e95f5492f28415c7"}, + {file = "gitdb-4.0.10.tar.gz", hash = "sha256:6eb990b69df4e15bad899ea868dc46572c3f75339735663b81de79b06f17eb9a"}, +] + +[package.dependencies] +smmap = ">=3.0.1,<6" + +[[package]] +name = "gitpython" +version = "3.1.30" +description = "GitPython is a python library used to interact with Git repositories" +category = "main" +optional = true +python-versions = ">=3.7" +files = [ + {file = "GitPython-3.1.30-py3-none-any.whl", hash = "sha256:cd455b0000615c60e286208ba540271af9fe531fa6a87cc590a7298785ab2882"}, + {file = "GitPython-3.1.30.tar.gz", hash = "sha256:769c2d83e13f5d938b7688479da374c4e3d49f71549aaf462b646db9602ea6f8"}, +] + +[package.dependencies] +gitdb = ">=4.0.1,<5" + [[package]] name = "isort" version = "5.11.4" @@ -206,6 +631,18 @@ files = [ {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, ] +[[package]] +name = "more-itertools" +version = "8.14.0" +description = "More routines for operating on iterables, beyond itertools" +category = "main" +optional = true +python-versions = ">=3.5" +files = [ + {file = "more-itertools-8.14.0.tar.gz", hash = "sha256:c09443cd3d5438b8dafccd867a6bc1cb0894389e90cb53d227456b0b0bccb750"}, + {file = "more_itertools-8.14.0-py3-none-any.whl", hash = "sha256:1bc4f91ee5b1b31ac7ceacc17c09befe6a40a503907baf9c839c229b5095cfd2"}, +] + [[package]] name = "mypy-extensions" version = "0.4.3" @@ -218,6 +655,22 @@ files = [ {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"}, ] +[[package]] +name = "pandas-vet" +version = "0.2.3" +description = "A flake8 plugin to lint pandas in an opinionated way" +category = "main" +optional = true +python-versions = "*" +files = [ + {file = "pandas-vet-0.2.3.tar.gz", hash = "sha256:58b64027a4c192b4b62272c1d8fdecc1733352452401282b697c1a32abe4656a"}, + {file = "pandas_vet-0.2.3-py3-none-any.whl", hash = "sha256:349e4240399ead316f64f9afc8e94a5bd5cfff45d7f448c5c22989e86c4ac782"}, +] + +[package.dependencies] +attrs = "*" +flake8 = ">3.0.0" + [[package]] name = "pathspec" version = "0.10.3" @@ -230,6 +683,33 @@ files = [ {file = "pathspec-0.10.3.tar.gz", hash = "sha256:56200de4077d9d0791465aa9095a01d421861e405b5096955051deefd697d6f6"}, ] +[[package]] +name = "pbr" +version = "5.11.1" +description = "Python Build Reasonableness" +category = "main" +optional = true +python-versions = ">=2.6" +files = [ + {file = "pbr-5.11.1-py2.py3-none-any.whl", hash = "sha256:567f09558bae2b3ab53cb3c1e2e33e726ff3338e7bae3db5dc954b3a44eef12b"}, + {file = "pbr-5.11.1.tar.gz", hash = "sha256:aefc51675b0b533d56bb5fd1c8c6c0522fe31896679882e1c4c63d5e4a0fccb3"}, +] + +[[package]] +name = "pep8-naming" +version = "0.13.3" +description = "Check PEP-8 naming conventions, plugin for flake8" +category = "main" +optional = true +python-versions = ">=3.7" +files = [ + {file = "pep8-naming-0.13.3.tar.gz", hash = "sha256:1705f046dfcd851378aac3be1cd1551c7c1e5ff363bacad707d43007877fa971"}, + {file = "pep8_naming-0.13.3-py3-none-any.whl", hash = "sha256:1a86b8c71a03337c97181917e2b472f0f5e4ccb06844a0d6f0a33522549e7a80"}, +] + +[package.dependencies] +flake8 = ">=5.0.0" + [[package]] name = "platformdirs" version = "2.6.2" @@ -258,6 +738,24 @@ files = [ {file = "pycodestyle-2.10.0.tar.gz", hash = "sha256:347187bdb476329d98f695c213d7295a846d1152ff4fe9bacb8a9590b8ee7053"}, ] +[[package]] +name = "pydocstyle" +version = "6.2.3" +description = "Python docstring style checker" +category = "main" +optional = true +python-versions = ">=3.6" +files = [ + {file = "pydocstyle-6.2.3-py3-none-any.whl", hash = "sha256:a04ed1e6fe0be0970eddbb1681a7ab59b11eb92729fdb4b9b24f0eb11a25629e"}, + {file = "pydocstyle-6.2.3.tar.gz", hash = "sha256:d867acad25e48471f2ad8a40ef9813125e954ad675202245ca836cb6e28b2297"}, +] + +[package.dependencies] +snowballstemmer = ">=2.2.0" + +[package.extras] +toml = ["tomli (>=1.2.3)"] + [[package]] name = "pyflakes" version = "3.0.1" @@ -299,6 +797,95 @@ tomlkit = ">=0.10.1" spelling = ["pyenchant (>=3.2,<4.0)"] testutils = ["gitpython (>3)"] +[[package]] +name = "pyyaml" +version = "6.0" +description = "YAML parser and emitter for Python" +category = "main" +optional = true +python-versions = ">=3.6" +files = [ + {file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"}, + {file = "PyYAML-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c"}, + {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc"}, + {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b"}, + {file = "PyYAML-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5"}, + {file = "PyYAML-6.0-cp310-cp310-win32.whl", hash = "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513"}, + {file = "PyYAML-6.0-cp310-cp310-win_amd64.whl", hash = "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a"}, + {file = "PyYAML-6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358"}, + {file = "PyYAML-6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1"}, + {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d"}, + {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f"}, + {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782"}, + {file = "PyYAML-6.0-cp311-cp311-win32.whl", hash = "sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7"}, + {file = "PyYAML-6.0-cp311-cp311-win_amd64.whl", hash = "sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf"}, + {file = "PyYAML-6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86"}, + {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f"}, + {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92"}, + {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4"}, + {file = "PyYAML-6.0-cp36-cp36m-win32.whl", hash = "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293"}, + {file = "PyYAML-6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57"}, + {file = "PyYAML-6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c"}, + {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0"}, + {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4"}, + {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9"}, + {file = "PyYAML-6.0-cp37-cp37m-win32.whl", hash = "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737"}, + {file = "PyYAML-6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d"}, + {file = "PyYAML-6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b"}, + {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba"}, + {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34"}, + {file = "PyYAML-6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287"}, + {file = "PyYAML-6.0-cp38-cp38-win32.whl", hash = "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78"}, + {file = "PyYAML-6.0-cp38-cp38-win_amd64.whl", hash = "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07"}, + {file = "PyYAML-6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b"}, + {file = "PyYAML-6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174"}, + {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803"}, + {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3"}, + {file = "PyYAML-6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0"}, + {file = "PyYAML-6.0-cp39-cp39-win32.whl", hash = "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb"}, + {file = "PyYAML-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c"}, + {file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"}, +] + +[[package]] +name = "smmap" +version = "5.0.0" +description = "A pure Python implementation of a sliding window memory map manager" +category = "main" +optional = true +python-versions = ">=3.6" +files = [ + {file = "smmap-5.0.0-py3-none-any.whl", hash = "sha256:2aba19d6a040e78d8b09de5c57e96207b09ed71d8e55ce0959eeee6c8e190d94"}, + {file = "smmap-5.0.0.tar.gz", hash = "sha256:c840e62059cd3be204b0c9c9f74be2c09d5648eddd4580d9314c3ecde0b30936"}, +] + +[[package]] +name = "snowballstemmer" +version = "2.2.0" +description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms." +category = "main" +optional = true +python-versions = "*" +files = [ + {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"}, + {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"}, +] + +[[package]] +name = "stevedore" +version = "4.1.1" +description = "Manage dynamic plugins for Python applications" +category = "main" +optional = true +python-versions = ">=3.8" +files = [ + {file = "stevedore-4.1.1-py3-none-any.whl", hash = "sha256:aa6436565c069b2946fe4ebff07f5041e0c8bf18c7376dd29edf80cf7d524e4e"}, + {file = "stevedore-4.1.1.tar.gz", hash = "sha256:7f8aeb6e3f90f96832c301bff21a7eb5eefbe894c88c506483d355565d88cc1a"}, +] + +[package.dependencies] +pbr = ">=2.0.0,<2.1.0 || >2.1.0" + [[package]] name = "tomli" version = "2.0.1" @@ -409,7 +996,10 @@ files = [ {file = "wrapt-1.14.1.tar.gz", hash = "sha256:380a85cf89e0e69b7cfbe2ea9f765f004ff419f34194018a6827ac0e3edfed4d"}, ] +[extras] +plugins = ["flake8-2020", "flake8-annotations", "flake8-bandit", "flake8-blind-except", "flake8-bugbear", "flake8-builtins", "flake8-commas", "flake8-comprehensions", "flake8-datetimez", "flake8-debugger", "flake8-docstrings", "flake8-errmsg", "flake8-implicit-str-concat", "flake8-isort", "flake8-pie", "flake8-print", "flake8-quotes", "flake8-return", "flake8-simplify", "flake8-super", "flake8-tidy-imports", "pandas-vet", "pep8-naming"] + [metadata] lock-version = "2.0" python-versions = ">=3.10,<3.12" -content-hash = "382b5873c3c0e9f46b85c501cacfce4978c68bd40bedf7a41740f3ed464a1e22" +content-hash = "33068d5ff7ce23950c15061750785124c432653887fa542b808ae0165234ccf7" diff --git a/scripts/benchmarks/pyproject.toml b/scripts/benchmarks/pyproject.toml index 232da580c7..278f7b0980 100644 --- a/scripts/benchmarks/pyproject.toml +++ b/scripts/benchmarks/pyproject.toml @@ -13,9 +13,65 @@ pyflakes = "^3.0.1" pylint = "^2.15.10" black = "^22.12.0" isort = "^5.11.4" +flake8-2020 = { version = "*", optional = true } +flake8-annotations = { version = "*", optional = true } +flake8-bandit = { version = "*", optional = true } +flake8-blind-except = { version = "*", optional = true } +# flake8-boolean-trap = { version = "*", optional = true } +flake8-bugbear = { version = "*", optional = true } +flake8-builtins = { version = "*", optional = true } +flake8-commas = { version = "*", optional = true } +flake8-comprehensions = { version = "*", optional = true } +flake8-datetimez = { version = "*", optional = true } +flake8-debugger = { version = "*", optional = true } +flake8-docstrings = { version = "*", optional = true } +# flake8-eradicate = { version = "*", optional = true } +flake8-errmsg = { version = "*", optional = true } +flake8-implicit-str-concat = { version = "*", optional = true } +# flake8-import-conventions = { version = "*", optional = true } +flake8-isort = { version = "*", optional = true } +flake8-pie = { version = "*", optional = true } +flake8-print = { version = "*", optional = true } +flake8-quotes = { version = "*", optional = true } +flake8-return = { version = "*", optional = true } +flake8-simplify = { version = "*", optional = true } +flake8-super = { version = "*", optional = true } +flake8-tidy-imports = { version = "*", optional = true } +pandas-vet = { version = "*", optional = true } +pep8-naming = { version = "*", optional = true } [tool.poetry.dev-dependencies] +[tool.poetry.extras] +plugins = [ + "flake8-2020", + "flake8-annotations", + "flake8-bandit", + "flake8-blind-except", + # "flake8-boolean-trap", + "flake8-bugbear", + "flake8-builtins", + "flake8-commas", + "flake8-comprehensions", + "flake8-datetimez", + "flake8-debugger", + "flake8-docstrings", + # "flake8-eradicate", + "flake8-errmsg", + "flake8-implicit-str-concat", + # "flake8-import-conventions", + "flake8-isort", + "flake8-pie", + "flake8-print", + "flake8-quotes", + "flake8-return", + "flake8-simplify", + "flake8-super", + "flake8-tidy-imports", + "pandas-vet", + "pep8-naming", +] + [build-system] requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api" diff --git a/scripts/benchmarks/run_all.sh b/scripts/benchmarks/run_all.sh new file mode 100755 index 0000000000..17fd1b13b0 --- /dev/null +++ b/scripts/benchmarks/run_all.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env sh + +### +# Benchmark Ruff's performance against a variety of similar tools, suppressing output as much as +# possible (so as to reduce I/O overhead). +### + +# Note: Flake8's `checker.py` requires the following variant of `mp_run`: +# def _mp_run(filename: str) -> tuple[str, Results, dict[str, int]]: +# try: +# return FileChecker( +# filename=filename, plugins=_mp_plugins, options=_mp_options +# ).run_checks() +# except: +# return (filename, [], { +# "files": 0, +# "logical lines": 0, +# "physical lines": 0, +# "tokens": 0, +# }) + +hyperfine --ignore-failure --warmup 5 \ + "./target/release/ruff ./resources/test/cpython/ --no-cache --silent --select ALL" \ + "flake8 resources/test/cpython -qq --docstring-convention=all" \ + "pycodestyle resources/test/cpython -qq" \ + "pylint resources/test/cpython -j 0 --recursive=y --disable=E,W,C,R" diff --git a/scripts/benchmarks/run_comparisons.sh b/scripts/benchmarks/run_comparisons.sh index 0101c3e646..8d6c6eadbd 100755 --- a/scripts/benchmarks/run_comparisons.sh +++ b/scripts/benchmarks/run_comparisons.sh @@ -1,43 +1,12 @@ #!/usr/bin/env sh ### -# Benchmark the incremental performance of each subsequent plugin. +# Benchmark Ruff's performance against a variety of similar tools. ### -cargo build --release && hyperfine --ignore-failure --warmup 10 \ +hyperfine --ignore-failure --warmup 5 \ "./target/release/ruff ./resources/test/cpython/ --no-cache" \ - "./target/release/ruff ./resources/test/cpython/ --no-cache --extend-select C90" \ - "./target/release/ruff ./resources/test/cpython/ --no-cache --extend-select I" \ - "./target/release/ruff ./resources/test/cpython/ --no-cache --extend-select D" \ - "./target/release/ruff ./resources/test/cpython/ --no-cache --extend-select UP" \ - "./target/release/ruff ./resources/test/cpython/ --no-cache --extend-select N" \ - "./target/release/ruff ./resources/test/cpython/ --no-cache --extend-select YTT" \ - "./target/release/ruff ./resources/test/cpython/ --no-cache --extend-select ANN" \ - "./target/release/ruff ./resources/test/cpython/ --no-cache --extend-select S" \ - "./target/release/ruff ./resources/test/cpython/ --no-cache --extend-select BLE" \ - "./target/release/ruff ./resources/test/cpython/ --no-cache --extend-select FBT" \ - "./target/release/ruff ./resources/test/cpython/ --no-cache --extend-select B" \ - "./target/release/ruff ./resources/test/cpython/ --no-cache --extend-select A" \ - "./target/release/ruff ./resources/test/cpython/ --no-cache --extend-select C4" \ - "./target/release/ruff ./resources/test/cpython/ --no-cache --extend-select T10" \ - "./target/release/ruff ./resources/test/cpython/ --no-cache --extend-select EM" \ - "./target/release/ruff ./resources/test/cpython/ --no-cache --extend-select ISC" \ - "./target/release/ruff ./resources/test/cpython/ --no-cache --extend-select ICN" \ - "./target/release/ruff ./resources/test/cpython/ --no-cache --extend-select T20" \ - "./target/release/ruff ./resources/test/cpython/ --no-cache --extend-select PT" \ - "./target/release/ruff ./resources/test/cpython/ --no-cache --extend-select Q" \ - "./target/release/ruff ./resources/test/cpython/ --no-cache --extend-select RET" \ - "./target/release/ruff ./resources/test/cpython/ --no-cache --extend-select SIM" \ - "./target/release/ruff ./resources/test/cpython/ --no-cache --extend-select TID" \ - "./target/release/ruff ./resources/test/cpython/ --no-cache --extend-select ARG" \ - "./target/release/ruff ./resources/test/cpython/ --no-cache --extend-select DTZ" \ - "./target/release/ruff ./resources/test/cpython/ --no-cache --extend-select ERA" \ - "./target/release/ruff ./resources/test/cpython/ --no-cache --extend-select PD" \ - "./target/release/ruff ./resources/test/cpython/ --no-cache --extend-select PGH" \ - "./target/release/ruff ./resources/test/cpython/ --no-cache --extend-select PLC" \ - "./target/release/ruff ./resources/test/cpython/ --no-cache --extend-select PLE" \ - "./target/release/ruff ./resources/test/cpython/ --no-cache --extend-select PLR" \ - "./target/release/ruff ./resources/test/cpython/ --no-cache --extend-select PLW" \ - "./target/release/ruff ./resources/test/cpython/ --no-cache --extend-select PIE" \ - "./target/release/ruff ./resources/test/cpython/ --no-cache --extend-select COM" \ - "./target/release/ruff ./resources/test/cpython/ --no-cache --extend-select RUF" + "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" \ + "flake8 resources/test/cpython" diff --git a/scripts/benchmarks/run_plugins.sh b/scripts/benchmarks/run_plugins.sh index e69de29bb2..321ff328d6 100644 --- a/scripts/benchmarks/run_plugins.sh +++ b/scripts/benchmarks/run_plugins.sh @@ -0,0 +1,43 @@ +#!/usr/bin/env sh + +### +# Benchmark the incremental performance of each subsequent plugin. +### + +cargo build --release && hyperfine --ignore-failure --warmup 10 \ + "./target/release/ruff ./resources/test/cpython/ --no-cache --silent" \ + "./target/release/ruff ./resources/test/cpython/ --no-cache --silent --extend-select C90" \ + "./target/release/ruff ./resources/test/cpython/ --no-cache --silent --extend-select I" \ + "./target/release/ruff ./resources/test/cpython/ --no-cache --silent --extend-select D" \ + "./target/release/ruff ./resources/test/cpython/ --no-cache --silent --extend-select UP" \ + "./target/release/ruff ./resources/test/cpython/ --no-cache --silent --extend-select N" \ + "./target/release/ruff ./resources/test/cpython/ --no-cache --silent --extend-select YTT" \ + "./target/release/ruff ./resources/test/cpython/ --no-cache --silent --extend-select ANN" \ + "./target/release/ruff ./resources/test/cpython/ --no-cache --silent --extend-select S" \ + "./target/release/ruff ./resources/test/cpython/ --no-cache --silent --extend-select BLE" \ + "./target/release/ruff ./resources/test/cpython/ --no-cache --silent --extend-select FBT" \ + "./target/release/ruff ./resources/test/cpython/ --no-cache --silent --extend-select B" \ + "./target/release/ruff ./resources/test/cpython/ --no-cache --silent --extend-select A" \ + "./target/release/ruff ./resources/test/cpython/ --no-cache --silent --extend-select C4" \ + "./target/release/ruff ./resources/test/cpython/ --no-cache --silent --extend-select T10" \ + "./target/release/ruff ./resources/test/cpython/ --no-cache --silent --extend-select EM" \ + "./target/release/ruff ./resources/test/cpython/ --no-cache --silent --extend-select ISC" \ + "./target/release/ruff ./resources/test/cpython/ --no-cache --silent --extend-select ICN" \ + "./target/release/ruff ./resources/test/cpython/ --no-cache --silent --extend-select T20" \ + "./target/release/ruff ./resources/test/cpython/ --no-cache --silent --extend-select PT" \ + "./target/release/ruff ./resources/test/cpython/ --no-cache --silent --extend-select Q" \ + "./target/release/ruff ./resources/test/cpython/ --no-cache --silent --extend-select RET" \ + "./target/release/ruff ./resources/test/cpython/ --no-cache --silent --extend-select SIM" \ + "./target/release/ruff ./resources/test/cpython/ --no-cache --silent --extend-select TID" \ + "./target/release/ruff ./resources/test/cpython/ --no-cache --silent --extend-select ARG" \ + "./target/release/ruff ./resources/test/cpython/ --no-cache --silent --extend-select DTZ" \ + "./target/release/ruff ./resources/test/cpython/ --no-cache --silent --extend-select ERA" \ + "./target/release/ruff ./resources/test/cpython/ --no-cache --silent --extend-select PD" \ + "./target/release/ruff ./resources/test/cpython/ --no-cache --silent --extend-select PGH" \ + "./target/release/ruff ./resources/test/cpython/ --no-cache --silent --extend-select PLC" \ + "./target/release/ruff ./resources/test/cpython/ --no-cache --silent --extend-select PLE" \ + "./target/release/ruff ./resources/test/cpython/ --no-cache --silent --extend-select PLR" \ + "./target/release/ruff ./resources/test/cpython/ --no-cache --silent --extend-select PLW" \ + "./target/release/ruff ./resources/test/cpython/ --no-cache --silent --extend-select PIE" \ + "./target/release/ruff ./resources/test/cpython/ --no-cache --silent --extend-select COM" \ + "./target/release/ruff ./resources/test/cpython/ --no-cache --silent --extend-select RUF" diff --git a/scripts/benchmarks/run_silent.sh b/scripts/benchmarks/run_silent.sh new file mode 100755 index 0000000000..e35b69a8bd --- /dev/null +++ b/scripts/benchmarks/run_silent.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env sh + +### +# Benchmark Ruff's performance against a variety of similar tools, suppressing output as much as +# possible (so as to reduce I/O overhead). +### + +hyperfine --ignore-failure --warmup 5 \ + "./target/release/ruff ./resources/test/cpython/ --no-cache --silent" \ + "pycodestyle resources/test/cpython -qq" \ + "flake8 resources/test/cpython -qq" \ + "pylint resources/test/cpython -j 0 --recursive=y --disable=E,W,C,R"