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.