yellowstone-fumarole-client 0.1.0rc2__py3-none-any.whl → 0.2.1__py3-none-any.whl
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.
- yellowstone_fumarole_client/__init__.py +86 -19
- yellowstone_fumarole_client/config.py +17 -1
- yellowstone_fumarole_client/grpc_connectivity.py +11 -28
- yellowstone_fumarole_client/runtime/aio.py +86 -70
- yellowstone_fumarole_client/runtime/state_machine.py +23 -22
- yellowstone_fumarole_client/utils/aio.py +0 -2
- yellowstone_fumarole_client/utils/collections.py +37 -0
- {yellowstone_fumarole_client-0.1.0rc2.dist-info → yellowstone_fumarole_client-0.2.1.dist-info}/METADATA +35 -30
- yellowstone_fumarole_client-0.2.1.dist-info/RECORD +22 -0
- yellowstone_fumarole_proto/fumarole_pb2.py +134 -0
- yellowstone_fumarole_proto/{fumarole_v2_pb2.pyi → fumarole_pb2.pyi} +51 -5
- yellowstone_fumarole_proto/{fumarole_v2_pb2_grpc.py → fumarole_pb2_grpc.py} +155 -69
- yellowstone_fumarole_proto/geyser_pb2.py +39 -35
- yellowstone_fumarole_proto/geyser_pb2.pyi +15 -2
- yellowstone_fumarole_proto/geyser_pb2_grpc.py +44 -1
- yellowstone_fumarole_proto/solana_storage_pb2.py +32 -32
- yellowstone_fumarole_proto/solana_storage_pb2.pyi +6 -3
- yellowstone_fumarole_proto/solana_storage_pb2_grpc.py +1 -1
- yellowstone_fumarole_client-0.1.0rc2.dist-info/RECORD +0 -21
- yellowstone_fumarole_proto/fumarole_v2_pb2.py +0 -122
- {yellowstone_fumarole_client-0.1.0rc2.dist-info → yellowstone_fumarole_client-0.2.1.dist-info}/WHEEL +0 -0
@@ -1,6 +1,5 @@
|
|
1
1
|
import asyncio
|
2
2
|
import logging
|
3
|
-
from typing import Any, Coroutine
|
4
3
|
|
5
4
|
LOGGER = logging.getLogger(__name__)
|
6
5
|
|
@@ -22,7 +21,6 @@ class Interval:
|
|
22
21
|
|
23
22
|
Args:
|
24
23
|
interval: The interval in seconds.
|
25
|
-
factory: A factory that returns a coroutine to be run at the interval.
|
26
24
|
"""
|
27
25
|
self.interval = interval
|
28
26
|
|
@@ -0,0 +1,37 @@
|
|
1
|
+
from collections import OrderedDict
|
2
|
+
|
3
|
+
|
4
|
+
class OrderedSet:
|
5
|
+
"""
|
6
|
+
A simple ordered set implementation that maintains the order of elements.
|
7
|
+
"""
|
8
|
+
|
9
|
+
def __init__(self, iterable=None):
|
10
|
+
self._data = []
|
11
|
+
self.inner: OrderedDict = OrderedDict()
|
12
|
+
if iterable is not None:
|
13
|
+
for item in iterable:
|
14
|
+
self.inner[item] = None
|
15
|
+
|
16
|
+
def add(self, item):
|
17
|
+
self.inner[item] = None
|
18
|
+
# Make sure the item is at the end to maintain order
|
19
|
+
self.inner.move_to_end(item, last=True)
|
20
|
+
|
21
|
+
def popfirst(self):
|
22
|
+
try:
|
23
|
+
return self.inner.popitem(last=False)[0]
|
24
|
+
except KeyError as e:
|
25
|
+
raise KeyError(f"{OrderedDict.__name__} is empty") from e
|
26
|
+
|
27
|
+
def __contains__(self, item):
|
28
|
+
return item in self.inner
|
29
|
+
|
30
|
+
def __iter__(self):
|
31
|
+
return iter(self.inner.keys())
|
32
|
+
|
33
|
+
def __len__(self):
|
34
|
+
return len(self.inner)
|
35
|
+
|
36
|
+
def __repr__(self):
|
37
|
+
return f"OrderedSet({list(self._data)})"
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: yellowstone-fumarole-client
|
3
|
-
Version: 0.1
|
3
|
+
Version: 0.2.1
|
4
4
|
Summary: Yellowstone Fumarole Python Client
|
5
5
|
Home-page: https://github.com/rpcpool/yellowstone-fumarole
|
6
6
|
Author: Louis-Vincent
|
@@ -8,14 +8,9 @@ Author-email: louis-vincent@triton.one
|
|
8
8
|
Requires-Python: >=3.13,<4.0
|
9
9
|
Classifier: Programming Language :: Python :: 3
|
10
10
|
Classifier: Programming Language :: Python :: 3.13
|
11
|
-
Requires-Dist: asyncio (>=3.4.3,<4.0.0)
|
12
|
-
Requires-Dist: base58 (>=2.1.1,<3.0.0)
|
13
|
-
Requires-Dist: click (>=8.1.7,<9.0.0)
|
14
11
|
Requires-Dist: grpcio (>=1.71.1,<2.0.0)
|
15
|
-
Requires-Dist: protobuf (>=
|
12
|
+
Requires-Dist: protobuf (>=6.32.0,<7.0.0)
|
16
13
|
Requires-Dist: pyyaml (>=6.0.2,<7.0.0)
|
17
|
-
Requires-Dist: tabulate (>=0.9.0,<0.10.0)
|
18
|
-
Requires-Dist: toml (>=0.10.2,<0.11.0)
|
19
14
|
Project-URL: Repository, https://github.com/rpcpool/yellowstone-fumarole
|
20
15
|
Description-Content-Type: text/markdown
|
21
16
|
|
@@ -83,33 +78,43 @@ async def dragonsmouth_like_session(fumarole_config):
|
|
83
78
|
session = await client.dragonsmouth_subscribe(
|
84
79
|
consumer_group_name="test",
|
85
80
|
request=SubscribeRequest(
|
86
|
-
|
81
|
+
accounts={"fumarole": SubscribeRequestFilterAccounts()},
|
87
82
|
transactions={"fumarole": SubscribeRequestFilterTransactions()},
|
88
83
|
blocks_meta={"fumarole": SubscribeRequestFilterBlocksMeta()},
|
89
84
|
entry={"fumarole": SubscribeRequestFilterEntry()},
|
90
85
|
slots={"fumarole": SubscribeRequestFilterSlots()},
|
91
86
|
),
|
92
87
|
)
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
88
|
+
async with session:
|
89
|
+
dragonsmouth_like_source = session.source
|
90
|
+
# result: SubscribeUpdate
|
91
|
+
async for result in dragonsmouth_like_source:
|
92
|
+
if result.HasField("block_meta"):
|
93
|
+
block_meta: SubscribeUpdateBlockMeta = result.block_meta
|
94
|
+
elif result.HasField("transaction"):
|
95
|
+
tx: SubscribeUpdateTransaction = result.transaction
|
96
|
+
elif result.HasField("account"):
|
97
|
+
account: SubscribeUpdateAccount = result.account
|
98
|
+
elif result.HasField("entry"):
|
99
|
+
entry: SubscribeUpdateEntry = result.entry
|
100
|
+
elif result.HasField("slot"):
|
101
|
+
result: SubscribeUpdateSlot = result.slot
|
102
|
+
|
103
|
+
# OUTSIDE THE SCOPE, YOU SHOULD NEVER USE `session` again.
|
104
|
+
```
|
105
|
+
|
106
|
+
|
107
|
+
At any point you can get a rough estimate if you are progression through the slot using `DragonsmouthAdapterSession.stats()` call:
|
108
|
+
|
109
|
+
```python
|
110
|
+
|
111
|
+
async with session:
|
112
|
+
stats: FumaroleSubscribeStats = session.stats()
|
113
|
+
print(f"{stats.log_committed_offset}, {stats.log_committable_offset}, {stats.max_slot_seen}")
|
115
114
|
```
|
115
|
+
|
116
|
+
`log_committed_offset` : what have been ACK so for to fumarole remote service.
|
117
|
+
`log_committable_offset` : what can be ACK to next commit call.
|
118
|
+
`max_slot_seen` : maximum slot seen in the inner fumarole client state -- not yet processed by your code.
|
119
|
+
|
120
|
+
|
@@ -0,0 +1,22 @@
|
|
1
|
+
yellowstone_fumarole_client/__init__.py,sha256=QIfks8mTmyOywbGLG4ZMXrp4LDBNq5s_SV_1P0PKH6E,13351
|
2
|
+
yellowstone_fumarole_client/config.py,sha256=aclhCPUy6RO-xtXR9w8otmt1RzFZyFnbF28jk115C2g,1394
|
3
|
+
yellowstone_fumarole_client/grpc_connectivity.py,sha256=Sex_x6_Bha0wGD7rRqr-V_slsohX1tDFeiHdqahLJ4Q,6639
|
4
|
+
yellowstone_fumarole_client/runtime/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
5
|
+
yellowstone_fumarole_client/runtime/aio.py,sha256=hbp6v4QUTQClMZ0C0xREAlOMkFOSuKas2nwaGN1NbMw,21370
|
6
|
+
yellowstone_fumarole_client/runtime/state_machine.py,sha256=d4blPv62UcqZ0HigRK2IXTd_8MeRrRjhclDVpE0PMnQ,12634
|
7
|
+
yellowstone_fumarole_client/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
8
|
+
yellowstone_fumarole_client/utils/aio.py,sha256=lm_BNkPiw5CJ6FjDlQUPoCKAqY3eYFAedAJB8mhNbzE,639
|
9
|
+
yellowstone_fumarole_client/utils/collections.py,sha256=NgXpepuRZKsUy0x1XW9pSjztIrlG7LUyMsETagfPgL0,989
|
10
|
+
yellowstone_fumarole_proto/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
11
|
+
yellowstone_fumarole_proto/fumarole_pb2.py,sha256=aF869yXAjiTE5hqpKatzql42N1saAO0ayVQOJJ8sxVs,14315
|
12
|
+
yellowstone_fumarole_proto/fumarole_pb2.pyi,sha256=eJgwihIU5wzJVlEZvYlG_F0vaW-z-axONwOoCQtnI-s,20092
|
13
|
+
yellowstone_fumarole_proto/fumarole_pb2_grpc.py,sha256=t-d3wKHd8xbHjct7h0IVmeFN3PTP7WPinYwxgDs6mO0,19117
|
14
|
+
yellowstone_fumarole_proto/geyser_pb2.py,sha256=95QrgJGuWll2t7XQiLunY20a9prhK4F1tclzXIQS0I0,20169
|
15
|
+
yellowstone_fumarole_proto/geyser_pb2.pyi,sha256=7P9cFmkhK05NhTBlPtzPitzXZeAS_kGBbt6teu2PyGk,27187
|
16
|
+
yellowstone_fumarole_proto/geyser_pb2_grpc.py,sha256=JCEz0KM_jg_610HyQI_F1K4kJlRGkGsP192XEDTCoYM,15342
|
17
|
+
yellowstone_fumarole_proto/solana_storage_pb2.py,sha256=LS-P5EPyS0n1pO9_U73rA6SPlbGSTEC2qYhuS3skzA8,8443
|
18
|
+
yellowstone_fumarole_proto/solana_storage_pb2.pyi,sha256=HivhoN4VEe_W7kB4lc2Un5AeTAv3xiKR_HLI096qmyA,13040
|
19
|
+
yellowstone_fumarole_proto/solana_storage_pb2_grpc.py,sha256=-rb9Dr0HXohIrHrnxukYrmUYl6OCVbkQYh2-pCO6740,895
|
20
|
+
yellowstone_fumarole_client-0.2.1.dist-info/METADATA,sha256=eljSi7uqcB_c7FOS-oJdcrPJZPMZgyc-hZzuL3NDAc8,4156
|
21
|
+
yellowstone_fumarole_client-0.2.1.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
22
|
+
yellowstone_fumarole_client-0.2.1.dist-info/RECORD,,
|
@@ -0,0 +1,134 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
3
|
+
# NO CHECKED-IN PROTOBUF GENCODE
|
4
|
+
# source: fumarole.proto
|
5
|
+
# Protobuf Python Version: 6.31.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
|
+
6,
|
15
|
+
31,
|
16
|
+
1,
|
17
|
+
'',
|
18
|
+
'fumarole.proto'
|
19
|
+
)
|
20
|
+
# @@protoc_insertion_point(imports)
|
21
|
+
|
22
|
+
_sym_db = _symbol_database.Default()
|
23
|
+
|
24
|
+
|
25
|
+
import yellowstone_fumarole_proto.geyser_pb2 as geyser__pb2
|
26
|
+
try:
|
27
|
+
solana__storage__pb2 = geyser__pb2.solana__storage__pb2
|
28
|
+
except AttributeError:
|
29
|
+
solana__storage__pb2 = geyser__pb2.solana_storage_pb2
|
30
|
+
|
31
|
+
from yellowstone_fumarole_proto.geyser_pb2 import *
|
32
|
+
|
33
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0e\x66umarole.proto\x12\x08\x66umarole\x1a\x0cgeyser.proto\",\n\x13GetSlotRangeRequest\x12\x15\n\rblockchain_id\x18\x01 \x01(\x0c\"Q\n\x14GetSlotRangeResponse\x12\x15\n\rblockchain_id\x18\x01 \x01(\x0c\x12\x10\n\x08min_slot\x18\x02 \x01(\x03\x12\x10\n\x08max_slot\x18\x03 \x01(\x03\"+\n\x12GetChainTipRequest\x12\x15\n\rblockchain_id\x18\x01 \x01(\x0c\"\xc1\x01\n\x13GetChainTipResponse\x12\x15\n\rblockchain_id\x18\x01 \x01(\x0c\x12W\n\x17shard_to_max_offset_map\x18\x02 \x03(\x0b\x32\x36.fumarole.GetChainTipResponse.ShardToMaxOffsetMapEntry\x1a:\n\x18ShardToMaxOffsetMapEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\"\x10\n\x0eVersionRequest\"\"\n\x0fVersionResponse\x12\x0f\n\x07version\x18\x01 \x01(\t\":\n\x1bGetConsumerGroupInfoRequest\x12\x1b\n\x13\x63onsumer_group_name\x18\x01 \x01(\t\"9\n\x1a\x44\x65leteConsumerGroupRequest\x12\x1b\n\x13\x63onsumer_group_name\x18\x01 \x01(\t\".\n\x1b\x44\x65leteConsumerGroupResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\"\x1b\n\x19ListConsumerGroupsRequest\"R\n\x1aListConsumerGroupsResponse\x12\x34\n\x0f\x63onsumer_groups\x18\x01 \x03(\x0b\x32\x1b.fumarole.ConsumerGroupInfo\"e\n\x11\x43onsumerGroupInfo\x12\n\n\x02id\x18\x01 \x01(\t\x12\x1b\n\x13\x63onsumer_group_name\x18\x02 \x01(\t\x12\x10\n\x08is_stale\x18\x03 \x01(\x08\x12\x15\n\rblockchain_id\x18\x04 \x01(\x0c\"4\n\x15GetSlotLagInfoRequest\x12\x1b\n\x13\x63onsumer_group_name\x18\x01 \x01(\t\"\xe5\x04\n\x0c\x42lockFilters\x12\x36\n\x08\x61\x63\x63ounts\x18\x01 \x03(\x0b\x32$.fumarole.BlockFilters.AccountsEntry\x12>\n\x0ctransactions\x18\x02 \x03(\x0b\x32(.fumarole.BlockFilters.TransactionsEntry\x12\x34\n\x07\x65ntries\x18\x03 \x03(\x0b\x32#.fumarole.BlockFilters.EntriesEntry\x12;\n\x0b\x62locks_meta\x18\x04 \x03(\x0b\x32&.fumarole.BlockFilters.BlocksMetaEntry\x1aW\n\rAccountsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x35\n\x05value\x18\x02 \x01(\x0b\x32&.geyser.SubscribeRequestFilterAccounts:\x02\x38\x01\x1a_\n\x11TransactionsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x39\n\x05value\x18\x02 \x01(\x0b\x32*.geyser.SubscribeRequestFilterTransactions:\x02\x38\x01\x1aS\n\x0c\x45ntriesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x32\n\x05value\x18\x02 \x01(\x0b\x32#.geyser.SubscribeRequestFilterEntry:\x02\x38\x01\x1a[\n\x0f\x42locksMetaEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x37\n\x05value\x18\x02 \x01(\x0b\x32(.geyser.SubscribeRequestFilterBlocksMeta:\x02\x38\x01\"\x95\x01\n\x12\x44ownloadBlockShard\x12\x15\n\rblockchain_id\x18\x01 \x01(\x0c\x12\x11\n\tblock_uid\x18\x02 \x01(\x0c\x12\x11\n\tshard_idx\x18\x03 \x01(\x05\x12\x31\n\x0c\x62lockFilters\x18\x04 \x01(\x0b\x32\x16.fumarole.BlockFiltersH\x00\x88\x01\x01\x42\x0f\n\r_blockFilters\"\x17\n\x04Ping\x12\x0f\n\x07ping_id\x18\x01 \x01(\r\"\x17\n\x04Pong\x12\x0f\n\x07ping_id\x18\x01 \x01(\r\"\x87\x01\n\x0b\x44\x61taCommand\x12<\n\x14\x64ownload_block_shard\x18\x01 \x01(\x0b\x32\x1c.fumarole.DownloadBlockShardH\x00\x12/\n\rfilter_update\x18\x02 \x01(\x0b\x32\x16.fumarole.BlockFiltersH\x00\x42\t\n\x07\x63ommand\"\x1a\n\x18\x42lockShardDownloadFinish\"L\n\rBlockNotFound\x12\x15\n\rblockchain_id\x18\x01 \x01(\x0c\x12\x11\n\tblock_uid\x18\x02 \x01(\x0c\x12\x11\n\tshard_idx\x18\x03 \x01(\x05\"B\n\tDataError\x12,\n\tnot_found\x18\x01 \x01(\x0b\x32\x17.fumarole.BlockNotFoundH\x00\x42\x07\n\x05\x65rror\"\x90\x01\n\x0c\x44\x61taResponse\x12)\n\x06update\x18\x01 \x01(\x0b\x32\x17.geyser.SubscribeUpdateH\x00\x12I\n\x1b\x62lock_shard_download_finish\x18\x02 \x01(\x0b\x32\".fumarole.BlockShardDownloadFinishH\x00\x42\n\n\x08response\"0\n\x0c\x43ommitOffset\x12\x0e\n\x06offset\x18\x01 \x01(\x03\x12\x10\n\x08shard_id\x18\x02 \x01(\x05\"c\n\x15PollBlockchainHistory\x12\x10\n\x08shard_id\x18\x01 \x01(\x05\x12\x11\n\x04\x66rom\x18\x02 \x01(\x03H\x00\x88\x01\x01\x12\x12\n\x05limit\x18\x03 \x01(\x03H\x01\x88\x01\x01\x42\x07\n\x05_fromB\x08\n\x06_limit\"\x8f\x02\n\x0f\x42lockchainEvent\x12\x0e\n\x06offset\x18\x01 \x01(\x03\x12\x15\n\rblockchain_id\x18\x02 \x01(\x0c\x12\x11\n\tblock_uid\x18\x03 \x01(\x0c\x12\x12\n\nnum_shards\x18\x04 \x01(\r\x12\x0c\n\x04slot\x18\x05 \x01(\x04\x12\x18\n\x0bparent_slot\x18\x06 \x01(\x04H\x00\x88\x01\x01\x12\x31\n\x10\x63ommitment_level\x18\x07 \x01(\x0e\x32\x17.geyser.CommitmentLevel\x12\x1b\n\x13\x62lockchain_shard_id\x18\x08 \x01(\x05\x12\x17\n\ndead_error\x18\t \x01(\tH\x01\x88\x01\x01\x42\x0e\n\x0c_parent_slotB\r\n\x0b_dead_error\">\n\x11\x42lockchainHistory\x12)\n\x06\x65vents\x18\x01 \x03(\x0b\x32\x19.fumarole.BlockchainEvent\"L\n\x10JoinControlPlane\x12 \n\x13\x63onsumer_group_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x16\n\x14_consumer_group_name\"\xd6\x01\n\x0e\x43ontrolCommand\x12\x32\n\x0cinitial_join\x18\x01 \x01(\x0b\x32\x1a.fumarole.JoinControlPlaneH\x00\x12/\n\rcommit_offset\x18\x02 \x01(\x0b\x32\x16.fumarole.CommitOffsetH\x00\x12\x34\n\tpoll_hist\x18\x03 \x01(\x0b\x32\x1f.fumarole.PollBlockchainHistoryH\x00\x12\x1e\n\x04ping\x18\x04 \x01(\x0b\x32\x0e.fumarole.PingH\x00\x42\t\n\x07\x63ommand\"\xdb\x01\n\x0f\x43ontrolResponse\x12\x33\n\x04init\x18\x01 \x01(\x0b\x32#.fumarole.InitialConsumerGroupStateH\x00\x12\x35\n\rcommit_offset\x18\x02 \x01(\x0b\x32\x1c.fumarole.CommitOffsetResultH\x00\x12\x30\n\tpoll_hist\x18\x03 \x01(\x0b\x32\x1b.fumarole.BlockchainHistoryH\x00\x12\x1e\n\x04pong\x18\x04 \x01(\x0b\x32\x0e.fumarole.PongH\x00\x42\n\n\x08response\"6\n\x12\x43ommitOffsetResult\x12\x0e\n\x06offset\x18\x01 \x01(\x03\x12\x10\n\x08shard_id\x18\x02 \x01(\x05\"\xce\x01\n\x19InitialConsumerGroupState\x12\x15\n\rblockchain_id\x18\x01 \x01(\x0c\x12]\n\x16last_committed_offsets\x18\x02 \x03(\x0b\x32=.fumarole.InitialConsumerGroupState.LastCommittedOffsetsEntry\x1a;\n\x19LastCommittedOffsetsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\"8\n\x1b\x43reateConsumerGroupResponse\x12\x19\n\x11\x63onsumer_group_id\x18\x01 \x01(\t\"\x9d\x01\n\x1a\x43reateConsumerGroupRequest\x12\x1b\n\x13\x63onsumer_group_name\x18\x01 \x01(\t\x12<\n\x15initial_offset_policy\x18\x02 \x01(\x0e\x32\x1d.fumarole.InitialOffsetPolicy\x12\x16\n\tfrom_slot\x18\x03 \x01(\x04H\x00\x88\x01\x01\x42\x0c\n\n_from_slot*0\n\x13InitialOffsetPolicy\x12\n\n\x06LATEST\x10\x00\x12\r\n\tFROM_SLOT\x10\x01\x32\xd1\x06\n\x08\x46umarole\x12\\\n\x14GetConsumerGroupInfo\x12%.fumarole.GetConsumerGroupInfoRequest\x1a\x1b.fumarole.ConsumerGroupInfo\"\x00\x12\x61\n\x12ListConsumerGroups\x12#.fumarole.ListConsumerGroupsRequest\x1a$.fumarole.ListConsumerGroupsResponse\"\x00\x12\x64\n\x13\x44\x65leteConsumerGroup\x12$.fumarole.DeleteConsumerGroupRequest\x1a%.fumarole.DeleteConsumerGroupResponse\"\x00\x12\x64\n\x13\x43reateConsumerGroup\x12$.fumarole.CreateConsumerGroupRequest\x1a%.fumarole.CreateConsumerGroupResponse\"\x00\x12I\n\rDownloadBlock\x12\x1c.fumarole.DownloadBlockShard\x1a\x16.fumarole.DataResponse\"\x00\x30\x01\x12\x44\n\rSubscribeData\x12\x15.fumarole.DataCommand\x1a\x16.fumarole.DataResponse\"\x00(\x01\x30\x01\x12L\n\x0bGetChainTip\x12\x1c.fumarole.GetChainTipRequest\x1a\x1d.fumarole.GetChainTipResponse\"\x00\x12\x46\n\tSubscribe\x12\x18.fumarole.ControlCommand\x1a\x19.fumarole.ControlResponse\"\x00(\x01\x30\x01\x12@\n\x07Version\x12\x18.fumarole.VersionRequest\x1a\x19.fumarole.VersionResponse\"\x00\x12O\n\x0cGetSlotRange\x12\x1d.fumarole.GetSlotRangeRequest\x1a\x1e.fumarole.GetSlotRangeResponse\"\x00P\x00\x62\x06proto3')
|
34
|
+
|
35
|
+
_globals = globals()
|
36
|
+
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
37
|
+
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'fumarole_pb2', _globals)
|
38
|
+
if not _descriptor._USE_C_DESCRIPTORS:
|
39
|
+
DESCRIPTOR._loaded_options = None
|
40
|
+
_globals['_GETCHAINTIPRESPONSE_SHARDTOMAXOFFSETMAPENTRY']._loaded_options = None
|
41
|
+
_globals['_GETCHAINTIPRESPONSE_SHARDTOMAXOFFSETMAPENTRY']._serialized_options = b'8\001'
|
42
|
+
_globals['_BLOCKFILTERS_ACCOUNTSENTRY']._loaded_options = None
|
43
|
+
_globals['_BLOCKFILTERS_ACCOUNTSENTRY']._serialized_options = b'8\001'
|
44
|
+
_globals['_BLOCKFILTERS_TRANSACTIONSENTRY']._loaded_options = None
|
45
|
+
_globals['_BLOCKFILTERS_TRANSACTIONSENTRY']._serialized_options = b'8\001'
|
46
|
+
_globals['_BLOCKFILTERS_ENTRIESENTRY']._loaded_options = None
|
47
|
+
_globals['_BLOCKFILTERS_ENTRIESENTRY']._serialized_options = b'8\001'
|
48
|
+
_globals['_BLOCKFILTERS_BLOCKSMETAENTRY']._loaded_options = None
|
49
|
+
_globals['_BLOCKFILTERS_BLOCKSMETAENTRY']._serialized_options = b'8\001'
|
50
|
+
_globals['_INITIALCONSUMERGROUPSTATE_LASTCOMMITTEDOFFSETSENTRY']._loaded_options = None
|
51
|
+
_globals['_INITIALCONSUMERGROUPSTATE_LASTCOMMITTEDOFFSETSENTRY']._serialized_options = b'8\001'
|
52
|
+
_globals['_INITIALOFFSETPOLICY']._serialized_start=3669
|
53
|
+
_globals['_INITIALOFFSETPOLICY']._serialized_end=3717
|
54
|
+
_globals['_GETSLOTRANGEREQUEST']._serialized_start=42
|
55
|
+
_globals['_GETSLOTRANGEREQUEST']._serialized_end=86
|
56
|
+
_globals['_GETSLOTRANGERESPONSE']._serialized_start=88
|
57
|
+
_globals['_GETSLOTRANGERESPONSE']._serialized_end=169
|
58
|
+
_globals['_GETCHAINTIPREQUEST']._serialized_start=171
|
59
|
+
_globals['_GETCHAINTIPREQUEST']._serialized_end=214
|
60
|
+
_globals['_GETCHAINTIPRESPONSE']._serialized_start=217
|
61
|
+
_globals['_GETCHAINTIPRESPONSE']._serialized_end=410
|
62
|
+
_globals['_GETCHAINTIPRESPONSE_SHARDTOMAXOFFSETMAPENTRY']._serialized_start=352
|
63
|
+
_globals['_GETCHAINTIPRESPONSE_SHARDTOMAXOFFSETMAPENTRY']._serialized_end=410
|
64
|
+
_globals['_VERSIONREQUEST']._serialized_start=412
|
65
|
+
_globals['_VERSIONREQUEST']._serialized_end=428
|
66
|
+
_globals['_VERSIONRESPONSE']._serialized_start=430
|
67
|
+
_globals['_VERSIONRESPONSE']._serialized_end=464
|
68
|
+
_globals['_GETCONSUMERGROUPINFOREQUEST']._serialized_start=466
|
69
|
+
_globals['_GETCONSUMERGROUPINFOREQUEST']._serialized_end=524
|
70
|
+
_globals['_DELETECONSUMERGROUPREQUEST']._serialized_start=526
|
71
|
+
_globals['_DELETECONSUMERGROUPREQUEST']._serialized_end=583
|
72
|
+
_globals['_DELETECONSUMERGROUPRESPONSE']._serialized_start=585
|
73
|
+
_globals['_DELETECONSUMERGROUPRESPONSE']._serialized_end=631
|
74
|
+
_globals['_LISTCONSUMERGROUPSREQUEST']._serialized_start=633
|
75
|
+
_globals['_LISTCONSUMERGROUPSREQUEST']._serialized_end=660
|
76
|
+
_globals['_LISTCONSUMERGROUPSRESPONSE']._serialized_start=662
|
77
|
+
_globals['_LISTCONSUMERGROUPSRESPONSE']._serialized_end=744
|
78
|
+
_globals['_CONSUMERGROUPINFO']._serialized_start=746
|
79
|
+
_globals['_CONSUMERGROUPINFO']._serialized_end=847
|
80
|
+
_globals['_GETSLOTLAGINFOREQUEST']._serialized_start=849
|
81
|
+
_globals['_GETSLOTLAGINFOREQUEST']._serialized_end=901
|
82
|
+
_globals['_BLOCKFILTERS']._serialized_start=904
|
83
|
+
_globals['_BLOCKFILTERS']._serialized_end=1517
|
84
|
+
_globals['_BLOCKFILTERS_ACCOUNTSENTRY']._serialized_start=1155
|
85
|
+
_globals['_BLOCKFILTERS_ACCOUNTSENTRY']._serialized_end=1242
|
86
|
+
_globals['_BLOCKFILTERS_TRANSACTIONSENTRY']._serialized_start=1244
|
87
|
+
_globals['_BLOCKFILTERS_TRANSACTIONSENTRY']._serialized_end=1339
|
88
|
+
_globals['_BLOCKFILTERS_ENTRIESENTRY']._serialized_start=1341
|
89
|
+
_globals['_BLOCKFILTERS_ENTRIESENTRY']._serialized_end=1424
|
90
|
+
_globals['_BLOCKFILTERS_BLOCKSMETAENTRY']._serialized_start=1426
|
91
|
+
_globals['_BLOCKFILTERS_BLOCKSMETAENTRY']._serialized_end=1517
|
92
|
+
_globals['_DOWNLOADBLOCKSHARD']._serialized_start=1520
|
93
|
+
_globals['_DOWNLOADBLOCKSHARD']._serialized_end=1669
|
94
|
+
_globals['_PING']._serialized_start=1671
|
95
|
+
_globals['_PING']._serialized_end=1694
|
96
|
+
_globals['_PONG']._serialized_start=1696
|
97
|
+
_globals['_PONG']._serialized_end=1719
|
98
|
+
_globals['_DATACOMMAND']._serialized_start=1722
|
99
|
+
_globals['_DATACOMMAND']._serialized_end=1857
|
100
|
+
_globals['_BLOCKSHARDDOWNLOADFINISH']._serialized_start=1859
|
101
|
+
_globals['_BLOCKSHARDDOWNLOADFINISH']._serialized_end=1885
|
102
|
+
_globals['_BLOCKNOTFOUND']._serialized_start=1887
|
103
|
+
_globals['_BLOCKNOTFOUND']._serialized_end=1963
|
104
|
+
_globals['_DATAERROR']._serialized_start=1965
|
105
|
+
_globals['_DATAERROR']._serialized_end=2031
|
106
|
+
_globals['_DATARESPONSE']._serialized_start=2034
|
107
|
+
_globals['_DATARESPONSE']._serialized_end=2178
|
108
|
+
_globals['_COMMITOFFSET']._serialized_start=2180
|
109
|
+
_globals['_COMMITOFFSET']._serialized_end=2228
|
110
|
+
_globals['_POLLBLOCKCHAINHISTORY']._serialized_start=2230
|
111
|
+
_globals['_POLLBLOCKCHAINHISTORY']._serialized_end=2329
|
112
|
+
_globals['_BLOCKCHAINEVENT']._serialized_start=2332
|
113
|
+
_globals['_BLOCKCHAINEVENT']._serialized_end=2603
|
114
|
+
_globals['_BLOCKCHAINHISTORY']._serialized_start=2605
|
115
|
+
_globals['_BLOCKCHAINHISTORY']._serialized_end=2667
|
116
|
+
_globals['_JOINCONTROLPLANE']._serialized_start=2669
|
117
|
+
_globals['_JOINCONTROLPLANE']._serialized_end=2745
|
118
|
+
_globals['_CONTROLCOMMAND']._serialized_start=2748
|
119
|
+
_globals['_CONTROLCOMMAND']._serialized_end=2962
|
120
|
+
_globals['_CONTROLRESPONSE']._serialized_start=2965
|
121
|
+
_globals['_CONTROLRESPONSE']._serialized_end=3184
|
122
|
+
_globals['_COMMITOFFSETRESULT']._serialized_start=3186
|
123
|
+
_globals['_COMMITOFFSETRESULT']._serialized_end=3240
|
124
|
+
_globals['_INITIALCONSUMERGROUPSTATE']._serialized_start=3243
|
125
|
+
_globals['_INITIALCONSUMERGROUPSTATE']._serialized_end=3449
|
126
|
+
_globals['_INITIALCONSUMERGROUPSTATE_LASTCOMMITTEDOFFSETSENTRY']._serialized_start=3390
|
127
|
+
_globals['_INITIALCONSUMERGROUPSTATE_LASTCOMMITTEDOFFSETSENTRY']._serialized_end=3449
|
128
|
+
_globals['_CREATECONSUMERGROUPRESPONSE']._serialized_start=3451
|
129
|
+
_globals['_CREATECONSUMERGROUPRESPONSE']._serialized_end=3507
|
130
|
+
_globals['_CREATECONSUMERGROUPREQUEST']._serialized_start=3510
|
131
|
+
_globals['_CREATECONSUMERGROUPREQUEST']._serialized_end=3667
|
132
|
+
_globals['_FUMAROLE']._serialized_start=3720
|
133
|
+
_globals['_FUMAROLE']._serialized_end=4569
|
134
|
+
# @@protoc_insertion_point(module_scope)
|
@@ -4,7 +4,8 @@ from google.protobuf.internal import containers as _containers
|
|
4
4
|
from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper
|
5
5
|
from google.protobuf import descriptor as _descriptor
|
6
6
|
from google.protobuf import message as _message
|
7
|
-
from
|
7
|
+
from collections.abc import Iterable as _Iterable, Mapping as _Mapping
|
8
|
+
from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union
|
8
9
|
from yellowstone_fumarole_proto.geyser_pb2 import SubscribeRequest as SubscribeRequest
|
9
10
|
from yellowstone_fumarole_proto.geyser_pb2 import SubscribeRequestFilterAccounts as SubscribeRequestFilterAccounts
|
10
11
|
from yellowstone_fumarole_proto.geyser_pb2 import SubscribeRequestFilterAccountsFilter as SubscribeRequestFilterAccountsFilter
|
@@ -29,6 +30,8 @@ from yellowstone_fumarole_proto.geyser_pb2 import SubscribeUpdateBlockMeta as Su
|
|
29
30
|
from yellowstone_fumarole_proto.geyser_pb2 import SubscribeUpdateEntry as SubscribeUpdateEntry
|
30
31
|
from yellowstone_fumarole_proto.geyser_pb2 import SubscribeUpdatePing as SubscribeUpdatePing
|
31
32
|
from yellowstone_fumarole_proto.geyser_pb2 import SubscribeUpdatePong as SubscribeUpdatePong
|
33
|
+
from yellowstone_fumarole_proto.geyser_pb2 import SubscribeReplayInfoRequest as SubscribeReplayInfoRequest
|
34
|
+
from yellowstone_fumarole_proto.geyser_pb2 import SubscribeReplayInfoResponse as SubscribeReplayInfoResponse
|
32
35
|
from yellowstone_fumarole_proto.geyser_pb2 import PingRequest as PingRequest
|
33
36
|
from yellowstone_fumarole_proto.geyser_pb2 import PongResponse as PongResponse
|
34
37
|
from yellowstone_fumarole_proto.geyser_pb2 import GetLatestBlockhashRequest as GetLatestBlockhashRequest
|
@@ -59,7 +62,46 @@ SLOT_DEAD: _geyser_pb2.SlotStatus
|
|
59
62
|
class InitialOffsetPolicy(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
|
60
63
|
__slots__ = ()
|
61
64
|
LATEST: _ClassVar[InitialOffsetPolicy]
|
65
|
+
FROM_SLOT: _ClassVar[InitialOffsetPolicy]
|
62
66
|
LATEST: InitialOffsetPolicy
|
67
|
+
FROM_SLOT: InitialOffsetPolicy
|
68
|
+
|
69
|
+
class GetSlotRangeRequest(_message.Message):
|
70
|
+
__slots__ = ("blockchain_id",)
|
71
|
+
BLOCKCHAIN_ID_FIELD_NUMBER: _ClassVar[int]
|
72
|
+
blockchain_id: bytes
|
73
|
+
def __init__(self, blockchain_id: _Optional[bytes] = ...) -> None: ...
|
74
|
+
|
75
|
+
class GetSlotRangeResponse(_message.Message):
|
76
|
+
__slots__ = ("blockchain_id", "min_slot", "max_slot")
|
77
|
+
BLOCKCHAIN_ID_FIELD_NUMBER: _ClassVar[int]
|
78
|
+
MIN_SLOT_FIELD_NUMBER: _ClassVar[int]
|
79
|
+
MAX_SLOT_FIELD_NUMBER: _ClassVar[int]
|
80
|
+
blockchain_id: bytes
|
81
|
+
min_slot: int
|
82
|
+
max_slot: int
|
83
|
+
def __init__(self, blockchain_id: _Optional[bytes] = ..., min_slot: _Optional[int] = ..., max_slot: _Optional[int] = ...) -> None: ...
|
84
|
+
|
85
|
+
class GetChainTipRequest(_message.Message):
|
86
|
+
__slots__ = ("blockchain_id",)
|
87
|
+
BLOCKCHAIN_ID_FIELD_NUMBER: _ClassVar[int]
|
88
|
+
blockchain_id: bytes
|
89
|
+
def __init__(self, blockchain_id: _Optional[bytes] = ...) -> None: ...
|
90
|
+
|
91
|
+
class GetChainTipResponse(_message.Message):
|
92
|
+
__slots__ = ("blockchain_id", "shard_to_max_offset_map")
|
93
|
+
class ShardToMaxOffsetMapEntry(_message.Message):
|
94
|
+
__slots__ = ("key", "value")
|
95
|
+
KEY_FIELD_NUMBER: _ClassVar[int]
|
96
|
+
VALUE_FIELD_NUMBER: _ClassVar[int]
|
97
|
+
key: int
|
98
|
+
value: int
|
99
|
+
def __init__(self, key: _Optional[int] = ..., value: _Optional[int] = ...) -> None: ...
|
100
|
+
BLOCKCHAIN_ID_FIELD_NUMBER: _ClassVar[int]
|
101
|
+
SHARD_TO_MAX_OFFSET_MAP_FIELD_NUMBER: _ClassVar[int]
|
102
|
+
blockchain_id: bytes
|
103
|
+
shard_to_max_offset_map: _containers.ScalarMap[int, int]
|
104
|
+
def __init__(self, blockchain_id: _Optional[bytes] = ..., shard_to_max_offset_map: _Optional[_Mapping[int, int]] = ...) -> None: ...
|
63
105
|
|
64
106
|
class VersionRequest(_message.Message):
|
65
107
|
__slots__ = ()
|
@@ -100,14 +142,16 @@ class ListConsumerGroupsResponse(_message.Message):
|
|
100
142
|
def __init__(self, consumer_groups: _Optional[_Iterable[_Union[ConsumerGroupInfo, _Mapping]]] = ...) -> None: ...
|
101
143
|
|
102
144
|
class ConsumerGroupInfo(_message.Message):
|
103
|
-
__slots__ = ("id", "consumer_group_name", "is_stale")
|
145
|
+
__slots__ = ("id", "consumer_group_name", "is_stale", "blockchain_id")
|
104
146
|
ID_FIELD_NUMBER: _ClassVar[int]
|
105
147
|
CONSUMER_GROUP_NAME_FIELD_NUMBER: _ClassVar[int]
|
106
148
|
IS_STALE_FIELD_NUMBER: _ClassVar[int]
|
149
|
+
BLOCKCHAIN_ID_FIELD_NUMBER: _ClassVar[int]
|
107
150
|
id: str
|
108
151
|
consumer_group_name: str
|
109
152
|
is_stale: bool
|
110
|
-
|
153
|
+
blockchain_id: bytes
|
154
|
+
def __init__(self, id: _Optional[str] = ..., consumer_group_name: _Optional[str] = ..., is_stale: bool = ..., blockchain_id: _Optional[bytes] = ...) -> None: ...
|
111
155
|
|
112
156
|
class GetSlotLagInfoRequest(_message.Message):
|
113
157
|
__slots__ = ("consumer_group_name",)
|
@@ -320,9 +364,11 @@ class CreateConsumerGroupResponse(_message.Message):
|
|
320
364
|
def __init__(self, consumer_group_id: _Optional[str] = ...) -> None: ...
|
321
365
|
|
322
366
|
class CreateConsumerGroupRequest(_message.Message):
|
323
|
-
__slots__ = ("consumer_group_name", "initial_offset_policy")
|
367
|
+
__slots__ = ("consumer_group_name", "initial_offset_policy", "from_slot")
|
324
368
|
CONSUMER_GROUP_NAME_FIELD_NUMBER: _ClassVar[int]
|
325
369
|
INITIAL_OFFSET_POLICY_FIELD_NUMBER: _ClassVar[int]
|
370
|
+
FROM_SLOT_FIELD_NUMBER: _ClassVar[int]
|
326
371
|
consumer_group_name: str
|
327
372
|
initial_offset_policy: InitialOffsetPolicy
|
328
|
-
|
373
|
+
from_slot: int
|
374
|
+
def __init__(self, consumer_group_name: _Optional[str] = ..., initial_offset_policy: _Optional[_Union[InitialOffsetPolicy, str]] = ..., from_slot: _Optional[int] = ...) -> None: ...
|