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

colegreer pushed a commit to branch miscGremlinLangGBandResultSetFixes
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git

commit 65835a8430638a9d065257e6e3dd78cfec8da4c6
Author: Cole Greer <[email protected]>
AuthorDate: Mon Mar 30 13:54:08 2026 -0700

    Misc .Net fixes
    
    Automatically box non-Traverser results into Traverser's in ResultSet. If 
the server
    is sending bulked results, this boxing happens automatically during 
deserialization,
    but if results are unboxed, they come back as raw results (Vertex, Edge, 
Map...).
    ResultSet assumes that all results are wrapped in Traverser's, so this 
change adds
    an extra check to ensure all results become boxed.
    
    Fixes precision of DateTimes in GremlinLang. The format used when 
converting datetimes
    to strings in GremlinLang was rounding to the nearest second, where 
millisecond precision
    is expected. Both the format and tests have been updated to include millis.
---
 .../src/Gremlin.Net/Driver/Connection.cs           | 11 +++++--
 .../Gremlin.Net/Process/Traversal/GremlinLang.cs   |  2 +-
 gremlin-dotnet/src/pom.xml                         |  7 ++---
 .../Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs |  4 +--
 .../Process/Traversal/GremlinLangTests.cs          | 14 ++++-----
 gremlin-dotnet/test/pom.xml                        |  7 ++---
 gremlin-go/driver/cucumber/gremlin.go              |  4 +--
 .../gremlin-javascript/test/cucumber/gremlin.js    |  4 +--
 .../src/main/python/tests/feature/gremlin.py       |  4 +--
 .../gremlin/language/translator/translations.json  | 36 +++++++++++-----------
 .../gremlin/test/features/data/DateTime.feature    |  8 ++---
 11 files changed, 52 insertions(+), 49 deletions(-)

diff --git a/gremlin-dotnet/src/Gremlin.Net/Driver/Connection.cs 
b/gremlin-dotnet/src/Gremlin.Net/Driver/Connection.cs
index 84ec963d40..415513918c 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Driver/Connection.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Driver/Connection.cs
@@ -32,6 +32,7 @@ using System.Threading;
 using System.Threading.Tasks;
 using Gremlin.Net.Driver.Messages;
 using Gremlin.Net.Process;
+using Gremlin.Net.Process.Traversal;
 using Gremlin.Net.Structure.IO;
 
 namespace Gremlin.Net.Driver
@@ -237,9 +238,13 @@ namespace Gremlin.Net.Driver
 
         private static ResultSet<T> 
BuildResultSet<T>(ResponseMessage<List<object>> responseMessage)
         {
-            return new ResultSet<T>(
-                responseMessage.Result.Cast<T>().ToList(),
-                new Dictionary<string, object>());
+            var results = typeof(T) == typeof(Traverser)
+                ? responseMessage.Result
+                    .Select(item => item is Traverser ? item : (object)new 
Traverser(item))
+                    .Cast<T>().ToList()
+                : responseMessage.Result.Cast<T>().ToList();
+
+            return new ResultSet<T>(results, new Dictionary<string, object>());
         }
 
         /// <summary>
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GremlinLang.cs 
b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GremlinLang.cs
index f6df5bc87b..aa5a975879 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GremlinLang.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GremlinLang.cs
@@ -233,7 +233,7 @@ namespace Gremlin.Net.Process.Traversal
                 return $"{decimalVal.ToString(CultureInfo.InvariantCulture)}M";
 
             if (arg is DateTimeOffset dto)
-                return 
$"datetime(\"{dto.ToUniversalTime():yyyy-MM-ddTHH:mm:ssZ}\")";
+                return 
$"datetime(\"{dto.ToUniversalTime():yyyy-MM-ddTHH:mm:ss.fffZ}\")";
 
             if (arg is Guid guid)
                 return $"UUID(\"{guid}\")";
diff --git a/gremlin-dotnet/src/pom.xml b/gremlin-dotnet/src/pom.xml
index 69b75d4ddb..50a3b2a521 100644
--- a/gremlin-dotnet/src/pom.xml
+++ b/gremlin-dotnet/src/pom.xml
@@ -121,10 +121,9 @@ limitations under the License.
             <id>gremlin-dotnet</id>
             <activation>
                 <activeByDefault>false</activeByDefault>
-                <!-- TODO re-enable after gremlin-dotnet is implemented -->
-<!--                <file>-->
-<!--                    <exists>.glv</exists>-->
-<!--                </file>-->
+                <file>
+                    <exists>.glv</exists>
+                </file>
             </activation>
             <properties>
                 <packaging.type>dotnet-library</packaging.type>
diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs 
b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs
index d9b871d889..2efd471c8e 100644
--- a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs
@@ -237,11 +237,11 @@ namespace Gremlin.Net.IntegrationTest.Gherkin
                {"g_V_valuesXdatetimeX_isXtypeOfXGType_DATETIMEXX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.AddV((string) "event").Property("datetime", 
DateTimeOffset.Parse("2023-08-08T00:00Z")), (g,p) 
=>g.V().Values<object>("datetime").Is(P.TypeOf(GType.DateTime))}}, 
                
{"g_V_valuesXdatetimeX_isXtypeOfXGType_DATETIMEXX_project_byXidentityX_byXdateAddXDT_dayX1XX",
 new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.AddV((string) "event").Property("datetime", 
DateTimeOffset.Parse("2023-08-08T00:00Z")), (g,p) 
=>g.V().Values<object>("datetime").Is(P.TypeOf(GType.DateTime)).Project<object>("original",
 "nextDay").By(__.Identity()).By(__.DateAdd(DT.Day, 1))}}, 
                
{"g_V_valuesXdatetimeX_isXtypeOfXGType_DATETIMEXX_dateDiffXdatetimeX2023_08_10XX",
 new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.AddV((string) "event").Property("datetime", 
DateTimeOffset.Parse("2023-08-08T00:00Z")), (g,p) 
=>g.V().Values<object>("datetime").Is(P.TypeOf(GType.DateTime)).DateDiff(DateTimeOffset.Parse("2023-08-08T00:00:30Z"))}},
 
-               
{"g_V_valuesXdatetimeX_isXtypeOfXGType_DATETIMEXX_whereXisXgtXdatetimeX2020_01_01XXXX",
 new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.AddV((string) "event").Property("datetime", 
DateTimeOffset.Parse("2023-08-08T00:00Z")), (g,p) 
=>g.V().Values<object>("datetime").Is(P.TypeOf(GType.DateTime)).Where(__.Is(P.Gt(DateTimeOffset.Parse("2020-01-01T00:00Z"))))}},
 
+               
{"g_V_valuesXdatetimeX_isXtypeOfXGType_DATETIMEXX_whereXisXgtXdatetimeX2020_01_01XXXX",
 new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.AddV((string) "event").Property("datetime", 
DateTimeOffset.Parse("2023-08-08T12:34:56Z")), (g,p) 
=>g.V().Values<object>("datetime").Is(P.TypeOf(GType.DateTime)).Where(__.Is(P.Gt(DateTimeOffset.Parse("2020-01-01T00:00Z"))))}},
 
                
{"g_V_valuesXdatetimeX_isXtypeOfXGType_DATETIMEXX_chooseXisXeqXdatetimeX2023_08_08XXXX_constantXmatchX_constantXnoMatchXX",
 new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.AddV((string) "event").Property("datetime", 
DateTimeOffset.Parse("2023-08-08T00:00Z")), (g,p) 
=>g.V().Values<object>("datetime").Is(P.TypeOf(GType.DateTime)).Choose<object>(__.Is(P.Eq(DateTimeOffset.Parse("2023-08-08T00:00Z"))),
 __.Constant<object>("match"), __.Co [...]
                
{"g_V_valuesXdatetimeX_isXtypeOfXGType_DATETIMEXX_localXaggregateXaX_capXaX", 
new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.AddV((string) "event").Property("datetime", 
DateTimeOffset.Parse("2023-08-08T00:00Z")), (g,p) 
=>g.V().Values<object>("datetime").Is(P.TypeOf(GType.DateTime)).Local<object>(__.Aggregate("a")).Cap<object>("a")}},
 
                
{"g_injectXdatetimeX_isXtypeOfXGType_DATETIMEXX_aggregateXaX_capXaX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) 
=>g.Inject<object>(DateTimeOffset.Parse("2023-08-08T00:00Z")).Is(P.TypeOf(GType.DateTime)).Aggregate("a").Cap<object>("a")}},
 
-               {"g_injectXdatetimeX_isXtypeOfXGType_DATETIMEXX_groupCount", 
new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) 
=>g.Inject<object>(DateTimeOffset.Parse("2023-08-08T00:00Z")).Is(P.TypeOf(GType.DateTime)).GroupCount<object>()}},
 
+               {"g_injectXdatetimeX_isXtypeOfXGType_DATETIMEXX_groupCount", 
new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) 
=>g.Inject<object>(DateTimeOffset.Parse("2023-08-08T12:34:56Z")).Is(P.TypeOf(GType.DateTime)).GroupCount<object>()}},
 
                {"g_V_valuesXdoubleX_isXtypeOfXGType_DOUBLEXX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.AddV((string) "data").Property("double", 1.5d), (g,p) 
=>g.V().Values<object>("double").Is(P.TypeOf(GType.Double))}}, 
                {"g_E_valuesXweightX_isXtypeOfXGType_DOUBLEXX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.E().Values<object>("weight").Is(P.TypeOf(GType.Double))}}, 
                {"g_V_valuesXdoubleX_isXtypeOfXGType_DOUBLEXX_mathXceilX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.AddV((string) "data").Property("double", 2.7d), (g,p) 
=>g.V().Values<object>("double").Is(P.TypeOf(GType.Double)).Math("ceil _")}}, 
diff --git 
a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/GremlinLangTests.cs
 
b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/GremlinLangTests.cs
index f1a78c1ae2..3167499c45 100644
--- 
a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/GremlinLangTests.cs
+++ 
b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/GremlinLangTests.cs
@@ -470,14 +470,14 @@ namespace Gremlin.Net.UnitTest.Process.Traversal
         [Fact]
         public void g_AddV_test_Property_date_DateTimeOffset()
         {
-            
Assert.Equal("g.addV(\"test\").property(\"date\",datetime(\"2021-02-01T09:30:00Z\"))",
+            
Assert.Equal("g.addV(\"test\").property(\"date\",datetime(\"2021-02-01T09:30:00.000Z\"))",
                 _g.AddV("test").Property("date", new DateTimeOffset(2021, 2, 
1, 9, 30, 0, TimeSpan.Zero)).GremlinLang.GetGremlin());
         }
 
         [Fact]
         public void g_AddV_test_Property_date_DateTimeOffset_midnight()
         {
-            
Assert.Equal("g.addV(\"test\").property(\"date\",datetime(\"2021-02-01T00:00:00Z\"))",
+            
Assert.Equal("g.addV(\"test\").property(\"date\",datetime(\"2021-02-01T00:00:00.000Z\"))",
                 _g.AddV("test").Property("date", new DateTimeOffset(2021, 2, 
1, 0, 0, 0, TimeSpan.Zero)).GremlinLang.GetGremlin());
         }
 
@@ -587,14 +587,14 @@ namespace Gremlin.Net.UnitTest.Process.Traversal
         [Fact]
         public void g_V_Has_date_DateTimeOffset()
         {
-            
Assert.Equal("g.V().has(\"date\",datetime(\"2021-02-22T00:00:00Z\"))",
+            
Assert.Equal("g.V().has(\"date\",datetime(\"2021-02-22T00:00:00.000Z\"))",
                 _g.V().Has("date", new DateTimeOffset(2021, 2, 22, 0, 0, 0, 
TimeSpan.Zero)).GremlinLang.GetGremlin());
         }
 
         [Fact]
         public void g_V_Has_date_Within_dates()
         {
-            
Assert.Equal("g.V().has(\"date\",within([datetime(\"2021-02-22T00:00:00Z\"),datetime(\"2021-01-01T00:00:00Z\")]))",
+            
Assert.Equal("g.V().has(\"date\",within([datetime(\"2021-02-22T00:00:00.000Z\"),datetime(\"2021-01-01T00:00:00.000Z\")]))",
                 _g.V().Has("date", P.Within(
                     new DateTimeOffset(2021, 2, 22, 0, 0, 0, TimeSpan.Zero),
                     new DateTimeOffset(2021, 1, 1, 0, 0, 0, 
TimeSpan.Zero))).GremlinLang.GetGremlin());
@@ -603,7 +603,7 @@ namespace Gremlin.Net.UnitTest.Process.Traversal
         [Fact]
         public void g_V_Has_date_Between_dates()
         {
-            
Assert.Equal("g.V().has(\"date\",between(datetime(\"2021-01-01T00:00:00Z\"),datetime(\"2021-02-22T00:00:00Z\")))",
+            
Assert.Equal("g.V().has(\"date\",between(datetime(\"2021-01-01T00:00:00.000Z\"),datetime(\"2021-02-22T00:00:00.000Z\")))",
                 _g.V().Has("date", P.Between(
                     new DateTimeOffset(2021, 1, 1, 0, 0, 0, TimeSpan.Zero),
                     new DateTimeOffset(2021, 2, 22, 0, 0, 0, 
TimeSpan.Zero))).GremlinLang.GetGremlin());
@@ -612,7 +612,7 @@ namespace Gremlin.Net.UnitTest.Process.Traversal
         [Fact]
         public void g_V_Has_date_Inside_dates()
         {
-            
Assert.Equal("g.V().has(\"date\",inside(datetime(\"2021-01-01T00:00:00Z\"),datetime(\"2021-02-22T00:00:00Z\")))",
+            
Assert.Equal("g.V().has(\"date\",inside(datetime(\"2021-01-01T00:00:00.000Z\"),datetime(\"2021-02-22T00:00:00.000Z\")))",
                 _g.V().Has("date", P.Inside(
                     new DateTimeOffset(2021, 1, 1, 0, 0, 0, TimeSpan.Zero),
                     new DateTimeOffset(2021, 2, 22, 0, 0, 0, 
TimeSpan.Zero))).GremlinLang.GetGremlin());
@@ -621,7 +621,7 @@ namespace Gremlin.Net.UnitTest.Process.Traversal
         [Fact]
         public void g_V_Has_date_Gt_DateTimeOffset()
         {
-            
Assert.Equal("g.V().has(\"date\",gt(datetime(\"2021-01-01T09:30:00Z\")))",
+            
Assert.Equal("g.V().has(\"date\",gt(datetime(\"2021-01-01T09:30:00.000Z\")))",
                 _g.V().Has("date", P.Gt(new DateTimeOffset(2021, 1, 1, 9, 30, 
0, TimeSpan.Zero))).GremlinLang.GetGremlin());
         }
 
diff --git a/gremlin-dotnet/test/pom.xml b/gremlin-dotnet/test/pom.xml
index 4e18f40088..a546d7f8a1 100644
--- a/gremlin-dotnet/test/pom.xml
+++ b/gremlin-dotnet/test/pom.xml
@@ -76,10 +76,9 @@ limitations under the License.
             <id>gremlin-dotnet</id>
             <activation>
                 <activeByDefault>false</activeByDefault>
-                <!-- TODO re-enable after gremlin-dotnet is implemented -->
-<!--                <file>-->
-<!--                    <exists>.glv</exists>-->
-<!--                </file>-->
+                <file>
+                    <exists>.glv</exists>
+                </file>
             </activation>
             <build>
                 <finalName>${project.artifactId}-${project.version}</finalName>
diff --git a/gremlin-go/driver/cucumber/gremlin.go 
b/gremlin-go/driver/cucumber/gremlin.go
index bfa80b3fa1..069e508ada 100644
--- a/gremlin-go/driver/cucumber/gremlin.go
+++ b/gremlin-go/driver/cucumber/gremlin.go
@@ -207,11 +207,11 @@ var translationMap = map[string][]func(g 
*gremlingo.GraphTraversalSource, p map[
     "g_V_valuesXdatetimeX_isXtypeOfXGType_DATETIMEXX": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.AddV("event").Property("datetime", 
time.Date(2023, 8, 8, 0, 0, 0, 0, time.FixedZone("UTC+00:00", 0)))}, func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.V().Values("datetime").Is(gremlingo.P.TypeOf(gremlingo.GType.DateTime))}}, 
     
"g_V_valuesXdatetimeX_isXtypeOfXGType_DATETIMEXX_project_byXidentityX_byXdateAddXDT_dayX1XX":
 {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.AddV("event").Property("datetime", 
time.Date(2023, 8, 8, 0, 0, 0, 0, time.FixedZone("UTC+00:00", 0)))}, func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.V().Values("datetime").Is(gremlingo.P.TypeOf(gremlingo.GType.DateTime)).Project("orig
 [...]
     
"g_V_valuesXdatetimeX_isXtypeOfXGType_DATETIMEXX_dateDiffXdatetimeX2023_08_10XX":
 {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.AddV("event").Property("datetime", 
time.Date(2023, 8, 8, 0, 0, 0, 0, time.FixedZone("UTC+00:00", 0)))}, func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.V().Values("datetime").Is(gremlingo.P.TypeOf(gremlingo.GType.DateTime)).DateDiff(time.Date(2023,
  [...]
-    
"g_V_valuesXdatetimeX_isXtypeOfXGType_DATETIMEXX_whereXisXgtXdatetimeX2020_01_01XXXX":
 {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.AddV("event").Property("datetime", 
time.Date(2023, 8, 8, 0, 0, 0, 0, time.FixedZone("UTC+00:00", 0)))}, func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.V().Values("datetime").Is(gremlingo.P.TypeOf(gremlingo.GType.DateTime)).Where(gremlingo.T__.
 [...]
+    
"g_V_valuesXdatetimeX_isXtypeOfXGType_DATETIMEXX_whereXisXgtXdatetimeX2020_01_01XXXX":
 {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.AddV("event").Property("datetime", 
time.Date(2023, 8, 8, 12, 34, 56, 0, time.FixedZone("UTC+00:00", 0)))}, func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.V().Values("datetime").Is(gremlingo.P.TypeOf(gremlingo.GType.DateTime)).Where(gremlingo.T
 [...]
     
"g_V_valuesXdatetimeX_isXtypeOfXGType_DATETIMEXX_chooseXisXeqXdatetimeX2023_08_08XXXX_constantXmatchX_constantXnoMatchXX":
 {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.AddV("event").Property("datetime", 
time.Date(2023, 8, 8, 0, 0, 0, 0, time.FixedZone("UTC+00:00", 0)))}, func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.V().Values("datetime").Is(gremlingo.P.TypeOf(gremlingo.G [...]
     
"g_V_valuesXdatetimeX_isXtypeOfXGType_DATETIMEXX_localXaggregateXaX_capXaX": 
{func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.AddV("event").Property("datetime", 
time.Date(2023, 8, 8, 0, 0, 0, 0, time.FixedZone("UTC+00:00", 0)))}, func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.V().Values("datetime").Is(gremlingo.P.TypeOf(gremlingo.GType.DateTime)).Local(gremlingo.T__.Aggregate(
 [...]
     "g_injectXdatetimeX_isXtypeOfXGType_DATETIMEXX_aggregateXaX_capXaX": 
{func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.Inject(time.Date(2023, 8, 8, 0, 0, 0, 0, 
time.FixedZone("UTC+00:00", 
0))).Is(gremlingo.P.TypeOf(gremlingo.GType.DateTime)).Aggregate("a").Cap("a")}},
 
-    "g_injectXdatetimeX_isXtypeOfXGType_DATETIMEXX_groupCount": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.Inject(time.Date(2023, 8, 8, 0, 0, 0, 0, 
time.FixedZone("UTC+00:00", 
0))).Is(gremlingo.P.TypeOf(gremlingo.GType.DateTime)).GroupCount()}}, 
+    "g_injectXdatetimeX_isXtypeOfXGType_DATETIMEXX_groupCount": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.Inject(time.Date(2023, 8, 8, 12, 34, 56, 0, 
time.FixedZone("UTC+00:00", 
0))).Is(gremlingo.P.TypeOf(gremlingo.GType.DateTime)).GroupCount()}}, 
     "g_V_valuesXdoubleX_isXtypeOfXGType_DOUBLEXX": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.AddV("data").Property("double", 1.5)}, 
func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.V().Values("double").Is(gremlingo.P.TypeOf(gremlingo.GType.Double))}}, 
     "g_E_valuesXweightX_isXtypeOfXGType_DOUBLEXX": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.E().Values("weight").Is(gremlingo.P.TypeOf(gremlingo.GType.Double))}}, 
     "g_V_valuesXdoubleX_isXtypeOfXGType_DOUBLEXX_mathXceilX": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.AddV("data").Property("double", 2.7)}, 
func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.V().Values("double").Is(gremlingo.P.TypeOf(gremlingo.GType.Double)).Math("ceil
 _")}}, 
diff --git a/gremlin-js/gremlin-javascript/test/cucumber/gremlin.js 
b/gremlin-js/gremlin-javascript/test/cucumber/gremlin.js
index 008c9d96df..66138f47f6 100644
--- a/gremlin-js/gremlin-javascript/test/cucumber/gremlin.js
+++ b/gremlin-js/gremlin-javascript/test/cucumber/gremlin.js
@@ -238,11 +238,11 @@ const gremlins = {
     g_V_valuesXdatetimeX_isXtypeOfXGType_DATETIMEXX: [function({g}) { return 
g.addV("event").property("datetime", new Date('2023-08-08T00:00Z')) }, 
function({g}) { return g.V().values("datetime").is(P.typeOf(GType.datetime)) 
}], 
     
g_V_valuesXdatetimeX_isXtypeOfXGType_DATETIMEXX_project_byXidentityX_byXdateAddXDT_dayX1XX:
 [function({g}) { return g.addV("event").property("datetime", new 
Date('2023-08-08T00:00Z')) }, function({g}) { return 
g.V().values("datetime").is(P.typeOf(GType.datetime)).project("original", 
"nextDay").by(__.identity()).by(__.dateAdd(DT.day, 1)) }], 
     
g_V_valuesXdatetimeX_isXtypeOfXGType_DATETIMEXX_dateDiffXdatetimeX2023_08_10XX: 
[function({g}) { return g.addV("event").property("datetime", new 
Date('2023-08-08T00:00Z')) }, function({g}) { return 
g.V().values("datetime").is(P.typeOf(GType.datetime)).dateDiff(new 
Date('2023-08-08T00:00:30Z')) }], 
-    
g_V_valuesXdatetimeX_isXtypeOfXGType_DATETIMEXX_whereXisXgtXdatetimeX2020_01_01XXXX:
 [function({g}) { return g.addV("event").property("datetime", new 
Date('2023-08-08T00:00Z')) }, function({g}) { return 
g.V().values("datetime").is(P.typeOf(GType.datetime)).where(__.is(P.gt(new 
Date('2020-01-01T00:00Z')))) }], 
+    
g_V_valuesXdatetimeX_isXtypeOfXGType_DATETIMEXX_whereXisXgtXdatetimeX2020_01_01XXXX:
 [function({g}) { return g.addV("event").property("datetime", new 
Date('2023-08-08T12:34:56Z')) }, function({g}) { return 
g.V().values("datetime").is(P.typeOf(GType.datetime)).where(__.is(P.gt(new 
Date('2020-01-01T00:00Z')))) }], 
     
g_V_valuesXdatetimeX_isXtypeOfXGType_DATETIMEXX_chooseXisXeqXdatetimeX2023_08_08XXXX_constantXmatchX_constantXnoMatchXX:
 [function({g}) { return g.addV("event").property("datetime", new 
Date('2023-08-08T00:00Z')) }, function({g}) { return 
g.V().values("datetime").is(P.typeOf(GType.datetime)).choose(__.is(P.eq(new 
Date('2023-08-08T00:00Z'))), __.constant("match"), __.constant("noMatch")) }], 
     g_V_valuesXdatetimeX_isXtypeOfXGType_DATETIMEXX_localXaggregateXaX_capXaX: 
[function({g}) { return g.addV("event").property("datetime", new 
Date('2023-08-08T00:00Z')) }, function({g}) { return 
g.V().values("datetime").is(P.typeOf(GType.datetime)).local(__.aggregate("a")).cap("a")
 }], 
     g_injectXdatetimeX_isXtypeOfXGType_DATETIMEXX_aggregateXaX_capXaX: 
[function({g}) { return g.inject(new 
Date('2023-08-08T00:00Z')).is(P.typeOf(GType.datetime)).aggregate("a").cap("a") 
}], 
-    g_injectXdatetimeX_isXtypeOfXGType_DATETIMEXX_groupCount: [function({g}) { 
return g.inject(new 
Date('2023-08-08T00:00Z')).is(P.typeOf(GType.datetime)).groupCount() }], 
+    g_injectXdatetimeX_isXtypeOfXGType_DATETIMEXX_groupCount: [function({g}) { 
return g.inject(new 
Date('2023-08-08T12:34:56Z')).is(P.typeOf(GType.datetime)).groupCount() }], 
     g_V_valuesXdoubleX_isXtypeOfXGType_DOUBLEXX: [function({g}) { return 
g.addV("data").property("double", 1.5) }, function({g}) { return 
g.V().values("double").is(P.typeOf(GType.double)) }], 
     g_E_valuesXweightX_isXtypeOfXGType_DOUBLEXX: [function({g}) { return 
g.E().values("weight").is(P.typeOf(GType.double)) }], 
     g_V_valuesXdoubleX_isXtypeOfXGType_DOUBLEXX_mathXceilX: [function({g}) { 
return g.addV("data").property("double", 2.7) }, function({g}) { return 
g.V().values("double").is(P.typeOf(GType.double)).math("ceil _") }], 
diff --git a/gremlin-python/src/main/python/tests/feature/gremlin.py 
b/gremlin-python/src/main/python/tests/feature/gremlin.py
index e8f87ae80f..d1cfbf06ab 100644
--- a/gremlin-python/src/main/python/tests/feature/gremlin.py
+++ b/gremlin-python/src/main/python/tests/feature/gremlin.py
@@ -210,11 +210,11 @@ world.gremlins = {
     'g_V_valuesXdatetimeX_isXtypeOfXGType_DATETIMEXX': [(lambda 
g:g.add_v('event').property('datetime', 
datetime.datetime.fromisoformat('2023-08-08T00:00+00:00'))), (lambda 
g:g.V().values('datetime').is_(P.type_of(GType.DATETIME)))], 
     
'g_V_valuesXdatetimeX_isXtypeOfXGType_DATETIMEXX_project_byXidentityX_byXdateAddXDT_dayX1XX':
 [(lambda g:g.add_v('event').property('datetime', 
datetime.datetime.fromisoformat('2023-08-08T00:00+00:00'))), (lambda 
g:g.V().values('datetime').is_(P.type_of(GType.DATETIME)).project('original', 
'nextDay').by(__.identity()).by(__.date_add(DT.day, 1)))], 
     
'g_V_valuesXdatetimeX_isXtypeOfXGType_DATETIMEXX_dateDiffXdatetimeX2023_08_10XX':
 [(lambda g:g.add_v('event').property('datetime', 
datetime.datetime.fromisoformat('2023-08-08T00:00+00:00'))), (lambda 
g:g.V().values('datetime').is_(P.type_of(GType.DATETIME)).date_diff(datetime.datetime.fromisoformat('2023-08-08T00:00:30+00:00')))],
 
-    
'g_V_valuesXdatetimeX_isXtypeOfXGType_DATETIMEXX_whereXisXgtXdatetimeX2020_01_01XXXX':
 [(lambda g:g.add_v('event').property('datetime', 
datetime.datetime.fromisoformat('2023-08-08T00:00+00:00'))), (lambda 
g:g.V().values('datetime').is_(P.type_of(GType.DATETIME)).where(__.is_(P.gt(datetime.datetime.fromisoformat('2020-01-01T00:00+00:00')))))],
 
+    
'g_V_valuesXdatetimeX_isXtypeOfXGType_DATETIMEXX_whereXisXgtXdatetimeX2020_01_01XXXX':
 [(lambda g:g.add_v('event').property('datetime', 
datetime.datetime.fromisoformat('2023-08-08T12:34:56+00:00'))), (lambda 
g:g.V().values('datetime').is_(P.type_of(GType.DATETIME)).where(__.is_(P.gt(datetime.datetime.fromisoformat('2020-01-01T00:00+00:00')))))],
 
     
'g_V_valuesXdatetimeX_isXtypeOfXGType_DATETIMEXX_chooseXisXeqXdatetimeX2023_08_08XXXX_constantXmatchX_constantXnoMatchXX':
 [(lambda g:g.add_v('event').property('datetime', 
datetime.datetime.fromisoformat('2023-08-08T00:00+00:00'))), (lambda 
g:g.V().values('datetime').is_(P.type_of(GType.DATETIME)).choose(__.is_(P.eq(datetime.datetime.fromisoformat('2023-08-08T00:00+00:00'))),
 __.constant('match'), __.constant('noMatch')))], 
     
'g_V_valuesXdatetimeX_isXtypeOfXGType_DATETIMEXX_localXaggregateXaX_capXaX': 
[(lambda g:g.add_v('event').property('datetime', 
datetime.datetime.fromisoformat('2023-08-08T00:00+00:00'))), (lambda 
g:g.V().values('datetime').is_(P.type_of(GType.DATETIME)).local(__.aggregate('a')).cap('a'))],
 
     'g_injectXdatetimeX_isXtypeOfXGType_DATETIMEXX_aggregateXaX_capXaX': 
[(lambda 
g:g.inject(datetime.datetime.fromisoformat('2023-08-08T00:00+00:00')).is_(P.type_of(GType.DATETIME)).aggregate('a').cap('a'))],
 
-    'g_injectXdatetimeX_isXtypeOfXGType_DATETIMEXX_groupCount': [(lambda 
g:g.inject(datetime.datetime.fromisoformat('2023-08-08T00:00+00:00')).is_(P.type_of(GType.DATETIME)).group_count())],
 
+    'g_injectXdatetimeX_isXtypeOfXGType_DATETIMEXX_groupCount': [(lambda 
g:g.inject(datetime.datetime.fromisoformat('2023-08-08T12:34:56+00:00')).is_(P.type_of(GType.DATETIME)).group_count())],
 
     'g_V_valuesXdoubleX_isXtypeOfXGType_DOUBLEXX': [(lambda 
g:g.add_v('data').property('double', 1.5)), (lambda 
g:g.V().values('double').is_(P.type_of(GType.DOUBLE)))], 
     'g_E_valuesXweightX_isXtypeOfXGType_DOUBLEXX': [(lambda 
g:g.E().values('weight').is_(P.type_of(GType.DOUBLE)))], 
     'g_V_valuesXdoubleX_isXtypeOfXGType_DOUBLEXX_mathXceilX': [(lambda 
g:g.add_v('data').property('double', 2.7)), (lambda 
g:g.V().values('double').is_(P.type_of(GType.DOUBLE)).math('ceil _'))], 
diff --git 
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/language/translator/translations.json
 
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/language/translator/translations.json
index 579faea9e3..04249b8786 100644
--- 
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/language/translator/translations.json
+++ 
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/language/translator/translations.json
@@ -3309,16 +3309,16 @@
         "scenario": 
"g_V_valuesXdatetimeX_isXtypeOfXGType_DATETIMEXX_whereXisXgtXdatetimeX2020_01_01XXXX",
         "traversals": [
             {
-                "original": "g.addV(\"event\").property(\"datetime\", 
datetime(\"2023-08-08T00:00:00Z\"))",
-                "language": "g.addV(\"event\").property(\"datetime\", 
datetime(\"2023-08-08T00:00:00Z\"))",
-                "canonical": "g.addV(\"event\").property(\"datetime\", 
datetime(\"2023-08-08T00:00:00Z\"))",
+                "original": "g.addV(\"event\").property(\"datetime\", 
datetime(\"2023-08-08T12:34:56Z\"))",
+                "language": "g.addV(\"event\").property(\"datetime\", 
datetime(\"2023-08-08T12:34:56Z\"))",
+                "canonical": "g.addV(\"event\").property(\"datetime\", 
datetime(\"2023-08-08T12:34:56Z\"))",
                 "anonymized": "g.addV(string0).property(string1, 
offsetdatetime0)",
-                "dotnet": "g.AddV((string) \"event\").Property(\"datetime\", 
DateTimeOffset.Parse(\"2023-08-08T00:00Z\"))",
-                "go": "g.AddV(\"event\").Property(\"datetime\", 
time.Date(2023, 8, 8, 0, 0, 0, 0, time.FixedZone(\"UTC+00:00\", 0)))",
-                "groovy": "g.addV(\"event\").property(\"datetime\", 
datetime(\"2023-08-08T00:00:00Z\"))",
-                "java": "g.addV(\"event\").property(\"datetime\", 
OffsetDateTime.parse(\"2023-08-08T00:00Z\"))",
-                "javascript": "g.addV(\"event\").property(\"datetime\", new 
Date('2023-08-08T00:00Z'))",
-                "python": "g.add_v('event').property('datetime', 
datetime.datetime.fromisoformat('2023-08-08T00:00+00:00'))"
+                "dotnet": "g.AddV((string) \"event\").Property(\"datetime\", 
DateTimeOffset.Parse(\"2023-08-08T12:34:56Z\"))",
+                "go": "g.AddV(\"event\").Property(\"datetime\", 
time.Date(2023, 8, 8, 12, 34, 56, 0, time.FixedZone(\"UTC+00:00\", 0)))",
+                "groovy": "g.addV(\"event\").property(\"datetime\", 
datetime(\"2023-08-08T12:34:56Z\"))",
+                "java": "g.addV(\"event\").property(\"datetime\", 
OffsetDateTime.parse(\"2023-08-08T12:34:56Z\"))",
+                "javascript": "g.addV(\"event\").property(\"datetime\", new 
Date('2023-08-08T12:34:56Z'))",
+                "python": "g.add_v('event').property('datetime', 
datetime.datetime.fromisoformat('2023-08-08T12:34:56+00:00'))"
             },
             {
                 "original": 
"g.V().values(\"datetime\").is(P.typeOf(GType.DATETIME)).where(__.is(P.gt(datetime(\"2020-01-01T00:00:00Z\"))))",
@@ -3413,16 +3413,16 @@
         "scenario": "g_injectXdatetimeX_isXtypeOfXGType_DATETIMEXX_groupCount",
         "traversals": [
             {
-                "original": 
"g.inject(datetime(\"2023-08-08T00:00:00Z\")).is(P.typeOf(GType.DATETIME)).groupCount()",
-                "language": 
"g.inject(datetime(\"2023-08-08T00:00:00Z\")).is(P.typeOf(GType.DATETIME)).groupCount()",
-                "canonical": 
"g.inject(datetime(\"2023-08-08T00:00:00Z\")).is(P.typeOf(GType.DATETIME)).groupCount()",
+                "original": 
"g.inject(datetime(\"2023-08-08T12:34:56Z\")).is(P.typeOf(GType.DATETIME)).groupCount()",
+                "language": 
"g.inject(datetime(\"2023-08-08T12:34:56Z\")).is(P.typeOf(GType.DATETIME)).groupCount()",
+                "canonical": 
"g.inject(datetime(\"2023-08-08T12:34:56Z\")).is(P.typeOf(GType.DATETIME)).groupCount()",
                 "anonymized": 
"g.inject(offsetdatetime0).is(P.typeOf(GType.DATETIME)).groupCount()",
-                "dotnet": 
"g.Inject<object>(DateTimeOffset.Parse(\"2023-08-08T00:00Z\")).Is(P.TypeOf(GType.DateTime)).GroupCount<object>()",
-                "go": "g.Inject(time.Date(2023, 8, 8, 0, 0, 0, 0, 
time.FixedZone(\"UTC+00:00\", 
0))).Is(gremlingo.P.TypeOf(gremlingo.GType.DateTime)).GroupCount()",
-                "groovy": 
"g.inject(datetime(\"2023-08-08T00:00:00Z\")).is(P.typeOf(GType.DATETIME)).groupCount()",
-                "java": 
"g.inject(OffsetDateTime.parse(\"2023-08-08T00:00Z\")).is(P.typeOf(GType.DATETIME)).groupCount()",
-                "javascript": "g.inject(new 
Date('2023-08-08T00:00Z')).is(P.typeOf(GType.datetime)).groupCount()",
-                "python": 
"g.inject(datetime.datetime.fromisoformat('2023-08-08T00:00+00:00')).is_(P.type_of(GType.DATETIME)).group_count()"
+                "dotnet": 
"g.Inject<object>(DateTimeOffset.Parse(\"2023-08-08T12:34:56Z\")).Is(P.TypeOf(GType.DateTime)).GroupCount<object>()",
+                "go": "g.Inject(time.Date(2023, 8, 8, 12, 34, 56, 0, 
time.FixedZone(\"UTC+00:00\", 
0))).Is(gremlingo.P.TypeOf(gremlingo.GType.DateTime)).GroupCount()",
+                "groovy": 
"g.inject(datetime(\"2023-08-08T12:34:56Z\")).is(P.typeOf(GType.DATETIME)).groupCount()",
+                "java": 
"g.inject(OffsetDateTime.parse(\"2023-08-08T12:34:56Z\")).is(P.typeOf(GType.DATETIME)).groupCount()",
+                "javascript": "g.inject(new 
Date('2023-08-08T12:34:56Z')).is(P.typeOf(GType.datetime)).groupCount()",
+                "python": 
"g.inject(datetime.datetime.fromisoformat('2023-08-08T12:34:56+00:00')).is_(P.type_of(GType.DATETIME)).group_count()"
             }
         ]
     },
diff --git 
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/data/DateTime.feature
 
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/data/DateTime.feature
index 06956a9185..338b196fd0 100644
--- 
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/data/DateTime.feature
+++ 
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/data/DateTime.feature
@@ -71,7 +71,7 @@ Feature: Data - DATETIME
     Given the empty graph
     And the graph initializer of
       """
-      g.addV("event").property("datetime", datetime("2023-08-08T00:00:00Z"))
+      g.addV("event").property("datetime", datetime("2023-08-08T12:34:56Z"))
       """
     And the traversal of
       """
@@ -80,7 +80,7 @@ Feature: Data - DATETIME
     When iterated to list
     Then the result should be unordered
       | result |
-      | dt[2023-08-08T00:00:00Z] |
+      | dt[2023-08-08T12:34:56Z] |
 
   @AllowDateTimePropertyValues
   Scenario: 
g_V_valuesXdatetimeX_isXtypeOfXGType_DATETIMEXX_chooseXisXeqXdatetimeX2023_08_08XXXX_constantXmatchX_constantXnoMatchXX
@@ -131,9 +131,9 @@ Feature: Data - DATETIME
     Given the empty graph
     And the traversal of
       """
-      
g.inject(datetime("2023-08-08T00:00:00Z")).is(P.typeOf(GType.DATETIME)).groupCount()
+      
g.inject(datetime("2023-08-08T12:34:56Z")).is(P.typeOf(GType.DATETIME)).groupCount()
       """
     When iterated to list
     Then the result should be unordered
       | result |
-      | m[{"dt[2023-08-08T00:00:00Z]":"d[1].l"}] |
+      | m[{"dt[2023-08-08T12:34:56Z]":"d[1].l"}] |

Reply via email to