Troubleshooting¶
TypeError: a lazy pipef chain can't be unpacked — call it with a value instead¶
Raised by __iter__ when you try result, = fn on a lazy chain (built off the bare pipef class,
never called). A lazy chain has no held value to unpack — call it with a seed first, either directly
(fn(x)) or by starting an eager chain instead (pipef(x) | f)
TypeError: an eager pipef takes no arguments — start a new pipef(value) instead¶
Raised by __call__ when you call an already-eager pipef with arguments, e.g. result_fn(5) where
result_fn already holds a resolved value from pipef(x) | f. Calling an eager pipef with no
arguments is fine (it just returns the held value); to run a new value through the same functions,
start a fresh chain instead: pipef(5) | f
TypeError: unhashable type: 'pipef'¶
Raised whenever something hashes a pipef instance — putting one in a set, using it as a dict
key, or calling hash() on it directly. This is intentional (see FAQ); hash the value the
pipeline produced instead of the pipef wrapping it
A step after the first raises a TypeError about missing or unexpected arguments¶
Only the first function in a chain receives the seed’s *args/**kwargs — every step after that is
called with exactly one positional argument, the previous step’s return value. If a later function’s
signature expects more than one argument, wrap it (a lambda result: later_fn(*result) for a tuple
result, for example) rather than piping it in directly
Docs build fails with -W¶
uv run poe docs treats Sphinx warnings as errors. A broken cross-reference (a .md link to a page
outside the toctree, an autodoc target that no longer exists) is the usual cause — the warning text
Sphinx prints names the offending file and line