Pipes: A Lazy Data Flow Framework
http://pipes.tinkerpop.com
```xml
com.tinkerpop
pipes
2.7.0-SNAPSHOT
```
```xml
com.tinkerpop
pipes
2.6.0
```
```xml
com.tinkerpop
pipes
2.5.0
```
GroupByPipeandGroupByReducePipenow take aCollectioninstead of aListfor theMapvalue that stores results.- Updated to support
LinkedHashSetinDuplicateFilterPipe - Updated to support
LinkedHashSetinCyclicPathFilterPipe
```xml
com.tinkerpop
pipes
2.4.0
```
- Added
Pipeline.castto allow pipeline end type to be reset - Added a dependency to Blueprints and now Pipes can reference graph constructs
- Added all the graph-related pipes in Gremlin to Pipes
FilterPipe.Filterno longer exists as nowCompareshould be used- Full support for
Predicatefrom Blueprints - Added
ToStringPipeto support streaming results out as asObject.toString() - Added branch factor support to all
VerticesVerticesPipeandVerticesEdgesPipeclasses IntervalFilterPipenow requires twoComparablesnot just genericObject
```xml
com.tinkerpop
pipes
2.3.0
```
- Breaking API change with
GroupByReducePipe—Iterator<V>is nowList<V> - Fixed a bug in
GroupByReducePipewhenLoopPipeis used in conjunction - Minor speed improvement to path calculations
- Moved
IdentityPipeto root package as it is not aTransformPipe - Added
<S,E>typing toTransformPipeinterface and updated respective pipe implementations ExceptFilterPipeandRetainFilterPipesupportString[]of named steps to reference as collection- Added sub-interfaces of
LazySideEffectPipeandGreedySideEffectPipeto specify when sideeffect is ready - Made
Row.getColumnNames()public - Better support for indexing
AsPipeswithin aMetaPipeinFluentUtility - Added
TransformPipe.Orderenums for ordering specifications inOrderPipeandOrderMapPipe - Added
OrderMapPipeto sort a map given aPipeFunctionand then emit map keys - Added
ShufflePipeto gather up all objects then randomize their output
```xml
com.tinkerpop
pipes
2.2.0
```
- Fixed a comparator bug in
OrderPipe - Garbage collector optimized
CycliePathFilterPipeto avoid newing a set each iteration - Added
TransformPipeinterface to denote a transform operation so path joins are ignored
```xml
com.tinkerpop
pipes
2.1.0
```
- Added Travis continuous integration support
- Added getters for getting the high and low end ranges of a
RangeFilterPipe - Made exception handling faster with
FastNoSuchElementException
```xml
com.tinkerpop
pipes
2.0.0
```
GatherPipeno longer locks on looping and is semantically sound for depth-first traversing- Added
GatherFunctionPipefor user provided function to transform the gathered list - Added
Pipe.enablePath(boolean)method to support the turning on/off of path calculations (efficiency reasons) - Renamed
Pipe.getPath()toPipe.getCurrentPath() SideEffectCapPipemoved to thetransformpackage as it was wrongly organized in thesideeffectpackage- Fixed an indexing issue in
ExhaustMergePipethat made itself apparent when two split/merges happened in the same pipeline - Added
TreeandTreePipeto return a tree representation of a traversal - Merged
PathPipeandPathFunctionPipeinto one class calledPathPipe - Added
AbstractMetaPipeto encapsulate reused behavior in allMetaPipeimplementations - The
CopySplitPipe,FairMergePipe, andExhaustMergePipeall have functioning path calculations - Removed unused extra methods for merging in
PipesFluentPipelineinterface (and updated respective implementations) - Added
OrderPipeto do inline sorting of objects in a stream - Added numerous help methods to the
Tabledata structure
```xml
com.tinkerpop
pipes
1.0
```
- Added
SelectPipeto select the objects of named steps from a pipeline - Separated
RowfromTableso it can be reused by other pipes (e.g.SelectPipe) - Heavily reworked
PipesFluentPipelineJavaDoc to make it a single point of reference - Updated
LoopPipesemantics such that if there is an emit function, then the final object in a while isn’t returned - Updated
GroupCountFunctionPipesemantics such that the value-function gets aPaircontaining incoming object and last value for that object - Reorganized the
com.tinkerpop.pipes.utilpackage - Removed the
objectFilterstep fromPipeFluentPipelineasretainandexceptcan be used instead EmptyIteratoris now a singletonScatterPipenow scattersMapobjects intoMap.Entrystreams- Added
GroupByPipewhich groups values under a provided key - Added
GroupByReducePipewhich groups reduced values under a provided key
```xml
com.tinkerpop
pipes
0.9
```
- Removed all Blueprints graph related dependencies
- Renamed
UniquePathFilterPipetoCyclicPathFilterPipe - Renamed and removed numerous methods in
FluentPipelineto make DSL construction more concise - Updated
LoopPipeto support emit functionality viaPipeFunction - Added
StorePipeto lazily save objects to provided collection - Added function support to
DeduplicateFilterPipe
```xml
com.tinkerpop
pipes
0.8
```
SideEffectPipenow has signature of<S,T>instead of<S,E,T>GroupCountFunctionPipehas signature of<S,K>to denote the key of itsMap<K,Number>side-effect- Removed
ComparisonFilterPipeas it is confusing and nowPipeHelperhas comparison support - Added
PipeHelper.makePipeString()to have a single point where all pipetoString()s are created - Optimized
PipeHelper.counter()andPipeHelper.fillCollection()by respecting architecture ofAbstractPipe - Added
PipeHelper.iterate()to complete drain an iterator - Added
FluentPipelineas a utility class for fluently constructing a pipeline - Added
RetainFilterPipe, addedExceptFilterPipe, and abstractedCollectionFilterPipe - Added
EdgesPipe, addedVerticesPipe, and abstractedGraphElementPipe - Renamed
AggregatorPipetoAggregatePipe AndFilterPipeandOrFilterPipewill automatically wrap provided pipes in aHasNextPipe- Generalized
GroupCountPipeto have a value ofMap<Object,Number>instead ofLong - Migrated
TablePipeandTablefrom Gremlin - Simplified the semantics of
HasNextPipe(usePipe.hasNext()to accomplish previous behavior) - Added
MemoizePipeto memoize the mapping of a particular pipe - Simplified
PipeClosureto be purely functional and now namedPipeFunction- Renamed
XXXClosurePipetoXXXFunctionPipe
- Renamed
- Fixed performance issue in
RangeFilterPipeand providedlongranges
```xml
com.tinkerpop
pipes
0.7
```
- Added support for
Vertex.getOutEdges(String...)andVertex.getInEdges(String...) - Updated
AggregatorPipeto be fullySideEffectPipecompliant and to respectgetPath() - Added
PipeClosureto support function-based pipes - Migrated all the Gremlin specific pipes to Pipes
- Refactored package names to align with pipe semantics
- Flipped the meaning of
Filter, wheretruemeans pass, andfalsemeans filter - Added
AggregatorPipePipeClosureto process object prior to insertion into the aggregate collection - Added temporary fix for
AggregatorPipe/LoopPipephenomena IfThenElsePipenow requires anelseFunction
```xml
com.tinkerpop
pipes
0.6
```
RangeFilterPipemax value is now inclusive- Added
OptionalPipewhich is likeBackFilterPipe, but non-filtering. - Updated
AggregatorPipeto support multiplesetStarts()
```xml
com.tinkerpop
pipes
0.5
```
- Added
OutPipe,InPipe, andBothPipeto allow for vertex-vertex hoping - Removed
VertexEdgeLabelFilterPipeas it is now covered by more efficient pipes - Added the
MetaPipeinterface to allow pipes to acknowledge pipe wrapping - Added
CopySplitPipe,ExhaustMergePipe, andFairMergePipe - Optimized
PropertyPipeandUniquePathFilterPipe - Added support for Pipe.reset() and thus, pipe reuse
```xml
com.tinkerpop
pipes
0.4
```
- Added
StartPipeto aid in creating anObject-to-Pipeconverter - Removed
VertexEdgeandEdgeVertexpipes for more low-level/faster pipes. - Supports new Blueprints packaging scheme.
```xml
com.tinkerpop
pipes
0.3.1
```
- Added
VertexEdgeLabelFilterPipeto reflect BlueprintsVertexAPI update - Added
UniquePathFilterPipeto filter paths that have visited the same object twice
```xml
com.tinkerpop
pipes
0.3
```
- Added a general
toString()model to articulate pipe construction - Redesigned path-model to where
enablePaths()no longer required- Added
HistoryIteratorto replace theenablePath()model
- Added
- Renamed
CountCombinetoGroupCount - Added
ExpandableIteratorto support pipe looping - Removed many unused pipes for the sake of clarity and simplicity
- Added
GatherPipeas a composite ofSideEffectCapPipeandAggregatorPipe - Removed
EndSupportPipeas that is whatScatterPipenow accomplishes
```xml
com.tinkerpop
pipes
0.2
```
- Added path functionality to get the path pipe traversed
- Added
PathSequencepath utility - Added
PathPipeto support using paths in a computation
- Added
- Numerous test cases added
```xml
com.tinkerpop
pipes
0.1.1
```
- Fixed ‘reset pipe’ issue in
FutureFilterPipe
```xml
com.tinkerpop
pipes
0.1
```
- Initial release as the core engine for Gremlin 0.5










