typeshed
typeshed copied to clipboard
'array.array' has no attribute 'clear'
array.array inheriting from MutableSequence has some unintended consequences, such as below
import array
x = array.array("B")
x.clear()
At runtime array.array does not have .clear(). Is it meant to have a .clear() implemented? Right now at least it doesn't and the stubs give an incorrect definition.
This should probably be considered a CPython bug: array claims to be a MutableSequence at runtime, but doesn't implement the full ABC.
>>> issubclass(array.array, collections.abc.MutableSequence)
True
>>> collections.abc.MutableSequence.clear
<function MutableSequence.clear at 0x1031579c0>
>>> array.array.clear
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: type object 'array.array' has no attribute 'clear'
I have added the issue to the cpython repository: https://github.com/python/cpython/issues/114894