liblaf.jarp.tree.codegen
¶
Code-generation helpers for high-performance PyTree registrations.
These utilities build specialized flatten and unflatten callbacks for classes whose field layout is known ahead of time.
Classes:
-
PyTreeFunctions–Container for callbacks passed to
register_pytree_node.
Functions:
-
codegen_flatten– -
codegen_flatten_with_keys– -
codegen_pytree_functions–Generate flatten and unflatten callbacks for a class.
-
codegen_unflatten– -
register_generic–Register a class as a PyTree using explicit field groups.
PyTreeFunctions
¶
Bases: NamedTuple
flowchart TD
liblaf.jarp.tree.codegen.PyTreeFunctions[PyTreeFunctions]
click liblaf.jarp.tree.codegen.PyTreeFunctions href "" "liblaf.jarp.tree.codegen.PyTreeFunctions"
Container for callbacks passed to register_pytree_node.
Parameters:
-
flatten(Callable[list, tuple[_Children, _AuxData]], default:None) – -
unflatten(Callable[list, T], default:None) – -
flatten_with_keys(Callable[list, tuple[_ChildrenWithKeys, _AuxData]], default:None) –
Attributes:
codegen_flatten
¶
codegen_flatten(data_fields: Sequence[str], meta_fields: Sequence[str], auto_fields: Sequence[str]) -> FunctionDef
Source code in src/liblaf/jarp/tree/codegen/_codegen.py
codegen_flatten_with_keys
¶
codegen_flatten_with_keys(data_fields: Sequence[str], meta_fields: Sequence[str], auto_fields: Sequence[str]) -> FunctionDef
Source code in src/liblaf/jarp/tree/codegen/_codegen.py
codegen_pytree_functions
¶
codegen_pytree_functions(cls: type, data_fields: Sequence[str] = (), meta_fields: Sequence[str] = (), auto_fields: Sequence[str] = (), *, filter_spec: Callable[[Any], bool] = is_data, bypass_setattr: bool | None = None) -> PyTreeFunctions
Generate flatten and unflatten callbacks for a class.
Parameters:
-
cls(type) –Class whose instances should become PyTree nodes.
-
data_fields(Sequence[str], default:()) –Field names that are always emitted as dynamic children.
-
meta_fields(Sequence[str], default:()) –Field names that are always emitted as auxiliary metadata.
-
auto_fields(Sequence[str], default:()) –Field names filtered at runtime with
filter_spec. -
filter_spec(Callable[[Any], bool], default:is_data) –Predicate used to split
auto_fieldsinto dynamic data or metadata. -
bypass_setattr(bool | None, default:None) –Whether generated unflattening code should use
object.__setattr__instead of normal attribute assignment.
Returns:
-
PyTreeFunctions–A
PyTreeFunctionstuple -
PyTreeFunctions–containing
flatten,unflatten, andflatten_with_keyscallables.
Source code in src/liblaf/jarp/tree/codegen/_compile.py
codegen_unflatten
¶
codegen_unflatten(data_fields: Sequence[str], meta_fields: Sequence[str], auto_fields: Sequence[str], *, bypass_setattr: bool = False) -> FunctionDef
Source code in src/liblaf/jarp/tree/codegen/_codegen.py
register_generic
¶
register_generic(cls: type, data_fields: Sequence[str] = (), meta_fields: Sequence[str] = (), auto_fields: Sequence[str] = (), *, filter_spec: Callable[[Any], bool] = is_data, bypass_setattr: bool | None = None) -> None
Register a class as a PyTree using explicit field groups.
Use this lower-level helper when you want to control the flattening layout directly instead of relying on attrs metadata.
Parameters:
-
cls(type) –Class to register.
-
data_fields(Sequence[str], default:()) –Field names that are always emitted as dynamic children.
-
meta_fields(Sequence[str], default:()) –Field names that are always emitted as auxiliary metadata.
-
auto_fields(Sequence[str], default:()) –Field names filtered at runtime with
filter_spec. -
filter_spec(Callable[[Any], bool], default:is_data) –Predicate used to split
auto_fieldsinto dynamic data or metadata. -
bypass_setattr(bool | None, default:None) –Whether generated unflattening code should use
object.__setattr__instead of normal attribute assignment.