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
@@ -1,9 +1,11 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  from asyncio import Queue
4
+ from collections import OrderedDict
5
+ from collections.abc import AsyncGenerator
4
6
  from dataclasses import dataclass
5
7
  from random import Random
6
- from typing import TYPE_CHECKING, AsyncGenerator, Dict, List, Optional, OrderedDict, Set, Tuple
8
+ from typing import Optional
7
9
 
8
10
  import pytest
9
11
  from chia_rs import AugSchemeMPL, Coin, CoinSpend, CoinState, Program
@@ -32,19 +34,15 @@ from chia.util.ints import uint8, uint16, uint32, uint64
32
34
  IDENTITY_PUZZLE = Program.to(1)
33
35
  IDENTITY_PUZZLE_HASH = IDENTITY_PUZZLE.get_tree_hash()
34
36
 
35
- OneNode = Tuple[List[SimulatorFullNodeService], List[WalletService], BlockTools]
36
- # python 3.8 workaround follows - can be removed when 3.8 support is removed
37
- if TYPE_CHECKING:
38
- Mpu = Tuple[FullNodeSimulator, Queue[Message], WSChiaConnection]
39
- else:
40
- Mpu = Tuple[FullNodeSimulator, Queue, WSChiaConnection]
37
+ OneNode = tuple[list[SimulatorFullNodeService], list[WalletService], BlockTools]
38
+ Mpu = tuple[FullNodeSimulator, Queue[Message], WSChiaConnection]
41
39
 
42
40
  ALL_FILTER = wallet_protocol.CoinStateFilters(True, True, True, uint64(0))
43
41
 
44
42
 
45
43
  async def connect_to_simulator(
46
44
  one_node: OneNode, self_hostname: str, mempool_updates: bool = True
47
- ) -> Tuple[FullNodeSimulator, Queue[Message], WSChiaConnection]:
45
+ ) -> tuple[FullNodeSimulator, Queue[Message], WSChiaConnection]:
48
46
  [full_node_service], _, _ = one_node
49
47
 
50
48
  full_node_api = full_node_service._api
@@ -265,7 +263,7 @@ async def test_request_coin_state(one_node: OneNode, self_hostname: str) -> None
265
263
  # Add coin records
266
264
  coin_records = [
267
265
  CoinRecord(
268
- coin=Coin(bytes32(b"\0" * 32), bytes32(b"\0" * 32), uint64(i)),
266
+ coin=Coin(bytes32.zeros, bytes32.zeros, uint64(i)),
269
267
  confirmed_block_index=uint32(1),
270
268
  spent_block_index=uint32(1 if i % 2 == 0 else 0),
271
269
  coinbase=False,
@@ -280,7 +278,7 @@ async def test_request_coin_state(one_node: OneNode, self_hostname: str) -> None
280
278
  coinbase=False,
281
279
  timestamp=uint64(1),
282
280
  )
283
- await simulator.full_node.coin_store._add_coin_records(coin_records + [ignored_coin])
281
+ await simulator.full_node.coin_store._add_coin_records([*coin_records, ignored_coin])
284
282
 
285
283
  # Request no coin states
286
284
  resp = await simulator.request_coin_state(wallet_protocol.RequestCoinState([], None, genesis, False), peer)
@@ -342,7 +340,7 @@ async def test_request_coin_state_reorg(one_node: OneNode, self_hostname: str) -
342
340
 
343
341
  # Reorg
344
342
  await simulator.reorg_from_index_to_new_index(
345
- simulator_protocol.ReorgProtocol(uint32(3), uint32(10), bytes32(b"\1" * 32), bytes32(b"\0" * 32))
343
+ simulator_protocol.ReorgProtocol(uint32(3), uint32(10), bytes32(b"\1" * 32), bytes32.zeros)
346
344
  )
347
345
 
348
346
  # Request coin state, should reject due to reorg
@@ -406,7 +404,7 @@ async def test_request_puzzle_state(one_node: OneNode, self_hostname: str) -> No
406
404
  simulator, _, peer = await connect_to_simulator(one_node, self_hostname)
407
405
 
408
406
  # Farm block to a puzzle hash we aren't looking at
409
- await simulator.farm_blocks_to_puzzlehash(3, farm_to=bytes32(b"\x0A" * 32))
407
+ await simulator.farm_blocks_to_puzzlehash(3, farm_to=bytes32(b"\x0a" * 32))
410
408
 
411
409
  genesis = simulator.full_node.blockchain.constants.GENESIS_CHALLENGE
412
410
 
@@ -417,8 +415,8 @@ async def test_request_puzzle_state(one_node: OneNode, self_hostname: str) -> No
417
415
  assert peak_header_hash is not None
418
416
 
419
417
  # Add coin records
420
- coin_records: List[CoinRecord] = []
421
- puzzle_hashes: List[bytes32] = []
418
+ coin_records: list[CoinRecord] = []
419
+ puzzle_hashes: list[bytes32] = []
422
420
 
423
421
  for ph_i in range(10):
424
422
  puzzle_hash = bytes32(ph_i.to_bytes(1, "big") * 32)
@@ -427,7 +425,7 @@ async def test_request_puzzle_state(one_node: OneNode, self_hostname: str) -> No
427
425
  for i in range(5):
428
426
  coin_records.append(
429
427
  CoinRecord(
430
- coin=Coin(bytes32(b"\0" * 32), puzzle_hash, uint64(i)),
428
+ coin=Coin(bytes32.zeros, puzzle_hash, uint64(i)),
431
429
  confirmed_block_index=uint32(1),
432
430
  spent_block_index=uint32(1 if i % 2 == 0 else 0),
433
431
  coinbase=False,
@@ -443,7 +441,7 @@ async def test_request_puzzle_state(one_node: OneNode, self_hostname: str) -> No
443
441
  timestamp=uint64(1),
444
442
  )
445
443
 
446
- await simulator.full_node.coin_store._add_coin_records(coin_records + [ignored_coin])
444
+ await simulator.full_node.coin_store._add_coin_records([*coin_records, ignored_coin])
447
445
 
448
446
  # We already test permutations of CoinStateFilters in the CoinStore tests
449
447
  # So it's redundant to do so here
@@ -527,7 +525,7 @@ async def test_request_puzzle_state_reorg(one_node: OneNode, self_hostname: str)
527
525
 
528
526
  # Reorg
529
527
  await simulator.reorg_from_index_to_new_index(
530
- simulator_protocol.ReorgProtocol(uint32(3), uint32(10), bytes32(b"\1" * 32), bytes32(b"\0" * 32))
528
+ simulator_protocol.ReorgProtocol(uint32(3), uint32(10), bytes32(b"\1" * 32), bytes32.zeros)
531
529
  )
532
530
 
533
531
  # Request coin state, should reject due to reorg
@@ -621,14 +619,14 @@ async def test_request_puzzle_state_limit(one_node: OneNode, self_hostname: str)
621
619
 
622
620
  @dataclass(frozen=True)
623
621
  class PuzzleStateData:
624
- coin_states: List[CoinState]
622
+ coin_states: list[CoinState]
625
623
  end_of_batch: bool
626
624
  previous_height: Optional[uint32]
627
625
  header_hash: bytes32
628
626
 
629
627
 
630
628
  async def sync_puzzle_hashes(
631
- puzzle_hashes: List[bytes32],
629
+ puzzle_hashes: list[bytes32],
632
630
  *,
633
631
  initial_previous_height: Optional[uint32],
634
632
  initial_header_hash: bytes32,
@@ -693,9 +691,9 @@ async def test_sync_puzzle_state(
693
691
  simulator.full_node.config["max_subscribe_response_items"] = 7400
694
692
 
695
693
  # Generate coin records
696
- puzzle_hashes: List[bytes32] = []
697
- hints: List[Tuple[bytes32, bytes]] = []
698
- coin_records: Dict[bytes32, CoinRecord] = dict()
694
+ puzzle_hashes: list[bytes32] = []
695
+ hints: list[tuple[bytes32, bytes]] = []
696
+ coin_records: dict[bytes32, CoinRecord] = dict()
699
697
 
700
698
  rng = Random(0)
701
699
 
@@ -713,7 +711,7 @@ async def test_sync_puzzle_state(
713
711
  if rng.choice([True, False, False, False, False]):
714
712
  coin_ph = std_hash(coin_ph)
715
713
 
716
- coin = Coin(bytes32(b"\0" * 32), coin_ph, uint64(base_amount + added_amount))
714
+ coin = Coin(bytes32.zeros, coin_ph, uint64(base_amount + added_amount))
717
715
 
718
716
  coin_records[coin.name()] = CoinRecord(
719
717
  coin=coin,
@@ -736,7 +734,7 @@ async def test_sync_puzzle_state(
736
734
 
737
735
  async def run_test(include_spent: bool, include_unspent: bool, include_hinted: bool, min_amount: uint64) -> None:
738
736
  # Calculate expected coin records based on filters
739
- expected_coin_records: Dict[bytes32, CoinRecord] = dict()
737
+ expected_coin_records: dict[bytes32, CoinRecord] = dict()
740
738
 
741
739
  for coin_id, coin_record in coin_records.items():
742
740
  if not include_spent and coin_record.spent_block_index > 0:
@@ -751,7 +749,7 @@ async def test_sync_puzzle_state(
751
749
  expected_coin_records[coin_id] = coin_record
752
750
 
753
751
  # Sync all coin states
754
- coin_ids: Set[bytes32] = set()
752
+ coin_ids: set[bytes32] = set()
755
753
  last_height = -1
756
754
 
757
755
  async for batch in sync_puzzle_hashes(
@@ -784,7 +782,7 @@ async def test_sync_puzzle_state(
784
782
  await run_test(include_spent, include_unspent, include_hinted, uint64(min_amount))
785
783
 
786
784
 
787
- async def assert_mempool_added(queue: Queue[Message], transaction_ids: Set[bytes32]) -> None:
785
+ async def assert_mempool_added(queue: Queue[Message], transaction_ids: set[bytes32]) -> None:
788
786
  message = await queue.get()
789
787
  assert message.type == ProtocolMessageTypes.mempool_items_added.value
790
788
 
@@ -794,7 +792,7 @@ async def assert_mempool_added(queue: Queue[Message], transaction_ids: Set[bytes
794
792
 
795
793
  async def assert_mempool_removed(
796
794
  queue: Queue[Message],
797
- removed_items: Set[wallet_protocol.RemovedMempoolItem],
795
+ removed_items: set[wallet_protocol.RemovedMempoolItem],
798
796
  ) -> None:
799
797
  message = await queue.get()
800
798
  assert message.type == ProtocolMessageTypes.mempool_items_removed.value
@@ -818,7 +816,7 @@ async def raw_mpu_setup(one_node: OneNode, self_hostname: str, no_capability: bo
818
816
  await simulator.farm_blocks_to_puzzlehash(1)
819
817
  await queue.get()
820
818
 
821
- new_coins: List[Tuple[Coin, bytes32]] = []
819
+ new_coins: list[tuple[Coin, bytes32]] = []
822
820
 
823
821
  for i in range(10):
824
822
  puzzle = Program.to(2)
@@ -847,10 +845,10 @@ async def raw_mpu_setup(one_node: OneNode, self_hostname: str, no_capability: bo
847
845
  return simulator, queue, peer
848
846
 
849
847
 
850
- async def make_coin(full_node: FullNode) -> Tuple[Coin, bytes32]:
848
+ async def make_coin(full_node: FullNode) -> tuple[Coin, bytes32]:
851
849
  ph = IDENTITY_PUZZLE_HASH
852
- coin = Coin(bytes32(b"\0" * 32), ph, uint64(1000))
853
- hint = bytes32(b"\0" * 32)
850
+ coin = Coin(bytes32.zeros, ph, uint64(1000))
851
+ hint = bytes32.zeros
854
852
 
855
853
  height = full_node.blockchain.get_peak_height()
856
854
  assert height is not None
@@ -2,7 +2,6 @@ from __future__ import annotations
2
2
 
3
3
  import random
4
4
  from dataclasses import dataclass, field
5
- from typing import Dict, List
6
5
 
7
6
  import pytest
8
7
 
@@ -29,7 +28,7 @@ def get_dummy_nft(random_: random.Random) -> NFTCoinInfo:
29
28
  @dataclass
30
29
  class DummyNFTs:
31
30
  seeded_random: random.Random
32
- nfts_per_wallet: Dict[uint32, List[NFTCoinInfo]] = field(default_factory=dict)
31
+ nfts_per_wallet: dict[uint32, list[NFTCoinInfo]] = field(default_factory=dict)
33
32
 
34
33
  def generate(self, wallet_id: int, count: int) -> None:
35
34
  nfts = self.nfts_per_wallet.setdefault(uint32(wallet_id), [])
@@ -36,7 +36,7 @@ async def test_notification_store_backwards_compat() -> None:
36
36
  cursor = await conn.execute(
37
37
  "INSERT OR REPLACE INTO notifications (coin_id, msg, amount) VALUES(?, ?, ?)",
38
38
  (
39
- bytes32([0] * 32),
39
+ bytes32.zeros,
40
40
  bytes([0] * 10),
41
41
  bytes([0]),
42
42
  ),
@@ -121,7 +121,7 @@ async def test_notifications(
121
121
  wallet_node_2.config["enable_notifications"] = True
122
122
  AMOUNT = uint64(1)
123
123
  FEE = uint64(0)
124
- elif case in ("allow", "allow_larger"):
124
+ elif case in {"allow", "allow_larger"}:
125
125
  wallet_node_2.config["required_notification_amount"] = 750000000000
126
126
  if case == "allow_larger":
127
127
  AMOUNT = uint64(1000000000000)
@@ -1,8 +1,8 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import cProfile
4
+ from collections.abc import Iterator
4
5
  from contextlib import contextmanager
5
- from typing import Iterator
6
6
 
7
7
  from chia._tests.util.misc import BenchmarkRunner
8
8
  from chia.wallet.trading.offer import Offer
@@ -2,7 +2,6 @@ from __future__ import annotations
2
2
 
3
3
  import random
4
4
  from dataclasses import dataclass, field
5
- from typing import Dict, List
6
5
 
7
6
  import pytest
8
7
  from chia_rs import AugSchemeMPL
@@ -29,8 +28,8 @@ def get_dummy_record(index: int, wallet_id: int, seeded_random: random.Random) -
29
28
  @dataclass
30
29
  class DummyDerivationRecords:
31
30
  seeded_random: random.Random
32
- index_per_wallet: Dict[int, int] = field(default_factory=dict)
33
- records_per_wallet: Dict[int, List[DerivationRecord]] = field(default_factory=dict)
31
+ index_per_wallet: dict[int, int] = field(default_factory=dict)
32
+ records_per_wallet: dict[int, list[DerivationRecord]] = field(default_factory=dict)
34
33
 
35
34
  def generate(self, wallet_id: int, count: int) -> None:
36
35
  records = self.records_per_wallet.setdefault(wallet_id, [])
@@ -45,7 +45,7 @@ msg2: bytes = b"msg2"
45
45
 
46
46
  additional_data: bytes32 = bytes32(DEFAULT_CONSTANTS.AGG_SIG_ME_ADDITIONAL_DATA)
47
47
 
48
- coin: Coin = Coin(bytes32([0] * 32), bytes32([0] * 32), uint64(0))
48
+ coin: Coin = Coin(bytes32.zeros, bytes32.zeros, uint64(0))
49
49
  puzzle = SerializedProgram.from_bytes(b"\x01")
50
50
  solution_h = SerializedProgram.from_program(
51
51
  Program.to([[ConditionOpcode.AGG_SIG_UNSAFE, pk1_h, msg1], [ConditionOpcode.AGG_SIG_ME, pk2_h_synth, msg2]])
@@ -90,7 +90,7 @@ async def test_wsm_sign_transaction() -> None:
90
90
  [
91
91
  DerivationRecord(
92
92
  uint32(1),
93
- bytes32([0] * 32),
93
+ bytes32.zeros,
94
94
  pk1_h,
95
95
  WalletType.STANDARD_WALLET,
96
96
  uint32(1),
@@ -129,7 +129,7 @@ async def test_wsm_sign_transaction() -> None:
129
129
  [
130
130
  DerivationRecord(
131
131
  uint32(1),
132
- bytes32([0] * 32),
132
+ bytes32.zeros,
133
133
  pk1_u,
134
134
  WalletType.STANDARD_WALLET,
135
135
  uint32(1),
@@ -1,7 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import dataclasses
4
- from typing import List, Optional
4
+ from typing import Optional
5
5
 
6
6
  import click
7
7
  import pytest
@@ -11,7 +11,8 @@ from click.testing import CliRunner
11
11
  from chia._tests.cmds.test_cmd_framework import check_click_parsing
12
12
  from chia._tests.cmds.wallet.test_consts import STD_TX
13
13
  from chia._tests.environments.wallet import WalletStateTransition, WalletTestFramework
14
- from chia.cmds.cmd_classes import NeedsWalletRPC, WalletClientInfo, chia_command
14
+ from chia.cmds.cmd_classes import chia_command
15
+ from chia.cmds.cmd_helpers import NeedsWalletRPC, TransactionsIn, TransactionsOut, WalletClientInfo
15
16
  from chia.cmds.cmds_util import TransactionBundle
16
17
  from chia.cmds.signer import (
17
18
  ApplySignaturesCMD,
@@ -21,8 +22,6 @@ from chia.cmds.signer import (
21
22
  QrCodeDisplay,
22
23
  SPIn,
23
24
  SPOut,
24
- TransactionsIn,
25
- TransactionsOut,
26
25
  )
27
26
  from chia.rpc.util import ALL_TRANSLATION_LAYERS
28
27
  from chia.rpc.wallet_request_types import (
@@ -87,7 +86,7 @@ def test_unsigned_transaction_type() -> None:
87
86
  pubkey: G1Element = G1Element()
88
87
  message: bytes = b"message"
89
88
 
90
- coin: ConsensusCoin = ConsensusCoin(bytes32([0] * 32), bytes32([0] * 32), uint64(0))
89
+ coin: ConsensusCoin = ConsensusCoin(bytes32.zeros, bytes32.zeros, uint64(0))
91
90
  puzzle: Program = Program.to(1)
92
91
  solution: Program = Program.to([AggSigMe(pubkey, message).to_program()])
93
92
 
@@ -147,9 +146,9 @@ async def test_p2dohp_wallet_signer_protocol(wallet_environments: WalletTestFram
147
146
  solution,
148
147
  )
149
148
 
150
- derivation_record: Optional[DerivationRecord] = (
151
- await wallet_state_manager.puzzle_store.get_derivation_record_for_puzzle_hash(coin.puzzle_hash)
152
- )
149
+ derivation_record: Optional[
150
+ DerivationRecord
151
+ ] = await wallet_state_manager.puzzle_store.get_derivation_record_for_puzzle_hash(coin.puzzle_hash)
153
152
  assert derivation_record is not None
154
153
  pubkey: G1Element = derivation_record.pubkey
155
154
  atom = puzzle.uncurry()[1].at("f").atom
@@ -180,7 +179,7 @@ async def test_p2dohp_wallet_signer_protocol(wallet_environments: WalletTestFram
180
179
  assert utx.signing_instructions.targets[0].fingerprint == synthetic_pubkey.get_fingerprint().to_bytes(4, "big")
181
180
  assert utx.signing_instructions.targets[0].message == message
182
181
 
183
- signing_responses: List[SigningResponse] = (
182
+ signing_responses: list[SigningResponse] = (
184
183
  await wallet_rpc.execute_signing_instructions(ExecuteSigningInstructions(utx.signing_instructions))
185
184
  ).signing_responses
186
185
  assert len(signing_responses) == 1
@@ -194,7 +193,7 @@ async def test_p2dohp_wallet_signer_protocol(wallet_environments: WalletTestFram
194
193
  not_our_pubkey: G1Element = not_our_private_key.get_g1()
195
194
  not_our_message: bytes = b"not our message"
196
195
  not_our_coin: ConsensusCoin = ConsensusCoin(
197
- bytes32([0] * 32),
196
+ bytes32.zeros,
198
197
  ACS_PH,
199
198
  uint64(0),
200
199
  )
@@ -256,7 +255,7 @@ async def test_p2dohp_wallet_signer_protocol(wallet_environments: WalletTestFram
256
255
  == signing_responses[0].signature
257
256
  )
258
257
 
259
- signed_txs: List[SignedTransaction] = (
258
+ signed_txs: list[SignedTransaction] = (
260
259
  await wallet_rpc.apply_signatures(
261
260
  ApplySignatures(spends=[Spend.from_coin_spend(coin_spend)], signing_responses=signing_responses)
262
261
  )
@@ -322,7 +321,7 @@ async def test_p2blsdohp_execute_signing_instructions(wallet_environments: Walle
322
321
  # Test just a path hint
323
322
  test_name: bytes32 = std_hash(b"path hint only")
324
323
  child_sk: PrivateKey = _derive_path_unhardened(root_sk, [uint64(1), uint64(2), uint64(3), uint64(4)])
325
- signing_responses: List[SigningResponse] = await wallet.execute_signing_instructions(
324
+ signing_responses: list[SigningResponse] = await wallet.execute_signing_instructions(
326
325
  SigningInstructions(
327
326
  KeyHints(
328
327
  [],
@@ -505,16 +504,16 @@ async def test_p2blsdohp_execute_signing_instructions(wallet_environments: Walle
505
504
 
506
505
 
507
506
  def test_blind_signer_translation_layer() -> None:
508
- sum_hints: List[SumHint] = [
507
+ sum_hints: list[SumHint] = [
509
508
  SumHint([b"a", b"b", b"c"], b"offset", b"final"),
510
509
  SumHint([b"c", b"b", b"a"], b"offset2", b"final"),
511
510
  ]
512
- path_hints: List[PathHint] = [
511
+ path_hints: list[PathHint] = [
513
512
  PathHint(b"root1", [uint64(1), uint64(2), uint64(3)]),
514
513
  PathHint(b"root2", [uint64(4), uint64(5), uint64(6)]),
515
514
  ]
516
- signing_targets: List[SigningTarget] = [
517
- SigningTarget(b"pubkey", b"message", bytes32([0] * 32)),
515
+ signing_targets: list[SigningTarget] = [
516
+ SigningTarget(b"pubkey", b"message", bytes32.zeros),
518
517
  SigningTarget(b"pubkey2", b"message2", bytes32([1] * 32)),
519
518
  ]
520
519
 
@@ -531,16 +530,16 @@ def test_blind_signer_translation_layer() -> None:
531
530
  bytes32([1] * 32),
532
531
  )
533
532
 
534
- bstl_sum_hints: List[BSTLSumHint] = [
533
+ bstl_sum_hints: list[BSTLSumHint] = [
535
534
  BSTLSumHint([b"a", b"b", b"c"], b"offset", b"final"),
536
535
  BSTLSumHint([b"c", b"b", b"a"], b"offset2", b"final"),
537
536
  ]
538
- bstl_path_hints: List[BSTLPathHint] = [
537
+ bstl_path_hints: list[BSTLPathHint] = [
539
538
  BSTLPathHint(b"root1", [uint64(1), uint64(2), uint64(3)]),
540
539
  BSTLPathHint(b"root2", [uint64(4), uint64(5), uint64(6)]),
541
540
  ]
542
- bstl_signing_targets: List[BSTLSigningTarget] = [
543
- BSTLSigningTarget(b"pubkey", b"message", bytes32([0] * 32)),
541
+ bstl_signing_targets: list[BSTLSigningTarget] = [
542
+ BSTLSigningTarget(b"pubkey", b"message", bytes32.zeros),
544
543
  BSTLSigningTarget(b"pubkey2", b"message2", bytes32([1] * 32)),
545
544
  ]
546
545
 
@@ -616,7 +615,7 @@ async def test_signer_commands(wallet_environments: WalletTestFramework) -> None
616
615
 
617
616
  AMOUNT = uint64(1)
618
617
  async with wallet_state_manager.new_action_scope(DEFAULT_TX_CONFIG, sign=False, push=False) as action_scope:
619
- await wallet.generate_signed_transaction(AMOUNT, bytes32([0] * 32), action_scope)
618
+ await wallet.generate_signed_transaction(AMOUNT, bytes32.zeros, action_scope)
620
619
  [tx] = action_scope.side_effects.transactions
621
620
 
622
621
  runner = CliRunner()
@@ -698,7 +697,7 @@ def test_signer_command_default_parsing() -> None:
698
697
  ),
699
698
  txs_in=TransactionsIn(transaction_file_in="in"),
700
699
  ),
701
- "-i",
700
+ "--transaction-file-in",
702
701
  "in",
703
702
  )
704
703
 
@@ -729,9 +728,9 @@ def test_signer_command_default_parsing() -> None:
729
728
  ),
730
729
  txs_out=TransactionsOut(transaction_file_out="out"),
731
730
  ),
732
- "-i",
731
+ "--transaction-file-in",
733
732
  "in",
734
- "-o",
733
+ "--transaction-file-out",
735
734
  "out",
736
735
  "-p",
737
736
  "sp-in",
@@ -742,7 +741,7 @@ def test_signer_command_default_parsing() -> None:
742
741
  rpc_info=NeedsWalletRPC(client_info=None, wallet_rpc_port=None, fingerprint=None),
743
742
  txs_in=TransactionsIn(transaction_file_in="in"),
744
743
  ),
745
- "-i",
744
+ "--transaction-file-in",
746
745
  "in",
747
746
  )
748
747
 
@@ -752,7 +751,7 @@ def test_transactions_in() -> None:
752
751
  def cmd() -> None:
753
752
  pass
754
753
 
755
- @chia_command(cmd, "temp_cmd", "blah")
754
+ @chia_command(group=cmd, name="temp_cmd", short_help="blah", help="n/a")
756
755
  class TempCMD(TransactionsIn):
757
756
  def run(self) -> None:
758
757
  assert self.transaction_bundle == TransactionBundle([STD_TX])
@@ -771,7 +770,7 @@ def test_transactions_out() -> None:
771
770
  def cmd() -> None:
772
771
  pass
773
772
 
774
- @chia_command(cmd, "temp_cmd", "blah")
773
+ @chia_command(group=cmd, name="temp_cmd", short_help="blah", help="n/a")
775
774
  class TempCMD(TransactionsOut):
776
775
  def run(self) -> None:
777
776
  self.handle_transaction_output([STD_TX])
@@ -797,8 +796,8 @@ class FooCoin(Streamable):
797
796
  @staticmethod
798
797
  def to_wallet_api(_from: FooCoin) -> Coin:
799
798
  return Coin(
800
- bytes32([0] * 32),
801
- bytes32([0] * 32),
799
+ bytes32.zeros,
800
+ bytes32.zeros,
802
801
  _from.amount,
803
802
  )
804
803
 
@@ -822,9 +821,9 @@ def test_signer_protocol_in(monkeypatch: pytest.MonkeyPatch) -> None:
822
821
  def cmd() -> None:
823
822
  pass
824
823
 
825
- coin = Coin(bytes32([0] * 32), bytes32([0] * 32), uint64(13))
824
+ coin = Coin(bytes32.zeros, bytes32.zeros, uint64(13))
826
825
 
827
- @chia_command(cmd, "temp_cmd", "blah")
826
+ @chia_command(group=cmd, name="temp_cmd", short_help="blah", help="n/a")
828
827
  class TempCMD(SPIn):
829
828
  def run(self) -> None:
830
829
  assert self.read_sp_input(Coin) == [coin, coin]
@@ -878,10 +877,10 @@ def test_signer_protocol_out(monkeypatch: pytest.MonkeyPatch) -> None:
878
877
  def cmd() -> None:
879
878
  pass
880
879
 
881
- coin = Coin(bytes32([0] * 32), bytes32([0] * 32), uint64(0))
880
+ coin = Coin(bytes32.zeros, bytes32.zeros, uint64(0))
882
881
  coin_bytes = byte_serialize_clvm_streamable(coin)
883
882
 
884
- @chia_command(cmd, "temp_cmd", "blah")
883
+ @chia_command(group=cmd, name="temp_cmd", short_help="blah", help="n/a")
885
884
  class TempCMD(SPOut):
886
885
  def run(self) -> None:
887
886
  self.handle_clvm_output([coin, coin])
@@ -930,7 +929,7 @@ def test_qr_code_display() -> None:
930
929
 
931
930
  bytes_to_encode = b"foo bar qat qux bam bat"
932
931
 
933
- @chia_command(cmd, "temp_cmd", "blah")
932
+ @chia_command(group=cmd, name="temp_cmd", short_help="blah", help="n/a")
934
933
  class TempCMD(QrCodeDisplay):
935
934
  def run(self) -> None:
936
935
  self.display_qr_codes([bytes_to_encode, bytes_to_encode])