coordinode 2.1.1__tar.gz → 3.0.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. {coordinode-2.1.1 → coordinode-3.0.0}/LICENSE +1 -1
  2. {coordinode-2.1.1 → coordinode-3.0.0}/PKG-INFO +15 -4
  3. {coordinode-2.1.1 → coordinode-3.0.0}/README.md +14 -3
  4. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/__init__.py +3 -0
  5. coordinode-3.0.0/coordinode/_proto/coordinode/v1/graph/graph_pb2.py +85 -0
  6. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/coordinode/v1/graph/graph_pb2.pyi +4 -2
  7. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/coordinode/v1/query/cypher_pb2.py +26 -24
  8. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/coordinode/v1/query/cypher_pb2.pyi +20 -6
  9. coordinode-3.0.0/coordinode/_proto/coordinode/v1/replication/consistency_pb2.py +46 -0
  10. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/coordinode/v1/replication/consistency_pb2.pyi +23 -18
  11. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/coordinode/v1/session/session_pb2.py +8 -8
  12. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/coordinode/v1/session/session_pb2.pyi +4 -2
  13. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_version.py +2 -2
  14. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/client.py +140 -27
  15. coordinode-2.1.1/coordinode/_proto/coordinode/v1/graph/graph_pb2.py +0 -85
  16. coordinode-2.1.1/coordinode/_proto/coordinode/v1/replication/consistency_pb2.py +0 -44
  17. {coordinode-2.1.1 → coordinode-3.0.0}/.gitignore +0 -0
  18. {coordinode-2.1.1 → coordinode-3.0.0}/NOTICE +0 -0
  19. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/__init__.py +0 -0
  20. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/coordinode/__init__.py +0 -0
  21. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/coordinode/v1/__init__.py +0 -0
  22. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/coordinode/v1/admin/__init__.py +0 -0
  23. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/coordinode/v1/admin/cluster_pb2.py +0 -0
  24. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/coordinode/v1/admin/cluster_pb2.pyi +0 -0
  25. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/coordinode/v1/admin/cluster_pb2_grpc.py +0 -0
  26. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/coordinode/v1/common/__init__.py +0 -0
  27. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/coordinode/v1/common/pagination_pb2.py +0 -0
  28. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/coordinode/v1/common/pagination_pb2.pyi +0 -0
  29. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/coordinode/v1/common/pagination_pb2_grpc.py +0 -0
  30. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/coordinode/v1/common/types_pb2.py +0 -0
  31. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/coordinode/v1/common/types_pb2.pyi +0 -0
  32. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/coordinode/v1/common/types_pb2_grpc.py +0 -0
  33. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/coordinode/v1/graph/__init__.py +0 -0
  34. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/coordinode/v1/graph/blob_pb2.py +0 -0
  35. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/coordinode/v1/graph/blob_pb2.pyi +0 -0
  36. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/coordinode/v1/graph/blob_pb2_grpc.py +0 -0
  37. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/coordinode/v1/graph/graph_pb2_grpc.py +0 -0
  38. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/coordinode/v1/graph/schema_pb2.py +0 -0
  39. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/coordinode/v1/graph/schema_pb2.pyi +0 -0
  40. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/coordinode/v1/graph/schema_pb2_grpc.py +0 -0
  41. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/coordinode/v1/health/__init__.py +0 -0
  42. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/coordinode/v1/health/health_pb2.py +0 -0
  43. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/coordinode/v1/health/health_pb2.pyi +0 -0
  44. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/coordinode/v1/health/health_pb2_grpc.py +0 -0
  45. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/coordinode/v1/query/__init__.py +0 -0
  46. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/coordinode/v1/query/cypher_pb2_grpc.py +0 -0
  47. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/coordinode/v1/query/text_pb2.py +0 -0
  48. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/coordinode/v1/query/text_pb2.pyi +0 -0
  49. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/coordinode/v1/query/text_pb2_grpc.py +0 -0
  50. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/coordinode/v1/query/vector_pb2.py +0 -0
  51. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/coordinode/v1/query/vector_pb2.pyi +0 -0
  52. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/coordinode/v1/query/vector_pb2_grpc.py +0 -0
  53. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/coordinode/v1/replication/__init__.py +0 -0
  54. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/coordinode/v1/replication/cdc_pb2.py +0 -0
  55. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/coordinode/v1/replication/cdc_pb2.pyi +0 -0
  56. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/coordinode/v1/replication/cdc_pb2_grpc.py +0 -0
  57. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/coordinode/v1/replication/consistency_pb2_grpc.py +0 -0
  58. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/coordinode/v1/replication/raft_pb2.py +0 -0
  59. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/coordinode/v1/replication/raft_pb2.pyi +0 -0
  60. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/coordinode/v1/replication/raft_pb2_grpc.py +0 -0
  61. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/coordinode/v1/replication/transfer_pb2.py +0 -0
  62. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/coordinode/v1/replication/transfer_pb2.pyi +0 -0
  63. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/coordinode/v1/replication/transfer_pb2_grpc.py +0 -0
  64. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/coordinode/v1/session/__init__.py +0 -0
  65. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/coordinode/v1/session/session_pb2_grpc.py +0 -0
  66. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/google/__init__.py +0 -0
  67. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/google/api/__init__.py +0 -0
  68. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/google/api/annotations_pb2.py +0 -0
  69. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/google/api/annotations_pb2.pyi +0 -0
  70. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/google/api/annotations_pb2_grpc.py +0 -0
  71. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/google/api/http_pb2.py +0 -0
  72. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/google/api/http_pb2.pyi +0 -0
  73. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_proto/google/api/http_pb2_grpc.py +0 -0
  74. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_source.py +0 -0
  75. {coordinode-2.1.1 → coordinode-3.0.0}/coordinode/_types.py +0 -0
  76. {coordinode-2.1.1 → coordinode-3.0.0}/pyproject.toml +0 -0
@@ -187,7 +187,7 @@
187
187
  same "printed page" as the copyright notice for easier
188
188
  identification within third-party archives.
189
189
 
190
- Copyright [yyyy] [name of copyright owner]
190
+ Copyright 2026 Dmitry Prudnikov
191
191
 
192
192
  Licensed under the Apache License, Version 2.0 (the "License");
193
193
  you may not use this file except in compliance with the License.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: coordinode
3
- Version: 2.1.1
3
+ Version: 3.0.0
4
4
  Summary: Python client for CoordiNode — graph + vector + full-text database
5
5
  Project-URL: Homepage, https://github.com/structured-world/coordinode
6
6
  Project-URL: Repository, https://github.com/structured-world/coordinode-python
@@ -203,8 +203,12 @@ db.cypher(
203
203
  read_concern="majority",
204
204
  )
205
205
 
206
- # Durable write, acknowledged by a majority of the cluster
207
- db.cypher("CREATE (n:Event {t: timestamp()})", write_concern="majority")
206
+ # Writes default to a journaled majority. Weaken it explicitly per write,
207
+ # only for data that may be lost with its leader:
208
+ from coordinode import WriteConcern
209
+
210
+ db.cypher("CREATE (n:Hit {t: timestamp()})", write_concern=1) # leader only
211
+ db.cypher("CREATE (n:Hit {t: timestamp()})", write_concern=WriteConcern(w=1, journal="memory"))
208
212
 
209
213
  # Causal read: see at least the state at raft index 42. The fence is about
210
214
  # which replica may answer, so it is the READ concern that has to be majority.
@@ -213,12 +217,19 @@ db.cypher(
213
217
  after_index=42,
214
218
  read_concern="majority",
215
219
  )
220
+
221
+ # Write only if the node is still at the version you read.
222
+ node = db.get_node(node_id)
223
+ with db.transaction() as tx:
224
+ tx.cypher("MATCH (n) WHERE id(n) = $id SET n.seen = true", params={"id": node_id})
225
+ tx.commit(expect={node.id: node.version}) # ABORTED / REVISION_MISMATCH if it moved
226
+ # tx.commit_ts is when the write landed: at_timestamp=tx.commit_ts reads exactly it.
216
227
  ```
217
228
 
218
229
  Accepted values:
219
230
 
220
231
  - ``read_concern``: ``local`` (default) · ``majority`` · ``linearizable`` · ``snapshot``. Causal reads (``after_index`` > 0) require ``majority`` here.
221
- - ``write_concern``: ``w0`` · ``memory`` · ``cache`` · ``w1`` (default) · ``majority``
232
+ - ``write_concern``: ``"majority"`` (default) · a member count (``1`` leader only, ``0`` fire-and-forget) · ``WriteConcern(w, journal, timeout_ms)`` with ``journal`` one of ``journal`` (default) · ``cache`` · ``memory``. The volatile ``cache`` and ``memory`` states are accepted only with ``w`` of 0 or 1.
222
233
  - ``read_preference``: ``primary`` (default) · ``primary_preferred`` · ``secondary`` · ``secondary_preferred`` · ``nearest``
223
234
 
224
235
  ## Related Packages
@@ -171,8 +171,12 @@ db.cypher(
171
171
  read_concern="majority",
172
172
  )
173
173
 
174
- # Durable write, acknowledged by a majority of the cluster
175
- db.cypher("CREATE (n:Event {t: timestamp()})", write_concern="majority")
174
+ # Writes default to a journaled majority. Weaken it explicitly per write,
175
+ # only for data that may be lost with its leader:
176
+ from coordinode import WriteConcern
177
+
178
+ db.cypher("CREATE (n:Hit {t: timestamp()})", write_concern=1) # leader only
179
+ db.cypher("CREATE (n:Hit {t: timestamp()})", write_concern=WriteConcern(w=1, journal="memory"))
176
180
 
177
181
  # Causal read: see at least the state at raft index 42. The fence is about
178
182
  # which replica may answer, so it is the READ concern that has to be majority.
@@ -181,12 +185,19 @@ db.cypher(
181
185
  after_index=42,
182
186
  read_concern="majority",
183
187
  )
188
+
189
+ # Write only if the node is still at the version you read.
190
+ node = db.get_node(node_id)
191
+ with db.transaction() as tx:
192
+ tx.cypher("MATCH (n) WHERE id(n) = $id SET n.seen = true", params={"id": node_id})
193
+ tx.commit(expect={node.id: node.version}) # ABORTED / REVISION_MISMATCH if it moved
194
+ # tx.commit_ts is when the write landed: at_timestamp=tx.commit_ts reads exactly it.
184
195
  ```
185
196
 
186
197
  Accepted values:
187
198
 
188
199
  - ``read_concern``: ``local`` (default) · ``majority`` · ``linearizable`` · ``snapshot``. Causal reads (``after_index`` > 0) require ``majority`` here.
189
- - ``write_concern``: ``w0`` · ``memory`` · ``cache`` · ``w1`` (default) · ``majority``
200
+ - ``write_concern``: ``"majority"`` (default) · a member count (``1`` leader only, ``0`` fire-and-forget) · ``WriteConcern(w, journal, timeout_ms)`` with ``journal`` one of ``journal`` (default) · ``cache`` · ``memory``. The volatile ``cache`` and ``memory`` states are accepted only with ``w`` of 0 or 1.
190
201
  - ``read_preference``: ``primary`` (default) · ``primary_preferred`` · ``secondary`` · ``secondary_preferred`` · ``nearest``
191
202
 
192
203
  ## Related Packages
@@ -33,6 +33,7 @@ from coordinode.client import (
33
33
  Transaction,
34
34
  TraverseResult,
35
35
  VectorResult,
36
+ WriteConcern,
36
37
  )
37
38
 
38
39
  try:
@@ -52,6 +53,8 @@ __all__ = [
52
53
  # requires the constructor, not just the shape.
53
54
  "MultiVector",
54
55
  "Path",
56
+ # How a write is acknowledged: member count or majority, and how durably.
57
+ "WriteConcern",
55
58
  "NodeResult",
56
59
  "EdgeResult",
57
60
  "VectorResult",
@@ -0,0 +1,85 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # NO CHECKED-IN PROTOBUF GENCODE
4
+ # source: coordinode/v1/graph/graph.proto
5
+ # Protobuf Python Version: 7.35.1
6
+ """Generated protocol buffer code."""
7
+ from google.protobuf import descriptor as _descriptor
8
+ from google.protobuf import descriptor_pool as _descriptor_pool
9
+ from google.protobuf import runtime_version as _runtime_version
10
+ from google.protobuf import symbol_database as _symbol_database
11
+ from google.protobuf.internal import builder as _builder
12
+ _runtime_version.ValidateProtobufRuntimeVersion(
13
+ _runtime_version.Domain.PUBLIC,
14
+ 7,
15
+ 35,
16
+ 1,
17
+ '',
18
+ 'coordinode/v1/graph/graph.proto'
19
+ )
20
+ # @@protoc_insertion_point(imports)
21
+
22
+ _sym_db = _symbol_database.Default()
23
+
24
+
25
+ from coordinode._proto.coordinode.v1.common import types_pb2 as coordinode_dot_v1_dot_common_dot_types__pb2
26
+ from coordinode._proto.coordinode.v1.common import pagination_pb2 as coordinode_dot_v1_dot_common_dot_pagination__pb2
27
+ from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2
28
+
29
+
30
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1f\x63oordinode/v1/graph/graph.proto\x12\x13\x63oordinode.v1.graph\x1a coordinode/v1/common/types.proto\x1a%coordinode/v1/common/pagination.proto\x1a\x1cgoogle/api/annotations.proto\"\xe3\x01\n\x04Node\x12\x0f\n\x07node_id\x18\x01 \x01(\x04\x12\x0e\n\x06labels\x18\x02 \x03(\t\x12=\n\nproperties\x18\x03 \x03(\x0b\x32).coordinode.v1.graph.Node.PropertiesEntry\x12\x12\n\nelement_id\x18\x04 \x01(\t\x12\x0f\n\x07version\x18\x05 \x01(\x04\x1aV\n\x0fPropertiesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x32\n\x05value\x18\x02 \x01(\x0b\x32#.coordinode.v1.common.PropertyValue:\x02\x38\x01\"\x85\x02\n\x04\x45\x64ge\x12\x0f\n\x07\x65\x64ge_id\x18\x01 \x01(\x04\x12\x11\n\tedge_type\x18\x02 \x01(\t\x12\x16\n\x0esource_node_id\x18\x03 \x01(\x04\x12\x16\n\x0etarget_node_id\x18\x04 \x01(\x04\x12=\n\nproperties\x18\x05 \x03(\x0b\x32).coordinode.v1.graph.Edge.PropertiesEntry\x12\x12\n\nelement_id\x18\x06 \x01(\t\x1aV\n\x0fPropertiesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x32\n\x05value\x18\x02 \x01(\x0b\x32#.coordinode.v1.common.PropertyValue:\x02\x38\x01\"\xc7\x01\n\x11\x43reateNodeRequest\x12\x0e\n\x06labels\x18\x01 \x03(\t\x12J\n\nproperties\x18\x02 \x03(\x0b\x32\x36.coordinode.v1.graph.CreateNodeRequest.PropertiesEntry\x1aV\n\x0fPropertiesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x32\n\x05value\x18\x02 \x01(\x0b\x32#.coordinode.v1.common.PropertyValue:\x02\x38\x01\"P\n\x17\x43reateNodesBatchRequest\x12\x35\n\x05nodes\x18\x01 \x03(\x0b\x32&.coordinode.v1.graph.CreateNodeRequest\"D\n\x18\x43reateNodesBatchResponse\x12(\n\x05nodes\x18\x01 \x03(\x0b\x32\x19.coordinode.v1.graph.Node\"!\n\x0eGetNodeRequest\x12\x0f\n\x07node_id\x18\x01 \x01(\x04\"\xfa\x01\n\x11\x43reateEdgeRequest\x12\x11\n\tedge_type\x18\x01 \x01(\t\x12\x16\n\x0esource_node_id\x18\x02 \x01(\x04\x12\x16\n\x0etarget_node_id\x18\x03 \x01(\x04\x12J\n\nproperties\x18\x04 \x03(\x0b\x32\x36.coordinode.v1.graph.CreateEdgeRequest.PropertiesEntry\x1aV\n\x0fPropertiesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x32\n\x05value\x18\x02 \x01(\x0b\x32#.coordinode.v1.common.PropertyValue:\x02\x38\x01\"\xc7\x01\n\x0fTraverseRequest\x12\x15\n\rstart_node_id\x18\x01 \x01(\x04\x12\x11\n\tedge_type\x18\x02 \x01(\t\x12:\n\tdirection\x18\x03 \x01(\x0e\x32\'.coordinode.v1.graph.TraversalDirection\x12\x11\n\tmax_depth\x18\x04 \x01(\r\x12;\n\npagination\x18\x05 \x01(\x0b\x32\'.coordinode.v1.common.PaginationRequest\"\xa4\x01\n\x10TraverseResponse\x12(\n\x05nodes\x18\x01 \x03(\x0b\x32\x19.coordinode.v1.graph.Node\x12(\n\x05\x65\x64ges\x18\x02 \x03(\x0b\x32\x19.coordinode.v1.graph.Edge\x12<\n\npagination\x18\x03 \x01(\x0b\x32(.coordinode.v1.common.PaginationResponse*\x9a\x01\n\x12TraversalDirection\x12#\n\x1fTRAVERSAL_DIRECTION_UNSPECIFIED\x10\x00\x12 \n\x1cTRAVERSAL_DIRECTION_OUTBOUND\x10\x01\x12\x1f\n\x1bTRAVERSAL_DIRECTION_INBOUND\x10\x02\x12\x1c\n\x18TRAVERSAL_DIRECTION_BOTH\x10\x03\x32\xe2\x04\n\x0cGraphService\x12k\n\nCreateNode\x12&.coordinode.v1.graph.CreateNodeRequest\x1a\x19.coordinode.v1.graph.Node\"\x1a\x82\xd3\xe4\x93\x02\x14\"\x0f/v1/graph/nodes:\x01*\x12\x91\x01\n\x10\x43reateNodesBatch\x12,.coordinode.v1.graph.CreateNodesBatchRequest\x1a-.coordinode.v1.graph.CreateNodesBatchResponse\" \x82\xd3\xe4\x93\x02\x1a\"\x15/v1/graph/nodes:batch:\x01*\x12l\n\x07GetNode\x12#.coordinode.v1.graph.GetNodeRequest\x1a\x19.coordinode.v1.graph.Node\"!\x82\xd3\xe4\x93\x02\x1b\x12\x19/v1/graph/nodes/{node_id}\x12k\n\nCreateEdge\x12&.coordinode.v1.graph.CreateEdgeRequest\x1a\x19.coordinode.v1.graph.Edge\"\x1a\x82\xd3\xe4\x93\x02\x14\"\x0f/v1/graph/edges:\x01*\x12v\n\x08Traverse\x12$.coordinode.v1.graph.TraverseRequest\x1a%.coordinode.v1.graph.TraverseResponse\"\x1d\x82\xd3\xe4\x93\x02\x17\"\x12/v1/graph/traverse:\x01*b\x06proto3')
31
+
32
+ _globals = globals()
33
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
34
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'coordinode.v1.graph.graph_pb2', _globals)
35
+ if not _descriptor._USE_C_DESCRIPTORS:
36
+ DESCRIPTOR._loaded_options = None
37
+ _globals['_NODE_PROPERTIESENTRY']._loaded_options = None
38
+ _globals['_NODE_PROPERTIESENTRY']._serialized_options = b'8\001'
39
+ _globals['_EDGE_PROPERTIESENTRY']._loaded_options = None
40
+ _globals['_EDGE_PROPERTIESENTRY']._serialized_options = b'8\001'
41
+ _globals['_CREATENODEREQUEST_PROPERTIESENTRY']._loaded_options = None
42
+ _globals['_CREATENODEREQUEST_PROPERTIESENTRY']._serialized_options = b'8\001'
43
+ _globals['_CREATEEDGEREQUEST_PROPERTIESENTRY']._loaded_options = None
44
+ _globals['_CREATEEDGEREQUEST_PROPERTIESENTRY']._serialized_options = b'8\001'
45
+ _globals['_GRAPHSERVICE'].methods_by_name['CreateNode']._loaded_options = None
46
+ _globals['_GRAPHSERVICE'].methods_by_name['CreateNode']._serialized_options = b'\202\323\344\223\002\024\"\017/v1/graph/nodes:\001*'
47
+ _globals['_GRAPHSERVICE'].methods_by_name['CreateNodesBatch']._loaded_options = None
48
+ _globals['_GRAPHSERVICE'].methods_by_name['CreateNodesBatch']._serialized_options = b'\202\323\344\223\002\032\"\025/v1/graph/nodes:batch:\001*'
49
+ _globals['_GRAPHSERVICE'].methods_by_name['GetNode']._loaded_options = None
50
+ _globals['_GRAPHSERVICE'].methods_by_name['GetNode']._serialized_options = b'\202\323\344\223\002\033\022\031/v1/graph/nodes/{node_id}'
51
+ _globals['_GRAPHSERVICE'].methods_by_name['CreateEdge']._loaded_options = None
52
+ _globals['_GRAPHSERVICE'].methods_by_name['CreateEdge']._serialized_options = b'\202\323\344\223\002\024\"\017/v1/graph/edges:\001*'
53
+ _globals['_GRAPHSERVICE'].methods_by_name['Traverse']._loaded_options = None
54
+ _globals['_GRAPHSERVICE'].methods_by_name['Traverse']._serialized_options = b'\202\323\344\223\002\027\"\022/v1/graph/traverse:\001*'
55
+ _globals['_TRAVERSALDIRECTION']._serialized_start=1665
56
+ _globals['_TRAVERSALDIRECTION']._serialized_end=1819
57
+ _globals['_NODE']._serialized_start=160
58
+ _globals['_NODE']._serialized_end=387
59
+ _globals['_NODE_PROPERTIESENTRY']._serialized_start=301
60
+ _globals['_NODE_PROPERTIESENTRY']._serialized_end=387
61
+ _globals['_EDGE']._serialized_start=390
62
+ _globals['_EDGE']._serialized_end=651
63
+ _globals['_EDGE_PROPERTIESENTRY']._serialized_start=301
64
+ _globals['_EDGE_PROPERTIESENTRY']._serialized_end=387
65
+ _globals['_CREATENODEREQUEST']._serialized_start=654
66
+ _globals['_CREATENODEREQUEST']._serialized_end=853
67
+ _globals['_CREATENODEREQUEST_PROPERTIESENTRY']._serialized_start=301
68
+ _globals['_CREATENODEREQUEST_PROPERTIESENTRY']._serialized_end=387
69
+ _globals['_CREATENODESBATCHREQUEST']._serialized_start=855
70
+ _globals['_CREATENODESBATCHREQUEST']._serialized_end=935
71
+ _globals['_CREATENODESBATCHRESPONSE']._serialized_start=937
72
+ _globals['_CREATENODESBATCHRESPONSE']._serialized_end=1005
73
+ _globals['_GETNODEREQUEST']._serialized_start=1007
74
+ _globals['_GETNODEREQUEST']._serialized_end=1040
75
+ _globals['_CREATEEDGEREQUEST']._serialized_start=1043
76
+ _globals['_CREATEEDGEREQUEST']._serialized_end=1293
77
+ _globals['_CREATEEDGEREQUEST_PROPERTIESENTRY']._serialized_start=301
78
+ _globals['_CREATEEDGEREQUEST_PROPERTIESENTRY']._serialized_end=387
79
+ _globals['_TRAVERSEREQUEST']._serialized_start=1296
80
+ _globals['_TRAVERSEREQUEST']._serialized_end=1495
81
+ _globals['_TRAVERSERESPONSE']._serialized_start=1498
82
+ _globals['_TRAVERSERESPONSE']._serialized_end=1662
83
+ _globals['_GRAPHSERVICE']._serialized_start=1822
84
+ _globals['_GRAPHSERVICE']._serialized_end=2432
85
+ # @@protoc_insertion_point(module_scope)
@@ -22,7 +22,7 @@ TRAVERSAL_DIRECTION_INBOUND: TraversalDirection
22
22
  TRAVERSAL_DIRECTION_BOTH: TraversalDirection
23
23
 
24
24
  class Node(_message.Message):
25
- __slots__ = ("node_id", "labels", "properties", "element_id")
25
+ __slots__ = ("node_id", "labels", "properties", "element_id", "version")
26
26
  class PropertiesEntry(_message.Message):
27
27
  __slots__ = ("key", "value")
28
28
  KEY_FIELD_NUMBER: _ClassVar[int]
@@ -34,11 +34,13 @@ class Node(_message.Message):
34
34
  LABELS_FIELD_NUMBER: _ClassVar[int]
35
35
  PROPERTIES_FIELD_NUMBER: _ClassVar[int]
36
36
  ELEMENT_ID_FIELD_NUMBER: _ClassVar[int]
37
+ VERSION_FIELD_NUMBER: _ClassVar[int]
37
38
  node_id: int
38
39
  labels: _containers.RepeatedScalarFieldContainer[str]
39
40
  properties: _containers.MessageMap[str, _types_pb2.PropertyValue]
40
41
  element_id: str
41
- def __init__(self, node_id: _Optional[int] = ..., labels: _Optional[_Iterable[str]] = ..., properties: _Optional[_Mapping[str, _types_pb2.PropertyValue]] = ..., element_id: _Optional[str] = ...) -> None: ...
42
+ version: int
43
+ def __init__(self, node_id: _Optional[int] = ..., labels: _Optional[_Iterable[str]] = ..., properties: _Optional[_Mapping[str, _types_pb2.PropertyValue]] = ..., element_id: _Optional[str] = ..., version: _Optional[int] = ...) -> None: ...
42
44
 
43
45
  class Edge(_message.Message):
44
46
  __slots__ = ("edge_id", "edge_type", "source_node_id", "target_node_id", "properties", "element_id")
@@ -27,7 +27,7 @@ from coordinode._proto.coordinode.v1.replication import consistency_pb2 as coord
27
27
  from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2
28
28
 
29
29
 
30
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n coordinode/v1/query/cypher.proto\x12\x13\x63oordinode.v1.query\x1a coordinode/v1/common/types.proto\x1a+coordinode/v1/replication/consistency.proto\x1a\x1cgoogle/api/annotations.proto\"\xa6\x03\n\x14\x45xecuteCypherRequest\x12\r\n\x05query\x18\x01 \x01(\t\x12M\n\nparameters\x18\x02 \x03(\x0b\x32\x39.coordinode.v1.query.ExecuteCypherRequest.ParametersEntry\x12\x42\n\x0fread_preference\x18\x03 \x01(\x0e\x32).coordinode.v1.replication.ReadPreference\x12<\n\x0cread_concern\x18\x04 \x01(\x0b\x32&.coordinode.v1.replication.ReadConcern\x12>\n\rwrite_concern\x18\x05 \x01(\x0b\x32\'.coordinode.v1.replication.WriteConcern\x12\x16\n\x0etransaction_id\x18\x06 \x01(\x04\x1aV\n\x0fParametersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x32\n\x05value\x18\x02 \x01(\x0b\x32#.coordinode.v1.common.PropertyValue:\x02\x38\x01\"\x80\x01\n\x15\x45xecuteCypherResponse\x12\x0f\n\x07\x63olumns\x18\x01 \x03(\t\x12&\n\x04rows\x18\x02 \x03(\x0b\x32\x18.coordinode.v1.query.Row\x12.\n\x05stats\x18\x03 \x01(\x0b\x32\x1f.coordinode.v1.query.QueryStats\":\n\x03Row\x12\x33\n\x06values\x18\x01 \x03(\x0b\x32#.coordinode.v1.common.PropertyValue\"\xcc\x01\n\nQueryStats\x12\x15\n\rnodes_created\x18\x01 \x01(\x03\x12\x15\n\rnodes_deleted\x18\x02 \x01(\x03\x12\x15\n\redges_created\x18\x03 \x01(\x03\x12\x15\n\redges_deleted\x18\x04 \x01(\x03\x12\x16\n\x0eproperties_set\x18\x05 \x01(\x03\x12\x19\n\x11\x65xecution_time_ms\x18\x06 \x01(\x03\x12\x15\n\rapplied_index\x18\x07 \x01(\x04\x12\x18\n\x10served_by_leader\x18\x08 \x01(\x08\"\xcc\x01\n\x14\x45xplainCypherRequest\x12\r\n\x05query\x18\x01 \x01(\t\x12M\n\nparameters\x18\x02 \x03(\x0b\x32\x39.coordinode.v1.query.ExplainCypherRequest.ParametersEntry\x1aV\n\x0fParametersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x32\n\x05value\x18\x02 \x01(\x0b\x32#.coordinode.v1.common.PropertyValue:\x02\x38\x01\"E\n\x15\x45xplainCypherResponse\x12,\n\x04plan\x18\x01 \x01(\x0b\x32\x1e.coordinode.v1.query.QueryPlan\"\xd5\x01\n\tQueryPlan\x12\x10\n\x08operator\x18\x01 \x01(\t\x12<\n\x07\x64\x65tails\x18\x02 \x03(\x0b\x32+.coordinode.v1.query.QueryPlan.DetailsEntry\x12\x30\n\x08\x63hildren\x18\x03 \x03(\x0b\x32\x1e.coordinode.v1.query.QueryPlan\x12\x16\n\x0e\x65stimated_rows\x18\x04 \x01(\x01\x1a.\n\x0c\x44\x65tailsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x19\n\x17\x42\x65ginTransactionRequest\"2\n\x18\x42\x65ginTransactionResponse\x12\x16\n\x0etransaction_id\x18\x01 \x01(\x04\"2\n\x18\x43ommitTransactionRequest\x12\x16\n\x0etransaction_id\x18\x01 \x01(\x04\"2\n\x19\x43ommitTransactionResponse\x12\x15\n\rapplied_index\x18\x01 \x01(\x04\"4\n\x1aRollbackTransactionRequest\x12\x16\n\x0etransaction_id\x18\x01 \x01(\x04\"\x1d\n\x1bRollbackTransactionResponse2\x81\x06\n\rCypherService\x12\x83\x01\n\rExecuteCypher\x12).coordinode.v1.query.ExecuteCypherRequest\x1a*.coordinode.v1.query.ExecuteCypherResponse\"\x1b\x82\xd3\xe4\x93\x02\x15\"\x10/v1/query/cypher:\x01*\x12\x8b\x01\n\rExplainCypher\x12).coordinode.v1.query.ExplainCypherRequest\x1a*.coordinode.v1.query.ExplainCypherResponse\"#\x82\xd3\xe4\x93\x02\x1d\"\x18/v1/query/cypher/explain:\x01*\x12\x97\x01\n\x10\x42\x65ginTransaction\x12,.coordinode.v1.query.BeginTransactionRequest\x1a-.coordinode.v1.query.BeginTransactionResponse\"&\x82\xd3\xe4\x93\x02 \"\x1b/v1/query/transaction/begin:\x01*\x12\x9b\x01\n\x11\x43ommitTransaction\x12-.coordinode.v1.query.CommitTransactionRequest\x1a..coordinode.v1.query.CommitTransactionResponse\"\'\x82\xd3\xe4\x93\x02!\"\x1c/v1/query/transaction/commit:\x01*\x12\xa3\x01\n\x13RollbackTransaction\x12/.coordinode.v1.query.RollbackTransactionRequest\x1a\x30.coordinode.v1.query.RollbackTransactionResponse\")\x82\xd3\xe4\x93\x02#\"\x1e/v1/query/transaction/rollback:\x01*b\x06proto3')
30
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n coordinode/v1/query/cypher.proto\x12\x13\x63oordinode.v1.query\x1a coordinode/v1/common/types.proto\x1a+coordinode/v1/replication/consistency.proto\x1a\x1cgoogle/api/annotations.proto\"\xa6\x03\n\x14\x45xecuteCypherRequest\x12\r\n\x05query\x18\x01 \x01(\t\x12M\n\nparameters\x18\x02 \x03(\x0b\x32\x39.coordinode.v1.query.ExecuteCypherRequest.ParametersEntry\x12\x42\n\x0fread_preference\x18\x03 \x01(\x0e\x32).coordinode.v1.replication.ReadPreference\x12<\n\x0cread_concern\x18\x04 \x01(\x0b\x32&.coordinode.v1.replication.ReadConcern\x12>\n\rwrite_concern\x18\x05 \x01(\x0b\x32\'.coordinode.v1.replication.WriteConcern\x12\x16\n\x0etransaction_id\x18\x06 \x01(\x04\x1aV\n\x0fParametersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x32\n\x05value\x18\x02 \x01(\x0b\x32#.coordinode.v1.common.PropertyValue:\x02\x38\x01\"\x80\x01\n\x15\x45xecuteCypherResponse\x12\x0f\n\x07\x63olumns\x18\x01 \x03(\t\x12&\n\x04rows\x18\x02 \x03(\x0b\x32\x18.coordinode.v1.query.Row\x12.\n\x05stats\x18\x03 \x01(\x0b\x32\x1f.coordinode.v1.query.QueryStats\":\n\x03Row\x12\x33\n\x06values\x18\x01 \x03(\x0b\x32#.coordinode.v1.common.PropertyValue\"\xdf\x01\n\nQueryStats\x12\x15\n\rnodes_created\x18\x01 \x01(\x03\x12\x15\n\rnodes_deleted\x18\x02 \x01(\x03\x12\x15\n\redges_created\x18\x03 \x01(\x03\x12\x15\n\redges_deleted\x18\x04 \x01(\x03\x12\x16\n\x0eproperties_set\x18\x05 \x01(\x03\x12\x19\n\x11\x65xecution_time_ms\x18\x06 \x01(\x03\x12\x15\n\rapplied_index\x18\x07 \x01(\x04\x12\x18\n\x10served_by_leader\x18\x08 \x01(\x08\x12\x11\n\tcommit_ts\x18\t \x01(\x04\"\xcc\x01\n\x14\x45xplainCypherRequest\x12\r\n\x05query\x18\x01 \x01(\t\x12M\n\nparameters\x18\x02 \x03(\x0b\x32\x39.coordinode.v1.query.ExplainCypherRequest.ParametersEntry\x1aV\n\x0fParametersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x32\n\x05value\x18\x02 \x01(\x0b\x32#.coordinode.v1.common.PropertyValue:\x02\x38\x01\"E\n\x15\x45xplainCypherResponse\x12,\n\x04plan\x18\x01 \x01(\x0b\x32\x1e.coordinode.v1.query.QueryPlan\"\xd5\x01\n\tQueryPlan\x12\x10\n\x08operator\x18\x01 \x01(\t\x12<\n\x07\x64\x65tails\x18\x02 \x03(\x0b\x32+.coordinode.v1.query.QueryPlan.DetailsEntry\x12\x30\n\x08\x63hildren\x18\x03 \x03(\x0b\x32\x1e.coordinode.v1.query.QueryPlan\x12\x16\n\x0e\x65stimated_rows\x18\x04 \x01(\x01\x1a.\n\x0c\x44\x65tailsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x19\n\x17\x42\x65ginTransactionRequest\"2\n\x18\x42\x65ginTransactionResponse\x12\x16\n\x0etransaction_id\x18\x01 \x01(\x04\"l\n\x18\x43ommitTransactionRequest\x12\x16\n\x0etransaction_id\x18\x01 \x01(\x04\x12\x38\n\x06\x65xpect\x18\x02 \x03(\x0b\x32(.coordinode.v1.query.ExpectedNodeVersion\"H\n\x13\x45xpectedNodeVersion\x12\x0f\n\x07node_id\x18\x01 \x01(\x04\x12\x14\n\x07version\x18\x02 \x01(\x04H\x00\x88\x01\x01\x42\n\n\x08_version\"E\n\x19\x43ommitTransactionResponse\x12\x15\n\rapplied_index\x18\x01 \x01(\x04\x12\x11\n\tcommit_ts\x18\x02 \x01(\x04\"4\n\x1aRollbackTransactionRequest\x12\x16\n\x0etransaction_id\x18\x01 \x01(\x04\"\x1d\n\x1bRollbackTransactionResponse2\x81\x06\n\rCypherService\x12\x83\x01\n\rExecuteCypher\x12).coordinode.v1.query.ExecuteCypherRequest\x1a*.coordinode.v1.query.ExecuteCypherResponse\"\x1b\x82\xd3\xe4\x93\x02\x15\"\x10/v1/query/cypher:\x01*\x12\x8b\x01\n\rExplainCypher\x12).coordinode.v1.query.ExplainCypherRequest\x1a*.coordinode.v1.query.ExplainCypherResponse\"#\x82\xd3\xe4\x93\x02\x1d\"\x18/v1/query/cypher/explain:\x01*\x12\x97\x01\n\x10\x42\x65ginTransaction\x12,.coordinode.v1.query.BeginTransactionRequest\x1a-.coordinode.v1.query.BeginTransactionResponse\"&\x82\xd3\xe4\x93\x02 \"\x1b/v1/query/transaction/begin:\x01*\x12\x9b\x01\n\x11\x43ommitTransaction\x12-.coordinode.v1.query.CommitTransactionRequest\x1a..coordinode.v1.query.CommitTransactionResponse\"\'\x82\xd3\xe4\x93\x02!\"\x1c/v1/query/transaction/commit:\x01*\x12\xa3\x01\n\x13RollbackTransaction\x12/.coordinode.v1.query.RollbackTransactionRequest\x1a\x30.coordinode.v1.query.RollbackTransactionResponse\")\x82\xd3\xe4\x93\x02#\"\x1e/v1/query/transaction/rollback:\x01*b\x06proto3')
31
31
 
32
32
  _globals = globals()
33
33
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -59,29 +59,31 @@ if not _descriptor._USE_C_DESCRIPTORS:
59
59
  _globals['_ROW']._serialized_start=722
60
60
  _globals['_ROW']._serialized_end=780
61
61
  _globals['_QUERYSTATS']._serialized_start=783
62
- _globals['_QUERYSTATS']._serialized_end=987
63
- _globals['_EXPLAINCYPHERREQUEST']._serialized_start=990
64
- _globals['_EXPLAINCYPHERREQUEST']._serialized_end=1194
62
+ _globals['_QUERYSTATS']._serialized_end=1006
63
+ _globals['_EXPLAINCYPHERREQUEST']._serialized_start=1009
64
+ _globals['_EXPLAINCYPHERREQUEST']._serialized_end=1213
65
65
  _globals['_EXPLAINCYPHERREQUEST_PARAMETERSENTRY']._serialized_start=503
66
66
  _globals['_EXPLAINCYPHERREQUEST_PARAMETERSENTRY']._serialized_end=589
67
- _globals['_EXPLAINCYPHERRESPONSE']._serialized_start=1196
68
- _globals['_EXPLAINCYPHERRESPONSE']._serialized_end=1265
69
- _globals['_QUERYPLAN']._serialized_start=1268
70
- _globals['_QUERYPLAN']._serialized_end=1481
71
- _globals['_QUERYPLAN_DETAILSENTRY']._serialized_start=1435
72
- _globals['_QUERYPLAN_DETAILSENTRY']._serialized_end=1481
73
- _globals['_BEGINTRANSACTIONREQUEST']._serialized_start=1483
74
- _globals['_BEGINTRANSACTIONREQUEST']._serialized_end=1508
75
- _globals['_BEGINTRANSACTIONRESPONSE']._serialized_start=1510
76
- _globals['_BEGINTRANSACTIONRESPONSE']._serialized_end=1560
77
- _globals['_COMMITTRANSACTIONREQUEST']._serialized_start=1562
78
- _globals['_COMMITTRANSACTIONREQUEST']._serialized_end=1612
79
- _globals['_COMMITTRANSACTIONRESPONSE']._serialized_start=1614
80
- _globals['_COMMITTRANSACTIONRESPONSE']._serialized_end=1664
81
- _globals['_ROLLBACKTRANSACTIONREQUEST']._serialized_start=1666
82
- _globals['_ROLLBACKTRANSACTIONREQUEST']._serialized_end=1718
83
- _globals['_ROLLBACKTRANSACTIONRESPONSE']._serialized_start=1720
84
- _globals['_ROLLBACKTRANSACTIONRESPONSE']._serialized_end=1749
85
- _globals['_CYPHERSERVICE']._serialized_start=1752
86
- _globals['_CYPHERSERVICE']._serialized_end=2521
67
+ _globals['_EXPLAINCYPHERRESPONSE']._serialized_start=1215
68
+ _globals['_EXPLAINCYPHERRESPONSE']._serialized_end=1284
69
+ _globals['_QUERYPLAN']._serialized_start=1287
70
+ _globals['_QUERYPLAN']._serialized_end=1500
71
+ _globals['_QUERYPLAN_DETAILSENTRY']._serialized_start=1454
72
+ _globals['_QUERYPLAN_DETAILSENTRY']._serialized_end=1500
73
+ _globals['_BEGINTRANSACTIONREQUEST']._serialized_start=1502
74
+ _globals['_BEGINTRANSACTIONREQUEST']._serialized_end=1527
75
+ _globals['_BEGINTRANSACTIONRESPONSE']._serialized_start=1529
76
+ _globals['_BEGINTRANSACTIONRESPONSE']._serialized_end=1579
77
+ _globals['_COMMITTRANSACTIONREQUEST']._serialized_start=1581
78
+ _globals['_COMMITTRANSACTIONREQUEST']._serialized_end=1689
79
+ _globals['_EXPECTEDNODEVERSION']._serialized_start=1691
80
+ _globals['_EXPECTEDNODEVERSION']._serialized_end=1763
81
+ _globals['_COMMITTRANSACTIONRESPONSE']._serialized_start=1765
82
+ _globals['_COMMITTRANSACTIONRESPONSE']._serialized_end=1834
83
+ _globals['_ROLLBACKTRANSACTIONREQUEST']._serialized_start=1836
84
+ _globals['_ROLLBACKTRANSACTIONREQUEST']._serialized_end=1888
85
+ _globals['_ROLLBACKTRANSACTIONRESPONSE']._serialized_start=1890
86
+ _globals['_ROLLBACKTRANSACTIONRESPONSE']._serialized_end=1919
87
+ _globals['_CYPHERSERVICE']._serialized_start=1922
88
+ _globals['_CYPHERSERVICE']._serialized_end=2691
87
89
  # @@protoc_insertion_point(module_scope)
@@ -49,7 +49,7 @@ class Row(_message.Message):
49
49
  def __init__(self, values: _Optional[_Iterable[_Union[_types_pb2.PropertyValue, _Mapping]]] = ...) -> None: ...
50
50
 
51
51
  class QueryStats(_message.Message):
52
- __slots__ = ("nodes_created", "nodes_deleted", "edges_created", "edges_deleted", "properties_set", "execution_time_ms", "applied_index", "served_by_leader")
52
+ __slots__ = ("nodes_created", "nodes_deleted", "edges_created", "edges_deleted", "properties_set", "execution_time_ms", "applied_index", "served_by_leader", "commit_ts")
53
53
  NODES_CREATED_FIELD_NUMBER: _ClassVar[int]
54
54
  NODES_DELETED_FIELD_NUMBER: _ClassVar[int]
55
55
  EDGES_CREATED_FIELD_NUMBER: _ClassVar[int]
@@ -58,6 +58,7 @@ class QueryStats(_message.Message):
58
58
  EXECUTION_TIME_MS_FIELD_NUMBER: _ClassVar[int]
59
59
  APPLIED_INDEX_FIELD_NUMBER: _ClassVar[int]
60
60
  SERVED_BY_LEADER_FIELD_NUMBER: _ClassVar[int]
61
+ COMMIT_TS_FIELD_NUMBER: _ClassVar[int]
61
62
  nodes_created: int
62
63
  nodes_deleted: int
63
64
  edges_created: int
@@ -66,7 +67,8 @@ class QueryStats(_message.Message):
66
67
  execution_time_ms: int
67
68
  applied_index: int
68
69
  served_by_leader: bool
69
- def __init__(self, nodes_created: _Optional[int] = ..., nodes_deleted: _Optional[int] = ..., edges_created: _Optional[int] = ..., edges_deleted: _Optional[int] = ..., properties_set: _Optional[int] = ..., execution_time_ms: _Optional[int] = ..., applied_index: _Optional[int] = ..., served_by_leader: _Optional[bool] = ...) -> None: ...
70
+ commit_ts: int
71
+ def __init__(self, nodes_created: _Optional[int] = ..., nodes_deleted: _Optional[int] = ..., edges_created: _Optional[int] = ..., edges_deleted: _Optional[int] = ..., properties_set: _Optional[int] = ..., execution_time_ms: _Optional[int] = ..., applied_index: _Optional[int] = ..., served_by_leader: _Optional[bool] = ..., commit_ts: _Optional[int] = ...) -> None: ...
70
72
 
71
73
  class ExplainCypherRequest(_message.Message):
72
74
  __slots__ = ("query", "parameters")
@@ -119,16 +121,28 @@ class BeginTransactionResponse(_message.Message):
119
121
  def __init__(self, transaction_id: _Optional[int] = ...) -> None: ...
120
122
 
121
123
  class CommitTransactionRequest(_message.Message):
122
- __slots__ = ("transaction_id",)
124
+ __slots__ = ("transaction_id", "expect")
123
125
  TRANSACTION_ID_FIELD_NUMBER: _ClassVar[int]
126
+ EXPECT_FIELD_NUMBER: _ClassVar[int]
124
127
  transaction_id: int
125
- def __init__(self, transaction_id: _Optional[int] = ...) -> None: ...
128
+ expect: _containers.RepeatedCompositeFieldContainer[ExpectedNodeVersion]
129
+ def __init__(self, transaction_id: _Optional[int] = ..., expect: _Optional[_Iterable[_Union[ExpectedNodeVersion, _Mapping]]] = ...) -> None: ...
130
+
131
+ class ExpectedNodeVersion(_message.Message):
132
+ __slots__ = ("node_id", "version")
133
+ NODE_ID_FIELD_NUMBER: _ClassVar[int]
134
+ VERSION_FIELD_NUMBER: _ClassVar[int]
135
+ node_id: int
136
+ version: int
137
+ def __init__(self, node_id: _Optional[int] = ..., version: _Optional[int] = ...) -> None: ...
126
138
 
127
139
  class CommitTransactionResponse(_message.Message):
128
- __slots__ = ("applied_index",)
140
+ __slots__ = ("applied_index", "commit_ts")
129
141
  APPLIED_INDEX_FIELD_NUMBER: _ClassVar[int]
142
+ COMMIT_TS_FIELD_NUMBER: _ClassVar[int]
130
143
  applied_index: int
131
- def __init__(self, applied_index: _Optional[int] = ...) -> None: ...
144
+ commit_ts: int
145
+ def __init__(self, applied_index: _Optional[int] = ..., commit_ts: _Optional[int] = ...) -> None: ...
132
146
 
133
147
  class RollbackTransactionRequest(_message.Message):
134
148
  __slots__ = ("transaction_id",)
@@ -0,0 +1,46 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # NO CHECKED-IN PROTOBUF GENCODE
4
+ # source: coordinode/v1/replication/consistency.proto
5
+ # Protobuf Python Version: 7.35.1
6
+ """Generated protocol buffer code."""
7
+ from google.protobuf import descriptor as _descriptor
8
+ from google.protobuf import descriptor_pool as _descriptor_pool
9
+ from google.protobuf import runtime_version as _runtime_version
10
+ from google.protobuf import symbol_database as _symbol_database
11
+ from google.protobuf.internal import builder as _builder
12
+ _runtime_version.ValidateProtobufRuntimeVersion(
13
+ _runtime_version.Domain.PUBLIC,
14
+ 7,
15
+ 35,
16
+ 1,
17
+ '',
18
+ 'coordinode/v1/replication/consistency.proto'
19
+ )
20
+ # @@protoc_insertion_point(imports)
21
+
22
+ _sym_db = _symbol_database.Default()
23
+
24
+
25
+
26
+
27
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n+coordinode/v1/replication/consistency.proto\x12\x19\x63oordinode.v1.replication\"\xbc\x01\n\x0cWriteConcern\x12\x0e\n\x04\x61\x63ks\x18\x04 \x01(\rH\x00\x12;\n\x04mode\x18\x05 \x01(\x0e\x32+.coordinode.v1.replication.WriteConcernModeH\x00\x12\x33\n\x07journal\x18\x06 \x01(\x0e\x32\".coordinode.v1.replication.Journal\x12\x12\n\ntimeout_ms\x18\x03 \x01(\rB\x03\n\x01wJ\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03R\x05level\"t\n\x0bReadConcern\x12:\n\x05level\x18\x01 \x01(\x0e\x32+.coordinode.v1.replication.ReadConcernLevel\x12\x13\n\x0b\x61\x66ter_index\x18\x02 \x01(\x04\x12\x14\n\x0c\x61t_timestamp\x18\x03 \x01(\x04*W\n\x10WriteConcernMode\x12\"\n\x1eWRITE_CONCERN_MODE_UNSPECIFIED\x10\x00\x12\x1f\n\x1bWRITE_CONCERN_MODE_MAJORITY\x10\x01*^\n\x07Journal\x12\x17\n\x13JOURNAL_UNSPECIFIED\x10\x00\x12\x13\n\x0fJOURNAL_JOURNAL\x10\x01\x12\x11\n\rJOURNAL_CACHE\x10\x02\x12\x12\n\x0eJOURNAL_MEMORY\x10\x03*\xbb\x01\n\x10ReadConcernLevel\x12\"\n\x1eREAD_CONCERN_LEVEL_UNSPECIFIED\x10\x00\x12\x1c\n\x18READ_CONCERN_LEVEL_LOCAL\x10\x01\x12\x1f\n\x1bREAD_CONCERN_LEVEL_MAJORITY\x10\x02\x12#\n\x1fREAD_CONCERN_LEVEL_LINEARIZABLE\x10\x03\x12\x1f\n\x1bREAD_CONCERN_LEVEL_SNAPSHOT\x10\x04*\xda\x01\n\x0eReadPreference\x12\x1f\n\x1bREAD_PREFERENCE_UNSPECIFIED\x10\x00\x12\x1b\n\x17READ_PREFERENCE_PRIMARY\x10\x01\x12%\n!READ_PREFERENCE_PRIMARY_PREFERRED\x10\x02\x12\x1d\n\x19READ_PREFERENCE_SECONDARY\x10\x03\x12\'\n#READ_PREFERENCE_SECONDARY_PREFERRED\x10\x04\x12\x1b\n\x17READ_PREFERENCE_NEAREST\x10\x05\x62\x06proto3')
28
+
29
+ _globals = globals()
30
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
31
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'coordinode.v1.replication.consistency_pb2', _globals)
32
+ if not _descriptor._USE_C_DESCRIPTORS:
33
+ DESCRIPTOR._loaded_options = None
34
+ _globals['_WRITECONCERNMODE']._serialized_start=383
35
+ _globals['_WRITECONCERNMODE']._serialized_end=470
36
+ _globals['_JOURNAL']._serialized_start=472
37
+ _globals['_JOURNAL']._serialized_end=566
38
+ _globals['_READCONCERNLEVEL']._serialized_start=569
39
+ _globals['_READCONCERNLEVEL']._serialized_end=756
40
+ _globals['_READPREFERENCE']._serialized_start=759
41
+ _globals['_READPREFERENCE']._serialized_end=977
42
+ _globals['_WRITECONCERN']._serialized_start=75
43
+ _globals['_WRITECONCERN']._serialized_end=263
44
+ _globals['_READCONCERN']._serialized_start=265
45
+ _globals['_READCONCERN']._serialized_end=381
46
+ # @@protoc_insertion_point(module_scope)
@@ -5,14 +5,17 @@ from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union
5
5
 
6
6
  DESCRIPTOR: _descriptor.FileDescriptor
7
7
 
8
- class WriteConcernLevel(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
8
+ class WriteConcernMode(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
9
9
  __slots__ = ()
10
- WRITE_CONCERN_LEVEL_UNSPECIFIED: _ClassVar[WriteConcernLevel]
11
- WRITE_CONCERN_LEVEL_W0: _ClassVar[WriteConcernLevel]
12
- WRITE_CONCERN_LEVEL_W1: _ClassVar[WriteConcernLevel]
13
- WRITE_CONCERN_LEVEL_MAJORITY: _ClassVar[WriteConcernLevel]
14
- WRITE_CONCERN_LEVEL_MEMORY: _ClassVar[WriteConcernLevel]
15
- WRITE_CONCERN_LEVEL_CACHE: _ClassVar[WriteConcernLevel]
10
+ WRITE_CONCERN_MODE_UNSPECIFIED: _ClassVar[WriteConcernMode]
11
+ WRITE_CONCERN_MODE_MAJORITY: _ClassVar[WriteConcernMode]
12
+
13
+ class Journal(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
14
+ __slots__ = ()
15
+ JOURNAL_UNSPECIFIED: _ClassVar[Journal]
16
+ JOURNAL_JOURNAL: _ClassVar[Journal]
17
+ JOURNAL_CACHE: _ClassVar[Journal]
18
+ JOURNAL_MEMORY: _ClassVar[Journal]
16
19
 
17
20
  class ReadConcernLevel(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
18
21
  __slots__ = ()
@@ -30,12 +33,12 @@ class ReadPreference(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
30
33
  READ_PREFERENCE_SECONDARY: _ClassVar[ReadPreference]
31
34
  READ_PREFERENCE_SECONDARY_PREFERRED: _ClassVar[ReadPreference]
32
35
  READ_PREFERENCE_NEAREST: _ClassVar[ReadPreference]
33
- WRITE_CONCERN_LEVEL_UNSPECIFIED: WriteConcernLevel
34
- WRITE_CONCERN_LEVEL_W0: WriteConcernLevel
35
- WRITE_CONCERN_LEVEL_W1: WriteConcernLevel
36
- WRITE_CONCERN_LEVEL_MAJORITY: WriteConcernLevel
37
- WRITE_CONCERN_LEVEL_MEMORY: WriteConcernLevel
38
- WRITE_CONCERN_LEVEL_CACHE: WriteConcernLevel
36
+ WRITE_CONCERN_MODE_UNSPECIFIED: WriteConcernMode
37
+ WRITE_CONCERN_MODE_MAJORITY: WriteConcernMode
38
+ JOURNAL_UNSPECIFIED: Journal
39
+ JOURNAL_JOURNAL: Journal
40
+ JOURNAL_CACHE: Journal
41
+ JOURNAL_MEMORY: Journal
39
42
  READ_CONCERN_LEVEL_UNSPECIFIED: ReadConcernLevel
40
43
  READ_CONCERN_LEVEL_LOCAL: ReadConcernLevel
41
44
  READ_CONCERN_LEVEL_MAJORITY: ReadConcernLevel
@@ -49,14 +52,16 @@ READ_PREFERENCE_SECONDARY_PREFERRED: ReadPreference
49
52
  READ_PREFERENCE_NEAREST: ReadPreference
50
53
 
51
54
  class WriteConcern(_message.Message):
52
- __slots__ = ("level", "journal", "timeout_ms")
53
- LEVEL_FIELD_NUMBER: _ClassVar[int]
55
+ __slots__ = ("acks", "mode", "journal", "timeout_ms")
56
+ ACKS_FIELD_NUMBER: _ClassVar[int]
57
+ MODE_FIELD_NUMBER: _ClassVar[int]
54
58
  JOURNAL_FIELD_NUMBER: _ClassVar[int]
55
59
  TIMEOUT_MS_FIELD_NUMBER: _ClassVar[int]
56
- level: WriteConcernLevel
57
- journal: bool
60
+ acks: int
61
+ mode: WriteConcernMode
62
+ journal: Journal
58
63
  timeout_ms: int
59
- def __init__(self, level: _Optional[_Union[WriteConcernLevel, str]] = ..., journal: _Optional[bool] = ..., timeout_ms: _Optional[int] = ...) -> None: ...
64
+ def __init__(self, acks: _Optional[int] = ..., mode: _Optional[_Union[WriteConcernMode, str]] = ..., journal: _Optional[_Union[Journal, str]] = ..., timeout_ms: _Optional[int] = ...) -> None: ...
60
65
 
61
66
  class ReadConcern(_message.Message):
62
67
  __slots__ = ("level", "after_index", "at_timestamp")
@@ -27,7 +27,7 @@ from coordinode._proto.coordinode.v1.query import cypher_pb2 as coordinode_dot_v
27
27
  from coordinode._proto.coordinode.v1.replication import consistency_pb2 as coordinode_dot_v1_dot_replication_dot_consistency__pb2
28
28
 
29
29
 
30
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n#coordinode/v1/session/session.proto\x12\x15\x63oordinode.v1.session\x1a coordinode/v1/common/types.proto\x1a coordinode/v1/query/cypher.proto\x1a+coordinode/v1/replication/consistency.proto\"\xd7\x02\n\x0b\x43lientFrame\x12\x12\n\nrequest_id\x18\x01 \x01(\x04\x12\x31\n\x07\x65xecute\x18\x02 \x01(\x0b\x32\x1e.coordinode.v1.session.ExecuteH\x00\x12-\n\x05\x62\x65gin\x18\x03 \x01(\x0b\x32\x1c.coordinode.v1.session.BeginH\x00\x12/\n\x06\x63ommit\x18\x04 \x01(\x0b\x32\x1d.coordinode.v1.session.CommitH\x00\x12\x33\n\x08rollback\x18\x05 \x01(\x0b\x32\x1f.coordinode.v1.session.RollbackH\x00\x12/\n\x06\x63\x61ncel\x18\x06 \x01(\x0b\x32\x1d.coordinode.v1.session.CancelH\x00\x12\x35\n\tconfigure\x18\x07 \x01(\x0b\x32 .coordinode.v1.session.ConfigureH\x00\x42\x04\n\x02op\"\xc7\x02\n\tConfigure\x12\x41\n\x0cread_concern\x18\x01 \x01(\x0b\x32&.coordinode.v1.replication.ReadConcernH\x00\x88\x01\x01\x12\x43\n\rwrite_concern\x18\x02 \x01(\x0b\x32\'.coordinode.v1.replication.WriteConcernH\x01\x88\x01\x01\x12G\n\x0fread_preference\x18\x03 \x01(\x0e\x32).coordinode.v1.replication.ReadPreferenceH\x02\x88\x01\x01\x12\x1d\n\x10\x64rain_timeout_ms\x18\x04 \x01(\rH\x03\x88\x01\x01\x42\x0f\n\r_read_concernB\x10\n\x0e_write_concernB\x12\n\x10_read_preferenceB\x13\n\x11_drain_timeout_ms\"\xd1\x01\n\x07\x45xecute\x12\r\n\x05query\x18\x01 \x01(\t\x12\x42\n\nparameters\x18\x02 \x03(\x0b\x32..coordinode.v1.session.Execute.ParametersEntry\x12\x0c\n\x04txid\x18\x03 \x01(\x04\x12\r\n\x05nonce\x18\x04 \x01(\x04\x1aV\n\x0fParametersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x32\n\x05value\x18\x02 \x01(\x0b\x32#.coordinode.v1.common.PropertyValue:\x02\x38\x01\"T\n\x05\x42\x65gin\x12\x31\n\x08ordering\x18\x01 \x01(\x0e\x32\x1f.coordinode.v1.session.Ordering\x12\x18\n\x10\x64rain_timeout_ms\x18\x02 \x01(\r\"*\n\x06\x43ommit\x12\x0c\n\x04txid\x18\x01 \x01(\x04\x12\x12\n\nlast_nonce\x18\x02 \x01(\x04\"\x18\n\x08Rollback\x12\x0c\n\x04txid\x18\x01 \x01(\x04\"#\n\x06\x43\x61ncel\x12\x19\n\x11target_request_id\x18\x01 \x01(\x04\"\xaf\x03\n\x0bServerFrame\x12\x12\n\nrequest_id\x18\x01 \x01(\x04\x12-\n\x05\x62\x65gun\x18\x02 \x01(\x0b\x32\x1c.coordinode.v1.session.BegunH\x00\x12\x38\n\x0b\x63ursor_open\x18\x03 \x01(\x0b\x32!.coordinode.v1.session.CursorOpenH\x00\x12/\n\x04rows\x18\x04 \x01(\x0b\x32\x1f.coordinode.v1.session.RowBatchH\x00\x12\x36\n\ncursor_end\x18\x05 \x01(\x0b\x32 .coordinode.v1.session.CursorEndH\x00\x12\x35\n\tcommitted\x18\x06 \x01(\x0b\x32 .coordinode.v1.session.CommittedH\x00\x12\x34\n\x05\x65rror\x18\x07 \x01(\x0b\x32#.coordinode.v1.session.SessionErrorH\x00\x12\x44\n\x11\x63onnection_status\x18\x08 \x01(\x0b\x32\'.coordinode.v1.session.ConnectionStatusH\x00\x42\x07\n\x05\x65vent\"\xe8\x01\n\x10\x43onnectionStatus\x12\x10\n\x08writable\x18\x01 \x01(\x08\x12\x11\n\tconnected\x18\x02 \x01(\x08\x12\x16\n\tleader_id\x18\x03 \x01(\x04H\x00\x88\x01\x01\x12\x18\n\x10served_by_leader\x18\x04 \x01(\x08\x12\x11\n\traft_term\x18\x05 \x01(\x04\x12\x0e\n\x06voters\x18\x06 \x01(\r\x12\x18\n\x10voters_reachable\x18\x07 \x01(\r\x12\x32\n\x08settings\x18\x08 \x01(\x0b\x32 .coordinode.v1.session.ConfigureB\x0c\n\n_leader_id\"\x15\n\x05\x42\x65gun\x12\x0c\n\x04txid\x18\x01 \x01(\x04\"\x1d\n\nCursorOpen\x12\x0f\n\x07\x63olumns\x18\x01 \x03(\t\"2\n\x08RowBatch\x12&\n\x04rows\x18\x01 \x03(\x0b\x32\x18.coordinode.v1.query.Row\";\n\tCursorEnd\x12.\n\x05stats\x18\x01 \x01(\x0b\x32\x1f.coordinode.v1.query.QueryStats\"\"\n\tCommitted\x12\x15\n\rapplied_index\x18\x01 \x01(\x04\"-\n\x0cSessionError\x12\x0c\n\x04\x63ode\x18\x01 \x01(\r\x12\x0f\n\x07message\x18\x02 \x01(\t*R\n\x08Ordering\x12\x18\n\x14ORDERING_UNSPECIFIED\x10\x00\x12\x14\n\x10ORDERING_ORDERED\x10\x01\x12\x16\n\x12ORDERING_UNORDERED\x10\x02\x32g\n\x0eSessionService\x12U\n\x07Session\x12\".coordinode.v1.session.ClientFrame\x1a\".coordinode.v1.session.ServerFrame(\x01\x30\x01\x62\x06proto3')
30
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n#coordinode/v1/session/session.proto\x12\x15\x63oordinode.v1.session\x1a coordinode/v1/common/types.proto\x1a coordinode/v1/query/cypher.proto\x1a+coordinode/v1/replication/consistency.proto\"\xd7\x02\n\x0b\x43lientFrame\x12\x12\n\nrequest_id\x18\x01 \x01(\x04\x12\x31\n\x07\x65xecute\x18\x02 \x01(\x0b\x32\x1e.coordinode.v1.session.ExecuteH\x00\x12-\n\x05\x62\x65gin\x18\x03 \x01(\x0b\x32\x1c.coordinode.v1.session.BeginH\x00\x12/\n\x06\x63ommit\x18\x04 \x01(\x0b\x32\x1d.coordinode.v1.session.CommitH\x00\x12\x33\n\x08rollback\x18\x05 \x01(\x0b\x32\x1f.coordinode.v1.session.RollbackH\x00\x12/\n\x06\x63\x61ncel\x18\x06 \x01(\x0b\x32\x1d.coordinode.v1.session.CancelH\x00\x12\x35\n\tconfigure\x18\x07 \x01(\x0b\x32 .coordinode.v1.session.ConfigureH\x00\x42\x04\n\x02op\"\xc7\x02\n\tConfigure\x12\x41\n\x0cread_concern\x18\x01 \x01(\x0b\x32&.coordinode.v1.replication.ReadConcernH\x00\x88\x01\x01\x12\x43\n\rwrite_concern\x18\x02 \x01(\x0b\x32\'.coordinode.v1.replication.WriteConcernH\x01\x88\x01\x01\x12G\n\x0fread_preference\x18\x03 \x01(\x0e\x32).coordinode.v1.replication.ReadPreferenceH\x02\x88\x01\x01\x12\x1d\n\x10\x64rain_timeout_ms\x18\x04 \x01(\rH\x03\x88\x01\x01\x42\x0f\n\r_read_concernB\x10\n\x0e_write_concernB\x12\n\x10_read_preferenceB\x13\n\x11_drain_timeout_ms\"\xd1\x01\n\x07\x45xecute\x12\r\n\x05query\x18\x01 \x01(\t\x12\x42\n\nparameters\x18\x02 \x03(\x0b\x32..coordinode.v1.session.Execute.ParametersEntry\x12\x0c\n\x04txid\x18\x03 \x01(\x04\x12\r\n\x05nonce\x18\x04 \x01(\x04\x1aV\n\x0fParametersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x32\n\x05value\x18\x02 \x01(\x0b\x32#.coordinode.v1.common.PropertyValue:\x02\x38\x01\"T\n\x05\x42\x65gin\x12\x31\n\x08ordering\x18\x01 \x01(\x0e\x32\x1f.coordinode.v1.session.Ordering\x12\x18\n\x10\x64rain_timeout_ms\x18\x02 \x01(\r\"*\n\x06\x43ommit\x12\x0c\n\x04txid\x18\x01 \x01(\x04\x12\x12\n\nlast_nonce\x18\x02 \x01(\x04\"\x18\n\x08Rollback\x12\x0c\n\x04txid\x18\x01 \x01(\x04\"#\n\x06\x43\x61ncel\x12\x19\n\x11target_request_id\x18\x01 \x01(\x04\"\xaf\x03\n\x0bServerFrame\x12\x12\n\nrequest_id\x18\x01 \x01(\x04\x12-\n\x05\x62\x65gun\x18\x02 \x01(\x0b\x32\x1c.coordinode.v1.session.BegunH\x00\x12\x38\n\x0b\x63ursor_open\x18\x03 \x01(\x0b\x32!.coordinode.v1.session.CursorOpenH\x00\x12/\n\x04rows\x18\x04 \x01(\x0b\x32\x1f.coordinode.v1.session.RowBatchH\x00\x12\x36\n\ncursor_end\x18\x05 \x01(\x0b\x32 .coordinode.v1.session.CursorEndH\x00\x12\x35\n\tcommitted\x18\x06 \x01(\x0b\x32 .coordinode.v1.session.CommittedH\x00\x12\x34\n\x05\x65rror\x18\x07 \x01(\x0b\x32#.coordinode.v1.session.SessionErrorH\x00\x12\x44\n\x11\x63onnection_status\x18\x08 \x01(\x0b\x32\'.coordinode.v1.session.ConnectionStatusH\x00\x42\x07\n\x05\x65vent\"\xe8\x01\n\x10\x43onnectionStatus\x12\x10\n\x08writable\x18\x01 \x01(\x08\x12\x11\n\tconnected\x18\x02 \x01(\x08\x12\x16\n\tleader_id\x18\x03 \x01(\x04H\x00\x88\x01\x01\x12\x18\n\x10served_by_leader\x18\x04 \x01(\x08\x12\x11\n\traft_term\x18\x05 \x01(\x04\x12\x0e\n\x06voters\x18\x06 \x01(\r\x12\x18\n\x10voters_reachable\x18\x07 \x01(\r\x12\x32\n\x08settings\x18\x08 \x01(\x0b\x32 .coordinode.v1.session.ConfigureB\x0c\n\n_leader_id\"\x15\n\x05\x42\x65gun\x12\x0c\n\x04txid\x18\x01 \x01(\x04\"\x1d\n\nCursorOpen\x12\x0f\n\x07\x63olumns\x18\x01 \x03(\t\"2\n\x08RowBatch\x12&\n\x04rows\x18\x01 \x03(\x0b\x32\x18.coordinode.v1.query.Row\";\n\tCursorEnd\x12.\n\x05stats\x18\x01 \x01(\x0b\x32\x1f.coordinode.v1.query.QueryStats\"5\n\tCommitted\x12\x15\n\rapplied_index\x18\x01 \x01(\x04\x12\x11\n\tcommit_ts\x18\x02 \x01(\x04\"-\n\x0cSessionError\x12\x0c\n\x04\x63ode\x18\x01 \x01(\r\x12\x0f\n\x07message\x18\x02 \x01(\t*R\n\x08Ordering\x12\x18\n\x14ORDERING_UNSPECIFIED\x10\x00\x12\x14\n\x10ORDERING_ORDERED\x10\x01\x12\x16\n\x12ORDERING_UNORDERED\x10\x02\x32g\n\x0eSessionService\x12U\n\x07Session\x12\".coordinode.v1.session.ClientFrame\x1a\".coordinode.v1.session.ServerFrame(\x01\x30\x01\x62\x06proto3')
31
31
 
32
32
  _globals = globals()
33
33
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -36,8 +36,8 @@ if not _descriptor._USE_C_DESCRIPTORS:
36
36
  DESCRIPTOR._loaded_options = None
37
37
  _globals['_EXECUTE_PARAMETERSENTRY']._loaded_options = None
38
38
  _globals['_EXECUTE_PARAMETERSENTRY']._serialized_options = b'8\001'
39
- _globals['_ORDERING']._serialized_start=2175
40
- _globals['_ORDERING']._serialized_end=2257
39
+ _globals['_ORDERING']._serialized_start=2194
40
+ _globals['_ORDERING']._serialized_end=2276
41
41
  _globals['_CLIENTFRAME']._serialized_start=176
42
42
  _globals['_CLIENTFRAME']._serialized_end=519
43
43
  _globals['_CONFIGURE']._serialized_start=522
@@ -67,9 +67,9 @@ if not _descriptor._USE_C_DESCRIPTORS:
67
67
  _globals['_CURSOREND']._serialized_start=2031
68
68
  _globals['_CURSOREND']._serialized_end=2090
69
69
  _globals['_COMMITTED']._serialized_start=2092
70
- _globals['_COMMITTED']._serialized_end=2126
71
- _globals['_SESSIONERROR']._serialized_start=2128
72
- _globals['_SESSIONERROR']._serialized_end=2173
73
- _globals['_SESSIONSERVICE']._serialized_start=2259
74
- _globals['_SESSIONSERVICE']._serialized_end=2362
70
+ _globals['_COMMITTED']._serialized_end=2145
71
+ _globals['_SESSIONERROR']._serialized_start=2147
72
+ _globals['_SESSIONERROR']._serialized_end=2192
73
+ _globals['_SESSIONSERVICE']._serialized_start=2278
74
+ _globals['_SESSIONSERVICE']._serialized_end=2381
75
75
  # @@protoc_insertion_point(module_scope)
@@ -161,10 +161,12 @@ class CursorEnd(_message.Message):
161
161
  def __init__(self, stats: _Optional[_Union[_cypher_pb2.QueryStats, _Mapping]] = ...) -> None: ...
162
162
 
163
163
  class Committed(_message.Message):
164
- __slots__ = ("applied_index",)
164
+ __slots__ = ("applied_index", "commit_ts")
165
165
  APPLIED_INDEX_FIELD_NUMBER: _ClassVar[int]
166
+ COMMIT_TS_FIELD_NUMBER: _ClassVar[int]
166
167
  applied_index: int
167
- def __init__(self, applied_index: _Optional[int] = ...) -> None: ...
168
+ commit_ts: int
169
+ def __init__(self, applied_index: _Optional[int] = ..., commit_ts: _Optional[int] = ...) -> None: ...
168
170
 
169
171
  class SessionError(_message.Message):
170
172
  __slots__ = ("code", "message")
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '2.1.1'
22
- __version_tuple__ = version_tuple = (2, 1, 1)
21
+ __version__ = version = '3.0.0'
22
+ __version_tuple__ = version_tuple = (3, 0, 0)
23
23
 
24
24
  __commit_id__ = commit_id = None