Description
Currently, we treat bytearray
and memoryview
as implicit subclasses of bytes
, following the CPython documentation. In PEP 688, I propose to remove this implicit promotion. Discussion is still ongoing, but I'd like to make sure typeshed is ready for this change by reviewing existing usage of bytes
.
To make that easier, I propose that we write stubs as if there is no implicit promotion between bytes
, bytearray
, and memoryview
. Thus, if a function accepts either bytes
or bytearray
, we should write bytes | bytearray
, not just bytes
.
The only cost here should be that certain argument annotations become longer; everything should still work fine for type checkers that assume the implicit promotion.
If we agree on this rule, I can review existing bytes
annotations for correctness. In my experience, most usages of bytes
in argument positions should be ReadableBuffer
.