From dcb5148ef1456296b58d98d0fa83ab7b16dab372 Mon Sep 17 00:00:00 2001 From: Claudiu Popa Date: Thu, 14 May 2020 08:30:03 +0200 Subject: `property-with-parameters` properly handles abstract properties Close #3600 --- ChangeLog | 4 ++++ pylint/checkers/classes.py | 7 ++++++- tests/functional/p/property_with_parameters.py | 14 ++++++++++++++ tests/functional/p/property_with_parameters.txt | 2 +- 4 files changed, 25 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index a0b5c69cd..12ef7cef0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -7,6 +7,10 @@ What's New in Pylint 2.5.3? Release date: TBA +* `property-with-parameters` properly handles abstract properties + + Close #3600 + What's New in Pylint 2.5.2? =========================== diff --git a/pylint/checkers/classes.py b/pylint/checkers/classes.py index 775f8aad2..bbbd60210 100644 --- a/pylint/checkers/classes.py +++ b/pylint/checkers/classes.py @@ -1109,7 +1109,12 @@ a metaclass class method.", ) def _check_property_with_parameters(self, node): - if node.args.args and len(node.args.args) > 1 and decorated_with_property(node): + if ( + node.args.args + and len(node.args.args) > 1 + and decorated_with_property(node) + and not is_property_setter(node) + ): self.add_message("property-with-parameters", node=node) def _check_invalid_overridden_method(self, function_node, parent_function_node): diff --git a/tests/functional/p/property_with_parameters.py b/tests/functional/p/property_with_parameters.py index 2f521991f..9f746f75f 100644 --- a/tests/functional/p/property_with_parameters.py +++ b/tests/functional/p/property_with_parameters.py @@ -1,7 +1,21 @@ # pylint: disable=missing-docstring, too-few-public-methods +from abc import ABCMeta, abstractproperty class Cls: @property def attribute(self, param, param1): # [property-with-parameters] return param + param1 + + +class MyClassBase(metaclass=ABCMeta): + """MyClassBase.""" + + @abstractproperty + def example(self): + """Getter.""" + + @abstractproperty + @example.setter + def example(self, value): + """Setter.""" diff --git a/tests/functional/p/property_with_parameters.txt b/tests/functional/p/property_with_parameters.txt index 325d89306..617ce3c31 100644 --- a/tests/functional/p/property_with_parameters.txt +++ b/tests/functional/p/property_with_parameters.txt @@ -1 +1 @@ -property-with-parameters:6:Cls.attribute:Cannot have defined parameters for properties +property-with-parameters:7:Cls.attribute:Cannot have defined parameters for properties -- cgit v1.2.1