Skip to content

Releases: wemake-services/wemake-python-styleguide

Version 0.19.2

26 Mar 15:48
18276e6
Compare
Choose a tag to compare

Bugfixes

  • Fixes WrongEmptyLinesCountViolation crash on Callable[..., ...] #2899

Version 0.19.1

26 Mar 10:48
99ba44e
Compare
Choose a tag to compare

This release fixes how ... is used. For example, it is common to define
function stubs / protocols like this:

def some_function(): ...

Now, ... will be excluded from several rules.

Bugfixes

  • Fixes TooDeepNestingViolation not to trigger
    on ... in functions and classes
  • Fixes StatementHasNoEffectViolation not to trigger
    on ... in functions and classes, when it is the only node

Version 0.19.0

25 Mar 20:41
55d110b
Compare
Choose a tag to compare

This minor version will be the last release with all the flake8 plugins.
In the future this project will be migrated to be used together with ruff.

Features

  • Adds official python3.12 support
  • Breaking: drops python3.8 support
  • Breaking: Reconsider object required base class exception:
    since class Klass[_Type] must not contain object,
    this rule is change to be the opposite:
    object explicit base class must not be used.
    You can use ruff to change all object-based types to the new style:
    ruff check --select=UP004 --fix .
    https://docs.astral.sh/ruff/rules/useless-object-inheritance/
  • Breaking: allow positional-only parameters,
    since it is required by mypy when using Concatenate
  • Adds support for naming rules for PEP695 type params
  • Due to how f-string are parsed in python3.12 several token-based
    violations are not reported anymore for them:
    WrongMultilineStringViolation, ImplicitRawStringViolation,
    WrongUnicodeEscapeViolation, RawStringNotNeededViolation
  • wemake output formatter now respects NO_COLOR=1 option
    to disable text highlighting. See https://no-color.org
  • Adds ImportObjectCollisionViolation to detect
    the same objects imported under different aliases
  • Adds reveal_locals to the list of forbidden functions
  • Updates flake8 to 7.x

Bugfixes

  • Fixes ForbiddenInlineIgnoreViolation config parsing. #2590
  • Fixes WrongEmptyLinesCountViolation for func definitions with ellipsis. #2847
  • Fixes WrongEmptyLinesCountViolation for multiline implicit string concatination. #2787
  • Fixes ObjectInBaseClassesListViolation, UnpythonicGetterSetterViolation,
    ImplicitInConditionViolation, RedundantSubscriptViolation,
    TooLongCompareViolation to include better error details
  • Fixes TooDeepNestingViolation for TryStar and Match statements
  • Fixes TooLongTryBodyViolation and TooManyExceptCasesViolation
    to work for TryStar statements as well
  • Fixes UselessNodeViolation to work with TryStar
  • Fixes DuplicateExceptionViolation to work with TryStar
  • Fixes TryExceptMultipleReturnPathViolation to work with TryStar
  • Fixes IncorrectExceptOrderViolation to work with TryStar
  • Fixes that MatchStar was not checked in pattern matching name assignments
  • Fixes pattern matching support
    in BlockAndLocalOverlapViolation and OuterScopeShadowingViolation

Misc

  • Updates multipleflake8-* dependencies
  • Fixes multiple typos in docs

Version 0.18.0

31 May 14:30
77b60da
Compare
Choose a tag to compare

Features

  • Breaking: drops python3.7 support, because it has almost reached its EOL
  • Adds python3.11 support
  • Bump flake8 to version 5.x
  • Bump flake8-* dependencies to newer versions
  • Added ChainedIsViolation #2443
  • Added BuggySuperContextViolation #2310

Bugfixes

  • Make generic_visit() check script properly handle with statements.
  • Allow calling magic methods with the same name as the enclosing method #2381
  • Fix WrongEmptyLinesCountViolation false positive #2531
  • Fix OpenWithoutContextManagerViolation false positive #2577

Misc

  • Replaced flakehell mentions to flakeheaven #2409

Version 0.17.0

27 Sep 11:36
657508a
Compare
Choose a tag to compare

Features

  • Breaking: drops python3.6 support
  • Adds support for pattern matching naming rules, same as other variables
  • Adds --show-violation-links option to show links to violation docs
  • Adds __init_subclass__ in the beginning of accepted methods
    order as per WPS338 #2411
  • Adds WrongEmptyLinesCountViolation to check
    for too many lines in functions and methods definitions #2486

Bugfixes

  • Fixes WPS226 false positives on | use in SomeType | AnotherType
    type hints syntax
  • Now -1 is not reported to be an overused expression
  • Allow __aiter__ to be async iterator
  • Adds violation method name to error message of YieldMagicMethodViolation
  • Fixes direct docker image invocation #2492

Misc

  • Adds full violation codes to docs and BaseViolation.full_code #2409
  • Fix documentation mismatch between default setting
    for max-string-usages and enforced rule #2456
  • Domain name was changed from wemake-python-stylegui.de
    to wemake-python-styleguide.rtfd.io

Version 0.16.1

11 Mar 19:01
b13e879
Compare
Choose a tag to compare

Bugfixes

  • Fixes crash on 'Literal["raise"]' annotation #2341
  • Fixes WPS471 was not detected on complex assignment targets #2301
  • Fixes flake8-bandit and bandit version conflict #2368

Version 0.16.0

13 Dec 20:47
430b2aa
Compare
Choose a tag to compare

Features

  • Supports new flake8 version 4.x
  • Now InconsistentYieldViolation and InconsistentReturnViolation are raised
    when yield or return is used with None
    where plain version should be used #2151
  • Dot '.' and comma ',' do not count against string literal overuse limit anymore #2209
  • Added RedundantEnumerateViolation #1825
  • Adds RaiseFromItselfViolation #2133
  • Adds ConsecutiveSlicesViolation #2064
  • Adds KwargsUnpackingInClassDefinitionViolation #1754
  • DirectMagicAttributeAccessViolation now only flags instances for which
    a known alternative exists #2268
  • Forbids getting collection element of list by unpacking #1824
  • Now WPS227 forbids returning tuples that are too long #1731

Bugfixes

  • Fixes that InconsistentComprehensionViolation was ignoring
    misaligned in expressions #2075
  • Fixes some common magic methods not being recognized as such #2281

Misc

  • Removes all Raises: from docstrings, they were unused
  • Improve Docs: Fixed all typos and grammatical errors in CHANGELOG.md
  • Updated documentation with the recommended isort config. #1934
  • Updates typing_extensions to 4.x

Version 0.15.3

21 Jun 19:33
79b2693
Compare
Choose a tag to compare

Bugfixes

  • Fixes crash on python3.10
  • Fixes UselessReturningElseViolation to not report else with break #1958
  • Fixes ReassigningVariableToItselfViolation to not report on x = (x,) #1807
  • Fixes ReassigningVariableToItselfViolation to extract variables
    from unary operators #1874
  • Fixes that f'{some:,}' was considered too complex #1921
  • Fixes that range(len(x)) was not allowed even outside for loops #1883

Misc

  • Adds documentation (and tests) for how to run project on Jupyter Notebooks
  • Updates mypy to 0.902 and fixes type issues

Version 0.15.2

27 Feb 12:22
b8260e7
Compare
Choose a tag to compare

Bugfixes

  • Fixes BitwiseAndBooleanMixupViolation work with PEP 604 union types #1884
  • Fixes CognitiveModuleComplexityViolation to not trigger
    for a single-item modules
  • Fixes that ConstantConditionViolation was not reported for a BoolOp
  • Functions and methods marked as @overload or @typing.overload
    do not count in complexity rules

Misc

  • Updates GitHub Action's base Python image version to 3.8.8

Version 0.15.1

12 Feb 10:15
1abb864
Compare
Choose a tag to compare

Bugfixes

  • Fixes dataclasses import, it was failing on python3.6
  • Fixes InconsistentComprehensionViolation work with async comprehensions
  • Fixes nested compehensions support for InconsistentComprehensionViolation
  • Fixes multiple if support for InconsistentComprehensionViolation
  • Fixes that NestedTernaryViolation was not reported for a comprehension
  • Fixes that ConstantConditionViolation was not reported for a comprehension
  • Fixes that ConstantConditionViolation was triggering for while x := True:
  • Fixes that UselessElseViolation was not reported
    for for, while, and try keywords
  • Fixes false positive InfiniteWhileLoopViolation for try #1857
  • Fixes that InfiniteWhileLoopViolation was not triggered on 1
    or other truthy nodes

Misc

  • Refactors how tokenize tests are executed,
    now we have an option to compile fixture code
    to make sure it is syntatically valid