3 ms·
In Python you can use this: from __future__ import annotations from typing import TYPE_CHECKING if TYPE_CHECKING: import mymodule def
by lawrencejgd 3y ago
In Python you can use this:
from __future__ import annotations
from typing import TYPE_CHECKING
if TYPE_CHECKING:
import mymodule
def myfunc(arg: mymodule.MyType) -> bool:
return bool(arg)
This will make type annotations to be converted internally to strings. TYPE_CHECKING is a constant that's always false except when you use a type checker, so mymodule will never be imported on runtime, but the type checker will think that it was imported.
- LtWorf 3y agofrom __future__ import annotations This will break all the runtime type checking modules (such as typedload, which I wrote).
- dragonwriter 3y ago> This will break all the runtime type checking modules (such as typedload, which I wrote). Most runtime type checking modules I am aware of support from __future__ import annotations E.g., typeguard, Pydantic, beartype, among others.
- LtWorf 3y agothey "support" it, but many things will break, for the simple reason that there is absolutely no way to resolve certain types at runtime. In fact the main reason why it's a future is because the pydantic people complained that it broke stuff. When I had complained earlier, Guido didn't give 2 shits, although it broke typedload, a library I wrote that is very similar to pydantic, when pydantic didn't exist. So I know what I am saying