chia-blockchain 2.5.0rc1__py3-none-any.whl → 2.5.1__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.
Files changed (637) hide show
  1. chia/_tests/README.md +1 -1
  2. chia/_tests/blockchain/blockchain_test_utils.py +24 -26
  3. chia/_tests/blockchain/test_augmented_chain.py +6 -8
  4. chia/_tests/blockchain/test_blockchain.py +409 -307
  5. chia/_tests/blockchain/test_blockchain_transactions.py +56 -75
  6. chia/_tests/blockchain/test_build_chains.py +11 -13
  7. chia/_tests/blockchain/test_get_block_generator.py +8 -8
  8. chia/_tests/blockchain/test_lookup_fork_chain.py +3 -4
  9. chia/_tests/build-init-files.py +3 -4
  10. chia/_tests/build-job-matrix.py +9 -9
  11. chia/_tests/check_sql_statements.py +2 -3
  12. chia/_tests/clvm/benchmark_costs.py +1 -1
  13. chia/_tests/clvm/coin_store.py +7 -5
  14. chia/_tests/clvm/test_chialisp_deserialization.py +8 -8
  15. chia/_tests/clvm/test_condition_codes.py +2 -2
  16. chia/_tests/clvm/test_curry_and_treehash.py +2 -4
  17. chia/_tests/clvm/test_message_conditions.py +184 -0
  18. chia/_tests/clvm/test_puzzle_compression.py +1 -2
  19. chia/_tests/clvm/test_puzzle_drivers.py +3 -3
  20. chia/_tests/clvm/test_puzzles.py +13 -18
  21. chia/_tests/clvm/test_singletons.py +17 -17
  22. chia/_tests/clvm/test_spend_sim.py +7 -7
  23. chia/_tests/cmds/cmd_test_utils.py +42 -45
  24. chia/_tests/cmds/conftest.py +2 -2
  25. chia/_tests/cmds/test_click_types.py +21 -16
  26. chia/_tests/cmds/test_cmd_framework.py +255 -35
  27. chia/_tests/cmds/test_cmds_util.py +2 -2
  28. chia/_tests/cmds/test_daemon.py +3 -3
  29. chia/_tests/cmds/test_dev_gh.py +131 -0
  30. chia/_tests/cmds/test_farm_cmd.py +1 -2
  31. chia/_tests/cmds/test_show.py +6 -6
  32. chia/_tests/cmds/test_tx_config_args.py +2 -1
  33. chia/_tests/cmds/wallet/test_dao.py +23 -23
  34. chia/_tests/cmds/wallet/test_did.py +29 -29
  35. chia/_tests/cmds/wallet/test_nft.py +24 -23
  36. chia/_tests/cmds/wallet/test_notifications.py +8 -8
  37. chia/_tests/cmds/wallet/test_tx_decorators.py +3 -3
  38. chia/_tests/cmds/wallet/test_vcs.py +97 -73
  39. chia/_tests/cmds/wallet/test_wallet.py +74 -75
  40. chia/_tests/cmds/wallet/test_wallet_check.py +5 -7
  41. chia/_tests/conftest.py +153 -38
  42. chia/_tests/connection_utils.py +7 -6
  43. chia/_tests/core/cmds/test_beta.py +3 -3
  44. chia/_tests/core/cmds/test_keys.py +6 -6
  45. chia/_tests/core/cmds/test_wallet.py +3 -3
  46. chia/_tests/core/consensus/test_block_creation.py +3 -5
  47. chia/_tests/core/custom_types/test_coin.py +1 -3
  48. chia/_tests/core/custom_types/test_spend_bundle.py +3 -4
  49. chia/_tests/core/daemon/test_daemon.py +58 -58
  50. chia/_tests/core/daemon/test_keychain_proxy.py +2 -1
  51. chia/_tests/core/data_layer/conftest.py +4 -3
  52. chia/_tests/core/data_layer/test_data_cli.py +1 -2
  53. chia/_tests/core/data_layer/test_data_layer.py +5 -5
  54. chia/_tests/core/data_layer/test_data_layer_util.py +8 -9
  55. chia/_tests/core/data_layer/test_data_rpc.py +75 -93
  56. chia/_tests/core/data_layer/test_data_store.py +38 -37
  57. chia/_tests/core/data_layer/test_data_store_schema.py +11 -11
  58. chia/_tests/core/data_layer/util.py +11 -10
  59. chia/_tests/core/farmer/test_farmer_api.py +6 -4
  60. chia/_tests/core/full_node/full_sync/test_full_sync.py +5 -10
  61. chia/_tests/core/full_node/ram_db.py +2 -2
  62. chia/_tests/core/full_node/stores/test_block_store.py +113 -11
  63. chia/_tests/core/full_node/stores/test_coin_store.py +37 -28
  64. chia/_tests/core/full_node/stores/test_full_node_store.py +34 -30
  65. chia/_tests/core/full_node/stores/test_hint_store.py +3 -4
  66. chia/_tests/core/full_node/test_address_manager.py +2 -2
  67. chia/_tests/core/full_node/test_block_height_map.py +1 -1
  68. chia/_tests/core/full_node/test_conditions.py +10 -12
  69. chia/_tests/core/full_node/test_full_node.py +2077 -1822
  70. chia/_tests/core/full_node/test_generator_tools.py +4 -4
  71. chia/_tests/core/full_node/test_hint_management.py +2 -2
  72. chia/_tests/core/full_node/test_performance.py +2 -5
  73. chia/_tests/core/full_node/test_subscriptions.py +4 -4
  74. chia/_tests/core/full_node/test_tx_processing_queue.py +5 -4
  75. chia/_tests/core/make_block_generator.py +5 -7
  76. chia/_tests/core/mempool/test_mempool.py +205 -208
  77. chia/_tests/core/mempool/test_mempool_fee_protocol.py +5 -5
  78. chia/_tests/core/mempool/test_mempool_item_queries.py +2 -4
  79. chia/_tests/core/mempool/test_mempool_manager.py +109 -80
  80. chia/_tests/core/mempool/test_mempool_performance.py +3 -4
  81. chia/_tests/core/mempool/test_singleton_fast_forward.py +12 -12
  82. chia/_tests/core/server/flood.py +6 -4
  83. chia/_tests/core/server/serve.py +10 -7
  84. chia/_tests/core/server/test_api_protocol.py +21 -0
  85. chia/_tests/core/server/test_capabilities.py +3 -5
  86. chia/_tests/core/server/test_dos.py +15 -16
  87. chia/_tests/core/server/test_loop.py +14 -10
  88. chia/_tests/core/server/test_node_discovery.py +1 -2
  89. chia/_tests/core/server/test_rate_limits.py +156 -44
  90. chia/_tests/core/server/test_server.py +8 -7
  91. chia/_tests/core/services/test_services.py +59 -37
  92. chia/_tests/core/ssl/test_ssl.py +5 -3
  93. chia/_tests/core/test_cost_calculation.py +5 -6
  94. chia/_tests/core/test_crawler.py +2 -2
  95. chia/_tests/core/test_db_conversion.py +5 -4
  96. chia/_tests/core/test_db_validation.py +6 -5
  97. chia/_tests/core/test_farmer_harvester_rpc.py +8 -7
  98. chia/_tests/core/test_filter.py +3 -5
  99. chia/_tests/core/test_full_node_rpc.py +64 -90
  100. chia/_tests/core/test_merkle_set.py +10 -10
  101. chia/_tests/core/test_program.py +2 -4
  102. chia/_tests/core/test_rpc_util.py +1 -2
  103. chia/_tests/core/test_seeder.py +124 -12
  104. chia/_tests/core/util/test_block_cache.py +5 -5
  105. chia/_tests/core/util/test_cached_bls.py +3 -3
  106. chia/_tests/core/util/test_config.py +13 -13
  107. chia/_tests/core/util/test_files.py +2 -2
  108. chia/_tests/core/util/test_jsonify.py +9 -9
  109. chia/_tests/core/util/test_keychain.py +13 -5
  110. chia/_tests/core/util/test_keyring_wrapper.py +6 -5
  111. chia/_tests/core/util/test_log_exceptions.py +3 -3
  112. chia/_tests/core/util/test_streamable.py +38 -38
  113. chia/_tests/db/test_db_wrapper.py +13 -12
  114. chia/_tests/environments/common.py +2 -2
  115. chia/_tests/environments/full_node.py +2 -2
  116. chia/_tests/environments/wallet.py +109 -48
  117. chia/_tests/farmer_harvester/test_farmer.py +35 -35
  118. chia/_tests/farmer_harvester/test_farmer_harvester.py +17 -17
  119. chia/_tests/farmer_harvester/test_filter_prefix_bits.py +6 -5
  120. chia/_tests/farmer_harvester/test_third_party_harvesters.py +73 -46
  121. chia/_tests/fee_estimation/test_fee_estimation_integration.py +8 -8
  122. chia/_tests/fee_estimation/test_fee_estimation_rpc.py +47 -47
  123. chia/_tests/fee_estimation/test_fee_estimation_unit_tests.py +6 -7
  124. chia/_tests/fee_estimation/test_mempoolitem_height_added.py +11 -11
  125. chia/_tests/generator/test_compression.py +13 -30
  126. chia/_tests/generator/test_generator_types.py +3 -3
  127. chia/_tests/generator/test_rom.py +7 -9
  128. chia/_tests/plot_sync/test_delta.py +2 -3
  129. chia/_tests/plot_sync/test_plot_sync.py +25 -24
  130. chia/_tests/plot_sync/test_receiver.py +9 -9
  131. chia/_tests/plot_sync/test_sender.py +1 -1
  132. chia/_tests/plot_sync/test_sync_simulated.py +27 -26
  133. chia/_tests/plot_sync/util.py +2 -1
  134. chia/_tests/plotting/test_plot_manager.py +54 -11
  135. chia/_tests/plotting/util.py +2 -3
  136. chia/_tests/pools/test_pool_cli_parsing.py +128 -0
  137. chia/_tests/pools/test_pool_cmdline.py +993 -15
  138. chia/_tests/pools/test_pool_config.py +3 -5
  139. chia/_tests/pools/test_pool_puzzles_lifecycle.py +10 -11
  140. chia/_tests/pools/test_pool_rpc.py +203 -90
  141. chia/_tests/pools/test_pool_wallet.py +12 -8
  142. chia/_tests/pools/test_wallet_pool_store.py +3 -3
  143. chia/_tests/process_junit.py +16 -17
  144. chia/_tests/rpc/test_rpc_client.py +59 -2
  145. chia/_tests/rpc/test_rpc_server.py +183 -0
  146. chia/_tests/simulation/test_simulation.py +5 -5
  147. chia/_tests/simulation/test_simulator.py +8 -10
  148. chia/_tests/simulation/test_start_simulator.py +5 -4
  149. chia/_tests/timelord/test_new_peak.py +19 -19
  150. chia/_tests/tools/test_run_block.py +1 -2
  151. chia/_tests/tools/test_virtual_project.py +591 -0
  152. chia/_tests/util/benchmark_cost.py +9 -9
  153. chia/_tests/util/benchmarks.py +1 -2
  154. chia/_tests/util/blockchain.py +12 -11
  155. chia/_tests/util/blockchain_mock.py +15 -15
  156. chia/_tests/util/build_network_protocol_files.py +12 -12
  157. chia/_tests/util/db_connection.py +3 -2
  158. chia/_tests/util/full_sync.py +14 -6
  159. chia/_tests/util/gen_ssl_certs.py +4 -5
  160. chia/_tests/util/generator_tools_testing.py +5 -7
  161. chia/_tests/util/get_name_puzzle_conditions.py +52 -0
  162. chia/_tests/util/key_tool.py +2 -3
  163. chia/_tests/util/misc.py +59 -106
  164. chia/_tests/util/network_protocol_data.py +7 -9
  165. chia/_tests/util/protocol_messages_json.py +112 -111
  166. chia/_tests/util/rpc.py +3 -0
  167. chia/_tests/util/run_block.py +16 -16
  168. chia/_tests/util/setup_nodes.py +25 -23
  169. chia/{clvm → _tests/util}/spend_sim.py +59 -55
  170. chia/_tests/util/split_managers.py +12 -9
  171. chia/_tests/util/temp_file.py +1 -1
  172. chia/_tests/util/test_action_scope.py +2 -1
  173. chia/_tests/util/test_async_pool.py +8 -8
  174. chia/_tests/util/test_build_job_matrix.py +2 -3
  175. chia/_tests/util/test_condition_tools.py +4 -6
  176. chia/_tests/util/test_config.py +5 -5
  177. chia/_tests/util/test_dump_keyring.py +1 -1
  178. chia/_tests/util/test_full_block_utils.py +19 -11
  179. chia/_tests/util/test_limited_semaphore.py +4 -3
  180. chia/_tests/util/test_logging_filter.py +2 -3
  181. chia/_tests/util/test_misc.py +29 -28
  182. chia/_tests/util/test_network.py +32 -31
  183. chia/_tests/util/test_network_protocol_files.py +2 -3
  184. chia/_tests/util/test_network_protocol_json.py +1 -0
  185. chia/_tests/util/test_network_protocol_test.py +18 -19
  186. chia/_tests/util/test_paginator.py +3 -4
  187. chia/_tests/util/test_pprint.py +1 -1
  188. chia/_tests/util/test_priority_mutex.py +18 -17
  189. chia/_tests/util/test_recursive_replace.py +2 -2
  190. chia/_tests/util/test_testnet_overrides.py +3 -3
  191. chia/_tests/util/test_timing.py +1 -1
  192. chia/_tests/util/test_trusted_peer.py +2 -2
  193. chia/_tests/util/time_out_assert.py +43 -6
  194. chia/_tests/wallet/cat_wallet/test_cat_lifecycle.py +13 -13
  195. chia/_tests/wallet/cat_wallet/test_cat_outer_puzzle.py +1 -1
  196. chia/_tests/wallet/cat_wallet/test_cat_wallet.py +117 -29
  197. chia/_tests/wallet/cat_wallet/test_offer_lifecycle.py +15 -15
  198. chia/_tests/wallet/cat_wallet/test_trades.py +50 -28
  199. chia/_tests/wallet/clawback/test_clawback_decorator.py +3 -5
  200. chia/_tests/wallet/clawback/test_clawback_lifecycle.py +6 -6
  201. chia/_tests/wallet/clawback/test_clawback_metadata.py +1 -2
  202. chia/_tests/wallet/conftest.py +135 -74
  203. chia/_tests/wallet/dao_wallet/test_dao_clvm.py +25 -17
  204. chia/_tests/wallet/dao_wallet/test_dao_wallets.py +75 -75
  205. chia/_tests/wallet/db_wallet/test_db_graftroot.py +10 -12
  206. chia/_tests/wallet/db_wallet/test_dl_offers.py +6 -6
  207. chia/_tests/wallet/db_wallet/test_dl_wallet.py +18 -18
  208. chia/_tests/wallet/did_wallet/test_did.py +1277 -474
  209. chia/_tests/wallet/nft_wallet/test_nft_1_offers.py +12 -11
  210. chia/_tests/wallet/nft_wallet/test_nft_bulk_mint.py +115 -105
  211. chia/_tests/wallet/nft_wallet/test_nft_lifecycle.py +6 -7
  212. chia/_tests/wallet/nft_wallet/test_nft_offers.py +16 -16
  213. chia/_tests/wallet/nft_wallet/test_nft_puzzles.py +3 -3
  214. chia/_tests/wallet/nft_wallet/test_nft_wallet.py +38 -12
  215. chia/_tests/wallet/nft_wallet/test_ownership_outer_puzzle.py +1 -1
  216. chia/_tests/wallet/rpc/test_dl_wallet_rpc.py +31 -33
  217. chia/_tests/wallet/rpc/test_wallet_rpc.py +218 -171
  218. chia/_tests/wallet/simple_sync/test_simple_sync_protocol.py +36 -37
  219. chia/_tests/wallet/sync/test_wallet_sync.py +241 -78
  220. chia/_tests/wallet/test_address_type.py +20 -20
  221. chia/_tests/wallet/test_clvm_streamable.py +5 -5
  222. chia/_tests/wallet/test_coin_management.py +354 -0
  223. chia/_tests/wallet/test_coin_selection.py +34 -35
  224. chia/_tests/wallet/test_conditions.py +28 -16
  225. chia/_tests/wallet/test_debug_spend_bundle.py +156 -14
  226. chia/_tests/wallet/test_new_wallet_protocol.py +29 -31
  227. chia/_tests/wallet/test_nft_store.py +1 -2
  228. chia/_tests/wallet/test_notifications.py +2 -2
  229. chia/_tests/wallet/test_offer_parsing_performance.py +1 -1
  230. chia/_tests/wallet/test_puzzle_store.py +2 -3
  231. chia/_tests/wallet/test_sign_coin_spends.py +3 -3
  232. chia/_tests/wallet/test_signer_protocol.py +33 -34
  233. chia/_tests/wallet/test_singleton_lifecycle_fast.py +29 -29
  234. chia/_tests/wallet/test_taproot.py +1 -1
  235. chia/_tests/wallet/test_transaction_store.py +23 -19
  236. chia/_tests/wallet/test_util.py +36 -32
  237. chia/_tests/wallet/test_wallet.py +37 -37
  238. chia/_tests/wallet/test_wallet_action_scope.py +8 -8
  239. chia/_tests/wallet/test_wallet_blockchain.py +4 -6
  240. chia/_tests/wallet/test_wallet_coin_store.py +34 -34
  241. chia/_tests/wallet/test_wallet_node.py +69 -72
  242. chia/_tests/wallet/test_wallet_retry.py +3 -3
  243. chia/_tests/wallet/test_wallet_state_manager.py +12 -5
  244. chia/_tests/wallet/test_wallet_trade_store.py +2 -2
  245. chia/_tests/wallet/test_wallet_utils.py +5 -4
  246. chia/_tests/wallet/vc_wallet/test_cr_outer_puzzle.py +3 -3
  247. chia/_tests/wallet/vc_wallet/test_vc_lifecycle.py +18 -18
  248. chia/_tests/wallet/vc_wallet/test_vc_wallet.py +69 -40
  249. chia/_tests/wallet/wallet_block_tools.py +27 -27
  250. chia/_tests/weight_proof/test_weight_proof.py +30 -30
  251. chia/apis.py +19 -0
  252. chia/cmds/beta.py +8 -7
  253. chia/cmds/beta_funcs.py +15 -11
  254. chia/cmds/check_wallet_db.py +29 -27
  255. chia/cmds/chia.py +17 -9
  256. chia/cmds/cmd_classes.py +87 -79
  257. chia/cmds/cmd_helpers.py +242 -0
  258. chia/cmds/cmds_util.py +56 -66
  259. chia/cmds/coin_funcs.py +168 -153
  260. chia/cmds/coins.py +156 -194
  261. chia/cmds/configure.py +4 -3
  262. chia/cmds/dao.py +89 -33
  263. chia/cmds/dao_funcs.py +55 -33
  264. chia/cmds/data.py +7 -6
  265. chia/cmds/data_funcs.py +26 -21
  266. chia/cmds/db.py +4 -3
  267. chia/cmds/db_backup_func.py +2 -2
  268. chia/cmds/db_upgrade_func.py +3 -3
  269. chia/cmds/db_validate_func.py +2 -2
  270. chia/cmds/dev.py +2 -0
  271. chia/cmds/farm.py +18 -5
  272. chia/cmds/farm_funcs.py +17 -24
  273. chia/cmds/gh.py +275 -0
  274. chia/cmds/init.py +4 -11
  275. chia/cmds/init_funcs.py +9 -9
  276. chia/cmds/installers.py +5 -3
  277. chia/cmds/keys.py +56 -39
  278. chia/cmds/keys_funcs.py +30 -31
  279. chia/cmds/netspace.py +6 -3
  280. chia/cmds/netspace_funcs.py +3 -2
  281. chia/cmds/param_types.py +16 -6
  282. chia/cmds/passphrase.py +8 -7
  283. chia/cmds/passphrase_funcs.py +7 -61
  284. chia/cmds/peer.py +2 -1
  285. chia/cmds/peer_funcs.py +5 -5
  286. chia/cmds/plotnft.py +207 -153
  287. chia/cmds/plotnft_funcs.py +205 -174
  288. chia/cmds/plots.py +14 -6
  289. chia/cmds/plotters.py +2 -1
  290. chia/cmds/rpc.py +48 -28
  291. chia/cmds/show.py +2 -1
  292. chia/cmds/show_funcs.py +7 -6
  293. chia/cmds/signer.py +50 -58
  294. chia/cmds/sim.py +22 -14
  295. chia/cmds/sim_funcs.py +11 -11
  296. chia/cmds/start.py +3 -3
  297. chia/cmds/start_funcs.py +9 -12
  298. chia/cmds/stop.py +4 -3
  299. chia/cmds/units.py +1 -3
  300. chia/cmds/wallet.py +252 -96
  301. chia/cmds/wallet_funcs.py +217 -143
  302. chia/consensus/block_body_validation.py +133 -86
  303. chia/consensus/block_creation.py +42 -21
  304. chia/consensus/block_header_validation.py +32 -37
  305. chia/consensus/block_record.py +1 -2
  306. chia/consensus/blockchain.py +167 -180
  307. chia/consensus/blockchain_interface.py +10 -10
  308. chia/consensus/constants.py +2 -2
  309. chia/consensus/default_constants.py +3 -4
  310. chia/consensus/difficulty_adjustment.py +5 -5
  311. chia/consensus/find_fork_point.py +5 -5
  312. chia/consensus/full_block_to_block_record.py +4 -4
  313. chia/consensus/get_block_challenge.py +2 -2
  314. chia/consensus/get_block_generator.py +4 -3
  315. chia/consensus/multiprocess_validation.py +207 -304
  316. chia/consensus/vdf_info_computation.py +3 -3
  317. chia/daemon/client.py +46 -27
  318. chia/daemon/keychain_proxy.py +10 -9
  319. chia/daemon/keychain_server.py +18 -18
  320. chia/daemon/server.py +103 -113
  321. chia/daemon/windows_signal.py +2 -2
  322. chia/data_layer/data_layer.py +64 -76
  323. chia/data_layer/data_layer_api.py +8 -0
  324. chia/data_layer/data_layer_errors.py +3 -3
  325. chia/data_layer/data_layer_server.py +2 -2
  326. chia/data_layer/data_layer_util.py +71 -71
  327. chia/data_layer/data_layer_wallet.py +63 -67
  328. chia/data_layer/data_store.py +72 -72
  329. chia/data_layer/dl_wallet_store.py +10 -10
  330. chia/data_layer/download_data.py +5 -5
  331. chia/data_layer/s3_plugin_service.py +9 -9
  332. chia/data_layer/util/benchmark.py +0 -1
  333. chia/data_layer/util/plugin.py +2 -3
  334. chia/farmer/farmer.py +46 -43
  335. chia/farmer/farmer_api.py +27 -21
  336. chia/full_node/block_height_map.py +6 -6
  337. chia/full_node/block_store.py +41 -35
  338. chia/full_node/coin_store.py +42 -41
  339. chia/full_node/fee_estimate.py +2 -2
  340. chia/full_node/fee_estimation.py +1 -2
  341. chia/full_node/fee_history.py +5 -6
  342. chia/full_node/fee_tracker.py +24 -24
  343. chia/full_node/full_node.py +574 -300
  344. chia/full_node/full_node_api.py +181 -130
  345. chia/full_node/full_node_store.py +43 -43
  346. chia/full_node/hint_management.py +4 -4
  347. chia/full_node/hint_store.py +9 -10
  348. chia/full_node/mempool.py +25 -19
  349. chia/full_node/mempool_check_conditions.py +11 -42
  350. chia/full_node/mempool_manager.py +48 -53
  351. chia/full_node/pending_tx_cache.py +9 -9
  352. chia/full_node/subscriptions.py +23 -24
  353. chia/full_node/sync_store.py +8 -7
  354. chia/full_node/tx_processing_queue.py +3 -3
  355. chia/full_node/util/__init__.py +0 -0
  356. chia/full_node/weight_proof.py +79 -78
  357. chia/harvester/harvester.py +9 -8
  358. chia/harvester/harvester_api.py +19 -13
  359. chia/introducer/introducer.py +7 -5
  360. chia/introducer/introducer_api.py +9 -3
  361. chia/legacy/keyring.py +6 -5
  362. chia/plot_sync/delta.py +8 -8
  363. chia/plot_sync/receiver.py +12 -11
  364. chia/plot_sync/sender.py +15 -12
  365. chia/plotters/bladebit.py +12 -12
  366. chia/plotters/chiapos.py +2 -2
  367. chia/plotters/madmax.py +8 -8
  368. chia/plotters/plotters.py +6 -6
  369. chia/plotters/plotters_util.py +6 -4
  370. chia/plotting/cache.py +8 -7
  371. chia/plotting/check_plots.py +8 -8
  372. chia/plotting/create_plots.py +6 -6
  373. chia/plotting/manager.py +22 -22
  374. chia/plotting/util.py +31 -19
  375. chia/pools/pool_config.py +7 -7
  376. chia/pools/pool_puzzles.py +16 -16
  377. chia/pools/pool_wallet.py +64 -57
  378. chia/pools/pool_wallet_info.py +3 -3
  379. chia/protocols/full_node_protocol.py +3 -3
  380. chia/protocols/harvester_protocol.py +12 -12
  381. chia/protocols/introducer_protocol.py +1 -2
  382. chia/protocols/protocol_message_types.py +4 -4
  383. chia/protocols/protocol_state_machine.py +2 -2
  384. chia/protocols/protocol_timing.py +1 -0
  385. chia/protocols/shared_protocol.py +3 -3
  386. chia/protocols/timelord_protocol.py +2 -2
  387. chia/protocols/wallet_protocol.py +33 -33
  388. chia/rpc/crawler_rpc_api.py +12 -7
  389. chia/rpc/data_layer_rpc_api.py +49 -44
  390. chia/rpc/data_layer_rpc_client.py +41 -41
  391. chia/rpc/data_layer_rpc_util.py +7 -11
  392. chia/rpc/farmer_rpc_api.py +32 -27
  393. chia/rpc/farmer_rpc_client.py +14 -14
  394. chia/rpc/full_node_rpc_api.py +53 -48
  395. chia/rpc/full_node_rpc_client.py +30 -30
  396. chia/rpc/harvester_rpc_api.py +16 -11
  397. chia/rpc/harvester_rpc_client.py +6 -6
  398. chia/rpc/rpc_client.py +34 -14
  399. chia/rpc/rpc_server.py +117 -43
  400. chia/rpc/timelord_rpc_api.py +9 -4
  401. chia/rpc/util.py +11 -211
  402. chia/rpc/wallet_request_types.py +276 -60
  403. chia/rpc/wallet_rpc_api.py +563 -399
  404. chia/rpc/wallet_rpc_client.py +220 -250
  405. chia/seeder/crawl_store.py +6 -8
  406. chia/seeder/crawler.py +23 -36
  407. chia/seeder/crawler_api.py +28 -22
  408. chia/seeder/dns_server.py +99 -50
  409. chia/seeder/start_crawler.py +13 -9
  410. chia/server/address_manager.py +19 -19
  411. chia/server/address_manager_store.py +17 -17
  412. chia/server/api_protocol.py +106 -1
  413. chia/server/capabilities.py +3 -3
  414. chia/server/chia_policy.py +17 -16
  415. chia/server/introducer_peers.py +3 -3
  416. chia/server/node_discovery.py +34 -38
  417. chia/server/rate_limit_numbers.py +26 -16
  418. chia/server/rate_limits.py +67 -27
  419. chia/server/server.py +52 -31
  420. chia/server/signal_handlers.py +6 -3
  421. chia/server/ssl_context.py +5 -5
  422. chia/server/start_data_layer.py +37 -23
  423. chia/server/start_farmer.py +28 -16
  424. chia/server/start_full_node.py +29 -23
  425. chia/server/start_harvester.py +28 -15
  426. chia/server/start_introducer.py +27 -15
  427. chia/server/start_service.py +17 -29
  428. chia/server/start_timelord.py +25 -18
  429. chia/server/start_wallet.py +22 -18
  430. chia/server/upnp.py +4 -3
  431. chia/server/ws_connection.py +68 -54
  432. chia/simulator/add_blocks_in_batches.py +54 -0
  433. chia/simulator/block_tools.py +65 -64
  434. chia/simulator/full_node_simulator.py +66 -74
  435. chia/simulator/setup_services.py +10 -9
  436. chia/simulator/simulator_full_node_rpc_api.py +12 -14
  437. chia/simulator/simulator_full_node_rpc_client.py +3 -5
  438. chia/simulator/simulator_test_tools.py +8 -7
  439. chia/simulator/socket.py +1 -4
  440. chia/simulator/ssl_certs.py +5 -5
  441. chia/simulator/ssl_certs_1.py +2 -4
  442. chia/simulator/ssl_certs_10.py +2 -4
  443. chia/simulator/ssl_certs_2.py +2 -4
  444. chia/simulator/ssl_certs_3.py +2 -4
  445. chia/simulator/ssl_certs_4.py +2 -4
  446. chia/simulator/ssl_certs_5.py +2 -4
  447. chia/simulator/ssl_certs_6.py +2 -4
  448. chia/simulator/ssl_certs_7.py +2 -4
  449. chia/simulator/ssl_certs_8.py +2 -4
  450. chia/simulator/ssl_certs_9.py +2 -4
  451. chia/simulator/start_simulator.py +14 -6
  452. chia/simulator/wallet_tools.py +21 -20
  453. chia/ssl/create_ssl.py +11 -11
  454. chia/timelord/iters_from_block.py +2 -2
  455. chia/timelord/timelord.py +57 -33
  456. chia/timelord/timelord_api.py +12 -6
  457. chia/timelord/timelord_launcher.py +10 -8
  458. chia/timelord/timelord_state.py +5 -5
  459. chia/types/block_protocol.py +2 -2
  460. chia/types/blockchain_format/coin.py +3 -3
  461. chia/types/blockchain_format/program.py +17 -18
  462. chia/types/blockchain_format/tree_hash.py +9 -9
  463. chia/types/coin_spend.py +8 -8
  464. chia/types/condition_with_args.py +1 -2
  465. chia/types/eligible_coin_spends.py +16 -15
  466. chia/types/generator_types.py +1 -2
  467. chia/types/internal_mempool_item.py +1 -2
  468. chia/types/mempool_item.py +7 -7
  469. chia/types/mempool_submission_status.py +2 -2
  470. chia/types/peer_info.py +1 -1
  471. chia/types/spend_bundle.py +1 -2
  472. chia/types/transaction_queue_entry.py +2 -2
  473. chia/types/unfinished_header_block.py +2 -2
  474. chia/types/validation_state.py +14 -0
  475. chia/types/weight_proof.py +5 -6
  476. chia/util/action_scope.py +8 -8
  477. chia/util/async_pool.py +6 -4
  478. chia/util/augmented_chain.py +13 -9
  479. chia/util/batches.py +5 -2
  480. chia/util/bech32m.py +14 -11
  481. chia/util/beta_metrics.py +5 -4
  482. chia/util/block_cache.py +5 -5
  483. chia/util/byte_types.py +2 -0
  484. chia/util/check_fork_next_block.py +3 -2
  485. chia/util/chia_logging.py +41 -21
  486. chia/util/collection.py +3 -3
  487. chia/util/condition_tools.py +18 -18
  488. chia/util/config.py +26 -25
  489. chia/util/cpu.py +2 -0
  490. chia/util/db_synchronous.py +2 -0
  491. chia/util/db_version.py +2 -0
  492. chia/util/db_wrapper.py +13 -10
  493. chia/util/default_root.py +17 -0
  494. chia/util/dump_keyring.py +6 -6
  495. chia/util/errors.py +5 -3
  496. chia/util/file_keyring.py +22 -33
  497. chia/util/files.py +2 -0
  498. chia/util/full_block_utils.py +31 -7
  499. chia/util/generator_tools.py +18 -8
  500. chia/util/hash.py +3 -1
  501. chia/util/initial-config.yaml +19 -0
  502. chia/util/inline_executor.py +2 -0
  503. chia/util/ip_address.py +39 -0
  504. chia/util/json_util.py +0 -4
  505. chia/util/keychain.py +27 -24
  506. chia/util/keyring_wrapper.py +65 -4
  507. chia/util/limited_semaphore.py +3 -1
  508. chia/util/lock.py +4 -2
  509. chia/util/log_exceptions.py +5 -2
  510. chia/util/logging.py +3 -1
  511. chia/util/lru_cache.py +2 -0
  512. chia/util/math.py +4 -4
  513. chia/util/network.py +15 -73
  514. chia/util/paginator.py +3 -1
  515. chia/util/path.py +2 -0
  516. chia/util/permissions.py +3 -2
  517. chia/util/prev_transaction_block.py +1 -3
  518. chia/util/priority_mutex.py +6 -3
  519. chia/util/profiler.py +7 -4
  520. chia/util/recursive_replace.py +2 -0
  521. chia/util/safe_cancel_task.py +2 -0
  522. chia/util/service_groups.py +2 -2
  523. chia/util/setproctitle.py +2 -0
  524. chia/util/significant_bits.py +2 -0
  525. chia/util/ssl_check.py +11 -11
  526. chia/util/streamable.py +44 -56
  527. chia/util/task_referencer.py +59 -0
  528. chia/util/task_timing.py +22 -18
  529. chia/util/timing.py +4 -1
  530. chia/util/vdf_prover.py +2 -3
  531. chia/util/virtual_project_analysis.py +540 -0
  532. chia/util/ws_message.py +6 -6
  533. chia/wallet/cat_wallet/cat_info.py +3 -3
  534. chia/wallet/cat_wallet/cat_outer_puzzle.py +3 -3
  535. chia/wallet/cat_wallet/cat_utils.py +5 -4
  536. chia/wallet/cat_wallet/cat_wallet.py +56 -70
  537. chia/wallet/cat_wallet/dao_cat_info.py +3 -3
  538. chia/wallet/cat_wallet/dao_cat_wallet.py +18 -18
  539. chia/wallet/cat_wallet/lineage_store.py +2 -2
  540. chia/wallet/coin_selection.py +15 -15
  541. chia/wallet/conditions.py +257 -71
  542. chia/wallet/dao_wallet/dao_info.py +4 -4
  543. chia/wallet/dao_wallet/dao_utils.py +43 -42
  544. chia/wallet/dao_wallet/dao_wallet.py +66 -68
  545. chia/wallet/db_wallet/db_wallet_puzzles.py +12 -8
  546. chia/wallet/derive_keys.py +11 -11
  547. chia/wallet/did_wallet/did_info.py +3 -3
  548. chia/wallet/did_wallet/did_wallet.py +56 -47
  549. chia/wallet/did_wallet/did_wallet_puzzles.py +7 -6
  550. chia/wallet/lineage_proof.py +4 -4
  551. chia/wallet/nft_wallet/metadata_outer_puzzle.py +2 -2
  552. chia/wallet/nft_wallet/nft_info.py +4 -4
  553. chia/wallet/nft_wallet/nft_puzzles.py +16 -16
  554. chia/wallet/nft_wallet/nft_wallet.py +90 -89
  555. chia/wallet/nft_wallet/ownership_outer_puzzle.py +2 -2
  556. chia/wallet/nft_wallet/singleton_outer_puzzle.py +2 -2
  557. chia/wallet/nft_wallet/transfer_program_puzzle.py +2 -2
  558. chia/wallet/nft_wallet/uncurry_nft.py +2 -2
  559. chia/wallet/notification_manager.py +5 -5
  560. chia/wallet/notification_store.py +6 -6
  561. chia/wallet/outer_puzzles.py +2 -2
  562. chia/wallet/payment.py +4 -5
  563. chia/wallet/puzzle_drivers.py +4 -4
  564. chia/wallet/puzzles/clawback/drivers.py +5 -5
  565. chia/wallet/puzzles/clawback/puzzle_decorator.py +7 -7
  566. chia/wallet/puzzles/load_clvm.py +2 -3
  567. chia/wallet/puzzles/p2_conditions.py +1 -2
  568. chia/wallet/puzzles/p2_delegated_conditions.py +1 -2
  569. chia/wallet/puzzles/p2_delegated_puzzle.py +2 -3
  570. chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.py +3 -4
  571. chia/wallet/puzzles/p2_m_of_n_delegate_direct.py +1 -2
  572. chia/wallet/puzzles/p2_puzzle_hash.py +1 -2
  573. chia/wallet/puzzles/puzzle_utils.py +7 -7
  574. chia/wallet/puzzles/singleton_top_layer.py +6 -5
  575. chia/wallet/puzzles/singleton_top_layer_v1_1.py +6 -5
  576. chia/wallet/puzzles/tails.py +34 -30
  577. chia/wallet/signer_protocol.py +7 -8
  578. chia/wallet/singleton.py +4 -4
  579. chia/wallet/trade_manager.py +155 -141
  580. chia/wallet/trade_record.py +5 -5
  581. chia/wallet/trading/offer.py +100 -101
  582. chia/wallet/trading/trade_store.py +14 -14
  583. chia/wallet/transaction_record.py +31 -16
  584. chia/wallet/util/address_type.py +4 -4
  585. chia/wallet/util/blind_signer_tl.py +8 -12
  586. chia/wallet/util/clvm_streamable.py +15 -15
  587. chia/wallet/util/compute_hints.py +5 -5
  588. chia/wallet/util/compute_memos.py +4 -6
  589. chia/wallet/util/curry_and_treehash.py +3 -2
  590. chia/wallet/util/debug_spend_bundle.py +6 -8
  591. chia/wallet/util/merkle_tree.py +10 -10
  592. chia/wallet/util/merkle_utils.py +10 -10
  593. chia/wallet/util/new_peak_queue.py +3 -3
  594. chia/wallet/util/peer_request_cache.py +8 -8
  595. chia/{util → wallet/util}/pprint.py +2 -3
  596. chia/wallet/util/puzzle_compression.py +3 -4
  597. chia/wallet/util/puzzle_decorator.py +10 -10
  598. chia/wallet/util/query_filter.py +9 -10
  599. chia/wallet/util/tx_config.py +12 -12
  600. chia/wallet/util/wallet_sync_utils.py +24 -21
  601. chia/wallet/util/wallet_types.py +9 -2
  602. chia/wallet/vc_wallet/cr_cat_drivers.py +28 -27
  603. chia/wallet/vc_wallet/cr_cat_wallet.py +42 -40
  604. chia/wallet/vc_wallet/cr_outer_puzzle.py +4 -4
  605. chia/wallet/vc_wallet/vc_drivers.py +16 -16
  606. chia/wallet/vc_wallet/vc_store.py +9 -9
  607. chia/wallet/vc_wallet/vc_wallet.py +35 -35
  608. chia/wallet/wallet.py +54 -54
  609. chia/wallet/wallet_action_scope.py +14 -13
  610. chia/wallet/wallet_blockchain.py +10 -10
  611. chia/wallet/wallet_coin_record.py +2 -2
  612. chia/wallet/wallet_coin_store.py +10 -10
  613. chia/wallet/wallet_info.py +1 -2
  614. chia/wallet/wallet_interested_store.py +5 -5
  615. chia/wallet/wallet_nft_store.py +6 -6
  616. chia/wallet/wallet_node.py +72 -76
  617. chia/wallet/wallet_node_api.py +33 -27
  618. chia/wallet/wallet_pool_store.py +1 -2
  619. chia/wallet/wallet_protocol.py +15 -15
  620. chia/wallet/wallet_puzzle_store.py +35 -4
  621. chia/wallet/wallet_retry_store.py +2 -2
  622. chia/wallet/wallet_singleton_store.py +10 -9
  623. chia/wallet/wallet_spend_bundle.py +4 -20
  624. chia/wallet/wallet_state_manager.py +223 -224
  625. chia/wallet/wallet_transaction_store.py +44 -18
  626. chia/wallet/wallet_user_store.py +2 -2
  627. chia/wallet/wallet_weight_proof_handler.py +2 -2
  628. {chia_blockchain-2.5.0rc1.dist-info → chia_blockchain-2.5.1.dist-info}/LICENSE +1 -1
  629. {chia_blockchain-2.5.0rc1.dist-info → chia_blockchain-2.5.1.dist-info}/METADATA +67 -72
  630. chia_blockchain-2.5.1.dist-info/RECORD +1042 -0
  631. {chia_blockchain-2.5.0rc1.dist-info → chia_blockchain-2.5.1.dist-info}/WHEEL +1 -1
  632. mozilla-ca/cacert.pem +32 -87
  633. chia/_tests/cmds/wallet/test_coins.py +0 -195
  634. chia/consensus/block_root_validation.py +0 -46
  635. chia/util/api_decorators.py +0 -89
  636. chia_blockchain-2.5.0rc1.dist-info/RECORD +0 -1028
  637. {chia_blockchain-2.5.0rc1.dist-info → chia_blockchain-2.5.1.dist-info}/entry_points.txt +0 -0
@@ -2,7 +2,7 @@ from __future__ import annotations
2
2
 
3
3
  import dataclasses
4
4
  from pathlib import Path
5
- from typing import Any, Dict, List, Optional, Tuple
5
+ from typing import Any, Optional
6
6
 
7
7
  import pytest
8
8
  from chia_rs import AugSchemeMPL, G1Element, G2Element
@@ -78,7 +78,7 @@ class TestWalletSimulator:
78
78
  async with wallet.wallet_state_manager.new_action_scope(DEFAULT_TX_CONFIG, push=True) as action_scope:
79
79
  await wallet.generate_signed_transaction(
80
80
  uint64(tx_amount),
81
- bytes32([0] * 32),
81
+ bytes32.zeros,
82
82
  action_scope,
83
83
  uint64(0),
84
84
  )
@@ -112,7 +112,7 @@ class TestWalletSimulator:
112
112
  async with wallet.wallet_state_manager.new_action_scope(
113
113
  wallet_environments.tx_config, push=False
114
114
  ) as action_scope:
115
- selected_coin = list(await wallet.select_coins(uint64(0), action_scope))[0]
115
+ selected_coin = next(iter(await wallet.select_coins(uint64(0), action_scope)))
116
116
  assert await wallet.match_hinted_coin(selected_coin, selected_coin.puzzle_hash)
117
117
 
118
118
  @pytest.mark.parametrize(
@@ -133,7 +133,7 @@ class TestWalletSimulator:
133
133
  ) as action_scope:
134
134
  await wallet.generate_signed_transaction(
135
135
  uint64(tx_amount),
136
- bytes32([0] * 32),
136
+ bytes32.zeros,
137
137
  action_scope,
138
138
  uint64(0),
139
139
  )
@@ -577,7 +577,7 @@ class TestWalletSimulator:
577
577
  assert txs["transactions"][0]["confirmed"]
578
578
  assert txs["transactions"][1]["confirmed"]
579
579
  assert txs["transactions"][0]["memos"] != txs["transactions"][1]["memos"]
580
- assert list(txs["transactions"][0]["memos"].values())[0] == b"Test".hex()
580
+ assert next(iter(txs["transactions"][0]["memos"].values())) == b"Test".hex()
581
581
 
582
582
  @pytest.mark.parametrize(
583
583
  "wallet_environments",
@@ -777,7 +777,7 @@ class TestWalletSimulator:
777
777
  height = full_node_api.full_node.blockchain.get_peak_height()
778
778
  assert height is not None
779
779
  await full_node_api.reorg_from_index_to_new_index(
780
- ReorgProtocol(uint32(height - 2), uint32(height + 1), bytes32([0] * 32), None)
780
+ ReorgProtocol(uint32(height - 2), uint32(height + 1), bytes32.zeros, None)
781
781
  )
782
782
 
783
783
  await time_out_assert(20, wsm.coin_store.count_small_unspent, 0, 1000, CoinType.CLAWBACK)
@@ -859,7 +859,7 @@ class TestWalletSimulator:
859
859
  height = full_node_api.full_node.blockchain.get_peak_height()
860
860
  assert height is not None
861
861
  await full_node_api.reorg_from_index_to_new_index(
862
- ReorgProtocol(uint32(height - 1), uint32(height + 1), bytes32([0] * 32), None)
862
+ ReorgProtocol(uint32(height - 1), uint32(height + 1), bytes32.zeros, None)
863
863
  )
864
864
 
865
865
  await time_out_assert(20, wsm.coin_store.count_small_unspent, 1, 1000, CoinType.CLAWBACK)
@@ -916,7 +916,7 @@ class TestWalletSimulator:
916
916
  async with wallet.wallet_state_manager.new_action_scope(DEFAULT_TX_CONFIG, push=True) as action_scope:
917
917
  await wallet.generate_signed_transaction(
918
918
  uint64(tx_amount),
919
- bytes32([0] * 32),
919
+ bytes32.zeros,
920
920
  action_scope,
921
921
  uint64(0),
922
922
  puzzle_decorator_override=[{"decorator": "CLAWBACK", "clawback_timelock": 500}],
@@ -1112,11 +1112,11 @@ class TestWalletSimulator:
1112
1112
  await time_out_assert(20, wsm_1.coin_store.count_small_unspent, 0, 1000, CoinType.CLAWBACK)
1113
1113
  await time_out_assert(20, wsm_2.coin_store.count_small_unspent, 0, 1000, CoinType.CLAWBACK)
1114
1114
 
1115
- before_txs: Dict[str, Dict[TransactionType, int]] = {"sender": {}, "recipient": {}}
1116
- before_txs["sender"][TransactionType.INCOMING_CLAWBACK_SEND] = (
1117
- await wsm_1.tx_store.get_transaction_count_for_wallet(
1118
- 1, type_filter=TransactionTypeFilter.include([TransactionType.INCOMING_CLAWBACK_SEND])
1119
- )
1115
+ before_txs: dict[str, dict[TransactionType, int]] = {"sender": {}, "recipient": {}}
1116
+ before_txs["sender"][
1117
+ TransactionType.INCOMING_CLAWBACK_SEND
1118
+ ] = await wsm_1.tx_store.get_transaction_count_for_wallet(
1119
+ 1, type_filter=TransactionTypeFilter.include([TransactionType.INCOMING_CLAWBACK_SEND])
1120
1120
  )
1121
1121
  before_txs["sender"][TransactionType.OUTGOING_CLAWBACK] = await wsm_1.tx_store.get_transaction_count_for_wallet(
1122
1122
  1, type_filter=TransactionTypeFilter.include([TransactionType.OUTGOING_CLAWBACK])
@@ -1130,10 +1130,10 @@ class TestWalletSimulator:
1130
1130
  before_txs["sender"][TransactionType.COINBASE_REWARD] = await wsm_1.tx_store.get_transaction_count_for_wallet(
1131
1131
  1, type_filter=TransactionTypeFilter.include([TransactionType.COINBASE_REWARD])
1132
1132
  )
1133
- before_txs["recipient"][TransactionType.INCOMING_CLAWBACK_RECEIVE] = (
1134
- await wsm_2.tx_store.get_transaction_count_for_wallet(
1135
- 1, type_filter=TransactionTypeFilter.include([TransactionType.INCOMING_CLAWBACK_RECEIVE])
1136
- )
1133
+ before_txs["recipient"][
1134
+ TransactionType.INCOMING_CLAWBACK_RECEIVE
1135
+ ] = await wsm_2.tx_store.get_transaction_count_for_wallet(
1136
+ 1, type_filter=TransactionTypeFilter.include([TransactionType.INCOMING_CLAWBACK_RECEIVE])
1137
1137
  )
1138
1138
  # Resync start
1139
1139
  env_1.node._close()
@@ -1159,11 +1159,11 @@ class TestWalletSimulator:
1159
1159
  wsm_1 = env_1.node.wallet_state_manager
1160
1160
  wsm_2 = env_2.node.wallet_state_manager
1161
1161
 
1162
- after_txs: Dict[str, Dict[TransactionType, int]] = {"sender": {}, "recipient": {}}
1163
- after_txs["sender"][TransactionType.INCOMING_CLAWBACK_SEND] = (
1164
- await wsm_1.tx_store.get_transaction_count_for_wallet(
1165
- 1, type_filter=TransactionTypeFilter.include([TransactionType.INCOMING_CLAWBACK_SEND])
1166
- )
1162
+ after_txs: dict[str, dict[TransactionType, int]] = {"sender": {}, "recipient": {}}
1163
+ after_txs["sender"][
1164
+ TransactionType.INCOMING_CLAWBACK_SEND
1165
+ ] = await wsm_1.tx_store.get_transaction_count_for_wallet(
1166
+ 1, type_filter=TransactionTypeFilter.include([TransactionType.INCOMING_CLAWBACK_SEND])
1167
1167
  )
1168
1168
  after_txs["sender"][TransactionType.OUTGOING_CLAWBACK] = await wsm_1.tx_store.get_transaction_count_for_wallet(
1169
1169
  1, type_filter=TransactionTypeFilter.include([TransactionType.OUTGOING_CLAWBACK])
@@ -1177,10 +1177,10 @@ class TestWalletSimulator:
1177
1177
  after_txs["sender"][TransactionType.COINBASE_REWARD] = await wsm_1.tx_store.get_transaction_count_for_wallet(
1178
1178
  1, type_filter=TransactionTypeFilter.include([TransactionType.COINBASE_REWARD])
1179
1179
  )
1180
- after_txs["recipient"][TransactionType.INCOMING_CLAWBACK_RECEIVE] = (
1181
- await wsm_2.tx_store.get_transaction_count_for_wallet(
1182
- 1, type_filter=TransactionTypeFilter.include([TransactionType.INCOMING_CLAWBACK_RECEIVE])
1183
- )
1180
+ after_txs["recipient"][
1181
+ TransactionType.INCOMING_CLAWBACK_RECEIVE
1182
+ ] = await wsm_2.tx_store.get_transaction_count_for_wallet(
1183
+ 1, type_filter=TransactionTypeFilter.include([TransactionType.INCOMING_CLAWBACK_RECEIVE])
1184
1184
  )
1185
1185
  # Check clawback
1186
1186
  clawback_tx_1 = await wsm_1.tx_store.get_transaction_record(clawback_coin_id_1)
@@ -1260,7 +1260,7 @@ class TestWalletSimulator:
1260
1260
  @pytest.mark.anyio
1261
1261
  async def test_wallet_send_to_three_peers(
1262
1262
  self,
1263
- three_sim_two_wallets: Tuple[List[FullNodeSimulator], List[Tuple[WalletNode, ChiaServer]], BlockTools],
1263
+ three_sim_two_wallets: tuple[list[FullNodeSimulator], list[tuple[WalletNode, ChiaServer]], BlockTools],
1264
1264
  trusted: bool,
1265
1265
  self_hostname: str,
1266
1266
  ) -> None:
@@ -1666,7 +1666,7 @@ class TestWalletSimulator:
1666
1666
  async with wallet.wallet_state_manager.new_action_scope(DEFAULT_TX_CONFIG, push=False) as action_scope:
1667
1667
  await wallet.generate_signed_transaction(
1668
1668
  uint64(tx_amount),
1669
- bytes32([0] * 32),
1669
+ bytes32.zeros,
1670
1670
  action_scope,
1671
1671
  uint64(tx_fee),
1672
1672
  )
@@ -2042,7 +2042,7 @@ class TestWalletSimulator:
2042
2042
  coin_list = list(coins)
2043
2043
  await wallet.generate_signed_transaction(
2044
2044
  uint64(AMOUNT_TO_SEND),
2045
- bytes32([0] * 32),
2045
+ bytes32.zeros,
2046
2046
  action_scope,
2047
2047
  uint64(0),
2048
2048
  coins=coins,
@@ -2050,7 +2050,7 @@ class TestWalletSimulator:
2050
2050
  )
2051
2051
  [tx] = action_scope.side_effects.transactions
2052
2052
  assert tx.spend_bundle is not None
2053
- paid_coin = [coin for coin in tx.spend_bundle.additions() if coin.amount == AMOUNT_TO_SEND][0]
2053
+ paid_coin = next(coin for coin in tx.spend_bundle.additions() if coin.amount == AMOUNT_TO_SEND)
2054
2054
  assert paid_coin.parent_coin_info == coin_list[2].name()
2055
2055
  [tx] = await wallet.wallet_state_manager.add_pending_transactions([tx])
2056
2056
 
@@ -2083,7 +2083,7 @@ class TestWalletSimulator:
2083
2083
 
2084
2084
  def test_get_wallet_db_path_v2_r1() -> None:
2085
2085
  root_path: Path = Path("/x/y/z/.chia/mainnet").resolve()
2086
- config: Dict[str, Any] = {
2086
+ config: dict[str, Any] = {
2087
2087
  "database_path": "wallet/db/blockchain_wallet_v2_r1_CHALLENGE_KEY.sqlite",
2088
2088
  "selected_network": "mainnet",
2089
2089
  }
@@ -2095,7 +2095,7 @@ def test_get_wallet_db_path_v2_r1() -> None:
2095
2095
 
2096
2096
  def test_get_wallet_db_path_v2() -> None:
2097
2097
  root_path: Path = Path("/x/y/z/.chia/mainnet").resolve()
2098
- config: Dict[str, Any] = {
2098
+ config: dict[str, Any] = {
2099
2099
  "database_path": "wallet/db/blockchain_wallet_v2_CHALLENGE_KEY.sqlite",
2100
2100
  "selected_network": "mainnet",
2101
2101
  }
@@ -2107,7 +2107,7 @@ def test_get_wallet_db_path_v2() -> None:
2107
2107
 
2108
2108
  def test_get_wallet_db_path_v1() -> None:
2109
2109
  root_path: Path = Path("/x/y/z/.chia/mainnet").resolve()
2110
- config: Dict[str, Any] = {
2110
+ config: dict[str, Any] = {
2111
2111
  "database_path": "wallet/db/blockchain_wallet_v1_CHALLENGE_KEY.sqlite",
2112
2112
  "selected_network": "mainnet",
2113
2113
  }
@@ -2119,7 +2119,7 @@ def test_get_wallet_db_path_v1() -> None:
2119
2119
 
2120
2120
  def test_get_wallet_db_path_testnet() -> None:
2121
2121
  root_path: Path = Path("/x/y/z/.chia/testnet").resolve()
2122
- config: Dict[str, Any] = {
2122
+ config: dict[str, Any] = {
2123
2123
  "database_path": "wallet/db/blockchain_wallet_v2_CHALLENGE_KEY.sqlite",
2124
2124
  "selected_network": "testnet",
2125
2125
  }
@@ -2131,9 +2131,9 @@ def test_get_wallet_db_path_testnet() -> None:
2131
2131
 
2132
2132
  @pytest.mark.anyio
2133
2133
  async def test_wallet_has_no_server(
2134
- simulator_and_wallet: Tuple[List[FullNodeSimulator], List[Tuple[WalletNode, ChiaServer]], BlockTools],
2134
+ simulator_and_wallet: tuple[list[FullNodeSimulator], list[tuple[WalletNode, ChiaServer]], BlockTools],
2135
2135
  ) -> None:
2136
- full_nodes, wallets, bt = simulator_and_wallet
2137
- wallet_node, wallet_server = wallets[0]
2136
+ _full_nodes, wallets, _bt = simulator_and_wallet
2137
+ _wallet_node, wallet_server = wallets[0]
2138
2138
 
2139
2139
  assert wallet_server.webserver is None
@@ -1,7 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  from dataclasses import dataclass
4
- from typing import List, Optional, Tuple
4
+ from typing import Optional
5
5
 
6
6
  import pytest
7
7
  from chia_rs import G2Element
@@ -17,9 +17,9 @@ from chia.wallet.wallet_action_scope import WalletSideEffects
17
17
  from chia.wallet.wallet_spend_bundle import WalletSpendBundle
18
18
  from chia.wallet.wallet_state_manager import WalletStateManager
19
19
 
20
- MOCK_SR = SigningResponse(b"hey", bytes32([0] * 32))
20
+ MOCK_SR = SigningResponse(b"hey", bytes32.zeros)
21
21
  MOCK_SB = WalletSpendBundle([], G2Element())
22
- MOCK_COIN = Coin(bytes32([0] * 32), bytes32([0] * 32), uint64(0))
22
+ MOCK_COIN = Coin(bytes32.zeros, bytes32.zeros, uint64(0))
23
23
 
24
24
 
25
25
  def test_back_and_forth_serialization() -> None:
@@ -36,18 +36,18 @@ def test_back_and_forth_serialization() -> None:
36
36
  @dataclass
37
37
  class MockWalletStateManager:
38
38
  most_recent_call: Optional[
39
- Tuple[List[TransactionRecord], bool, bool, bool, List[SigningResponse], List[WalletSpendBundle]]
39
+ tuple[list[TransactionRecord], bool, bool, bool, list[SigningResponse], list[WalletSpendBundle]]
40
40
  ] = None
41
41
 
42
42
  async def add_pending_transactions(
43
43
  self,
44
- txs: List[TransactionRecord],
44
+ txs: list[TransactionRecord],
45
45
  push: bool,
46
46
  merge_spends: bool,
47
47
  sign: bool,
48
- additional_signing_responses: List[SigningResponse],
49
- extra_spends: List[WalletSpendBundle],
50
- ) -> List[TransactionRecord]:
48
+ additional_signing_responses: list[SigningResponse],
49
+ extra_spends: list[WalletSpendBundle],
50
+ ) -> list[TransactionRecord]:
51
51
  self.most_recent_call = (txs, push, merge_spends, sign, additional_signing_responses, extra_spends)
52
52
  return txs
53
53
 
@@ -1,14 +1,12 @@
1
1
  from __future__ import annotations
2
2
 
3
- from typing import List
4
-
5
3
  import pytest
6
4
 
7
5
  from chia._tests.util.db_connection import DBConnection
8
- from chia._tests.util.misc import add_blocks_in_batches
9
6
  from chia._tests.util.setup_nodes import OldSimulatorsAndWallets
10
7
  from chia.consensus.blockchain import AddBlockResult
11
8
  from chia.protocols import full_node_protocol
9
+ from chia.simulator.add_blocks_in_batches import add_blocks_in_batches
12
10
  from chia.types.blockchain_format.vdf import VDFProof
13
11
  from chia.types.full_block import FullBlock
14
12
  from chia.types.header_block import HeaderBlock
@@ -21,7 +19,7 @@ from chia.wallet.wallet_blockchain import WalletBlockchain
21
19
  @pytest.mark.anyio
22
20
  @pytest.mark.standard_block_tools
23
21
  async def test_wallet_blockchain(
24
- simulator_and_wallet: OldSimulatorsAndWallets, default_1000_blocks: List[FullBlock]
22
+ simulator_and_wallet: OldSimulatorsAndWallets, default_1000_blocks: list[FullBlock]
25
23
  ) -> None:
26
24
  [full_node_api], [(wallet_node, _)], bt = simulator_and_wallet
27
25
 
@@ -75,9 +73,9 @@ async def test_wallet_blockchain(
75
73
  assert peak_block is not None
76
74
  assert peak_block.height == 505
77
75
 
78
- header_blocks: List[HeaderBlock] = []
76
+ header_blocks: list[HeaderBlock] = []
79
77
  for block in default_1000_blocks:
80
- header_block = get_block_header(block, [], [])
78
+ header_block = get_block_header(block)
81
79
  header_blocks.append(header_block)
82
80
 
83
81
  res, err = await chain.add_block(header_blocks[50])
@@ -2,7 +2,7 @@ from __future__ import annotations
2
2
 
3
3
  import random
4
4
  from dataclasses import dataclass, field, replace
5
- from typing import Dict, List, Optional, Tuple
5
+ from typing import Optional
6
6
 
7
7
  import pytest
8
8
 
@@ -118,7 +118,7 @@ def get_dummy_record(wallet_id: int, seeded_random: random.Random) -> WalletCoin
118
118
  @dataclass
119
119
  class DummyWalletCoinRecords:
120
120
  seeded_random: random.Random
121
- records_per_wallet: Dict[int, List[WalletCoinRecord]] = field(default_factory=dict)
121
+ records_per_wallet: dict[int, list[WalletCoinRecord]] = field(default_factory=dict)
122
122
 
123
123
  def generate(self, wallet_id: int, count: int) -> None:
124
124
  records = self.records_per_wallet.setdefault(wallet_id, [])
@@ -367,7 +367,7 @@ async def test_delete_coin_record() -> None:
367
367
  ).records == [record_2, record_3, record_4, record_5, record_6, record_7]
368
368
 
369
369
 
370
- get_coin_records_offset_limit_tests: List[Tuple[GetCoinRecords, List[WalletCoinRecord]]] = [
370
+ get_coin_records_offset_limit_tests: list[tuple[GetCoinRecords, list[WalletCoinRecord]]] = [
371
371
  (GetCoinRecords(offset=uint32(0), limit=uint32(0)), []),
372
372
  (GetCoinRecords(offset=uint32(10), limit=uint32(0)), []),
373
373
  (GetCoinRecords(offset=uint32(0), limit=uint32(1)), [record_8]),
@@ -379,7 +379,7 @@ get_coin_records_offset_limit_tests: List[Tuple[GetCoinRecords, List[WalletCoinR
379
379
  (GetCoinRecords(coin_type=uint8(CoinType.CLAWBACK), offset=uint32(5), limit=uint32(1)), []),
380
380
  ]
381
381
 
382
- get_coin_records_wallet_id_tests: List[Tuple[GetCoinRecords, List[WalletCoinRecord]]] = [
382
+ get_coin_records_wallet_id_tests: list[tuple[GetCoinRecords, list[WalletCoinRecord]]] = [
383
383
  (
384
384
  GetCoinRecords(),
385
385
  [record_8, record_9, record_1, record_2, record_3, record_4, record_5, record_6, record_7],
@@ -389,13 +389,13 @@ get_coin_records_wallet_id_tests: List[Tuple[GetCoinRecords, List[WalletCoinReco
389
389
  (GetCoinRecords(wallet_id=uint32(2)), [record_9, record_6, record_7]),
390
390
  ]
391
391
 
392
- get_coin_records_wallet_type_tests: List[Tuple[GetCoinRecords, List[WalletCoinRecord]]] = [
392
+ get_coin_records_wallet_type_tests: list[tuple[GetCoinRecords, list[WalletCoinRecord]]] = [
393
393
  (GetCoinRecords(wallet_id=uint32(2), wallet_type=uint8(WalletType.STANDARD_WALLET)), [record_9, record_6]),
394
394
  (GetCoinRecords(wallet_type=uint8(WalletType.POOLING_WALLET)), [record_7]),
395
395
  (GetCoinRecords(wallet_type=uint8(WalletType.NFT)), []),
396
396
  ]
397
397
 
398
- get_coin_records_coin_type_tests: List[Tuple[GetCoinRecords, List[WalletCoinRecord]]] = [
398
+ get_coin_records_coin_type_tests: list[tuple[GetCoinRecords, list[WalletCoinRecord]]] = [
399
399
  (GetCoinRecords(wallet_id=uint32(0), coin_type=uint8(CoinType.NORMAL)), [record_1, record_2, record_3, record_4]),
400
400
  (GetCoinRecords(wallet_id=uint32(0), coin_type=uint8(CoinType.CLAWBACK)), []),
401
401
  (GetCoinRecords(wallet_id=uint32(1), coin_type=uint8(CoinType.NORMAL)), [record_5]),
@@ -403,7 +403,7 @@ get_coin_records_coin_type_tests: List[Tuple[GetCoinRecords, List[WalletCoinReco
403
403
  (GetCoinRecords(coin_type=uint8(CoinType.CLAWBACK)), [record_8, record_9]),
404
404
  ]
405
405
 
406
- get_coin_records_coin_id_filter_tests: List[Tuple[GetCoinRecords, List[WalletCoinRecord]]] = [
406
+ get_coin_records_coin_id_filter_tests: list[tuple[GetCoinRecords, list[WalletCoinRecord]]] = [
407
407
  (GetCoinRecords(coin_id_filter=HashFilter.include([])), []),
408
408
  (GetCoinRecords(coin_id_filter=HashFilter.include([coin_1.name(), coin_4.name()])), [record_1, record_4]),
409
409
  (GetCoinRecords(coin_id_filter=HashFilter.include([coin_1.name(), coin_4.puzzle_hash])), [record_1]),
@@ -416,7 +416,7 @@ get_coin_records_coin_id_filter_tests: List[Tuple[GetCoinRecords, List[WalletCoi
416
416
  ]
417
417
 
418
418
 
419
- get_coin_records_puzzle_hash_filter_tests: List[Tuple[GetCoinRecords, List[WalletCoinRecord]]] = [
419
+ get_coin_records_puzzle_hash_filter_tests: list[tuple[GetCoinRecords, list[WalletCoinRecord]]] = [
420
420
  (GetCoinRecords(puzzle_hash_filter=HashFilter.include([])), []),
421
421
  (
422
422
  GetCoinRecords(puzzle_hash_filter=HashFilter.include([coin_1.puzzle_hash, coin_4.puzzle_hash])),
@@ -439,7 +439,7 @@ get_coin_records_puzzle_hash_filter_tests: List[Tuple[GetCoinRecords, List[Walle
439
439
  ),
440
440
  ]
441
441
 
442
- get_coin_records_parent_coin_id_filter_tests: List[Tuple[GetCoinRecords, List[WalletCoinRecord]]] = [
442
+ get_coin_records_parent_coin_id_filter_tests: list[tuple[GetCoinRecords, list[WalletCoinRecord]]] = [
443
443
  (GetCoinRecords(parent_coin_id_filter=HashFilter.include([])), []),
444
444
  (
445
445
  GetCoinRecords(parent_coin_id_filter=HashFilter.include([coin_5.name(), coin_4.parent_coin_info])),
@@ -463,7 +463,7 @@ get_coin_records_parent_coin_id_filter_tests: List[Tuple[GetCoinRecords, List[Wa
463
463
  ),
464
464
  ]
465
465
 
466
- get_coin_records_amount_filter_tests: List[Tuple[GetCoinRecords, List[WalletCoinRecord]]] = [
466
+ get_coin_records_amount_filter_tests: list[tuple[GetCoinRecords, list[WalletCoinRecord]]] = [
467
467
  (GetCoinRecords(amount_filter=AmountFilter.include([])), []),
468
468
  (
469
469
  GetCoinRecords(amount_filter=AmountFilter.include([uint64(12312)])),
@@ -491,7 +491,7 @@ get_coin_records_amount_filter_tests: List[Tuple[GetCoinRecords, List[WalletCoin
491
491
  ),
492
492
  ]
493
493
 
494
- get_coin_records_amount_range_tests: List[Tuple[GetCoinRecords, List[WalletCoinRecord]]] = [
494
+ get_coin_records_amount_range_tests: list[tuple[GetCoinRecords, list[WalletCoinRecord]]] = [
495
495
  (GetCoinRecords(amount_range=UInt64Range(start=uint64(1000000))), []),
496
496
  (GetCoinRecords(amount_range=UInt64Range(stop=uint64(0))), []),
497
497
  (
@@ -504,7 +504,7 @@ get_coin_records_amount_range_tests: List[Tuple[GetCoinRecords, List[WalletCoinR
504
504
  (GetCoinRecords(amount_range=UInt64Range(start=uint64(5), stop=uint64(12311))), [record_2]),
505
505
  ]
506
506
 
507
- get_coin_records_confirmed_range_tests: List[Tuple[GetCoinRecords, List[WalletCoinRecord]]] = [
507
+ get_coin_records_confirmed_range_tests: list[tuple[GetCoinRecords, list[WalletCoinRecord]]] = [
508
508
  (GetCoinRecords(confirmed_range=UInt32Range(start=uint32(20))), []),
509
509
  (GetCoinRecords(confirmed_range=UInt32Range(stop=uint32(0))), []),
510
510
  (GetCoinRecords(confirmed_range=UInt32Range(start=uint32(2), stop=uint32(1))), []),
@@ -521,7 +521,7 @@ get_coin_records_confirmed_range_tests: List[Tuple[GetCoinRecords, List[WalletCo
521
521
  ),
522
522
  ]
523
523
 
524
- get_coin_records_spent_range_tests: List[Tuple[GetCoinRecords, List[WalletCoinRecord]]] = [
524
+ get_coin_records_spent_range_tests: list[tuple[GetCoinRecords, list[WalletCoinRecord]]] = [
525
525
  (GetCoinRecords(spent_range=UInt32Range(start=uint32(20))), []),
526
526
  (GetCoinRecords(spent_range=UInt32Range(stop=uint32(0))), [record_8, record_1, record_2, record_5, record_7]),
527
527
  (GetCoinRecords(spent_range=UInt32Range(start=uint32(2), stop=uint32(1))), []),
@@ -530,7 +530,7 @@ get_coin_records_spent_range_tests: List[Tuple[GetCoinRecords, List[WalletCoinRe
530
530
  (GetCoinRecords(spent_range=UInt32Range(start=uint32(5), stop=uint32(15))), [record_3, record_4, record_6]),
531
531
  ]
532
532
 
533
- get_coin_records_order_tests: List[Tuple[GetCoinRecords, List[WalletCoinRecord]]] = [
533
+ get_coin_records_order_tests: list[tuple[GetCoinRecords, list[WalletCoinRecord]]] = [
534
534
  (
535
535
  GetCoinRecords(wallet_id=uint32(0), order=uint8(CoinRecordOrder.spent_height)),
536
536
  [record_1, record_2, record_3, record_4],
@@ -544,7 +544,7 @@ get_coin_records_order_tests: List[Tuple[GetCoinRecords, List[WalletCoinRecord]]
544
544
  ),
545
545
  ]
546
546
 
547
- get_coin_records_reverse_tests: List[Tuple[GetCoinRecords, List[WalletCoinRecord]]] = [
547
+ get_coin_records_reverse_tests: list[tuple[GetCoinRecords, list[WalletCoinRecord]]] = [
548
548
  (
549
549
  GetCoinRecords(wallet_id=uint32(0), order=uint8(CoinRecordOrder.spent_height), reverse=True),
550
550
  [record_4, record_3, record_1, record_2],
@@ -567,7 +567,7 @@ get_coin_records_reverse_tests: List[Tuple[GetCoinRecords, List[WalletCoinRecord
567
567
  ),
568
568
  ]
569
569
 
570
- get_coin_records_include_total_count_tests: List[Tuple[GetCoinRecords, int, List[WalletCoinRecord]]] = [
570
+ get_coin_records_include_total_count_tests: list[tuple[GetCoinRecords, int, list[WalletCoinRecord]]] = [
571
571
  (GetCoinRecords(wallet_id=uint32(0), include_total_count=True), 4, [record_1, record_2, record_3, record_4]),
572
572
  (
573
573
  GetCoinRecords(wallet_id=uint32(0), offset=uint32(1), limit=uint32(2), include_total_count=True),
@@ -579,7 +579,7 @@ get_coin_records_include_total_count_tests: List[Tuple[GetCoinRecords, int, List
579
579
  (GetCoinRecords(wallet_type=uint8(WalletType.POOLING_WALLET), include_total_count=True), 1, [record_7]),
580
580
  ]
581
581
 
582
- get_coin_records_mixed_tests: List[Tuple[GetCoinRecords, int, List[WalletCoinRecord]]] = [
582
+ get_coin_records_mixed_tests: list[tuple[GetCoinRecords, int, list[WalletCoinRecord]]] = [
583
583
  (
584
584
  GetCoinRecords(
585
585
  offset=uint32(2),
@@ -632,7 +632,7 @@ get_coin_records_mixed_tests: List[Tuple[GetCoinRecords, int, List[WalletCoinRec
632
632
 
633
633
 
634
634
  async def run_get_coin_records_test(
635
- request: GetCoinRecords, total_count: Optional[int], coin_records: List[WalletCoinRecord]
635
+ request: GetCoinRecords, total_count: Optional[int], coin_records: list[WalletCoinRecord]
636
636
  ) -> None:
637
637
  async with DBConnection(1) as db_wrapper:
638
638
  store = await WalletCoinStore.create(db_wrapper)
@@ -665,38 +665,38 @@ async def run_get_coin_records_test(
665
665
 
666
666
  @pytest.mark.parametrize("coins_request, records", [*get_coin_records_offset_limit_tests])
667
667
  @pytest.mark.anyio
668
- async def test_get_coin_records_offset_limit(coins_request: GetCoinRecords, records: List[WalletCoinRecord]) -> None:
668
+ async def test_get_coin_records_offset_limit(coins_request: GetCoinRecords, records: list[WalletCoinRecord]) -> None:
669
669
  await run_get_coin_records_test(coins_request, None, records)
670
670
 
671
671
 
672
672
  @pytest.mark.parametrize("coins_request, records", [*get_coin_records_wallet_id_tests])
673
673
  @pytest.mark.anyio
674
- async def test_get_coin_records_wallet_id(coins_request: GetCoinRecords, records: List[WalletCoinRecord]) -> None:
674
+ async def test_get_coin_records_wallet_id(coins_request: GetCoinRecords, records: list[WalletCoinRecord]) -> None:
675
675
  await run_get_coin_records_test(coins_request, None, records)
676
676
 
677
677
 
678
678
  @pytest.mark.parametrize("coins_request, records", [*get_coin_records_wallet_type_tests])
679
679
  @pytest.mark.anyio
680
- async def test_get_coin_records_wallet_type(coins_request: GetCoinRecords, records: List[WalletCoinRecord]) -> None:
680
+ async def test_get_coin_records_wallet_type(coins_request: GetCoinRecords, records: list[WalletCoinRecord]) -> None:
681
681
  await run_get_coin_records_test(coins_request, None, records)
682
682
 
683
683
 
684
684
  @pytest.mark.parametrize("coins_request, records", [*get_coin_records_coin_type_tests])
685
685
  @pytest.mark.anyio
686
- async def test_get_coin_records_coin_type(coins_request: GetCoinRecords, records: List[WalletCoinRecord]) -> None:
686
+ async def test_get_coin_records_coin_type(coins_request: GetCoinRecords, records: list[WalletCoinRecord]) -> None:
687
687
  await run_get_coin_records_test(coins_request, None, records)
688
688
 
689
689
 
690
690
  @pytest.mark.parametrize("coins_request, records", [*get_coin_records_coin_id_filter_tests])
691
691
  @pytest.mark.anyio
692
- async def test_get_coin_records_coin_id_filter(coins_request: GetCoinRecords, records: List[WalletCoinRecord]) -> None:
692
+ async def test_get_coin_records_coin_id_filter(coins_request: GetCoinRecords, records: list[WalletCoinRecord]) -> None:
693
693
  await run_get_coin_records_test(coins_request, None, records)
694
694
 
695
695
 
696
696
  @pytest.mark.parametrize("coins_request, records", [*get_coin_records_puzzle_hash_filter_tests])
697
697
  @pytest.mark.anyio
698
698
  async def test_get_coin_records_puzzle_hash_filter(
699
- coins_request: GetCoinRecords, records: List[WalletCoinRecord]
699
+ coins_request: GetCoinRecords, records: list[WalletCoinRecord]
700
700
  ) -> None:
701
701
  await run_get_coin_records_test(coins_request, None, records)
702
702
 
@@ -704,51 +704,51 @@ async def test_get_coin_records_puzzle_hash_filter(
704
704
  @pytest.mark.parametrize("coins_request, records", [*get_coin_records_parent_coin_id_filter_tests])
705
705
  @pytest.mark.anyio
706
706
  async def test_get_coin_records_parent_coin_id_filter(
707
- coins_request: GetCoinRecords, records: List[WalletCoinRecord]
707
+ coins_request: GetCoinRecords, records: list[WalletCoinRecord]
708
708
  ) -> None:
709
709
  await run_get_coin_records_test(coins_request, None, records)
710
710
 
711
711
 
712
712
  @pytest.mark.parametrize("coins_request, records", [*get_coin_records_amount_filter_tests])
713
713
  @pytest.mark.anyio
714
- async def test_get_coin_records_amount_filter(coins_request: GetCoinRecords, records: List[WalletCoinRecord]) -> None:
714
+ async def test_get_coin_records_amount_filter(coins_request: GetCoinRecords, records: list[WalletCoinRecord]) -> None:
715
715
  await run_get_coin_records_test(coins_request, None, records)
716
716
 
717
717
 
718
718
  @pytest.mark.parametrize("coins_request, records", [*get_coin_records_confirmed_range_tests])
719
719
  @pytest.mark.anyio
720
- async def test_get_coin_records_confirmed_range(coins_request: GetCoinRecords, records: List[WalletCoinRecord]) -> None:
720
+ async def test_get_coin_records_confirmed_range(coins_request: GetCoinRecords, records: list[WalletCoinRecord]) -> None:
721
721
  await run_get_coin_records_test(coins_request, None, records)
722
722
 
723
723
 
724
724
  @pytest.mark.parametrize("coins_request, records", [*get_coin_records_spent_range_tests])
725
725
  @pytest.mark.anyio
726
- async def test_get_coin_records_spent_range(coins_request: GetCoinRecords, records: List[WalletCoinRecord]) -> None:
726
+ async def test_get_coin_records_spent_range(coins_request: GetCoinRecords, records: list[WalletCoinRecord]) -> None:
727
727
  await run_get_coin_records_test(coins_request, None, records)
728
728
 
729
729
 
730
730
  @pytest.mark.parametrize("coins_request, records", [*get_coin_records_amount_range_tests])
731
731
  @pytest.mark.anyio
732
- async def test_get_coin_records_amount_range(coins_request: GetCoinRecords, records: List[WalletCoinRecord]) -> None:
732
+ async def test_get_coin_records_amount_range(coins_request: GetCoinRecords, records: list[WalletCoinRecord]) -> None:
733
733
  await run_get_coin_records_test(coins_request, None, records)
734
734
 
735
735
 
736
736
  @pytest.mark.parametrize("coins_request, records", [*get_coin_records_order_tests])
737
737
  @pytest.mark.anyio
738
- async def test_get_coin_records_order(coins_request: GetCoinRecords, records: List[WalletCoinRecord]) -> None:
738
+ async def test_get_coin_records_order(coins_request: GetCoinRecords, records: list[WalletCoinRecord]) -> None:
739
739
  await run_get_coin_records_test(coins_request, None, records)
740
740
 
741
741
 
742
742
  @pytest.mark.parametrize("coins_request, records", [*get_coin_records_reverse_tests])
743
743
  @pytest.mark.anyio
744
- async def test_get_coin_records_reverse(coins_request: GetCoinRecords, records: List[WalletCoinRecord]) -> None:
744
+ async def test_get_coin_records_reverse(coins_request: GetCoinRecords, records: list[WalletCoinRecord]) -> None:
745
745
  await run_get_coin_records_test(coins_request, None, records)
746
746
 
747
747
 
748
748
  @pytest.mark.parametrize("coins_request, total_count, records", [*get_coin_records_include_total_count_tests])
749
749
  @pytest.mark.anyio
750
750
  async def test_get_coin_records_total_count(
751
- coins_request: GetCoinRecords, total_count: int, records: List[WalletCoinRecord]
751
+ coins_request: GetCoinRecords, total_count: int, records: list[WalletCoinRecord]
752
752
  ) -> None:
753
753
  await run_get_coin_records_test(coins_request, total_count, records)
754
754
 
@@ -756,7 +756,7 @@ async def test_get_coin_records_total_count(
756
756
  @pytest.mark.parametrize("coins_request, total_count, records", [*get_coin_records_mixed_tests])
757
757
  @pytest.mark.anyio
758
758
  async def test_get_coin_records_mixed(
759
- coins_request: GetCoinRecords, total_count: int, records: List[WalletCoinRecord]
759
+ coins_request: GetCoinRecords, total_count: int, records: list[WalletCoinRecord]
760
760
  ) -> None:
761
761
  await run_get_coin_records_test(coins_request, total_count, records)
762
762
 
@@ -787,7 +787,7 @@ async def test_get_coin_records_total_count_cache() -> None:
787
787
  assert (await store.get_coin_records(include_total_count=True)).total_count == 3
788
788
  # Make sure the total count increases for the same query when rolling back
789
789
  assert (await store.get_coin_records(include_total_count=True)).total_count == 3
790
- await store.rollback_to_block(0),
790
+ await store.rollback_to_block(0)
791
791
  assert (await store.get_coin_records(include_total_count=True)).total_count == 0
792
792
 
793
793