Skip to content

qten.utils.types_ext

Module reference for qten.utils.types_ext.

types_ext

Type-introspection helpers.

The functions in this module provide small wrappers around Python class introspection for places where QTen needs a stable display name or the full set of registered subclasses for dispatch and diagnostics.

subtypes

subtypes(cls: Type) -> Tuple[ABCMeta, ...]

Return all transitive subclasses of a class.

The result includes direct and indirect subclasses reachable through cls.__subclasses__(). Ordering follows set traversal and should not be treated as stable.

Parameters:

Name Type Description Default
cls Type

The class to inspect.

required

Returns:

Type Description
Tuple[ABCMeta, ...]

A tuple containing all direct and indirect subclasses of cls.

Examples:

subtypes(BaseClass)
Source code in src/qten/utils/types_ext.py
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
def subtypes(cls: Type) -> Tuple[ABCMeta, ...]:
    """
    Return all transitive subclasses of a class.

    The result includes direct and indirect subclasses reachable through
    `cls.__subclasses__()`. Ordering follows set traversal and should not be
    treated as stable.

    Parameters
    ----------
    cls : Type
        The class to inspect.

    Returns
    -------
    Tuple[ABCMeta, ...]
        A tuple containing all direct and indirect subclasses of `cls`.

    Examples
    --------
    ```python
    subtypes(BaseClass)
    ```
    """
    out = set()
    stack = list(cls.__subclasses__())
    while stack:
        sub = stack.pop()
        if sub not in out:
            out.add(sub)
            stack.extend(sub.__subclasses__())
    return cast(Tuple[ABCMeta, ...], tuple(out))

full_typename

full_typename(cls: Type) -> str

Get the full module and class name of a type.

Parameters:

Name Type Description Default
cls Type

The class to get the name of.

required

Returns:

Type Description
str

The full name of the class, including its module.

Examples:

full_typename(Device)
Source code in src/qten/utils/types_ext.py
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
def full_typename(cls: Type) -> str:
    """
    Get the full module and class name of a type.

    Parameters
    ----------
    cls : Type
        The class to get the name of.

    Returns
    -------
    str
        The full name of the class, including its module.

    Examples
    --------
    ```python
    full_typename(Device)
    ```
    """
    return f"{cls.__module__}.{cls.__qualname__}"