New submission from Jelle Zijlstra <jelle.zijls...@gmail.com>:
Currently, the implementation of @overload (https://github.com/python/cpython/blob/59585d6b2ea50d7bc3a9b336da5bde61367f527c/Lib/typing.py#L2211) simply returns a dummy function and throws away the decorated function. This makes it virtually impossible for type checkers using the runtime function object to find overloads specified at runtime. In pyanalyze, I worked around this by providing a custom @overload decorator, working something like this: _overloads: dict[str, list[Callable]] = {} def _get_key(func: Callable) -> str: return f"{func.__module__}.{func.__qualname__}" def overload(func): key = _get_key(func) _overloads.setdefault(key, []).append(func) return _overload_dummy def get_overloads_for(func): key = _get_key(func) return _overloads.get(key, []) A full implementation will need more error handling. I'd like to add something like this to typing.py so that other tools can also use this information. ---------- assignee: Jelle Zijlstra components: Library (Lib) messages: 413671 nosy: AlexWaygood, Jelle Zijlstra, gvanrossum, kj, sobolevn priority: normal severity: normal status: open title: Introspection support for typing.overload type: enhancement versions: Python 3.11 _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue46821> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com