-
-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
12 changed files
with
439 additions
and
38 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
# The contents of this file is based on https://github.com/home-assistant/core/blob/dev/mypy.ini | ||
|
||
[mypy] | ||
python_version = 3.12 | ||
platform = linux | ||
show_error_codes = true | ||
follow_imports = normal | ||
local_partial_types = true | ||
strict_equality = true | ||
#strict_bytes = true | ||
no_implicit_optional = true | ||
warn_incomplete_stub = true | ||
warn_redundant_casts = true | ||
warn_unused_configs = true | ||
warn_unused_ignores = true | ||
enable_error_code = ignore-without-code, redundant-self, truthy-iterable | ||
disable_error_code = annotation-unchecked, import-not-found, import-untyped | ||
extra_checks = false | ||
check_untyped_defs = true | ||
disallow_incomplete_defs = true | ||
disallow_subclassing_any = true | ||
disallow_untyped_calls = true | ||
disallow_untyped_decorators = true | ||
disallow_untyped_defs = true | ||
warn_return_any = true | ||
warn_unreachable = true |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
*.md | ||
.strict-typing | ||
custom_components/*/translations/*.json |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,342 @@ | ||
# The contents of this file is based on https://github.com/home-assistant/core/blob/dev/pyproject.toml | ||
|
||
[MAIN] | ||
# Specify the Python version | ||
py-version=3.12 | ||
|
||
# Use a conservative default here; 2 should speed up most setups and not hurt | ||
# any too bad. Override on command line as appropriate. | ||
jobs=2 | ||
|
||
#init-hook = """\ | ||
# from pathlib import Path; \ | ||
# import sys; \ | ||
# | ||
# from pylint.config import find_default_config_files; \ | ||
# | ||
# sys.path.append( \ | ||
# str(Path(next(find_default_config_files())).parent.joinpath('pylint/plugins')) | ||
# ) \ | ||
# """ | ||
|
||
load-plugins= | ||
pylint.extensions.code_style, | ||
pylint.extensions.typing | ||
# hass_decorator, | ||
# hass_enforce_class_module, | ||
# hass_enforce_sorted_platforms, | ||
# hass_enforce_super_call | ||
|
||
persistent = false | ||
extension-pkg-allow-list = [ | ||
"av.audio.stream", | ||
"av.logging", | ||
"av.stream", | ||
"ciso8601", | ||
"orjson", | ||
"cv2", | ||
] | ||
fail-on = [ | ||
"I", | ||
] | ||
|
||
[BASIC] | ||
class-const-naming-style = "any" | ||
|
||
["MESSAGES CONTROL"] | ||
# Reasons disabled: | ||
# format - handled by ruff | ||
# locally-disabled - it spams too much | ||
# duplicate-code - unavoidable | ||
# cyclic-import - doesn't test if both import on load | ||
# abstract-class-little-used - prevents from setting right foundation | ||
# unused-argument - generic callbacks and setup methods create a lot of warnings | ||
# too-many-* - are not enforced for the sake of readability | ||
# too-few-* - same as too-many-* | ||
# abstract-method - with intro of async there are always methods missing | ||
# inconsistent-return-statements - doesn't handle raise | ||
# too-many-ancestors - it's too strict. | ||
# wrong-import-order - isort guards this | ||
# possibly-used-before-assignment - too many errors / not necessarily issues | ||
# --- | ||
# Pylint CodeStyle plugin | ||
# consider-using-namedtuple-or-dataclass - too opinionated | ||
# consider-using-assignment-expr - decision to use := better left to devs | ||
disable = [ | ||
"format", | ||
"abstract-method", | ||
"cyclic-import", | ||
"duplicate-code", | ||
"inconsistent-return-statements", | ||
"locally-disabled", | ||
"not-context-manager", | ||
"too-few-public-methods", | ||
"too-many-ancestors", | ||
"too-many-arguments", | ||
"too-many-instance-attributes", | ||
"too-many-lines", | ||
"too-many-locals", | ||
"too-many-public-methods", | ||
"too-many-boolean-expressions", | ||
"too-many-positional-arguments", | ||
"wrong-import-order", | ||
"consider-using-namedtuple-or-dataclass", | ||
"consider-using-assignment-expr", | ||
"possibly-used-before-assignment", | ||
|
||
# Handled by ruff | ||
# Ref: <https://github.com/astral-sh/ruff/issues/970> | ||
"await-outside-async", # PLE1142 | ||
"bad-str-strip-call", # PLE1310 | ||
"bad-string-format-type", # PLE1307 | ||
"bidirectional-unicode", # PLE2502 | ||
"continue-in-finally", # PLE0116 | ||
"duplicate-bases", # PLE0241 | ||
"misplaced-bare-raise", # PLE0704 | ||
"format-needs-mapping", # F502 | ||
"function-redefined", # F811 | ||
# Needed because ruff does not understand type of __all__ generated by a function | ||
# "invalid-all-format", # PLE0605 | ||
"invalid-all-object", # PLE0604 | ||
"invalid-character-backspace", # PLE2510 | ||
"invalid-character-esc", # PLE2513 | ||
"invalid-character-nul", # PLE2514 | ||
"invalid-character-sub", # PLE2512 | ||
"invalid-character-zero-width-space", # PLE2515 | ||
"logging-too-few-args", # PLE1206 | ||
"logging-too-many-args", # PLE1205 | ||
"missing-format-string-key", # F524 | ||
"mixed-format-string", # F506 | ||
"no-method-argument", # N805 | ||
"no-self-argument", # N805 | ||
"nonexistent-operator", # B002 | ||
"nonlocal-without-binding", # PLE0117 | ||
"not-in-loop", # F701, F702 | ||
"notimplemented-raised", # F901 | ||
"return-in-init", # PLE0101 | ||
"return-outside-function", # F706 | ||
"syntax-error", # E999 | ||
"too-few-format-args", # F524 | ||
"too-many-format-args", # F522 | ||
"too-many-star-expressions", # F622 | ||
"truncated-format-string", # F501 | ||
"undefined-all-variable", # F822 | ||
"undefined-variable", # F821 | ||
"used-prior-global-declaration", # PLE0118 | ||
"yield-inside-async-function", # PLE1700 | ||
"yield-outside-function", # F704 | ||
"anomalous-backslash-in-string", # W605 | ||
"assert-on-string-literal", # PLW0129 | ||
"assert-on-tuple", # F631 | ||
"bad-format-string", # W1302, F | ||
"bad-format-string-key", # W1300, F | ||
"bare-except", # E722 | ||
"binary-op-exception", # PLW0711 | ||
"cell-var-from-loop", # B023 | ||
# "dangerous-default-value", # B006, ruff catches new occurrences, needs more work | ||
"duplicate-except", # B014 | ||
"duplicate-key", # F601 | ||
"duplicate-string-formatting-argument", # F | ||
"duplicate-value", # F | ||
"eval-used", # S307 | ||
"exec-used", # S102 | ||
"expression-not-assigned", # B018 | ||
"f-string-without-interpolation", # F541 | ||
"forgotten-debug-statement", # T100 | ||
"format-string-without-interpolation", # F | ||
# "global-statement", # PLW0603, ruff catches new occurrences, needs more work | ||
"global-variable-not-assigned", # PLW0602 | ||
"implicit-str-concat", # ISC001 | ||
"import-self", # PLW0406 | ||
"inconsistent-quotes", # Q000 | ||
"invalid-envvar-default", # PLW1508 | ||
"keyword-arg-before-vararg", # B026 | ||
"logging-format-interpolation", # G | ||
"logging-fstring-interpolation", # G | ||
"logging-not-lazy", # G | ||
"misplaced-future", # F404 | ||
"named-expr-without-context", # PLW0131 | ||
"nested-min-max", # PLW3301 | ||
"pointless-statement", # B018 | ||
"raise-missing-from", # B904 | ||
"redefined-builtin", # A001 | ||
"try-except-raise", # TRY302 | ||
"unused-argument", # ARG001, we don't use it | ||
"unused-format-string-argument", #F507 | ||
"unused-format-string-key", # F504 | ||
"unused-import", # F401 | ||
"unused-variable", # F841 | ||
"useless-else-on-loop", # PLW0120 | ||
"wildcard-import", # F403 | ||
"bad-classmethod-argument", # N804 | ||
"consider-iterating-dictionary", # SIM118 | ||
"empty-docstring", # D419 | ||
"invalid-name", # N815 | ||
"line-too-long", # E501, disabled globally | ||
"missing-class-docstring", # D101 | ||
"missing-final-newline", # W292 | ||
"missing-function-docstring", # D103 | ||
"missing-module-docstring", # D100 | ||
"multiple-imports", #E401 | ||
"singleton-comparison", # E711, E712 | ||
"subprocess-run-check", # PLW1510 | ||
"superfluous-parens", # UP034 | ||
"ungrouped-imports", # I001 | ||
"unidiomatic-typecheck", # E721 | ||
"unnecessary-direct-lambda-call", # PLC3002 | ||
"unnecessary-lambda-assignment", # PLC3001 | ||
"unnecessary-pass", # PIE790 | ||
"unneeded-not", # SIM208 | ||
"useless-import-alias", # PLC0414 | ||
"wrong-import-order", # I001 | ||
"wrong-import-position", # E402 | ||
"comparison-of-constants", # PLR0133 | ||
"comparison-with-itself", # PLR0124 | ||
"consider-alternative-union-syntax", # UP007 | ||
"consider-merging-isinstance", # PLR1701 | ||
"consider-using-alias", # UP006 | ||
"consider-using-dict-comprehension", # C402 | ||
"consider-using-generator", # C417 | ||
"consider-using-get", # SIM401 | ||
"consider-using-set-comprehension", # C401 | ||
"consider-using-sys-exit", # PLR1722 | ||
"consider-using-ternary", # SIM108 | ||
"literal-comparison", # F632 | ||
"property-with-parameters", # PLR0206 | ||
"super-with-arguments", # UP008 | ||
"too-many-branches", # PLR0912 | ||
"too-many-return-statements", # PLR0911 | ||
"too-many-statements", # PLR0915 | ||
"trailing-comma-tuple", # COM818 | ||
"unnecessary-comprehension", # C416 | ||
"use-a-generator", # C417 | ||
"use-dict-literal", # C406 | ||
"use-list-literal", # C405 | ||
"useless-object-inheritance", # UP004 | ||
"useless-return", # PLR1711 | ||
"no-else-break", # RET508 | ||
"no-else-continue", # RET507 | ||
"no-else-raise", # RET506 | ||
"no-else-return", # RET505 | ||
"broad-except", # BLE001 | ||
"protected-access", # SLF001 | ||
"broad-exception-raised", # TRY002 | ||
"consider-using-f-string", # PLC0209 | ||
# "no-self-use", # PLR6301 # Optional plugin, not enabled | ||
|
||
# Handled by mypy | ||
# Ref: <https://github.com/antonagestam/pylint-mypy-overlap> | ||
"abstract-class-instantiated", | ||
"arguments-differ", | ||
"assigning-non-slot", | ||
"assignment-from-no-return", | ||
"assignment-from-none", | ||
"bad-exception-cause", | ||
"bad-format-character", | ||
"bad-reversed-sequence", | ||
"bad-super-call", | ||
"bad-thread-instantiation", | ||
"catching-non-exception", | ||
"comparison-with-callable", | ||
"deprecated-class", | ||
"dict-iter-missing-items", | ||
"format-combined-specification", | ||
"global-variable-undefined", | ||
"import-error", | ||
"inconsistent-mro", | ||
"inherit-non-class", | ||
"init-is-generator", | ||
"invalid-class-object", | ||
"invalid-enum-extension", | ||
"invalid-envvar-value", | ||
"invalid-format-returned", | ||
"invalid-hash-returned", | ||
"invalid-metaclass", | ||
"invalid-overridden-method", | ||
"invalid-repr-returned", | ||
"invalid-sequence-index", | ||
"invalid-slice-index", | ||
"invalid-slots-object", | ||
"invalid-slots", | ||
"invalid-star-assignment-target", | ||
"invalid-str-returned", | ||
"invalid-unary-operand-type", | ||
"invalid-unicode-codec", | ||
"isinstance-second-argument-not-valid-type", | ||
"method-hidden", | ||
"misplaced-format-function", | ||
"missing-format-argument-key", | ||
"missing-format-attribute", | ||
"missing-kwoa", | ||
"no-member", | ||
"no-value-for-parameter", | ||
"non-iterator-returned", | ||
"non-str-assignment-to-dunder-name", | ||
"nonlocal-and-global", | ||
"not-a-mapping", | ||
"not-an-iterable", | ||
"not-async-context-manager", | ||
"not-callable", | ||
"not-context-manager", | ||
"overridden-final-method", | ||
"raising-bad-type", | ||
"raising-non-exception", | ||
"redundant-keyword-arg", | ||
"relative-beyond-top-level", | ||
"self-cls-assignment", | ||
"signature-differs", | ||
"star-needs-assignment-target", | ||
"subclassed-final-class", | ||
"super-without-brackets", | ||
"too-many-function-args", | ||
"typevar-double-variance", | ||
"typevar-name-mismatch", | ||
"unbalanced-dict-unpacking", | ||
"unbalanced-tuple-unpacking", | ||
"unexpected-keyword-arg", | ||
"unhashable-member", | ||
"unpacking-non-sequence", | ||
"unsubscriptable-object", | ||
"unsupported-assignment-operation", | ||
"unsupported-binary-operation", | ||
"unsupported-delete-operation", | ||
"unsupported-membership-test", | ||
"used-before-assignment", | ||
"using-final-decorator-in-unsupported-version", | ||
"wrong-exception-operation", | ||
] | ||
enable = [ | ||
#"useless-suppression", # temporarily every now and then to clean them up | ||
"use-symbolic-message-instead", | ||
] | ||
per-file-ignores = [ | ||
# redefined-outer-name: Tests reference fixtures in the test function | ||
# use-implicit-booleaness-not-comparison: Tests need to validate that a list | ||
# or a dict is returned | ||
"/tests/:redefined-outer-name,use-implicit-booleaness-not-comparison", | ||
] | ||
|
||
[REPORTS] | ||
score = false | ||
|
||
[TYPECHECK] | ||
ignored-classes = [ | ||
"_CountingAttr", # for attrs | ||
] | ||
mixin-class-rgx = ".*[Mm]ix[Ii]n" | ||
|
||
[FORMAT] | ||
expected-line-ending-format = "LF" | ||
|
||
[EXCEPTIONS] | ||
overgeneral-exceptions = [ | ||
"builtins.BaseException", | ||
"builtins.Exception", | ||
# "homeassistant.exceptions.HomeAssistantError", # too many issues | ||
] | ||
|
||
[TYPING] | ||
runtime-typing = false | ||
|
||
[CODE_STYLE] | ||
max-line-length-suggestions = 72 |
Oops, something went wrong.