sol-parser-sdk-python 0.5.6__py3-none-any.whl → 0.5.7__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.
- sol_parser/__init__.py +18 -0
- sol_parser/account_dispatcher.py +2 -0
- sol_parser/account_fillers/meteora.py +15 -0
- sol_parser/account_fillers/pumpfun.py +11 -0
- sol_parser/check_migration.py +3 -0
- sol_parser/dex_parsers.py +881 -64
- sol_parser/event_type_parity.py +129 -0
- sol_parser/event_types.py +252 -0
- sol_parser/grpc_client.py +3 -4
- sol_parser/grpc_instruction_parser.py +14 -3
- sol_parser/grpc_types.py +49 -21
- sol_parser/inner_instruction_parser.py +138 -12
- sol_parser/instructions.py +293 -57
- sol_parser/log_instr_dedup.py +34 -4
- sol_parser/merger.py +115 -41
- sol_parser/parser.py +26 -6
- sol_parser/pumpfun_fee_enrich.py +12 -1
- sol_parser/rpc_parser.py +56 -11
- {sol_parser_sdk_python-0.5.6.dist-info → sol_parser_sdk_python-0.5.7.dist-info}/METADATA +2 -2
- {sol_parser_sdk_python-0.5.6.dist-info → sol_parser_sdk_python-0.5.7.dist-info}/RECORD +22 -21
- {sol_parser_sdk_python-0.5.6.dist-info → sol_parser_sdk_python-0.5.7.dist-info}/WHEEL +1 -1
- {sol_parser_sdk_python-0.5.6.dist-info → sol_parser_sdk_python-0.5.7.dist-info}/entry_points.txt +0 -0
sol_parser/merger.py
CHANGED
|
@@ -60,48 +60,123 @@ def _fill_attr_if_empty(base: Any, attr: str, source: Any) -> None:
|
|
|
60
60
|
setattr(base, attr, value)
|
|
61
61
|
|
|
62
62
|
|
|
63
|
+
def _put_attr_if_set(base: Any, attr: str, source: Any) -> None:
|
|
64
|
+
value = getattr(source, attr, None)
|
|
65
|
+
if not _empty(value):
|
|
66
|
+
setattr(base, attr, value)
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
def _put_num_if_nonzero(base: Any, attr: str, source: Any) -> None:
|
|
70
|
+
value = getattr(source, attr, 0)
|
|
71
|
+
if value:
|
|
72
|
+
setattr(base, attr, value)
|
|
73
|
+
|
|
74
|
+
|
|
63
75
|
def merge_pumpfun_trade(base: PumpFunTradeEvent, inner: PumpFunTradeEvent) -> None:
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
base.
|
|
94
|
-
|
|
76
|
+
leg = inner.sol_amount != 0 or inner.token_amount != 0
|
|
77
|
+
|
|
78
|
+
for attr in ("mint", "user", "fee_recipient", "creator"):
|
|
79
|
+
_put_attr_if_set(base, attr, inner)
|
|
80
|
+
|
|
81
|
+
if leg:
|
|
82
|
+
for attr in (
|
|
83
|
+
"sol_amount",
|
|
84
|
+
"token_amount",
|
|
85
|
+
"timestamp",
|
|
86
|
+
"virtual_sol_reserves",
|
|
87
|
+
"virtual_token_reserves",
|
|
88
|
+
"real_sol_reserves",
|
|
89
|
+
"real_token_reserves",
|
|
90
|
+
"fee_basis_points",
|
|
91
|
+
"fee",
|
|
92
|
+
"creator_fee_basis_points",
|
|
93
|
+
"creator_fee",
|
|
94
|
+
"total_unclaimed_tokens",
|
|
95
|
+
"total_claimed_tokens",
|
|
96
|
+
"current_sol_volume",
|
|
97
|
+
"last_update_timestamp",
|
|
98
|
+
):
|
|
99
|
+
setattr(base, attr, getattr(inner, attr))
|
|
100
|
+
base.is_buy = inner.is_buy
|
|
101
|
+
base.track_volume = bool(base.track_volume) or bool(inner.track_volume)
|
|
102
|
+
base.mayhem_mode = bool(base.mayhem_mode) or bool(inner.mayhem_mode)
|
|
103
|
+
if inner.ix_name:
|
|
104
|
+
base.ix_name = inner.ix_name
|
|
105
|
+
base.is_cashback_coin = bool(base.is_cashback_coin) or bool(inner.is_cashback_coin)
|
|
106
|
+
else:
|
|
107
|
+
for attr in (
|
|
108
|
+
"fee",
|
|
109
|
+
"creator_fee",
|
|
110
|
+
"fee_basis_points",
|
|
111
|
+
"creator_fee_basis_points",
|
|
112
|
+
"virtual_sol_reserves",
|
|
113
|
+
"virtual_token_reserves",
|
|
114
|
+
"real_sol_reserves",
|
|
115
|
+
"real_token_reserves",
|
|
116
|
+
"total_unclaimed_tokens",
|
|
117
|
+
"total_claimed_tokens",
|
|
118
|
+
"current_sol_volume",
|
|
119
|
+
"timestamp",
|
|
120
|
+
"last_update_timestamp",
|
|
121
|
+
):
|
|
122
|
+
_put_num_if_nonzero(base, attr, inner)
|
|
123
|
+
base.track_volume = bool(base.track_volume) or bool(inner.track_volume)
|
|
124
|
+
base.mayhem_mode = bool(base.mayhem_mode) or bool(inner.mayhem_mode)
|
|
125
|
+
if inner.ix_name:
|
|
126
|
+
base.ix_name = inner.ix_name
|
|
127
|
+
base.is_cashback_coin = bool(base.is_cashback_coin) or bool(inner.is_cashback_coin)
|
|
128
|
+
|
|
129
|
+
for attr in (
|
|
130
|
+
"cashback_fee_basis_points",
|
|
131
|
+
"cashback",
|
|
132
|
+
"buyback_fee_basis_points",
|
|
133
|
+
"buyback_fee",
|
|
134
|
+
"quote_amount",
|
|
135
|
+
"virtual_quote_reserves",
|
|
136
|
+
"real_quote_reserves",
|
|
137
|
+
"amount",
|
|
138
|
+
"max_sol_cost",
|
|
139
|
+
"min_sol_output",
|
|
140
|
+
"spendable_sol_in",
|
|
141
|
+
"spendable_quote_in",
|
|
142
|
+
"min_tokens_out",
|
|
143
|
+
):
|
|
144
|
+
_put_num_if_nonzero(base, attr, inner)
|
|
145
|
+
|
|
146
|
+
if inner.shareholders and not base.shareholders:
|
|
95
147
|
base.shareholders = inner.shareholders
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
148
|
+
|
|
149
|
+
for attr in (
|
|
150
|
+
"quote_mint",
|
|
151
|
+
"global_account",
|
|
152
|
+
"bonding_curve",
|
|
153
|
+
"bonding_curve_v2",
|
|
154
|
+
"associated_bonding_curve",
|
|
155
|
+
"associated_user",
|
|
156
|
+
"system_program",
|
|
157
|
+
"token_program",
|
|
158
|
+
"quote_token_program",
|
|
159
|
+
"associated_token_program",
|
|
160
|
+
"creator_vault",
|
|
161
|
+
"associated_quote_fee_recipient",
|
|
162
|
+
"buyback_fee_recipient",
|
|
163
|
+
"associated_quote_buyback_fee_recipient",
|
|
164
|
+
"associated_quote_bonding_curve",
|
|
165
|
+
"associated_quote_user",
|
|
166
|
+
"associated_creator_vault",
|
|
167
|
+
"sharing_config",
|
|
168
|
+
"event_authority",
|
|
169
|
+
"program",
|
|
170
|
+
"global_volume_accumulator",
|
|
171
|
+
"user_volume_accumulator",
|
|
172
|
+
"associated_user_volume_accumulator",
|
|
173
|
+
"fee_config",
|
|
174
|
+
"fee_program",
|
|
175
|
+
"extra_instruction_account",
|
|
176
|
+
):
|
|
177
|
+
_put_attr_if_set(base, attr, inner)
|
|
178
|
+
|
|
179
|
+
base.is_created_buy = bool(base.is_created_buy) or bool(inner.is_created_buy)
|
|
105
180
|
|
|
106
181
|
|
|
107
182
|
def merge_pumpswap_buy(base: PumpSwapBuyEvent, inner: PumpSwapBuyEvent) -> None:
|
|
@@ -199,7 +274,6 @@ def merge_dex_events(base: DexEvent, inner: DexEvent) -> None:
|
|
|
199
274
|
EventType.PUMP_FUN_BUY_EXACT_SOL_IN,
|
|
200
275
|
):
|
|
201
276
|
merge_pumpfun_trade(bd, ind)
|
|
202
|
-
base.type = inner.type
|
|
203
277
|
return
|
|
204
278
|
|
|
205
279
|
if isinstance(bd, PumpFunCreateEvent) and isinstance(ind, PumpFunCreateEvent):
|
sol_parser/parser.py
CHANGED
|
@@ -8,12 +8,16 @@ from typing import TYPE_CHECKING, Any, Callable, Dict, List, Optional
|
|
|
8
8
|
|
|
9
9
|
from .dex_parsers import (
|
|
10
10
|
DexEvent,
|
|
11
|
+
PUMPFUN_PROGRAM_ID,
|
|
12
|
+
PUMP_TRADE,
|
|
11
13
|
apply_event_type_filter,
|
|
12
14
|
dispatch_program_data,
|
|
13
15
|
event_type_for_discriminator,
|
|
14
16
|
event_type_for_program_discriminator,
|
|
15
17
|
filter_allows_unknown_log_event,
|
|
18
|
+
filter_allows_unscoped_discriminator,
|
|
16
19
|
filter_includes_program,
|
|
20
|
+
filter_wants_pumpfun_trade,
|
|
17
21
|
parse_trade_from_data,
|
|
18
22
|
)
|
|
19
23
|
|
|
@@ -32,13 +36,11 @@ def decode_program_data_line(log: str) -> Optional[bytes]:
|
|
|
32
36
|
if i < 0:
|
|
33
37
|
return None
|
|
34
38
|
s = log[i + len(p) :].strip()
|
|
35
|
-
if len(s) > 2700:
|
|
36
|
-
return None
|
|
37
39
|
try:
|
|
38
40
|
raw = base64.standard_b64decode(s)
|
|
39
41
|
except Exception:
|
|
40
42
|
return None
|
|
41
|
-
if len(raw) < 8
|
|
43
|
+
if len(raw) < 8:
|
|
42
44
|
return None
|
|
43
45
|
return raw
|
|
44
46
|
|
|
@@ -82,19 +84,37 @@ def parse_log_optimized(
|
|
|
82
84
|
return None
|
|
83
85
|
disc = _disc8(buf[:8])
|
|
84
86
|
if event_type_filter is not None:
|
|
87
|
+
is_unscoped_shared_discriminator = program_id is None and disc in (
|
|
88
|
+
_disc8(bytes([189, 219, 127, 211, 78, 230, 97, 238])),
|
|
89
|
+
_disc8(bytes([143, 190, 90, 218, 196, 30, 51, 222])),
|
|
90
|
+
)
|
|
85
91
|
event_type = event_type_for_program_discriminator(program_id, disc)
|
|
86
|
-
if
|
|
92
|
+
if is_unscoped_shared_discriminator:
|
|
93
|
+
if not filter_allows_unscoped_discriminator(event_type_filter, disc):
|
|
94
|
+
return None
|
|
95
|
+
elif program_id == PUMPFUN_PROGRAM_ID and disc == PUMP_TRADE:
|
|
96
|
+
if not filter_wants_pumpfun_trade(event_type_filter):
|
|
97
|
+
return None
|
|
98
|
+
elif event_type is not None:
|
|
87
99
|
if not event_type_filter.should_include(event_type):
|
|
88
100
|
return None
|
|
89
101
|
elif program_id:
|
|
90
102
|
if not filter_includes_program(event_type_filter, program_id):
|
|
91
103
|
return None
|
|
92
|
-
elif not
|
|
104
|
+
elif not filter_allows_unscoped_discriminator(event_type_filter, disc):
|
|
93
105
|
return None
|
|
94
106
|
data = buf[8:]
|
|
95
107
|
meta = _meta(signature, slot, tx_index, block_time_us, grpc, recent_blockhash)
|
|
96
108
|
return apply_event_type_filter(
|
|
97
|
-
dispatch_program_data(
|
|
109
|
+
dispatch_program_data(
|
|
110
|
+
disc,
|
|
111
|
+
data,
|
|
112
|
+
buf,
|
|
113
|
+
meta,
|
|
114
|
+
is_created_buy,
|
|
115
|
+
program_id,
|
|
116
|
+
event_type_filter,
|
|
117
|
+
),
|
|
98
118
|
event_type_filter,
|
|
99
119
|
)
|
|
100
120
|
|
sol_parser/pumpfun_fee_enrich.py
CHANGED
|
@@ -82,7 +82,18 @@ def enrich_create_v2_from_create_events(events: List[DexEvent]) -> None:
|
|
|
82
82
|
if c is None:
|
|
83
83
|
continue
|
|
84
84
|
|
|
85
|
-
for attr in (
|
|
85
|
+
for attr in (
|
|
86
|
+
"name",
|
|
87
|
+
"symbol",
|
|
88
|
+
"uri",
|
|
89
|
+
"bonding_curve",
|
|
90
|
+
"user",
|
|
91
|
+
"creator",
|
|
92
|
+
"token_program",
|
|
93
|
+
"quote_mint",
|
|
94
|
+
"quote_vault",
|
|
95
|
+
"quote_token_program",
|
|
96
|
+
):
|
|
86
97
|
_fill_str_if_empty(c2, attr, getattr(c, attr))
|
|
87
98
|
for attr in (
|
|
88
99
|
"timestamp",
|
sol_parser/rpc_parser.py
CHANGED
|
@@ -8,9 +8,10 @@ from dataclasses import dataclass
|
|
|
8
8
|
|
|
9
9
|
import base58
|
|
10
10
|
|
|
11
|
-
from .dex_parsers import DexEvent
|
|
11
|
+
from .dex_parsers import DexEvent
|
|
12
12
|
from .grpc_types import EventTypeFilter, EventType, event_type_filter_allows_instruction_parsing
|
|
13
|
-
from .
|
|
13
|
+
from .inner_instruction_parser import parse_inner_instruction
|
|
14
|
+
from .instructions import parse_inner_compiled_instruction_if_supported, parse_instruction_unified
|
|
14
15
|
from .log_instr_dedup import dedupe_log_instruction_events
|
|
15
16
|
from .pumpfun_fee_enrich import enrich_pumpfun_same_tx_post_merge
|
|
16
17
|
|
|
@@ -214,11 +215,16 @@ def parse_rpc_transaction(
|
|
|
214
215
|
block_tx_index = int(getattr(tx, "transaction_index", 0) or 0)
|
|
215
216
|
full_account_keys = _merge_rpc_full_account_keys(msg.account_keys, meta)
|
|
216
217
|
|
|
217
|
-
|
|
218
|
+
indexed_instruction_events: List[Tuple[int, Optional[int], DexEvent]] = []
|
|
219
|
+
from .grpc_instruction_parser import (
|
|
220
|
+
detect_pumpfun_create_from_logs,
|
|
221
|
+
merge_instruction_events,
|
|
222
|
+
)
|
|
223
|
+
has_pumpfun_create_log = detect_pumpfun_create_from_logs(list(meta.log_messages))
|
|
218
224
|
|
|
219
225
|
if _should_parse_rpc_instructions(filter):
|
|
220
226
|
# 解析外层指令
|
|
221
|
-
for ix in msg.instructions:
|
|
227
|
+
for outer_idx, ix in enumerate(msg.instructions):
|
|
222
228
|
ev = _parse_rpc_instruction(
|
|
223
229
|
ix,
|
|
224
230
|
full_account_keys,
|
|
@@ -228,13 +234,15 @@ def parse_rpc_transaction(
|
|
|
228
234
|
block_time_us,
|
|
229
235
|
grpc_recv_us,
|
|
230
236
|
filter,
|
|
237
|
+
inner=False,
|
|
238
|
+
is_created_buy=has_pumpfun_create_log,
|
|
231
239
|
)
|
|
232
240
|
if ev:
|
|
233
|
-
|
|
241
|
+
indexed_instruction_events.append((outer_idx, None, ev))
|
|
234
242
|
|
|
235
243
|
# 解析内层指令
|
|
236
244
|
for group in meta.inner_instructions:
|
|
237
|
-
for ix in group.instructions:
|
|
245
|
+
for inner_idx, ix in enumerate(group.instructions):
|
|
238
246
|
ev = _parse_rpc_instruction(
|
|
239
247
|
ix,
|
|
240
248
|
full_account_keys,
|
|
@@ -244,12 +252,20 @@ def parse_rpc_transaction(
|
|
|
244
252
|
block_time_us,
|
|
245
253
|
grpc_recv_us,
|
|
246
254
|
filter,
|
|
255
|
+
inner=True,
|
|
256
|
+
is_created_buy=has_pumpfun_create_log,
|
|
247
257
|
)
|
|
248
258
|
if ev:
|
|
249
|
-
|
|
259
|
+
indexed_instruction_events.append((int(group.index), inner_idx, ev))
|
|
260
|
+
|
|
261
|
+
instruction_events = merge_instruction_events(indexed_instruction_events)
|
|
262
|
+
enrich_pumpfun_same_tx_post_merge(instruction_events)
|
|
263
|
+
if msg.recent_blockhash:
|
|
264
|
+
for ev in instruction_events:
|
|
265
|
+
if hasattr(ev.data, "metadata"):
|
|
266
|
+
ev.data.metadata.recent_blockhash = msg.recent_blockhash
|
|
250
267
|
|
|
251
268
|
# 解析日志
|
|
252
|
-
is_created_buy = False
|
|
253
269
|
recent_blockhash = msg.recent_blockhash
|
|
254
270
|
log_events: List[DexEvent] = []
|
|
255
271
|
|
|
@@ -271,13 +287,11 @@ def parse_rpc_transaction(
|
|
|
271
287
|
block_time_us,
|
|
272
288
|
grpc_recv_us,
|
|
273
289
|
filter,
|
|
274
|
-
|
|
290
|
+
has_pumpfun_create_log,
|
|
275
291
|
recent_blockhash,
|
|
276
292
|
active_program_stack[-1] if active_program_stack else None,
|
|
277
293
|
)
|
|
278
294
|
if ev:
|
|
279
|
-
if ev.type in (EventType.PUMP_FUN_CREATE, EventType.PUMP_FUN_CREATE_V2):
|
|
280
|
-
is_created_buy = True
|
|
281
295
|
log_events.append(ev)
|
|
282
296
|
|
|
283
297
|
completed = parse_program_complete_info(log)
|
|
@@ -315,6 +329,8 @@ def _parse_rpc_instruction(
|
|
|
315
329
|
block_time_us: Optional[int],
|
|
316
330
|
grpc_recv_us: int,
|
|
317
331
|
filter: Optional[EventTypeFilter],
|
|
332
|
+
inner: bool = False,
|
|
333
|
+
is_created_buy: bool = False,
|
|
318
334
|
) -> Optional[DexEvent]:
|
|
319
335
|
"""解析 RPC 指令"""
|
|
320
336
|
# 获取程序 ID
|
|
@@ -334,6 +350,35 @@ def _parse_rpc_instruction(
|
|
|
334
350
|
if acc_idx < len(account_keys):
|
|
335
351
|
accounts.append(account_keys[acc_idx])
|
|
336
352
|
|
|
353
|
+
if inner:
|
|
354
|
+
ev = parse_inner_compiled_instruction_if_supported(
|
|
355
|
+
data,
|
|
356
|
+
accounts,
|
|
357
|
+
signature,
|
|
358
|
+
slot,
|
|
359
|
+
tx_index,
|
|
360
|
+
block_time_us,
|
|
361
|
+
grpc_recv_us,
|
|
362
|
+
filter,
|
|
363
|
+
program_id,
|
|
364
|
+
)
|
|
365
|
+
if ev:
|
|
366
|
+
return ev
|
|
367
|
+
return parse_inner_instruction(
|
|
368
|
+
data,
|
|
369
|
+
program_id,
|
|
370
|
+
{
|
|
371
|
+
"signature": signature,
|
|
372
|
+
"slot": slot,
|
|
373
|
+
"tx_index": tx_index,
|
|
374
|
+
"block_time_us": 0 if block_time_us is None else block_time_us,
|
|
375
|
+
"grpc_recv_us": grpc_recv_us,
|
|
376
|
+
"recent_blockhash": "",
|
|
377
|
+
},
|
|
378
|
+
filter,
|
|
379
|
+
is_created_buy,
|
|
380
|
+
)
|
|
381
|
+
|
|
337
382
|
return parse_instruction_unified(
|
|
338
383
|
data, accounts, signature, slot, tx_index, block_time_us, grpc_recv_us, filter, program_id
|
|
339
384
|
)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sol-parser-sdk-python
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.7
|
|
4
4
|
Summary: Solana DEX program log parsing (pure Python, API aligned with sol-parser-sdk)
|
|
5
5
|
Requires-Python: >=3.10
|
|
6
6
|
Requires-Dist: base58>=2.0
|
|
@@ -92,7 +92,7 @@ Description-Content-Type: text/markdown
|
|
|
92
92
|
**From PyPI**
|
|
93
93
|
|
|
94
94
|
```bash
|
|
95
|
-
pip install sol-parser-sdk-python==0.5.
|
|
95
|
+
pip install sol-parser-sdk-python==0.5.7
|
|
96
96
|
```
|
|
97
97
|
|
|
98
98
|
**From source**
|
|
@@ -1,27 +1,28 @@
|
|
|
1
|
-
sol_parser/__init__.py,sha256=
|
|
2
|
-
sol_parser/account_dispatcher.py,sha256=
|
|
3
|
-
sol_parser/check_migration.py,sha256=
|
|
1
|
+
sol_parser/__init__.py,sha256=afdR4vxTW8C9SDSbS5T8dq_QDBT_YLar_HX73hADNac,14587
|
|
2
|
+
sol_parser/account_dispatcher.py,sha256=Zyf__nGqHC-Fu6gRRrRbWO0LN2snZetXxOf3z4w5RnY,9916
|
|
3
|
+
sol_parser/check_migration.py,sha256=PsRE_Zhnw2g_iaP_iYtlGsQutE2w_FsaZIP4GPeN8-o,537
|
|
4
4
|
sol_parser/clock.py,sha256=RHF99qMerKvEsT55krkftIh-uqy_uTzpgdKCqKBMDmA,278
|
|
5
|
-
sol_parser/dex_parsers.py,sha256=
|
|
5
|
+
sol_parser/dex_parsers.py,sha256=QAjMZWpDjSIDmybLkpfLFSqXbVQr5psxxcqdf8d6YSw,116197
|
|
6
6
|
sol_parser/entries_decode.py,sha256=-eooIYrXOcpNtrSgSEVehY8NkBhwUMnziAR5Wx8S0Nk,5620
|
|
7
7
|
sol_parser/env_config.py,sha256=Lw0SdZuy_MvUaVkyFxS0qPBgMzR9UBbxbN0CVz8nxg4,7296
|
|
8
|
-
sol_parser/
|
|
8
|
+
sol_parser/event_type_parity.py,sha256=OdxazIDB_My6IEBswbl0GY3FmPv4RniKcMmvONbg-FQ,4040
|
|
9
|
+
sol_parser/event_types.py,sha256=0PyrnwZbNOH8X9mH8CRVXreGX8wC2o0vKNrd-arp_hk,78273
|
|
9
10
|
sol_parser/geyser_pb2.py,sha256=Hq66wmWxXD2jSbSVQW7vmBRB7nWmR1DuYDMQ6nKgl3o,20123
|
|
10
11
|
sol_parser/geyser_pb2_grpc.py,sha256=ASPmZsCNvyCzt_j4IrhKjSacWUNLVuAiLfpjmyd-2Qc,15322
|
|
11
|
-
sol_parser/grpc_client.py,sha256=
|
|
12
|
-
sol_parser/grpc_instruction_parser.py,sha256=
|
|
13
|
-
sol_parser/grpc_types.py,sha256=
|
|
14
|
-
sol_parser/inner_instruction_parser.py,sha256=
|
|
12
|
+
sol_parser/grpc_client.py,sha256=LvYM7FOO-IOEB0GXf8wtGyJNtuiJHvDVRiOwT0kJoI8,32278
|
|
13
|
+
sol_parser/grpc_instruction_parser.py,sha256=Aus9oegrlBKD16rnvs2aFwHZy2itY3R4ojavLVV_-LE,11085
|
|
14
|
+
sol_parser/grpc_types.py,sha256=whCXXCHu98vWI6p1RFvA0SUCw7ivyeU4pOtV2bUlw-c,37547
|
|
15
|
+
sol_parser/inner_instruction_parser.py,sha256=tGKNagjUNYD-Z3jJP9GoObJRaMQxfLqwy_vNNQUzMg4,20890
|
|
15
16
|
sol_parser/instr_account_utils.py,sha256=MY8bgoIDiv2yJKeWxqhpfKc3pV4xUFTcYKnSXtnQMWc,1990
|
|
16
|
-
sol_parser/instructions.py,sha256=
|
|
17
|
+
sol_parser/instructions.py,sha256=KjWrxQ4sV9h8Da-_IG4rmZgqbc7J6BoZL3zW0YAblDw,70862
|
|
17
18
|
sol_parser/json_util.py,sha256=qq0A5bs-HxxQH6vgg1Kja4tQ8cPaop9uItBcW7Ajox4,1458
|
|
18
|
-
sol_parser/log_instr_dedup.py,sha256=
|
|
19
|
+
sol_parser/log_instr_dedup.py,sha256=NieJrBDmdlppsXdEFqo3bc532MsgHi-BVvXYVAPcGOo,12601
|
|
19
20
|
sol_parser/market.py,sha256=p_N6n3b4hEtUjHAQQyGSnrKdHYmkHdY1hXXObHRKc0Y,1858
|
|
20
|
-
sol_parser/merger.py,sha256=
|
|
21
|
+
sol_parser/merger.py,sha256=970Cj7paT6i8ydg53lwk7CK67olAmKUY7325BedgMyk,13525
|
|
21
22
|
sol_parser/order_buffer.py,sha256=xW-Okii8a9t9tCqbBKtxFh1moTEi7RqycMFO2kwp-d4,6447
|
|
22
|
-
sol_parser/parser.py,sha256=
|
|
23
|
-
sol_parser/pumpfun_fee_enrich.py,sha256=
|
|
24
|
-
sol_parser/rpc_parser.py,sha256=
|
|
23
|
+
sol_parser/parser.py,sha256=KYPArn-Gago4UkDhWyaSC7EcIcvWfXQxMTZjruWzroQ,10797
|
|
24
|
+
sol_parser/pumpfun_fee_enrich.py,sha256=O19vK_G2I35WJH8G3YCulvaW5qMxyguqm4vBfAcQNck,4585
|
|
25
|
+
sol_parser/rpc_parser.py,sha256=uF5AYR_hOKeAt4EUxoHo1WvYbOA45eSwRF8G0aOZroM,24496
|
|
25
26
|
sol_parser/rust_api_inventory.py,sha256=V5Bx1M3GT-ku_vj_kD6lnbqWExv1K_A00PrmhCFfRec,2257
|
|
26
27
|
sol_parser/rust_event_json.py,sha256=7hho9TGfSOQjHev_8uRa4YHU1hrEsW1RfwcU9qHYz1o,1649
|
|
27
28
|
sol_parser/shredstream_client.py,sha256=xBE6KE9kyTXkXO82iEi99dQCSHq-dIIkFF7u8NHBWHE,9967
|
|
@@ -33,9 +34,9 @@ sol_parser/solana_storage_pb2_grpc.py,sha256=-Gys-K2Kw5Uy3JjtgIXmaYE6YKnXd5ZfBaM
|
|
|
33
34
|
sol_parser/u128_parity.py,sha256=D8PYuy1l-1QwkIEeGCLvrGfzAfTzpBDcGINxRIJAEPs,3487
|
|
34
35
|
sol_parser/verify_discriminators.py,sha256=oqCBWL065ixBIjhHW255nk4S-F1F0x4zfTzs68nXMqA,3011
|
|
35
36
|
sol_parser/account_fillers/__init__.py,sha256=q4q7HZF0Z4-rxhKoRMzV52HSkJ_n_POm4vimYUQlCOA,235
|
|
36
|
-
sol_parser/account_fillers/meteora.py,sha256=
|
|
37
|
+
sol_parser/account_fillers/meteora.py,sha256=KGj3BPiWSagic5TgbvL8pvbLLlpGV_jpD6qqWlT-jQY,1678
|
|
37
38
|
sol_parser/account_fillers/orca.py,sha256=2s-hfi20fa5sy6p1rGc7_7NxzkpaleJdqn3YD41aBAw,895
|
|
38
|
-
sol_parser/account_fillers/pumpfun.py,sha256=
|
|
39
|
+
sol_parser/account_fillers/pumpfun.py,sha256=hZgvqquXRDAR1Vny7y69YX7BZyo0tWiqZlnJLu1Zlxs,5969
|
|
39
40
|
sol_parser/account_fillers/pumpswap.py,sha256=1_JBmwFGMr_tAMZpYQsPnUJDoQlGvCpwB90iZzWHLzM,4042
|
|
40
41
|
sol_parser/account_fillers/raydium.py,sha256=j5vNSKAV-8bJuakG2dicc8ao5I-ZD2TEthLM6ooZqQ4,3350
|
|
41
42
|
sol_parser/account_fillers/raydium_launchlab.py,sha256=eBqDzKipeSJJo8s1WOLzdqnCKLGo6_IYpe6egLTVk10,781
|
|
@@ -50,7 +51,7 @@ sol_parser/grpc/subscribe_builder.py,sha256=fv6_jQAR6Q0seUhXjgcDPnPsG03Bxs59lHGe
|
|
|
50
51
|
sol_parser/grpc/transaction_meta.py,sha256=NmIffIQ1_OIfWGjy6JY-f8pIK5ucjDZXXJryjnlgoQs,5894
|
|
51
52
|
sol_parser/instr/__init__.py,sha256=0_Ky8KpVEoXzxszHcHLTuY2SDsJwu0uAF2Q0wMY1e-c,503
|
|
52
53
|
sol_parser/logs/__init__.py,sha256=e1cbhbCNeXy-NZvVsYCpGksBpZf4NJBLmdlky06og-U,349
|
|
53
|
-
sol_parser_sdk_python-0.5.
|
|
54
|
-
sol_parser_sdk_python-0.5.
|
|
55
|
-
sol_parser_sdk_python-0.5.
|
|
56
|
-
sol_parser_sdk_python-0.5.
|
|
54
|
+
sol_parser_sdk_python-0.5.7.dist-info/METADATA,sha256=IfOmbKqV2VmPAvDQDlRqe-FPo8TSUhoIVXbCMLowp9A,13107
|
|
55
|
+
sol_parser_sdk_python-0.5.7.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
56
|
+
sol_parser_sdk_python-0.5.7.dist-info/entry_points.txt,sha256=ZGXRb-2jBdc56d8PCAZFiJBLTAzUKFeHPohysJnKVbA,206
|
|
57
|
+
sol_parser_sdk_python-0.5.7.dist-info/RECORD,,
|
{sol_parser_sdk_python-0.5.6.dist-info → sol_parser_sdk_python-0.5.7.dist-info}/entry_points.txt
RENAMED
|
File without changes
|