wemake-python-styleguide v0.15.0 Release Notes

  • ๐Ÿ”‹ 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