diff --git a/stdlib/@tests/stubtest_allowlists/common.txt b/stdlib/@tests/stubtest_allowlists/common.txt index 784599491..cba2f2149 100644 --- a/stdlib/@tests/stubtest_allowlists/common.txt +++ b/stdlib/@tests/stubtest_allowlists/common.txt @@ -540,7 +540,6 @@ wsgiref.handlers.BaseHandler.result wsgiref.handlers.BaseHandler.status (_?weakref.ref|_?weakref.ReferenceType).__call__ # C function default annotation is wrong -(_?weakref.ref|_?weakref.ReferenceType).__init__ # Runtime defines __new__ but stubtest thinks __init__ is also defined. _?weakref.CallableProxyType.__getattr__ # Should have all attributes of proxy _?weakref.ProxyType.__bytes__ # Doesn't actually exist _?weakref.ProxyType.__getattr__ # Should have all attributes of proxy diff --git a/stdlib/_weakref.pyi b/stdlib/_weakref.pyi index 61365645d..f142820c5 100644 --- a/stdlib/_weakref.pyi +++ b/stdlib/_weakref.pyi @@ -21,8 +21,9 @@ class ProxyType(Generic[_T]): # "weakproxy" def __getattr__(self, attr: str) -> Any: ... class ReferenceType(Generic[_T]): - __callback__: Callable[[ReferenceType[_T]], Any] - def __new__(cls, o: _T, callback: Callable[[ReferenceType[_T]], Any] | None = ..., /) -> Self: ... + __callback__: Callable[[Self], Any] + def __new__(cls, o: _T, callback: Callable[[Self], Any] | None = ..., /) -> Self: ... + def __init__(self, o: _T, callback: Callable[[Self], Any] | None = ..., /) -> None: ... def __call__(self) -> _T | None: ... def __eq__(self, value: object, /) -> bool: ... def __hash__(self) -> int: ... diff --git a/stdlib/weakref.pyi b/stdlib/weakref.pyi index e34512423..aaba7ffc9 100644 --- a/stdlib/weakref.pyi +++ b/stdlib/weakref.pyi @@ -41,7 +41,10 @@ _P = ParamSpec("_P") ProxyTypes: tuple[type[Any], ...] class WeakMethod(ref[_CallableT]): - def __new__(cls, meth: _CallableT, callback: Callable[[Self], object] | None = None) -> Self: ... + # `ref` is implemented in `C` so positional-only arguments are enforced, but not in `WeakMethod`. + def __new__( # pyright: ignore[reportInconsistentConstructor] + cls, meth: _CallableT, callback: Callable[[Self], Any] | None = None + ) -> Self: ... def __call__(self) -> _CallableT | None: ... def __eq__(self, other: object) -> bool: ... def __ne__(self, other: object) -> bool: ...