try:
    NativeBaseClass
except NameError:
    print("SKIP")
    raise SystemExit

# This tests two things that CircuitPython uses:
# 1. Native class's `make_new` get kwargs.
# 2. Native class's properties get used instead of creating a new attribute on
#    the subclass instance.

n = NativeBaseClass(test="direct kwarg")
print(".test:", n.test)

n.test = "test set directly"
print(".test:", n.test)


class A(NativeBaseClass):
    pass


a = A(test="subclass kwarg")
print(".test:", a.test)

a.test = "test set indirectly"
print(".test:", a.test)

a.new_attribute = True
print(".new_attribute", a.new_attribute)

a.print_subclass_attr("new_attribute")

print(a[0])


class B(NativeBaseClass):
    def __init__(self, suffix):
        super().__init__(test="super init " + suffix)


b = B("suffix")
print(".test:", b.test)

b.test = "test set indirectly through b"
print(".test:", b.test)

b.new_attribute = "hello"
print(".new_attribute", b.new_attribute)

b.print_subclass_attr("new_attribute")
print(b[0])