diff --git a/src/browserbase/_utils/_typing.py b/src/browserbase/_utils/_typing.py index 193109f3..0e373992 100644 --- a/src/browserbase/_utils/_typing.py +++ b/src/browserbase/_utils/_typing.py @@ -51,7 +51,7 @@ def is_typevar(typ: type) -> bool: return type(typ) == TypeVar # type: ignore -_TYPE_ALIAS_TYPES: tuple[type[typing_extensions.TypeAliasType], ...] = (typing_extensions.TypeAliasType,) +_TYPE_ALIAS_TYPES: tuple[type[object], ...] = (typing_extensions.TypeAliasType,) if sys.version_info >= (3, 12): _TYPE_ALIAS_TYPES = (*_TYPE_ALIAS_TYPES, typing.TypeAliasType) diff --git a/tests/test_utils/test_typing.py b/tests/test_utils/test_typing.py index 1516c978..6130c679 100644 --- a/tests/test_utils/test_typing.py +++ b/tests/test_utils/test_typing.py @@ -1,12 +1,19 @@ from __future__ import annotations +import sys +import typing +import typing_extensions from typing import Generic, TypeVar, cast -from browserbase._utils import extract_type_var_from_base +from browserbase._utils import is_type_alias_type, extract_type_var_from_base _T = TypeVar("_T") _T2 = TypeVar("_T2") _T3 = TypeVar("_T3") +ExtensionsAlias = typing_extensions.TypeAliasType("ExtensionsAlias", str) + +if sys.version_info >= (3, 12): + StdlibAlias = typing.TypeAliasType("StdlibAlias", str) class BaseGeneric(Generic[_T]): ... @@ -24,6 +31,17 @@ class SubclassGenericMultipleTypeArgs(BaseGenericMultipleTypeArgs[_T, _T2, _T3]) class SubclassDifferentOrderGenericMultipleTypeArgs(BaseGenericMultipleTypeArgs[_T2, _T, _T3]): ... +def test_is_type_alias_type_from_typing_extensions() -> None: + assert is_type_alias_type(ExtensionsAlias) + assert not is_type_alias_type(str) + + +if sys.version_info >= (3, 12): + + def test_is_type_alias_type_from_typing() -> None: + assert is_type_alias_type(StdlibAlias) + + def test_extract_type_var() -> None: assert ( extract_type_var_from_base(