Skip to content

Assume there is no bytes/bytearray/memoryview implicit promotion #9001

Closed
@JelleZijlstra

Description

@JelleZijlstra

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    project: policyOrganization of the typeshed project

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions