Skip to content

Commit 75b68fa

Browse files
authored
stubgen: Do not ignore property deleter (#16781)
Fixes #16690
1 parent 261e569 commit 75b68fa

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

mypy/stubgen.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -685,7 +685,7 @@ def process_decorator(self, o: Decorator) -> None:
685685
elif fullname in OVERLOAD_NAMES:
686686
self.add_decorator(qualname, require_name=True)
687687
o.func.is_overload = True
688-
elif qualname.endswith(".setter"):
688+
elif qualname.endswith((".setter", ".deleter")):
689689
self.add_decorator(qualname, require_name=False)
690690

691691
def get_fullname(self, expr: Expression) -> str:

test-data/unit/stubgen.test

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -368,6 +368,8 @@ class A:
368368
return 1
369369
@f.setter
370370
def f(self, x): ...
371+
@f.deleter
372+
def f(self): ...
371373

372374
def h(self):
373375
self.f = 1
@@ -377,6 +379,8 @@ class A:
377379
def f(self): ...
378380
@f.setter
379381
def f(self, x) -> None: ...
382+
@f.deleter
383+
def f(self) -> None: ...
380384
def h(self) -> None: ...
381385

382386
[case testProperty_semanal]
@@ -386,6 +390,8 @@ class A:
386390
return 1
387391
@f.setter
388392
def f(self, x): ...
393+
@f.deleter
394+
def f(self): ...
389395

390396
def h(self):
391397
self.f = 1
@@ -395,6 +401,8 @@ class A:
395401
def f(self): ...
396402
@f.setter
397403
def f(self, x) -> None: ...
404+
@f.deleter
405+
def f(self) -> None: ...
398406
def h(self) -> None: ...
399407

400408
-- a read/write property is treated the same as an attribute
@@ -2338,10 +2346,12 @@ class B:
23382346
@property
23392347
def x(self):
23402348
return 'x'
2341-
23422349
@x.setter
23432350
def x(self, value):
23442351
self.y = 'y'
2352+
@x.deleter
2353+
def x(self):
2354+
del self.y
23452355

23462356
[out]
23472357
class A:
@@ -2355,6 +2365,8 @@ class B:
23552365
y: str
23562366
@x.setter
23572367
def x(self, value) -> None: ...
2368+
@x.deleter
2369+
def x(self) -> None: ...
23582370

23592371
[case testMisplacedTypeComment]
23602372
def f():

0 commit comments

Comments
 (0)