Skip to content

guidellm.utils.typing

get_literal_vals(alias)

Extract all literal values from a (possibly nested) type alias.

Source code in src/guidellm/utils/typing.py
def get_literal_vals(alias) -> frozenset[str]:
    """Extract all literal values from a (possibly nested) type alias."""

    def resolve(alias) -> Iterator[str]:
        origin = get_origin(alias)

        # Base case: Literal types
        if origin is Literal:
            for literal_val in get_args(alias):
                yield str(literal_val)
        # Unwrap Annotated type
        elif origin is Annotated:
            yield from resolve(get_args(alias)[0])
        # Unwrap TypeAliasTypes
        elif isinstance(alias, TypeAliasType):
            yield from resolve(alias.__value__)
        # Iterate over unions
        elif origin in (Union, UnionType):
            for arg in get_args(alias):
                yield from resolve(arg)
        # Fallback
        else:
            yield str(alias)

    return frozenset(resolve(alias))