Code: Select all
from typing import TYPE_CHECKING, TypeVar
if TYPE_CHECKING:
from pydantic import BaseModel
def works_as_expected[T: "BaseModel"](a: type[T]) -> T:
return a()
# ???
def why_does_this_work[T: BaseModel](a: type[T]) -> T:
return a()
# Breaks as expected:
# NameError: name 'BaseModel' is not defined
_T = TypeVar("_T", bound=BaseModel)
def whatever(a: type[_T]) -> _T:
return a()