* bump chia_rs to 0.45.1
* fix issue in test_spam_message_too_large
* allow a few more warnings that can be triggered because our tests leak aiohttp websocket clients
* fix flaky test: test_transaction_ack_duplicate_without_resend_ignored
* initial commit
* tests
* fixes
* poetry fixes
* add another test
* undo init change as its in another branch
* delete uneccessary reimplementation
* raise errors correctly
* test error raising
* ruff
* re-fix new test of bad responses
* re-add accidental removal
* parameterize trusted in get_fee_estimate test
* add another failure test
* Update chia/wallet/wallet_rpc_api.py
Co-authored-by: Amine Khaldi <amine.khaldi@reactos.org>
* pytest.mark.anyio
* ruff
* add coverage for respondfeeestimates in wallet node api
---------
Co-authored-by: Amine Khaldi <amine.khaldi@reactos.org>
Give macOS Intel test jobs one retry and widen GitHub Actions timeout padding for Intel Darwin runners so slow hosts have more time without weakening test assertions.
* Use a separate config for pooling information
* New PlotNFT drivers
* Comment by @cursor
* whoops
* Comments by @cursor
* Comments by @cursor
* Comments by @cursor
* Some tidying
* fix test for memo adjustment
* tweak additional memos again
* Fix test for coverage
* Add `REMARK` option to `launch`
* fix custody architecture namespace
* Comments by @matt-o-how
* Skip DataLayer upload/cleanup for stores with no committed data
For a store whose on-chain singleton is still at generation 0 (created but
no data committed yet) there is no local tree, so get_tree_root raised
"No generations found". upload_files and clean_old_full_tree_files both hit
this, and update_subscription caught it and logged an ERROR with a full
traceback every management cycle for every such store.
Add the same generation-0 early return that fetch_and_validate already uses
to both upload_files and clean_old_full_tree_files, so an empty store is a
quiet no-op instead of recurring error spam.
* Clarify DataLayer empty-store log message
Set testneta MIN_PLOT_SIZE_V1 to 18 for sync from height 0
Testneta shares early chain history with testnet11 where smaller v1 plots
are valid. New installs and existing nodes without a config override were
using the mainnet default of 32 and failing INVALID_POSPACE during initial
sync.
* Isolate per-subscription failures in the DataLayer management loop
A single invalid subscription (e.g. a launcher whose coin can't be found
on chain, surfaced as a ResponseFailureError from dl_track_new) used to
abort the initial wallet-tracking loop before its break, which retried the
whole subscription list forever and never entered the main management loop.
That starved every store of fetch/validate and permanently broke unsubscribe
processing, unrecoverable across restarts.
Fold wallet tracking into the main loop per-subscription with isolation: one
failing dl_track_new is logged (throttled) and skipped, connectivity errors
are retried next cycle, and fetch/validate plus the unsubscribe-queue drain
always run. The drain now tolerates a failing process_unsubscribe (retrying
it rather than killing the loop), and process_unsubscribe is idempotent for
an already-removed store.
* Remove subscription tracking log throttling
Keep the DataLayer fault-isolation behavior simple by logging each per-subscription tracking failure directly instead of maintaining custom in-memory throttle state.
* Lighten DataLayer fault-isolation tests
Use a focused wallet RPC fake for DataLayer management-loop regressions so the tests avoid unnecessary wallet/full-node startup while still exercising shutdown and liveness contracts.
* Flatten DataLayer fault-isolation test fakes
Replace ad hoc wallet RPC monkeypatch helpers with a small test client and split invalid-subscription liveness from unsubscribe processing for easier review.
* Fix unhandled errors for invalid or missing chia peer services.
Replace KeyError tracebacks with click.UsageError for unknown config sections, remove the legacy base mapping, and resolve config via node_config_section_names so simulator and similar names work correctly.
Fixes#20963
* address some coverage gaps
full_node: return False instead of asserting on disconnected first block in short_sync_batch
Replace `assert prev_b is not None` in short_sync_batch with an explicit None check that
returns False, matching the documented fallback-to-long-sync behavior and mirroring the
explicit check already used in add_block.
* bump chia_rs to 0.45.0
* support parsing limited lists for rust types, using the new truncate() feature
* use the new, explicit, function to print private keys
* review comment
* review comments
* fix python import
* remove did wallet duplicate code
* add test cases for orphan did wallet check
* fix format issue
* Fix DID wallet orphan cleanup path and strengthen regressions.
Move wallet creation inside guarded exception handling so cleanup only runs when a wallet row exists, and add regression coverage that asserts DB wallet rows are unchanged on failed creation paths.
Made-with: Cursor
* Address review feedback for DID orphan regression handling.
Combine failure-path DID wallet regression checks into one test, use wallet_environments.tx_config, and simplify cleanup to always delete by wallet_id on generation failure.
Made-with: Cursor
---------
Co-authored-by: Gene Hoffman <hoffmang@hoffmang.com>
* pass in unresolved name for use as servername in ws_connect
* apply some bugbot comments
* avoid setting server hostname when it's actually the ip address
* different strategy for when to not use server_hostname
* Bump aiohttp to 3.14.0
Require the aiohttp release that fixes false websocket heartbeat timeouts while receiving slow large frames.
Co-authored-by: Cursor <cursoragent@cursor.com>
* Fix aiohttp websocket typing
Set explicit text decoding on websocket clients so aiohttp 3.14 keeps the existing decoded-message type contract.
Co-authored-by: Cursor <cursoragent@cursor.com>
* Fix aiohttp typing on Python 3.10
Centralize the decoded websocket type narrowing so aiohttp 3.14 type checks consistently across supported Python versions.
Co-authored-by: Cursor <cursoragent@cursor.com>
* Widen aiohttp websocket type boundary
Let Chia accept aiohttp websocket responses with either text-decoding mode instead of relying on a post-hoc narrowing helper.
Co-authored-by: Cursor <cursoragent@cursor.com>
* Document aiohttp typing cleanup
Note that the widened websocket type boundary can be revisited after Python 3.10 support is dropped.
Co-authored-by: Cursor <cursoragent@cursor.com>
* Test slow websocket frame heartbeat
Cover the aiohttp 3.14 heartbeat reset behavior that keeps large frames alive while bytes continue arriving slowly.
Co-authored-by: Cursor <cursoragent@cursor.com>
* Assert slow frame exceeds heartbeat window
Make the aiohttp websocket regression test prove its throttled frame crosses the heartbeat timeout boundary.
Co-authored-by: Cursor <cursoragent@cursor.com>
* Fix server test import order
Apply the ruff import ordering fix for the aiohttp websocket regression test.
Co-authored-by: Cursor <cursoragent@cursor.com>
---------
Co-authored-by: Cursor <cursoragent@cursor.com>