Added equality comparison for step objects. Steps can now be compared with other steps and their exported tuple representations.
0.5.6
Added the handler_error parameter to Pipeline.run() for handling errors raised during step execution.
Added an optional timeout parameter to Pipeline.wait(). When the timeout expires, the method returns without stopping the running pipeline.
Added the Pipeline.calls stack for tracking successfully executed steps. Failed and skipped steps are not recorded.
Added Checkpoint, a synchronization utility for coordinating execution between threads.
Changed pipe from a callable class to a function-based wrapper while preserving its step-factory behavior and callable metadata.
0.5.5
Added Pipeline.steps property for accessing a deep copy of the configured steps.
Added chain() utility for synchronously executing pipeline steps sequentially.
Added mut() utility for applying side effects directly to a value while preserving the original value as the return value.
Some internal changes.
0.5.4
Documentation-only release: Change the line breaks in the README.
0.5.3
Documentation-only release: Updated Pipeline.__contains__() and pipeline repetition documentation to match their current behavior.
0.5.2
Changed Pipeline.__mul__() so a count of 0 raises ValueError instead of returning an empty Pipeline.
Changed step.__call__() so omitting default uses step.default, while explicitly passing None uses None as the input value.
Extended Pipeline.__contains__() to match callables by identity or valid step tuples by their full configuration.
Refactored Pipeline and step internals, including private state attributes and shared step validation and execution helpers.
Simplified step and pipe representations to display the wrapped callable's name.
0.5.1
Added Pipeline.index() to return the one-based index of the first matching pipeline step.
Added Pipeline.count() to return the number of occurrences of a pipeline step.
Improved Pipeline.__str__() to include the pipeline's name and default value at the beginning of the representation.
Fixed Pipeline.__str__() raising an AttributeError when the pipeline contains a callable object without a __name__ attribute.
Fixed Pipeline.name accepting empty strings. The name parameter and setter now raise ValueError when given an empty string.
0.5.0
Changed Pipeline.error from a property to a method. Call error() to re-raise the latest exception, or error(reraise=False) to retrieve it without re-raising.
Renamed the run_step() parameter from step to index to clarify that it refers to the one-based position of the pipeline step.
0.4.1
Added Pipeline.__init__() parameter run_kwargs for passing keyword arguments to run() when run_now is enabled.
Added name parameter to Pipeline for assigning a name to worker threads.
Added step.default for configuring the default value used by step.__mul__() and step.__gt__().
Improved Pipeline.__repr__() to include the pipeline name and default value.
0.4.0
Changed Pipeline.__bool__() to return whether the pipeline contains configured steps instead of whether it is currently running.
Changed Pipeline.init() parameters run_now and run_args to be keyword-only.
Added Stack.put() and Stack.peek() as compatibility aliases for Stack.push() and Stack.get().
Added a maxsize property to Stack for getting and setting the maximum stack capacity.
Added support for reversed(Stack), iterating from bottom to top.
Added Pipeline.reverse() for in-place reversal of pipeline steps.
Added reversed(Pipeline) support for iterating over pipeline steps in reverse order.
Added Pipeline.update() for adding multiple pipeline steps at once with full validation before insertion.
Added support for appending a single step with the += operator.
Added support creating a new pipeline by concatenating steps with the + operator.
Added support prepending pipeline steps with the + operator.
Added support comparing pipeline configurations with the == operator.
Added support repeating pipeline steps with the * operator.
Added module-level docstrings describing the purpose of each module.
Improved error messages for invalid pipeline steps to provide more specific validation details.
0.3.2
Changed Stack iteration order to iterate from top to bottom, yielding the most recently pushed item first.
Added Pipeline.copy(), __copy__(), and __deepcopy__() to support shallow and deep copying of pipeline configuration without copying execution state.
First stable API release.
0.3.1
Documentation-only release: Edited features list in the READMe.
0.3.0
Removed Pipeline.wait(reraise_exception) and exception re-raising from Pipeline.wait().
Added iteration support to Pipeline, allowing pipeline steps to be iterated in their configured order.
Added Pipeline.result property to retrieve the most recent pipeline result.
Added Pipeline.error property to raise the most recent exception raised by a pipeline step when accessed.
Added run_now and run_args parameters to Pipeline to support automatically starting the pipeline with custom run() arguments during initialization.
Added one-based indexed access, replacement, and removal of pipeline steps through Pipeline.__getitem__(), Pipeline.__setitem__(), and Pipeline.__delitem__().
Added Pipeline.remove() to remove the first matching step.
Added Pipeline.discard() to remove the first matching step without raising ValueError when absent.
Added Pipeline.execute() for synchronously executing an individual pipeline step without starting the worker thread or modifying execution results and errors.
Changed Pipeline.run_step() signature to make the default argument optional, defaulting to None.
0.2.4
Documentation-only release: Fix heading level in the README.
0.2.3
Added context manager support to Pipeline for automatically starting and stopping pipeline execution.
Added step.export() for converting a step object to the standard pipeline step format.
Added support for unpacking step objects into pipeline step tuples.
0.2.2
Improved Pipeline.run() default handling with an internal sentinel, allowing None to be passed explicitly.
Added reraise_exception support to Pipeline.wait() for propagating worker exceptions to the calling thread.
Improved Pipeline documentation for delay, error handling, and default values.
Added an initial cancellation window before the first pipeline step when delay is enabled.
0.2.1
Code cleanup.
0.2.0
Added compose() for sequential callable composition.
Added pipe as a callable step factory.
Added step for wrapping callables with preconfigured arguments.
Added configurable pipeline defaults.
Fixed Pipeline.insert() index validation for inserting at the end of the pipeline.