allow object type in dict.get and dict.pop by randolf-scholz · Pull Request #15471 · python/typeshed
Diff from mypy_primer, showing the effect of this PR on open source code:
mongo-python-driver (https://github.com/mongodb/mongo-python-driver) + bson/son.py:126: error: Signature of "pop" incompatible with supertype "builtins.dict" [override] + bson/son.py:126: note: Superclass: + bson/son.py:126: note: @overload + bson/son.py:126: note: def pop(self, object, /) -> _Value + bson/son.py:126: note: @overload + bson/son.py:126: note: def pop(self, object, _Value, /) -> _Value + bson/son.py:126: note: @overload + bson/son.py:126: note: def [_T] pop(self, object, _T, /) -> _Value | _T + bson/son.py:126: note: Subclass: + bson/son.py:126: note: def [_T] pop(self, key: _Key, *args: _Value | _T) -> _Value | _T setuptools (https://github.com/pypa/setuptools) + setuptools/_static.py:170: error: Unused "type: ignore" comment [unused-ignore] pylox (https://github.com/sco1/pylox) + pylox/containers/array.py:83: note: def pop(self, object, /) -> Any - pylox/containers/array.py:83: note: def pop(self, Any, /) -> Any + pylox/containers/array.py:83: note: def pop(self, object, Any, /) -> Any - pylox/containers/array.py:83: note: def pop(self, Any, Any, /) -> Any - pylox/containers/array.py:83: note: def [_T] pop(self, Any, _T, /) -> Any | _T + pylox/containers/array.py:83: note: def [_T] pop(self, object, _T, /) -> Any | _T rotki (https://github.com/rotki/rotki) + rotkehlchen/tasks/events.py:813: error: Unused "type: ignore" comment [unused-ignore] + rotkehlchen/chain/aggregator.py:732: error: Unused "type: ignore" comment [unused-ignore] django-stubs (https://github.com/typeddjango/django-stubs) + django-stubs/utils/datastructures.pyi:65: error: Signature of "get" incompatible with supertype "builtins.dict" [override] + django-stubs/utils/datastructures.pyi:65: note: Superclass: + django-stubs/utils/datastructures.pyi:65: note: @overload + django-stubs/utils/datastructures.pyi:65: note: def get(self, object, None = ..., /) -> _V | None + django-stubs/utils/datastructures.pyi:65: note: @overload + django-stubs/utils/datastructures.pyi:65: note: def get(self, object, _V, /) -> _V + django-stubs/utils/datastructures.pyi:65: note: @overload + django-stubs/utils/datastructures.pyi:65: note: def [_T] get(self, object, _T, /) -> _V | _T + django-stubs/utils/datastructures.pyi:65: note: Subclass: + django-stubs/utils/datastructures.pyi:65: note: @overload + django-stubs/utils/datastructures.pyi:65: note: def get(self, key: _K, default: None = ...) -> _V | None + django-stubs/utils/datastructures.pyi:65: note: @overload + django-stubs/utils/datastructures.pyi:65: note: def get(self, key: _K, default: _V) -> _V + django-stubs/utils/datastructures.pyi:65: note: @overload + django-stubs/utils/datastructures.pyi:65: note: def [_Z] get(self, key: _K, default: _Z) -> _V | _Z + django-stubs/contrib/sessions/backends/base.pyi:31: error: Signature of "pop" incompatible with supertype "builtins.dict" [override] + django-stubs/contrib/sessions/backends/base.pyi:31: note: Superclass: + django-stubs/contrib/sessions/backends/base.pyi:31: note: @overload + django-stubs/contrib/sessions/backends/base.pyi:31: note: def pop(self, object, /) -> Any + django-stubs/contrib/sessions/backends/base.pyi:31: note: @overload + django-stubs/contrib/sessions/backends/base.pyi:31: note: def pop(self, object, Any, /) -> Any + django-stubs/contrib/sessions/backends/base.pyi:31: note: @overload + django-stubs/contrib/sessions/backends/base.pyi:31: note: def [_T] pop(self, object, _T, /) -> Any | _T + django-stubs/contrib/sessions/backends/base.pyi:31: note: Subclass: + django-stubs/contrib/sessions/backends/base.pyi:31: note: @overload + django-stubs/contrib/sessions/backends/base.pyi:31: note: def pop(self, key: str) -> Any + django-stubs/contrib/sessions/backends/base.pyi:31: note: @overload + django-stubs/contrib/sessions/backends/base.pyi:31: note: def pop(self, key: str, default: Any) -> Any + django-stubs/http/request.pyi:202: error: Signature of "pop" incompatible with supertype "builtins.dict" [override] + django-stubs/http/request.pyi:202: note: Superclass: + django-stubs/http/request.pyi:202: note: @overload + django-stubs/http/request.pyi:202: note: def pop(self, object, /) -> str + django-stubs/http/request.pyi:202: note: @overload + django-stubs/http/request.pyi:202: note: def pop(self, object, str, /) -> str + django-stubs/http/request.pyi:202: note: @overload + django-stubs/http/request.pyi:202: note: def [_T] pop(self, object, _T, /) -> str | _T + django-stubs/http/request.pyi:202: note: Subclass: + django-stubs/http/request.pyi:202: note: @overload + django-stubs/http/request.pyi:202: note: def pop(self, str | bytes, /) -> Never + django-stubs/http/request.pyi:202: note: @overload + django-stubs/http/request.pyi:202: note: def [_Z] pop(self, str | bytes, str | _Z = ..., /) -> Never beartype (https://github.com/beartype/beartype) + beartype/_check/convert/_reduce/redmain.py:606: error: Unused "type: ignore" comment [unused-ignore] + beartype/_check/convert/_reduce/redmain.py:697: error: Unused "type: ignore" comment [unused-ignore] + beartype/_check/code/_pep/pep484585/codepep484585container.py:99: error: Unused "type: ignore" comment [unused-ignore] + beartype/door/_cls/pep/pep484585/doorpep484585subscripted.py:50: error: Unused "type: ignore" comment [unused-ignore] + beartype/door/_cls/util/doorclsmap.py:91: error: Unused "type: ignore" comment [unused-ignore] pandas (https://github.com/pandas-dev/pandas) + pandas/core/arrays/arrow/array.py:3400: error: Unused "type: ignore" comment [unused-ignore] starlette (https://github.com/encode/starlette) + starlette/middleware/sessions.py:114: error: Signature of "pop" incompatible with supertype "builtins.dict" [override] + starlette/middleware/sessions.py:114: note: Superclass: + starlette/middleware/sessions.py:114: note: @overload + starlette/middleware/sessions.py:114: note: def pop(self, object, /) -> Any + starlette/middleware/sessions.py:114: note: @overload + starlette/middleware/sessions.py:114: note: def pop(self, object, Any, /) -> Any + starlette/middleware/sessions.py:114: note: @overload + starlette/middleware/sessions.py:114: note: def [_T] pop(self, object, _T, /) -> Any | _T + starlette/middleware/sessions.py:114: note: Subclass: + starlette/middleware/sessions.py:114: note: def pop(self, key: str, *args: Any) -> Any scrapy (https://github.com/scrapy/scrapy) + scrapy/utils/datatypes.py:82: error: Signature of "get" incompatible with supertype "builtins.dict" [override] + scrapy/utils/datatypes.py:82: note: Superclass: + scrapy/utils/datatypes.py:82: note: @overload + scrapy/utils/datatypes.py:82: note: def get(self, object, None = ..., /) -> Any | None + scrapy/utils/datatypes.py:82: note: @overload + scrapy/utils/datatypes.py:82: note: def get(self, object, Any, /) -> Any + scrapy/utils/datatypes.py:82: note: @overload + scrapy/utils/datatypes.py:82: note: def [_T] get(self, object, _T, /) -> Any | _T + scrapy/utils/datatypes.py:82: note: Subclass: + scrapy/utils/datatypes.py:82: note: def [AnyStr: (str, bytes)] get(self, key: AnyStr, def_val: Any = ...) -> Any + scrapy/utils/datatypes.py:98: error: Signature of "pop" incompatible with supertype "builtins.dict" [override] + scrapy/utils/datatypes.py:98: note: Superclass: + scrapy/utils/datatypes.py:98: note: @overload + scrapy/utils/datatypes.py:98: note: def pop(self, object, /) -> Any + scrapy/utils/datatypes.py:98: note: @overload + scrapy/utils/datatypes.py:98: note: def pop(self, object, Any, /) -> Any + scrapy/utils/datatypes.py:98: note: @overload + scrapy/utils/datatypes.py:98: note: def [_T] pop(self, object, _T, /) -> Any | _T + scrapy/utils/datatypes.py:98: note: Subclass: + scrapy/utils/datatypes.py:98: note: def [AnyStr: (str, bytes)] pop(self, key: AnyStr, *args: Any) -> Any + scrapy/http/headers.py:76: error: Signature of "get" incompatible with supertype "builtins.dict" [override] + scrapy/http/headers.py:76: note: Superclass: + scrapy/http/headers.py:76: note: @overload + scrapy/http/headers.py:76: note: def get(self, object, None = ..., /) -> Any | None + scrapy/http/headers.py:76: note: @overload + scrapy/http/headers.py:76: note: def get(self, object, Any, /) -> Any + scrapy/http/headers.py:76: note: @overload + scrapy/http/headers.py:76: note: def [_T] get(self, object, _T, /) -> Any | _T + scrapy/http/headers.py:76: note: Subclass: + scrapy/http/headers.py:76: note: def [AnyStr: (str, bytes)] get(self, key: AnyStr, def_val: Any = ...) -> bytes | None pylint (https://github.com/pycqa/pylint) + pylint/config/arguments_provider.py:54: error: Incompatible types in "yield" (actual type "tuple[None, list[tuple[str, dict[str, str | bool | int | Pattern[str] | Iterable[str | int | Pattern[str]] | type[_CallbackAction] | Callable[[Any], Any] | Callable[[Any, Any, Any, Any], Any] | None], Any]]]", expected type "tuple[str, list[tuple[str, dict[str, str | bool | int | Pattern[str] | Iterable[str | int | Pattern[str]] | type[_CallbackAction] | Callable[[Any], Any] | Callable[[Any, Any, Any, Any], Any] | None], Any]]] | tuple[None, dict[str, list[tuple[str, dict[str, str | bool | int | Pattern[str] | Iterable[str | int | Pattern[str]] | type[_CallbackAction] | Callable[[Any], Any] | Callable[[Any, Any, Any, Any], Any] | None], Any]]]]") [misc] + pylint/config/arguments_provider.py:54: note: Error code "misc" not covered by "type: ignore" comment + pylint/config/arguments_provider.py:54: error: Unused "type: ignore" comment [unused-ignore] jax (https://github.com/google/jax) + jax/_src/interpreters/partial_eval.py:1358: error: Unused "type: ignore" comment [unused-ignore] + jax/_src/interpreters/partial_eval.py:1365: error: Unused "type: ignore" comment [unused-ignore] discord.py (https://github.com/Rapptz/discord.py) + discord/state.py:372: error: Unused "type: ignore" comment [unused-ignore] + discord/state.py:437: error: Unused "type: ignore" comment [unused-ignore] + discord/state.py:474: error: Unused "type: ignore" comment [unused-ignore] + discord/state.py:478: error: Unused "type: ignore" comment [unused-ignore] + discord/state.py:497: error: Unused "type: ignore" comment [unused-ignore] - discord/ui/view.py:961: error: No overload variant of "pop" of "dict" matches argument types "tuple[int, str]", "None" [call-overload] - discord/ui/view.py:961: note: Possible overload variants: - discord/ui/view.py:961: note: def pop(self, Pattern[str], /) -> type[DynamicItem[Item[Any]]] - discord/ui/view.py:961: note: def pop(self, Pattern[str], type[DynamicItem[Item[Any]]], /) -> type[DynamicItem[Item[Any]]] - discord/ui/view.py:961: note: def [_T] pop(self, Pattern[str], _T, /) -> type[DynamicItem[Item[Any]]] | _T + discord/ui/view.py:986: error: Unused "type: ignore" comment [unused-ignore] - discord/ui/view.py:981: error: No overload variant of "pop" of "dict" matches argument types "tuple[int, str]", "None" [call-overload] - discord/ui/view.py:981: note: Possible overload variants: - discord/ui/view.py:981: note: def pop(self, Pattern[str], /) -> type[DynamicItem[Item[Any]]] - discord/ui/view.py:981: note: def pop(self, Pattern[str], type[DynamicItem[Item[Any]]], /) -> type[DynamicItem[Item[Any]]] - discord/ui/view.py:981: note: def [_T] pop(self, Pattern[str], _T, /) -> type[DynamicItem[Item[Any]]] | _T steam.py (https://github.com/Gobot1234/steam.py) - steam/ext/commands/utils.py:43: note: def get(self, str, None = ..., /) -> _VT | None + steam/ext/commands/utils.py:43: note: def get(self, object, None = ..., /) -> _VT | None - steam/ext/commands/utils.py:43: note: def get(self, str, _VT, /) -> _VT + steam/ext/commands/utils.py:43: note: def get(self, object, _VT, /) -> _VT - steam/ext/commands/utils.py:43: note: def [_T] get(self, str, _T, /) -> _VT | _T + steam/ext/commands/utils.py:43: note: def [_T] get(self, object, _T, /) -> _VT | _T - steam/ext/commands/utils.py:52: note: def pop(self, str, /) -> _VT + steam/ext/commands/utils.py:52: note: def pop(self, object, /) -> _VT - steam/ext/commands/utils.py:52: note: def pop(self, str, _VT, /) -> _VT + steam/ext/commands/utils.py:52: note: def pop(self, object, _VT, /) -> _VT - steam/ext/commands/utils.py:52: note: def [_T] pop(self, str, _T, /) -> _VT | _T + steam/ext/commands/utils.py:52: note: def [_T] pop(self, object, _T, /) -> _VT | _T + steam/ext/commands/bot.py:537: error: Unused "type: ignore" comment [unused-ignore] altair (https://github.com/vega/altair) + altair/utils/html.py:394: error: Unused "type: ignore" comment [unused-ignore] + altair/utils/html.py:399: error: Item "str" of "Literal['standard', 'universal', 'inline', 'olli'] | Template" has no attribute "render" [union-attr] werkzeug (https://github.com/pallets/werkzeug) + src/werkzeug/datastructures/mixins.py:265: error: Signature of "pop" incompatible with supertype "builtins.dict" [override] + src/werkzeug/datastructures/mixins.py:265: note: Superclass: + src/werkzeug/datastructures/mixins.py:265: note: @overload + src/werkzeug/datastructures/mixins.py:265: note: def pop(self, object, /) -> V + src/werkzeug/datastructures/mixins.py:265: note: @overload + src/werkzeug/datastructures/mixins.py:265: note: def pop(self, object, V, /) -> V + src/werkzeug/datastructures/mixins.py:265: note: @overload + src/werkzeug/datastructures/mixins.py:265: note: def [_T] pop(self, object, _T, /) -> V | _T + src/werkzeug/datastructures/mixins.py:265: note: Subclass: + src/werkzeug/datastructures/mixins.py:265: note: @overload + src/werkzeug/datastructures/mixins.py:265: note: def pop(self, key: K) -> V + src/werkzeug/datastructures/mixins.py:265: note: @overload + src/werkzeug/datastructures/mixins.py:265: note: def pop(self, key: K, default: V) -> V + src/werkzeug/datastructures/mixins.py:265: note: @overload + src/werkzeug/datastructures/mixins.py:265: note: def [T] pop(self, key: K, default: T) -> T + src/werkzeug/exceptions.py:94: error: Unused "type: ignore" comment [unused-ignore] + src/werkzeug/datastructures/structures.py:469: error: Signature of "pop" incompatible with supertype "builtins.dict" [override] + src/werkzeug/datastructures/structures.py:469: note: Superclass: + src/werkzeug/datastructures/structures.py:469: note: @overload + src/werkzeug/datastructures/structures.py:469: note: def pop(self, object, /) -> V + src/werkzeug/datastructures/structures.py:469: note: @overload + src/werkzeug/datastructures/structures.py:469: note: def pop(self, object, V, /) -> V + src/werkzeug/datastructures/structures.py:469: note: @overload + src/werkzeug/datastructures/structures.py:469: note: def [_T] pop(self, object, _T, /) -> V | _T + src/werkzeug/datastructures/structures.py:469: note: Subclass: + src/werkzeug/datastructures/structures.py:469: note: @overload + src/werkzeug/datastructures/structures.py:469: note: def pop(self, key: K) -> V + src/werkzeug/datastructures/structures.py:469: note: @overload + src/werkzeug/datastructures/structures.py:469: note: def pop(self, key: K, default: V) -> V + src/werkzeug/datastructures/structures.py:469: note: @overload + src/werkzeug/datastructures/structures.py:469: note: def [T] pop(self, key: K, default: T) -> V | T + src/werkzeug/debug/__init__.py:553: error: Unused "type: ignore" comment [unused-ignore] operator (https://github.com/canonical/operator) - ops/_private/harness.py:2649: error: No overload variant of "pop" of "dict" matches argument types "str", "None" [call-overload] - ops/_private/harness.py:2649: note: Possible overload variants: - ops/_private/harness.py:2649: note: def pop(self, int, /) -> dict[str, Any] - ops/_private/harness.py:2649: note: def pop(self, int, dict[str, Any], /) -> dict[str, Any] - ops/_private/harness.py:2649: note: def [_T] pop(self, int, _T, /) -> dict[str, Any] | _T cki-lib (https://gitlab.com/cki-project/cki-lib) - tests/utils.py:22: error: Argument 1 to "get" of "dict" has incompatible type "int | str"; expected "str" [arg-type] - tests/utils.py:22: error: Argument 2 to "get" of "dict" has incompatible type "int | str"; expected "int" [arg-type] jinja (https://github.com/pallets/jinja) + src/jinja2/compiler.py:1422: error: Unused "type: ignore" comment [unused-ignore] + src/jinja2/environment.py:514: error: Unused "type: ignore" comment [unused-ignore]