diff --git a/tests/not_impl_gen.py b/tests/not_impl_gen.py index 2e20f5609..2f1df44a2 100644 --- a/tests/not_impl_gen.py +++ b/tests/not_impl_gen.py @@ -7,16 +7,27 @@ objects = [ float, frozenset, int, - iter, list, memoryview, range, set, str, tuple, - object + object, ] + +def attr_is_not_inherited(type_, attr): + """ + returns True if type_'s attr is not inherited from any of its base classes + """ + + bases = obj.__mro__[1:] + + return getattr(obj, attr) not in ( + getattr(base, attr, None) for base in bases) + + header = open("generator/not_impl_header.txt") footer = open("generator/not_impl_footer.txt") output = open("snippets/whats_left_to_implement.py", "w") @@ -26,7 +37,11 @@ output.write("expected_methods = {\n") for obj in objects: output.write(f" '{obj.__name__}': ({obj.__name__}, [\n") - output.write("\n".join(f" '{attr}'," for attr in dir(obj))) + output.write("\n".join( + f" {attr!r}," + for attr in dir(obj) + if attr_is_not_inherited(obj, attr) + )) output.write("\n ])," + ("\n" if objects[-1] == obj else "\n\n")) output.write("}\n\n")