sol-parser-sdk-python 0.5.6__py3-none-any.whl → 0.5.8__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.
@@ -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 ("name", "symbol", "uri", "bonding_curve", "user", "creator", "token_program", "quote_mint"):
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",
@@ -91,10 +102,12 @@ def enrich_create_v2_from_create_events(events: List[DexEvent]) -> None:
91
102
  "real_token_reserves",
92
103
  "token_total_supply",
93
104
  "virtual_quote_reserves",
105
+ "creator_fee_bps",
94
106
  ):
95
107
  _fill_int_if_zero(c2, attr, getattr(c, attr))
96
108
  c2.is_cashback_enabled = c2.is_cashback_enabled or c.is_cashback_enabled
97
109
  c2.is_mayhem_mode = c2.is_mayhem_mode or c.is_mayhem_mode
110
+ c2.is_holder_reward = c2.is_holder_reward or c.is_holder_reward
98
111
 
99
112
 
100
113
  def enrich_pumpfun_trades_from_create_instructions(events: List[DexEvent]) -> None:
sol_parser/rpc_parser.py CHANGED
@@ -8,9 +8,14 @@ from dataclasses import dataclass
8
8
 
9
9
  import base58
10
10
 
11
- from .dex_parsers import DexEvent, dispatch_program_data, parse_trade_from_data
11
+ from .dex_parsers import DexEvent
12
12
  from .grpc_types import EventTypeFilter, EventType, event_type_filter_allows_instruction_parsing
13
- from .instructions import parse_instruction_unified
13
+ from .inner_instruction_parser import parse_inner_instruction
14
+ from .instructions import (
15
+ METEORA_DLMM_PROGRAM_ID,
16
+ parse_inner_compiled_instruction_if_supported,
17
+ parse_instruction_unified,
18
+ )
14
19
  from .log_instr_dedup import dedupe_log_instruction_events
15
20
  from .pumpfun_fee_enrich import enrich_pumpfun_same_tx_post_merge
16
21
 
@@ -29,6 +34,7 @@ class RpcCompiledInstruction:
29
34
  program_id_index: int
30
35
  accounts: Union[List[int], bytes]
31
36
  data: bytes
37
+ stack_height: Optional[int] = None
32
38
 
33
39
 
34
40
  @dataclass
@@ -214,11 +220,17 @@ def parse_rpc_transaction(
214
220
  block_tx_index = int(getattr(tx, "transaction_index", 0) or 0)
215
221
  full_account_keys = _merge_rpc_full_account_keys(msg.account_keys, meta)
216
222
 
217
- instruction_events: List[DexEvent] = []
223
+ indexed_instruction_events: List[Tuple[Any, ...]] = []
224
+ from .grpc_instruction_parser import (
225
+ _is_dlmm_event_cpi,
226
+ detect_pumpfun_create_from_logs,
227
+ merge_instruction_events,
228
+ )
229
+ has_pumpfun_create_log = detect_pumpfun_create_from_logs(list(meta.log_messages))
218
230
 
219
231
  if _should_parse_rpc_instructions(filter):
220
232
  # 解析外层指令
221
- for ix in msg.instructions:
233
+ for outer_idx, ix in enumerate(msg.instructions):
222
234
  ev = _parse_rpc_instruction(
223
235
  ix,
224
236
  full_account_keys,
@@ -228,13 +240,15 @@ def parse_rpc_transaction(
228
240
  block_time_us,
229
241
  grpc_recv_us,
230
242
  filter,
243
+ inner=False,
244
+ is_created_buy=has_pumpfun_create_log,
231
245
  )
232
246
  if ev:
233
- instruction_events.append(ev)
247
+ indexed_instruction_events.append((outer_idx, None, 1, False, ev))
234
248
 
235
249
  # 解析内层指令
236
250
  for group in meta.inner_instructions:
237
- for ix in group.instructions:
251
+ for inner_idx, ix in enumerate(group.instructions):
238
252
  ev = _parse_rpc_instruction(
239
253
  ix,
240
254
  full_account_keys,
@@ -244,12 +258,31 @@ def parse_rpc_transaction(
244
258
  block_time_us,
245
259
  grpc_recv_us,
246
260
  filter,
261
+ inner=True,
262
+ is_created_buy=has_pumpfun_create_log,
247
263
  )
248
264
  if ev:
249
- instruction_events.append(ev)
265
+ pid = (
266
+ full_account_keys[ix.program_id_index]
267
+ if ix.program_id_index < len(full_account_keys)
268
+ else ""
269
+ )
270
+ indexed_instruction_events.append((
271
+ int(group.index),
272
+ inner_idx,
273
+ ix.stack_height,
274
+ pid == METEORA_DLMM_PROGRAM_ID and _is_dlmm_event_cpi(ix.data),
275
+ ev,
276
+ ))
277
+
278
+ instruction_events = merge_instruction_events(indexed_instruction_events)
279
+ enrich_pumpfun_same_tx_post_merge(instruction_events)
280
+ if msg.recent_blockhash:
281
+ for ev in instruction_events:
282
+ if hasattr(ev.data, "metadata"):
283
+ ev.data.metadata.recent_blockhash = msg.recent_blockhash
250
284
 
251
285
  # 解析日志
252
- is_created_buy = False
253
286
  recent_blockhash = msg.recent_blockhash
254
287
  log_events: List[DexEvent] = []
255
288
 
@@ -271,13 +304,11 @@ def parse_rpc_transaction(
271
304
  block_time_us,
272
305
  grpc_recv_us,
273
306
  filter,
274
- is_created_buy,
307
+ has_pumpfun_create_log,
275
308
  recent_blockhash,
276
309
  active_program_stack[-1] if active_program_stack else None,
277
310
  )
278
311
  if ev:
279
- if ev.type in (EventType.PUMP_FUN_CREATE, EventType.PUMP_FUN_CREATE_V2):
280
- is_created_buy = True
281
312
  log_events.append(ev)
282
313
 
283
314
  completed = parse_program_complete_info(log)
@@ -315,6 +346,8 @@ def _parse_rpc_instruction(
315
346
  block_time_us: Optional[int],
316
347
  grpc_recv_us: int,
317
348
  filter: Optional[EventTypeFilter],
349
+ inner: bool = False,
350
+ is_created_buy: bool = False,
318
351
  ) -> Optional[DexEvent]:
319
352
  """解析 RPC 指令"""
320
353
  # 获取程序 ID
@@ -334,6 +367,35 @@ def _parse_rpc_instruction(
334
367
  if acc_idx < len(account_keys):
335
368
  accounts.append(account_keys[acc_idx])
336
369
 
370
+ if inner:
371
+ ev = parse_inner_compiled_instruction_if_supported(
372
+ data,
373
+ accounts,
374
+ signature,
375
+ slot,
376
+ tx_index,
377
+ block_time_us,
378
+ grpc_recv_us,
379
+ filter,
380
+ program_id,
381
+ )
382
+ if ev:
383
+ return ev
384
+ return parse_inner_instruction(
385
+ data,
386
+ program_id,
387
+ {
388
+ "signature": signature,
389
+ "slot": slot,
390
+ "tx_index": tx_index,
391
+ "block_time_us": 0 if block_time_us is None else block_time_us,
392
+ "grpc_recv_us": grpc_recv_us,
393
+ "recent_blockhash": "",
394
+ },
395
+ filter,
396
+ is_created_buy,
397
+ )
398
+
337
399
  return parse_instruction_unified(
338
400
  data, accounts, signature, slot, tx_index, block_time_us, grpc_recv_us, filter, program_id
339
401
  )
@@ -480,6 +542,13 @@ def _parse_rpc_compiled_ix(ix: dict, account_keys: List[str]) -> RpcCompiledInst
480
542
  program_id_index=pidx,
481
543
  accounts=acc_list,
482
544
  data=_ix_data_from_rpc(ix),
545
+ stack_height=(
546
+ int(ix["stackHeight"])
547
+ if ix.get("stackHeight") is not None
548
+ else int(ix["stack_height"])
549
+ if ix.get("stack_height") is not None
550
+ else None
551
+ ),
483
552
  )
484
553
 
485
554
 
@@ -672,6 +741,8 @@ def rpc_response_to_solana_storage(
672
741
  acc = ix.accounts
673
742
  ii.accounts = bytes(acc) if not isinstance(acc, bytes) else acc
674
743
  ii.data = ix.data
744
+ if ix.stack_height is not None:
745
+ ii.stack_height = ix.stack_height
675
746
  if m.loaded_addresses:
676
747
  for w in m.loaded_addresses.writable:
677
748
  meta.loaded_writable_addresses.append(base58.b58decode(w))
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.5
2
2
  Name: sol-parser-sdk-python
3
- Version: 0.5.6
3
+ Version: 0.5.8
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
@@ -46,12 +46,6 @@ Description-Content-Type: text/markdown
46
46
  <a href="https://discord.gg/vuazbGkqQE">Discord</a>
47
47
  </p>
48
48
 
49
- > ☕ **Support This Project**
50
- >
51
- > This SDK is completely free and open source. However, maintaining and continuously updating it requires significant AI computing resources and token consumption. If this SDK helps with your development, consider making a monthly SOL donation — any amount is appreciated and helps keep this project alive!
52
- >
53
- > **Donation Wallet:** `6oW7AXz1yRb57pYSxysuXnMs2aR1ha5rzGzReZ1MjPV8`
54
-
55
49
  ---
56
50
 
57
51
  ## Other language SDKs
@@ -65,8 +59,31 @@ Description-Content-Type: text/markdown
65
59
 
66
60
  ---
67
61
 
62
+ ## What This SDK Is For
63
+
64
+ This is the Python implementation of the FnZero Solana DEX parser SDK for asyncio services, research scripts, indexers, copy-trading systems, sniper pipelines, and backend jobs that need normalized real-time DEX events.
65
+
66
+ | Area | Coverage |
67
+ |------|----------|
68
+ | Parser inputs | Yellowstone gRPC, ShredStream, RPC transactions, encoded transactions, protocol account data |
69
+ | DEX protocols | PumpFun, PumpSwap, Pump Fees, Raydium LaunchLab, Raydium CPMM, Raydium CLMM, Raydium AMM V4, Meteora DAMM v2, Meteora DLMM, Meteora DBC, Orca Whirlpool |
70
+ | Use cases | Real-time DEX event parsing, token launch monitoring, copy trading, sniper bots, analytics notebooks, JSON event pipelines |
71
+ | Runtime | Python 3.10+, asyncio workers, backend services, data pipelines, low-latency bot infrastructure |
72
+
73
+ ---
74
+
68
75
  ## Release notes
69
76
 
77
+ ### v0.5.8
78
+
79
+ - Syncs with Rust **sol-parser-sdk 0.7.3**, including the current PumpFun, PumpSwap, and Pump Fees protocol definitions.
80
+ - Adds Meteora DAMM v2 events: `UpdateDelegatePermission`, `WithdrawDeadLiquidityReward`, `CreateConfig`, `CreateDynamicConfig`.
81
+ - Fixes DAMM v2 `EvtSwap2` full 180-byte layout, three swap modes, transfer fees, reserves, and compounding-fee layout activation slot `406048752`.
82
+ - Routes unified `EvtLiquidityChange` by `change_type` to AddLiquidity / RemoveLiquidity.
83
+ - Adds DLMM mint/user-token/`min_amount_out` context, PumpFun pre/post token & SOL balances, and LaunchLab quote/global/platform account fields.
84
+ - Adds current PumpFun/PumpSwap creator-fee and holder-reward fields across instruction, log, account, gRPC, and JSON event paths.
85
+ - Rejects truncated known PumpSwap trade and CreatePool tails while retaining complete historical layouts.
86
+
70
87
  ### v0.5.6
71
88
 
72
89
  - Adds Meteora DBC log parsing with program-context routing and filter parity.
@@ -92,7 +109,7 @@ Description-Content-Type: text/markdown
92
109
  **From PyPI**
93
110
 
94
111
  ```bash
95
- pip install sol-parser-sdk-python==0.5.6
112
+ pip install sol-parser-sdk-python==0.5.8
96
113
  ```
97
114
 
98
115
  **From source**
@@ -1,27 +1,28 @@
1
- sol_parser/__init__.py,sha256=ir7IT87fC7yaN_fyGO3-116lc7CFtU-0EwAbDoBZV0E,13873
2
- sol_parser/account_dispatcher.py,sha256=F88hfvWmwCLb2Pv8Fr_fYVa3_n80aHwcVdFtwWT-hwQ,9752
3
- sol_parser/check_migration.py,sha256=hW2qb-EVVoqBUTH3ARhEkSvP9aHcNEkg3ket7lfMVzQ,415
1
+ sol_parser/__init__.py,sha256=2b7VW5C0aEbBsfkUPEUzuDXZIxLSm5Jwg2xkFvjHrR8,15031
2
+ sol_parser/account_dispatcher.py,sha256=Zy--fqFypjDk_kU-6Z6Z3T5xqG1IvMHROYBd_n3VsKk,13028
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=Ictl5Zeo4DayIquXicm3psUMy456kSeT9F4jLcUYfcE,82412
5
+ sol_parser/dex_parsers.py,sha256=ogyuqBQro2MisryGrGfyGiZwxZc3ImiSNB8GAROaTLU,134727
6
6
  sol_parser/entries_decode.py,sha256=-eooIYrXOcpNtrSgSEVehY8NkBhwUMnziAR5Wx8S0Nk,5620
7
7
  sol_parser/env_config.py,sha256=Lw0SdZuy_MvUaVkyFxS0qPBgMzR9UBbxbN0CVz8nxg4,7296
8
- sol_parser/event_types.py,sha256=Q_HZNdJ0Yb5Mg__3Wv9yUD-nCG00_getYdJ_DHssqgI,68228
8
+ sol_parser/event_type_parity.py,sha256=L_oxbUtCTQ9JLGyRiLXNhDTp0UUOcEbe_IPrisgdMBY,4206
9
+ sol_parser/event_types.py,sha256=BtNNPUTniBh0sMJrEYDg3YhmRtQdtnc09LTThlszXw0,86841
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=7ONaCx8324mx2mcrKZH6JV68uQaeZBzrTERS0hh8J6A,32289
12
- sol_parser/grpc_instruction_parser.py,sha256=aKUOiWrA2QL9G28IinXyVWRr2IbypunAfD8wn2kkH8o,10662
13
- sol_parser/grpc_types.py,sha256=pPnp7RGRz5KGl0lpkn-qyX40rdnfGSAk0savIMfwQM4,36015
14
- sol_parser/inner_instruction_parser.py,sha256=3Klb9H6Aj2zOgFnGcl096f9WrKgiuRRV3HRQz7SCAug,13354
12
+ sol_parser/grpc_client.py,sha256=LvYM7FOO-IOEB0GXf8wtGyJNtuiJHvDVRiOwT0kJoI8,32278
13
+ sol_parser/grpc_instruction_parser.py,sha256=p_9BnhC5FHHIXLKPKEM2_infbMC7apr4CQEhMxfkKz4,13450
14
+ sol_parser/grpc_types.py,sha256=750OCMauel0nVQWg2kAk5yFd0Tiwl5S7z-NCbHFFKjw,38327
15
+ sol_parser/inner_instruction_parser.py,sha256=Mynr-pzSFG3AuRUl9wu2_G-wzDJZp_GcorGslP88f0s,20831
15
16
  sol_parser/instr_account_utils.py,sha256=MY8bgoIDiv2yJKeWxqhpfKc3pV4xUFTcYKnSXtnQMWc,1990
16
- sol_parser/instructions.py,sha256=Xo8pdRJtql6A9RNBCCzvxG9afScvfZaIVADSwyai2wU,61064
17
+ sol_parser/instructions.py,sha256=3B3mrL0OJhzNs_K_8-0bLPkh2kF1jh-G3ofTK9tx-a8,78917
17
18
  sol_parser/json_util.py,sha256=qq0A5bs-HxxQH6vgg1Kja4tQ8cPaop9uItBcW7Ajox4,1458
18
- sol_parser/log_instr_dedup.py,sha256=3wRIZMOWAiFSQtjx-H3uJyxqPdz9VPY9485Dn_XHd88,11754
19
+ sol_parser/log_instr_dedup.py,sha256=AWF3EMaEXI5V_bwjyF24uH_ozWTijRvd0zf7lGBXTMk,14559
19
20
  sol_parser/market.py,sha256=p_N6n3b4hEtUjHAQQyGSnrKdHYmkHdY1hXXObHRKc0Y,1858
20
- sol_parser/merger.py,sha256=ZrFONLnOwF1aw8GR0BibhPvIE_HguCrY2gT9PByHmJo,11684
21
+ sol_parser/merger.py,sha256=NGjqSzTNDvDDlIH-8DV2Mk_Z5xJ3ItlnUiAGOAK6kPU,12362
21
22
  sol_parser/order_buffer.py,sha256=xW-Okii8a9t9tCqbBKtxFh1moTEi7RqycMFO2kwp-d4,6447
22
- sol_parser/parser.py,sha256=D-q7Jd92A9znUSyDFIfVA1_ZbyD2vh-8CSpvgxYp6jg,10079
23
- sol_parser/pumpfun_fee_enrich.py,sha256=hlEHE8sFHoKGDSvOMlSpjZoJJUIimUNrTxojokSAAb4,4416
24
- sol_parser/rpc_parser.py,sha256=BIPht00w5LcEvOhl6anNYlYXzN4bW9_2t6f1emm_Xbw,22899
23
+ sol_parser/parser.py,sha256=jd-NkWXso7Rcp8TJiBFvjTmNO468tb7rsEElQkU-EV0,11286
24
+ sol_parser/pumpfun_fee_enrich.py,sha256=NHC_chCv2wuaOW5taYG8R6M1bu8cmdxcLf8cjSfo7Kc,4688
25
+ sol_parser/rpc_parser.py,sha256=iWTl_OtNOEpoOmvVEPVmum5QDdGyjSiX6r_3Hx4LOTg,25361
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,13 +34,13 @@ 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=seS80dMIeFE-E0Kd2U50p09w69wDi4sf4UxWFl-WP8U,1159
37
+ sol_parser/account_fillers/meteora.py,sha256=ecY3F4KkjnVxBc-Zsnzru52DggkYOdbeauaYrznDxFY,2111
37
38
  sol_parser/account_fillers/orca.py,sha256=2s-hfi20fa5sy6p1rGc7_7NxzkpaleJdqn3YD41aBAw,895
38
- sol_parser/account_fillers/pumpfun.py,sha256=nFOVF7Om6gcxgIIDneswRCO6iU2B-DPobGhUOTx_my4,5474
39
+ sol_parser/account_fillers/pumpfun.py,sha256=hZgvqquXRDAR1Vny7y69YX7BZyo0tWiqZlnJLu1Zlxs,5969
39
40
  sol_parser/account_fillers/pumpswap.py,sha256=1_JBmwFGMr_tAMZpYQsPnUJDoQlGvCpwB90iZzWHLzM,4042
40
- sol_parser/account_fillers/raydium.py,sha256=j5vNSKAV-8bJuakG2dicc8ao5I-ZD2TEthLM6ooZqQ4,3350
41
- sol_parser/account_fillers/raydium_launchlab.py,sha256=eBqDzKipeSJJo8s1WOLzdqnCKLGo6_IYpe6egLTVk10,781
42
- sol_parser/accounts/__init__.py,sha256=DcgCX6SVfrQsWK8X2-shl705ybg6tB3WzaWyKeDgr3M,32227
41
+ sol_parser/account_fillers/raydium.py,sha256=av6SUeWVnvm6cxC_A3RIxPhQR1rONgqIzXTDVR-6q_g,3392
42
+ sol_parser/account_fillers/raydium_launchlab.py,sha256=gED19-pyUySD6qe7ecBxMDnfzreCQRY3QlC0NZSb2To,2479
43
+ sol_parser/accounts/__init__.py,sha256=YPhWgp5EBZO1Rc3Gbf_iWQlpnZvRpS7eFoDNLn0tznc,33924
43
44
  sol_parser/accounts/raydium_orca.py,sha256=Q3eYe5kBO18LnGOe-xRAGQu8RJv878CEnmPIyVFbZyo,17158
44
45
  sol_parser/accounts/rpc_wallet.py,sha256=IT0WEzna9phG7AzhJR8o4GA_BlB4ZvhuDWfCHQcMXwg,1944
45
46
  sol_parser/accounts/utils.py,sha256=BAACAIvA2Uz0U26BpYPTalTqiuarXYhkbS-i2o1uJUY,2140
@@ -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.6.dist-info/METADATA,sha256=O7OyZYSZvsiex9-JEm7U9uGiEr9LkJfQrjolJHqNBQM,13107
54
- sol_parser_sdk_python-0.5.6.dist-info/WHEEL,sha256=QccIxa26bgl1E6uMy58deGWi-0aeIkkangHcxk2kWfw,87
55
- sol_parser_sdk_python-0.5.6.dist-info/entry_points.txt,sha256=ZGXRb-2jBdc56d8PCAZFiJBLTAzUKFeHPohysJnKVbA,206
56
- sol_parser_sdk_python-0.5.6.dist-info/RECORD,,
54
+ sol_parser_sdk_python-0.5.8.dist-info/METADATA,sha256=hfEZwNMDJ3A-5OrDUyVoQg6kFf1GEMBuWb7UkCXDEOU,14402
55
+ sol_parser_sdk_python-0.5.8.dist-info/WHEEL,sha256=zOwg4jB6zX2kU910N-cMawjivD6tO8NEWvE12je1bVk,87
56
+ sol_parser_sdk_python-0.5.8.dist-info/entry_points.txt,sha256=ZGXRb-2jBdc56d8PCAZFiJBLTAzUKFeHPohysJnKVbA,206
57
+ sol_parser_sdk_python-0.5.8.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: hatchling 1.29.0
2
+ Generator: hatchling 1.32.0
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any