diff --git a/CHANGELOG.md b/CHANGELOG.md
index bba260093..541ad7417 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -19,6 +19,69 @@ Semantic versioning in our case means:
## 1.0.0 WIP
+### Ruff
+
+This release introduces the new main concept: `ruff` compatibility.
+
+Now `WPS` is the only `flake8` plugin that is installed.
+Other things are done by `ruff`.
+It is faster, it has autofixing, there are lots of rules.
+Basically, this way `WPS` just gain lots
+of new rule and plugins almost for free.
+It is now stricter than ever! `WPS` now officially supports
+**ALL** `ruff` existing rules. This means that there are no conflicts
+between two linters.
+
+To run `WPS` and `ruff` together, use:
+
+```bash
+ruff format && ruff check && flake8 --select=WSP .
+```
+
+You can copy our configuration from [`pyproject.toml`](https://github.com/wemake-services/wemake-python-styleguide/blob/bca0a1452335619ee5898e2ab657ca6e4a741f5f/pyproject.toml#L103) (for `ruff`) and [`setup.cfg`](https://github.com/wemake-services/wemake-python-styleguide/blob/bca0a1452335619ee5898e2ab657ca6e4a741f5f/setup.cfg#L7) (for `flake8`).
+
+### Black
+
+`WPS` can now also be used with `black` with **default** configuration.
+However, we recommend using `ruff format` instead.
+
+### Speed
+
+`WPS` got a lot faster! Because:
+- We removed a lot of `flake8` plugins
+- We removed a lot of rules covered by `ruff`
+
+Running `0.19.2` (previous version) on https://github.com/dry-python/returns
+
+```bash
+» time flake8 .
+flake8 . 20.63s user 2.47s system 469% cpu 4.919 total
+```
+
+The same on `1.0.0`:
+
+```
+» time flake8 .
+flake8 . 8.56s user 0.54s system 898% cpu 1.013 total
+```
+
+Which is **2.4x** times faster!
+
+### Integrations
+
+We also significantly improved all the integrations!
+`WPS` can now be used as first-class `pre-commit` hook with:
+
+```yaml
+repos:
+- repo: https://github.com/wemake-services/wemake-python-styleguide
+ rev: 1.0.0
+ hooks:
+ - id: wemake-python-styleguide
+```
+
+Our [GitHub Action](https://github.com/marketplace/actions/wemake-python-styleguide) also got a lot of new options and fixes.
+
### Removals
- **Breaking**: Drops `python3.9` support
@@ -98,7 +161,7 @@ Semantic versioning in our case means:
with code that you want to exclude, there's no need
to create one more way of disabling some specific violations
-## Features
+### Features
- Adds official `python3.13` support
- Allows any compares in `assert` statements for `WPS520`, #3112
diff --git a/Dockerfile b/Dockerfile
index fd6bf049d..f53bc9e4f 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -20,7 +20,7 @@ FROM python:3.12.7-alpine
LABEL maintainer="mail@sobolevn.me"
LABEL vendor="wemake.services"
-ENV WPS_VERSION='0.19.2'
+ENV WPS_VERSION='1.0.0'
ENV REVIEWDOG_VERSION='v0.20.3'
RUN apk add --no-cache bash git wget
diff --git a/README.md b/README.md
index af4ecbcc0..15009a6ff 100644
--- a/README.md
+++ b/README.md
@@ -19,8 +19,9 @@ Welcome to the strictest and most opinionated Python linter ever.
`wemake-python-styleguide` is actually a [flake8](http://flake8.pycqa.org/en/latest/)
-plugin with [some other plugins](https://wemake-python-styleguide.rtfd.io/en/latest/pages/usage/violations/index.html#external-plugins) as dependencies.
+plugin, the only one you will need as your [ruff](https://github.com/astral-sh/ruff) companion.
+Fully compatible with **ALL** rules and format conventions from `ruff`.
## Quickstart
@@ -40,7 +41,7 @@ We highly recommend to also use:
## Running
```bash
-flake8 your_module.py
+flake8 your_module.py --select=WPS
```
This app is still just good old `flake8`!
@@ -57,6 +58,15 @@ in the docs for examples and integrations.
We also support [GitHub Actions](https://wemake-python-styleguide.rtfd.io/en/latest/pages/usage/integrations/github-actions.html) as first class-citizens.
[Try it out](https://github.com/marketplace/actions/wemake-python-styleguide)!
+Can (and should!) be used with `ruff`:
+
+```bash
+ruff check && ruff format
+flake8 . --select=WPS
+```
+
+See example `ruff` configuration in our [`pyproject.toml`](https://github.com/wemake-services/wemake-python-styleguide/blob/master/pyproject.toml#L103).
+
## Strict is the new cool
@@ -96,14 +106,14 @@ You can find all error codes and plugins [in the docs](https://wemake-python-sty
We are *not* planning to do the following things:
0. Assume or check types, use `mypy` together with our linter
-1. [Reformat code](https://wemake-python-styleguide.rtfd.io/en/latest/pages/usage/integrations/auto-formatters.html), since we believe that developers should do that
+1. Format code or produce stylistic errors, use `ruff format` for that
2. Check for `SyntaxError` or logical bugs, write tests instead
3. Appeal to everyone. But, you can [switch off](https://wemake-python-styleguide.rtfd.io/en/latest/pages/usage/setup.html#ignoring-violations) any rules that you don't like
## Supporting us :tada:
-We in [wemake.services](https://wemake.services) make
+We in [wemake.services](https://github.com/wemake-services) make
all our tools open-source by default, so the community can benefit from them.
If you use our tools and they make your life easier and brings business value,
you can return us a favor by supporting the work we do.
diff --git a/docs/pages/usage/configuration.rst b/docs/pages/usage/configuration.rst
index 5f42d48d3..661bac71c 100644
--- a/docs/pages/usage/configuration.rst
+++ b/docs/pages/usage/configuration.rst
@@ -15,53 +15,6 @@ the configuration to all ``python`` projects.
.. automodule:: wemake_python_styleguide.options.config
:no-members:
-.. rubric:: Plugins
-
-It is also important to configure different plugins that we ship with
-this module.
-
-All recommended settings can be found in our `styleguide.toml `_.
-
-You can basically configure them as you wish,
-including stylistic (like ``--quotes`` from ``flake8-quotes``)
-and important things (like ``--max-complexity`` from ``mccabe``).
-Our `flake8.toml `_
-file is available with the core settings for ``flake8``.
-
-**flake8-isort**
-
-We use ``flake8-isort`` to check style of imports in our code.
-To avoid triggering these checks, you can either use `"wemake" isort profile `_
-or update your configuration with the following lines:
-
-.. code:: ini
-
- # Inside `setup.cfg`:
-
- [isort]
- include_trailing_comma = true
- use_parentheses = true
- multi_line_output = 3
-
-Our `isort.toml `_
-file is available with the core settings for ``isort``.
-
-**darglint**
-
-We use ``darglint`` to ensure that docstrings match NumPy documentation style.
-To avoid triggering these checks, please ensure that your configuration contains
-following settings:
-
-.. code:: ini
-
- # Inside `setup.cfg`
-
- [darglint]
- strictness = long
-
-Our `darglint.toml `_
-file is available with the core settings for ``isort``.
-
.. rubric:: Ignoring violations
We know that people might not agree with 100% of our rules.
diff --git a/docs/pages/usage/integrations/auto-formatters.rst b/docs/pages/usage/integrations/auto-formatters.rst
index 61fad2382..a1c67994a 100644
--- a/docs/pages/usage/integrations/auto-formatters.rst
+++ b/docs/pages/usage/integrations/auto-formatters.rst
@@ -1,78 +1,28 @@
Auto-formatters
---------------
-Autoformatters are very simple tools to do just a one thing:
-reformat some basic stuff in your code like quotes, commas, and line length.
+List of supported tools.
-The difference between a linter and auto-formatter is huge:
-- auto-formatters pretties your code a little bit
-- linters force you to write beautiful and correct code
+ruff
+~~~~
-For example, auto-formatters won't tell you that your code is too complex.
-When your linter will (in case it is a good linter).
+Fully supported.
+You can run ``ruff check && ruff format`` and there
+should be no conflicts with ``WPS`` at all.
-Autoformatters are also useless
-when dealing with rewriting actually bad code.
-Like code with bad variable names, unreachable branches,
-statements that have no effect.
+But, ``wemake-python-styleguide`` can and will find additional
+problems that ``ruff`` missed.
-We in ``wemake.services`` believe that these kind of tools are not required,
-because a good linter will just not let your badly formatted code pass the CI,
-so there would be no junk to reformat!
-All code is perfectly formatted all the time.
-
-Rely on strict linters, not auto-formatters.
-
-However, if you still want to use some autoformatter
-together with ``wemake-python-styleguide``
-we have made some research to help you!
isort
~~~~~
-``isort`` is a great tool to sort your imports.
-We already use it to validate that your imports are correct.
-We recommend to use ``isort`` and officially
-and support it in a way that all
-valid ``wemake-python-styleguide`` code is valid ``isort`` code.
-But, **not the other way around**.
-
-You might be required to refactor your code manually after ``isort``
-reformat to make ``wemake-python-styleguide`` happy.
-
-``isort`` can also `be invoked `_
-as a command line tool to fix all your import problems for you.
-
-We recommend to run ``isort``. They are also compatible.
+We support ``isort``, but we recommend to use ``ruff`` instead.
+See https://docs.astral.sh/ruff/rules/#isort-i
-There are also plugins for IDEs to run ``isort`` on safe:
-
-- https://github.com/timothycrosley/isort/wiki/isort-Plugins
-- https://code.visualstudio.com/docs/python/editing
-
-You can find the configuration we use in ``setup.cfg`` in this repository.
black
~~~~~
-``wemake-python-styleguide`` is not compatible with ``black``.
-Let's go deeper and see why.
-
-``black`` itself is actually not compatible with ``PEP8`` and ``flake8``
-(`docs `_),
-that's why it is not compatible with ``wemake-python-styleguide`` either.
-Here are the violations that ``black`` produces:
-
-- Quotes: for some reasons ``black`` uses ``"``
- that almost no one uses in the ``python`` world
-- Trailing commas: ``black`` strips trailing commas and this makes
- adding new code harder to review, since your ``git diff`` is polluted
- by a comma change, the sad thing that trailing commas as a best-practice
- are quite popular in ``python`` code
-- Line length. Violating rules by 10%-15% is not ok.
- You either violate them or not. ``black`` violates line-length rules.
-
-And there's no configuration to fix it!
-Shame, that official ``python-org`` product violates the community standards
-and not enforcing them.
+Is supported since ``1.0.0``, but we recommend to use ``ruff format`` instead.
diff --git a/docs/pages/usage/integrations/github-actions.rst b/docs/pages/usage/integrations/github-actions.rst
index d18e2784c..e3fb4b933 100644
--- a/docs/pages/usage/integrations/github-actions.rst
+++ b/docs/pages/usage/integrations/github-actions.rst
@@ -29,10 +29,11 @@ We support three reporting options:
- ``terminal`` (default one) when we just dump the output into Action's logs.
Is the easiest one to setup, that's why we use it by default
- ``github-pr-review`` (recommended) when we use `inline comments `_ inside code reviews
-- ``github-pr-check`` when we use `Github Checks `_ for the output
+- ``github-pr-check`` when we use `GitHub Checks `_ for the output
+- ``github-check`` another way to use `GitHub Checks `_ for the output
-Take a note that ``github-pr-review`` and ``github-pr-check`` requires
-``GITHUB_TOKEN`` environment variable to be set.
+Take a note that ``github-check``, ``github-pr-review`` and ``github-pr-check``
+requires ``GITHUB_TOKEN`` environment variable to be set.
Default reporter looks like so:
@@ -64,6 +65,29 @@ We also support custom ``path`` to be specified:
with:
path: './your/custom/path'
+.. rubric:: cwd
+
+We also support custom ``cwd`` to be specified,
+it will be used to ``cd`` into before any other actions.
+It can be a custom subfolder with your configuration, etc.
+
+.. code:: yaml
+
+ - name: wemake-python-styleguide
+ uses: wemake-services/wemake-python-styleguide
+ with:
+ cwd: './your/custom/path'
+
+.. rubric:: fail_workflow
+
+Option which can be set to ``false`` with ``fail_workflow: false`` not
+to fail the workflow even if violations were found.
+
+.. rubric:: filter_mode
+
+Can be used to find only new violations and ignore old ones.
+See https://github.com/reviewdog/reviewdog?tab=readme-ov-file#filter-mode
+
Outputs
~~~~~~~
diff --git a/docs/pages/usage/integrations/index.rst b/docs/pages/usage/integrations/index.rst
index 4d7abcd2a..74a796203 100644
--- a/docs/pages/usage/integrations/index.rst
+++ b/docs/pages/usage/integrations/index.rst
@@ -9,6 +9,5 @@
github-actions.rst
ci.rst
stubs.rst
- pylint.rst
extras.rst
jupyter_notebooks.rst
diff --git a/docs/pages/usage/integrations/pylint.rst b/docs/pages/usage/integrations/pylint.rst
deleted file mode 100644
index 4f524fd86..000000000
--- a/docs/pages/usage/integrations/pylint.rst
+++ /dev/null
@@ -1,44 +0,0 @@
-pylint
-------
-
-We are not related to the ``pylint`` project.
-Yes, we know that it is awesome. But, it has some drawbacks:
-
-1. It makes a lot of type assertions. And does it incorrectly.
- Since we use ``mypy`` there is no sense in this feature.
- Without this feature a lot
- of other ``pylint`` features looses its point as well
-2. There are less existing plugins for ``pylint`` than for ``flake8``
-3. It uses custom ``ast`` parser and library, which can be problematic
-4. It is not strict enough for us.
- So, we will have to write our own plugin no matter what platform we use
-
-However, it is important to mention
-that ``pylint`` is less radical and more classic in its rules.
-
-``wemake-python-styleguide`` and ``pylint`` shares a lot in common.
-They are almost compatible with each other.
-The difference is in:
-
-- Several minor rules like `class Some:` vs `class Some:`
-- Error codes
-- Python versions, because ``pylint`` covers more versions
-- ``wemake-python-styleguide`` is stricter and finds more
- violations than ``pylint``
-
-We also run ``pylint`` on the ``wemake-python-styleguide`` source code
-with the help of `deepsource.io `_
-and keep the errors count at 0.
-
-.. image:: https://static.deepsource.io/deepsource-badge-light.svg
- :target: https://deepsource.io/gh/wemake-services/wemake-python-styleguide/?ref=repository-badge
-
-flakeheaven
-~~~~~~~~~~~
-
-You can also use ``pylint`` together with our linter if you
-want so (however, we do not recommend to use ``pylint`` at all)
-with the help of ``flakeheaven``.
-
-See `flakeheaven docs `_
-for more information.
diff --git a/docs/pages/usage/setup.rst b/docs/pages/usage/setup.rst
index f1626d74b..3e1f1cb5b 100644
--- a/docs/pages/usage/setup.rst
+++ b/docs/pages/usage/setup.rst
@@ -2,6 +2,7 @@ Setup
=====
Remember that ``wemake-python-styleguide`` is just a ``flake8`` plugin.
+That is compatible with ``ruff --select=ALL`` and should be used after it.
.. _installation:
@@ -24,6 +25,12 @@ that pairs nicely with ``wemake-python-styleguide``:
.. _usage:
+Required configuration
+----------------------
+
+You must either provide ``--select=WPS`` to all your ``flake8`` calls,
+or add ``select = WPS`` into your ``flake8`` configration file.
+
Running
-------
diff --git a/poetry.lock b/poetry.lock
index 5bd6a5c60..0a113012e 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -310,73 +310,73 @@ coverage = ">=6.0.2"
[[package]]
name = "coverage"
-version = "7.6.9"
+version = "7.6.10"
description = "Code coverage measurement for Python"
optional = false
python-versions = ">=3.9"
files = [
- {file = "coverage-7.6.9-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:85d9636f72e8991a1706b2b55b06c27545448baf9f6dbf51c4004609aacd7dcb"},
- {file = "coverage-7.6.9-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:608a7fd78c67bee8936378299a6cb9f5149bb80238c7a566fc3e6717a4e68710"},
- {file = "coverage-7.6.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:96d636c77af18b5cb664ddf12dab9b15a0cfe9c0bde715da38698c8cea748bfa"},
- {file = "coverage-7.6.9-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d75cded8a3cff93da9edc31446872d2997e327921d8eed86641efafd350e1df1"},
- {file = "coverage-7.6.9-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f7b15f589593110ae767ce997775d645b47e5cbbf54fd322f8ebea6277466cec"},
- {file = "coverage-7.6.9-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:44349150f6811b44b25574839b39ae35291f6496eb795b7366fef3bd3cf112d3"},
- {file = "coverage-7.6.9-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:d891c136b5b310d0e702e186d70cd16d1119ea8927347045124cb286b29297e5"},
- {file = "coverage-7.6.9-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:db1dab894cc139f67822a92910466531de5ea6034ddfd2b11c0d4c6257168073"},
- {file = "coverage-7.6.9-cp310-cp310-win32.whl", hash = "sha256:41ff7b0da5af71a51b53f501a3bac65fb0ec311ebed1632e58fc6107f03b9198"},
- {file = "coverage-7.6.9-cp310-cp310-win_amd64.whl", hash = "sha256:35371f8438028fdccfaf3570b31d98e8d9eda8bb1d6ab9473f5a390969e98717"},
- {file = "coverage-7.6.9-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:932fc826442132dde42ee52cf66d941f581c685a6313feebed358411238f60f9"},
- {file = "coverage-7.6.9-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:085161be5f3b30fd9b3e7b9a8c301f935c8313dcf928a07b116324abea2c1c2c"},
- {file = "coverage-7.6.9-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ccc660a77e1c2bf24ddbce969af9447a9474790160cfb23de6be4fa88e3951c7"},
- {file = "coverage-7.6.9-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c69e42c892c018cd3c8d90da61d845f50a8243062b19d228189b0224150018a9"},
- {file = "coverage-7.6.9-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0824a28ec542a0be22f60c6ac36d679e0e262e5353203bea81d44ee81fe9c6d4"},
- {file = "coverage-7.6.9-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:4401ae5fc52ad8d26d2a5d8a7428b0f0c72431683f8e63e42e70606374c311a1"},
- {file = "coverage-7.6.9-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:98caba4476a6c8d59ec1eb00c7dd862ba9beca34085642d46ed503cc2d440d4b"},
- {file = "coverage-7.6.9-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ee5defd1733fd6ec08b168bd4f5387d5b322f45ca9e0e6c817ea6c4cd36313e3"},
- {file = "coverage-7.6.9-cp311-cp311-win32.whl", hash = "sha256:f2d1ec60d6d256bdf298cb86b78dd715980828f50c46701abc3b0a2b3f8a0dc0"},
- {file = "coverage-7.6.9-cp311-cp311-win_amd64.whl", hash = "sha256:0d59fd927b1f04de57a2ba0137166d31c1a6dd9e764ad4af552912d70428c92b"},
- {file = "coverage-7.6.9-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:99e266ae0b5d15f1ca8d278a668df6f51cc4b854513daab5cae695ed7b721cf8"},
- {file = "coverage-7.6.9-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9901d36492009a0a9b94b20e52ebfc8453bf49bb2b27bca2c9706f8b4f5a554a"},
- {file = "coverage-7.6.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:abd3e72dd5b97e3af4246cdada7738ef0e608168de952b837b8dd7e90341f015"},
- {file = "coverage-7.6.9-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ff74026a461eb0660366fb01c650c1d00f833a086b336bdad7ab00cc952072b3"},
- {file = "coverage-7.6.9-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65dad5a248823a4996724a88eb51d4b31587aa7aa428562dbe459c684e5787ae"},
- {file = "coverage-7.6.9-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:22be16571504c9ccea919fcedb459d5ab20d41172056206eb2994e2ff06118a4"},
- {file = "coverage-7.6.9-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0f957943bc718b87144ecaee70762bc2bc3f1a7a53c7b861103546d3a403f0a6"},
- {file = "coverage-7.6.9-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0ae1387db4aecb1f485fb70a6c0148c6cdaebb6038f1d40089b1fc84a5db556f"},
- {file = "coverage-7.6.9-cp312-cp312-win32.whl", hash = "sha256:1a330812d9cc7ac2182586f6d41b4d0fadf9be9049f350e0efb275c8ee8eb692"},
- {file = "coverage-7.6.9-cp312-cp312-win_amd64.whl", hash = "sha256:b12c6b18269ca471eedd41c1b6a1065b2f7827508edb9a7ed5555e9a56dcfc97"},
- {file = "coverage-7.6.9-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:899b8cd4781c400454f2f64f7776a5d87bbd7b3e7f7bda0cb18f857bb1334664"},
- {file = "coverage-7.6.9-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:61f70dc68bd36810972e55bbbe83674ea073dd1dcc121040a08cdf3416c5349c"},
- {file = "coverage-7.6.9-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a289d23d4c46f1a82d5db4abeb40b9b5be91731ee19a379d15790e53031c014"},
- {file = "coverage-7.6.9-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7e216d8044a356fc0337c7a2a0536d6de07888d7bcda76febcb8adc50bdbbd00"},
- {file = "coverage-7.6.9-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c026eb44f744acaa2bda7493dad903aa5bf5fc4f2554293a798d5606710055d"},
- {file = "coverage-7.6.9-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e77363e8425325384f9d49272c54045bbed2f478e9dd698dbc65dbc37860eb0a"},
- {file = "coverage-7.6.9-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:777abfab476cf83b5177b84d7486497e034eb9eaea0d746ce0c1268c71652077"},
- {file = "coverage-7.6.9-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:447af20e25fdbe16f26e84eb714ba21d98868705cb138252d28bc400381f6ffb"},
- {file = "coverage-7.6.9-cp313-cp313-win32.whl", hash = "sha256:d872ec5aeb086cbea771c573600d47944eea2dcba8be5f3ee649bfe3cb8dc9ba"},
- {file = "coverage-7.6.9-cp313-cp313-win_amd64.whl", hash = "sha256:fd1213c86e48dfdc5a0cc676551db467495a95a662d2396ecd58e719191446e1"},
- {file = "coverage-7.6.9-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:ba9e7484d286cd5a43744e5f47b0b3fb457865baf07bafc6bee91896364e1419"},
- {file = "coverage-7.6.9-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e5ea1cf0872ee455c03e5674b5bca5e3e68e159379c1af0903e89f5eba9ccc3a"},
- {file = "coverage-7.6.9-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d10e07aa2b91835d6abec555ec8b2733347956991901eea6ffac295f83a30e4"},
- {file = "coverage-7.6.9-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:13a9e2d3ee855db3dd6ea1ba5203316a1b1fd8eaeffc37c5b54987e61e4194ae"},
- {file = "coverage-7.6.9-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c38bf15a40ccf5619fa2fe8f26106c7e8e080d7760aeccb3722664c8656b030"},
- {file = "coverage-7.6.9-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:d5275455b3e4627c8e7154feaf7ee0743c2e7af82f6e3b561967b1cca755a0be"},
- {file = "coverage-7.6.9-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:8f8770dfc6e2c6a2d4569f411015c8d751c980d17a14b0530da2d7f27ffdd88e"},
- {file = "coverage-7.6.9-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8d2dfa71665a29b153a9681edb1c8d9c1ea50dfc2375fb4dac99ea7e21a0bcd9"},
- {file = "coverage-7.6.9-cp313-cp313t-win32.whl", hash = "sha256:5e6b86b5847a016d0fbd31ffe1001b63355ed309651851295315031ea7eb5a9b"},
- {file = "coverage-7.6.9-cp313-cp313t-win_amd64.whl", hash = "sha256:97ddc94d46088304772d21b060041c97fc16bdda13c6c7f9d8fcd8d5ae0d8611"},
- {file = "coverage-7.6.9-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:adb697c0bd35100dc690de83154627fbab1f4f3c0386df266dded865fc50a902"},
- {file = "coverage-7.6.9-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:be57b6d56e49c2739cdf776839a92330e933dd5e5d929966fbbd380c77f060be"},
- {file = "coverage-7.6.9-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1592791f8204ae9166de22ba7e6705fa4ebd02936c09436a1bb85aabca3e599"},
- {file = "coverage-7.6.9-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4e12ae8cc979cf83d258acb5e1f1cf2f3f83524d1564a49d20b8bec14b637f08"},
- {file = "coverage-7.6.9-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb5555cff66c4d3d6213a296b360f9e1a8e323e74e0426b6c10ed7f4d021e464"},
- {file = "coverage-7.6.9-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:b9389a429e0e5142e69d5bf4a435dd688c14478a19bb901735cdf75e57b13845"},
- {file = "coverage-7.6.9-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:592ac539812e9b46046620341498caf09ca21023c41c893e1eb9dbda00a70cbf"},
- {file = "coverage-7.6.9-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a27801adef24cc30871da98a105f77995e13a25a505a0161911f6aafbd66e678"},
- {file = "coverage-7.6.9-cp39-cp39-win32.whl", hash = "sha256:8e3c3e38930cfb729cb8137d7f055e5a473ddaf1217966aa6238c88bd9fd50e6"},
- {file = "coverage-7.6.9-cp39-cp39-win_amd64.whl", hash = "sha256:e28bf44afa2b187cc9f41749138a64435bf340adfcacb5b2290c070ce99839d4"},
- {file = "coverage-7.6.9-pp39.pp310-none-any.whl", hash = "sha256:f3ca78518bc6bc92828cd11867b121891d75cae4ea9e908d72030609b996db1b"},
- {file = "coverage-7.6.9.tar.gz", hash = "sha256:4a8d8977b0c6ef5aeadcb644da9e69ae0dcfe66ec7f368c89c72e058bd71164d"},
+ {file = "coverage-7.6.10-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5c912978f7fbf47ef99cec50c4401340436d200d41d714c7a4766f377c5b7b78"},
+ {file = "coverage-7.6.10-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a01ec4af7dfeb96ff0078ad9a48810bb0cc8abcb0115180c6013a6b26237626c"},
+ {file = "coverage-7.6.10-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a3b204c11e2b2d883946fe1d97f89403aa1811df28ce0447439178cc7463448a"},
+ {file = "coverage-7.6.10-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:32ee6d8491fcfc82652a37109f69dee9a830e9379166cb73c16d8dc5c2915165"},
+ {file = "coverage-7.6.10-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675cefc4c06e3b4c876b85bfb7c59c5e2218167bbd4da5075cbe3b5790a28988"},
+ {file = "coverage-7.6.10-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f4f620668dbc6f5e909a0946a877310fb3d57aea8198bde792aae369ee1c23b5"},
+ {file = "coverage-7.6.10-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:4eea95ef275de7abaef630c9b2c002ffbc01918b726a39f5a4353916ec72d2f3"},
+ {file = "coverage-7.6.10-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e2f0280519e42b0a17550072861e0bc8a80a0870de260f9796157d3fca2733c5"},
+ {file = "coverage-7.6.10-cp310-cp310-win32.whl", hash = "sha256:bc67deb76bc3717f22e765ab3e07ee9c7a5e26b9019ca19a3b063d9f4b874244"},
+ {file = "coverage-7.6.10-cp310-cp310-win_amd64.whl", hash = "sha256:0f460286cb94036455e703c66988851d970fdfd8acc2a1122ab7f4f904e4029e"},
+ {file = "coverage-7.6.10-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ea3c8f04b3e4af80e17bab607c386a830ffc2fb88a5484e1df756478cf70d1d3"},
+ {file = "coverage-7.6.10-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:507a20fc863cae1d5720797761b42d2d87a04b3e5aeb682ef3b7332e90598f43"},
+ {file = "coverage-7.6.10-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d37a84878285b903c0fe21ac8794c6dab58150e9359f1aaebbeddd6412d53132"},
+ {file = "coverage-7.6.10-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a534738b47b0de1995f85f582d983d94031dffb48ab86c95bdf88dc62212142f"},
+ {file = "coverage-7.6.10-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d7a2bf79378d8fb8afaa994f91bfd8215134f8631d27eba3e0e2c13546ce994"},
+ {file = "coverage-7.6.10-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6713ba4b4ebc330f3def51df1d5d38fad60b66720948112f114968feb52d3f99"},
+ {file = "coverage-7.6.10-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ab32947f481f7e8c763fa2c92fd9f44eeb143e7610c4ca9ecd6a36adab4081bd"},
+ {file = "coverage-7.6.10-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:7bbd8c8f1b115b892e34ba66a097b915d3871db7ce0e6b9901f462ff3a975377"},
+ {file = "coverage-7.6.10-cp311-cp311-win32.whl", hash = "sha256:299e91b274c5c9cdb64cbdf1b3e4a8fe538a7a86acdd08fae52301b28ba297f8"},
+ {file = "coverage-7.6.10-cp311-cp311-win_amd64.whl", hash = "sha256:489a01f94aa581dbd961f306e37d75d4ba16104bbfa2b0edb21d29b73be83609"},
+ {file = "coverage-7.6.10-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:27c6e64726b307782fa5cbe531e7647aee385a29b2107cd87ba7c0105a5d3853"},
+ {file = "coverage-7.6.10-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c56e097019e72c373bae32d946ecf9858fda841e48d82df7e81c63ac25554078"},
+ {file = "coverage-7.6.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7827a5bc7bdb197b9e066cdf650b2887597ad124dd99777332776f7b7c7d0d0"},
+ {file = "coverage-7.6.10-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:204a8238afe787323a8b47d8be4df89772d5c1e4651b9ffa808552bdf20e1d50"},
+ {file = "coverage-7.6.10-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e67926f51821b8e9deb6426ff3164870976fe414d033ad90ea75e7ed0c2e5022"},
+ {file = "coverage-7.6.10-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e78b270eadb5702938c3dbe9367f878249b5ef9a2fcc5360ac7bff694310d17b"},
+ {file = "coverage-7.6.10-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:714f942b9c15c3a7a5fe6876ce30af831c2ad4ce902410b7466b662358c852c0"},
+ {file = "coverage-7.6.10-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:abb02e2f5a3187b2ac4cd46b8ced85a0858230b577ccb2c62c81482ca7d18852"},
+ {file = "coverage-7.6.10-cp312-cp312-win32.whl", hash = "sha256:55b201b97286cf61f5e76063f9e2a1d8d2972fc2fcfd2c1272530172fd28c359"},
+ {file = "coverage-7.6.10-cp312-cp312-win_amd64.whl", hash = "sha256:e4ae5ac5e0d1e4edfc9b4b57b4cbecd5bc266a6915c500f358817a8496739247"},
+ {file = "coverage-7.6.10-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:05fca8ba6a87aabdd2d30d0b6c838b50510b56cdcfc604d40760dae7153b73d9"},
+ {file = "coverage-7.6.10-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9e80eba8801c386f72e0712a0453431259c45c3249f0009aff537a517b52942b"},
+ {file = "coverage-7.6.10-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a372c89c939d57abe09e08c0578c1d212e7a678135d53aa16eec4430adc5e690"},
+ {file = "coverage-7.6.10-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ec22b5e7fe7a0fa8509181c4aac1db48f3dd4d3a566131b313d1efc102892c18"},
+ {file = "coverage-7.6.10-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26bcf5c4df41cad1b19c84af71c22cbc9ea9a547fc973f1f2cc9a290002c8b3c"},
+ {file = "coverage-7.6.10-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4e4630c26b6084c9b3cb53b15bd488f30ceb50b73c35c5ad7871b869cb7365fd"},
+ {file = "coverage-7.6.10-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2396e8116db77789f819d2bc8a7e200232b7a282c66e0ae2d2cd84581a89757e"},
+ {file = "coverage-7.6.10-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:79109c70cc0882e4d2d002fe69a24aa504dec0cc17169b3c7f41a1d341a73694"},
+ {file = "coverage-7.6.10-cp313-cp313-win32.whl", hash = "sha256:9e1747bab246d6ff2c4f28b4d186b205adced9f7bd9dc362051cc37c4a0c7bd6"},
+ {file = "coverage-7.6.10-cp313-cp313-win_amd64.whl", hash = "sha256:254f1a3b1eef5f7ed23ef265eaa89c65c8c5b6b257327c149db1ca9d4a35f25e"},
+ {file = "coverage-7.6.10-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:2ccf240eb719789cedbb9fd1338055de2761088202a9a0b73032857e53f612fe"},
+ {file = "coverage-7.6.10-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:0c807ca74d5a5e64427c8805de15b9ca140bba13572d6d74e262f46f50b13273"},
+ {file = "coverage-7.6.10-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2bcfa46d7709b5a7ffe089075799b902020b62e7ee56ebaed2f4bdac04c508d8"},
+ {file = "coverage-7.6.10-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4e0de1e902669dccbf80b0415fb6b43d27edca2fbd48c74da378923b05316098"},
+ {file = "coverage-7.6.10-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f7b444c42bbc533aaae6b5a2166fd1a797cdb5eb58ee51a92bee1eb94a1e1cb"},
+ {file = "coverage-7.6.10-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:b330368cb99ef72fcd2dc3ed260adf67b31499584dc8a20225e85bfe6f6cfed0"},
+ {file = "coverage-7.6.10-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:9a7cfb50515f87f7ed30bc882f68812fd98bc2852957df69f3003d22a2aa0abf"},
+ {file = "coverage-7.6.10-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6f93531882a5f68c28090f901b1d135de61b56331bba82028489bc51bdd818d2"},
+ {file = "coverage-7.6.10-cp313-cp313t-win32.whl", hash = "sha256:89d76815a26197c858f53c7f6a656686ec392b25991f9e409bcef020cd532312"},
+ {file = "coverage-7.6.10-cp313-cp313t-win_amd64.whl", hash = "sha256:54a5f0f43950a36312155dae55c505a76cd7f2b12d26abeebbe7a0b36dbc868d"},
+ {file = "coverage-7.6.10-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:656c82b8a0ead8bba147de9a89bda95064874c91a3ed43a00e687f23cc19d53a"},
+ {file = "coverage-7.6.10-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ccc2b70a7ed475c68ceb548bf69cec1e27305c1c2606a5eb7c3afff56a1b3b27"},
+ {file = "coverage-7.6.10-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5e37dc41d57ceba70956fa2fc5b63c26dba863c946ace9705f8eca99daecdc4"},
+ {file = "coverage-7.6.10-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0aa9692b4fdd83a4647eeb7db46410ea1322b5ed94cd1715ef09d1d5922ba87f"},
+ {file = "coverage-7.6.10-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa744da1820678b475e4ba3dfd994c321c5b13381d1041fe9c608620e6676e25"},
+ {file = "coverage-7.6.10-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:c0b1818063dc9e9d838c09e3a473c1422f517889436dd980f5d721899e66f315"},
+ {file = "coverage-7.6.10-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:59af35558ba08b758aec4d56182b222976330ef8d2feacbb93964f576a7e7a90"},
+ {file = "coverage-7.6.10-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7ed2f37cfce1ce101e6dffdfd1c99e729dd2ffc291d02d3e2d0af8b53d13840d"},
+ {file = "coverage-7.6.10-cp39-cp39-win32.whl", hash = "sha256:4bcc276261505d82f0ad426870c3b12cb177752834a633e737ec5ee79bbdff18"},
+ {file = "coverage-7.6.10-cp39-cp39-win_amd64.whl", hash = "sha256:457574f4599d2b00f7f637a0700a6422243b3565509457b2dbd3f50703e11f59"},
+ {file = "coverage-7.6.10-pp39.pp310-none-any.whl", hash = "sha256:fd34e7b3405f0cc7ab03d54a334c17a9e802897580d964bd8c2001f4b9fd488f"},
+ {file = "coverage-7.6.10.tar.gz", hash = "sha256:7fb105327c8f8f0682e29843e2ff96af9dcbe5bab8eeb4b398c6a33a16d80a23"},
]
[package.dependencies]
diff --git a/pyproject.toml b/pyproject.toml
index 7e28188ce..7676d1477 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -4,7 +4,7 @@ requires = [ "poetry-core>=1.9" ]
[tool.poetry]
name = "wemake-python-styleguide"
-version = "0.19.2"
+version = "1.0.0"
description = "The strictest and most opinionated python linter ever"
license = "MIT"
diff --git a/setup.cfg b/setup.cfg
index e3cd0dd26..5a42b9b10 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -4,6 +4,10 @@
# === Linter configuration ===
# You can reuse this configuration in your own projects.
+
+# NOTE: You can use https://pypi.org/project/Flake8-pyproject/
+# to move all your `flake8` configuration to `pyproject.toml`
+
[flake8]
# Base flake8 configuration:
# https://flake8.pycqa.org/en/latest/user/configuration.html