Skip to content

Commit

Permalink
stubgen: Do not ignore property deleter (#16781)
Browse files Browse the repository at this point in the history
Fixes #16690
  • Loading branch information
hamdanal committed Jan 14, 2024
1 parent 261e569 commit 75b68fa
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 2 deletions.
2 changes: 1 addition & 1 deletion mypy/stubgen.py
Original file line number Diff line number Diff line change
Expand Up @@ -685,7 +685,7 @@ def process_decorator(self, o: Decorator) -> None:
elif fullname in OVERLOAD_NAMES:
self.add_decorator(qualname, require_name=True)
o.func.is_overload = True
elif qualname.endswith(".setter"):
elif qualname.endswith((".setter", ".deleter")):
self.add_decorator(qualname, require_name=False)

def get_fullname(self, expr: Expression) -> str:
Expand Down
14 changes: 13 additions & 1 deletion test-data/unit/stubgen.test
Original file line number Diff line number Diff line change
Expand Up @@ -368,6 +368,8 @@ class A:
return 1
@f.setter
def f(self, x): ...
@f.deleter
def f(self): ...

def h(self):
self.f = 1
Expand All @@ -377,6 +379,8 @@ class A:
def f(self): ...
@f.setter
def f(self, x) -> None: ...
@f.deleter
def f(self) -> None: ...
def h(self) -> None: ...

[case testProperty_semanal]
Expand All @@ -386,6 +390,8 @@ class A:
return 1
@f.setter
def f(self, x): ...
@f.deleter
def f(self): ...

def h(self):
self.f = 1
Expand All @@ -395,6 +401,8 @@ class A:
def f(self): ...
@f.setter
def f(self, x) -> None: ...
@f.deleter
def f(self) -> None: ...
def h(self) -> None: ...

-- a read/write property is treated the same as an attribute
Expand Down Expand Up @@ -2338,10 +2346,12 @@ class B:
@property
def x(self):
return 'x'

@x.setter
def x(self, value):
self.y = 'y'
@x.deleter
def x(self):
del self.y

[out]
class A:
Expand All @@ -2355,6 +2365,8 @@ class B:
y: str
@x.setter
def x(self, value) -> None: ...
@x.deleter
def x(self) -> None: ...

[case testMisplacedTypeComment]
def f():
Expand Down

0 comments on commit 75b68fa

Please sign in to comment.