wemake-services/
The strictest and most opinionated python linter ever!
USD raised
Recent activities
Add more plugins for editors and IDEs
Add a note about pylint
Consider adding flake8-rst-docstrings
Add flake8-executable
Forbid compares like `False == False in [False]`
Ensure that `breakpoint()` is forbidden in our code
Add a quick comparison table about pylint and black
Forbid to have data clump
Find similar / exact expressions in the source code
Force to use ternary instead of `and` and `or` chain
Consider merging mutliple `isinstance()` calls together
False positive for `variable is only used in return`
Consider using `in` instead of multiple `==`
Refactor how tree is visited
Find expressions like `if not number > 1:`
Forbid `lambda x: len(x)`
Forbid `len(...) > 0` expressions
Consider choosing `a < x < b` or `b > x > a`
Not working due pydocstyle error
Forbid to have the same condition
Forbid to repeat instance variables on a class level
Forbid to have too many compares in one expression
Running all intended tests should be possible by one shell command.
Enforce consistent octal, hex, and binary numbers
Forbid to use `if len(...):`
Forbid to use ternary inside `if` clause
Force people to use `a > b > c` instead of `a > b and b > c`
Add a note about black configuration that works for us
Forbid string concat with anything than other strings
Forbid useless `return` and `return None` at the end of the function
Improve legacy guide
Document jupyter integration
Document other auto-formatters such as yapf and autopep8
Document Wing plugin
Forbid to use `in []` explicit checks
Ensure the order of methods inside a class
Add explanation to all violation messages
Release 0.9.1 with pydocstyle bugfix
Change violations number and groups
Create `TooManyImportedNamesViolation`
Force to use `for ... in (...):` instead of `for ... in [...]:`
Update mypy and enable `--warn-unreachable`
Incorrect line number for Z331
Enhance README with opencollective and issuehunt
Configure a custom domain name
Forbid to use `raise StopIteration()` inside generators
Forbid to use `isinstance(some, (some,))`
Add `--show-source` to default configuration
Forbid to use loop variables after loop's body
Forbid to shadow outer scope variables with blocks
Test that pipe lint works
Test that linting doctests work
Tweak performance
Fix `Incorrect` vs `Wrong` in the violation names
Do not count type annotations as strings
Incorrect error message when over-using empty string
Find packages with too many modules
Z331 raised twice
InconsistentReturnVariableViolation is a bad rule.
Incompatible attrs version
Why double quotes is bad?
Add docs about CI integrations
Forbid magic methods to be async
Restrict to have general `*args, **kwargs`
Add coala to the list of integrations
Lint regex
Forbid to use `range(len(...))`, use `enumerate` instead
Forbid to use `type(...) == '...'`, use `isinstance` instead
Forbid classes with too many public instance attributes
Forbid to use escape chars in regular strings, prefer `r` strings
Forbids binary strings with unicode escape chars
Change how "return" in "finally" works
Forbid expressions like `FIRST, FIRST = (1, 2)`
Forbid incorrect `__slots__` names
Forbid useless methods
Forbid properties with parameters
Forbid self import
Change how we define `__slots__`
Forbid too many statements inside a try block
Forbid compares with `0` and `''`
Forbid `is` compare with constants
Forbid `else if` sequence
Forbid to use comprehensions in `for` declaration
Add xenon code quality check
Make sure that `alias` raises an error if aliased attribute exists
Add mypy and "Finds bad style?" to README
Enable deepsource coverage
Forbid `open()` not inside `with`
Consider adding xenon
Forbid to use `*[]`, `*()`, and `**{}` in calls
Make sure that we test `ast.Starred` more often
Check other magic methods not to be generators, not just `__init__`
Change how `AsyncMagicMethodViolation` works
Replace layers-linter with import-linter
Forbid getting known key from kwargs
Find overused expressions
Document debugging process
Forbid to use `while False` and equivalents
Forbid to use `as _` naming style in blocks
`{1, True, 1.0}` should be recognised as set with duplicates
Do not allow to multiply lists
Enforce a single way how to write complex numbers: `3j` vs `3J`
Forbid expressions like `3 + -4`
Find non-unique dict keys
Forbid `assert False` and equivalents
Forbid too many `assert`s in a function
Forbid too deep subscript and attribute usages
Forbid too deep attribute usages
Forbid zero divison
Forbid to name variables as `__`, `___`, etc
Forbid to raise exceptions that are caught in except cases
Find `sum` candidates
Forbid name shadowing from different scopes
Forbid to use ``__`` and ``___`` as unused variables
WPS115 (Found upper-case constant in a class) in enum.Enum.
ValueError: malformed node or string
Incorrect line number for WPS400
Document nitpick and create sharable configurations
Document flakehell and improve legacy guide
Add flake8-pytest-style
Create optional dependencies
Add `@final` decorator to the classes that need it
Local variables count does not work correctly
Split the rule that checks using `*()`, `*[]` and `**{}` in calls into different rules
Consider adding `ignore` to nitpick styles
False positive `WPS417 Found non-unique item in hash: None`
Fix urls in nitpick docs
Add `reveal_type` to forbidden functions
Sync mypy settings from returns
False positive for `WPS345 Found meaningless number operation`
Modulo operation with 0 and 1 is allowed
ยฉ 2019 BoostIO, Inc.