Skip to content

Commit 3c8be8e

Browse files
authored
Fix false negative for property-with-parameters (#9592)
In the case of parameters which are ``positional-only``, ``keyword-only``, ``variadic positional`` or ``variadic keyword``. Set the confidence level to HIGH for the ``property-with-parameters`` check and regenerate the functional tests. Closes #9584
1 parent a831422 commit 3c8be8e

File tree

4 files changed

+28
-6
lines changed

4 files changed

+28
-6
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
Fix false negative for ``property-with-parameters`` in the case of parameters which are ``positional-only``, ``keyword-only``, ``variadic positional`` or ``variadic keyword``.
2+
3+
Closes #9584

pylint/checkers/classes/class_checker.py

+2-3
Original file line numberDiff line numberDiff line change
@@ -1410,12 +1410,11 @@ def form_annotations(arguments: nodes.Arguments) -> list[str]:
14101410

14111411
def _check_property_with_parameters(self, node: nodes.FunctionDef) -> None:
14121412
if (
1413-
node.args.args
1414-
and len(node.args.args) > 1
1413+
len(node.args.arguments) > 1
14151414
and decorated_with_property(node)
14161415
and not is_property_setter(node)
14171416
):
1418-
self.add_message("property-with-parameters", node=node)
1417+
self.add_message("property-with-parameters", node=node, confidence=HIGH)
14191418

14201419
def _check_invalid_overridden_method(
14211420
self,

tests/functional/p/property_with_parameters.py

+18-2
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,24 @@
44

55
class Cls:
66
@property
7-
def attribute(self, param, param1): # [property-with-parameters]
8-
return param + param1
7+
def a(self, arg): # [property-with-parameters]
8+
return arg
9+
10+
@property
11+
def b(self, arg, /): # [property-with-parameters]
12+
return arg
13+
14+
@property
15+
def c(self, *, arg): # [property-with-parameters]
16+
return arg
17+
18+
@property
19+
def d(self, *args): # [property-with-parameters]
20+
return args
21+
22+
@property
23+
def e(self, **kwargs): # [property-with-parameters]
24+
return kwargs
925

1026

1127
class MyClassBase(metaclass=ABCMeta):
Original file line numberDiff line numberDiff line change
@@ -1 +1,5 @@
1-
property-with-parameters:7:4:7:17:Cls.attribute:Cannot have defined parameters for properties:UNDEFINED
1+
property-with-parameters:7:4:7:9:Cls.a:Cannot have defined parameters for properties:HIGH
2+
property-with-parameters:11:4:11:9:Cls.b:Cannot have defined parameters for properties:HIGH
3+
property-with-parameters:15:4:15:9:Cls.c:Cannot have defined parameters for properties:HIGH
4+
property-with-parameters:19:4:19:9:Cls.d:Cannot have defined parameters for properties:HIGH
5+
property-with-parameters:23:4:23:9:Cls.e:Cannot have defined parameters for properties:HIGH

0 commit comments

Comments
 (0)