Skip to content

v0.0.20

Re-release of v0.0.19 changes (GitHub release was not created for 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 old ArgInfo NamedTuple.
  • MethodInterface — serializable callable signature: params, return_type, doc, return_annotation (excluded). Built via MethodInterface.from_callable(), which resolves stringified annotations from from __future__ import annotations using typing.get_type_hints().
  • MethodInterface.validate_simple_type_args() — structural type comparison for DAG wiring validation.

Changed

  • Method composes MethodInterface with optional grefgref is now GlobalRef | None, so closures, lambdas, and bound methods work without a GlobalRef. Fragment registration no longer uses a GlobalRef("__fragment__:name") hack.
  • CLI helpers moved to free functionsparam_to_value, is_turn_on_flag, param_arg_help, param_opt_help are now free functions in lythonic.compose.cli operating on ParamInfo.
  • Decorator consolidation — all compose decorators (inline, dag_factory, nsnode, require_cache, mountable, mount_required) now live in lythonic.compose.namespace. The _inline.py module is deleted.
  • Fragment method discovery_discover_fragment_methods skips all private attributes unconditionally.

Removed

  • ArgInfo NamedTuple (replaced by ParamInfo)
  • gref.is_async() usage (replaced by asyncio.iscoroutinefunction())
  • lythonic.compose._inline module (inline moved to namespace.py)
  • inline re-export from lythonic.compose (import from lythonic.compose.namespace instead)