[flake8] # Don't even try to analyze these: extend-exclude = # No need to traverse egg info dir *.egg-info, # GitHub configs .github, # Cache files of MyPy .mypy_cache, # Cache files of pytest .pytest_cache, # Temp dir of pytest-testmon .tmontmp, # Occasional virtualenv dir .venv, # VS Code .vscode, # Temporary build dir build, # This contains sdists and wheels of proxy.py that we don't want to check dist, # Occasional virtualenv dir env, # Metadata of `pip wheel` cmd is autogenerated pip-wheel-metadata, # IMPORTANT: avoid using ignore option, always use extend-ignore instead # Completely and unconditionally ignore the following errors: extend-ignore = I # flake8-isort is drunk + we have isort integrated into pre-commit B009 # FIXME: `getattr()` called with a constant arg B024 # FIXME: is an abstract base class, but it has no abstract methods B027 # Is an empty method in an abstract base class, but has no abstract decorator. # Consider adding @abstractmethod. C812 # FIXME: missing trailing comma C819 # FIXME: inline trailing comma D101 D102 D103 D105 D106 D107 D203 D205 D208 D209 D212 D213 D300 D400 D401 D402 D403 D404 D405 D407 D412 D413 D415 DAR101 # FIXME: undocumented docstring param DAR201 # FIXME: no "returns" in docstring DAR301 # FIXME: no "yields" in docstring DAR401 # FIXME: no "raises" in docstring E800 # FIXME: commented out code N400 # FIXME: escaping with backslash at EOL N801 # FIXME: class name should use ProudCamelCase N802 # FIXME: func name should be lowercase N816 # FIXME: mixed case var name P101 # FIXME: format string with unindexed params PT009 # FIXME: pytest encourages use of `assert` PT018 # FIXME: use multiple `assert`s instead of one complex Q000 # FIXME: inconsistent double quotes use when single ones are needed Q001 # FIXME: use double quotes in multiline strings Q002 # FIXME: use double quote docstrings Q003 # FIXME: avoid escaping in-string quotes RST201 # FIXME: missing trailing blank line in docstring RST203 # FIXME: no trailing blank line in docstring RST299 # FIXME: Cannot extract compound bibliographic field "copyright" RST301 # FIXME: unexpected indent in docstring RST499 # FIXME: Missing matching underline for section title overline S101 # FIXME: assertions are thrown away in optimized mode, needs audit S104 # FIXME: bind-all interface listen S105 # FIXME: hardcoded password? S113 # FIXME: Call to httpx without timeout (false positive) S303 # FIXME: insecure hash func S311 # FIXME: `random` needs auditing S404 # FIXME: `subprocess` use needs auditing S603 # FIXME: audit untrusted `subprocess.Popen` input S607 # FIXME: running subprocess with a non-absolute executable path WPS100 # FIXME: unhelpful module name WPS102 # FIXME: incorrect module name pattern WPS110 # FIXME: unhelpful var name WPS111 # FIXME: too short var name WPS114 # FIXME: underscored numbers in var name WPS115 # FIXME: uppercase class attr WPS118 # FIXME: long func name WPS120 # FIXME: regular name w/ trailing underscore WPS121 # FIXME: unused var used 0_O WPS122 # FIXME: unused var definition 0_O WPS201 # FIXME: too many imports WPS202 # FIXME: too many mod members WPS203 # FIXME: too many mod imported names WPS204 # FIXME: too much copy-paste WPS210 # FIXME: too many local vars WPS211 # FIXME: too many "__init__()" args WPS212 # FIXME: too many "return"s WPS213 # FIXME: too many expressions WPS214 # FIXME: too many methods WPS216 # FIXME: too many decorators WPS219 # FIXME: deep object access is unreadable WPS220 # FIXME: deep code nesting WPS221 # FIXME: too big inline complexity / tested instructions WPS222 # FIXME: too much logic in condition WPS223 # FIXME: the code is too branchy WPS225 # FIXME: too many "except"s WPS226 # FIXME: magic string constant used too much, put it in a var WPS229 # FIXME: try/except should wrap exactly one instruction WPS230 # FIXME: too many public instance attrs WPS231 # FIXME: insane complexity/code nesting in a function WPS232 # FIXME: module is too complex WPS234 # FIXME: annotation is too complex WPS235 # FIXME: too many imported names from a single module WPS237 # FIXME: too complex f-string WPS300 # local folder imports are needed WPS301 # FIXME: dotted import WPS305 # this project is Python 3 only and so f-strings are allowed WPS306 # this project is Python 3 so it doesn't need an explicit class base WPS313 # FIXME: parens after keyword WPS317 # enforces weird indents WPS318 # enforces weird indents WPS319 # FIXME: asymmetric closing bracket WPS320 # FIXME: multiline func type annotation WPS322 # FIXME: inline multiline str WPS323 # false-positive: %-formatting in logging WPS324 # FIXME: inconsistent "return" in func WPS326 # doesn't allow implicit string concat WPS328 # FIXME: useless `while` node WPS336 # FIXME: explicit string concat WPS337 # FIXME: multiline conditions WPS338 # FIXME: unordered class methods WPS339 # FIXME: meaningless leading zeros in number WPS349 # FIXME: redundant slice WPS360 # FIXME: unnecessary r-string WPS361 # FIXME: inconsistent comprehension structure WPS403 # FIXME: `# noqa` overuse WPS407 # FIXME: mutable mod const WPS408 # FIXME: duplicate logical condition WPS410 # allow `__all__` WPS412 # FIXME: logic in `__init__` WPS414 # FIXME: consusing unpacking target WPS420 # FIXME: pointless keyword like `pass` WPS421 # FIXME: call to `print()` WPS425 # FIXME: bool non-keyword arg WPS428 # FIXME: pointless statement WPS430 # FIXME: nested func WPS431 # FIXME: nested class WPS432 # FIXME: magic number w/o assigned context/name WPS433 # FIXME: nested import WPS437 # FIXME: protected attr access WPS440 # FIXME: block vars overlap WPS441 # FIXME: control var use after block WPS442 # FIXME: outer scope var shadowing WPS453 # FIXME: executable file w/o shebang WPS454 # FIXME: don't raise a broad exception, use a specific one WPS457 # FIXME: infinite `while` WPS458 # FIXME: import collision WPS460 # FIXME: single element unpacking WPS464 # FIXME: empty comment WPS501 # FIXME: "finally" in "try" w/o "except" WPS504 # FIXME: invert a negated condition WPS505 # FIXME: nested "try" in "try" WPS507 # FIXME: useless `len()` WPS508 # FIXME: misused `not` in if-clause WPS509 # FIXME: incorrect ternary nesting WPS510 # FIXME: if-clause with `in` operator w/ wrong set semantics WPS513 # FIXME: implicit `elif` WPS515 # FIXME: implicit `open()` w/o a CM WPS518 # FIXME: implicit `enumerate()` pattern WPS519 # FIXME: implicit `sum()` pattern WPS528 # FIXME: implicit `dict.items()` pattern WPS529 # FIXME: implicit `dict.get()` pattern WPS531 # FIXME: simplifiable returning `if` in func WPS602 # FIXME: `@staticmethod` is usually a code smell, use module funcs WPS604 # FIXME: incorrect class body node WPS605 # FIXME: method w/o args WPS609 # FIXME: direct call to magic method WPS612 # FIXME: useless `__init__()` override WPS613 # FIXME: unmatching super method access WPS615 # FIXME: unpythonic setter/getter PT027 # FIXME: use pytest.raises() instead of unittest-style 'assertRaises' S507 # FIXME: Paramiko call with policy set to automatically trust the unknown host key # https://wemake-python-stylegui.de/en/latest/pages/usage/formatter.html format = wemake # Let's not overcomplicate the code: #max-complexity = 10 # FIXME: this is a lot! max-complexity = 19 # Accessibility/large fonts and PEP8 friendly: #max-line-length = 79 # Accessibility/large fonts and PEP8 unfriendly: #max-line-length = 100 # Even more Accessibility/large fonts and PEP8 unfriendlier: max-line-length = 127 # Allow certain violations in certain files: per-file-ignores = # E800 reports a lot of false-positives for legit # tool-related comments; # WPS412 logic of an extension is in __init__.py file; # FIXME: WPS201 too many imports # FIXME: WPS402 too many `noqa`s #proxy/__init__.py: E800, WPS201, WPS402, WPS412 # There are multiple `assert`s (S101) # and subprocesses (import – S404; call – S603) in tests; # also, using fixtures looks like shadowing the outer scope (WPS442); # and finally it's impossible to have <= members in tests (WPS202): tests/**.py: S101, S404, S603, WPS202, WPS442 # wemake-python-styleguide show-source = true # flake8-pytest-style # PT001: pytest-fixture-no-parentheses = true # PT006: pytest-parametrize-names-type = tuple # PT007: pytest-parametrize-values-type = tuple pytest-parametrize-values-row-type = tuple # PT023: pytest-mark-no-parentheses = true # flake8-rst-docstrings rst-directives = spelling rst-roles = # Built-in Sphinx roles: class, data, exc, meth, term, py:class, py:data, py:exc, py:meth, py:term, # Sphinx's internal role: event,