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
@@ -3,7 +3,8 @@ from __future__ import annotations
3
3
  import asyncio
4
4
  import logging
5
5
  import random
6
- from typing import Any, Callable, Coroutine, Optional, Tuple
6
+ from collections.abc import Coroutine
7
+ from typing import Any, Callable, Optional
7
8
 
8
9
  import pytest
9
10
 
@@ -173,7 +174,7 @@ async def test_nft_offer_sell_nft(
173
174
  assert not mempool_not_empty(full_node_api)
174
175
  peer = wallet_node_taker.get_full_node_peer()
175
176
 
176
- [maker_offer], signing_response = await wallet_node_maker.wallet_state_manager.sign_offers(
177
+ [_maker_offer], signing_response = await wallet_node_maker.wallet_state_manager.sign_offers(
177
178
  [Offer.from_bytes(trade_make.offer)]
178
179
  )
179
180
  async with trade_manager_taker.wallet_state_manager.new_action_scope(
@@ -313,7 +314,7 @@ async def test_nft_offer_request_nft(
313
314
  taker_fee = 1
314
315
 
315
316
  peer = wallet_node_taker.get_full_node_peer()
316
- [maker_offer], signing_response = await wallet_node_maker.wallet_state_manager.sign_offers(
317
+ [_maker_offer], signing_response = await wallet_node_maker.wallet_state_manager.sign_offers(
317
318
  [Offer.from_bytes(trade_make.offer)]
318
319
  )
319
320
  async with trade_manager_taker.wallet_state_manager.new_action_scope(
@@ -411,7 +412,7 @@ async def test_nft_offer_sell_did_to_did(
411
412
  20, full_node_api.full_node.mempool_manager.get_spendbundle, tx.spend_bundle.name()
412
413
  )
413
414
 
414
- await full_node_api.farm_new_transaction_block(FarmNewBlockProtocol(bytes32([0] * 32)))
415
+ await full_node_api.farm_new_transaction_block(FarmNewBlockProtocol(bytes32.zeros))
415
416
  await full_node_api.wait_for_wallets_synced(wallet_nodes=[wallet_node_maker, wallet_node_taker], timeout=20)
416
417
 
417
418
  await time_out_assert(20, get_nft_count, 1, nft_wallet_maker)
@@ -458,7 +459,7 @@ async def test_nft_offer_sell_did_to_did(
458
459
  taker_fee = 1
459
460
 
460
461
  peer = wallet_node_taker.get_full_node_peer()
461
- [maker_offer], signing_response = await wallet_node_maker.wallet_state_manager.sign_offers(
462
+ [_maker_offer], signing_response = await wallet_node_maker.wallet_state_manager.sign_offers(
462
463
  [Offer.from_bytes(trade_make.offer)]
463
464
  )
464
465
  async with trade_manager_taker.wallet_state_manager.new_action_scope(
@@ -642,7 +643,7 @@ async def test_nft_offer_sell_nft_for_cat(
642
643
  taker_fee = 1
643
644
 
644
645
  peer = wallet_node_taker.get_full_node_peer()
645
- [maker_offer], signing_response = await wallet_node_maker.wallet_state_manager.sign_offers(
646
+ [_maker_offer], signing_response = await wallet_node_maker.wallet_state_manager.sign_offers(
646
647
  [Offer.from_bytes(trade_make.offer)]
647
648
  )
648
649
  async with trade_manager_taker.wallet_state_manager.new_action_scope(
@@ -831,7 +832,7 @@ async def test_nft_offer_request_nft_for_cat(
831
832
  taker_fee = 1
832
833
 
833
834
  peer = wallet_node_taker.get_full_node_peer()
834
- [maker_offer], signing_response = await wallet_node_maker.wallet_state_manager.sign_offers(
835
+ [_maker_offer], signing_response = await wallet_node_maker.wallet_state_manager.sign_offers(
835
836
  [Offer.from_bytes(trade_make.offer)]
836
837
  )
837
838
  async with trade_manager_taker.wallet_state_manager.new_action_scope(
@@ -954,7 +955,7 @@ async def test_nft_offer_sell_cancel(
954
955
  offer_did_nft_for_xch = {nft_to_offer_asset_id: -1, wallet_maker.id(): xch_requested}
955
956
 
956
957
  async with trade_manager_maker.wallet_state_manager.new_action_scope(DEFAULT_TX_CONFIG, push=False) as action_scope:
957
- success, trade_make, error = await trade_manager_maker.create_offer_for_ids(
958
+ _success, trade_make, _error = await trade_manager_maker.create_offer_for_ids(
958
959
  offer_did_nft_for_xch, action_scope, {}, fee=maker_fee
959
960
  )
960
961
 
@@ -1067,7 +1068,7 @@ async def test_nft_offer_sell_cancel_in_batch(
1067
1068
  offer_did_nft_for_xch = {nft_to_offer_asset_id: -1, wallet_maker.id(): xch_requested}
1068
1069
 
1069
1070
  async with trade_manager_maker.wallet_state_manager.new_action_scope(DEFAULT_TX_CONFIG, push=False) as action_scope:
1070
- success, trade_make, error = await trade_manager_maker.create_offer_for_ids(
1071
+ _success, trade_make, _error = await trade_manager_maker.create_offer_for_ids(
1071
1072
  offer_did_nft_for_xch, action_scope, {}, fee=maker_fee
1072
1073
  )
1073
1074
 
@@ -1083,7 +1084,7 @@ async def test_nft_offer_sell_cancel_in_batch(
1083
1084
  await full_node_api.process_transaction_records(records=action_scope.side_effects.transactions)
1084
1085
 
1085
1086
  for i in range(1, num_blocks):
1086
- await full_node_api.farm_new_transaction_block(FarmNewBlockProtocol(bytes32([0] * 32)))
1087
+ await full_node_api.farm_new_transaction_block(FarmNewBlockProtocol(bytes32.zeros))
1087
1088
 
1088
1089
  await time_out_assert(15, get_trade_and_status, TradeStatus.CANCELLED, trade_manager_maker, trade_make)
1089
1090
 
@@ -1104,7 +1105,7 @@ async def test_complex_nft_offer(
1104
1105
  self_hostname: str,
1105
1106
  two_wallet_nodes: Any,
1106
1107
  trusted: Any,
1107
- royalty_pts: Tuple[int, int, int],
1108
+ royalty_pts: tuple[int, int, int],
1108
1109
  seeded_random: random.Random,
1109
1110
  ) -> None:
1110
1111
  """
@@ -1,5 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
+ import contextlib
3
4
  import random
4
5
  from typing import Any
5
6
 
@@ -203,42 +204,49 @@ async def test_nft_mint_from_did_rpc(
203
204
  assert wallet_services[0].rpc_server is not None
204
205
  assert full_node_service.rpc_server is not None
205
206
 
206
- client = await WalletRpcClient.create(
207
- self_hostname,
208
- wallet_services[0].rpc_server.listen_port,
209
- wallet_services[0].root_path,
210
- wallet_services[0].config,
211
- )
212
- client_node = await FullNodeRpcClient.create(
213
- self_hostname, full_node_service.rpc_server.listen_port, full_node_service.root_path, full_node_service.config
214
- )
215
-
216
- async with wallet_maker.wallet_state_manager.new_action_scope(DEFAULT_TX_CONFIG, push=True) as action_scope:
217
- did_wallet_maker: DIDWallet = await DIDWallet.create_new_did_wallet(
218
- wallet_node_maker.wallet_state_manager, wallet_maker, uint64(1), action_scope
207
+ async with contextlib.AsyncExitStack() as exit_stack:
208
+ client = await exit_stack.enter_async_context(
209
+ WalletRpcClient.create_as_context(
210
+ self_hostname,
211
+ wallet_services[0].rpc_server.listen_port,
212
+ wallet_services[0].root_path,
213
+ wallet_services[0].config,
214
+ )
215
+ )
216
+ client_node = await exit_stack.enter_async_context(
217
+ FullNodeRpcClient.create_as_context(
218
+ self_hostname,
219
+ full_node_service.rpc_server.listen_port,
220
+ full_node_service.root_path,
221
+ full_node_service.config,
222
+ )
219
223
  )
220
- await full_node_api.process_transaction_records(action_scope.side_effects.transactions)
221
224
 
222
- await time_out_assert(30, wallet_maker.get_pending_change_balance, 0)
223
- await time_out_assert(30, wallet_maker.get_unconfirmed_balance, funds - 1)
224
- await time_out_assert(30, wallet_maker.get_confirmed_balance, funds - 1)
225
+ async with wallet_maker.wallet_state_manager.new_action_scope(DEFAULT_TX_CONFIG, push=True) as action_scope:
226
+ did_wallet_maker: DIDWallet = await DIDWallet.create_new_did_wallet(
227
+ wallet_node_maker.wallet_state_manager, wallet_maker, uint64(1), action_scope
228
+ )
229
+ await full_node_api.process_transaction_records(action_scope.side_effects.transactions)
225
230
 
226
- hex_did_id = did_wallet_maker.get_my_DID()
227
- hmr_did_id = encode_puzzle_hash(bytes32.from_hexstr(hex_did_id), AddressType.DID.hrp(config))
231
+ await time_out_assert(30, wallet_maker.get_pending_change_balance, 0)
232
+ await time_out_assert(30, wallet_maker.get_unconfirmed_balance, funds - 1)
233
+ await time_out_assert(30, wallet_maker.get_confirmed_balance, funds - 1)
228
234
 
229
- await full_node_api.wait_for_wallet_synced(wallet_node=wallet_node_maker, timeout=20)
235
+ hex_did_id = did_wallet_maker.get_my_DID()
236
+ hmr_did_id = encode_puzzle_hash(bytes32.from_hexstr(hex_did_id), AddressType.DID.hrp(config))
230
237
 
231
- nft_wallet_maker = await api_maker.create_new_wallet(
232
- dict(wallet_type="nft_wallet", name="NFT WALLET 1", did_id=hmr_did_id)
233
- )
234
- assert isinstance(nft_wallet_maker, dict)
235
- assert nft_wallet_maker.get("success")
238
+ await full_node_api.wait_for_wallet_synced(wallet_node=wallet_node_maker, timeout=20)
236
239
 
237
- nft_wallet_taker = await api_taker.create_new_wallet(dict(wallet_type="nft_wallet", name="NFT WALLET 2"))
240
+ nft_wallet_maker = await api_maker.create_new_wallet(
241
+ dict(wallet_type="nft_wallet", name="NFT WALLET 1", did_id=hmr_did_id)
242
+ )
243
+ assert isinstance(nft_wallet_maker, dict)
244
+ assert nft_wallet_maker.get("success")
238
245
 
239
- await full_node_api.farm_new_transaction_block(FarmNewBlockProtocol(ph_token))
246
+ nft_wallet_taker = await api_taker.create_new_wallet(dict(wallet_type="nft_wallet", name="NFT WALLET 2"))
247
+
248
+ await full_node_api.farm_new_transaction_block(FarmNewBlockProtocol(ph_token))
240
249
 
241
- try:
242
250
  n = 10
243
251
  metadata_list = [
244
252
  {
@@ -291,8 +299,10 @@ async def test_nft_mint_from_did_rpc(
291
299
  tx_config=DEFAULT_TX_CONFIG,
292
300
  )
293
301
  sb = resp.spend_bundle
294
- did_lineage_parent = [cn for cn in sb.removals() if cn.name() == did_coin.name()][0].parent_coin_info.hex()
295
- did_coin = [cn for cn in sb.additions() if (cn.parent_coin_info == did_coin.name()) and (cn.amount == 1)][0]
302
+ did_lineage_parent = next(cn for cn in sb.removals() if cn.name() == did_coin.name()).parent_coin_info.hex()
303
+ did_coin = next(
304
+ cn for cn in sb.additions() if (cn.parent_coin_info == did_coin.name()) and (cn.amount == 1)
305
+ )
296
306
  spends.append(sb)
297
307
  xch_adds = [c for c in sb.additions() if c.puzzle_hash == funding_coin.puzzle_hash]
298
308
  assert len(xch_adds) == 1
@@ -327,11 +337,6 @@ async def test_nft_mint_from_did_rpc(
327
337
  assert meta_dict["edition_number"] == nft.edition_number
328
338
  assert meta_dict["edition_total"] == nft.edition_total
329
339
  assert nft.launcher_id in nft_ids
330
- finally:
331
- client.close()
332
- client_node.close()
333
- await client.await_closed()
334
- await client_node.await_closed()
335
340
 
336
341
 
337
342
  @pytest.mark.parametrize(
@@ -391,41 +396,49 @@ async def test_nft_mint_from_did_rpc_no_royalties(
391
396
  assert wallet_services[0].rpc_server is not None
392
397
  assert full_node_service.rpc_server is not None
393
398
 
394
- client = await WalletRpcClient.create(
395
- self_hostname,
396
- wallet_services[0].rpc_server.listen_port,
397
- wallet_services[0].root_path,
398
- wallet_services[0].config,
399
- )
400
- client_node = await FullNodeRpcClient.create(
401
- self_hostname, full_node_service.rpc_server.listen_port, full_node_service.root_path, full_node_service.config
402
- )
403
-
404
- async with wallet_maker.wallet_state_manager.new_action_scope(DEFAULT_TX_CONFIG, push=True) as action_scope:
405
- did_wallet_maker: DIDWallet = await DIDWallet.create_new_did_wallet(
406
- wallet_node_maker.wallet_state_manager, wallet_maker, uint64(1), action_scope
399
+ async with contextlib.AsyncExitStack() as exit_stack:
400
+ client = await exit_stack.enter_async_context(
401
+ WalletRpcClient.create_as_context(
402
+ self_hostname,
403
+ wallet_services[0].rpc_server.listen_port,
404
+ wallet_services[0].root_path,
405
+ wallet_services[0].config,
406
+ )
407
+ )
408
+ client_node = await exit_stack.enter_async_context(
409
+ FullNodeRpcClient.create_as_context(
410
+ self_hostname,
411
+ full_node_service.rpc_server.listen_port,
412
+ full_node_service.root_path,
413
+ full_node_service.config,
414
+ )
407
415
  )
408
- await full_node_api.process_transaction_records(action_scope.side_effects.transactions)
409
416
 
410
- await time_out_assert(30, wallet_maker.get_pending_change_balance, 0)
411
- await time_out_assert(30, wallet_maker.get_unconfirmed_balance, funds - 1)
412
- await time_out_assert(30, wallet_maker.get_confirmed_balance, funds - 1)
417
+ async with wallet_maker.wallet_state_manager.new_action_scope(DEFAULT_TX_CONFIG, push=True) as action_scope:
418
+ did_wallet_maker: DIDWallet = await DIDWallet.create_new_did_wallet(
419
+ wallet_node_maker.wallet_state_manager, wallet_maker, uint64(1), action_scope
420
+ )
421
+ await full_node_api.process_transaction_records(action_scope.side_effects.transactions)
413
422
 
414
- hex_did_id = did_wallet_maker.get_my_DID()
415
- hmr_did_id = encode_puzzle_hash(bytes32.from_hexstr(hex_did_id), AddressType.DID.hrp(config))
423
+ await time_out_assert(30, wallet_maker.get_pending_change_balance, 0)
424
+ await time_out_assert(30, wallet_maker.get_unconfirmed_balance, funds - 1)
425
+ await time_out_assert(30, wallet_maker.get_confirmed_balance, funds - 1)
416
426
 
417
- await full_node_api.wait_for_wallet_synced(wallet_node=wallet_node_maker, timeout=20)
427
+ hex_did_id = did_wallet_maker.get_my_DID()
428
+ hmr_did_id = encode_puzzle_hash(bytes32.from_hexstr(hex_did_id), AddressType.DID.hrp(config))
418
429
 
419
- nft_wallet_maker = await api_maker.create_new_wallet(
420
- dict(wallet_type="nft_wallet", name="NFT WALLET 1", did_id=hmr_did_id)
421
- )
422
- assert isinstance(nft_wallet_maker, dict)
423
- assert nft_wallet_maker.get("success")
430
+ await full_node_api.wait_for_wallet_synced(wallet_node=wallet_node_maker, timeout=20)
424
431
 
425
- nft_wallet_taker = await api_taker.create_new_wallet(dict(wallet_type="nft_wallet", name="NFT WALLET 2"))
432
+ nft_wallet_maker = await api_maker.create_new_wallet(
433
+ dict(wallet_type="nft_wallet", name="NFT WALLET 1", did_id=hmr_did_id)
434
+ )
435
+ assert isinstance(nft_wallet_maker, dict)
436
+ assert nft_wallet_maker.get("success")
437
+
438
+ nft_wallet_taker = await api_taker.create_new_wallet(dict(wallet_type="nft_wallet", name="NFT WALLET 2"))
439
+
440
+ await full_node_api.farm_new_transaction_block(FarmNewBlockProtocol(ph_token))
426
441
 
427
- await full_node_api.farm_new_transaction_block(FarmNewBlockProtocol(ph_token))
428
- try:
429
442
  n = 10
430
443
  metadata_list = [
431
444
  {
@@ -476,8 +489,10 @@ async def test_nft_mint_from_did_rpc_no_royalties(
476
489
  tx_config=DEFAULT_TX_CONFIG,
477
490
  )
478
491
  sb = resp.spend_bundle
479
- did_lineage_parent = [cn for cn in sb.removals() if cn.name() == did_coin.name()][0].parent_coin_info.hex()
480
- did_coin = [cn for cn in sb.additions() if (cn.parent_coin_info == did_coin.name()) and (cn.amount == 1)][0]
492
+ did_lineage_parent = next(cn for cn in sb.removals() if cn.name() == did_coin.name()).parent_coin_info.hex()
493
+ did_coin = next(
494
+ cn for cn in sb.additions() if (cn.parent_coin_info == did_coin.name()) and (cn.amount == 1)
495
+ )
481
496
  spends.append(sb)
482
497
  xch_adds = [c for c in sb.additions() if c.puzzle_hash == funding_coin.puzzle_hash]
483
498
  assert len(xch_adds) == 1
@@ -495,12 +510,6 @@ async def test_nft_mint_from_did_rpc_no_royalties(
495
510
 
496
511
  await time_out_assert(60, get_taker_nfts, n)
497
512
 
498
- finally:
499
- client.close()
500
- client_node.close()
501
- await client.await_closed()
502
- await client_node.await_closed()
503
-
504
513
 
505
514
  @pytest.mark.parametrize(
506
515
  "trusted",
@@ -783,42 +792,49 @@ async def test_nft_mint_from_xch_rpc(
783
792
  assert wallet_services[0].rpc_server is not None
784
793
  assert full_node_service.rpc_server is not None
785
794
 
786
- client = await WalletRpcClient.create(
787
- self_hostname,
788
- wallet_services[0].rpc_server.listen_port,
789
- wallet_services[0].root_path,
790
- wallet_services[0].config,
791
- )
792
- client_node = await FullNodeRpcClient.create(
793
- self_hostname, full_node_service.rpc_server.listen_port, full_node_service.root_path, full_node_service.config
794
- )
795
-
796
- async with wallet_maker.wallet_state_manager.new_action_scope(DEFAULT_TX_CONFIG, push=True) as action_scope:
797
- did_wallet_maker: DIDWallet = await DIDWallet.create_new_did_wallet(
798
- wallet_node_maker.wallet_state_manager, wallet_maker, uint64(1), action_scope
795
+ async with contextlib.AsyncExitStack() as exit_stack:
796
+ client = await exit_stack.enter_async_context(
797
+ WalletRpcClient.create_as_context(
798
+ self_hostname,
799
+ wallet_services[0].rpc_server.listen_port,
800
+ wallet_services[0].root_path,
801
+ wallet_services[0].config,
802
+ )
803
+ )
804
+ client_node = await exit_stack.enter_async_context(
805
+ FullNodeRpcClient.create_as_context(
806
+ self_hostname,
807
+ full_node_service.rpc_server.listen_port,
808
+ full_node_service.root_path,
809
+ full_node_service.config,
810
+ )
799
811
  )
800
- await full_node_api.process_transaction_records(action_scope.side_effects.transactions)
801
812
 
802
- await time_out_assert(30, wallet_maker.get_pending_change_balance, 0)
803
- await time_out_assert(30, wallet_maker.get_unconfirmed_balance, funds - 1)
804
- await time_out_assert(30, wallet_maker.get_confirmed_balance, funds - 1)
813
+ async with wallet_maker.wallet_state_manager.new_action_scope(DEFAULT_TX_CONFIG, push=True) as action_scope:
814
+ did_wallet_maker: DIDWallet = await DIDWallet.create_new_did_wallet(
815
+ wallet_node_maker.wallet_state_manager, wallet_maker, uint64(1), action_scope
816
+ )
817
+ await full_node_api.process_transaction_records(action_scope.side_effects.transactions)
805
818
 
806
- hex_did_id = did_wallet_maker.get_my_DID()
807
- hmr_did_id = encode_puzzle_hash(bytes32.from_hexstr(hex_did_id), AddressType.DID.hrp(config))
819
+ await time_out_assert(30, wallet_maker.get_pending_change_balance, 0)
820
+ await time_out_assert(30, wallet_maker.get_unconfirmed_balance, funds - 1)
821
+ await time_out_assert(30, wallet_maker.get_confirmed_balance, funds - 1)
808
822
 
809
- await full_node_api.wait_for_wallet_synced(wallet_node=wallet_node_maker, timeout=20)
823
+ hex_did_id = did_wallet_maker.get_my_DID()
824
+ hmr_did_id = encode_puzzle_hash(bytes32.from_hexstr(hex_did_id), AddressType.DID.hrp(config))
810
825
 
811
- nft_wallet_maker = await api_maker.create_new_wallet(
812
- dict(wallet_type="nft_wallet", name="NFT WALLET 1", did_id=hmr_did_id)
813
- )
814
- assert isinstance(nft_wallet_maker, dict)
815
- assert nft_wallet_maker.get("success")
826
+ await full_node_api.wait_for_wallet_synced(wallet_node=wallet_node_maker, timeout=20)
816
827
 
817
- nft_wallet_taker = await api_taker.create_new_wallet(dict(wallet_type="nft_wallet", name="NFT WALLET 2"))
828
+ nft_wallet_maker = await api_maker.create_new_wallet(
829
+ dict(wallet_type="nft_wallet", name="NFT WALLET 1", did_id=hmr_did_id)
830
+ )
831
+ assert isinstance(nft_wallet_maker, dict)
832
+ assert nft_wallet_maker.get("success")
818
833
 
819
- await full_node_api.farm_new_transaction_block(FarmNewBlockProtocol(ph_token))
834
+ nft_wallet_taker = await api_taker.create_new_wallet(dict(wallet_type="nft_wallet", name="NFT WALLET 2"))
835
+
836
+ await full_node_api.farm_new_transaction_block(FarmNewBlockProtocol(ph_token))
820
837
 
821
- try:
822
838
  n = 10
823
839
  metadata_list = [
824
840
  {
@@ -898,12 +914,6 @@ async def test_nft_mint_from_xch_rpc(
898
914
  assert meta_dict["edition_number"] == nft.edition_number
899
915
  assert meta_dict["edition_total"] == nft.edition_total
900
916
 
901
- finally:
902
- client.close()
903
- client_node.close()
904
- await client.await_closed()
905
- await client_node.await_closed()
906
-
907
917
 
908
918
  @pytest.mark.parametrize(
909
919
  "trusted",
@@ -1,12 +1,11 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import itertools
4
- from typing import List
5
4
 
6
5
  import pytest
7
6
  from chia_rs import G2Element
8
7
 
9
- from chia.clvm.spend_sim import CostLogger, sim_and_client
8
+ from chia._tests.util.spend_sim import CostLogger, sim_and_client
10
9
  from chia.types.blockchain_format.program import Program
11
10
  from chia.types.blockchain_format.sized_bytes import bytes32
12
11
  from chia.types.coin_spend import make_spend
@@ -68,13 +67,13 @@ async def test_state_layer(cost_logger: CostLogger, metadata_updater: str) -> No
68
67
  await sim.farm_block()
69
68
 
70
69
  if metadata_updater == "default":
71
- metadata_updater_solutions: List[Program] = [
70
+ metadata_updater_solutions: list[Program] = [
72
71
  Program.to((b"u", "update")),
73
72
  Program.to((b"lu", "update")),
74
73
  Program.to((b"mu", "update")),
75
74
  Program.to((b"foo", "update")),
76
75
  ]
77
- expected_metadatas: List[Program] = [
76
+ expected_metadatas: list[Program] = [
78
77
  metadata_to_program(
79
78
  {
80
79
  b"u": ["update", "hey hey"],
@@ -140,7 +139,7 @@ async def test_state_layer(cost_logger: CostLogger, metadata_updater: str) -> No
140
139
  @pytest.mark.anyio
141
140
  async def test_ownership_layer(cost_logger: CostLogger) -> None:
142
141
  async with sim_and_client() as (sim, sim_client):
143
- TARGET_OWNER = bytes32([0] * 32)
142
+ TARGET_OWNER = bytes32.zeros
144
143
  TARGET_TP = Program.to([8]) # (x)
145
144
  # (a (i 11 (q 4 19 (c 43 (q ()))) (q 8)) 1) or
146
145
  # (mod (_ _ solution) (if solution (list (f solution) (f (r solution)) ()) (x)))
@@ -192,7 +191,7 @@ async def test_ownership_layer(cost_logger: CostLogger) -> None:
192
191
  [
193
192
  [51, ACS_PH, 1],
194
193
  [-10, TARGET_OWNER, TARGET_TP],
195
- [62, b"\xad\x4c" + bytes32([0] * 32)],
194
+ [62, b"\xad\x4c" + bytes32.zeros],
196
195
  ]
197
196
  ]
198
197
  ),
@@ -252,7 +251,7 @@ async def test_default_transfer_program(cost_logger: CostLogger) -> None:
252
251
  # Now make the ownership coin
253
252
  FAKE_SINGLETON_MOD = Program.to([2, 5, 11]) # (a 5 11) | (mod (_ INNER_PUZ inner_sol) (a INNER_PUZ inner_sol))
254
253
  FAKE_CAT_MOD = Program.to([2, 11, 23]) # (a 11 23) or (mod (_ _ INNER_PUZ inner_sol) (a INNER_PUZ inner_sol))
255
- FAKE_LAUNCHER_ID = bytes32([0] * 32)
254
+ FAKE_LAUNCHER_ID = bytes32.zeros
256
255
  FAKE_TAIL = bytes32([2] * 32)
257
256
  FAKE_SINGLETON_STRUCT = Program.to((FAKE_SINGLETON_MOD.get_tree_hash(), (FAKE_LAUNCHER_ID, FAKE_LAUNCHER_ID)))
258
257
  FAKE_SINGLETON = FAKE_SINGLETON_MOD.curry(FAKE_SINGLETON_STRUCT, ACS)
@@ -1,7 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import random
4
- from typing import Any, Dict, Optional
4
+ from typing import Any, Optional
5
5
 
6
6
  import pytest
7
7
 
@@ -123,7 +123,7 @@ async def test_nft_offer_with_fee(
123
123
  nft_to_offer = coins_maker[0]
124
124
  nft_info: Optional[PuzzleInfo] = match_puzzle(uncurry_puzzle(nft_to_offer.full_puzzle))
125
125
  nft_asset_id: bytes32 = create_asset_id(nft_info) # type: ignore
126
- driver_dict: Dict[bytes32, Optional[PuzzleInfo]] = {nft_asset_id: nft_info}
126
+ driver_dict: dict[bytes32, Optional[PuzzleInfo]] = {nft_asset_id: nft_info}
127
127
 
128
128
  xch_request = 100
129
129
  maker_fee = uint64(10)
@@ -145,7 +145,7 @@ async def test_nft_offer_with_fee(
145
145
 
146
146
  taker_fee = uint64(1)
147
147
 
148
- [maker_offer], signing_response = await wallet_node_0.wallet_state_manager.sign_offers(
148
+ [_maker_offer], signing_response = await wallet_node_0.wallet_state_manager.sign_offers(
149
149
  [Offer.from_bytes(trade_make.offer)]
150
150
  )
151
151
  peer = wallet_node_1.get_full_node_peer()
@@ -205,7 +205,7 @@ async def test_nft_offer_with_fee(
205
205
  nft_to_buy = coins_taker[0]
206
206
  nft_to_buy_info: Optional[PuzzleInfo] = match_puzzle(uncurry_puzzle(nft_to_buy.full_puzzle))
207
207
  nft_to_buy_asset_id: bytes32 = create_asset_id(nft_to_buy_info) # type: ignore
208
- driver_dict_to_buy: Dict[bytes32, Optional[PuzzleInfo]] = {nft_to_buy_asset_id: nft_to_buy_info}
208
+ driver_dict_to_buy: dict[bytes32, Optional[PuzzleInfo]] = {nft_to_buy_asset_id: nft_to_buy_info}
209
209
 
210
210
  xch_offered = 1000
211
211
  maker_fee = uint64(10)
@@ -221,7 +221,7 @@ async def test_nft_offer_with_fee(
221
221
 
222
222
  taker_fee = uint64(1)
223
223
 
224
- [maker_offer], signing_response = await wallet_node_0.wallet_state_manager.sign_offers(
224
+ [_maker_offer], signing_response = await wallet_node_0.wallet_state_manager.sign_offers(
225
225
  [Offer.from_bytes(trade_make.offer)]
226
226
  )
227
227
  async with trade_manager_taker.wallet_state_manager.new_action_scope(
@@ -327,7 +327,7 @@ async def test_nft_offer_cancellations(
327
327
  nft_to_offer = coins_maker[0]
328
328
  nft_info: Optional[PuzzleInfo] = match_puzzle(uncurry_puzzle(nft_to_offer.full_puzzle))
329
329
  nft_asset_id: bytes32 = create_asset_id(nft_info) # type: ignore
330
- driver_dict: Dict[bytes32, Optional[PuzzleInfo]] = {nft_asset_id: nft_info}
330
+ driver_dict: dict[bytes32, Optional[PuzzleInfo]] = {nft_asset_id: nft_info}
331
331
 
332
332
  xch_request = 100
333
333
  maker_fee = uint64(10)
@@ -472,7 +472,7 @@ async def test_nft_offer_with_metadata_update(
472
472
  nft_to_offer = coins_maker[0]
473
473
  nft_info: Optional[PuzzleInfo] = match_puzzle(uncurry_puzzle(nft_to_offer.full_puzzle))
474
474
  nft_asset_id: bytes32 = create_asset_id(nft_info) # type: ignore
475
- driver_dict: Dict[bytes32, Optional[PuzzleInfo]] = {nft_asset_id: nft_info}
475
+ driver_dict: dict[bytes32, Optional[PuzzleInfo]] = {nft_asset_id: nft_info}
476
476
 
477
477
  xch_request = 100
478
478
  maker_fee = uint64(10)
@@ -488,7 +488,7 @@ async def test_nft_offer_with_metadata_update(
488
488
 
489
489
  taker_fee = uint64(1)
490
490
 
491
- [maker_offer], signing_response = await wallet_node_0.wallet_state_manager.sign_offers(
491
+ [_maker_offer], signing_response = await wallet_node_0.wallet_state_manager.sign_offers(
492
492
  [Offer.from_bytes(trade_make.offer)]
493
493
  )
494
494
  peer = wallet_node_1.get_full_node_peer()
@@ -643,7 +643,7 @@ async def test_nft_offer_nft_for_cat(
643
643
  nft_to_offer = coins_maker[0]
644
644
  nft_info: Optional[PuzzleInfo] = match_puzzle(uncurry_puzzle(nft_to_offer.full_puzzle))
645
645
  nft_asset_id: bytes32 = create_asset_id(nft_info) # type: ignore
646
- driver_dict: Dict[bytes32, Optional[PuzzleInfo]] = {nft_asset_id: nft_info}
646
+ driver_dict: dict[bytes32, Optional[PuzzleInfo]] = {nft_asset_id: nft_info}
647
647
 
648
648
  maker_fee = uint64(10)
649
649
  taker_cat_offered = 2500
@@ -665,7 +665,7 @@ async def test_nft_offer_nft_for_cat(
665
665
 
666
666
  taker_fee = uint64(1)
667
667
 
668
- [maker_offer], signing_response = await wallet_node_0.wallet_state_manager.sign_offers(
668
+ [_maker_offer], signing_response = await wallet_node_0.wallet_state_manager.sign_offers(
669
669
  [Offer.from_bytes(trade_make.offer)]
670
670
  )
671
671
  peer = wallet_node_1.get_full_node_peer()
@@ -732,7 +732,7 @@ async def test_nft_offer_nft_for_cat(
732
732
  nft_to_buy_info: Optional[PuzzleInfo] = match_puzzle(uncurry_puzzle(nft_to_buy.full_puzzle))
733
733
  nft_to_buy_asset_id: bytes32 = create_asset_id(nft_to_buy_info) # type: ignore
734
734
 
735
- driver_dict_to_buy: Dict[bytes32, Optional[PuzzleInfo]] = {
735
+ driver_dict_to_buy: dict[bytes32, Optional[PuzzleInfo]] = {
736
736
  nft_to_buy_asset_id: nft_to_buy_info,
737
737
  }
738
738
 
@@ -753,7 +753,7 @@ async def test_nft_offer_nft_for_cat(
753
753
 
754
754
  taker_fee = uint64(1)
755
755
 
756
- [maker_offer], signing_response = await wallet_node_0.wallet_state_manager.sign_offers(
756
+ [_maker_offer], signing_response = await wallet_node_0.wallet_state_manager.sign_offers(
757
757
  [Offer.from_bytes(trade_make.offer)]
758
758
  )
759
759
  async with trade_manager_taker.wallet_state_manager.new_action_scope(
@@ -889,7 +889,7 @@ async def test_nft_offer_nft_for_nft(
889
889
  nft_to_take_info: Optional[PuzzleInfo] = match_puzzle(uncurry_puzzle(nft_to_take.full_puzzle))
890
890
  nft_to_take_asset_id: bytes32 = create_asset_id(nft_to_take_info) # type: ignore
891
891
 
892
- driver_dict: Dict[bytes32, Optional[PuzzleInfo]] = {
892
+ driver_dict: dict[bytes32, Optional[PuzzleInfo]] = {
893
893
  nft_to_offer_asset_id: nft_to_offer_info,
894
894
  nft_to_take_asset_id: nft_to_take_info,
895
895
  }
@@ -907,7 +907,7 @@ async def test_nft_offer_nft_for_nft(
907
907
 
908
908
  taker_fee = uint64(1)
909
909
 
910
- [maker_offer], signing_response = await wallet_node_0.wallet_state_manager.sign_offers(
910
+ [_maker_offer], signing_response = await wallet_node_0.wallet_state_manager.sign_offers(
911
911
  [Offer.from_bytes(trade_make.offer)]
912
912
  )
913
913
  peer = wallet_node_1.get_full_node_peer()
@@ -1064,7 +1064,7 @@ async def test_nft_offer_nft0_and_xch_for_cat(
1064
1064
  nft_to_offer = coins_maker[0]
1065
1065
  nft_info: Optional[PuzzleInfo] = match_puzzle(uncurry_puzzle(nft_to_offer.full_puzzle))
1066
1066
  nft_asset_id: bytes32 = create_asset_id(nft_info) # type: ignore
1067
- driver_dict: Dict[bytes32, Optional[PuzzleInfo]] = {nft_asset_id: nft_info}
1067
+ driver_dict: dict[bytes32, Optional[PuzzleInfo]] = {nft_asset_id: nft_info}
1068
1068
 
1069
1069
  maker_fee = uint64(10)
1070
1070
  maker_xch_offered = 1000
@@ -1160,7 +1160,7 @@ async def test_nft_offer_nft0_and_xch_for_cat(
1160
1160
  nft_to_buy_info: Optional[PuzzleInfo] = match_puzzle(uncurry_puzzle(nft_to_buy.full_puzzle))
1161
1161
  nft_to_buy_asset_id: bytes32 = create_asset_id(nft_to_buy_info) # type: ignore
1162
1162
 
1163
- driver_dict_to_buy: Dict[bytes32, Optional[PuzzleInfo]] = {
1163
+ driver_dict_to_buy: dict[bytes32, Optional[PuzzleInfo]] = {
1164
1164
  nft_to_buy_asset_id: nft_to_buy_info,
1165
1165
  }
1166
1166
 
@@ -1,7 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import random
4
- from typing import Optional, Tuple
4
+ from typing import Optional
5
5
 
6
6
  from chia._tests.core.make_block_generator import int_to_public_key
7
7
  from chia.types.blockchain_format.program import Program
@@ -104,7 +104,7 @@ def test_nft_transfer_puzzle_hashes(seeded_random: random.Random) -> None:
104
104
  assert expected_ph == calculated_ph
105
105
 
106
106
 
107
- def make_a_new_solution() -> Tuple[Program, Program]:
107
+ def make_a_new_solution() -> tuple[Program, Program]:
108
108
  destination = int_to_public_key(2)
109
109
  p2_puzzle = puzzle_for_pk(destination)
110
110
  puzhash = p2_puzzle.get_tree_hash()
@@ -116,7 +116,7 @@ def make_a_new_solution() -> Tuple[Program, Program]:
116
116
  return p2_puzzle, solution
117
117
 
118
118
 
119
- def make_a_new_ownership_layer_puzzle() -> Tuple[Program, Program]:
119
+ def make_a_new_ownership_layer_puzzle() -> tuple[Program, Program]:
120
120
  pubkey = int_to_public_key(1)
121
121
  innerpuz = puzzle_for_pk(pubkey)
122
122
  old_did = Program.to("test_2").get_tree_hash()