objectstate.reified_generics

Reified Generics Prototype - Runtime-preserved type parameters.

This module provides a proof-of-concept implementation of reified generics, where List[int] and List[str] are distinct types at runtime.

Core concepts: - ReifiedMeta: Metaclass with custom __instancecheck__ and __subclasscheck__ - Type caching: Same parameterization returns same type object - Covariance: issubclass(List[int], List[object]) works correctly

Usage:

from objectstate.reified_generics import List, Dict

x = List[int]([1, 2, 3]) isinstance(x, List[int]) # True isinstance(x, List[str]) # False type(x).__args__ # (int,)

Functions

clear_cache()

Clear the reified type cache (for testing).

get_reified_args(t)

Get type arguments from a reified type.

get_reified_origin(t)

Get origin type from a reified type.

is_reified(t)

Check if a type is a reified generic.

reified(cls)

Decorator to make a class support reified generics.

Classes

Dict

List

ReifiedDict

Reified dict that preserves type parameters at runtime.

ReifiedList([iterable])

Reified list that preserves type parameters at runtime.

ReifiedMeta

Metaclass for reified generic types.

ReifiedSet

Reified set that preserves type parameters at runtime.

ReifiedTuple([iterable])

Reified tuple that preserves type parameters at runtime.

Set

Tuple

class objectstate.reified_generics.ReifiedMeta[source]

Metaclass for reified generic types.

Provides custom isinstance/issubclass behavior that respects type parameters.

__instancecheck__(instance: Any) bool[source]

Check if instance is of this reified type.

__subclasscheck__(subclass: type) bool[source]

Check subclass with covariance support.

__hash__() int[source]

Reified types are hashable for use as dict keys.

__eq__(other: Any) bool[source]

Equality based on origin and args.

class objectstate.reified_generics.ReifiedList(iterable=(), /)[source]

Reified list that preserves type parameters at runtime.

Usage:

x = List[int]([1, 2, 3]) type(x) # List[int] isinstance(x, List[int]) # True

classmethod __class_getitem__(params)[source]

Create or retrieve cached reified type.

class objectstate.reified_generics.ReifiedDict[source]

Reified dict that preserves type parameters at runtime.

Usage:

x = Dict[str, int]({“a”: 1}) type(x) # Dict[str, int] isinstance(x, Dict[str, int]) # True

classmethod __class_getitem__(params)[source]

Create or retrieve cached reified type.

class objectstate.reified_generics.ReifiedSet[source]

Reified set that preserves type parameters at runtime.

class objectstate.reified_generics.ReifiedTuple(iterable=(), /)[source]

Reified tuple that preserves type parameters at runtime.

objectstate.reified_generics.List

alias of ReifiedList

objectstate.reified_generics.Dict

alias of ReifiedDict

objectstate.reified_generics.Set

alias of ReifiedSet

objectstate.reified_generics.Tuple

alias of ReifiedTuple

objectstate.reified_generics.is_reified(t: type) bool[source]

Check if a type is a reified generic.

objectstate.reified_generics.get_reified_args(t: type) tuple[source]

Get type arguments from a reified type.

objectstate.reified_generics.get_reified_origin(t: type) type[source]

Get origin type from a reified type.

objectstate.reified_generics.clear_cache() None[source]

Clear the reified type cache (for testing).

objectstate.reified_generics.reified(cls: type) type[source]

Decorator to make a class support reified generics.

Usage:

@reified class Container:

def __init__(self, items):

self.items = items

x = Container[int]([1, 2, 3]) isinstance(x, Container[int]) # True