chia-blockchain 2.5.0rc2__py3-none-any.whl → 2.5.1rc2__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.0rc2.dist-info → chia_blockchain-2.5.1rc2.dist-info}/LICENSE +1 -1
  629. {chia_blockchain-2.5.0rc2.dist-info → chia_blockchain-2.5.1rc2.dist-info}/METADATA +67 -72
  630. chia_blockchain-2.5.1rc2.dist-info/RECORD +1042 -0
  631. {chia_blockchain-2.5.0rc2.dist-info → chia_blockchain-2.5.1rc2.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.0rc2.dist-info/RECORD +0 -1028
  637. {chia_blockchain-2.5.0rc2.dist-info → chia_blockchain-2.5.1rc2.dist-info}/entry_points.txt +0 -0
@@ -11,11 +11,12 @@ import random
11
11
  import sqlite3
12
12
  import sys
13
13
  import time
14
+ from collections.abc import AsyncIterator
14
15
  from copy import deepcopy
15
16
  from dataclasses import dataclass
16
17
  from enum import IntEnum
17
18
  from pathlib import Path
18
- from typing import Any, AsyncIterator, Dict, List, Optional, Set, Tuple, cast
19
+ from typing import Any, Optional, cast
19
20
 
20
21
  import anyio
21
22
  import pytest
@@ -66,6 +67,7 @@ from chia.util.config import save_config
66
67
  from chia.util.hash import std_hash
67
68
  from chia.util.ints import uint8, uint16, uint32, uint64
68
69
  from chia.util.keychain import bytes_to_mnemonic
70
+ from chia.util.task_referencer import create_referenced_task
69
71
  from chia.util.timing import adjusted_timeout, backoff_times
70
72
  from chia.wallet.trading.offer import Offer as TradingOffer
71
73
  from chia.wallet.transaction_record import TransactionRecord
@@ -73,10 +75,10 @@ from chia.wallet.wallet import Wallet
73
75
  from chia.wallet.wallet_node import WalletNode
74
76
 
75
77
  pytestmark = pytest.mark.data_layer
76
- nodes = Tuple[WalletNode, FullNodeSimulator]
77
- nodes_with_port_bt_ph = Tuple[WalletRpcApi, FullNodeSimulator, uint16, bytes32, BlockTools]
78
- wallet_and_port_tuple = Tuple[WalletNode, uint16]
79
- two_wallets_with_port = Tuple[Tuple[wallet_and_port_tuple, wallet_and_port_tuple], FullNodeSimulator, BlockTools]
78
+ nodes = tuple[WalletNode, FullNodeSimulator]
79
+ nodes_with_port_bt_ph = tuple[WalletRpcApi, FullNodeSimulator, uint16, bytes32, BlockTools]
80
+ wallet_and_port_tuple = tuple[WalletNode, uint16]
81
+ two_wallets_with_port = tuple[tuple[wallet_and_port_tuple, wallet_and_port_tuple], FullNodeSimulator, BlockTools]
80
82
 
81
83
 
82
84
  class InterfaceLayer(enum.Enum):
@@ -261,7 +263,7 @@ async def test_create_insert_get(
261
263
  data_rpc_api = DataLayerRpcApi(data_layer)
262
264
  key = b"a"
263
265
  value = b"\x00\x01"
264
- changelist: List[Dict[str, str]] = [{"action": "insert", "key": key.hex(), "value": value.hex()}]
266
+ changelist: list[dict[str, str]] = [{"action": "insert", "key": key.hex(), "value": value.hex()}]
265
267
  res = await data_rpc_api.create_data_store({})
266
268
  assert res is not None
267
269
  store_id = bytes32.from_hexstr(res["id"])
@@ -319,7 +321,7 @@ async def test_create_insert_get(
319
321
  await data_rpc_api.get_value({"id": store_id.hex(), "key": key.hex()})
320
322
  wallet_root = await data_rpc_api.get_root({"id": store_id.hex()})
321
323
  local_root = await data_rpc_api.get_local_root({"id": store_id.hex()})
322
- assert wallet_root["hash"] == bytes32([0] * 32)
324
+ assert wallet_root["hash"] == bytes32.zeros
323
325
  assert local_root["hash"] is None
324
326
 
325
327
  # test empty changelist
@@ -340,7 +342,7 @@ async def test_upsert(
340
342
  data_rpc_api = DataLayerRpcApi(data_layer)
341
343
  key = b"a"
342
344
  value = b"\x00\x01"
343
- changelist: List[Dict[str, str]] = [
345
+ changelist: list[dict[str, str]] = [
344
346
  {"action": "delete", "key": key.hex()},
345
347
  {"action": "insert", "key": key.hex(), "value": value.hex()},
346
348
  ]
@@ -373,7 +375,7 @@ async def test_create_double_insert(
373
375
  await farm_block_check_singleton(data_layer, full_node_api, ph, store_id, wallet=wallet_rpc_api.service)
374
376
  key1 = b"a"
375
377
  value1 = b"\x01\x02"
376
- changelist: List[Dict[str, str]] = [{"action": "insert", "key": key1.hex(), "value": value1.hex()}]
378
+ changelist: list[dict[str, str]] = [{"action": "insert", "key": key1.hex(), "value": value1.hex()}]
377
379
  res = await data_rpc_api.batch_update({"id": store_id.hex(), "changelist": changelist})
378
380
  update_tx_rec0 = res["tx_id"]
379
381
  await farm_block_with_spend(full_node_api, ph, update_tx_rec0, wallet_rpc_api)
@@ -411,7 +413,7 @@ async def test_keys_values_ancestors(
411
413
  await farm_block_check_singleton(data_layer, full_node_api, ph, store_id, wallet=wallet_rpc_api.service)
412
414
  key1 = b"a"
413
415
  value1 = b"\x01\x02"
414
- changelist: List[Dict[str, str]] = [{"action": "insert", "key": key1.hex(), "value": value1.hex()}]
416
+ changelist: list[dict[str, str]] = [{"action": "insert", "key": key1.hex(), "value": value1.hex()}]
415
417
  key2 = b"b"
416
418
  value2 = b"\x03\x02"
417
419
  changelist.append({"action": "insert", "key": key2.hex(), "value": value2.hex()})
@@ -492,7 +494,7 @@ async def test_get_roots(
492
494
 
493
495
  key1 = b"a"
494
496
  value1 = b"\x01\x02"
495
- changelist: List[Dict[str, str]] = [{"action": "insert", "key": key1.hex(), "value": value1.hex()}]
497
+ changelist: list[dict[str, str]] = [{"action": "insert", "key": key1.hex(), "value": value1.hex()}]
496
498
  key2 = b"b"
497
499
  value2 = b"\x03\x02"
498
500
  changelist.append({"action": "insert", "key": key2.hex(), "value": value2.hex()})
@@ -504,7 +506,7 @@ async def test_get_roots(
504
506
  await farm_block_with_spend(full_node_api, ph, update_tx_rec0, wallet_rpc_api)
505
507
  roots = await data_rpc_api.get_roots({"ids": [store_id1.hex(), store_id2.hex()]})
506
508
  assert roots["root_hashes"][1]["id"] == store_id2
507
- assert roots["root_hashes"][1]["hash"] == bytes32([0] * 32)
509
+ assert roots["root_hashes"][1]["hash"] == bytes32.zeros
508
510
  assert roots["root_hashes"][1]["confirmed"] is True
509
511
  assert roots["root_hashes"][1]["timestamp"] > 0
510
512
  key4 = b"d"
@@ -519,7 +521,7 @@ async def test_get_roots(
519
521
  roots = await data_rpc_api.get_roots({"ids": [store_id1.hex(), store_id2.hex()]})
520
522
  assert roots["root_hashes"][1]["id"] == store_id2
521
523
  assert roots["root_hashes"][1]["hash"] is not None
522
- assert roots["root_hashes"][1]["hash"] != bytes32([0] * 32)
524
+ assert roots["root_hashes"][1]["hash"] != bytes32.zeros
523
525
  assert roots["root_hashes"][1]["confirmed"] is True
524
526
  assert roots["root_hashes"][1]["timestamp"] > 0
525
527
 
@@ -539,7 +541,7 @@ async def test_get_root_history(
539
541
  await farm_block_check_singleton(data_layer, full_node_api, ph, store_id1, wallet=wallet_rpc_api.service)
540
542
  key1 = b"a"
541
543
  value1 = b"\x01\x02"
542
- changelist: List[Dict[str, str]] = [{"action": "insert", "key": key1.hex(), "value": value1.hex()}]
544
+ changelist: list[dict[str, str]] = [{"action": "insert", "key": key1.hex(), "value": value1.hex()}]
543
545
  key2 = b"b"
544
546
  value2 = b"\x03\x02"
545
547
  changelist.append({"action": "insert", "key": key2.hex(), "value": value2.hex()})
@@ -551,10 +553,10 @@ async def test_get_root_history(
551
553
  await farm_block_with_spend(full_node_api, ph, update_tx_rec0, wallet_rpc_api)
552
554
  history1 = await data_rpc_api.get_root_history({"id": store_id1.hex()})
553
555
  assert len(history1["root_history"]) == 2
554
- assert history1["root_history"][0]["root_hash"] == bytes32([0] * 32)
556
+ assert history1["root_history"][0]["root_hash"] == bytes32.zeros
555
557
  assert history1["root_history"][0]["confirmed"] is True
556
558
  assert history1["root_history"][0]["timestamp"] > 0
557
- assert history1["root_history"][1]["root_hash"] != bytes32([0] * 32)
559
+ assert history1["root_history"][1]["root_hash"] != bytes32.zeros
558
560
  assert history1["root_history"][1]["confirmed"] is True
559
561
  assert history1["root_history"][1]["timestamp"] > 0
560
562
  key4 = b"d"
@@ -568,7 +570,7 @@ async def test_get_root_history(
568
570
  await farm_block_with_spend(full_node_api, ph, update_tx_rec1, wallet_rpc_api)
569
571
  history2 = await data_rpc_api.get_root_history({"id": store_id1.hex()})
570
572
  assert len(history2["root_history"]) == 3
571
- assert history2["root_history"][0]["root_hash"] == bytes32([0] * 32)
573
+ assert history2["root_history"][0]["root_hash"] == bytes32.zeros
572
574
  assert history2["root_history"][0]["confirmed"] is True
573
575
  assert history2["root_history"][0]["timestamp"] > 0
574
576
  assert history2["root_history"][1]["root_hash"] == history1["root_history"][1]["root_hash"]
@@ -593,7 +595,7 @@ async def test_get_kv_diff(
593
595
  await farm_block_check_singleton(data_layer, full_node_api, ph, store_id1, wallet=wallet_rpc_api.service)
594
596
  key1 = b"a"
595
597
  value1 = b"\x01\x02"
596
- changelist: List[Dict[str, str]] = [{"action": "insert", "key": key1.hex(), "value": value1.hex()}]
598
+ changelist: list[dict[str, str]] = [{"action": "insert", "key": key1.hex(), "value": value1.hex()}]
597
599
  key2 = b"b"
598
600
  value2 = b"\x03\x02"
599
601
  changelist.append({"action": "insert", "key": key2.hex(), "value": value2.hex()})
@@ -607,7 +609,7 @@ async def test_get_kv_diff(
607
609
  diff_res = await data_rpc_api.get_kv_diff(
608
610
  {
609
611
  "id": store_id1.hex(),
610
- "hash_1": bytes32([0] * 32).hex(),
612
+ "hash_1": bytes32.zeros.hex(),
611
613
  "hash_2": history["root_history"][1]["root_hash"].hex(),
612
614
  }
613
615
  )
@@ -661,7 +663,7 @@ async def test_batch_update_matches_single_operations(
661
663
 
662
664
  key = b"a"
663
665
  value = b"\x00\x01"
664
- changelist: List[Dict[str, str]] = [{"action": "insert", "key": key.hex(), "value": value.hex()}]
666
+ changelist: list[dict[str, str]] = [{"action": "insert", "key": key.hex(), "value": value.hex()}]
665
667
  res = await data_rpc_api.batch_update({"id": store_id.hex(), "changelist": changelist})
666
668
  update_tx_rec0 = res["tx_id"]
667
669
  await farm_block_with_spend(full_node_api, ph, update_tx_rec0, wallet_rpc_api)
@@ -687,7 +689,7 @@ async def test_batch_update_matches_single_operations(
687
689
 
688
690
  root_1 = await data_rpc_api.get_roots({"ids": [store_id.hex()]})
689
691
  expected_res_hash = root_1["root_hashes"][0]["hash"]
690
- assert expected_res_hash != bytes32([0] * 32)
692
+ assert expected_res_hash != bytes32.zeros
691
693
 
692
694
  changelist = [{"action": "delete", "key": key_2.hex()}]
693
695
  res = await data_rpc_api.batch_update({"id": store_id.hex(), "changelist": changelist})
@@ -701,7 +703,7 @@ async def test_batch_update_matches_single_operations(
701
703
 
702
704
  root_2 = await data_rpc_api.get_roots({"ids": [store_id.hex()]})
703
705
  hash_2 = root_2["root_hashes"][0]["hash"]
704
- assert hash_2 == bytes32([0] * 32)
706
+ assert hash_2 == bytes32.zeros
705
707
 
706
708
  changelist = [{"action": "insert", "key": key.hex(), "value": value.hex()}]
707
709
  changelist.append({"action": "insert", "key": key_2.hex(), "value": value_2.hex()})
@@ -824,7 +826,7 @@ async def offer_setup_fixture(
824
826
  [full_node_service], wallet_services, bt = two_wallet_nodes_services
825
827
  enable_batch_autoinsertion_settings = getattr(request, "param", (True, True))
826
828
  full_node_api = full_node_service._api
827
- wallets: List[Wallet] = []
829
+ wallets: list[Wallet] = []
828
830
  for wallet_service in wallet_services:
829
831
  wallet_node = wallet_service._node
830
832
  assert wallet_node.server is not None
@@ -836,7 +838,7 @@ async def offer_setup_fixture(
836
838
  await full_node_api.farm_blocks_to_wallet(count=1, wallet=wallet, timeout=60)
837
839
 
838
840
  async with contextlib.AsyncExitStack() as exit_stack:
839
- store_setups: List[StoreSetup] = []
841
+ store_setups: list[StoreSetup] = []
840
842
  for enable_batch_autoinsert, wallet_service in zip(enable_batch_autoinsertion_settings, wallet_services):
841
843
  assert wallet_service.rpc_server is not None
842
844
  port = wallet_service.rpc_server.listen_port
@@ -866,7 +868,7 @@ async def offer_setup_fixture(
866
868
  StoreSetup(
867
869
  api=data_rpc_api,
868
870
  id=bytes32.from_hexstr(create_response["id"]),
869
- original_hash=bytes32([0] * 32),
871
+ original_hash=bytes32.zeros,
870
872
  data_layer=data_layer,
871
873
  data_rpc_client=data_rpc_client,
872
874
  )
@@ -928,7 +930,7 @@ async def offer_setup_fixture(
928
930
 
929
931
  async def populate_offer_setup(offer_setup: OfferSetup, count: int) -> OfferSetup:
930
932
  if count > 0:
931
- setups: Tuple[Tuple[StoreSetup, bytes], Tuple[StoreSetup, bytes]] = (
933
+ setups: tuple[tuple[StoreSetup, bytes], tuple[StoreSetup, bytes]] = (
932
934
  (offer_setup.maker, b"\x01"),
933
935
  (offer_setup.taker, b"\x02"),
934
936
  )
@@ -1014,11 +1016,11 @@ async def process_for_data_layer_keys(
1014
1016
  @dataclass(frozen=True)
1015
1017
  class MakeAndTakeReference:
1016
1018
  entries_to_insert: int
1017
- make_offer_response: Dict[str, Any]
1018
- maker_inclusions: List[Dict[str, Any]]
1019
- maker_root_history: List[bytes32]
1020
- taker_inclusions: List[Dict[str, Any]]
1021
- taker_root_history: List[bytes32]
1019
+ make_offer_response: dict[str, Any]
1020
+ maker_inclusions: list[dict[str, Any]]
1021
+ maker_root_history: list[bytes32]
1022
+ taker_inclusions: list[dict[str, Any]]
1023
+ taker_root_history: list[bytes32]
1022
1024
  trade_id: str
1023
1025
 
1024
1026
 
@@ -1649,13 +1651,13 @@ async def test_make_and_take_offer(offer_setup: OfferSetup, reference: MakeAndTa
1649
1651
 
1650
1652
  assert [generation["confirmed"] for generation in maker_history] == [True] * len(maker_history)
1651
1653
  assert [generation["root_hash"] for generation in maker_history] == [
1652
- bytes32([0] * 32),
1654
+ bytes32.zeros,
1653
1655
  *reference.maker_root_history,
1654
1656
  ]
1655
1657
 
1656
1658
  assert [generation["confirmed"] for generation in taker_history] == [True] * len(taker_history)
1657
1659
  assert [generation["root_hash"] for generation in taker_history] == [
1658
- bytes32([0] * 32),
1660
+ bytes32.zeros,
1659
1661
  *reference.taker_root_history,
1660
1662
  ]
1661
1663
 
@@ -1752,7 +1754,7 @@ async def test_make_offer_failure_rolls_back_db(offer_setup: OfferSetup) -> None
1752
1754
  "inclusions": reference.maker_inclusions,
1753
1755
  },
1754
1756
  {
1755
- "store_id": bytes32([0] * 32).hex(),
1757
+ "store_id": bytes32.zeros.hex(),
1756
1758
  "inclusions": [],
1757
1759
  },
1758
1760
  ],
@@ -2004,7 +2006,7 @@ async def test_get_sync_status(
2004
2006
 
2005
2007
  key = b"a"
2006
2008
  value = b"\x00\x01"
2007
- changelist: List[Dict[str, str]] = [{"action": "insert", "key": key.hex(), "value": value.hex()}]
2009
+ changelist: list[dict[str, str]] = [{"action": "insert", "key": key.hex(), "value": value.hex()}]
2008
2010
  res = await data_rpc_api.batch_update({"id": store_id.hex(), "changelist": changelist})
2009
2011
  update_tx_rec0 = res["tx_id"]
2010
2012
  await farm_block_with_spend(full_node_api, ph, update_tx_rec0, wallet_rpc_api)
@@ -2053,7 +2055,7 @@ async def test_clear_pending_roots(
2053
2055
  layer: InterfaceLayer,
2054
2056
  bt: BlockTools,
2055
2057
  ) -> None:
2056
- wallet_rpc_api, full_node_api, wallet_rpc_port, ph, bt = await init_wallet_and_node(
2058
+ _wallet_rpc_api, _full_node_api, wallet_rpc_port, _ph, bt = await init_wallet_and_node(
2057
2059
  self_hostname, one_wallet_and_one_simulator_services
2058
2060
  )
2059
2061
  async with init_data_layer_service(wallet_rpc_port=wallet_rpc_port, bt=bt, db_path=tmp_path) as data_layer_service:
@@ -2093,7 +2095,7 @@ async def test_clear_pending_roots(
2093
2095
  root_path=bt.root_path,
2094
2096
  )
2095
2097
  elif layer == InterfaceLayer.cli:
2096
- args: List[str] = [
2098
+ args: list[str] = [
2097
2099
  sys.executable,
2098
2100
  "-m",
2099
2101
  "chia",
@@ -2124,17 +2126,13 @@ async def test_clear_pending_roots(
2124
2126
  # https://github.com/python/cpython/issues/92841
2125
2127
  assert stderr == b"" or b"_ProactorBasePipeTransport.__del__" in stderr
2126
2128
  elif layer == InterfaceLayer.client:
2127
- client = await DataLayerRpcClient.create(
2129
+ async with DataLayerRpcClient.create_as_context(
2128
2130
  self_hostname=self_hostname,
2129
2131
  port=rpc_port,
2130
2132
  root_path=bt.root_path,
2131
2133
  net_config=bt.config,
2132
- )
2133
- try:
2134
+ ) as client:
2134
2135
  cleared_root = await client.clear_pending_roots(store_id=store_id)
2135
- finally:
2136
- client.close()
2137
- await client.await_closed()
2138
2136
  else: # pragma: no cover
2139
2137
  assert False, "unhandled parametrization"
2140
2138
 
@@ -2146,7 +2144,7 @@ async def test_clear_pending_roots(
2146
2144
  async def test_issue_15955_deadlock(
2147
2145
  self_hostname: str, one_wallet_and_one_simulator_services: SimulatorsAndWalletsServices, tmp_path: Path
2148
2146
  ) -> None:
2149
- wallet_rpc_api, full_node_api, wallet_rpc_port, ph, bt = await init_wallet_and_node(
2147
+ wallet_rpc_api, full_node_api, wallet_rpc_port, _ph, bt = await init_wallet_and_node(
2150
2148
  self_hostname, one_wallet_and_one_simulator_services
2151
2149
  )
2152
2150
 
@@ -2194,7 +2192,7 @@ async def test_issue_15955_deadlock(
2194
2192
  while time.monotonic() < end:
2195
2193
  with anyio.fail_after(adjusted_timeout(timeout)):
2196
2194
  await asyncio.gather(
2197
- *(asyncio.create_task(data_layer.get_value(store_id=store_id, key=key)) for _ in range(10))
2195
+ *(create_referenced_task(data_layer.get_value(store_id=store_id, key=key)) for _ in range(10))
2198
2196
  )
2199
2197
 
2200
2198
 
@@ -2223,7 +2221,7 @@ async def test_maximum_full_file_count(
2223
2221
  ) as data_layer:
2224
2222
  data_rpc_api = DataLayerRpcApi(data_layer)
2225
2223
  res = await data_rpc_api.create_data_store({})
2226
- root_hashes: List[bytes32] = []
2224
+ root_hashes: list[bytes32] = []
2227
2225
  assert res is not None
2228
2226
  store_id = bytes32.from_hexstr(res["id"])
2229
2227
  await farm_block_check_singleton(data_layer, full_node_api, ph, store_id, wallet=wallet_rpc_api.service)
@@ -2304,7 +2302,7 @@ async def test_unsubscribe_removes_files(
2304
2302
  ) as data_layer:
2305
2303
  data_rpc_api = DataLayerRpcApi(data_layer)
2306
2304
  res = await data_rpc_api.create_data_store({})
2307
- root_hashes: List[bytes32] = []
2305
+ root_hashes: list[bytes32] = []
2308
2306
  assert res is not None
2309
2307
  store_id = bytes32.from_hexstr(res["id"])
2310
2308
  await farm_block_check_singleton(data_layer, full_node_api, ph, store_id, wallet=wallet_rpc_api.service)
@@ -2365,7 +2363,7 @@ async def test_wallet_log_in_changes_active_fingerprint(
2365
2363
  one_wallet_and_one_simulator_services: SimulatorsAndWalletsServices,
2366
2364
  layer: InterfaceLayer,
2367
2365
  ) -> None:
2368
- wallet_rpc_api, full_node_api, wallet_rpc_port, ph, bt = await init_wallet_and_node(
2366
+ wallet_rpc_api, _full_node_api, wallet_rpc_port, _ph, bt = await init_wallet_and_node(
2369
2367
  self_hostname, one_wallet_and_one_simulator_services
2370
2368
  )
2371
2369
  primary_fingerprint = cast(int, (await wallet_rpc_api.get_logged_in_fingerprint(request={}))["fingerprint"])
@@ -2391,17 +2389,13 @@ async def test_wallet_log_in_changes_active_fingerprint(
2391
2389
  if layer == InterfaceLayer.direct:
2392
2390
  await data_rpc_api.wallet_log_in({"fingerprint": secondary_fingerprint})
2393
2391
  elif layer == InterfaceLayer.client:
2394
- client = await DataLayerRpcClient.create(
2392
+ async with DataLayerRpcClient.create_as_context(
2395
2393
  self_hostname=self_hostname,
2396
2394
  port=rpc_port,
2397
2395
  root_path=bt.root_path,
2398
2396
  net_config=bt.config,
2399
- )
2400
- try:
2397
+ ) as client:
2401
2398
  await client.wallet_log_in(fingerprint=secondary_fingerprint)
2402
- finally:
2403
- client.close()
2404
- await client.await_closed()
2405
2399
  elif layer == InterfaceLayer.funcs:
2406
2400
  await wallet_log_in_cmd(rpc_port=rpc_port, fingerprint=secondary_fingerprint, root_path=bt.root_path)
2407
2401
  elif layer == InterfaceLayer.cli:
@@ -2462,8 +2456,8 @@ async def test_mirrors(
2462
2456
  @dataclass(frozen=True)
2463
2457
  class ProofReference:
2464
2458
  entries_to_insert: int
2465
- keys_to_prove: List[str]
2466
- verify_proof_response: Dict[str, Any]
2459
+ keys_to_prove: list[str]
2460
+ verify_proof_response: dict[str, Any]
2467
2461
 
2468
2462
 
2469
2463
  def populate_reference(count: int, keys_to_prove: int) -> ProofReference:
@@ -2530,7 +2524,7 @@ async def populate_proof_setup(offer_setup: OfferSetup, count: int) -> OfferSetu
2530
2524
  taker=StoreSetup(
2531
2525
  api=offer_setup.taker.api,
2532
2526
  id=offer_setup.taker.id,
2533
- original_hash=bytes32([0] * 32),
2527
+ original_hash=bytes32.zeros,
2534
2528
  data_layer=offer_setup.taker.data_layer,
2535
2529
  data_rpc_client=offer_setup.taker.data_rpc_client,
2536
2530
  ),
@@ -2612,7 +2606,7 @@ async def test_dl_proof(offer_setup: OfferSetup, reference: ProofReference) -> N
2612
2606
  assert verify == reference.verify_proof_response
2613
2607
 
2614
2608
  # test InterfaceLayer.cli
2615
- key_args: List[str] = []
2609
+ key_args: list[str] = []
2616
2610
  for key in reference.keys_to_prove:
2617
2611
  key_args.append("--key")
2618
2612
  key_args.append(key)
@@ -2669,7 +2663,7 @@ async def test_dl_proof_errors(
2669
2663
  with pytest.raises(Exception, match="No generations found"):
2670
2664
  await data_rpc_api.get_proof(request={"store_id": store_id.hex(), "keys": [b"4".hex()]})
2671
2665
 
2672
- changelist: List[Dict[str, str]] = [{"action": "insert", "key": b"a".hex(), "value": b"\x00\x01".hex()}]
2666
+ changelist: list[dict[str, str]] = [{"action": "insert", "key": b"a".hex(), "value": b"\x00\x01".hex()}]
2673
2667
  res = await data_rpc_api.batch_update({"id": store_id.hex(), "changelist": changelist})
2674
2668
  update_tx_rec0 = res["tx_id"]
2675
2669
  await farm_block_with_spend(full_node_api, ph, update_tx_rec0, wallet_rpc_api)
@@ -2741,7 +2735,7 @@ async def test_dl_proof_changed_root(offer_setup: OfferSetup, seeded_random: ran
2741
2735
 
2742
2736
  key = b"a"
2743
2737
  value = b"\x00\x01"
2744
- changelist: List[Dict[str, str]] = [{"action": "insert", "key": key.hex(), "value": value.hex()}]
2738
+ changelist: list[dict[str, str]] = [{"action": "insert", "key": key.hex(), "value": value.hex()}]
2745
2739
  await offer_setup.maker.api.batch_update({"id": offer_setup.maker.id.hex(), "changelist": changelist})
2746
2740
 
2747
2741
  await process_for_data_layer_keys(
@@ -2775,7 +2769,7 @@ async def test_pagination_rpcs(
2775
2769
  value1 = b"\x01\x02"
2776
2770
  key1_hash = key_hash(key1)
2777
2771
  leaf_hash1 = leaf_hash(key1, value1)
2778
- changelist: List[Dict[str, str]] = [{"action": "insert", "key": key1.hex(), "value": value1.hex()}]
2772
+ changelist: list[dict[str, str]] = [{"action": "insert", "key": key1.hex(), "value": value1.hex()}]
2779
2773
  key2 = b"ba"
2780
2774
  value2 = b"\x03\x02"
2781
2775
  key2_hash = key_hash(key2)
@@ -3052,7 +3046,7 @@ async def test_pagination_cmds(
3052
3046
  update_tx_rec0 = res["tx_id"]
3053
3047
  await farm_block_with_spend(full_node_api, ph, update_tx_rec0, wallet_rpc_api)
3054
3048
  local_root = await data_rpc_api.get_local_root({"id": store_id.hex()})
3055
- hash_1 = bytes32([0] * 32)
3049
+ hash_1 = bytes32.zeros
3056
3050
  hash_2 = local_root["hash"]
3057
3051
  # `InterfaceLayer.direct` is not tested here since test `test_pagination_rpcs` extensively use it.
3058
3052
  if layer == InterfaceLayer.funcs:
@@ -3086,8 +3080,8 @@ async def test_pagination_cmds(
3086
3080
  )
3087
3081
  elif layer == InterfaceLayer.cli:
3088
3082
  for command in ("get_keys", "get_keys_values", "get_kv_diff"):
3089
- if command == "get_keys" or command == "get_keys_values":
3090
- args: List[str] = [
3083
+ if command in {"get_keys", "get_keys_values"}:
3084
+ args: list[str] = [
3091
3085
  sys.executable,
3092
3086
  "-m",
3093
3087
  "chia",
@@ -3145,13 +3139,12 @@ async def test_pagination_cmds(
3145
3139
  # https://github.com/python/cpython/issues/92841
3146
3140
  assert stderr == b"" or b"_ProactorBasePipeTransport.__del__" in stderr
3147
3141
  elif layer == InterfaceLayer.client:
3148
- client = await DataLayerRpcClient.create(
3142
+ async with DataLayerRpcClient.create_as_context(
3149
3143
  self_hostname=self_hostname,
3150
3144
  port=rpc_port,
3151
3145
  root_path=bt.root_path,
3152
3146
  net_config=bt.config,
3153
- )
3154
- try:
3147
+ ) as client:
3155
3148
  keys = await client.get_keys(
3156
3149
  store_id=store_id,
3157
3150
  root_hash=None,
@@ -3171,9 +3164,6 @@ async def test_pagination_cmds(
3171
3164
  page=0,
3172
3165
  max_page_size=max_page_size,
3173
3166
  )
3174
- finally:
3175
- client.close()
3176
- await client.await_closed()
3177
3167
  else: # pragma: no cover
3178
3168
  assert False, "unhandled parametrization"
3179
3169
  if max_page_size is None or max_page_size == 100:
@@ -3276,7 +3266,7 @@ async def test_unsubmitted_batch_update(
3276
3266
 
3277
3267
  to_insert = [(b"a", b"\x00\x01"), (b"b", b"\x00\x02"), (b"c", b"\x00\x03")]
3278
3268
  for key, value in to_insert:
3279
- changelist: List[Dict[str, str]] = [{"action": "insert", "key": key.hex(), "value": value.hex()}]
3269
+ changelist: list[dict[str, str]] = [{"action": "insert", "key": key.hex(), "value": value.hex()}]
3280
3270
 
3281
3271
  if layer == InterfaceLayer.direct:
3282
3272
  res = await data_rpc_api.batch_update(
@@ -3295,7 +3285,7 @@ async def test_unsubmitted_batch_update(
3295
3285
  )
3296
3286
  assert res == {"success": True}
3297
3287
  elif layer == InterfaceLayer.cli:
3298
- args: List[str] = [
3288
+ args: list[str] = [
3299
3289
  sys.executable,
3300
3290
  "-m",
3301
3291
  "chia",
@@ -3329,13 +3319,12 @@ async def test_unsubmitted_batch_update(
3329
3319
  assert stderr == b"" or b"_ProactorBasePipeTransport.__del__" in stderr
3330
3320
  assert res == {"success": True}
3331
3321
  elif layer == InterfaceLayer.client:
3332
- client = await DataLayerRpcClient.create(
3322
+ async with DataLayerRpcClient.create_as_context(
3333
3323
  self_hostname=self_hostname,
3334
3324
  port=rpc_port,
3335
3325
  root_path=bt.root_path,
3336
3326
  net_config=bt.config,
3337
- )
3338
- try:
3327
+ ) as client:
3339
3328
  res = await client.update_data_store(
3340
3329
  store_id=store_id,
3341
3330
  changelist=changelist,
@@ -3343,9 +3332,6 @@ async def test_unsubmitted_batch_update(
3343
3332
  submit_on_chain=False,
3344
3333
  )
3345
3334
  assert res == {"success": True}
3346
- finally:
3347
- client.close()
3348
- await client.await_closed()
3349
3335
  else: # pragma: no cover
3350
3336
  assert False, "unhandled parametrization"
3351
3337
 
@@ -3472,18 +3458,14 @@ async def test_unsubmitted_batch_update(
3472
3458
  assert stderr == b"" or b"_ProactorBasePipeTransport.__del__" in stderr
3473
3459
  update_tx_rec1 = bytes32.from_hexstr(res["tx_id"])
3474
3460
  elif layer == InterfaceLayer.client:
3475
- client = await DataLayerRpcClient.create(
3461
+ async with DataLayerRpcClient.create_as_context(
3476
3462
  self_hostname=self_hostname,
3477
3463
  port=rpc_port,
3478
3464
  root_path=bt.root_path,
3479
3465
  net_config=bt.config,
3480
- )
3481
- try:
3466
+ ) as client:
3482
3467
  res = await client.submit_pending_root(store_id=store_id, fee=None)
3483
3468
  update_tx_rec1 = bytes32.from_hexstr(res["tx_id"])
3484
- finally:
3485
- client.close()
3486
- await client.await_closed()
3487
3469
  else: # pragma: no cover
3488
3470
  assert False, "unhandled parametrization"
3489
3471
 
@@ -3535,7 +3517,7 @@ async def test_multistore_update(
3535
3517
  data_store = data_layer.data_store
3536
3518
  data_rpc_api = DataLayerRpcApi(data_layer)
3537
3519
 
3538
- store_ids: List[bytes32] = []
3520
+ store_ids: list[bytes32] = []
3539
3521
  store_ids_count = 5
3540
3522
 
3541
3523
  for _ in range(store_ids_count):
@@ -3545,10 +3527,10 @@ async def test_multistore_update(
3545
3527
  await farm_block_check_singleton(data_layer, full_node_api, ph, store_id, wallet=wallet_rpc_api.service)
3546
3528
  store_ids.append(store_id)
3547
3529
 
3548
- store_updates: List[Dict[str, Any]] = []
3530
+ store_updates: list[dict[str, Any]] = []
3549
3531
  key_offset = 1000
3550
3532
  for index, store_id in enumerate(store_ids):
3551
- changelist: List[Dict[str, str]] = []
3533
+ changelist: list[dict[str, str]] = []
3552
3534
  key = index.to_bytes(2, "big")
3553
3535
  value = index.to_bytes(2, "big")
3554
3536
  changelist.append({"action": "insert", "key": key.hex(), "value": value.hex()})
@@ -3734,7 +3716,7 @@ async def test_unsubmitted_batch_db_migration(
3734
3716
 
3735
3717
  key = b"0000"
3736
3718
  value = b"0000"
3737
- changelist: List[Dict[str, str]] = [{"action": "insert", "key": key.hex(), "value": value.hex()}]
3719
+ changelist: list[dict[str, str]] = [{"action": "insert", "key": key.hex(), "value": value.hex()}]
3738
3720
  res = await data_rpc_api.batch_update({"id": store_id.hex(), "changelist": changelist})
3739
3721
  update_tx_rec0 = res["tx_id"]
3740
3722
  await farm_block_with_spend(full_node_api, ph, update_tx_rec0, wallet_rpc_api)
@@ -3788,16 +3770,16 @@ async def test_auto_subscribe_to_local_stores(
3788
3770
  monkeypatch: Any,
3789
3771
  auto_subscribe_to_local_stores: bool,
3790
3772
  ) -> None:
3791
- wallet_rpc_api, full_node_api, wallet_rpc_port, ph, bt = await init_wallet_and_node(
3773
+ _wallet_rpc_api, _full_node_api, wallet_rpc_port, _ph, bt = await init_wallet_and_node(
3792
3774
  self_hostname, one_wallet_and_one_simulator_services
3793
3775
  )
3794
3776
  manage_data_interval = 5
3795
3777
  fake_store = bytes32([1] * 32)
3796
3778
 
3797
- async def mock_get_store_ids(self: Any) -> Set[bytes32]:
3779
+ async def mock_get_store_ids(self: Any) -> set[bytes32]:
3798
3780
  return {fake_store}
3799
3781
 
3800
- async def mock_dl_track_new(self: Any, request: Dict[str, Any]) -> Dict[str, Any]:
3782
+ async def mock_dl_track_new(self: Any, request: dict[str, Any]) -> dict[str, Any]:
3801
3783
  # ignore and just return empty response
3802
3784
  return {}
3803
3785
 
@@ -3837,13 +3819,13 @@ async def test_local_store_exception(
3837
3819
  monkeypatch: Any,
3838
3820
  caplog: pytest.LogCaptureFixture,
3839
3821
  ) -> None:
3840
- wallet_rpc_api, full_node_api, wallet_rpc_port, ph, bt = await init_wallet_and_node(
3822
+ _wallet_rpc_api, _full_node_api, wallet_rpc_port, _ph, bt = await init_wallet_and_node(
3841
3823
  self_hostname, one_wallet_and_one_simulator_services
3842
3824
  )
3843
3825
  manage_data_interval = 5
3844
3826
  fake_store = bytes32([1] * 32)
3845
3827
 
3846
- async def mock_get_store_ids(self: Any) -> Set[bytes32]:
3828
+ async def mock_get_store_ids(self: Any) -> set[bytes32]:
3847
3829
  return {fake_store}
3848
3830
 
3849
3831
  with monkeypatch.context() as m, caplog.at_level(logging.INFO):