Skip to content
This repository was archived by the owner on Mar 7, 2021. It is now read-only.

Commit fdf7123

Browse files
ervandewkevinw
authored andcommitted
re-apply 0c808db: Don't warn about duplicate functions for property decorators @prop.setter and @prop.deleter.
1 parent 8f62656 commit fdf7123

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

pyflakes/checker.py

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ class Assignment(Binding):
9898

9999

100100
class FunctionDefinition(Binding):
101-
pass
101+
_property_decorator = False
102102

103103

104104

@@ -353,8 +353,9 @@ def addBinding(self, loc, value, reportRedef=True):
353353
'''
354354
if (isinstance(self.scope.get(value.name), FunctionDefinition)
355355
and isinstance(value, FunctionDefinition)):
356-
self.report(messages.RedefinedFunction,
357-
loc, value.name, self.scope[value.name].source)
356+
if not value._property_decorator:
357+
self.report(messages.RedefinedFunction,
358+
loc, value.name, self.scope[value.name].source)
358359

359360
if not isinstance(self.scope, ClassScope):
360361
for scope in self.scopeStack[::-1]:
@@ -517,7 +518,14 @@ def FUNCTIONDEF(self, node):
517518
else:
518519
for deco in node.decorator_list:
519520
self.handleNode(deco, node)
520-
self.addBinding(node, FunctionDefinition(node.name, node))
521+
522+
# Check for property decorator
523+
func_def = FunctionDefinition(node.name, node)
524+
for decorator in node.decorator_list:
525+
if getattr(decorator, 'attr', None) in ('setter', 'deleter'):
526+
func_def._property_decorator = True
527+
528+
self.addBinding(node, func_def)
521529
self.LAMBDA(node)
522530

523531
def LAMBDA(self, node):

0 commit comments

Comments
 (0)