sol-parser-sdk-python 0.5.16__py3-none-any.whl → 0.5.17__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/grpc_types.py +3 -1
- {sol_parser_sdk_python-0.5.16.dist-info → sol_parser_sdk_python-0.5.17.dist-info}/METADATA +25 -18
- {sol_parser_sdk_python-0.5.16.dist-info → sol_parser_sdk_python-0.5.17.dist-info}/RECORD +5 -5
- {sol_parser_sdk_python-0.5.16.dist-info → sol_parser_sdk_python-0.5.17.dist-info}/WHEEL +0 -0
- {sol_parser_sdk_python-0.5.16.dist-info → sol_parser_sdk_python-0.5.17.dist-info}/entry_points.txt +0 -0
sol_parser/grpc_types.py
CHANGED
|
@@ -471,9 +471,11 @@ class EventMetadata:
|
|
|
471
471
|
|
|
472
472
|
signature: str = ""
|
|
473
473
|
slot: int = 0
|
|
474
|
-
#:
|
|
474
|
+
#: 调用方序号:Yellowstone 为节点 index;Entries 为单条消息内序号,下条消息从 0 开始。
|
|
475
|
+
#: Shred 跨消息去重使用交易签名,不能使用 (slot, tx_index)。
|
|
475
476
|
tx_index: int = 0
|
|
476
477
|
block_time_us: int = 0
|
|
478
|
+
#: 本地接收时间(微秒),不代表链上执行顺序。
|
|
477
479
|
grpc_recv_us: int = 0
|
|
478
480
|
recent_blockhash: str = ""
|
|
479
481
|
is_created_buy: bool = False
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: sol-parser-sdk-python
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.17
|
|
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
|
|
@@ -22,12 +22,17 @@ Description-Content-Type: text/markdown
|
|
|
22
22
|
|
|
23
23
|
<div align="center">
|
|
24
24
|
|
|
25
|
-
## v0.5.
|
|
25
|
+
## v0.5.17 — Shred metadata passthrough and ordering scope
|
|
26
|
+
|
|
27
|
+
Preserve and verify transaction position and receive time through raw instruction callbacks. Entries indexes are message-local, unlike Yellowstone node indexes; use signatures for cross-message deduplication. This release clarifies API documentation and adds regression protection without changing metadata fields or numbering behavior.
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
## v0.5.17 — DEX-scoped RawInstruction and typed DEX identifiers
|
|
26
31
|
|
|
27
32
|
Raw instructions now respect DEX subscriptions using programs referenced by each instruction. `RawInstructionDexType` provides typed identifiers with unchanged JSON strings. Unknown router layouts do not establish pool addresses, trade direction, or method versions.
|
|
28
33
|
|
|
29
34
|
|
|
30
|
-
## v0.5.
|
|
35
|
+
## v0.5.17 — Pump execution replay
|
|
31
36
|
|
|
32
37
|
Current Anchor TradeEvent CPI decoding is supported alongside the historical encoding. RPC/gRPC instruction budgets and minimum outputs remain in instruction fields. Execution fields `sol_amount`, `quote_amount`, and `token_amount` come from execution events; without logs or event CPIs they remain zero (unavailable, not a proven zero fill).
|
|
33
38
|
|
|
@@ -35,7 +40,7 @@ Run `.venv/bin/python examples/pump_execution_replay.py` from this repository to
|
|
|
35
40
|
|
|
36
41
|
The current Delta sell signature is `4ARos3Yq1SMNE3izDpy9YdKrRgMmD7UCDxvnVrBRaGCJHiifPHSmQWc4DPfjUaEUcxS7puGmEN64K7EZdeXLJaj2` (slot 458542546). The dated fixture also includes Rapid create/buy, BuyV3, and PumpSwap buy with their full signatures and slots. Older five-combination multi-hop fixtures are retained as regression tests, not labeled as new mainnet captures.
|
|
37
42
|
|
|
38
|
-
## v0.5.
|
|
43
|
+
## v0.5.17 — raw Shred instructions
|
|
39
44
|
|
|
40
45
|
Default Shred parsing emits `RawInstruction` for unsupported third-party programs, including Rapid/Delta, without inferring direction, amounts, or internal buy methods. Infrastructure programs (System, Token, ATA, ComputeBudget, etc.) are omitted by default. Supported official DEX parsers are unchanged; official Pump/PumpSwap multi-hop instructions retain `PumpRouteIntent`.
|
|
41
46
|
|
|
@@ -43,6 +48,8 @@ The payload contains `program_id`, `instruction_index`, `accounts`, `account_ind
|
|
|
43
48
|
|
|
44
49
|
Run `uv run python examples/raw_instruction_filter.py` to compare PumpFun-only, Raydium CPMM-only, and all-raw subscriptions against signed offline transactions; the output includes `dexes`.
|
|
45
50
|
|
|
51
|
+
The raw event retains `metadata.tx_index` and `metadata.grpc_recv_us` from the parser arguments (streamer names the receive field `metadata.recv_us`). The default Entries client index is local to one received Entries message and restarts at zero for the next message; it is not a confirmed slot-wide transaction index. `instruction_index` orders outer instructions within a transaction. Receive time is a local microsecond timestamp, not an execution-order guarantee. Standalone replay APIs may default these values to zero; pass the upstream values when available.
|
|
52
|
+
|
|
46
53
|
Without a filter, unknown third-party instructions are returned. Broad trade/swap filters (for example `PumpFunTrade` or `RaydiumCpmmSwap`) also return raw instructions associated with that DEX; direction-specific filters do not infer a buy or sell. Explicit `RawInstruction` selects all outer instructions only when no protocol restriction is set; streamer protocol restrictions always apply. Excluding `RawInstruction` wins. `dex_type` uses the public `RawInstructionDexType` enum (typed string constants in Go); JSON values remain unchanged, such as `"pumpfun"` and `"raydium_cpmm"`. `dexes` contains `{ dex_type, program_id, pool }` for each recognized DEX program targeted or referenced by this instruction, not other instructions in the transaction. Multi-DEX wrappers retain every association. Unknown or unresolved ALT references cannot satisfy a DEX subscription. `pool` is currently null: an unknown wrapper layout cannot establish the pool account. A program reference is not proof of an executed CPI. Raw callbacks are not fills.
|
|
47
54
|
|
|
48
55
|
Wrapper adapter functions remain explicit compatibility helpers only; default Shred parsing does not call them. The released-version history below describes previous behavior.
|
|
@@ -86,11 +93,11 @@ Parser SDK language versions and related Rust SDKs:
|
|
|
86
93
|
|
|
87
94
|
| Language | Repository | Description | Version |
|
|
88
95
|
|----------|------------|-------------|---------|
|
|
89
|
-
| Rust | [sol-parser-sdk](https://github.com/0xfnzero/sol-parser-sdk) | Solana DEX transaction and account event parsing | `v0.7.
|
|
90
|
-
| Node.js | [sol-parser-sdk-nodejs](https://github.com/0xfnzero/sol-parser-sdk-nodejs) | TypeScript/JavaScript for Node.js | `v0.5.
|
|
91
|
-
| Python | [sol-parser-sdk-python](https://github.com/0xfnzero/sol-parser-sdk-python) | Async/await native support | `v0.5.
|
|
92
|
-
| Go | [sol-parser-sdk-golang](https://github.com/0xfnzero/sol-parser-sdk-golang) | Go transaction and account event parsing | `v0.5.
|
|
93
|
-
| **Rust** | [sol-shred-sdk](https://github.com/0xfnzero/sol-shred-sdk) | Raw Solana shred decoding and ShredStream DEX event parsing | `v4.0.
|
|
96
|
+
| Rust | [sol-parser-sdk](https://github.com/0xfnzero/sol-parser-sdk) | Solana DEX transaction and account event parsing | `v0.7.18` |
|
|
97
|
+
| Node.js | [sol-parser-sdk-nodejs](https://github.com/0xfnzero/sol-parser-sdk-nodejs) | TypeScript/JavaScript for Node.js | `v0.5.24` |
|
|
98
|
+
| Python | [sol-parser-sdk-python](https://github.com/0xfnzero/sol-parser-sdk-python) | Async/await native support | `v0.5.17` |
|
|
99
|
+
| Go | [sol-parser-sdk-golang](https://github.com/0xfnzero/sol-parser-sdk-golang) | Go transaction and account event parsing | `v0.5.17` |
|
|
100
|
+
| **Rust** | [sol-shred-sdk](https://github.com/0xfnzero/sol-shred-sdk) | Raw Solana shred decoding and ShredStream DEX event parsing | `v4.0.9` |
|
|
94
101
|
| **Rust** | [sol-trade-sdk](https://github.com/0xfnzero/sol-trade-sdk) | Solana DEX trade construction and transaction execution | `v6.0.2` |
|
|
95
102
|
|
|
96
103
|
---
|
|
@@ -182,7 +189,7 @@ This is the Python implementation of the FnZero Solana DEX parser SDK for asynci
|
|
|
182
189
|
**From PyPI**
|
|
183
190
|
|
|
184
191
|
```bash
|
|
185
|
-
pip install sol-parser-sdk-python==0.5.
|
|
192
|
+
pip install sol-parser-sdk-python==0.5.17
|
|
186
193
|
```
|
|
187
194
|
|
|
188
195
|
**From source**
|
|
@@ -298,18 +305,18 @@ From the **package root** after `pip install -e .`. Run with `python examples/<f
|
|
|
298
305
|
| Description | Run command | Source |
|
|
299
306
|
|-------------|-------------|--------|
|
|
300
307
|
| **PumpFun** | | |
|
|
301
|
-
| PumpFun trade filtering | `python examples/pumpfun_trade_filter.py` | [pumpfun_trade_filter.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpfun_trade_filter.py) | `v0.5.
|
|
302
|
-
| PumpFun events + metrics | `python examples/pumpfun_with_metrics.py` | [pumpfun_with_metrics.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpfun_with_metrics.py) | `v0.5.
|
|
303
|
-
| Quick PumpFun connection test | `python examples/pumpfun_quick_test.py` | [pumpfun_quick_test.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpfun_quick_test.py) | `v0.5.
|
|
308
|
+
| PumpFun trade filtering | `python examples/pumpfun_trade_filter.py` | [pumpfun_trade_filter.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpfun_trade_filter.py) | `v0.5.17` |
|
|
309
|
+
| PumpFun events + metrics | `python examples/pumpfun_with_metrics.py` | [pumpfun_with_metrics.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpfun_with_metrics.py) | `v0.5.17` |
|
|
310
|
+
| Quick PumpFun connection test | `python examples/pumpfun_quick_test.py` | [pumpfun_quick_test.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpfun_quick_test.py) | `v0.5.17` |
|
|
304
311
|
| **PumpSwap** | | |
|
|
305
|
-
| PumpSwap ultra-low latency | `python examples/pumpswap_low_latency.py` | [pumpswap_low_latency.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpswap_low_latency.py) | `v0.5.
|
|
306
|
-
| PumpSwap events + metrics | `python examples/pumpswap_with_metrics.py` | [pumpswap_with_metrics.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpswap_with_metrics.py) | `v0.5.
|
|
312
|
+
| PumpSwap ultra-low latency | `python examples/pumpswap_low_latency.py` | [pumpswap_low_latency.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpswap_low_latency.py) | `v0.5.17` |
|
|
313
|
+
| PumpSwap events + metrics | `python examples/pumpswap_with_metrics.py` | [pumpswap_with_metrics.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpswap_with_metrics.py) | `v0.5.17` |
|
|
307
314
|
| **Meteora DAMM** | | |
|
|
308
|
-
| Meteora DAMM V2 events | `python examples/meteora_damm_grpc.py` | [meteora_damm_grpc.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/meteora_damm_grpc.py) | `v0.5.
|
|
315
|
+
| Meteora DAMM V2 events | `python examples/meteora_damm_grpc.py` | [meteora_damm_grpc.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/meteora_damm_grpc.py) | `v0.5.17` |
|
|
309
316
|
| **Multi-protocol** | | |
|
|
310
|
-
| Subscribe to every program in Rust `Protocol` / `program_ids` | `python examples/multi_protocol_grpc.py` | [multi_protocol_grpc.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/multi_protocol_grpc.py) | `v0.5.
|
|
317
|
+
| Subscribe to every program in Rust `Protocol` / `program_ids` | `python examples/multi_protocol_grpc.py` | [multi_protocol_grpc.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/multi_protocol_grpc.py) | `v0.5.17` |
|
|
311
318
|
| **Utility** | | |
|
|
312
|
-
| Parse tx by signature (HTTP RPC; not gRPC). `TX_SIGNATURE` / `RPC_URL` or `SOLANA_RPC_URL` in `.env` or `--sig` / `--rpc`. | `python examples/parse_tx_by_signature.py` | [parse_tx_by_signature.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/parse_tx_by_signature.py) | `v0.5.
|
|
319
|
+
| Parse tx by signature (HTTP RPC; not gRPC). `TX_SIGNATURE` / `RPC_URL` or `SOLANA_RPC_URL` in `.env` or `--sig` / `--rpc`. | `python examples/parse_tx_by_signature.py` | [parse_tx_by_signature.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/parse_tx_by_signature.py) | `v0.5.17` |
|
|
313
320
|
|
|
314
321
|
**Env:** gRPC examples need **`GRPC_URL`** or **`GRPC_ENDPOINT`**, plus **`GRPC_AUTH_TOKEN`** or **`GRPC_TOKEN`** (or legacy `GEYSER_*`). See **`.env.example`**.
|
|
315
322
|
|
|
@@ -12,7 +12,7 @@ sol_parser/geyser_pb2.py,sha256=Hq66wmWxXD2jSbSVQW7vmBRB7nWmR1DuYDMQ6nKgl3o,2012
|
|
|
12
12
|
sol_parser/geyser_pb2_grpc.py,sha256=ASPmZsCNvyCzt_j4IrhKjSacWUNLVuAiLfpjmyd-2Qc,15322
|
|
13
13
|
sol_parser/grpc_client.py,sha256=fusMuSJsTPEUxgobdeimQ7s3Hu9n0bD8pIH7rEL40jM,37370
|
|
14
14
|
sol_parser/grpc_instruction_parser.py,sha256=-aO5t2lMjeqePw-wR17DbkcMeCco-NU2NiqYOnSjObM,17274
|
|
15
|
-
sol_parser/grpc_types.py,sha256=
|
|
15
|
+
sol_parser/grpc_types.py,sha256=hXX-hXa0LSXXUEOt83855PFdcoiu8gxIEIohrYbC3bw,41638
|
|
16
16
|
sol_parser/inner_instruction_parser.py,sha256=TtBAWx7WKw4pGOm1gwXDWNSfwuTko8cZ9_HryAYodCI,21911
|
|
17
17
|
sol_parser/instr_account_utils.py,sha256=MY8bgoIDiv2yJKeWxqhpfKc3pV4xUFTcYKnSXtnQMWc,1990
|
|
18
18
|
sol_parser/instructions.py,sha256=j5hLBo4cduoXDu8n1ICQfc0k9tAJ3wSPJj5kWsL0KXw,88747
|
|
@@ -60,7 +60,7 @@ sol_parser/grpc/subscribe_builder.py,sha256=xH9NZ1Lp-7AQKcgxoqyE0PrB3vdOqnScm_Ht
|
|
|
60
60
|
sol_parser/grpc/transaction_meta.py,sha256=NmIffIQ1_OIfWGjy6JY-f8pIK5ucjDZXXJryjnlgoQs,5894
|
|
61
61
|
sol_parser/instr/__init__.py,sha256=0_Ky8KpVEoXzxszHcHLTuY2SDsJwu0uAF2Q0wMY1e-c,503
|
|
62
62
|
sol_parser/logs/__init__.py,sha256=e1cbhbCNeXy-NZvVsYCpGksBpZf4NJBLmdlky06og-U,349
|
|
63
|
-
sol_parser_sdk_python-0.5.
|
|
64
|
-
sol_parser_sdk_python-0.5.
|
|
65
|
-
sol_parser_sdk_python-0.5.
|
|
66
|
-
sol_parser_sdk_python-0.5.
|
|
63
|
+
sol_parser_sdk_python-0.5.17.dist-info/METADATA,sha256=yuJGqJB96WDIkSqiXfCx85EyJYqE0Iz6V5JLQci6Wlk,25318
|
|
64
|
+
sol_parser_sdk_python-0.5.17.dist-info/WHEEL,sha256=W3fkpkm7-wf9vBI5Z-7s0eWkeM-spu78I8Neb98DeEg,87
|
|
65
|
+
sol_parser_sdk_python-0.5.17.dist-info/entry_points.txt,sha256=ZGXRb-2jBdc56d8PCAZFiJBLTAzUKFeHPohysJnKVbA,206
|
|
66
|
+
sol_parser_sdk_python-0.5.17.dist-info/RECORD,,
|
|
File without changes
|
{sol_parser_sdk_python-0.5.16.dist-info → sol_parser_sdk_python-0.5.17.dist-info}/entry_points.txt
RENAMED
|
File without changes
|