Totally agree. Current definition is too wide. Actually in different places the term "bytes-like object" can imply different requirements.
* Supports buffer protocol. list isn't.
* Contiguous. memoryview()[::2] isn't.
* len() returns bytes size. array('I') isn't.
* Supported indexing (and slicing) of bytes. array('I') isn't.
* Indexing returns integers in the range 0-255. array('b') isn't.
* Supports concatenation. memoryview isn't.
* Supports common bytes and bytearray methods, such as find() or lower().
* A subclass of (bytes, bytearray).
* A subclass of bytes.
* A bytes itself.