sol-parser-sdk-python 0.5.6__tar.gz → 0.5.7__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 (85) hide show
  1. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/PKG-INFO +2 -2
  2. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/README.md +1 -1
  3. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/README_CN.md +1 -1
  4. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/pyproject.toml +1 -1
  5. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/sol_parser/__init__.py +18 -0
  6. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/sol_parser/account_dispatcher.py +2 -0
  7. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/sol_parser/account_fillers/meteora.py +15 -0
  8. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/sol_parser/account_fillers/pumpfun.py +11 -0
  9. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/sol_parser/check_migration.py +3 -0
  10. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/sol_parser/dex_parsers.py +881 -64
  11. sol_parser_sdk_python-0.5.7/sol_parser/event_type_parity.py +129 -0
  12. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/sol_parser/event_types.py +252 -0
  13. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/sol_parser/grpc_client.py +3 -4
  14. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/sol_parser/grpc_instruction_parser.py +14 -3
  15. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/sol_parser/grpc_types.py +49 -21
  16. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/sol_parser/inner_instruction_parser.py +138 -12
  17. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/sol_parser/instructions.py +293 -57
  18. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/sol_parser/log_instr_dedup.py +34 -4
  19. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/sol_parser/merger.py +115 -41
  20. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/sol_parser/parser.py +26 -6
  21. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/sol_parser/pumpfun_fee_enrich.py +12 -1
  22. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/sol_parser/rpc_parser.py +56 -11
  23. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/tests/test_filter_and_account_parity.py +497 -14
  24. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/tests/test_log_instr_dedup.py +65 -1
  25. sol_parser_sdk_python-0.5.7/tests/test_orca_whirlpool_instruction_parity.py +173 -0
  26. sol_parser_sdk_python-0.5.7/tests/test_pump_fees_instruction_parity.py +52 -0
  27. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/tests/test_raydium_clmm_instruction_parity.py +200 -15
  28. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/.env.example +0 -0
  29. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/.gitignore +0 -0
  30. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/examples/meteora_damm_grpc.py +0 -0
  31. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/examples/multi_protocol_grpc.py +0 -0
  32. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/examples/parse_tx_by_signature.py +0 -0
  33. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/examples/pumpfun_quick_test.py +0 -0
  34. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/examples/pumpfun_trade_filter.py +0 -0
  35. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/examples/pumpfun_with_metrics.py +0 -0
  36. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/examples/pumpswap_low_latency.py +0 -0
  37. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/examples/pumpswap_with_metrics.py +0 -0
  38. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/examples/rust_example_utils.py +0 -0
  39. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/scripts/bench_parser.py +0 -0
  40. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/scripts/gen_golden_rust.sh +0 -0
  41. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/sol_parser/account_fillers/__init__.py +0 -0
  42. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/sol_parser/account_fillers/orca.py +0 -0
  43. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/sol_parser/account_fillers/pumpswap.py +0 -0
  44. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/sol_parser/account_fillers/raydium.py +0 -0
  45. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/sol_parser/account_fillers/raydium_launchlab.py +0 -0
  46. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/sol_parser/accounts/__init__.py +0 -0
  47. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/sol_parser/accounts/raydium_orca.py +0 -0
  48. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/sol_parser/accounts/rpc_wallet.py +0 -0
  49. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/sol_parser/accounts/utils.py +0 -0
  50. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/sol_parser/clock.py +0 -0
  51. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/sol_parser/common/__init__.py +0 -0
  52. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/sol_parser/entries_decode.py +0 -0
  53. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/sol_parser/env_config.py +0 -0
  54. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/sol_parser/geyser_pb2.py +0 -0
  55. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/sol_parser/geyser_pb2_grpc.py +0 -0
  56. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/sol_parser/grpc/__init__.py +0 -0
  57. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/sol_parser/grpc/geyser_connect.py +0 -0
  58. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/sol_parser/grpc/subscribe_builder.py +0 -0
  59. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/sol_parser/grpc/transaction_meta.py +0 -0
  60. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/sol_parser/instr/__init__.py +0 -0
  61. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/sol_parser/instr_account_utils.py +0 -0
  62. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/sol_parser/json_util.py +0 -0
  63. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/sol_parser/logs/__init__.py +0 -0
  64. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/sol_parser/market.py +0 -0
  65. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/sol_parser/order_buffer.py +0 -0
  66. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/sol_parser/rust_api_inventory.py +0 -0
  67. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/sol_parser/rust_event_json.py +0 -0
  68. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/sol_parser/shredstream_client.py +0 -0
  69. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/sol_parser/shredstream_pb2.py +0 -0
  70. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/sol_parser/shredstream_pb2_grpc.py +0 -0
  71. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/sol_parser/shredstream_pumpfun.py +0 -0
  72. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/sol_parser/solana_storage_pb2.py +0 -0
  73. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/sol_parser/solana_storage_pb2_grpc.py +0 -0
  74. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/sol_parser/u128_parity.py +0 -0
  75. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/sol_parser/verify_discriminators.py +0 -0
  76. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/tests/fixtures/golden_parse_log.json +0 -0
  77. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/tests/test_golden.py +0 -0
  78. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/tests/test_imports_and_inner.py +0 -0
  79. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/tests/test_market_helpers.py +0 -0
  80. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/tests/test_order_buffer.py +0 -0
  81. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/tests/test_pumpfun_account_fill.py +0 -0
  82. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/tests/test_pumpfun_trade_tail.py +0 -0
  83. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/tests/test_pumpfun_v2_parity.py +0 -0
  84. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/tests/test_pumpswap_instruction.py +0 -0
  85. {sol_parser_sdk_python-0.5.6 → sol_parser_sdk_python-0.5.7}/tests/test_shredstream.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sol-parser-sdk-python
3
- Version: 0.5.6
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.6
95
+ pip install sol-parser-sdk-python==0.5.7
96
96
  ```
97
97
 
98
98
  **From source**
@@ -76,7 +76,7 @@
76
76
  **From PyPI**
77
77
 
78
78
  ```bash
79
- pip install sol-parser-sdk-python==0.5.6
79
+ pip install sol-parser-sdk-python==0.5.7
80
80
  ```
81
81
 
82
82
  **From source**
@@ -76,7 +76,7 @@
76
76
  **PyPI**
77
77
 
78
78
  ```bash
79
- pip install sol-parser-sdk-python==0.5.6
79
+ pip install sol-parser-sdk-python==0.5.7
80
80
  ```
81
81
 
82
82
  **源码**
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "sol-parser-sdk-python"
3
- version = "0.5.6"
3
+ version = "0.5.7"
4
4
  description = "Solana DEX program log parsing (pure Python, API aligned with sol-parser-sdk)"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10"
@@ -104,6 +104,15 @@ from .event_types import (
104
104
  RaydiumClmmOpenPositionWithTokenExtNftEvent,
105
105
  RaydiumClmmClosePositionEvent,
106
106
  RaydiumClmmCollectFeeEvent,
107
+ RaydiumClmmLiquidityChangeEvent,
108
+ RaydiumClmmConfigChangeEvent,
109
+ RaydiumClmmCreatePersonalPositionEvent,
110
+ RaydiumClmmLiquidityCalculateEvent,
111
+ RaydiumClmmOpenLimitOrderEvent,
112
+ RaydiumClmmIncreaseLimitOrderEvent,
113
+ RaydiumClmmDecreaseLimitOrderEvent,
114
+ RaydiumClmmSettleLimitOrderEvent,
115
+ RaydiumClmmUpdateRewardInfosEvent,
107
116
  # Raydium AMM V4 (legacy)
108
117
  RaydiumAmmV4SwapEvent,
109
118
  RaydiumAmmV4DepositEvent,
@@ -381,6 +390,15 @@ __all__ = [
381
390
  "RaydiumClmmOpenPositionWithTokenExtNftEvent",
382
391
  "RaydiumClmmClosePositionEvent",
383
392
  "RaydiumClmmCollectFeeEvent",
393
+ "RaydiumClmmLiquidityChangeEvent",
394
+ "RaydiumClmmConfigChangeEvent",
395
+ "RaydiumClmmCreatePersonalPositionEvent",
396
+ "RaydiumClmmLiquidityCalculateEvent",
397
+ "RaydiumClmmOpenLimitOrderEvent",
398
+ "RaydiumClmmIncreaseLimitOrderEvent",
399
+ "RaydiumClmmDecreaseLimitOrderEvent",
400
+ "RaydiumClmmSettleLimitOrderEvent",
401
+ "RaydiumClmmUpdateRewardInfosEvent",
384
402
  "RaydiumAmmV4SwapEvent",
385
403
  "RaydiumAmmV4DepositEvent",
386
404
  "RaydiumAmmV4WithdrawEvent",
@@ -167,6 +167,8 @@ def fill_accounts_with_owned_keys(
167
167
  run(METEORA_DAMM_V2_PROGRAM_ID, lambda g: meteora.fill_damm_v2_add_liquidity_accounts(data, g))
168
168
  elif et == EventType.METEORA_DAMM_V2_REMOVE_LIQUIDITY:
169
169
  run(METEORA_DAMM_V2_PROGRAM_ID, lambda g: meteora.fill_damm_v2_remove_liquidity_accounts(data, g))
170
+ elif et == EventType.METEORA_DAMM_V2_INITIALIZE_POOL:
171
+ run(METEORA_DAMM_V2_PROGRAM_ID, lambda g: meteora.fill_damm_v2_initialize_pool_accounts(data, g))
170
172
  elif et == EventType.METEORA_POOLS_SWAP:
171
173
  run(METEORA_POOLS_PROGRAM_ID, lambda g: meteora.fill_pools_swap_accounts(data, g))
172
174
  elif et == EventType.METEORA_POOLS_ADD_LIQUIDITY:
@@ -27,6 +27,21 @@ def fill_damm_v2_remove_liquidity_accounts(_e: Any, _get: AccountGetter) -> None
27
27
  pass
28
28
 
29
29
 
30
+ def fill_damm_v2_initialize_pool_accounts(e: Any, get: AccountGetter) -> None:
31
+ if getattr(e, "creator", "") == "":
32
+ e.creator = get(0)
33
+ if getattr(e, "position_nft_mint", "") == "":
34
+ e.position_nft_mint = get(1)
35
+ if getattr(e, "pool", "") == "":
36
+ e.pool = get(6)
37
+ if getattr(e, "position", "") == "":
38
+ e.position = get(7)
39
+ if getattr(e, "token_a_mint", "") == "":
40
+ e.token_a_mint = get(8)
41
+ if getattr(e, "token_b_mint", "") == "":
42
+ e.token_b_mint = get(9)
43
+
44
+
30
45
  def fill_pools_swap_accounts(_e: Any, _get: AccountGetter) -> None:
31
46
  pass
32
47
 
@@ -113,6 +113,9 @@ def fill_trade_accounts(e: PumpFunTradeEvent, get: AccountGetter) -> None:
113
113
 
114
114
 
115
115
  def fill_create_accounts(e: PumpFunCreateEvent, get: AccountGetter) -> None:
116
+ if get(15) == "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P":
117
+ fill_create_v2_accounts(e, get) # type: ignore[arg-type]
118
+ return
116
119
  if _empty(e.mint):
117
120
  e.mint = get(0)
118
121
  if _empty(e.bonding_curve):
@@ -154,6 +157,14 @@ def fill_create_v2_accounts(e: PumpFunCreateV2TokenEvent, get: AccountGetter) ->
154
157
  e.event_authority = get(14)
155
158
  if _empty(e.program):
156
159
  e.program = get(15)
160
+ if _empty(e.quote_mint) or e.quote_mint == "So11111111111111111111111111111111111111111":
161
+ e.quote_mint = get(16)
162
+ if _empty(e.quote_vault):
163
+ e.quote_vault = get(17)
164
+ if _empty(e.quote_token_program):
165
+ e.quote_token_program = get(18)
166
+ if getattr(e, "ix_name", "") in ("", "create"):
167
+ e.ix_name = "create_v2"
157
168
 
158
169
 
159
170
  def fill_migrate_accounts(_e: PumpFunMigrateEvent, _get: AccountGetter) -> None:
@@ -6,11 +6,14 @@ import sys
6
6
 
7
7
  from .u128_parity import run_all_u128_checks
8
8
  from .verify_discriminators import main as _verify_main
9
+ from .event_type_parity import run_event_type_parity_check
9
10
 
10
11
 
11
12
  def main() -> None:
12
13
  if _verify_main() != 0:
13
14
  sys.exit(1)
15
+ if run_event_type_parity_check() != 0:
16
+ sys.exit(1)
14
17
  sys.exit(run_all_u128_checks())
15
18
 
16
19