From 38b7428f986d48291c60d43a9405a945f667b013 Mon Sep 17 00:00:00 2001 From: Kayran Schmidt Date: Thu, 13 Jan 2022 19:00:27 +0100 Subject: [PATCH 1/3] fix magic methods not checked for is_overload --- src/pydocstyle/checker.py | 21 ++++++++++----------- src/pydocstyle/parser.py | 2 +- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/src/pydocstyle/checker.py b/src/pydocstyle/checker.py index 0b456444..66586ad4 100644 --- a/src/pydocstyle/checker.py +++ b/src/pydocstyle/checker.py @@ -200,21 +200,20 @@ def check_docstring_missing(self, definition, docstring): """ if not docstring and definition.is_public: + method_violations = None + if not definition.is_overload: + if definition.is_magic: + method_violations = violations.D105() + elif definition.is_init: + method_violations = violations.D107() + else: + method_violations = violations.D102() + codes = { Module: violations.D100, Class: violations.D101, NestedClass: violations.D106, - Method: lambda: violations.D105() - if definition.is_magic - else ( - violations.D107() - if definition.is_init - else ( - violations.D102() - if not definition.is_overload - else None - ) - ), + Method: lambda: method_violations, NestedFunction: violations.D103, Function: ( lambda: violations.D103() diff --git a/src/pydocstyle/parser.py b/src/pydocstyle/parser.py index 7165767a..2400e568 100644 --- a/src/pydocstyle/parser.py +++ b/src/pydocstyle/parser.py @@ -214,7 +214,7 @@ def is_public(self): def is_overload(self): """Return True iff the method decorated with overload.""" return any( - decorator.name == "overload" for decorator in self.decorators + decorator.name in ["overload", "typing.overload"] for decorator in self.decorators ) def is_property(self, property_decorator_names): From 3ef2546cdc116eb476cd54c3afe65134aafe3308 Mon Sep 17 00:00:00 2001 From: Kayran Schmidt Date: Mon, 17 Jan 2022 17:11:29 +0100 Subject: [PATCH 2/3] change method_violations to closure --- src/pydocstyle/checker.py | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/pydocstyle/checker.py b/src/pydocstyle/checker.py index 66586ad4..f1a0ff07 100644 --- a/src/pydocstyle/checker.py +++ b/src/pydocstyle/checker.py @@ -200,20 +200,21 @@ def check_docstring_missing(self, definition, docstring): """ if not docstring and definition.is_public: - method_violations = None - if not definition.is_overload: - if definition.is_magic: - method_violations = violations.D105() - elif definition.is_init: - method_violations = violations.D107() - else: - method_violations = violations.D102() + + def method_violations(): + if not definition.is_overload: + if definition.is_magic: + return violations.D105() + if definition.is_init: + return violations.D107() + return violations.D102() + return None codes = { Module: violations.D100, Class: violations.D101, NestedClass: violations.D106, - Method: lambda: method_violations, + Method: method_violations, NestedFunction: violations.D103, Function: ( lambda: violations.D103() From 3b865cceea31ce2e7afa41a41ac935693e2fa730 Mon Sep 17 00:00:00 2001 From: Kayran Schmidt Date: Mon, 17 Jan 2022 17:15:58 +0100 Subject: [PATCH 3/3] formatting --- src/pydocstyle/checker.py | 2 +- src/pydocstyle/parser.py | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/pydocstyle/checker.py b/src/pydocstyle/checker.py index f1a0ff07..6cec57a1 100644 --- a/src/pydocstyle/checker.py +++ b/src/pydocstyle/checker.py @@ -200,7 +200,7 @@ def check_docstring_missing(self, definition, docstring): """ if not docstring and definition.is_public: - + def method_violations(): if not definition.is_overload: if definition.is_magic: diff --git a/src/pydocstyle/parser.py b/src/pydocstyle/parser.py index 2400e568..a3e1a2b2 100644 --- a/src/pydocstyle/parser.py +++ b/src/pydocstyle/parser.py @@ -214,7 +214,8 @@ def is_public(self): def is_overload(self): """Return True iff the method decorated with overload.""" return any( - decorator.name in ["overload", "typing.overload"] for decorator in self.decorators + decorator.name in ["overload", "typing.overload"] + for decorator in self.decorators ) def is_property(self, property_decorator_names):