AutoOrderedAcrossTypes#
- class penzai.core.auto_order_types.AutoOrderedAcrossTypes[source]#
Bases:
objectMixin to define an arbitrary total ordering across dataclass subclasses.
Subclasses of this class will be comparable with other subclasses of this class, using an arbitrary total ordering of their types. Additionally, any subclass of this class will be greater than any string or tuple. This makes it possible to use subclasses of this class as keys in dictionaries that are passed through JAX transformations, potentially in combination with string or tuple keys.
Every subclass of this class must be a dataclass with
eq=True, order=False(the default), otherwise the provided comparisons may not work correctly. (Settingeq=Falsemay cause inconsistencies between equality and ordering comparisons, and settingorder=Truewill override the orderings defined here.)An example of how to subclass this class for the common case of making a new dictionary key type:
@dataclasses.dataclass(frozen=True) # WITHOUT order=True class MyType(auto_order_types.AutoOrderedAcrossTypes): some_field: int some_other_field: str
Here
MyTypewill have the same ordering behavior as it would have iforder=Truewas set, but it will also be comparable with other subclasses ofAutoOrderedAcrossTypes.Inherited Methods
(expand to view inherited methods)
__init__()