Experiment: remove bytearray -> bytes promotion by JelleZijlstra · Pull Request #12661 · python/mypy
Diff from mypy_primer, showing the effect of this PR on open source code:
python-chess (https://github.com/niklasf/python-chess) + chess/gaviota.py:1835: error: Incompatible types in assignment (expression has type "bytearray", variable has type "bytes") [assignment] + chess/engine.py:860: error: Argument 1 of "write" is incompatible with supertype "WriteTransport"; supertype defines the argument type as "bytes | bytearray | memoryview" [override] + chess/engine.py:860: note: This violates the Liskov substitution principle + chess/engine.py:860: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides mitmproxy (https://github.com/mitmproxy/mitmproxy) + mitmproxy/dns.py:296: error: Argument 1 to "unpack_from_with_compression" has incompatible type "bytes | bytearray"; expected "bytes" [arg-type] + mitmproxy/dns.py:334: error: Argument 1 to "unpack_from_with_compression" has incompatible type "bytes | bytearray"; expected "bytes" [arg-type] + mitmproxy/dns.py:340: error: Argument 5 to "ResourceRecord" has incompatible type "bytes | bytearray"; expected "bytes" [arg-type] + mitmproxy/proxy/layers/tls.py:551: error: Argument 1 to "dtls_parse_client_hello" has incompatible type "bytearray"; expected "bytes" [arg-type] + mitmproxy/proxy/layers/tls.py:553: error: Argument 1 to "parse_client_hello" has incompatible type "bytearray"; expected "bytes" [arg-type] steam.py (https://github.com/Gobot1234/steam.py) + steam/app.py:246: error: Argument 1 to "verify_signature" has incompatible type "memoryview"; expected "bytes" [arg-type] + steam/state.py:2996: error: Argument 1 to "receive" of "SteamWebSocket" has incompatible type "bytearray"; expected "bytes" [arg-type] websockets (https://github.com/aaugustin/websockets) + src/websockets/streams.py:52: error: Incompatible return value type (got "bytearray", expected "bytes") [return-value] + src/websockets/streams.py:75: error: Incompatible return value type (got "bytearray", expected "bytes") [return-value] + src/websockets/streams.py:97: error: Incompatible return value type (got "bytearray", expected "bytes") [return-value] git-revise (https://github.com/mystor/git-revise) + gitrevise/utils.py:85: error: Incompatible return value type (got "bytearray", expected "bytes") [return-value] aioredis (https://github.com/aio-libs/aioredis) + aioredis/connection.py:952: error: Argument 1 to "append" of "list" has incompatible type "bytes | memoryview"; expected "bytes" [arg-type] + aioredis/connection.py:981: error: Subclass of "bytes" and "memoryview" cannot exist: "memoryview" is final [unreachable] + aioredis/connection.py:987: error: Subclass of "bytes" and "memoryview" cannot exist: "memoryview" is final [unreachable] + aioredis/client.py:1921: error: Value of type variable "_KeyT" of "list_or_args" cannot be "Sequence[int] | str" [type-var] + aioredis/client.py:2160: error: Value of type variable "_KeyT" of "list_or_args" cannot be "Sequence[int] | str" [type-var] + aioredis/client.py:2173: error: Value of type variable "_KeyT" of "list_or_args" cannot be "Sequence[int] | str" [type-var] + aioredis/client.py:2608: error: Value of type variable "_KeyT" of "list_or_args" cannot be "Sequence[int] | str" [type-var] + aioredis/client.py:2616: error: Value of type variable "_KeyT" of "list_or_args" cannot be "Sequence[int] | str" [type-var] + aioredis/client.py:2621: error: Value of type variable "_KeyT" of "list_or_args" cannot be "Sequence[int] | str" [type-var] + aioredis/client.py:2629: error: Value of type variable "_KeyT" of "list_or_args" cannot be "Sequence[int] | str" [type-var] + aioredis/client.py:2666: error: Value of type variable "_KeyT" of "list_or_args" cannot be "Sequence[int] | str" [type-var] + aioredis/client.py:2674: error: Value of type variable "_KeyT" of "list_or_args" cannot be "Sequence[int] | str" [type-var] + aioredis/client.py:3176: error: Value of type variable "_KeyT" of "list_or_args" cannot be "Sequence[int] | str" [type-var] boostedblob (https://github.com/hauntsaninja/boostedblob) + boostedblob/write.py:67: error: Argument "data" to "Request" has incompatible type "Union[bytes, bytearray, memoryview]"; expected "Union[Dict[str, Any], bytes, None]" [arg-type] + boostedblob/write.py:88: error: Argument "data" to "Request" has incompatible type "Union[bytes, bytearray, memoryview]"; expected "Union[Dict[str, Any], bytes, None]" [arg-type] + boostedblob/write.py:405: error: Argument "data" to "Request" has incompatible type "Union[bytes, bytearray, memoryview]"; expected "Union[Dict[str, Any], bytes, None]" [arg-type] dulwich (https://github.com/dulwich/dulwich) + dulwich/config.py:388: error: Incompatible types in assignment (expression has type "bytearray", variable has type "bytes") [assignment] mongo-python-driver (https://github.com/mongodb/mongo-python-driver) + pymongo/network.py:335: error: Argument 1 to "decompress" has incompatible type "memoryview"; expected "bytes" [arg-type] + pymongo/network.py:337: error: Incompatible types in assignment (expression has type "memoryview", variable has type "bytes") [assignment] + pymongo/message.py:1238: error: Argument 1 to "_inflate_bson" has incompatible type "memoryview"; expected "bytes" [arg-type] operator (https://github.com/canonical/operator) + ops/pebble.py:3021: error: Argument 1 to "_next_part_boundary" has incompatible type "bytearray"; expected "bytes" [arg-type] + ops/pebble.py:3037: error: Argument 1 has incompatible type "bytearray"; expected "bytes" [arg-type] + ops/pebble.py:3041: error: Argument 1 to "_next_part_boundary" has incompatible type "bytearray"; expected "bytes" [arg-type] + ops/pebble.py:3045: error: Argument 1 to "__call__" of "_BodyHandler" has incompatible type "bytearray"; expected "bytes" [arg-type] + ops/pebble.py:3052: error: Incompatible types in assignment (expression has type "bytearray", variable has type "bytes") [assignment] trio (https://github.com/python-trio/trio) + src/trio/_unix_pipes.py:130: error: Argument 1 of "send_all" is incompatible with supertype "SendStream"; supertype defines the argument type as "Union[bytes, bytearray, memoryview]" [override] + src/trio/_unix_pipes.py:130: note: This violates the Liskov substitution principle + src/trio/_unix_pipes.py:130: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides + src/trio/_highlevel_generic.py:122: error: Incompatible return value type (got "Union[bytes, bytearray]", expected "bytes") [return-value] + src/trio/_tests/test_testing.py:421: error: Incompatible return value type (got "bytearray", expected "bytes") [return-value] + src/trio/_tests/test_ssl.py:274: error: Argument 1 of "send_all" is incompatible with supertype "SendStream"; supertype defines the argument type as "Union[bytes, bytearray, memoryview]" [override] + src/trio/_tests/test_ssl.py:274: note: This violates the Liskov substitution principle + src/trio/_tests/test_ssl.py:274: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides + src/trio/_tests/test_dtls.py:456: error: No overload variant of "sendto" of "SocketType" matches argument types "Sequence[int]", "Tuple[str, int]" [call-overload] + src/trio/_tests/test_dtls.py:456: note: Possible overload variants: + src/trio/_tests/test_dtls.py:456: note: def sendto(self, Buffer, Union[Tuple[object, ...], str, Buffer], /) -> Coroutine[Any, Any, int] + src/trio/_tests/test_dtls.py:456: note: def sendto(self, Buffer, int, Union[Tuple[object, ...], str, Buffer], /) -> Coroutine[Any, Any, int] + src/trio/_tests/test_dtls.py:488: error: Argument "payload" to "evolve" of "UDPPacket" has incompatible type "bytearray"; expected "bytes" [arg-type] aiohttp (https://github.com/aio-libs/aiohttp) + aiohttp/http_websocket.py:402:29: error: Argument 1 to "decompress_sync" of "ZLibDecompressor" has incompatible type "bytearray"; expected "bytes" [arg-type] + aiohttp/http_websocket.py:664:23: error: Incompatible types in assignment (expression has type "bytearray", variable has type "bytes") [assignment] + aiohttp/http_websocket.py:665:35: error: Argument 2 has incompatible type "bytes"; expected "bytearray" [arg-type] werkzeug (https://github.com/pallets/werkzeug) + src/werkzeug/sansio/multipart.py:172: error: Argument 1 to "_parse_headers" of "MultipartDecoder" has incompatible type "bytearray"; expected "bytes" [arg-type] + src/werkzeug/sansio/multipart.py:211: error: Argument 1 to "_parse_data" of "MultipartDecoder" has incompatible type "bytearray"; expected "bytes" [arg-type] + src/werkzeug/sansio/multipart.py:218: error: Argument 1 to "_parse_data" of "MultipartDecoder" has incompatible type "bytearray"; expected "bytes" [arg-type] urllib3 (https://github.com/urllib3/urllib3) + src/urllib3/util/ssltransport.py:108: error: Argument 1 to "send" of "SSLTransport" has incompatible type "memoryview"; expected "bytes" [arg-type] + test/test_ssltransport.py:58: error: Non-overlapping equality check (left operand type: "bytearray", right operand type: "str | bytes") [comparison-overlap] + test/test_ssltransport.py:543: error: Argument 1 to "sendall" of "SSLTransport" has incompatible type "bytearray"; expected "bytes" [arg-type] streamlit (https://github.com/streamlit/streamlit) + lib/streamlit/string_util.py: note: In function "is_binary_string": + lib/streamlit/string_util.py:116:37: error: Argument 2 to "translate" of "bytes" has incompatible type "bytearray"; expected "bytes" [arg-type] + lib/streamlit/runtime/legacy_caching/hashing.py: note: In member "_to_bytes" of class "_CodeHasher": + lib/streamlit/runtime/legacy_caching/hashing.py:422:20: error: Incompatible return value type (got "Union[bytes, bytearray]", expected "bytes") [return-value] + lib/streamlit/runtime/caching/hashing.py: note: In member "_to_bytes" of class "_CacheFuncHasher": + lib/streamlit/runtime/caching/hashing.py:361:20: error: Incompatible return value type (got "Union[bytes, bytearray]", expected "bytes") [return-value] pwndbg (https://github.com/pwndbg/pwndbg) + pwndbg/gdblib/memory.py: note: In function "read": + pwndbg/gdblib/memory.py:68: error: Incompatible return value type (got "bytes", expected "bytearray") [return-value] + pwndbg/gdblib/kernel/__init__.py: note: In function "load_kconfig": + pwndbg/gdblib/kernel/__init__.py:93: error: Argument 1 to "Kconfig" has incompatible type "bytearray"; expected "bytes" [arg-type] + pwndbg/commands/spray.py: note: In function "spray": + pwndbg/commands/spray.py:71: error: Argument 1 to "unpack" of "Arch" has incompatible type "bytearray"; expected "bytes" [arg-type] + pwndbg/commands/sigreturn.py: note: In function "sigreturn": + pwndbg/commands/sigreturn.py:87: error: Argument 1 to "unpack" of "Arch" has incompatible type "bytearray"; expected "bytes" [arg-type] + pwndbg/commands/probeleak.py: note: In function "probeleak": + pwndbg/commands/probeleak.py:123: error: Argument 1 to "unpack" of "Arch" has incompatible type "bytearray"; expected "bytes" [arg-type] + pwndbg/commands/heap.py: note: In function "find_fake_fast": + pwndbg/commands/heap.py:827: error: Argument 1 to "unpack_size" of "Arch" has incompatible type "bytearray"; expected "bytes" [arg-type] + pwndbg/commands/heap.py: note: In function "vis_heap_chunks": + pwndbg/commands/heap.py:1015: error: Argument 1 to "unpack" of "Arch" has incompatible type "bytearray"; expected "bytes" [arg-type] aiortc (https://github.com/aiortc/aiortc) + src/aiortc/codecs/vpx.py:352: error: Argument 1 to "_packetize" of "Vp8Encoder" has incompatible type "bytearray"; expected "bytes" [arg-type] bokeh (https://github.com/bokeh/bokeh) + src/bokeh/core/serialization.py: note: In member "_decode_bytes" of class "Deserializer": + src/bokeh/core/serialization.py:618:16: error: Incompatible return value type (got "bytes | memoryview", expected "bytes") [return-value]