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