You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by ke...@apache.org on 2023/09/24 19:41:58 UTC

[tinkerpop] branch TINKERPOP-2978 updated (37e60ed296 -> a7bf93420b)

This is an automated email from the ASF dual-hosted git repository.

kenhuuu pushed a change to branch TINKERPOP-2978
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git


    omit 37e60ed296 revert changes for null test
    omit c67db25963 updates based on PR feedback
    omit 548c6db581 TINKERPOP-2978 Implement all() and any() steps.
     add cbaf45a2cb Bump Microsoft.NET.Test.Sdk from 17.7.1 to 17.7.2 in /gremlin-dotnet
     add 6017c86ef8 Merge branch '3.5-dev' into 3.6-dev
     add 1ddfe46159 Merge branch '3.6-dev'
     add b893ea461a TINKERPOP-2982 Allowed gremlin-driver to work over HTTP.
     add a6404b38b2 Merge branch '3.6-dev'
     add 73d684045c TINKERPOP-2986: [StarGraph] Drop edge properties when dropping edges (#2212)
     add f2d4ac539f Update changelog for TINKERPOP-2986
     add 02973f26bf Merge branch '3.6-dev'
     add 5bc70b6f31 TINKERPOP-2951: Add translator to the Go GLV (#2213)
     add 91e033f183 CTR docs updates for TINKERPOP-2951
     add 397eff08f7 Merge branch '3.6-dev'
     add cccc3566be Restructured a few tests to have a wider feature set while covering the same semantics CTR
     add e692f89c0a Merge branch '3.6-dev'
     add a77ea19232 Fix broken test in neo4j CTR
     add cdbebda7d3 Merge branch '3.6-dev'
     add e99092fa07 Replaced tabs with spaces CTR
     add ac26c70a01 Merge branch '3.6-dev'
     add 191fb1510e TINKERPOP-2921 Fixed bug in labelled group() filtering CTR
     add 65acd5dcbf Merge branch '3.6-dev'
     add d83c15187a Bump BenchmarkDotNet from 0.13.7 to 0.13.8 in /gremlin-dotnet
     add 8acfcb1881 Merge branch '3.5-dev' into 3.6-dev
     add 306629ea2f Merge branch '3.6-dev'
     add c66cd56694 CTR Fix gremlin-socket-server pom to ensure proper deployment to maven central
     add a0cf823bf6 Implement asString(), length(), toLower(), and toUpper() String Functions (#2205)
     add e1fb289eaa add trim(), lTrim(), rTrim(), and reverse() string functions (#2227)
     add 88a75a795c add replace(), split(), and substring() string functions (#2232)
     add d9bc32714b Added back method to TinkerHelper that were removed for 3.7.0
     add e444e771cf Checked graph features for metaproperties before writing them with graphbinary CTR
     new a7bf93420b TINKERPOP-2978 Implement all() and any() steps.

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (37e60ed296)
            \
             N -- N -- N   refs/heads/TINKERPOP-2978 (a7bf93420b)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 CHANGELOG.asciidoc                                 |   13 +-
 docs/src/dev/developer/for-committers.asciidoc     |    5 +-
 docs/src/dev/provider/gremlin-semantics.asciidoc   |  294 ++-
 docs/src/reference/the-traversal.asciidoc          |  215 +-
 docs/src/upgrade/release-3.7.x.asciidoc            |  184 ++
 .../grammar/DefaultGremlinBaseVisitor.java         |   56 +
 .../language/grammar/TraversalMethodVisitor.java   |   98 +
 .../traversal/dsl/graph/GraphTraversal.java        |  191 ++
 .../gremlin/process/traversal/dsl/graph/__.java    |   87 +
 .../process/traversal/step/filter/AllStep.java     |    8 +-
 .../process/traversal/step/filter/AnyStep.java     |    6 +-
 .../step/map/{LabelStep.java => AsStringStep.java} |   14 +-
 .../step/map/{LabelStep.java => LTrimStep.java}    |   31 +-
 .../map/{CountLocalStep.java => LengthStep.java}   |   31 +-
 .../step/map/{LabelStep.java => RTrimStep.java}    |   31 +-
 .../process/traversal/step/map/ReplaceStep.java    |   67 +
 .../step/map/{LabelStep.java => ReverseStep.java}  |   23 +-
 .../process/traversal/step/map/SplitStep.java      |   67 +
 .../process/traversal/step/map/SubstringStep.java  |  107 +
 .../step/map/{LabelStep.java => ToLowerStep.java}  |   23 +-
 .../step/map/{LabelStep.java => ToUpperStep.java}  |   23 +-
 .../step/map/{LabelStep.java => TrimStep.java}     |   23 +-
 .../step/sideEffect/GroupSideEffectStep.java       |   14 +-
 .../traversal/translator/PythonTranslator.java     |    3 +
 .../process/traversal/util/BytecodeHelper.java     |   22 +
 .../io/binary/types/VertexPropertySerializer.java  |    5 +-
 .../gremlin/structure/util/star/StarGraph.java     |   10 +
 .../grammar/TraversalMethodVisitorTest.java        |   40 +
 ...anGlobalStepTest.java => AsStringStepTest.java} |   31 +-
 ...{MeanGlobalStepTest.java => LTrimStepTest.java} |   24 +-
 ...MeanGlobalStepTest.java => LengthStepTest.java} |   25 +-
 ...{MeanGlobalStepTest.java => RTrimStepTest.java} |   24 +-
 ...MeanLocalStepTest.java => ReplaceStepTest.java} |   33 +-
 ...eanGlobalStepTest.java => ReverseStepTest.java} |   24 +-
 .../process/traversal/step/map/SplitStepTest.java  |   70 +
 ...leLocalStepTest.java => SubstringStepTest.java} |   46 +-
 ...eanGlobalStepTest.java => ToLowerStepTest.java} |   24 +-
 ...eanGlobalStepTest.java => ToUpperStepTest.java} |   24 +-
 .../{MeanGlobalStepTest.java => TrimStepTest.java} |   24 +-
 .../Process/Traversal/GraphTraversal.cs            |  108 +
 .../src/Gremlin.Net/Process/Traversal/__.cs        |   96 +
 .../Gremlin.Net.Benchmarks.csproj                  |    2 +-
 .../Gherkin/CommonSteps.cs                         |    1 +
 .../Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs |  130 +-
 .../Gremlin.Net.IntegrationTest.csproj             |    2 +-
 .../Gremlin.Net.Template.IntegrationTest.csproj    |    2 +-
 .../Gremlin.Net.UnitTest.csproj                    |    2 +-
 .../tinkerpop/gremlin/driver/Channelizer.java      |   90 +-
 .../apache/tinkerpop/gremlin/driver/Cluster.java   |   27 +-
 .../gremlin/driver/HandshakeInterceptor.java       |    2 +
 .../org/apache/tinkerpop/gremlin/driver/Host.java  |   14 +-
 ...akeInterceptor.java => RequestInterceptor.java} |   12 +-
 .../driver/handler/HttpGremlinRequestEncoder.java  |   92 +
 ...ecoder.java => HttpGremlinResponseDecoder.java} |   35 +-
 .../driver/handler/WebSocketClientHandler.java     |    5 +-
 gremlin-go/driver/anonymousTraversal.go            |   77 +
 gremlin-go/driver/cucumber/cucumberSteps_test.go   |    1 +
 gremlin-go/driver/cucumber/gremlin.go              |  130 +-
 gremlin-go/driver/graph.go                         |    8 +-
 gremlin-go/driver/graphTraversal.go                |   66 +
 gremlin-go/driver/translator.go                    |  365 +++
 gremlin-go/driver/translator_test.go               |  720 ++++++
 .../lib/process/graph-traversal.js                 |  121 +
 .../test/cucumber/feature-steps.js                 |    1 +
 .../gremlin-javascript/test/cucumber/gremlin.js    |  130 +-
 gremlin-language/src/main/antlr4/Gremlin.g4        | 2413 ++++++++++----------
 .../language/corpus/DocumentationReader.java       |    6 +-
 .../gremlin_python/process/graph_traversal.py      |  156 +-
 .../src/main/python/radish/feature_steps.py        |    2 +
 gremlin-python/src/main/python/radish/gremlin.py   |  130 +-
 .../handler/HttpBasicAuthorizationHandler.java     |   16 +-
 .../server/handler/HttpGremlinEndpointHandler.java |   92 +-
 .../gremlin/server/handler/HttpHandlerUtil.java    |   40 +-
 .../gremlin/server/GremlinDriverIntegrateTest.java |   32 +-
 .../gremlin/server/HttpDriverIntegrateTest.java    |  183 ++
 .../gremlin/server/authz/AllowListAuthorizer.java  |    7 +-
 .../tinkerpop/gremlin/features/StepDefinition.java |    3 +
 .../search/path/ShortestPathVertexProgramTest.java |    3 +-
 .../gremlin/test/features/filter/All.feature       |    3 +-
 .../gremlin/test/features/filter/Any.feature       |    3 +-
 .../gremlin/test/features/map/AsString.feature     |  146 ++
 .../gremlin/test/features/map/LTrim.feature        |   89 +
 .../map/{Constant.feature => Length.feature}       |   54 +-
 .../gremlin/test/features/map/MergeEdge.feature    |  253 +-
 .../gremlin/test/features/map/MergeVertex.feature  |   20 +-
 .../gremlin/test/features/map/RTrim.feature        |   89 +
 .../{filter/Is.feature => map/Replace.feature}     |   53 +-
 .../map/{Constant.feature => Reverse.feature}      |   58 +-
 .../features/map/{Fold.feature => Split.feature}   |   71 +-
 .../{filter/Is.feature => map/Substring.feature}   |   58 +-
 .../gremlin/test/features/map/ToLower.feature      |   75 +
 .../features/map/{Fold.feature => ToUpper.feature} |   70 +-
 .../gremlin/test/features/map/Trim.feature         |   77 +
 .../gremlin/test/features/sideEffect/Group.feature |  113 -
 .../test/features/sideEffect/SideEffectCap.feature |  124 +
 gremlin-tools/gremlin-socket-server/pom.xml        |    7 +
 .../tinkerpop/gremlin/util/MessageSerializer.java  |    3 +-
 .../gremlin/util/message/RequestMessage.java       |    8 +
 .../util/ser/GraphBinaryMessageSerializerV1.java   |   10 +-
 .../gremlin/util/ser/AbstractRoundTripTest.java    |   44 +-
 .../binary/GraphBinaryMessageSerializerV1Test.java |   27 +
 .../tinkergraph/structure/TinkerHelper.java        |   14 +
 102 files changed, 6717 insertions(+), 2114 deletions(-)
 copy gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/{LabelStep.java => AsStringStep.java} (75%)
 copy gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/{LabelStep.java => LTrimStep.java} (55%)
 copy gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/{CountLocalStep.java => LengthStep.java} (58%)
 copy gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/{LabelStep.java => RTrimStep.java} (54%)
 create mode 100644 gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ReplaceStep.java
 copy gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/{LabelStep.java => ReverseStep.java} (58%)
 create mode 100644 gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SplitStep.java
 create mode 100644 gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SubstringStep.java
 copy gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/{LabelStep.java => ToLowerStep.java} (58%)
 copy gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/{LabelStep.java => ToUpperStep.java} (58%)
 copy gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/{LabelStep.java => TrimStep.java} (59%)
 copy gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/{MeanGlobalStepTest.java => AsStringStepTest.java} (51%)
 copy gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/{MeanGlobalStepTest.java => LTrimStepTest.java} (67%)
 copy gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/{MeanGlobalStepTest.java => LengthStepTest.java} (66%)
 copy gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/{MeanGlobalStepTest.java => RTrimStepTest.java} (67%)
 copy gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/{MeanLocalStepTest.java => ReplaceStepTest.java} (56%)
 copy gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/{MeanGlobalStepTest.java => ReverseStepTest.java} (64%)
 create mode 100644 gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SplitStepTest.java
 copy gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/{SampleLocalStepTest.java => SubstringStepTest.java} (56%)
 copy gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/{MeanGlobalStepTest.java => ToLowerStepTest.java} (67%)
 copy gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/{MeanGlobalStepTest.java => ToUpperStepTest.java} (67%)
 copy gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/{MeanGlobalStepTest.java => TrimStepTest.java} (67%)
 copy gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/{HandshakeInterceptor.java => RequestInterceptor.java} (63%)
 create mode 100644 gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/handler/HttpGremlinRequestEncoder.java
 copy gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/handler/{WebSocketGremlinResponseDecoder.java => HttpGremlinResponseDecoder.java} (53%)
 create mode 100644 gremlin-go/driver/translator.go
 create mode 100644 gremlin-go/driver/translator_test.go
 create mode 100644 gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/HttpDriverIntegrateTest.java
 create mode 100644 gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/AsString.feature
 create mode 100644 gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/LTrim.feature
 copy gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/{Constant.feature => Length.feature} (60%)
 create mode 100644 gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/RTrim.feature
 copy gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/{filter/Is.feature => map/Replace.feature} (58%)
 copy gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/{Constant.feature => Reverse.feature} (59%)
 copy gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/{Fold.feature => Split.feature} (55%)
 copy gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/{filter/Is.feature => map/Substring.feature} (53%)
 create mode 100644 gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/ToLower.feature
 copy gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/{Fold.feature => ToUpper.feature} (56%)
 create mode 100644 gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/Trim.feature


[tinkerpop] 01/01: TINKERPOP-2978 Implement all() and any() steps.

Posted by ke...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kenhuuu pushed a commit to branch TINKERPOP-2978
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git

commit a7bf93420b4b95e5c7f66516117eb876c1fe2713
Author: Ken Hu <10...@users.noreply.github.com>
AuthorDate: Sun Aug 27 14:36:38 2023 -0700

    TINKERPOP-2978 Implement all() and any() steps.
---
 CHANGELOG.asciidoc                                 |   1 +
 .../dev/future/proposal-3-remove-closures.asciidoc |  42 +++---
 docs/src/dev/provider/gremlin-semantics.asciidoc   |  52 +++++++
 docs/src/reference/gremlin-variants.asciidoc       |   2 +-
 docs/src/reference/the-traversal.asciidoc          |  48 +++++++
 docs/src/upgrade/release-3.7.x.asciidoc            |  17 +++
 .../grammar/DefaultGremlinBaseVisitor.java         |   8 ++
 .../language/grammar/TraversalMethodVisitor.java   |  16 +++
 .../traversal/dsl/graph/GraphTraversal.java        |  30 ++++
 .../gremlin/process/traversal/dsl/graph/__.java    |  10 ++
 .../process/traversal/step/filter/AllStep.java     |  87 ++++++++++++
 .../process/traversal/step/filter/AnyStep.java     |  87 ++++++++++++
 .../traversal/translator/PythonTranslator.java     |   6 +
 .../process/traversal/util/BytecodeHelper.java     |   4 +
 .../grammar/TraversalMethodVisitorTest.java        |   9 ++
 .../process/traversal/step/filter/AllStepTest.java |  88 ++++++++++++
 .../process/traversal/step/filter/AnyStepTest.java |  92 ++++++++++++
 .../Process/Traversal/GraphTraversal.cs            |  18 +++
 .../src/Gremlin.Net/Process/Traversal/__.cs        |  16 +++
 .../Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs |  24 ++++
 gremlin-go/driver/anonymousTraversal.go            |  14 ++
 gremlin-go/driver/cucumber/gremlin.go              |  24 ++++
 gremlin-go/driver/graphTraversal.go                |  12 ++
 .../lib/process/graph-traversal.js                 |  22 +++
 .../gremlin-javascript/test/cucumber/gremlin.js    |  24 ++++
 gremlin-language/src/main/antlr4/Gremlin.g4        |  10 ++
 .../gremlin_python/process/graph_traversal.py      |  16 +++
 gremlin-python/src/main/python/radish/gremlin.py   |  24 ++++
 .../gremlin/test/features/filter/All.feature       | 151 ++++++++++++++++++++
 .../gremlin/test/features/filter/Any.feature       | 155 +++++++++++++++++++++
 30 files changed, 1082 insertions(+), 27 deletions(-)

diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 97cca16633..5027dd9640 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -30,6 +30,7 @@ This release also includes changes from <<release-3-6-5, 3.6.6>> and <<release-3
 * Added the `trim()`, `lTrim()`, `rTrim()`, and `reverse()` steps to perform `String` manipulations.
 * Added `replace()`, `split()` and `substring()` steps to perform `String` manipulations.
 * Checked graph features for meta-property support before trying to serialize them in `VertexPropertySerializer` for GraphBinary.
+* Added list filtering functions `all` and `any`.
 
 [[release-3-7.0]]
 === TinkerPop 3.7.0 (Release Date: July 31, 2023)
diff --git a/docs/src/dev/future/proposal-3-remove-closures.asciidoc b/docs/src/dev/future/proposal-3-remove-closures.asciidoc
index 12806a258b..90d1ed60c8 100644
--- a/docs/src/dev/future/proposal-3-remove-closures.asciidoc
+++ b/docs/src/dev/future/proposal-3-remove-closures.asciidoc
@@ -1087,64 +1087,54 @@ g.inject([1,2]).product([3,4])
 
 === `any()` [[any_list]]
 
-Returns true if any items in the array `value` exist in the input
+Allows the traverser to continue if any items in the array pass the
+supplied predicate.
 
 ==== Signature(s)
 
-`any(value)`
-
-`any(Traversal)`
+`any(Predicate)`
 
 ==== Parameters
 
-* value - An array of the items to check in the incoming list
+* Predicate - The predicate to use to test the values in the array
 
 ==== Allowed incoming traverser types
 
-Array data types. If non-array data types are passed in then an
-`IllegalArgumentException` will be thrown
+Array data types. All other types will be filtered out.
 
 ==== Expected Output
 
-True if any values from one list are in the other, False otherwise
+The arrays which have any item pass the predicate.
 
 ....
-g.inject([1,2]).any([1])
-==>true
-g.inject([1,2]).any([3])
-==>false
+g.inject([1,2]).any(P.eq(1))
+==>[1,2]
 ....
 
 === `all()` [[all_list]]
 
-Returns true if all items in the array `value` exist in the input
+Allows the traverser to continue if all items in the array pass the
+supplied predicate.
 
 ==== Signature(s)
 
-`all(value)`
-
-`all(Traversal)`
+`all(Predicate)`
 
 ==== Parameters
 
-* value - An array of the items to check in the incoming list
+* Predicate - The predicate to use to test the values in the array
 
 ==== Allowed incoming traverser types
 
-Array data types. If non-array data types are passed in then an
-`IllegalArgumentException` will be thrown
+Array data types. All other types will be filtered out.
 
 ==== Expected Output
 
-True if all values from one list are in the other, False otherwise
+The arrays which have all items pass the predicate.
 
 ....
-g.inject([1,2]).all([1])
-==>true
-g.inject([1,2]).all([1, 3])
-==>false
-g.inject([1,2]).all([3])
-==>false
+g.inject([1,2]).all(P.gt(0))
+==>[1,2]
 ....
 
 === `none()` [[none_list]]
diff --git a/docs/src/dev/provider/gremlin-semantics.asciidoc b/docs/src/dev/provider/gremlin-semantics.asciidoc
index d24339d6a7..bed99bdaa3 100644
--- a/docs/src/dev/provider/gremlin-semantics.asciidoc
+++ b/docs/src/dev/provider/gremlin-semantics.asciidoc
@@ -524,6 +524,58 @@ fully demonstrative of Gremlin step semantics. It is also hard to simply read th
 step is meant to behave. This section discusses the semantics for individual steps to help users and providers
 understand implementation expectations.
 
+[[all-step]]
+=== all()
+
+*Description:* Filters array data from the Traversal Stream if all of the array's items match the supplied predicate.
+
+*Syntax:* `all(Predicate)`
+
+[width="100%",options="header"]
+|=========================================================
+|Start Step |Mid Step |Modulated |Domain |Range
+|N |Y |N |`List`/`array`/`Iterable`/`Iterator` |`List`/`array`/`Iterable`/`Iterator`
+|=========================================================
+
+*Arguments:*
+
+* `Predicate` - The predicate to use to test each value in the array data.
+
+*Modulation:*
+
+None
+
+*Considerations:*
+
+Each value will be tested using the supplied predicate with any ERROR state being reduced to FALSE. Empty lists always
+pass through and null/non-list traversers will be filtered out of the Traversal Stream.
+
+[[any-step]]
+=== any()
+
+*Description:* Filters array data from the Traversal Stream if any of the array's items match the supplied predicate.
+
+*Syntax:* `any(Predicate)`
+
+[width="100%",options="header"]
+|=========================================================
+|Start Step |Mid Step |Modulated |Domain |Range
+|N |Y |N |`List`/`array`/`Iterable`/`Iterator` |`List`/`array`/`Iterable`/`Iterator`
+|=========================================================
+
+*Arguments:*
+
+* `Predicate` - The predicate to use to test each value in the array data.
+
+*Modulation:*
+
+None
+
+*Considerations:*
+
+Each value will be tested using the supplied predicate with any ERROR state being reduced to FALSE. Empty lists, null
+traversers, and non-list traversers will be filtered out of the Traversal Stream.
+
 [[asString-step]]
 === asString()
 
diff --git a/docs/src/reference/gremlin-variants.asciidoc b/docs/src/reference/gremlin-variants.asciidoc
index 9f3e781d21..12bacab337 100644
--- a/docs/src/reference/gremlin-variants.asciidoc
+++ b/docs/src/reference/gremlin-variants.asciidoc
@@ -2468,7 +2468,7 @@ that makes traversals a bit more concise.
 In situations where Python reserved words and global functions overlap with standard Gremlin steps and tokens, those
 bits of conflicting Gremlin get an underscore appended as a suffix:
 
-*Steps* - <<and-step,and_()>>, <<as-step,as_()>>, <<filter-step,filter_()>>, <<from-step,from_()>>,
+*Steps* - <<all-step,all_()>>, <<and-step,and_()>>, <<any-step,any_()>>, <<as-step,as_()>>, <<filter-step,filter_()>>, <<from-step,from_()>>,
 <<has-step,has_key_>>, <<id-step,id_()>>, <<is-step,is_()>>, <<in-step,in_()>>, <<max-step,max_()>>,
 <<min-step,min_()>>, <<not-step,not_()>>, <<or-step,or_()>>, <<range-step,range_()>>, <<sum-step,sum_()>>,
 <<with-step,with_()>>
diff --git a/docs/src/reference/the-traversal.asciidoc b/docs/src/reference/the-traversal.asciidoc
index d6ea05dcab..7fb80903a4 100644
--- a/docs/src/reference/the-traversal.asciidoc
+++ b/docs/src/reference/the-traversal.asciidoc
@@ -657,6 +657,30 @@ g.E().aggregate(local,'x').by('weight').cap('x')
 link:++https://tinkerpop.apache.org/javadocs/x.y.z/core/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.html#aggregate-java.lang.String-++[`aggregate(String)`],
 link:++https://tinkerpop.apache.org/javadocs/x.y.z/core/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.html#aggregate-org.apache.tinkerpop.gremlin.process.traversal.Scope,java.lang.String-++[`aggregate(Scope,String)`]
 
+[[all-step]]
+=== All Step
+
+It is possible to filter list traversers using `all()`-step (*filter*). Every item in the list will be tested against
+the supplied predicate and if all of the items pass then the traverser is passed along the stream, otherwise it is
+filtered. Empty lists are passed along but null or non-iterable traversers are filtered out.
+
+[NOTE, caption=Python]
+====
+The term `all` is a reserved word in Python, and therefore must be referred to in Gremlin with `all_()`.
+====
+
+[gremlin-groovy,modern]
+----
+g.V().values('age').fold().all(gt(25)) <1>
+----
+
+<1> Return the list of ages only if everyone's age is greater than 25.
+
+*Additional References*
+
+link:++https://tinkerpop.apache.org/javadocs/x.y.z/core/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.html#all-org.apache.tinkerpop.gremlin.process.traversal.P-++[`all(P)`],
+link:++https://tinkerpop.apache.org/javadocs/x.y.z/core/org/apache/tinkerpop/gremlin/process/traversal/P.html++[`P`]
+
 [[and-step]]
 === And Step
 
@@ -689,6 +713,30 @@ g.V().where(outE('created').and().outE('knows')).values('name')
 
 link:++https://tinkerpop.apache.org/javadocs/x.y.z/core/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.html#and-org.apache.tinkerpop.gremlin.process.traversal.Traversal...-++[`and(Traversal...)`]
 
+[[any-step]]
+=== Any Step
+
+It is possible to filter list traversers using `any()`-step (*filter*). All items in the list will be tested against
+the supplied predicate and if any of the items pass then the traverser is passed along the stream, otherwise it is
+filtered. Empty lists, null traversers, and non-iterable traversers are filtered out as well.
+
+[NOTE, caption=Python]
+====
+The term `any` is a reserved word in Python, and therefore must be referred to in Gremlin with `any_()`.
+====
+
+[gremlin-groovy,modern]
+----
+g.V().values('age').fold().any(gt(25)) <1>
+----
+
+<1> Return the list of ages if anyone's age is greater than 25.
+
+*Additional References*
+
+link:++https://tinkerpop.apache.org/javadocs/x.y.z/core/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.html#any-org.apache.tinkerpop.gremlin.process.traversal.P-++[`any(P)`],
+link:++https://tinkerpop.apache.org/javadocs/x.y.z/core/org/apache/tinkerpop/gremlin/process/traversal/P.html++[`P`]
+
 [[as-step]]
 === As Step
 
diff --git a/docs/src/upgrade/release-3.7.x.asciidoc b/docs/src/upgrade/release-3.7.x.asciidoc
index d905efd784..fadbd77585 100644
--- a/docs/src/upgrade/release-3.7.x.asciidoc
+++ b/docs/src/upgrade/release-3.7.x.asciidoc
@@ -213,6 +213,23 @@ See: link:https://tinkerpop.apache.org/docs/x.y.z/reference/#split-step[split()-
 See: link:https://tinkerpop.apache.org/docs/x.y.z/reference/#substring-step[substring()-step]
 See: link:https://issues.apache.org/jira/browse/TINKERPOP-2672[TINKERPOP-2672]
 
+==== List Traverser based Steps
+Additional List manipulation/filter steps have been added to replace the use of closures: `any()` and `all()`.
+
+The following example demonstrates usage of the newly introduced steps:
+
+[source,text]
+----
+gremlin> g.V().values("age").fold().all(P.gt(10))
+==>[29,27,32,35]
+gremlin> g.V().values("age").fold().any(P.eq(32))
+==>[29,27,32,35]
+----
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-2978[TINKERPOP-2978],
+link:https://tinkerpop.apache.org/docs/x.y.z/reference/#all-step[all()-step],
+link:https://tinkerpop.apache.org/docs/x.y.z/reference/#any-step[any()-step]
+
 === Upgrading for Providers
 
 ==== Graph System Providers
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/DefaultGremlinBaseVisitor.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/DefaultGremlinBaseVisitor.java
index 857a80dc80..3fb3fb2fb8 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/DefaultGremlinBaseVisitor.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/DefaultGremlinBaseVisitor.java
@@ -195,10 +195,18 @@ public class DefaultGremlinBaseVisitor<T> extends AbstractParseTreeVisitor<T> im
 	 * {@inheritDoc}
 	 */
 	@Override public T visitTraversalMethod_aggregate_Scope_String(final GremlinParser.TraversalMethod_aggregate_Scope_StringContext ctx) { notImplemented(ctx); return null; }
+	/**
+	 * {@inheritDoc}
+	 */
+	@Override public T visitTraversalMethod_all_P(final GremlinParser.TraversalMethod_all_PContext ctx) { notImplemented(ctx); return null; }
 	/**
 	 * {@inheritDoc}
 	 */
 	@Override public T visitTraversalMethod_and(final GremlinParser.TraversalMethod_andContext ctx) { notImplemented(ctx); return null; }
+	/**
+	 * {@inheritDoc}
+	 */
+	@Override public T visitTraversalMethod_any_P(final GremlinParser.TraversalMethod_any_PContext ctx) { notImplemented(ctx); return null; }
 	/**
 	 * {@inheritDoc}
 	 */
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalMethodVisitor.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalMethodVisitor.java
index 937c14396c..1245c002d5 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalMethodVisitor.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalMethodVisitor.java
@@ -177,6 +177,14 @@ public class TraversalMethodVisitor extends TraversalRootVisitor<GraphTraversal>
                 antlr.argumentVisitor.parseString(ctx.stringArgument()));
     }
 
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public GraphTraversal visitTraversalMethod_all_P(final GremlinParser.TraversalMethod_all_PContext ctx) {
+        return graphTraversal.all(antlr.traversalPredicateVisitor.visitTraversalPredicate(ctx.traversalPredicate()));
+    }
+
     /**
      * {@inheritDoc}
      */
@@ -186,6 +194,14 @@ public class TraversalMethodVisitor extends TraversalRootVisitor<GraphTraversal>
                 antlr.tListVisitor.visitNestedTraversalList(ctx.nestedTraversalList()));
     }
 
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public GraphTraversal visitTraversalMethod_any_P(final GremlinParser.TraversalMethod_any_PContext ctx) {
+        return graphTraversal.any(antlr.traversalPredicateVisitor.visitTraversalPredicate(ctx.traversalPredicate()));
+    }
+
     /**
      * {@inheritDoc}
      */
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
index 43cd726dea..3d0688e8de 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
@@ -56,7 +56,9 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.branch.LocalStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.branch.OptionalStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.branch.RepeatStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.branch.UnionStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.AllStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.filter.AndStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.AnyStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.filter.CoinStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.filter.ConnectiveStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.filter.DedupGlobalStep;
@@ -2449,6 +2451,32 @@ public interface GraphTraversal<S, E> extends Traversal<S, E> {
         return this.asAdmin().addStep(new DropStep<>(this.asAdmin()));
     }
 
+    /**
+     * Filters <code>E</code> lists given the provided {@code predicate}.
+     *
+     * @param predicate the filter to apply
+     * @return the traversal with an appended {@link AllStep}
+     * @see <a href="http://tinkerpop.apache.org/docs/${project.version}/reference/#all-step" target="_blank">Reference Documentation - All Step</a>
+     * @since 3.7.1
+     */
+    public default <S2> GraphTraversal<S, E> all(final P<S2> predicate) {
+        this.asAdmin().getBytecode().addStep(Symbols.all, predicate);
+        return this.asAdmin().addStep(new AllStep<>(this.asAdmin(), predicate));
+    }
+
+    /**
+     * Filters <code>E</code> lists given the provided {@code predicate}.
+     *
+     * @param predicate the filter to apply
+     * @return the traversal with an appended {@link AnyStep}
+     * @see <a href="http://tinkerpop.apache.org/docs/${project.version}/reference/#any-step" target="_blank">Reference Documentation - Any Step</a>
+     * @since 3.7.1
+     */
+    public default <S2> GraphTraversal<S, E> any(final P<S2> predicate) {
+        this.asAdmin().getBytecode().addStep(Symbols.any, predicate);
+        return this.asAdmin().addStep(new AnyStep<>(this.asAdmin(), predicate));
+    }
+
     ///////////////////// SIDE-EFFECT STEPS /////////////////////
 
     /**
@@ -3691,6 +3719,8 @@ public interface GraphTraversal<S, E> extends Traversal<S, E> {
         public static final String replace = "replace";
         public static final String substring = "substring";
         public static final String split = "split";
+        public static final String all = "all";
+        public static final String any = "any";
 
         public static final String timeLimit = "timeLimit";
         public static final String simplePath = "simplePath";
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java
index 60fc630261..b86a3fdf13 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java
@@ -1019,6 +1019,16 @@ public class __ {
         return __.<A>start().drop();
     }
 
+    /**
+     * @see GraphTraversal#all(P)
+     */
+    public static <A> GraphTraversal<A, A> all(final P<A> predicate) { return __.<A>start().all(predicate); }
+
+    /**
+     * @see GraphTraversal#any(P)
+     */
+    public static <A> GraphTraversal<A, A> any(final P<A> predicate) { return __.<A>start().any(predicate); }
+
     ///////////////////// SIDE-EFFECT STEPS /////////////////////
 
     /**
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/AllStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/AllStep.java
new file mode 100644
index 0000000000..6f002bbea6
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/AllStep.java
@@ -0,0 +1,87 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.process.traversal.step.filter;
+
+import org.apache.tinkerpop.gremlin.process.traversal.GremlinTypeErrorException;
+import org.apache.tinkerpop.gremlin.process.traversal.P;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
+import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
+import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
+import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
+
+import java.util.EnumSet;
+import java.util.Iterator;
+import java.util.Set;
+
+public final class AllStep<S, S2> extends FilterStep<S> {
+
+    private P<S2> predicate;
+
+    public AllStep(final Traversal.Admin traversal, final P<S2> predicate) {
+        super(traversal);
+
+        if (null == predicate) {
+            throw new IllegalArgumentException("Input predicate to all step can't be null.");
+        }
+
+        this.predicate = predicate;
+    }
+
+    @Override
+    protected boolean filter(final Traverser.Admin<S> traverser) {
+        final S item = traverser.get();
+
+        if (item instanceof Iterable || item instanceof Iterator || ((item != null) && item.getClass().isArray())) {
+            GremlinTypeErrorException typeError = null;
+            final Iterator<S2> iterator = IteratorUtils.asIterator(item);
+            while (iterator.hasNext()) {
+                try {
+                    if (!this.predicate.test(iterator.next())) {
+                        return false;
+                    }
+                } catch (GremlinTypeErrorException gtee) {
+                    // hold onto it until the end in case any other element evaluates to FALSE
+                    typeError = gtee;
+                }
+            }
+            if (typeError != null) throw typeError;
+            return true;
+        }
+
+        return false;
+    }
+
+    @Override
+    public String toString() {
+        return StringFactory.stepString(this, this.predicate);
+    }
+
+    @Override
+    public AllStep<S, S2> clone() {
+        final AllStep<S, S2> clone = (AllStep<S, S2>) super.clone();
+        clone.predicate = this.predicate.clone();
+        return clone;
+    }
+
+    @Override
+    public Set<TraverserRequirement> getRequirements() {
+        return EnumSet.of(TraverserRequirement.OBJECT);
+    }
+}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/AnyStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/AnyStep.java
new file mode 100644
index 0000000000..4144dd5d66
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/AnyStep.java
@@ -0,0 +1,87 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.process.traversal.step.filter;
+
+import org.apache.tinkerpop.gremlin.process.traversal.GremlinTypeErrorException;
+import org.apache.tinkerpop.gremlin.process.traversal.P;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
+import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
+import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
+import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
+
+import java.util.EnumSet;
+import java.util.Iterator;
+import java.util.Set;
+
+public final class AnyStep<S, S2> extends FilterStep<S> {
+
+    private P<S2> predicate;
+
+    public AnyStep(final Traversal.Admin traversal, final P<S2> predicate) {
+        super(traversal);
+
+        if (null == predicate) {
+            throw new IllegalArgumentException("Input predicate to any step can't be null.");
+        }
+
+        this.predicate = predicate;
+    }
+
+    @Override
+    protected boolean filter(final Traverser.Admin<S> traverser) {
+        final S item = traverser.get();
+
+        if (item instanceof Iterable || item instanceof Iterator || ((item != null) && item.getClass().isArray())) {
+            GremlinTypeErrorException typeError = null;
+            final Iterator<S2> iterator = IteratorUtils.asIterator(item);
+            while (iterator.hasNext()) {
+                try {
+                    if (this.predicate.test(iterator.next())) {
+                        return true;
+                    }
+                } catch (GremlinTypeErrorException gtee) {
+                    // hold onto it until the end in case any other element evaluates to TRUE
+                    typeError = gtee;
+                }
+            }
+
+            if (typeError != null) throw typeError;
+        }
+
+        return false;
+    }
+
+    @Override
+    public String toString() {
+        return StringFactory.stepString(this, this.predicate);
+    }
+
+    @Override
+    public AnyStep<S, S2> clone() {
+        final AnyStep<S, S2> clone = (AnyStep<S, S2>) super.clone();
+        clone.predicate = this.predicate.clone();
+        return clone;
+    }
+
+    @Override
+    public Set<TraverserRequirement> getRequirements() {
+        return EnumSet.of(TraverserRequirement.OBJECT);
+    }
+}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/translator/PythonTranslator.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/translator/PythonTranslator.java
index aa325b36d9..b9fc40f35d 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/translator/PythonTranslator.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/translator/PythonTranslator.java
@@ -199,6 +199,11 @@ public final class PythonTranslator implements Translator.ScriptTranslator {
 
         @Override
         protected String getSyntax(final Pick o) {
+            if (o.equals(Pick.any)) {
+                // We don't want this getting resolved to Pick.any_ due to any() being a built-in function in Python.
+                return "Pick.any";
+            }
+
             return "Pick." + resolveSymbol(o.toString());
         }
 
@@ -429,6 +434,7 @@ public final class PythonTranslator implements Translator.ScriptTranslator {
             TO_PYTHON_MAP.put("global", "global_");
             TO_PYTHON_MAP.put("all", "all_");
             TO_PYTHON_MAP.put("and", "and_");
+            TO_PYTHON_MAP.put("any", "any_");
             TO_PYTHON_MAP.put("as", "as_");
             TO_PYTHON_MAP.put("asString", "as_string");
             TO_PYTHON_MAP.put("filter", "filter_");
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/BytecodeHelper.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/BytecodeHelper.java
index 8d539e1268..d85227da75 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/BytecodeHelper.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/BytecodeHelper.java
@@ -42,7 +42,9 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.branch.LocalStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.branch.OptionalStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.branch.RepeatStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.branch.UnionStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.AllStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.filter.AndStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.AnyStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.filter.CoinStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.filter.DedupGlobalStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.filter.DropStep;
@@ -220,6 +222,8 @@ public final class BytecodeHelper {
             put(GraphTraversal.Symbols.replace, Collections.singletonList(ReplaceStep.class));
             put(GraphTraversal.Symbols.substring, Collections.singletonList(SubstringStep.class));
             put(GraphTraversal.Symbols.split, Collections.singletonList(SplitStep.class));
+            put(GraphTraversal.Symbols.all, Collections.singletonList(AllStep.class));
+            put(GraphTraversal.Symbols.any, Collections.singletonList(AnyStep.class));
             put(GraphTraversal.Symbols.group, Arrays.asList(GroupStep.class, GroupSideEffectStep.class));
             put(GraphTraversal.Symbols.groupCount, Arrays.asList(GroupCountStep.class, GroupCountSideEffectStep.class));
             put(GraphTraversal.Symbols.tree, Arrays.asList(TreeStep.class, TreeSideEffectStep.class));
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalMethodVisitorTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalMethodVisitorTest.java
index f89d047c3b..a4c4ddd33f 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalMethodVisitorTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalMethodVisitorTest.java
@@ -116,11 +116,20 @@ public class TraversalMethodVisitorTest {
         compare(g.V().aggregate(Scope.local, "test"), eval("g.V().aggregate(Scope.local, 'test')"));
     }
 
+    @Test
+    public void shouldParseTraversalMethod_all_P() throws Exception {
+        compare(g.V().id().fold().all(gt(1)), eval("g.V().id().fold().all(gt(1))"));
+    }
+
     @Test
     public void shouldParseTraversalMethod_and() throws Exception {
         compare(g.V().and(outE("knows")), eval("g.V().and(outE('knows'))"));
     }
 
+    @Test
+    public void shouldParseTraversalMethod_any_P() throws Exception {
+        compare(g.V().id().fold().any(gt(1)), eval("g.V().id().fold().any(gt(1))"));
+    }
     @Test
     public void shouldParseTraversalMethod_as() throws Exception {
         compare(g.V().as("test"), eval("g.V().as('test')"));
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/AllStepTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/AllStepTest.java
new file mode 100644
index 0000000000..02b976bd92
--- /dev/null
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/AllStepTest.java
@@ -0,0 +1,88 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.process.traversal.step.filter;
+
+import org.apache.tinkerpop.gremlin.process.traversal.P;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
+import org.apache.tinkerpop.gremlin.process.traversal.step.StepTest;
+import org.junit.Test;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThrows;
+import static org.junit.Assert.assertTrue;
+
+public class AllStepTest extends StepTest {
+
+    @Override
+    protected List<Traversal> getTraversals() { return Collections.singletonList(__.all(P.gt(0))); }
+
+    @Test
+    public void testReturnTypes() {
+        assertTrue(__.__(new int[]{}).all(P.gt(7)).hasNext());
+        assertArrayEquals(new int[] {7, 10}, __.__(new int[] {5, 8, 10}, new int[] {7, 10}).all(P.gte(7)).next());
+        assertArrayEquals(new long[] {7L, 10L}, __.__(new long[] {5L, 8L, 10L}, new long[] {7L, 10L}).all(P.gte(7)).next());
+        assertArrayEquals(new double[] {7.1, 10.5}, __.__(new double[] {5.5, 8.0, 10.1}, new double[] {7.1, 10.5}).all(P.gte(7.0)).next(), 0.01);
+    }
+
+    @Test
+    public void testNullParameter() {
+        final Throwable thrown = assertThrows(IllegalArgumentException.class, () -> __.__(new int[]{1}).all(null).hasNext());
+        assertEquals("Input predicate to all step can't be null.", thrown.getMessage());
+    }
+
+    @Test
+    public void testSetTraverser() {
+        final Set<Integer> numbers = new HashSet<>();
+        numbers.add(10);
+        numbers.add(11);
+
+        assertTrue(__.__(numbers).all(P.gt(7)).hasNext());
+    }
+
+    @Test
+    public void testListIteratorTraverser() {
+        final List<Integer> numbers = new ArrayList<>();
+        numbers.add(10);
+        numbers.add(11);
+
+        assertTrue(__.__(numbers.iterator()).all(P.gte(10)).hasNext());
+    }
+
+    @Test
+    public void testCornerCases() {
+        final List validOne = new ArrayList() {{ add(20); }};
+        final List validTwo = new ArrayList() {{ add(21); add(25);}};
+        final List validThree = new ArrayList() {{ add(51); add(57); add(71); }};
+        final List containsNull = new ArrayList() {{ add(50); add(null); add(60); }};
+        final List empty = new ArrayList();
+        final List incorrectType = new ArrayList() {{ add(100); add("25"); }};
+        final List valueTooSmall = new ArrayList() {{ add(101); add(1); add(10);}};
+
+        assertEquals(4L, __.__(validOne, null, containsNull, empty, incorrectType, valueTooSmall, validTwo, validThree)
+                        .all(P.gt(3)).count().next().longValue());
+    }
+}
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/AnyStepTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/AnyStepTest.java
new file mode 100644
index 0000000000..46355a57e0
--- /dev/null
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/AnyStepTest.java
@@ -0,0 +1,92 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.process.traversal.step.filter;
+
+import org.apache.tinkerpop.gremlin.process.traversal.P;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
+import org.apache.tinkerpop.gremlin.process.traversal.step.StepTest;
+import org.junit.Test;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertThrows;
+import static org.junit.Assert.assertTrue;
+
+public class AnyStepTest extends StepTest {
+
+    @Override
+    protected List<Traversal> getTraversals() { return Collections.singletonList(__.any(P.gt(0))); }
+
+    @Test
+    public void testReturnTypes() {
+        assertFalse(__.__(new int[] {}).any(P.gt(7)).hasNext());
+        assertArrayEquals(new int[] {7, 10}, __.__(new int[] {3, 5, 6}, new int[] {7, 10}).any(P.gte(7)).next());
+        assertArrayEquals(new long[] {7L, 10L}, __.__(new long[] {3L, 5L, 6L}, new long[] {7L, 10L}).any(P.gte(7)).next());
+        assertArrayEquals(new double[] {7.7, 10.1}, __.__(new double[] {3.3, 5.791739562, 6.1082}, new double[] {7.7, 10.1}).any(P.gte(7)).next(), 0.01);
+        assertArrayEquals(new Object[] {2, "hello", 10L}, __.__(new Object[] {3.6, "other"}, new Object[] {2, "hello", 10L}).any(P.gte(7)).next());
+    }
+
+    @Test
+    public void testNullParameter() {
+        final Throwable thrown = assertThrows(IllegalArgumentException.class, () -> __.__(new int[]{1}).any(null).hasNext());
+        assertEquals("Input predicate to any step can't be null.", thrown.getMessage());
+    }
+
+    @Test
+    public void testSetTraverser() {
+        final Set<Integer> numbers = new HashSet<>();
+        numbers.add(10);
+        numbers.add(11);
+
+        assertTrue(__.__(numbers).any(P.eq(10)).hasNext());
+    }
+
+    @Test
+    public void testListIteratorTraverser() {
+        final List<Integer> numbers = new ArrayList<>();
+        numbers.add(10);
+        numbers.add(11);
+
+        assertTrue(__.__(numbers.iterator()).any(P.eq(11)).hasNext());
+    }
+
+    @Test
+    public void testCornerCases() {
+        final List validOne = new ArrayList() {{ add(20); }};
+        final List validTwo = new ArrayList() {{ add(21); add(25);}};
+        final List validThree = new ArrayList() {{ add(51); add(57); add(71); }};
+        final List validFour = new ArrayList() {{ add(1); add(2); add(10); }};
+        final List invalidOne = new ArrayList() {{ add(0); add(1); }};
+        final List containsNull = new ArrayList() {{ add(50); add(null); add(60); }};
+        final List empty = new ArrayList();
+        final List incorrectType = new ArrayList() {{ add(100); add("25"); }};
+        final List valueTooSmall = new ArrayList() {{ add(101); add(1); add(10);}};
+
+        assertEquals(7L, __.__(validOne, null, containsNull, empty, incorrectType, validFour, invalidOne, valueTooSmall, validTwo, validThree)
+                        .any(P.gt(3)).count().next().longValue());
+    }
+}
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs
index 9a0a955700..4bba548c84 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs
@@ -177,6 +177,15 @@ namespace Gremlin.Net.Process.Traversal
             return Wrap<TStart, TEnd>(this);
         }
 
+        /// <summary>
+        ///     Adds the all step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
+        public GraphTraversal<TStart, TEnd> All (P? predicate)
+        {
+            Bytecode.AddStep("all", predicate);
+            return Wrap<TStart, TEnd>(this);
+        }
+
         /// <summary>
         ///     Adds the and step to this <see cref="GraphTraversal{SType, EType}" />.
         /// </summary>
@@ -190,6 +199,15 @@ namespace Gremlin.Net.Process.Traversal
             return Wrap<TStart, TEnd>(this);
         }
 
+        /// <summary>
+        ///     Adds the any step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
+        public GraphTraversal<TStart, TEnd> Any (P? predicate)
+        {
+            Bytecode.AddStep("any", predicate);
+            return Wrap<TStart, TEnd>(this);
+        }
+
         /// <summary>
         ///     Adds the as step to this <see cref="GraphTraversal{SType, EType}" />.
         /// </summary>
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs
index c1dc67e409..411b31fa87 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs
@@ -115,6 +115,14 @@ namespace Gremlin.Net.Process.Traversal
             return new GraphTraversal<object, object>().Aggregate(sideEffectKey);            
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> all adds the all step to that traversal.
+        /// </summary>
+        public static GraphTraversal<object, object> All(P? predicate)
+        {
+            return new GraphTraversal<object, object>().All(predicate);
+        }
+
         /// <summary>
         ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the and step to that traversal.
         /// </summary>
@@ -125,6 +133,14 @@ namespace Gremlin.Net.Process.Traversal
                 : new GraphTraversal<object, object>().And(andTraversals);            
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> any adds the any step to that traversal.
+        /// </summary>
+        public static GraphTraversal<object, object> Any(P? predicate)
+        {
+            return new GraphTraversal<object, object>().Any(predicate);
+        }
+
         /// <summary>
         ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the as step to that traversal.
         /// </summary>
diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs
index 93b5a6a11c..6c615108c9 100644
--- a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs
@@ -130,11 +130,35 @@ namespace Gremlin.Net.IntegrationTest.Gherkin
                {"g_VX1_2X_unionXoutE_count__inE_count__outE_weight_sumX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid1"],p["vid2"]).Union<object>(__.OutE().Count(),__.InE().Count(),__.OutE().Values<object>("weight").Sum<object>())}}, 
                {"g_VX1_2X_localXunionXoutE_count__inE_count__outE_weight_sumXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid1"],p["vid2"]).Local<object>(__.Union<object>(__.OutE().Count(),__.InE().Count(),__.OutE().Values<object>("weight").Sum<object>()))}}, 
                {"g_VX1_2X_localXunionXcountXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid1"],p["vid2"]).Local<object>(__.Union<object>(__.Count()))}}, 
+               {"g_V_valuesXageX_allXgtX32XX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Values<object>("age").All(P.Gt(32))}}, 
+               {"g_V_valuesXageX_whereXisXP_gtX33XXX_fold_allXgtX33XX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Values<object>("age").Where(__.Is(P.Gt(33))).Fold().All(P.Gt(33))}}, 
+               {"g_V_valuesXageX_order_byXdescX_fold_allXgtX10XX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Values<object>("age").Order().By(Order.Desc).Fold().All(P.Gt(10))}}, 
+               {"g_V_valuesXageX_order_byXdescX_fold_allXgtX30XX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Values<object>("age").Order().By(Order.Desc).Fold().All(P.Gt(30))}}, 
+               {"g_injectXabc_bcdX_allXeqXbcdXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject(p["xx1"]).All(P.Eq("bcd"))}}, 
+               {"g_injectXbcd_bcdX_allXeqXbcdXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject(p["xx1"]).All(P.Eq("bcd"))}}, 
+               {"g_injectXnull_abcX_allXTextP_startingWithXaXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject(p["xx1"]).All(TextP.StartingWith("a"))}}, 
+               {"g_injectX5_8_10_10_7X_allXgteX7XX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject(p["xx1"],p["xx2"]).All(P.Gte(7))}}, 
+               {"g_injectXnullX_allXeqXnullXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject<object>(null).All(P.Eq(null))}}, 
+               {"g_injectX7X_allXeqX7XX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject(7).All(P.Eq(7))}}, 
+               {"g_injectXnull_nullX_allXeqXnullXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject(p["xx1"]).All(P.Eq(null))}}, 
+               {"g_injectX3_threeX_allXeqX3XX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject(p["xx1"]).All(P.Eq(3))}}, 
                {"g_V_andXhasXage_gt_27X__outE_count_gte_2X_name", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().And(__.Has("age",P.Gt(27)),__.OutE().Count().Is(P.Gte(2))).Values<object>("name")}}, 
                {"g_V_andXoutE__hasXlabel_personX_and_hasXage_gte_32XX_name", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().And(__.OutE(),__.Has(T.Label,"person").And().Has("age",P.Gte(32))).Values<object>("name")}}, 
                {"g_V_asXaX_outXknowsX_and_outXcreatedX_inXcreatedX_asXaX_name", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().As("a").Out("knows").And().Out("created").In("created").As("a").Values<object>("name")}}, 
                {"g_V_asXaX_andXselectXaX_selectXaXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().As("a").And(__.Select<object>("a"),__.Select<object>("a"))}}, 
                {"g_V_hasXname_markoX_and_hasXname_markoX_and_hasXname_markoX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("name","marko").And().Has("name","marko").And().Has("name","marko")}}, 
+               {"g_V_valuesXageX_anyXgtX32XX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Values<object>("age").Any(P.Gt(32))}}, 
+               {"g_V_valuesXageX_order_byXdescX_fold_anyXeqX29XX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Values<object>("age").Order().By(Order.Desc).Fold().Any(P.Eq(29))}}, 
+               {"g_V_valuesXageX_order_byXdescX_fold_anyXgtX10XX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Values<object>("age").Order().By(Order.Desc).Fold().Any(P.Gt(10))}}, 
+               {"g_V_valuesXageX_order_byXdescX_fold_anyXgtX42XX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Values<object>("age").Order().By(Order.Desc).Fold().Any(P.Gt(42))}}, 
+               {"g_injectXabc_cdeX_anyXeqXbcdXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject(p["xx1"]).Any(P.Eq("bcd"))}}, 
+               {"g_injectXabc_bcdX_anyXeqXbcdXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject(p["xx1"]).Any(P.Eq("bcd"))}}, 
+               {"g_injectXnull_abcX_anyXTextP_startingWithXaXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject(p["xx1"]).Any(TextP.StartingWith("a"))}}, 
+               {"g_injectX5_8_10_10_7X_anyXeqX7XX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject(p["xx1"],p["xx2"]).Any(P.Eq(7))}}, 
+               {"g_injectXnullX_anyXeqXnullXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject<object>(null).Any(P.Eq(null))}}, 
+               {"g_injectX7X_anyXeqX7XX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject(7).Any(P.Eq(7))}}, 
+               {"g_injectXnull_nullX_anyXeqXnullXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject(p["xx1"]).Any(P.Eq(null))}}, 
+               {"g_injectX3_threeX_anyXeqX3XX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject(p["xx1"]).Any(P.Eq(3))}}, 
                {"g_V_coinX1X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Coin(1.0)}}, 
                {"g_V_coinX0X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Coin(0.0)}}, 
                {"g_withStrategiesXSeedStrategyX_V_order_byXnameX_coinX50X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SeedStrategy(seed: 999999)).V().Order().By("name").Coin(0.5)}}, 
diff --git a/gremlin-go/driver/anonymousTraversal.go b/gremlin-go/driver/anonymousTraversal.go
index 1336830411..d722eb501e 100644
--- a/gremlin-go/driver/anonymousTraversal.go
+++ b/gremlin-go/driver/anonymousTraversal.go
@@ -55,8 +55,12 @@ type AnonymousTraversal interface {
 	AddV(args ...interface{}) *GraphTraversal
 	// Aggregate adds the aggregate step to the GraphTraversal.
 	Aggregate(args ...interface{}) *GraphTraversal
+	// All adds the all step to the GraphTraversal.
+	All(args ...interface{}) *GraphTraversal
 	// And adds the and step to the GraphTraversal.
 	And(args ...interface{}) *GraphTraversal
+	// Any adds the any step to the GraphTraversal.
+	Any(args ...interface{}) *GraphTraversal
 	// As adds the as step to the GraphTraversal.
 	As(args ...interface{}) *GraphTraversal
 	// AsString adds the asString step to the GraphTraversal.
@@ -329,11 +333,21 @@ func (anonymousTraversal *anonymousTraversal) Aggregate(args ...interface{}) *Gr
 	return anonymousTraversal.graphTraversal().Aggregate(args...)
 }
 
+// All adds the all step to the GraphTraversal.
+func (anonymousTraversal *anonymousTraversal) All(args ...interface{}) *GraphTraversal {
+	return anonymousTraversal.graphTraversal().All(args...)
+}
+
 // And adds the and step to the GraphTraversal.
 func (anonymousTraversal *anonymousTraversal) And(args ...interface{}) *GraphTraversal {
 	return anonymousTraversal.graphTraversal().And(args...)
 }
 
+// Any adds the any step to the GraphTraversal.
+func (anonymousTraversal *anonymousTraversal) Any(args ...interface{}) *GraphTraversal {
+	return anonymousTraversal.graphTraversal().Any(args...)
+}
+
 // As adds the as step to the GraphTraversal.
 func (anonymousTraversal *anonymousTraversal) As(args ...interface{}) *GraphTraversal {
 	return anonymousTraversal.graphTraversal().As(args...)
diff --git a/gremlin-go/driver/cucumber/gremlin.go b/gremlin-go/driver/cucumber/gremlin.go
index 6fea78109f..3c4d6b569e 100644
--- a/gremlin-go/driver/cucumber/gremlin.go
+++ b/gremlin-go/driver/cucumber/gremlin.go
@@ -100,11 +100,35 @@ var translationMap = map[string][]func(g *gremlingo.GraphTraversalSource, p map[
     "g_VX1_2X_unionXoutE_count__inE_count__outE_weight_sumX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V(p["vid1"], p["vid2"]).Union(gremlingo.T__.OutE().Count(), gremlingo.T__.InE().Count(), gremlingo.T__.OutE().Values("weight").Sum())}}, 
     "g_VX1_2X_localXunionXoutE_count__inE_count__outE_weight_sumXX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V(p["vid1"], p["vid2"]).Local(gremlingo.T__.Union(gremlingo.T__.OutE().Count(), gremlingo.T__.InE().Count(), gremlingo.T__.OutE().Values("weight").Sum()))}}, 
     "g_VX1_2X_localXunionXcountXX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V(p["vid1"], p["vid2"]).Local(gremlingo.T__.Union(gremlingo.T__.Count()))}}, 
+    "g_V_valuesXageX_allXgtX32XX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Values("age").All(gremlingo.P.Gt(32))}}, 
+    "g_V_valuesXageX_whereXisXP_gtX33XXX_fold_allXgtX33XX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Values("age").Where(gremlingo.T__.Is(gremlingo.P.Gt(33))).Fold().All(gremlingo.P.Gt(33))}}, 
+    "g_V_valuesXageX_order_byXdescX_fold_allXgtX10XX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Values("age").Order().By(gremlingo.Order.Desc).Fold().All(gremlingo.P.Gt(10))}}, 
+    "g_V_valuesXageX_order_byXdescX_fold_allXgtX30XX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Values("age").Order().By(gremlingo.Order.Desc).Fold().All(gremlingo.P.Gt(30))}}, 
+    "g_injectXabc_bcdX_allXeqXbcdXX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(p["xx1"]).All(gremlingo.P.Eq("bcd"))}}, 
+    "g_injectXbcd_bcdX_allXeqXbcdXX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(p["xx1"]).All(gremlingo.P.Eq("bcd"))}}, 
+    "g_injectXnull_abcX_allXTextP_startingWithXaXX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(p["xx1"]).All(gremlingo.TextP.StartingWith("a"))}}, 
+    "g_injectX5_8_10_10_7X_allXgteX7XX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(p["xx1"], p["xx2"]).All(gremlingo.P.Gte(7))}}, 
+    "g_injectXnullX_allXeqXnullXX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(nil).All(gremlingo.P.Eq(nil))}}, 
+    "g_injectX7X_allXeqX7XX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(7).All(gremlingo.P.Eq(7))}}, 
+    "g_injectXnull_nullX_allXeqXnullXX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(p["xx1"]).All(gremlingo.P.Eq(nil))}}, 
+    "g_injectX3_threeX_allXeqX3XX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(p["xx1"]).All(gremlingo.P.Eq(3))}}, 
     "g_V_andXhasXage_gt_27X__outE_count_gte_2X_name": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().And(gremlingo.T__.Has("age", gremlingo.P.Gt(27)), gremlingo.T__.OutE().Count().Is(gremlingo.P.Gte(2))).Values("name")}}, 
     "g_V_andXoutE__hasXlabel_personX_and_hasXage_gte_32XX_name": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().And(gremlingo.T__.OutE(), gremlingo.T__.Has(gremlingo.T.Label, "person").And().Has("age", gremlingo.P.Gte(32))).Values("name")}}, 
     "g_V_asXaX_outXknowsX_and_outXcreatedX_inXcreatedX_asXaX_name": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().As("a").Out("knows").And().Out("created").In("created").As("a").Values("name")}}, 
     "g_V_asXaX_andXselectXaX_selectXaXX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().As("a").And(gremlingo.T__.Select("a"), gremlingo.T__.Select("a"))}}, 
     "g_V_hasXname_markoX_and_hasXname_markoX_and_hasXname_markoX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Has("name", "marko").And().Has("name", "marko").And().Has("name", "marko")}}, 
+    "g_V_valuesXageX_anyXgtX32XX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Values("age").Any(gremlingo.P.Gt(32))}}, 
+    "g_V_valuesXageX_order_byXdescX_fold_anyXeqX29XX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Values("age").Order().By(gremlingo.Order.Desc).Fold().Any(gremlingo.P.Eq(29))}}, 
+    "g_V_valuesXageX_order_byXdescX_fold_anyXgtX10XX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Values("age").Order().By(gremlingo.Order.Desc).Fold().Any(gremlingo.P.Gt(10))}}, 
+    "g_V_valuesXageX_order_byXdescX_fold_anyXgtX42XX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Values("age").Order().By(gremlingo.Order.Desc).Fold().Any(gremlingo.P.Gt(42))}}, 
+    "g_injectXabc_cdeX_anyXeqXbcdXX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(p["xx1"]).Any(gremlingo.P.Eq("bcd"))}}, 
+    "g_injectXabc_bcdX_anyXeqXbcdXX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(p["xx1"]).Any(gremlingo.P.Eq("bcd"))}}, 
+    "g_injectXnull_abcX_anyXTextP_startingWithXaXX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(p["xx1"]).Any(gremlingo.TextP.StartingWith("a"))}}, 
+    "g_injectX5_8_10_10_7X_anyXeqX7XX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(p["xx1"], p["xx2"]).Any(gremlingo.P.Eq(7))}}, 
+    "g_injectXnullX_anyXeqXnullXX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(nil).Any(gremlingo.P.Eq(nil))}}, 
+    "g_injectX7X_anyXeqX7XX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(7).Any(gremlingo.P.Eq(7))}}, 
+    "g_injectXnull_nullX_anyXeqXnullXX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(p["xx1"]).Any(gremlingo.P.Eq(nil))}}, 
+    "g_injectX3_threeX_anyXeqX3XX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(p["xx1"]).Any(gremlingo.P.Eq(3))}}, 
     "g_V_coinX1X": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Coin(1.0)}}, 
     "g_V_coinX0X": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Coin(0.0)}}, 
     "g_withStrategiesXSeedStrategyX_V_order_byXnameX_coinX50X": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithStrategies(gremlingo.SeedStrategy(gremlingo.SeedStrategyConfig{Seed: 999999})).V().Order().By("name").Coin(0.5)}}, 
diff --git a/gremlin-go/driver/graphTraversal.go b/gremlin-go/driver/graphTraversal.go
index 133dd29ab4..556d925f5b 100644
--- a/gremlin-go/driver/graphTraversal.go
+++ b/gremlin-go/driver/graphTraversal.go
@@ -82,12 +82,24 @@ func (g *GraphTraversal) Aggregate(args ...interface{}) *GraphTraversal {
 	return g
 }
 
+// All adds the all step to the GraphTraversal.
+func (g *GraphTraversal) All(args ...interface{}) *GraphTraversal {
+	g.Bytecode.AddStep("all", args...)
+	return g
+}
+
 // And adds the and step to the GraphTraversal.
 func (g *GraphTraversal) And(args ...interface{}) *GraphTraversal {
 	g.Bytecode.AddStep("and", args...)
 	return g
 }
 
+// Any adds the any step to the GraphTraversal.
+func (g *GraphTraversal) Any(args ...interface{}) *GraphTraversal {
+	g.Bytecode.AddStep("any", args...)
+	return g
+}
+
 // As adds the as step to the GraphTraversal.
 func (g *GraphTraversal) As(args ...interface{}) *GraphTraversal {
 	g.Bytecode.AddStep("as", args...)
diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/graph-traversal.js b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/graph-traversal.js
index a5aa1c6999..b74247f748 100644
--- a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/graph-traversal.js
+++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/graph-traversal.js
@@ -414,6 +414,16 @@ class GraphTraversal extends Traversal {
     return this;
   }
 
+  /**
+   * Graph traversal all method.
+   * @param {...Object} args
+   * @returns {GraphTraversal}
+   */
+  all(...args) {
+    this.bytecode.addStep('all', args);
+    return this;
+  }
+
   /**
    * Graph traversal and method.
    * @param {...Object} args
@@ -424,6 +434,16 @@ class GraphTraversal extends Traversal {
     return this;
   }
 
+  /**
+   * Graph traversal any method.
+   * @param {...Object} args
+   * @returns {GraphTraversal}
+   */
+  any(...args) {
+    this.bytecode.addStep('any', args);
+    return this;
+  }
+
   /**
    * Graph traversal as method.
    * @param {...Object} args
@@ -1627,7 +1647,9 @@ const statics = {
   addE: (...args) => callOnEmptyTraversal('addE', args),
   addV: (...args) => callOnEmptyTraversal('addV', args),
   aggregate: (...args) => callOnEmptyTraversal('aggregate', args),
+  all: (...args) => callOnEmptyTraversal('all', args),
   and: (...args) => callOnEmptyTraversal('and', args),
+  any: (...args) => callOnEmptyTraversal('any', args),
   as: (...args) => callOnEmptyTraversal('as', args),
   asString: (...args) => callOnEmptyTraversal('asString', args),
   barrier: (...args) => callOnEmptyTraversal('barrier', args),
diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js
index 2fa4f7d787..5f2d1cb11c 100644
--- a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js
+++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js
@@ -120,11 +120,35 @@ const gremlins = {
     g_VX1_2X_unionXoutE_count__inE_count__outE_weight_sumX: [function({g, vid2, vid1}) { return g.V(vid1,vid2).union(__.outE().count(),__.inE().count(),__.outE().values("weight").sum()) }], 
     g_VX1_2X_localXunionXoutE_count__inE_count__outE_weight_sumXX: [function({g, vid2, vid1}) { return g.V(vid1,vid2).local(__.union(__.outE().count(),__.inE().count(),__.outE().values("weight").sum())) }], 
     g_VX1_2X_localXunionXcountXX: [function({g, vid2, vid1}) { return g.V(vid1,vid2).local(__.union(__.count())) }], 
+    g_V_valuesXageX_allXgtX32XX: [function({g}) { return g.V().values("age").all(P.gt(32)) }], 
+    g_V_valuesXageX_whereXisXP_gtX33XXX_fold_allXgtX33XX: [function({g}) { return g.V().values("age").where(__.is(P.gt(33))).fold().all(P.gt(33)) }], 
+    g_V_valuesXageX_order_byXdescX_fold_allXgtX10XX: [function({g}) { return g.V().values("age").order().by(Order.desc).fold().all(P.gt(10)) }], 
+    g_V_valuesXageX_order_byXdescX_fold_allXgtX30XX: [function({g}) { return g.V().values("age").order().by(Order.desc).fold().all(P.gt(30)) }], 
+    g_injectXabc_bcdX_allXeqXbcdXX: [function({g, xx1}) { return g.inject(xx1).all(P.eq("bcd")) }], 
+    g_injectXbcd_bcdX_allXeqXbcdXX: [function({g, xx1}) { return g.inject(xx1).all(P.eq("bcd")) }], 
+    g_injectXnull_abcX_allXTextP_startingWithXaXX: [function({g, xx1}) { return g.inject(xx1).all(TextP.startingWith("a")) }], 
+    g_injectX5_8_10_10_7X_allXgteX7XX: [function({g, xx1, xx2}) { return g.inject(xx1,xx2).all(P.gte(7)) }], 
+    g_injectXnullX_allXeqXnullXX: [function({g}) { return g.inject(null).all(P.eq(null)) }], 
+    g_injectX7X_allXeqX7XX: [function({g}) { return g.inject(7).all(P.eq(7)) }], 
+    g_injectXnull_nullX_allXeqXnullXX: [function({g, xx1}) { return g.inject(xx1).all(P.eq(null)) }], 
+    g_injectX3_threeX_allXeqX3XX: [function({g, xx1}) { return g.inject(xx1).all(P.eq(3)) }], 
     g_V_andXhasXage_gt_27X__outE_count_gte_2X_name: [function({g}) { return g.V().and(__.has("age",P.gt(27)),__.outE().count().is(P.gte(2))).values("name") }], 
     g_V_andXoutE__hasXlabel_personX_and_hasXage_gte_32XX_name: [function({g}) { return g.V().and(__.outE(),__.has(T.label,"person").and().has("age",P.gte(32))).values("name") }], 
     g_V_asXaX_outXknowsX_and_outXcreatedX_inXcreatedX_asXaX_name: [function({g}) { return g.V().as("a").out("knows").and().out("created").in_("created").as("a").values("name") }], 
     g_V_asXaX_andXselectXaX_selectXaXX: [function({g}) { return g.V().as("a").and(__.select("a"),__.select("a")) }], 
     g_V_hasXname_markoX_and_hasXname_markoX_and_hasXname_markoX: [function({g}) { return g.V().has("name","marko").and().has("name","marko").and().has("name","marko") }], 
+    g_V_valuesXageX_anyXgtX32XX: [function({g}) { return g.V().values("age").any(P.gt(32)) }], 
+    g_V_valuesXageX_order_byXdescX_fold_anyXeqX29XX: [function({g}) { return g.V().values("age").order().by(Order.desc).fold().any(P.eq(29)) }], 
+    g_V_valuesXageX_order_byXdescX_fold_anyXgtX10XX: [function({g}) { return g.V().values("age").order().by(Order.desc).fold().any(P.gt(10)) }], 
+    g_V_valuesXageX_order_byXdescX_fold_anyXgtX42XX: [function({g}) { return g.V().values("age").order().by(Order.desc).fold().any(P.gt(42)) }], 
+    g_injectXabc_cdeX_anyXeqXbcdXX: [function({g, xx1}) { return g.inject(xx1).any(P.eq("bcd")) }], 
+    g_injectXabc_bcdX_anyXeqXbcdXX: [function({g, xx1}) { return g.inject(xx1).any(P.eq("bcd")) }], 
+    g_injectXnull_abcX_anyXTextP_startingWithXaXX: [function({g, xx1}) { return g.inject(xx1).any(TextP.startingWith("a")) }], 
+    g_injectX5_8_10_10_7X_anyXeqX7XX: [function({g, xx1, xx2}) { return g.inject(xx1,xx2).any(P.eq(7)) }], 
+    g_injectXnullX_anyXeqXnullXX: [function({g}) { return g.inject(null).any(P.eq(null)) }], 
+    g_injectX7X_anyXeqX7XX: [function({g}) { return g.inject(7).any(P.eq(7)) }], 
+    g_injectXnull_nullX_anyXeqXnullXX: [function({g, xx1}) { return g.inject(xx1).any(P.eq(null)) }], 
+    g_injectX3_threeX_anyXeqX3XX: [function({g, xx1}) { return g.inject(xx1).any(P.eq(3)) }], 
     g_V_coinX1X: [function({g}) { return g.V().coin(1.0) }], 
     g_V_coinX0X: [function({g}) { return g.V().coin(0.0) }], 
     g_withStrategiesXSeedStrategyX_V_order_byXnameX_coinX50X: [function({g}) { return g.withStrategies(new SeedStrategy({seed:999999})).V().order().by("name").coin(0.5) }], 
diff --git a/gremlin-language/src/main/antlr4/Gremlin.g4 b/gremlin-language/src/main/antlr4/Gremlin.g4
index 8df663209c..2071f77109 100644
--- a/gremlin-language/src/main/antlr4/Gremlin.g4
+++ b/gremlin-language/src/main/antlr4/Gremlin.g4
@@ -183,7 +183,9 @@ traversalMethod
     | traversalMethod_mergeE
     | traversalMethod_mergeV
     | traversalMethod_aggregate
+    | traversalMethod_all
     | traversalMethod_and
+    | traversalMethod_any
     | traversalMethod_as
     | traversalMethod_barrier
     | traversalMethod_both
@@ -333,10 +335,18 @@ traversalMethod_aggregate
     | 'aggregate' LPAREN stringArgument RPAREN #traversalMethod_aggregate_String
     ;
 
+traversalMethod_all
+	: 'all' LPAREN traversalPredicate RPAREN #traversalMethod_all_P
+	;
+
 traversalMethod_and
     : 'and' LPAREN nestedTraversalList RPAREN
     ;
 
+traversalMethod_any
+	: 'any' LPAREN traversalPredicate RPAREN #traversalMethod_any_P
+	;
+
 traversalMethod_as
     : 'as' LPAREN stringArgument (COMMA stringLiteralVarargs)? RPAREN
     ;
diff --git a/gremlin-python/src/main/python/gremlin_python/process/graph_traversal.py b/gremlin-python/src/main/python/gremlin_python/process/graph_traversal.py
index 82a96c49c1..46d7254215 100644
--- a/gremlin-python/src/main/python/gremlin_python/process/graph_traversal.py
+++ b/gremlin-python/src/main/python/gremlin_python/process/graph_traversal.py
@@ -309,10 +309,18 @@ class GraphTraversal(Traversal):
         self.bytecode.add_step("aggregate", *args)
         return self
 
+    def all_(self, *args):
+        self.bytecode.add_step("all", *args)
+        return self
+
     def and_(self, *args):
         self.bytecode.add_step("and", *args)
         return self
 
+    def any_(self, *args):
+        self.bytecode.add_step("any", *args)
+        return self
+
     def as_(self, *args):
         self.bytecode.add_step("as", *args)
         return self
@@ -1019,10 +1027,18 @@ class __(object, metaclass=MagicType):
     def aggregate(cls, *args):
         return cls.graph_traversal(None, None, Bytecode()).aggregate(*args)
 
+    @classmethod
+    def all_(cls, *args):
+        return cls.graph_traversal(None, None, Bytecode()).all_(*args)
+
     @classmethod
     def and_(cls, *args):
         return cls.graph_traversal(None, None, Bytecode()).and_(*args)
 
+    @classmethod
+    def any_(cls, *args):
+        return cls.graph_traversal(None, None, Bytecode()).any_(*args)
+
     @classmethod
     def as_(cls, *args):
         return cls.graph_traversal(None, None, Bytecode()).as_(*args)
diff --git a/gremlin-python/src/main/python/radish/gremlin.py b/gremlin-python/src/main/python/radish/gremlin.py
index f73e75888f..c94dc134cd 100644
--- a/gremlin-python/src/main/python/radish/gremlin.py
+++ b/gremlin-python/src/main/python/radish/gremlin.py
@@ -101,11 +101,35 @@ world.gremlins = {
     'g_VX1_2X_unionXoutE_count__inE_count__outE_weight_sumX': [(lambda g, vid2=None,vid1=None:g.V(vid1,vid2).union(__.outE().count(),__.inE().count(),__.outE().weight.sum_()))], 
     'g_VX1_2X_localXunionXoutE_count__inE_count__outE_weight_sumXX': [(lambda g, vid2=None,vid1=None:g.V(vid1,vid2).local(__.union(__.outE().count(),__.inE().count(),__.outE().weight.sum_())))], 
     'g_VX1_2X_localXunionXcountXX': [(lambda g, vid2=None,vid1=None:g.V(vid1,vid2).local(__.union(__.count())))], 
+    'g_V_valuesXageX_allXgtX32XX': [(lambda g:g.V().age.all_(P.gt(32)))], 
+    'g_V_valuesXageX_whereXisXP_gtX33XXX_fold_allXgtX33XX': [(lambda g:g.V().age.where(__.is_(P.gt(33))).fold().all_(P.gt(33)))], 
+    'g_V_valuesXageX_order_byXdescX_fold_allXgtX10XX': [(lambda g:g.V().age.order().by(Order.desc).fold().all_(P.gt(10)))], 
+    'g_V_valuesXageX_order_byXdescX_fold_allXgtX30XX': [(lambda g:g.V().age.order().by(Order.desc).fold().all_(P.gt(30)))], 
+    'g_injectXabc_bcdX_allXeqXbcdXX': [(lambda g, xx1=None:g.inject(xx1).all_(P.eq('bcd')))], 
+    'g_injectXbcd_bcdX_allXeqXbcdXX': [(lambda g, xx1=None:g.inject(xx1).all_(P.eq('bcd')))], 
+    'g_injectXnull_abcX_allXTextP_startingWithXaXX': [(lambda g, xx1=None:g.inject(xx1).all_(TextP.startingWith('a')))], 
+    'g_injectX5_8_10_10_7X_allXgteX7XX': [(lambda g, xx1=None,xx2=None:g.inject(xx1,xx2).all_(P.gte(7)))], 
+    'g_injectXnullX_allXeqXnullXX': [(lambda g:g.inject(None).all_(P.eq(None)))], 
+    'g_injectX7X_allXeqX7XX': [(lambda g:g.inject(7).all_(P.eq(7)))], 
+    'g_injectXnull_nullX_allXeqXnullXX': [(lambda g, xx1=None:g.inject(xx1).all_(P.eq(None)))], 
+    'g_injectX3_threeX_allXeqX3XX': [(lambda g, xx1=None:g.inject(xx1).all_(P.eq(3)))], 
     'g_V_andXhasXage_gt_27X__outE_count_gte_2X_name': [(lambda g:g.V().and_(__.has('age',P.gt(27)),__.outE().count().is_(P.gte(2))).name)], 
     'g_V_andXoutE__hasXlabel_personX_and_hasXage_gte_32XX_name': [(lambda g:g.V().and_(__.outE(),__.has(T.label,'person').and_().has('age',P.gte(32))).name)], 
     'g_V_asXaX_outXknowsX_and_outXcreatedX_inXcreatedX_asXaX_name': [(lambda g:g.V().as_('a').out('knows').and_().out('created').in_('created').as_('a').name)], 
     'g_V_asXaX_andXselectXaX_selectXaXX': [(lambda g:g.V().as_('a').and_(__.select('a'),__.select('a')))], 
     'g_V_hasXname_markoX_and_hasXname_markoX_and_hasXname_markoX': [(lambda g:g.V().has('name','marko').and_().has('name','marko').and_().has('name','marko'))], 
+    'g_V_valuesXageX_anyXgtX32XX': [(lambda g:g.V().age.any_(P.gt(32)))], 
+    'g_V_valuesXageX_order_byXdescX_fold_anyXeqX29XX': [(lambda g:g.V().age.order().by(Order.desc).fold().any_(P.eq(29)))], 
+    'g_V_valuesXageX_order_byXdescX_fold_anyXgtX10XX': [(lambda g:g.V().age.order().by(Order.desc).fold().any_(P.gt(10)))], 
+    'g_V_valuesXageX_order_byXdescX_fold_anyXgtX42XX': [(lambda g:g.V().age.order().by(Order.desc).fold().any_(P.gt(42)))], 
+    'g_injectXabc_cdeX_anyXeqXbcdXX': [(lambda g, xx1=None:g.inject(xx1).any_(P.eq('bcd')))], 
+    'g_injectXabc_bcdX_anyXeqXbcdXX': [(lambda g, xx1=None:g.inject(xx1).any_(P.eq('bcd')))], 
+    'g_injectXnull_abcX_anyXTextP_startingWithXaXX': [(lambda g, xx1=None:g.inject(xx1).any_(TextP.startingWith('a')))], 
+    'g_injectX5_8_10_10_7X_anyXeqX7XX': [(lambda g, xx1=None,xx2=None:g.inject(xx1,xx2).any_(P.eq(7)))], 
+    'g_injectXnullX_anyXeqXnullXX': [(lambda g:g.inject(None).any_(P.eq(None)))], 
+    'g_injectX7X_anyXeqX7XX': [(lambda g:g.inject(7).any_(P.eq(7)))], 
+    'g_injectXnull_nullX_anyXeqXnullXX': [(lambda g, xx1=None:g.inject(xx1).any_(P.eq(None)))], 
+    'g_injectX3_threeX_anyXeqX3XX': [(lambda g, xx1=None:g.inject(xx1).any_(P.eq(3)))], 
     'g_V_coinX1X': [(lambda g:g.V().coin(float(1.0)))], 
     'g_V_coinX0X': [(lambda g:g.V().coin(float(0.0)))], 
     'g_withStrategiesXSeedStrategyX_V_order_byXnameX_coinX50X': [(lambda g:g.withStrategies(*[TraversalStrategy('SeedStrategy',{'seed':999999,'strategy':'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SeedStrategy'}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SeedStrategy')]).V().order().by('name').coin(float(0.5)))], 
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/filter/All.feature b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/filter/All.feature
new file mode 100644
index 0000000000..0e9689d010
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/filter/All.feature
@@ -0,0 +1,151 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+@StepClassFilter @StepAll
+Feature: Step - all()
+
+  Scenario: g_V_valuesXageX_allXgtX32XX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().values("age").all(P.gt(32))
+      """
+    When iterated to list
+    Then the result should be empty
+
+  Scenario: g_V_valuesXageX_whereXisXP_gtX33XXX_fold_allXgtX33XX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().values("age").where(__.is(P.gt(33))).fold().all(P.gt(33))
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | l[d[35].i] |
+
+  Scenario: g_V_valuesXageX_order_byXdescX_fold_allXgtX10XX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().values("age").order().by(desc).fold().all(P.gt(10))
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | l[d[35].i,d[32].i,d[29].i,d[27].i] |
+
+  Scenario: g_V_valuesXageX_order_byXdescX_fold_allXgtX30XX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().values("age").order().by(desc).fold().all(P.gt(30))
+      """
+    When iterated to list
+    Then the result should be empty
+
+  @GraphComputerVerificationInjectionNotSupported
+  Scenario: g_injectXabc_bcdX_allXeqXbcdXX
+    Given the empty graph
+    And the traversal of
+      """
+      g.inject(["abc","bcd"]).all(P.eq("bcd"))
+      """
+    When iterated to list
+    Then the result should be empty
+
+  @GraphComputerVerificationInjectionNotSupported
+  Scenario: g_injectXbcd_bcdX_allXeqXbcdXX
+    Given the empty graph
+    And using the parameter xx1 defined as "l[bcd,bcd]"
+    And the traversal of
+      """
+      g.inject(xx1).all(P.eq("bcd"))
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | l[bcd,bcd] |
+
+  @GraphComputerVerificationInjectionNotSupported
+  Scenario: g_injectXnull_abcX_allXTextP_startingWithXaXX
+    Given the empty graph
+    And using the parameter xx1 defined as "l[null,abc]"
+    And the traversal of
+      """
+      g.inject(xx1).all(TextP.startingWith("a"))
+      """
+    When iterated to list
+    Then the result should be empty
+
+  @GraphComputerVerificationInjectionNotSupported
+  Scenario: g_injectX5_8_10_10_7X_allXgteX7XX
+    Given the empty graph
+    And using the parameter xx1 defined as "l[d[5].i,d[8].i,d[10].i]"
+    And using the parameter xx2 defined as "l[d[10].i,d[7].i]"
+    And the traversal of
+      """
+      g.inject(xx1,xx2).all(P.gte(7))
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | l[d[10].i,d[7].i] |
+
+  @GraphComputerVerificationInjectionNotSupported
+  Scenario: g_injectXnullX_allXeqXnullXX
+    Given the empty graph
+    And the traversal of
+      """
+      g.inject(null).all(P.eq(null))
+      """
+    When iterated to list
+    Then the result should be empty
+
+  @GraphComputerVerificationInjectionNotSupported
+  Scenario: g_injectX7X_allXeqX7XX
+    Given the empty graph
+    And the traversal of
+      """
+      g.inject(7).all(P.eq(7))
+      """
+    When iterated to list
+    Then the result should be empty
+
+  @GraphComputerVerificationInjectionNotSupported
+  Scenario: g_injectXnull_nullX_allXeqXnullXX
+    Given the empty graph
+    And using the parameter xx1 defined as "l[null,null]"
+    And the traversal of
+      """
+      g.inject(xx1).all(P.eq(null))
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | l[null,null] |
+
+  @GraphComputerVerificationInjectionNotSupported
+  Scenario: g_injectX3_threeX_allXeqX3XX
+    Given the empty graph
+    And using the parameter xx1 defined as "l[d[3].i,three]"
+    And the traversal of
+      """
+      g.inject(xx1).all(P.eq(3))
+      """
+    When iterated to list
+    Then the result should be empty
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/filter/Any.feature b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/filter/Any.feature
new file mode 100644
index 0000000000..633c253291
--- /dev/null
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/filter/Any.feature
@@ -0,0 +1,155 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+@StepClassFilter @StepAny
+Feature: Step - any()
+
+  Scenario: g_V_valuesXageX_anyXgtX32XX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().values("age").any(P.gt(32))
+      """
+    When iterated to list
+    Then the result should be empty
+
+  Scenario: g_V_valuesXageX_order_byXdescX_fold_anyXeqX29XX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().values("age").order().by(desc).fold().any(P.eq(29))
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | l[d[35].i,d[32].i,d[29].i,d[27].i] |
+
+  Scenario: g_V_valuesXageX_order_byXdescX_fold_anyXgtX10XX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().values("age").order().by(desc).fold().any(P.gt(10))
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | l[d[35].i,d[32].i,d[29].i,d[27].i] |
+
+  Scenario: g_V_valuesXageX_order_byXdescX_fold_anyXgtX42XX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().values("age").order().by(desc).fold().any(P.gt(42))
+      """
+    When iterated to list
+    Then the result should be empty
+
+  @GraphComputerVerificationInjectionNotSupported
+  Scenario: g_injectXabc_cdeX_anyXeqXbcdXX
+    Given the empty graph
+    And the traversal of
+      """
+      g.inject(["abc","cde"]).any(P.eq("bcd"))
+      """
+    When iterated to list
+    Then the result should be empty
+
+  @GraphComputerVerificationInjectionNotSupported
+  Scenario: g_injectXabc_bcdX_anyXeqXbcdXX
+    Given the empty graph
+    And using the parameter xx1 defined as "l[abc,bcd]"
+    And the traversal of
+      """
+      g.inject(xx1).any(P.eq("bcd"))
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | l[abc,bcd] |
+
+  @GraphComputerVerificationInjectionNotSupported
+  Scenario: g_injectXnull_abcX_anyXTextP_startingWithXaXX
+    Given the empty graph
+    And using the parameter xx1 defined as "l[null,abc]"
+    And the traversal of
+      """
+      g.inject(xx1).any(TextP.startingWith("a"))
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | l[null,abc] |
+
+  @GraphComputerVerificationInjectionNotSupported
+  Scenario: g_injectX5_8_10_10_7X_anyXeqX7XX
+    Given the empty graph
+    And using the parameter xx1 defined as "l[d[5].i,d[8].i,d[10].i]"
+    And using the parameter xx2 defined as "l[d[10].i,d[7].i]"
+    And the traversal of
+      """
+      g.inject(xx1,xx2).any(P.eq(7))
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | l[d[10].i,d[7].i] |
+
+  @GraphComputerVerificationInjectionNotSupported
+  Scenario: g_injectXnullX_anyXeqXnullXX
+    Given the empty graph
+    And the traversal of
+      """
+      g.inject(null).any(P.eq(null))
+      """
+    When iterated to list
+    Then the result should be empty
+
+  @GraphComputerVerificationInjectionNotSupported
+  Scenario: g_injectX7X_anyXeqX7XX
+    Given the empty graph
+    And the traversal of
+      """
+      g.inject(7).any(P.eq(7))
+      """
+    When iterated to list
+    Then the result should be empty
+
+  @GraphComputerVerificationInjectionNotSupported
+  Scenario: g_injectXnull_nullX_anyXeqXnullXX
+    Given the empty graph
+    And using the parameter xx1 defined as "l[null,null]"
+    And the traversal of
+      """
+      g.inject(xx1).any(P.eq(null))
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | l[null,null] |
+
+  @GraphComputerVerificationInjectionNotSupported
+  Scenario: g_injectX3_threeX_anyXeqX3XX
+    Given the empty graph
+    And using the parameter xx1 defined as "l[d[3].i,three]"
+    And the traversal of
+      """
+      g.inject(xx1).any(P.eq(3))
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | l[d[3].i,three] |
\ No newline at end of file