All Versions
53
Latest Version
Avg Release Cycle
27 days
Latest Release
-

Changelog History
Page 1

  • v0.16.0 Changes

    ๐Ÿ”‹ Features

    • Forbids using non-trivial expressions as an argument to except
    • Forbids using too many variables in a tuple unpacking
    • Forbids using float("NaN").
    • Allow __call__ method to be asynchronous
    • ๐Ÿ‘ Allows common strings not to be counted against string constant overuse limit

    ๐Ÿ›  Bugfixes

    • ๐Ÿ›  Fixes fails of annotation complexity on Literal[""].

    Misc

    • Introduce helper script to check for missing calls to self.generic_visit(node) in AST visitors
    • โšก๏ธ Updates poetry version to 1.1
  • v0.15.3 Changes

    ๐Ÿ›  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
    • ๐Ÿ›  Fixes UselessReturningElseViolation to not report else with break #2187 (even if we have except in loop)
    • ๐Ÿ›  Fixes fixture in UselessReturningElseViolation #2191

    Misc

    • โž• Adds documentation (and tests) for how to run project on Jupyter Notebooks
    • โšก๏ธ Updates mypy to 0.902 and fixes type issues
  • v0.15.2 Changes

    ๐Ÿ›  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
  • v0.15.1 Changes

    ๐Ÿ›  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
  • v0.15.0 Changes

    ๐Ÿ”‹ Features

    • โž• Adds python3.9 support
    • ๐Ÿ’… Forbids to use new-style decorators on python3.9
    • ๐Ÿ”„ Changes how we treat own/foreign attributes, since now we only check assigned attribute names for self/cls/mcs, but not any other ones. So, now writting point.x = 1 will not trigger any violations. Previously, it would raise "too short name".
    • Forbids using non-trivial expressions as an argument to except
    • Forbids using too many variables in a tuple unpacking
    • Forbids using float("NaN").
    • Forbids assigning to a slice
    • Allow __call__ method to be asynchronous
    • ๐Ÿ‘ Allows common strings not to be counted against string constant overuse limit
    • Forbids to unpack iterable objects to lists #1259
    • Forbids to use single return None
    • Add __await__ to the list of priority magic methods
    • Forbids to use float zeros (0.0)
    • ๐Ÿ‘€ Forbids raise Exception and raise BaseException
    • Forbids to use % with zero as the divisor
    • โœ… Forbids testing conditions to just return booleans when it is possible to simply return the condition itself
    • Forbids to use unsafe infinite loops
    • Forbids to use raw strings r'' when not necessary
    • Forbids to use too complex f-strings
    • Forbids to use too many raise statements inside a single function
    • Forbids to compare with float and complex values
    • Forbids single element destruct
    • ๐Ÿ”ง Forbids to ignore some violations (configurable) on a line level
    • Forbids single element unpacking
    • Forbids to unpack lists with side-effects
    • ๐Ÿ“„ Forbids to use miltiline strings except for assignments and docstrings
    • Forbids not returning anything in functions and methods starting with get_
    • Forbids to use empty comment
    • Forbids using bitwise operation with boolean operation
    • Forbids inconsistent structuring of multiline comprehensions
    • Forbids to use unpythonic getters and setters such as get_attribute or set_attribute
    • ๐Ÿ†“ Now credits, license, and copyright builtins are free to shadow

    ๐Ÿ›  Bugfixes

    • ๐Ÿ›  Fixes fails of annotation complexity on Literal[""]
    • ๐Ÿ›  Fixes how wrong variable names were checked case sensitive with WPS110
    • Fixes false positives DirectMagicAttributeAccessViolation with __mro__, __subclasses__ and __version__
    • ๐Ÿ‘‰ Make WPS326 work when there is comment between string literals
    • ๐Ÿ‘ Allowed yield statements in call method
    • ๐Ÿ‘ Allow to use ^ with 1
    • ๐Ÿ›  Fixes false positives in WPS513 and WPS323
    • ๐Ÿ›  Fixes false positive WPS426 if lambda in loop uses only its arguments
    • ๐Ÿ›  Fixes false negative WPS421 with pprint.pprint
    • ๐Ÿ›  Fixes WPS441 triggering when reusing variable names in multiple loops
    • ๐Ÿ›  Fixes false positive ImplicitEnumerateViolation on range with step #1742
    • ๐Ÿ‘ Allows to use _ to declare several unused variables, like: x, _, _ = coordinates()
    • ๐Ÿ›  Fixes variable reassignment in class context
    • ๐Ÿ›  Fixes that *'abc' was not counted as pointless star expression
    • ๐Ÿ›  Fixes that -some was counted as overused expression
    • ๐Ÿ›  Fixes several bugs with attribute names

    Misc

    • โšก๏ธ Updates lots of dependenices
    • ๐Ÿ›  Fixed documentation for TooManyPublicAttributesViolation
    • โšก๏ธ Updated isort config
    • Introduce helper script to check for missing calls to self.generic_visit(node) in AST visitors
    • โšก๏ธ Updates poetry version to 1.1
    • โšก๏ธ Updates reviewdog version to 0.11.0 and adds action-depup
  • v0.14.1 Changes

    July 29, 2020

    ๐Ÿ›  Bugfixes

  • v0.14.0 Changes

    March 22, 2020

    ๐Ÿš€ This release was focused on adding python3.8 support,
    ๐Ÿšš removing dependencies that can be removed, and fixing bugs.

    There are breaking changes ahead!

    We also have this nice migration guide.

    One more thing: flake8 still fails on := operator.
    And there's nothing we can do about it.
    ๐Ÿ‘• Please, be patient โ€“ this linter does not allow to have := in the source code anyway!

    ๐Ÿ”‹ Features

    • ๐Ÿ’ฅ Breaking : removes flake8-executable, now using WPS452 instead of EXE001..EXE005
    • ๐Ÿ’ฅ Breaking : removes flake8-print, now using WPS421 instead of T001
    • ๐Ÿ’ฅ Breaking : removes flake8-builtins, now using WPS125 instead of A001..A005
    • ๐Ÿ’ฅ Breaking : removes flake8-annotations-complexity,
      now using WPS234 instead of TAE002
    • ๐Ÿ’ฅ Breaking : removes flake8-pep3101, now using WPS323 instead of S001,
      we also use a new logic for this violation:
      we check string defs for % patterns, and not for % operator
    • ๐Ÿ’ฅ Breaking : WPS441 is no longer triggered for except blocks,
      it is now handled by F821 from flake8
    • ๐Ÿ’ฅ Breaking : removes radon,
      because cognitive-complexity and mccabe is enough
    • ๐Ÿ’ฅ Breaking : removes flake8-loggin-format as a direct dependency
    • ๐Ÿ’ฅ Breaking : removes ImplicitTernaryViolation or WPS332,
      ๐Ÿ’… because it has too many false positives #1099
    • โœ‚ Removes flake8-coding, all encoding strings, visitor and tests
      for old WPS323 which is now reused for modulo formatting checks
    • โž• Adds python3.8 support
    • ๐Ÿ’… Changes styleguide.toml and flake8.toml scripts definition
    • ๐Ÿ’… Extracts new violation - WPS450 from WPS436 #1118
    • โž• Adds domain names options:
      --allowed-domain-names and --forbidden-domain-names,
      ๐Ÿ’… that are used to create variable names' blacklist #1106
    • ๐Ÿ’… Forbids to use \r (carriage return) as line breaks in strings #1111
    • Forbids to use := operator, it now reuses WPS332 code
    • Forbids to use positional only / arguments
    • Forbids to have too many names imported from a single from ... import
    • Forbids to use continue and break in finally
    • โฌ‡๏ธ Forbids to use __reduce__ and __reduce_ex__ magic methods
    • Adds __call__ to list of methods that should be on top #1125
    • ๐Ÿ‘ Allows _ to be now used as a defined variable
    • โœ‚ Removes cognitive_complexity dependency, now it is built in into our linter
    • โž• Adds baseline information for all complexity violation messages: x > baseline
    • ๐Ÿ”„ Changes how cognitive complexity is calculated
    • โž• Adds support for positional arguments in different checks
    • โž• Adds UnreadableNameViolation as WPS124 because there are some
      character combination which is not easy to read
    • โž• Adds support for NamedExpr with in compare type violation

    ๐Ÿ›  Bugfixes

    • Fixes how i_control_code behaves with WPS113
    • ๐Ÿ›  Fixes that cognitive complexity was ignoring
      ast.Continue, ast.Break, and ast.Raise statements
    • ๐Ÿ›  Fixes that cognitive complexity was ignoring ast.AsyncFor loops
    • ๐Ÿ›  Fixes that annotation complexity was not reported for async functions
    • ๐Ÿ›  Fixes that annotation complexity was not reported for lists
    • ๐Ÿ›  Fixes that annotation complexity was not reported for * and / args
    • ๐Ÿ›  Fixes that annotation complexity was not tested for dot notation attributes
    • ๐Ÿ›  Fixes that annotation complexity fails on string expressions
    • ๐Ÿ›  Fixes bug when TooManyPublicAttributesViolation
      was counting duplicate fields
    • ๐Ÿ›  Fixes negated conditions WPS504 was not reported for if expressions
    • ๐Ÿ›  Fixes that import dumps was reported as WPS347,
      now only from ... import dumps is checked
    • ๐Ÿ›  Fixes that from some import a as std was reported as a vague import
      with WPS347 despite having a meaningful alias
    • ๐Ÿ›  Fixes that WPS501 was reported for @contextmanager definition
    • ๐Ÿ›  Fixes WPS226 to be thrown at nested string type annotations
    • ๐Ÿ›  Fixes WPS204 reported simplest nodes as overused like [] and call()
    • ๐Ÿ›  Fixes WPS204 not reporting overused f strings
    • ๐Ÿ›  Fixes WPS204 reporting overused return type annotations
    • ๐Ÿ›  Fixes WPS204 reporting self. attribute access
    • ๐Ÿ›  Fixes WPS331 reporting cases that do require some extra steps before return
    • ๐Ÿ›  Fixes WPS612 not reporing super() calls without return
    • ๐Ÿ›  Fixes WPS404 not raising on wrong * and / defaults
    • ๐Ÿ›  Fixes WPS425 raising on .get, getattr, setattr,
      and other builtin functions without keyword arguments
    • ๐Ÿ›  Fixes WPS221 reporting differently on different python versions
    • ๐Ÿ›  Fixes WPS221 reporting nested variable annotations
    • ๐Ÿ›  Fixes WPS509 not reporting nested ternary in grandchildren of if
    • ๐Ÿ›  Fixes WPS509 not reporting nested ternary in ternary
    • ๐Ÿ›  Fixes WPS426 not reporting nested lambda in comprehensions
    • ๐Ÿ›  Fixes several violations to reporting for ast.Bytes and ast.FormattedStr
      where ast.Str was checked
    • ๐Ÿ›  Fixes WPS601 reporting shadowing for non-self attributes
    • ๐Ÿ›  Fixes WPS114 not to be so strict
    • ๐Ÿ›  Fixes WPS122 not raising for for and async for definitions
    • ๐Ÿ›  Fixes WPS400 raising for # type: ignore[override] comments
    • ๐Ÿ›  Fixes WPS115 not raising for attributes inside other nodes

    Misc

    • ๐Ÿ”„ Changes how tests are executed
    • ๐Ÿ”„ Changes how coverage is calculated, adds coverage-conditional-plugin
    • โž• Adds how a violation can be deprecated
    • ๐Ÿ‘Œ Improves old visitor tests with / argument cases
    • ๐Ÿ‘Œ Improves old visitor tests with := cases
    • โž• Adds local-partial-types to mypy config
    • ๐Ÿ’… Uses abc stdlib's module to mark abstract base classes #1122
    • โž• Adds python3.8 to the CI
    • โšก๏ธ Updates a lot of dependencies
  • v0.13.4 Changes

    January 19, 2020

    ๐Ÿš€ This is the last 0.13.x supporting release,
    ๐Ÿ‘ we have to concentrate on python3.8 support
    and 0.14.0 which will introduce it to the public.

    ๐Ÿ›  Bugfixes

    • ๐Ÿ›  Fix false positive ImplicitYieldFromViolation for async functions #1057
    • ๐Ÿ›  Fixes nested-classes-whitelist option default value for flake8 prior 3.7.8 #1093
    • ๐Ÿ‘Œ Improve boolean non-keyword arguments validation #1114

    Misc

    • โšก๏ธ Updates flake8-pep3101
    • โšก๏ธ Updates flake8-builtins
    • โšก๏ธ Updates flake8-eradicate
    • โ™ป๏ธ Several small refactoring sessions
    • โž• Adds hypothesis-based tests
    • โž• Adds flakehell base config
    • ๐Ÿ›  Fixes flakehell docs
    • Fixes MAX_NOQA_COMMENTS and related violation docs
    • ๐Ÿ›  Fixes OverusedExpressionViolation and TooManyExpressionsViolation docs
  • v0.13.3 Changes

    December 15, 2019

    Misc

    • โšก๏ธ Updates radon version
    • โšก๏ธ Updates poetry version to 1.0
  • v0.13.2 Changes

    December 10, 2019

    ๐Ÿ›  Bugfixes

    • ๐Ÿ›  Fixes that Github Action was failing for wrong status code
    • ๐Ÿ›  Fixes NegatedConditionsViolation false positive on absent else in combination with elif
    • ๐Ÿ›  Fixes WPS528 false positive on augmented assigns
    • ๐Ÿ›  Fixes incorrect message for WPS349
    • ๐Ÿ›  Fixes that reviewdog was not able to create more than 30 comments per PR

    Misc

    • ๐Ÿ‘• pylint docs fixed
    • ๐Ÿ›  Fixes docs about implicit yield violation