v0.0.19¶
New: ParamInfo and MethodInterface Pydantic models¶
Pure-data Pydantic models that describe a callable's signature without
requiring a GlobalRef or live callable reference.
ParamInfo— serializable parameter metadata:name,type_str,default,is_optional,description,annotation(excluded from serialization). Replaces the oldArgInfoNamedTuple.MethodInterface— serializable callable signature:params,return_type,doc,return_annotation(excluded). Built viaMethodInterface.from_callable(), which resolves stringified annotations fromfrom __future__ import annotationsusingtyping.get_type_hints().MethodInterface.validate_simple_type_args()— structural type comparison for DAG wiring validation.
Changed: Method now composes MethodInterface with optional gref¶
Method is refactored from a GlobalRef-centric wrapper to a composition of
MethodInterface + optional GlobalRef:
grefis nowGlobalRef | None— closures, lambdas, and bound methods work without aGlobalRef.interface: MethodInterfaceis eagerly built from the callable.args,args_by_name,return_annotation,docdelegate to the interface.- Fragment registration no longer uses a
GlobalRef("__fragment__:name")hack; it passes the callable directly withMethod(callable, name=name).
Changed: CLI helpers moved to free functions¶
param_to_value, is_turn_on_flag, param_arg_help, param_opt_help are
now free functions in cli.py operating on ParamInfo, replacing the former
methods on ArgInfo.
Changed: Decorator consolidation¶
All compose decorators (inline, dag_factory, nsnode, require_cache,
mountable, mount_required) now live in namespace.py. The _inline.py
module is deleted. Import inline from lythonic.compose.namespace.
Changed: Fragment method discovery¶
_discover_fragment_methods now skips all private attributes (names starting
with _) unconditionally, instead of scanning them for decorator markers.
Removed¶
ArgInfo— replaced byParamInfo.gref.is_async()usage — replaced byasyncio.iscoroutinefunction()on the callable directly.lythonic.compose._inlinemodule —inlinemoved tonamespace.py.inlinere-export fromlythonic.compose— import fromlythonic.compose.namespaceinstead.