mirror of
https://github.com/davidhalter/typeshed.git
synced 2026-05-06 21:43:59 +08:00
Loosen Mapping.update() overloads a little (#14593)
This commit is contained in:
@@ -4,6 +4,10 @@ import os
|
||||
from typing import Any, Dict, Generic, Iterable, Mapping, TypeVar, Union
|
||||
from typing_extensions import Self, assert_type
|
||||
|
||||
###################################################################
|
||||
# Note: tests for `dict.update()` are in `check_MutableMapping.py`.
|
||||
###################################################################
|
||||
|
||||
# These do follow `__init__` overloads order:
|
||||
# mypy and pyright have different opinions about this one:
|
||||
# mypy raises: 'Need type annotation for "bad"'
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import Any, Union
|
||||
from typing import Any, Hashable, Sequence, Union
|
||||
from typing_extensions import assert_type
|
||||
|
||||
|
||||
@@ -30,6 +30,15 @@ def check_update_method__str_key() -> None:
|
||||
d.update([("", "")]) # type: ignore
|
||||
|
||||
|
||||
def test_keywords_allowed_on_dict_update_where_key_type_is_str_supertype(
|
||||
a: dict[object, Any], b: dict[Hashable, Any], c: dict[Sequence[str], Any], d: dict[str, Any]
|
||||
) -> None:
|
||||
a.update(keyword_args_are_accepted="whatever")
|
||||
b.update(here_too="whooo")
|
||||
c.update(and_here="hooray")
|
||||
d.update(also_here="yay")
|
||||
|
||||
|
||||
def check_setdefault_method() -> None:
|
||||
d: dict[int, str] = {}
|
||||
d2: dict[int, str | None] = {}
|
||||
|
||||
+4
-4
@@ -5,7 +5,7 @@ import collections # noqa: F401 # pyright: ignore[reportUnusedImport]
|
||||
import sys
|
||||
import typing_extensions
|
||||
from _collections_abc import dict_items, dict_keys, dict_values
|
||||
from _typeshed import IdentityFunction, ReadableBuffer, SupportsGetItemViewable, SupportsKeysAndGetItem, Viewable
|
||||
from _typeshed import IdentityFunction, ReadableBuffer, SupportsGetItem, SupportsGetItemViewable, SupportsKeysAndGetItem, Viewable
|
||||
from abc import ABCMeta, abstractmethod
|
||||
from re import Match as Match, Pattern as Pattern
|
||||
from types import (
|
||||
@@ -801,13 +801,13 @@ class MutableMapping(Mapping[_KT, _VT]):
|
||||
@overload
|
||||
def update(self, m: SupportsKeysAndGetItem[_KT, _VT], /) -> None: ...
|
||||
@overload
|
||||
def update(self: Mapping[str, _VT], m: SupportsKeysAndGetItem[str, _VT], /, **kwargs: _VT) -> None: ...
|
||||
def update(self: SupportsGetItem[str, _VT], m: SupportsKeysAndGetItem[str, _VT], /, **kwargs: _VT) -> None: ...
|
||||
@overload
|
||||
def update(self, m: Iterable[tuple[_KT, _VT]], /) -> None: ...
|
||||
@overload
|
||||
def update(self: Mapping[str, _VT], m: Iterable[tuple[str, _VT]], /, **kwargs: _VT) -> None: ...
|
||||
def update(self: SupportsGetItem[str, _VT], m: Iterable[tuple[str, _VT]], /, **kwargs: _VT) -> None: ...
|
||||
@overload
|
||||
def update(self: Mapping[str, _VT], **kwargs: _VT) -> None: ...
|
||||
def update(self: SupportsGetItem[str, _VT], **kwargs: _VT) -> None: ...
|
||||
|
||||
Text = str
|
||||
|
||||
|
||||
Reference in New Issue
Block a user