Skip to content

Conversation

renovate[bot]
Copy link
Contributor

@renovate renovate bot commented Dec 28, 2024

Coming soon: The Renovate bot (GitHub App) will be renamed to Mend. PRs from Renovate will soon appear from 'Mend'. Learn more here.

This PR contains the following updates:

Package Change Age Confidence
wemake-python-styleguide (source) 0.19.2 -> 1.4.0 age confidence

Release Notes

wemake-services/wemake-python-styleguide (wemake-python-styleguide)

v1.4.0

Compare Source

Features
  • Allows __init__.py files that consist only of imports, #​3486
  • Adds --max-conditions option, #​3493
  • Adds --known-enum-bases option to support custom enum-like base classes, #​3513
Misc
  • Adds custom Sphinx directive .. plugincodes for violation rendering, #​1318
  • Adds violation classes filter for docs rendering, #​3490

v1.3.0

Compare Source

Features
  • Adds more names to WPS110: spam, ham, tmp, temp, arr
Bugfixes
  • Fixes WPS243 to use number of statements in finally body
    instead of a number of lines, #​3458

v1.2.0

Compare Source

Due to PEP-695, it's now allowed
to use [] in decorators only for python3.12+.

@​MyClassDecorator[T, V]
def some_function(): ...
Features
  • Adds WPS243: forbids complex finally bodies, #​3458
  • Adds WPS478: forbids using non strict slice operations, #​1011
  • Adds WPS479: forbids using multiline fstrings, #​3405
  • Adds WPS480: forbids using comments inside formatted string, #​3404
Bugfixes
  • Removes unnecessary WPS604 and WPS614 rules from the noqa.py, #​3420
  • Fixes WPS115 false-positive on StrEnum, IntEnum, IntFlag attributes, #​3381
  • Fixes WPS432, now it ignores magic numbers in Literal, #​3397
  • Fixes WPS466 for generic type specifications MyClassDecorator[T], #​3417
  • Fixes WPS212 to ignore nested classes and functions
    when counting return statements, #​3413
  • Improves WPS349 highlighting, #​3437

v1.1.0

Compare Source

Command line utility

This version introduces wps CLI tool.
wps explain <code> command can be used to access WPS
violation docs (same as on website) but without any internet access.

Features
  • Adds WPS476: forbids to use await expressions in for loops, #​1600
  • Adds WPS477: forbids TypeVarTuple after a TypeVar with a default, #​3265
Bugfixes
  • Fixes WPS115 false-positive on Enum attributes, #​3238
  • Removes duplicated WPS312, #​3239
  • Fixes WPS432, now it shows literal num, #​1402
  • Fixes WPS226, now it points to the first string literal occurrence, #​3267
  • Fixes WPS605 false-positive on @staticmethod, #​3292
  • Fixes _SELF name not to trigger WPS117, #​3310
  • Fixes WPS221 being too strict with f-strings, #​3350

v1.0.0

Compare Source

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:

ruff format && ruff check && flake8 --select=WPS .

You can copy our configuration from pyproject.toml (for ruff) and setup.cfg (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

» 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:

repos:
- repo: https://github.com/wemake-services/wemake-python-styleguide
  rev: 1.0.0
  hooks:
    - id: wemake-python-styleguide

Our GitHub Action also got a lot of new options and fixes.

Removals
  • Breaking: Drops python3.9 support
  • Breaking: Drops nitpick support
  • Breaking: Drops flake8-commas, flake8-isort,
    flake8-debugger, flake8-string-format, flake8-quotes,
    flake8-comprehensions, flake8-bugbear, flake8-docstrings,
    flake8-eradicate, flake8-bandit, flake8-broken-line,
    flake8-rst-docstrings, pep8-naming
    support, use ruff format and ruff check instead
  • Breaking: Drops darglint support, because it is unmaintained
  • Breaking: Removes WPS113, because is covered by pylint linter
  • Breaking: Removes WPS119, because is covered by pylint linter
  • Breaking: Removes WPS125, because it is covered by ruff linter
  • Breaking: Removes WPS302, because it is covered by ruff formatter
  • Breaking: Removes WPS304, because it is covered by ruff formatter
  • Breaking: Removes WPS305, because it is covered by ruff formatter
  • Breaking: Removes WPS306, because it is covered by ruff formatter
  • Breaking: Removes WPS309, because it is covered by ruff formatter
  • Breaking: Removes WPS310, because it is covered by ruff formatter
  • Breaking: Removes WPS313, because it is covered by ruff formatter
  • Breaking: Removes WPS315, because it is covered by ruff formatter
  • Breaking: Removes WPS316, because it is covered by ruff linter
  • Breaking: Removes WPS317, because it is covered by ruff formatter
  • Breaking: Removes WPS318, because it is covered by ruff formatter
  • Breaking: Removes WPS319, because it is covered by ruff formatter
  • Breaking: Removes WPS320, because it is covered by ruff formatter
  • Breaking: Removes WPS323, because it is covered by ruff formatter
  • Breaking: Removes WPS326, because it is covered by ruff linter
  • Breaking: Removes WPS329, because it is covered by ruff linter
  • Breaking: Removes WPS331, because it is covered by ruff linter
  • Breaking: Removes WPS333, because is covered by pylint linter
  • Breaking: Removes WPS337, because it is covered by ruff formatter
  • Breaking: Removes WPS340, because it is covered by ruff formatter
  • Breaking: Removes WPS341, because it is covered by ruff formatter
  • Breaking: Removes WPS343, because it is covered by ruff formatter
  • Breaking: Removes WPS348, because it conflicts with ruff formatter
  • Breaking: Removes WPS351, because it is covered by ruff linter
  • Breaking: Removes WPS352, because it is covered by ruff formatter
  • Breaking: Removes WPS355, because it is covered by ruff formatter
  • Breaking: Removes WPS360, because it is covered by ruff formatter
  • Breaking: Removes WPS361, because it is covered by ruff formatter
  • Breaking: Removes WPS415, because is covered by ruff linter
  • Breaking: Removes WPS417, because is covered by ruff linter
  • Breaking: Removes WPS419, because is covered by ruff linter
  • Breaking: Removes WPS423, because is covered by ruff linter
  • Breaking: Removes WPS424, because is covered by ruff linter
  • Breaking: Removes WPS425, because is covered by ruff linter
  • Breaking: Removes WPS428, because is covered by ruff linter
  • Breaking: Removes WPS433, because is covered by pylint linter
  • Breaking: Removes WPS434, because is covered by pylint linter
  • Breaking: Removes WPS436, because is covered by pylint linter
  • Breaking: Removes WPS437, because is covered by ruff linter
  • Breaking: Removes WPS440, because
    it was buggy and is covered by mypy, #​3209
  • Breaking: Removes WPS442, because
    it was buggy and is covered by mypy, #​3209
  • Breaking: Removes WPS450, because is covered by pylint linter
  • Breaking: Removes WPS452, because is covered by ruff linter
  • Breaking: Removes WPS454, because is covered by ruff linter
  • Breaking: Removes WPS456, because is covered by ruff linter
  • Breaking: Removes WPS465, because | is now heavily used by typing
  • Breaking: Removes WPS467, because is covered by pylint linter
  • Breaking: Removes WPS502, because is covered by ruff linter
  • Breaking: Removes WPS503, because is covered by ruff linter
  • Breaking: Removes WPS507, because is covered by pylint linter
  • Breaking: Removes WPS508, because is covered by ruff linter
  • Breaking: Removes WPS510, because is covered by pylint linter
  • Breaking: Removes WPS514, because is covered by pylint linter
  • Breaking: Removes WPS528, because is covered by pylint linter
  • Breaking: Removes WPS525, because is covered by ruff linter
  • Breaking: Removes WPS526, because is covered by ruff linter
  • Breaking: Removes WPS521, because is covered by ruff linter
  • Breaking: Removes WPS609, because is covered by pylint linter
  • Breaking: Removes --i-control-code setting,
    if you want to disable some violations, just use # noqa or --ignore
    with code that you want to exclude, there's no need
    to create one more way of disabling some specific violations
Features
  • Adds official python3.13 support
  • Allows any compares in assert statements for WPS520, #​3112
  • Allows walrus operator (:=) in comprehesions, #​3121
  • Allows pass in case bodies, #​2642
  • Allows subclassing builtins in WPS600, when creating an Enum, #​2506
  • Allows using variables after blocks for WPS441 in assert statements, #​2543
  • Does not count self, cls, and mcs as arguments
    for WPS211 complexity check anymore, #​2394
  • Allows underscores (_) with exactly 3 digits after it in WPS303, #​3120
  • Allows class / instance attribute shadowing
    in @dataclasses for WPS601, #​1926
  • Allows any number of instance attributes on @dataclasses in WPS230, #​2448
  • Allows any number of function parameters
    in @overload definitions for WPS211, #​1957
  • Allows using multiline strings when placed on separate lines, #​3056
  • Allows using hasattr builtin function, #​2228
  • Disallows using is not and not in as negated conditions in WPS504, #​2617
  • Allows all branches in if/elif/else to be negated in WPS504, #​2617
  • Adds a new rule to forbid lambda assigns to special attributes, #​1733
  • Adds a new rule to check problematic function params, #​1343
  • Adds a new rule to detect duplicate conditions in ifs and elifs, #​2241
  • Adds a new rule to detect duplicate case pattens in match, #​3206
  • Adds a new rule to find too many match subjects, #​3201
  • Adds a new rule to detect too many case statements, #​3202
  • Adds a new rule to find too complex except with too many exceptions
  • Adds a new rule to find too many PEP695 type params
  • Adds a new rule to find useless ternary expressions, #​1706
  • Adds a new rule to forbid raise SystemExit, use sys.exit instead, #​1786
  • Adds a new rule to forbid extra syntax in match ... subjects, #​3217
  • Adds new --allowed-module-metadata and --forbidden-module-metadata
    configuration options for WPS410, #​3060
  • Now --allowed-domain-names also affect WPS11
    to allow custom short variable names, #​2554
  • Adds support to run wemake-python-styleguide as a pre-commit hook, #​2588
  • GitHub Action can now use cwd: parameter to specify
    where your configuration file is, #​2474
  • GitHub Action can now use fail_workflow: parameter to not fail
    the workflow even if the check did find any issues
  • GitHub Action can now use filter_mode: parameter to specify
    how ReviewDog will filter found violations,
    see https://github.com/reviewdog/reviewdog#filter-mode #​2239
Bugfixes
  • Fixes WPS217 to allow simple calls in f strings, #​3150
  • Fixes WPS217 not to raise on empty f strings,
    because ruff check handles that now for us
  • Fixes OverusedStringViolation not to include '...' string
  • Removes astor package in favour of ast.unparse
  • Fixes WPS210 to not count nested local variables in nested scopes #​3108
  • Fixes IterableUnpackingViolation with generic types and TypeVarTuple
  • Fixes WPS469 detecting incorrect names of raised exceptions, #​3109
  • Fixes unnormalized paths in formatter output
  • Fixes WPS221 to ignore PEP695's TypeAlias from line complexity checks
  • Fixes WPS474 to only count import collisions in the same context, #​2962
  • Fixes WPS612 to count defaults in function definitions, #​2478
  • Fixes several bugs in WPS322 with multiline strings detection
  • Fixes several violations not been detected in case: statements
  • Fixes WPS314 not detecting match statements
  • Fixes match + case does not increase cognitive complexity
Misc
  • Integration with ondivi doc for legacy codebases
  • Fixes a documentation error for the Formatter (Showing statistic) section
  • Source code is now formatted with ruff
  • Removes deprecated ast nodes from code:
    ast.Num, ast.Bytes, ast.Str, ast.NamedConstant, etc

Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

Copy link
Contributor Author

renovate bot commented Dec 28, 2024

⚠️ Artifact update problem

Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is.

♻ Renovate will retry this branch, including artifacts, only when one of the following happens:

  • any of the package files in this branch needs updating, or
  • the branch becomes conflicted, or
  • you click the rebase/retry checkbox if found above, or
  • you rename this PR's title to start with "rebase!" to trigger it manually

The artifact failure details are included below:

File name: poetry.lock
Updating dependencies
Resolving dependencies...

The "poetry.dev-dependencies" section is deprecated and will be removed in a future version. Use "poetry.group.dev.dependencies" instead.
Creating virtualenv pybotx-fsm-w4yMsTrG-py3.13 in /home/ubuntu/.cache/pypoetry/virtualenvs

The current project's supported Python range (>=3.9,<3.14) is not compatible with some of the required packages Python requirement:
  - wemake-python-styleguide requires Python <4.0,>=3.10, so it will not be installable for Python >=3.9,<3.10

Because pybotx-fsm depends on wemake-python-styleguide (1.4.0) which requires Python <4.0,>=3.10, version solving failed.

  * Check your dependencies Python requirement: The Python requirement can be specified via the `python` or `markers` properties

    For wemake-python-styleguide, a possible solution would be to set the `python` property to ">=3.10,<3.14"

    https://python-poetry.org/docs/dependency-specification/#python-restricted-dependencies,
    https://python-poetry.org/docs/dependency-specification/#using-environment-markers


@renovate renovate bot force-pushed the renovate/wemake-python-styleguide-1.x branch from 01e1cf3 to abe7a4e Compare March 25, 2025 12:51
@renovate renovate bot force-pushed the renovate/wemake-python-styleguide-1.x branch from abe7a4e to b053305 Compare May 6, 2025 14:15
@renovate renovate bot force-pushed the renovate/wemake-python-styleguide-1.x branch from b053305 to 3f77259 Compare May 16, 2025 08:09
@renovate renovate bot force-pushed the renovate/wemake-python-styleguide-1.x branch from 3f77259 to 784d99e Compare July 2, 2025 18:31
@renovate renovate bot force-pushed the renovate/wemake-python-styleguide-1.x branch from 784d99e to 13d6076 Compare July 13, 2025 09:52
@renovate renovate bot force-pushed the renovate/wemake-python-styleguide-1.x branch from 13d6076 to 062bbd3 Compare August 25, 2025 10:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

0 participants