| from typing import Any, Callable, TypeVar, overload | |
| from weakref import CallableProxyType, ProxyType | |
| _C = TypeVar("_C", bound=Callable[..., Any]) | |
| _T = TypeVar("_T") | |
| # Return CallableProxyType if object is callable, ProxyType otherwise | |
| @overload | |
| def proxy(object: _C, callback: Callable[[CallableProxyType[_C]], Any] | None = None, /) -> CallableProxyType[_C]: ... | |
| @overload | |
| def proxy(object: _T, callback: Callable[[ProxyType[_T]], Any] | None = None, /) -> ProxyType[_T]: ... |