Skip to content

Commit bab7ea5

Browse files
committed
Remove warning
1 parent db5a034 commit bab7ea5

File tree

2 files changed

+4
-13
lines changed

2 files changed

+4
-13
lines changed

mypyc/irbuild/function.py

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -438,17 +438,6 @@ def generate_setattr_wrapper(builder: IRBuilder, cdef: ClassDef, setattr: FuncDe
438438
if ir.inherits_python:
439439
builder.error(error_base + "it inherits from a non-native class", line)
440440

441-
delattr_symbol = cdef.info.get("__delattr__")
442-
delattr = delattr_symbol.node if delattr_symbol else None
443-
delattr_override = delattr is not None and not delattr.fullname.startswith("builtins.")
444-
if not delattr_override:
445-
builder.warning(
446-
f'Native class "{ir.name}" overrides "__setattr__" but not "__delattr__". '
447-
+ "At runtime, deleting attributes from this class will likely not work as expected. "
448-
+ 'Consider also defining "__delattr__".',
449-
line,
450-
)
451-
452441
with builder.enter_method(ir, name, c_int_rprimitive, internal=True):
453442
attr_arg = builder.add_argument("attr", object_rprimitive)
454443
value_arg = builder.add_argument("value", object_rprimitive)
@@ -459,6 +448,9 @@ def generate_setattr_wrapper(builder: IRBuilder, cdef: ClassDef, setattr: FuncDe
459448
builder.add_bool_branch(is_delattr, call_delattr, call_setattr)
460449

461450
builder.activate_block(call_delattr)
451+
delattr_symbol = cdef.info.get("__delattr__")
452+
delattr = delattr_symbol.node if delattr_symbol else None
453+
delattr_override = delattr is not None and not delattr.fullname.startswith("builtins.")
462454
if delattr_override:
463455
builder.gen_method_call(builder.self(), "__delattr__", [attr_arg], None, line)
464456
else:

mypyc/test-data/irbuild-classes.test

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2246,8 +2246,7 @@ class InheritsNonNative(NonNative):
22462246

22472247
[case testUnsupportedDelAttr]
22482248
class SetAttr:
2249-
def __setattr__(self, attr: str, val: object) -> None: # W: Native class "SetAttr" overrides "__setattr__" but not "__delattr__". \
2250-
At runtime, deleting attributes from this class will likely not work as expected. Consider also defining "__delattr__".
2249+
def __setattr__(self, attr: str, val: object) -> None:
22512250
pass
22522251

22532252
class NoSetAttr:

0 commit comments

Comments
 (0)