Wemake Python Styleguide Versions Save

The strictest and most opinionated python linter ever!

0.19.2

4 weeks ago

Bugfixes

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

0.19.1

4 weeks ago

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

0.19.0

1 month ago

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

0.18.0

10 months ago

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

0.17.0

1 year ago

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

0.16.1

2 years ago

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

0.16.0

2 years ago

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

0.15.3

2 years ago

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

0.15.2

3 years ago

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

0.15.1

3 years ago

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