chia-blockchain 2.5.7rc3__py3-none-any.whl → 2.5.8rc1__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 (528) hide show
  1. chia/__init__.py +8 -4
  2. chia/_tests/blockchain/blockchain_test_utils.py +6 -8
  3. chia/_tests/blockchain/test_augmented_chain.py +4 -4
  4. chia/_tests/blockchain/test_blockchain.py +165 -190
  5. chia/_tests/blockchain/test_build_chains.py +2 -4
  6. chia/_tests/blockchain/test_get_block_generator.py +2 -3
  7. chia/_tests/clvm/coin_store.py +4 -7
  8. chia/_tests/clvm/test_clvm_step.py +4 -4
  9. chia/_tests/clvm/test_puzzle_compression.py +2 -1
  10. chia/_tests/clvm/test_puzzle_drivers.py +2 -2
  11. chia/_tests/clvm/test_singletons.py +2 -4
  12. chia/_tests/clvm/test_spend_sim.py +2 -2
  13. chia/_tests/cmds/cmd_test_utils.py +27 -45
  14. chia/_tests/cmds/test_cmd_framework.py +6 -6
  15. chia/_tests/cmds/test_daemon.py +3 -3
  16. chia/_tests/cmds/test_show.py +4 -4
  17. chia/_tests/cmds/test_tx_config_args.py +1 -2
  18. chia/_tests/cmds/testing_classes.py +4 -5
  19. chia/_tests/cmds/wallet/test_did.py +24 -27
  20. chia/_tests/cmds/wallet/test_nft.py +12 -10
  21. chia/_tests/cmds/wallet/test_vcs.py +11 -12
  22. chia/_tests/cmds/wallet/test_wallet.py +134 -89
  23. chia/_tests/conftest.py +59 -30
  24. chia/_tests/connection_utils.py +2 -2
  25. chia/_tests/core/cmds/test_beta.py +4 -4
  26. chia/_tests/core/cmds/test_keys.py +2 -3
  27. chia/_tests/core/cmds/test_wallet.py +15 -15
  28. chia/_tests/core/consensus/test_pot_iterations.py +19 -73
  29. chia/_tests/core/custom_types/test_proof_of_space.py +124 -98
  30. chia/_tests/core/daemon/test_daemon.py +11 -11
  31. chia/_tests/core/data_layer/conftest.py +2 -2
  32. chia/_tests/core/data_layer/test_data_rpc.py +28 -14
  33. chia/_tests/core/data_layer/test_data_store.py +10 -10
  34. chia/_tests/core/data_layer/util.py +11 -11
  35. chia/_tests/core/farmer/test_farmer_api.py +2 -4
  36. chia/_tests/core/full_node/full_sync/test_full_sync.py +8 -7
  37. chia/_tests/core/full_node/stores/test_block_store.py +5 -4
  38. chia/_tests/core/full_node/stores/test_coin_store.py +5 -11
  39. chia/_tests/core/full_node/stores/test_full_node_store.py +8 -8
  40. chia/_tests/core/full_node/stores/test_hint_store.py +2 -2
  41. chia/_tests/core/full_node/test_block_height_map.py +3 -4
  42. chia/_tests/core/full_node/test_conditions.py +21 -23
  43. chia/_tests/core/full_node/test_full_node.py +225 -62
  44. chia/_tests/core/full_node/test_hint_management.py +2 -4
  45. chia/_tests/core/full_node/test_performance.py +0 -1
  46. chia/_tests/core/full_node/test_prev_tx_block.py +88 -11
  47. chia/_tests/core/full_node/test_transactions.py +1 -2
  48. chia/_tests/core/full_node/test_tx_processing_queue.py +109 -25
  49. chia/_tests/core/mempool/test_mempool.py +29 -37
  50. chia/_tests/core/mempool/test_mempool_fee_estimator.py +39 -39
  51. chia/_tests/core/mempool/test_mempool_fee_protocol.py +2 -6
  52. chia/_tests/core/mempool/test_mempool_manager.py +963 -839
  53. chia/_tests/core/mempool/test_singleton_fast_forward.py +6 -6
  54. chia/_tests/core/server/serve.py +7 -7
  55. chia/_tests/core/server/test_dos.py +1 -2
  56. chia/_tests/core/server/test_event_loop.py +12 -4
  57. chia/_tests/core/server/test_loop.py +7 -8
  58. chia/_tests/core/server/test_rate_limits.py +9 -8
  59. chia/_tests/core/server/test_server.py +61 -1
  60. chia/_tests/core/services/test_services.py +2 -2
  61. chia/_tests/core/ssl/test_ssl.py +2 -2
  62. chia/_tests/core/test_cost_calculation.py +2 -6
  63. chia/_tests/core/test_farmer_harvester_rpc.py +3 -5
  64. chia/_tests/core/test_filter.py +0 -1
  65. chia/_tests/core/test_full_node_rpc.py +2 -2
  66. chia/_tests/core/test_merkle_set.py +1 -2
  67. chia/_tests/core/test_seeder.py +4 -4
  68. chia/_tests/core/util/test_config.py +4 -4
  69. chia/_tests/core/util/test_jsonify.py +2 -2
  70. chia/_tests/core/util/test_keychain.py +3 -3
  71. chia/_tests/core/util/test_lockfile.py +2 -1
  72. chia/_tests/core/util/test_log_exceptions.py +1 -2
  73. chia/_tests/core/util/test_streamable.py +17 -17
  74. chia/_tests/db/test_db_wrapper.py +3 -2
  75. chia/_tests/environments/wallet.py +14 -14
  76. chia/_tests/ether.py +4 -3
  77. chia/_tests/farmer_harvester/test_farmer.py +41 -24
  78. chia/_tests/farmer_harvester/test_farmer_harvester.py +50 -17
  79. chia/_tests/farmer_harvester/test_filter_prefix_bits.py +27 -27
  80. chia/_tests/farmer_harvester/test_third_party_harvesters.py +21 -22
  81. chia/_tests/fee_estimation/test_fee_estimation_integration.py +18 -18
  82. chia/_tests/fee_estimation/test_fee_estimation_rpc.py +11 -9
  83. chia/_tests/harvester/test_harvester_api.py +11 -4
  84. chia/_tests/plot_sync/test_plot_sync.py +13 -11
  85. chia/_tests/plot_sync/test_receiver.py +11 -10
  86. chia/_tests/plot_sync/test_sync_simulated.py +2 -2
  87. chia/_tests/plot_sync/util.py +1 -2
  88. chia/_tests/plotting/test_plot_manager.py +7 -6
  89. chia/_tests/plotting/test_prover.py +30 -38
  90. chia/_tests/pools/test_pool_cmdline.py +4 -6
  91. chia/_tests/pools/test_pool_rpc.py +203 -61
  92. chia/_tests/pools/test_pool_wallet.py +3 -3
  93. chia/_tests/pools/test_wallet_pool_store.py +1 -4
  94. chia/_tests/process_junit.py +2 -2
  95. chia/_tests/rpc/test_rpc_client.py +4 -4
  96. chia/_tests/rpc/test_rpc_server.py +3 -3
  97. chia/_tests/simulation/test_simulation.py +12 -25
  98. chia/_tests/solver/test_solver_service.py +13 -4
  99. chia/_tests/testconfig.py +2 -2
  100. chia/_tests/timelord/test_new_peak.py +22 -11
  101. chia/_tests/tools/test_run_block.py +0 -2
  102. chia/_tests/tools/test_virtual_project.py +2 -1
  103. chia/_tests/util/benchmarks.py +1 -0
  104. chia/_tests/util/blockchain.py +38 -36
  105. chia/_tests/util/blockchain_mock.py +11 -11
  106. chia/_tests/util/build_network_protocol_files.py +2 -1
  107. chia/_tests/util/coin_store.py +2 -1
  108. chia/_tests/util/config.py +1 -1
  109. chia/_tests/util/db_connection.py +2 -3
  110. chia/_tests/util/full_sync.py +9 -11
  111. chia/_tests/util/gen_ssl_certs.py +4 -5
  112. chia/_tests/util/get_name_puzzle_conditions.py +2 -0
  113. chia/_tests/util/misc.py +24 -24
  114. chia/_tests/util/network_protocol_data.py +20 -3
  115. chia/_tests/util/protocol_messages_bytes-v1.0 +0 -0
  116. chia/_tests/util/protocol_messages_json.py +292 -3
  117. chia/_tests/util/setup_nodes.py +62 -47
  118. chia/_tests/util/spend_sim.py +57 -57
  119. chia/_tests/util/test_async_pool.py +2 -3
  120. chia/_tests/util/test_chia_version.py +1 -3
  121. chia/_tests/util/test_config.py +3 -3
  122. chia/_tests/util/test_full_block_utils.py +6 -3
  123. chia/_tests/util/test_limited_semaphore.py +1 -2
  124. chia/_tests/util/test_misc.py +2 -2
  125. chia/_tests/util/test_network.py +1 -2
  126. chia/_tests/util/test_priority_mutex.py +3 -3
  127. chia/_tests/util/test_recursive_replace.py +5 -6
  128. chia/_tests/util/test_replace_str_to_bytes.py +8 -10
  129. chia/_tests/util/test_testnet_overrides.py +3 -3
  130. chia/_tests/util/time_out_assert.py +2 -2
  131. chia/_tests/wallet/cat_wallet/test_cat_lifecycle.py +4 -6
  132. chia/_tests/wallet/cat_wallet/test_cat_outer_puzzle.py +2 -4
  133. chia/_tests/wallet/cat_wallet/test_cat_wallet.py +19 -13
  134. chia/_tests/wallet/cat_wallet/test_offer_lifecycle.py +13 -13
  135. chia/_tests/wallet/cat_wallet/test_trades.py +40 -38
  136. chia/_tests/wallet/clawback/test_clawback_lifecycle.py +2 -4
  137. chia/_tests/wallet/conftest.py +6 -6
  138. chia/_tests/wallet/db_wallet/test_db_graftroot.py +1 -1
  139. chia/_tests/wallet/db_wallet/test_dl_offers.py +34 -34
  140. chia/_tests/wallet/did_wallet/test_did.py +16 -6
  141. chia/_tests/wallet/nft_wallet/test_nft_1_offers.py +21 -21
  142. chia/_tests/wallet/nft_wallet/test_nft_bulk_mint.py +20 -6
  143. chia/_tests/wallet/nft_wallet/test_nft_offers.py +19 -21
  144. chia/_tests/wallet/nft_wallet/test_nft_puzzles.py +1 -2
  145. chia/_tests/wallet/nft_wallet/test_nft_wallet.py +121 -2
  146. chia/_tests/wallet/nft_wallet/test_ownership_outer_puzzle.py +6 -9
  147. chia/_tests/wallet/rpc/test_dl_wallet_rpc.py +44 -1
  148. chia/_tests/wallet/rpc/test_wallet_rpc.py +1672 -896
  149. chia/_tests/wallet/sync/test_wallet_sync.py +43 -47
  150. chia/_tests/wallet/test_clvm_streamable.py +2 -3
  151. chia/_tests/wallet/test_coin_management.py +2 -2
  152. chia/_tests/wallet/test_conditions.py +45 -51
  153. chia/_tests/wallet/test_debug_spend_bundle.py +2 -2
  154. chia/_tests/wallet/test_new_wallet_protocol.py +4 -6
  155. chia/_tests/wallet/test_notifications.py +14 -14
  156. chia/_tests/wallet/test_signer_protocol.py +5 -5
  157. chia/_tests/wallet/test_singleton_lifecycle_fast.py +4 -3
  158. chia/_tests/wallet/test_transaction_store.py +20 -20
  159. chia/_tests/wallet/test_util.py +2 -2
  160. chia/_tests/wallet/test_wallet.py +380 -228
  161. chia/_tests/wallet/test_wallet_action_scope.py +4 -4
  162. chia/_tests/wallet/test_wallet_blockchain.py +12 -12
  163. chia/_tests/wallet/test_wallet_coin_store.py +3 -4
  164. chia/_tests/wallet/test_wallet_node.py +14 -14
  165. chia/_tests/wallet/test_wallet_test_framework.py +2 -1
  166. chia/_tests/wallet/test_wallet_utils.py +2 -3
  167. chia/_tests/wallet/vc_wallet/test_cr_outer_puzzle.py +3 -5
  168. chia/_tests/wallet/vc_wallet/test_vc_lifecycle.py +14 -15
  169. chia/_tests/wallet/vc_wallet/test_vc_wallet.py +29 -24
  170. chia/_tests/wallet/wallet_block_tools.py +12 -11
  171. chia/_tests/weight_proof/config.py +1 -0
  172. chia/_tests/weight_proof/test_weight_proof.py +5 -4
  173. chia/apis/__init__.py +21 -0
  174. chia/apis/farmer_stub.py +102 -0
  175. chia/apis/full_node_stub.py +372 -0
  176. chia/apis/harvester_stub.py +57 -0
  177. chia/apis/introducer_stub.py +35 -0
  178. chia/apis/solver_stub.py +30 -0
  179. chia/apis/stub_protocol_registry.py +21 -0
  180. chia/apis/timelord_stub.py +39 -0
  181. chia/apis/wallet_stub.py +161 -0
  182. chia/cmds/beta.py +3 -4
  183. chia/cmds/beta_funcs.py +4 -3
  184. chia/cmds/check_wallet_db.py +4 -4
  185. chia/cmds/chia.py +1 -2
  186. chia/cmds/cmd_classes.py +11 -13
  187. chia/cmds/cmd_helpers.py +11 -11
  188. chia/cmds/cmds_util.py +15 -15
  189. chia/cmds/coin_funcs.py +6 -7
  190. chia/cmds/coins.py +2 -3
  191. chia/cmds/configure.py +1 -2
  192. chia/cmds/data.py +42 -42
  193. chia/cmds/data_funcs.py +81 -81
  194. chia/cmds/db.py +4 -5
  195. chia/cmds/db_backup_func.py +2 -2
  196. chia/cmds/db_upgrade_func.py +3 -3
  197. chia/cmds/db_validate_func.py +2 -2
  198. chia/cmds/dev/data.py +4 -4
  199. chia/cmds/dev/gh.py +5 -5
  200. chia/cmds/dev/installers.py +2 -3
  201. chia/cmds/dev/mempool.py +3 -4
  202. chia/cmds/dev/mempool_funcs.py +4 -4
  203. chia/cmds/dev/sim.py +8 -8
  204. chia/cmds/dump_keyring.py +3 -3
  205. chia/cmds/farm.py +6 -8
  206. chia/cmds/farm_funcs.py +25 -24
  207. chia/cmds/init_funcs.py +4 -4
  208. chia/cmds/keys.py +16 -18
  209. chia/cmds/keys_funcs.py +36 -36
  210. chia/cmds/netspace.py +1 -3
  211. chia/cmds/netspace_funcs.py +1 -2
  212. chia/cmds/options.py +3 -2
  213. chia/cmds/param_types.py +17 -16
  214. chia/cmds/passphrase.py +6 -7
  215. chia/cmds/passphrase_funcs.py +11 -13
  216. chia/cmds/peer.py +1 -3
  217. chia/cmds/peer_funcs.py +3 -3
  218. chia/cmds/plotnft.py +6 -7
  219. chia/cmds/plotnft_funcs.py +37 -26
  220. chia/cmds/rpc.py +3 -3
  221. chia/cmds/show.py +3 -5
  222. chia/cmds/show_funcs.py +9 -9
  223. chia/cmds/sim_funcs.py +25 -26
  224. chia/cmds/solver.py +1 -3
  225. chia/cmds/solver_funcs.py +1 -2
  226. chia/cmds/start_funcs.py +2 -2
  227. chia/cmds/wallet.py +76 -81
  228. chia/cmds/wallet_funcs.py +206 -177
  229. chia/consensus/augmented_chain.py +6 -6
  230. chia/consensus/block_body_validation.py +19 -15
  231. chia/consensus/block_creation.py +25 -21
  232. chia/consensus/block_header_validation.py +27 -13
  233. chia/consensus/block_height_map.py +3 -6
  234. chia/consensus/block_height_map_protocol.py +2 -2
  235. chia/consensus/block_record.py +2 -4
  236. chia/consensus/blockchain.py +58 -40
  237. chia/consensus/blockchain_interface.py +7 -7
  238. chia/consensus/coin_store_protocol.py +5 -6
  239. chia/consensus/condition_tools.py +4 -4
  240. chia/consensus/cost_calculator.py +2 -3
  241. chia/consensus/default_constants.py +16 -13
  242. chia/consensus/deficit.py +1 -3
  243. chia/consensus/difficulty_adjustment.py +3 -5
  244. chia/consensus/find_fork_point.py +2 -4
  245. chia/consensus/full_block_to_block_record.py +11 -13
  246. chia/consensus/generator_tools.py +2 -3
  247. chia/consensus/get_block_challenge.py +42 -26
  248. chia/consensus/get_block_generator.py +2 -3
  249. chia/consensus/make_sub_epoch_summary.py +8 -7
  250. chia/consensus/multiprocess_validation.py +31 -20
  251. chia/consensus/pos_quality.py +6 -23
  252. chia/consensus/pot_iterations.py +17 -44
  253. chia/consensus/signage_point.py +4 -5
  254. chia/consensus/vdf_info_computation.py +2 -4
  255. chia/daemon/client.py +8 -8
  256. chia/daemon/keychain_proxy.py +31 -37
  257. chia/daemon/server.py +32 -33
  258. chia/daemon/windows_signal.py +4 -3
  259. chia/data_layer/data_layer.py +86 -77
  260. chia/data_layer/data_layer_rpc_api.py +9 -9
  261. chia/data_layer/data_layer_rpc_client.py +13 -15
  262. chia/data_layer/data_layer_server.py +3 -3
  263. chia/data_layer/data_layer_util.py +14 -14
  264. chia/data_layer/data_layer_wallet.py +94 -101
  265. chia/data_layer/data_store.py +50 -50
  266. chia/data_layer/dl_wallet_store.py +9 -12
  267. chia/data_layer/download_data.py +8 -9
  268. chia/data_layer/s3_plugin_service.py +5 -9
  269. chia/data_layer/start_data_layer.py +5 -5
  270. chia/farmer/farmer.py +31 -31
  271. chia/farmer/farmer_api.py +45 -33
  272. chia/farmer/farmer_rpc_api.py +5 -4
  273. chia/farmer/farmer_rpc_client.py +6 -6
  274. chia/farmer/start_farmer.py +12 -7
  275. chia/full_node/block_store.py +13 -16
  276. chia/full_node/check_fork_next_block.py +1 -2
  277. chia/full_node/coin_store.py +15 -16
  278. chia/full_node/eligible_coin_spends.py +3 -3
  279. chia/full_node/fee_estimate_store.py +2 -3
  280. chia/full_node/fee_tracker.py +1 -2
  281. chia/full_node/full_block_utils.py +4 -4
  282. chia/full_node/full_node.py +238 -224
  283. chia/full_node/full_node_api.py +193 -150
  284. chia/full_node/full_node_rpc_api.py +53 -31
  285. chia/full_node/full_node_rpc_client.py +18 -19
  286. chia/full_node/full_node_store.py +45 -43
  287. chia/full_node/hint_management.py +2 -2
  288. chia/full_node/mempool.py +17 -19
  289. chia/full_node/mempool_manager.py +89 -42
  290. chia/full_node/pending_tx_cache.py +2 -3
  291. chia/full_node/start_full_node.py +5 -5
  292. chia/full_node/sync_store.py +3 -4
  293. chia/full_node/tx_processing_queue.py +34 -13
  294. chia/full_node/weight_proof.py +61 -48
  295. chia/harvester/harvester.py +25 -24
  296. chia/harvester/harvester_api.py +61 -38
  297. chia/harvester/harvester_rpc_api.py +10 -10
  298. chia/harvester/start_harvester.py +4 -4
  299. chia/introducer/introducer.py +3 -3
  300. chia/introducer/introducer_api.py +6 -4
  301. chia/introducer/start_introducer.py +4 -4
  302. chia/legacy/keyring.py +3 -3
  303. chia/plot_sync/delta.py +1 -2
  304. chia/plot_sync/receiver.py +20 -17
  305. chia/plot_sync/sender.py +15 -10
  306. chia/plotters/bladebit.py +7 -7
  307. chia/plotters/chiapos.py +2 -2
  308. chia/plotters/madmax.py +4 -4
  309. chia/plotters/plotters.py +4 -4
  310. chia/plotters/plotters_util.py +3 -3
  311. chia/plotting/cache.py +20 -14
  312. chia/plotting/check_plots.py +26 -35
  313. chia/plotting/create_plots.py +22 -23
  314. chia/plotting/manager.py +21 -14
  315. chia/plotting/prover.py +59 -42
  316. chia/plotting/util.py +16 -16
  317. chia/pools/pool_config.py +2 -1
  318. chia/pools/pool_puzzles.py +11 -12
  319. chia/pools/pool_wallet.py +34 -57
  320. chia/pools/pool_wallet_info.py +39 -10
  321. chia/protocols/farmer_protocol.py +8 -9
  322. chia/protocols/fee_estimate.py +3 -4
  323. chia/protocols/full_node_protocol.py +3 -4
  324. chia/protocols/harvester_protocol.py +27 -15
  325. chia/protocols/outbound_message.py +3 -3
  326. chia/protocols/pool_protocol.py +8 -9
  327. chia/protocols/shared_protocol.py +1 -2
  328. chia/protocols/solver_protocol.py +9 -2
  329. chia/protocols/timelord_protocol.py +4 -7
  330. chia/protocols/wallet_protocol.py +11 -12
  331. chia/rpc/rpc_client.py +9 -9
  332. chia/rpc/rpc_server.py +17 -17
  333. chia/rpc/util.py +2 -2
  334. chia/seeder/crawler.py +8 -8
  335. chia/seeder/crawler_api.py +21 -27
  336. chia/seeder/crawler_rpc_api.py +2 -2
  337. chia/seeder/dns_server.py +21 -21
  338. chia/seeder/start_crawler.py +4 -4
  339. chia/server/address_manager.py +15 -16
  340. chia/server/api_protocol.py +11 -11
  341. chia/server/chia_policy.py +46 -26
  342. chia/server/introducer_peers.py +2 -3
  343. chia/server/node_discovery.py +19 -19
  344. chia/server/rate_limit_numbers.py +4 -5
  345. chia/server/rate_limits.py +4 -4
  346. chia/server/resolve_peer_info.py +4 -4
  347. chia/server/server.py +49 -52
  348. chia/server/signal_handlers.py +6 -6
  349. chia/server/start_service.py +17 -17
  350. chia/server/upnp.py +4 -6
  351. chia/server/ws_connection.py +52 -37
  352. chia/simulator/add_blocks_in_batches.py +1 -3
  353. chia/simulator/block_tools.py +312 -200
  354. chia/simulator/full_node_simulator.py +56 -35
  355. chia/simulator/keyring.py +2 -3
  356. chia/simulator/setup_services.py +16 -15
  357. chia/simulator/simulator_full_node_rpc_api.py +1 -2
  358. chia/simulator/simulator_full_node_rpc_client.py +1 -2
  359. chia/simulator/simulator_protocol.py +1 -2
  360. chia/simulator/simulator_test_tools.py +3 -3
  361. chia/simulator/start_simulator.py +7 -7
  362. chia/simulator/wallet_tools.py +10 -10
  363. chia/solver/solver.py +10 -10
  364. chia/solver/solver_api.py +10 -8
  365. chia/solver/solver_rpc_api.py +2 -2
  366. chia/solver/start_solver.py +4 -4
  367. chia/ssl/cacert.pem +148 -90
  368. chia/ssl/chia_ca.crt +14 -10
  369. chia/ssl/chia_ca_old.crt +19 -0
  370. chia/ssl/create_ssl.py +4 -4
  371. chia/ssl/renewedselfsignedca.conf +4 -0
  372. chia/ssl/ssl_check.py +1 -2
  373. chia/timelord/iters_from_block.py +1 -4
  374. chia/timelord/start_timelord.py +4 -4
  375. chia/timelord/timelord.py +44 -40
  376. chia/timelord/timelord_api.py +6 -4
  377. chia/timelord/timelord_launcher.py +2 -2
  378. chia/timelord/timelord_rpc_api.py +2 -2
  379. chia/timelord/timelord_state.py +11 -12
  380. chia/types/block_protocol.py +1 -3
  381. chia/types/blockchain_format/coin.py +1 -3
  382. chia/types/blockchain_format/program.py +11 -8
  383. chia/types/blockchain_format/proof_of_space.py +123 -76
  384. chia/types/blockchain_format/tree_hash.py +3 -3
  385. chia/types/blockchain_format/vdf.py +1 -2
  386. chia/types/coin_spend.py +3 -3
  387. chia/types/mempool_item.py +5 -5
  388. chia/types/mempool_submission_status.py +2 -3
  389. chia/types/peer_info.py +1 -2
  390. chia/types/unfinished_header_block.py +3 -4
  391. chia/types/validation_state.py +1 -2
  392. chia/util/action_scope.py +8 -8
  393. chia/util/async_pool.py +5 -5
  394. chia/util/bech32m.py +1 -2
  395. chia/util/beta_metrics.py +2 -2
  396. chia/util/block_cache.py +4 -4
  397. chia/util/chia_logging.py +2 -2
  398. chia/util/chia_version.py +1 -2
  399. chia/util/config.py +15 -16
  400. chia/util/db_wrapper.py +26 -27
  401. chia/util/default_root.py +1 -2
  402. chia/util/errors.py +3 -3
  403. chia/util/file_keyring.py +14 -14
  404. chia/util/files.py +2 -3
  405. chia/util/hash.py +4 -4
  406. chia/util/initial-config.yaml +3 -5
  407. chia/util/inline_executor.py +2 -1
  408. chia/util/ip_address.py +1 -2
  409. chia/util/keychain.py +25 -27
  410. chia/util/keyring_wrapper.py +18 -19
  411. chia/util/lock.py +3 -4
  412. chia/util/log_exceptions.py +1 -2
  413. chia/util/lru_cache.py +2 -2
  414. chia/util/network.py +6 -6
  415. chia/util/path.py +2 -3
  416. chia/util/priority_mutex.py +2 -2
  417. chia/util/profiler.py +1 -2
  418. chia/util/safe_cancel_task.py +1 -2
  419. chia/util/streamable.py +22 -8
  420. chia/util/task_referencer.py +1 -1
  421. chia/util/timing.py +3 -3
  422. chia/util/virtual_project_analysis.py +6 -5
  423. chia/util/ws_message.py +2 -2
  424. chia/wallet/cat_wallet/cat_info.py +3 -4
  425. chia/wallet/cat_wallet/cat_outer_puzzle.py +12 -11
  426. chia/wallet/cat_wallet/cat_utils.py +3 -4
  427. chia/wallet/cat_wallet/cat_wallet.py +61 -83
  428. chia/wallet/cat_wallet/lineage_store.py +3 -4
  429. chia/wallet/cat_wallet/r_cat_wallet.py +19 -22
  430. chia/wallet/coin_selection.py +9 -10
  431. chia/wallet/conditions.py +120 -105
  432. chia/wallet/db_wallet/db_wallet_puzzles.py +4 -5
  433. chia/wallet/derivation_record.py +1 -2
  434. chia/wallet/derive_keys.py +2 -4
  435. chia/wallet/did_wallet/did_info.py +10 -11
  436. chia/wallet/did_wallet/did_wallet.py +36 -82
  437. chia/wallet/did_wallet/did_wallet_puzzles.py +7 -8
  438. chia/wallet/driver_protocol.py +5 -7
  439. chia/wallet/lineage_proof.py +4 -4
  440. chia/wallet/nft_wallet/metadata_outer_puzzle.py +11 -11
  441. chia/wallet/nft_wallet/nft_info.py +8 -9
  442. chia/wallet/nft_wallet/nft_puzzle_utils.py +8 -8
  443. chia/wallet/nft_wallet/nft_wallet.py +79 -116
  444. chia/wallet/nft_wallet/ownership_outer_puzzle.py +14 -14
  445. chia/wallet/nft_wallet/singleton_outer_puzzle.py +12 -11
  446. chia/wallet/nft_wallet/transfer_program_puzzle.py +11 -11
  447. chia/wallet/nft_wallet/uncurry_nft.py +10 -11
  448. chia/wallet/notification_manager.py +3 -3
  449. chia/wallet/notification_store.py +44 -61
  450. chia/wallet/outer_puzzles.py +6 -7
  451. chia/wallet/puzzle_drivers.py +34 -6
  452. chia/wallet/puzzles/clawback/drivers.py +6 -6
  453. chia/wallet/puzzles/deployed_puzzle_hashes.json +1 -54
  454. chia/wallet/puzzles/load_clvm.py +1 -1
  455. chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.py +1 -2
  456. chia/wallet/puzzles/singleton_top_layer.py +2 -3
  457. chia/wallet/puzzles/singleton_top_layer_v1_1.py +3 -4
  458. chia/wallet/puzzles/tails.py +3 -3
  459. chia/wallet/singleton.py +5 -7
  460. chia/wallet/singleton_record.py +3 -3
  461. chia/wallet/start_wallet.py +5 -5
  462. chia/wallet/trade_manager.py +37 -58
  463. chia/wallet/trade_record.py +4 -4
  464. chia/wallet/trading/offer.py +59 -46
  465. chia/wallet/trading/trade_store.py +8 -9
  466. chia/wallet/transaction_record.py +8 -8
  467. chia/wallet/uncurried_puzzle.py +1 -2
  468. chia/wallet/util/clvm_streamable.py +12 -12
  469. chia/wallet/util/compute_hints.py +4 -5
  470. chia/wallet/util/curry_and_treehash.py +1 -2
  471. chia/wallet/util/merkle_tree.py +2 -3
  472. chia/wallet/util/peer_request_cache.py +8 -8
  473. chia/wallet/util/signing.py +85 -0
  474. chia/wallet/util/tx_config.py +15 -6
  475. chia/wallet/util/wallet_sync_utils.py +14 -16
  476. chia/wallet/util/wallet_types.py +2 -2
  477. chia/wallet/vc_wallet/cr_cat_drivers.py +10 -11
  478. chia/wallet/vc_wallet/cr_cat_wallet.py +50 -68
  479. chia/wallet/vc_wallet/cr_outer_puzzle.py +14 -13
  480. chia/wallet/vc_wallet/vc_drivers.py +27 -27
  481. chia/wallet/vc_wallet/vc_store.py +5 -6
  482. chia/wallet/vc_wallet/vc_wallet.py +33 -61
  483. chia/wallet/wallet.py +50 -78
  484. chia/wallet/wallet_action_scope.py +11 -11
  485. chia/wallet/wallet_blockchain.py +12 -12
  486. chia/wallet/wallet_coin_record.py +12 -6
  487. chia/wallet/wallet_coin_store.py +24 -25
  488. chia/wallet/wallet_interested_store.py +3 -5
  489. chia/wallet/wallet_nft_store.py +10 -11
  490. chia/wallet/wallet_node.py +53 -61
  491. chia/wallet/wallet_node_api.py +5 -3
  492. chia/wallet/wallet_protocol.py +23 -23
  493. chia/wallet/wallet_puzzle_store.py +15 -18
  494. chia/wallet/wallet_request_types.py +778 -114
  495. chia/wallet/wallet_retry_store.py +1 -3
  496. chia/wallet/wallet_rpc_api.py +572 -909
  497. chia/wallet/wallet_rpc_client.py +87 -279
  498. chia/wallet/wallet_singleton_store.py +3 -4
  499. chia/wallet/wallet_state_manager.py +332 -106
  500. chia/wallet/wallet_transaction_store.py +11 -14
  501. chia/wallet/wallet_user_store.py +4 -6
  502. chia/wallet/wallet_weight_proof_handler.py +4 -4
  503. {chia_blockchain-2.5.7rc3.dist-info → chia_blockchain-2.5.8rc1.dist-info}/METADATA +6 -5
  504. {chia_blockchain-2.5.7rc3.dist-info → chia_blockchain-2.5.8rc1.dist-info}/RECORD +507 -516
  505. chia/apis.py +0 -21
  506. chia/consensus/check_time_locks.py +0 -57
  507. chia/data_layer/puzzles/__init__.py +0 -0
  508. chia/data_layer/puzzles/graftroot_dl_offers.clsp +0 -100
  509. chia/data_layer/puzzles/graftroot_dl_offers.clsp.hex +0 -1
  510. chia/types/coin_record.py +0 -44
  511. chia/wallet/nft_wallet/puzzles/__init__.py +0 -0
  512. chia/wallet/nft_wallet/puzzles/create_nft_launcher_from_did.clsp +0 -6
  513. chia/wallet/nft_wallet/puzzles/create_nft_launcher_from_did.clsp.hex +0 -1
  514. chia/wallet/nft_wallet/puzzles/nft_intermediate_launcher.clsp +0 -6
  515. chia/wallet/nft_wallet/puzzles/nft_intermediate_launcher.clsp.hex +0 -1
  516. chia/wallet/nft_wallet/puzzles/nft_metadata_updater_default.clsp +0 -30
  517. chia/wallet/nft_wallet/puzzles/nft_metadata_updater_default.clsp.hex +0 -1
  518. chia/wallet/nft_wallet/puzzles/nft_metadata_updater_updateable.clsp +0 -28
  519. chia/wallet/nft_wallet/puzzles/nft_metadata_updater_updateable.clsp.hex +0 -1
  520. chia/wallet/nft_wallet/puzzles/nft_ownership_layer.clsp +0 -100
  521. chia/wallet/nft_wallet/puzzles/nft_ownership_layer.clsp.hex +0 -1
  522. chia/wallet/nft_wallet/puzzles/nft_ownership_transfer_program_one_way_claim_with_royalties.clsp +0 -78
  523. chia/wallet/nft_wallet/puzzles/nft_ownership_transfer_program_one_way_claim_with_royalties.clsp.hex +0 -1
  524. chia/wallet/nft_wallet/puzzles/nft_state_layer.clsp +0 -74
  525. chia/wallet/nft_wallet/puzzles/nft_state_layer.clsp.hex +0 -1
  526. {chia_blockchain-2.5.7rc3.dist-info → chia_blockchain-2.5.8rc1.dist-info}/WHEEL +0 -0
  527. {chia_blockchain-2.5.7rc3.dist-info → chia_blockchain-2.5.8rc1.dist-info}/entry_points.txt +0 -0
  528. {chia_blockchain-2.5.7rc3.dist-info → chia_blockchain-2.5.8rc1.dist-info}/licenses/LICENSE +0 -0
@@ -1,7 +1,5 @@
1
1
  from __future__ import annotations
2
2
 
3
- from typing import Optional
4
-
5
3
  import pytest
6
4
  from chia_rs import Coin, ConsensusConstants, FullBlock, additions_and_removals, get_flags_for_height_and_constants
7
5
  from chia_rs.sized_ints import uint64
@@ -102,8 +100,8 @@ def validate_chain(
102
100
  normalized_to_identity_icc_eos: bool = False,
103
101
  normalized_to_identity_cc_sp: bool = False,
104
102
  normalized_to_identity_cc_ip: bool = False,
105
- block_list_input: Optional[list[FullBlock]] = None,
106
- time_per_block: Optional[float] = None,
103
+ block_list_input: list[FullBlock] | None = None,
104
+ time_per_block: float | None = None,
107
105
  dummy_block_references: bool = False,
108
106
  include_transactions: bool = False,
109
107
  ) -> None:
@@ -1,7 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  from dataclasses import dataclass
4
- from typing import Optional
5
4
 
6
5
  import pytest
7
6
  from chia_rs.sized_bytes import bytes32
@@ -16,14 +15,14 @@ from chia.util.casts import int_to_bytes
16
15
  @dataclass(frozen=True)
17
16
  class BR:
18
17
  prev_header_hash: bytes32
19
- transactions_generator: Optional[SerializedProgram]
18
+ transactions_generator: SerializedProgram | None
20
19
  transactions_generator_ref_list: list[uint32]
21
20
 
22
21
 
23
22
  @dataclass(frozen=True)
24
23
  class FB:
25
24
  prev_header_hash: bytes32
26
- transactions_generator: Optional[SerializedProgram]
25
+ transactions_generator: SerializedProgram | None
27
26
  height: uint32
28
27
 
29
28
 
@@ -2,19 +2,16 @@ from __future__ import annotations
2
2
 
3
3
  from collections import defaultdict
4
4
  from collections.abc import Iterator
5
- from dataclasses import dataclass, replace
6
- from typing import Optional
5
+ from dataclasses import dataclass
7
6
 
8
- from chia_rs import ConsensusConstants, SpendBundle
7
+ from chia_rs import CoinRecord, ConsensusConstants, SpendBundle, check_time_locks
9
8
  from chia_rs.sized_bytes import bytes32
10
9
  from chia_rs.sized_ints import uint32, uint64
11
10
 
12
11
  from chia._tests.util.get_name_puzzle_conditions import get_name_puzzle_conditions
13
- from chia.consensus.check_time_locks import check_time_locks
14
12
  from chia.consensus.cost_calculator import NPCResult
15
13
  from chia.full_node.bundle_tools import simple_solution_generator
16
14
  from chia.types.blockchain_format.coin import Coin
17
- from chia.types.coin_record import CoinRecord
18
15
  from chia.util.errors import Err
19
16
 
20
17
  MAX_COST = 11000000000
@@ -115,7 +112,7 @@ class CoinStore:
115
112
  for spent_coin in removals:
116
113
  coin_name = spent_coin.name()
117
114
  coin_record = self._db[coin_name]
118
- self._db[coin_name] = replace(coin_record, spent_block_index=now.height)
115
+ self._db[coin_name] = coin_record.replace(spent_block_index=now.height)
119
116
  return additions, spend_bundle.coin_spends
120
117
 
121
118
  def coins_for_puzzle_hash(self, puzzle_hash: bytes32) -> Iterator[Coin]:
@@ -145,5 +142,5 @@ class CoinStore:
145
142
  )
146
143
  self._ph_index[coin.puzzle_hash].append(name)
147
144
 
148
- def coin_record(self, coin_id: bytes32) -> Optional[CoinRecord]:
145
+ def coin_record(self, coin_id: bytes32) -> CoinRecord | None:
149
146
  return self._db.get(coin_id)
@@ -1,8 +1,8 @@
1
1
  from __future__ import annotations
2
2
 
3
- from typing import Any, Optional
3
+ from typing import Any
4
4
 
5
- from clvm_tools_rs import start_clvm_program
5
+ from chialisp import start_clvm_program
6
6
 
7
7
  factorial = (
8
8
  "ff02ffff01ff02ff02ffff04ff02ffff04ff05ff80808080ffff04ffff01ff02"
@@ -17,8 +17,8 @@ factorial_sym = {factorial_function_hash: "factorial"}
17
17
  def test_simple_program_run() -> None:
18
18
  p = start_clvm_program(factorial, "ff0580", factorial_sym)
19
19
 
20
- last: Optional[Any] = None
21
- location: Optional[Any] = None
20
+ last: Any | None = None
21
+ location: Any | None = None
22
22
 
23
23
  while not p.is_ended():
24
24
  step_result = p.step()
@@ -1,8 +1,9 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import logging
4
+ from collections.abc import Callable
4
5
  from dataclasses import dataclass
5
- from typing import Callable, SupportsBytes
6
+ from typing import SupportsBytes
6
7
 
7
8
  import pytest
8
9
  from chia_rs import CoinSpend, G1Element, G2Element, SpendBundle
@@ -1,6 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
- from typing import Any, Union
3
+ from typing import Any
4
4
 
5
5
  import pytest
6
6
 
@@ -35,7 +35,7 @@ def test_puzzle_info() -> None:
35
35
  assert solver == Solver(capitalize_bytes)
36
36
  assert puzzle_info == PuzzleInfo(capitalize_bytes)
37
37
 
38
- obj: Union[PuzzleInfo, Solver]
38
+ obj: PuzzleInfo | Solver
39
39
  for obj in (puzzle_info, solver):
40
40
  assert obj["string"] == "hello"
41
41
  assert obj["bytes"] == bytes.fromhex("cafef00d")
@@ -1,7 +1,5 @@
1
1
  from __future__ import annotations
2
2
 
3
- from typing import Optional
4
-
5
3
  import pytest
6
4
  from chia_rs import AugSchemeMPL, CoinSpend, G1Element, G2Element, PrivateKey, SpendBundle
7
5
  from chia_rs.sized_bytes import bytes32
@@ -54,9 +52,9 @@ async def make_and_spend_bundle(
54
52
  coin: Coin,
55
53
  delegated_puzzle: Program,
56
54
  coinsols: list[CoinSpend],
57
- ex_error: Optional[Err] = None,
55
+ ex_error: Err | None = None,
58
56
  fail_msg: str = "",
59
- cost_logger: Optional[CostLogger] = None,
57
+ cost_logger: CostLogger | None = None,
60
58
  cost_log_msg: str = "",
61
59
  ):
62
60
  signature: G2Element = sign_delegated_puz(delegated_puzzle, coin)
@@ -73,8 +73,8 @@ async def test_all_endpoints():
73
73
  assert len(coin_records) == 2
74
74
  coin_records = await sim_client.get_coin_records_by_hint(non_existent_hint)
75
75
  assert len(coin_records) == 0
76
- coin_records = await sim_client.get_coin_records_by_puzzle_hash(acs.get_tree_hash())
77
- next_coin = coin_records[-1].coin
76
+ coin_records = await sim_client.get_coin_records_by_puzzle_hash(acs.get_tree_hash(), include_spent_coins=False)
77
+ next_coin = next(cr.coin for cr in coin_records if cr.coin.amount >= 2)
78
78
  height = sim.get_height()
79
79
  acs_hint_next_coin = make_spend(
80
80
  next_coin,
@@ -5,7 +5,7 @@ from collections.abc import AsyncIterator, Iterable
5
5
  from contextlib import asynccontextmanager
6
6
  from dataclasses import dataclass, field
7
7
  from pathlib import Path
8
- from typing import Any, Optional, cast
8
+ from typing import Any, cast
9
9
 
10
10
  from chia_rs import BlockRecord, Coin, G1Element, G2Element
11
11
  from chia_rs.sized_bytes import bytes32
@@ -25,7 +25,7 @@ from chia.simulator.simulator_full_node_rpc_client import SimulatorFullNodeRpcCl
25
25
  from chia.types.signing_mode import SigningMode
26
26
  from chia.util.bech32m import encode_puzzle_hash
27
27
  from chia.util.config import load_config
28
- from chia.wallet.conditions import ConditionValidTimes
28
+ from chia.wallet.conditions import Condition, ConditionValidTimes
29
29
  from chia.wallet.nft_wallet.nft_info import NFTInfo
30
30
  from chia.wallet.nft_wallet.nft_wallet import NFTWallet
31
31
  from chia.wallet.transaction_record import TransactionRecord
@@ -37,6 +37,9 @@ from chia.wallet.wallet_request_types import (
37
37
  CATAssetIDToNameResponse,
38
38
  CATGetName,
39
39
  CATGetNameResponse,
40
+ CreateNewWallet,
41
+ CreateNewWalletResponse,
42
+ CreateNewWalletType,
40
43
  GetSyncStatusResponse,
41
44
  GetTransaction,
42
45
  GetTransactionResponse,
@@ -46,7 +49,6 @@ from chia.wallet.wallet_request_types import (
46
49
  NFTCalculateRoyaltiesResponse,
47
50
  NFTGetInfo,
48
51
  NFTGetInfoResponse,
49
- SendTransactionMultiResponse,
50
52
  SignMessageByAddress,
51
53
  SignMessageByAddressResponse,
52
54
  SignMessageByID,
@@ -59,15 +61,15 @@ from chia.wallet.wallet_spend_bundle import WalletSpendBundle
59
61
  # Any functions that are the same for every command being tested should be below.
60
62
  # Functions that are specific to a command should be in the test file for that command.
61
63
 
62
- logType = dict[str, Optional[list[tuple[Any, ...]]]]
64
+ logType = dict[str, list[tuple[Any, ...]] | None]
63
65
 
64
66
 
65
67
  @dataclass
66
68
  class TestRpcClient:
67
69
  client_type: type[RpcClient]
68
- rpc_port: Optional[uint16] = None
69
- root_path: Optional[Path] = None
70
- config: Optional[dict[str, Any]] = None
70
+ rpc_port: uint16 | None = None
71
+ root_path: Path | None = None
72
+ config: dict[str, Any] | None = None
71
73
  create_called: bool = field(init=False, default=False)
72
74
  rpc_log: dict[str, list[tuple[Any, ...]]] = field(init=False, default_factory=dict)
73
75
 
@@ -235,42 +237,22 @@ class TestWalletRpcClient(TestRpcClient):
235
237
  )
236
238
  )
237
239
 
238
- async def send_transaction_multi(
240
+ async def create_new_wallet(
239
241
  self,
240
- wallet_id: int,
241
- additions: list[dict[str, object]],
242
+ request: CreateNewWallet,
242
243
  tx_config: TXConfig,
243
- coins: Optional[list[Coin]] = None,
244
- fee: uint64 = uint64(0),
245
- push: bool = True,
244
+ extra_conditions: tuple[Condition, ...] = tuple(),
246
245
  timelock_info: ConditionValidTimes = ConditionValidTimes(),
247
- ) -> SendTransactionMultiResponse:
248
- self.add_to_log("send_transaction_multi", (wallet_id, additions, tx_config, coins, fee, push, timelock_info))
249
- name = bytes32([2] * 32)
250
- return SendTransactionMultiResponse(
246
+ ) -> CreateNewWalletResponse:
247
+ self.add_to_log("create_new_wallet", (request, tx_config, extra_conditions, timelock_info))
248
+ return CreateNewWalletResponse(
251
249
  [STD_UTX],
252
250
  [STD_TX],
253
- TransactionRecord(
254
- confirmed_at_height=uint32(1),
255
- created_at_time=uint64(1234),
256
- to_puzzle_hash=bytes32([1] * 32),
257
- to_address=encode_puzzle_hash(bytes32([1] * 32), "xch"),
258
- amount=uint64(12345678),
259
- fee_amount=uint64(1234567),
260
- confirmed=False,
261
- sent=uint32(0),
262
- spend_bundle=WalletSpendBundle([], G2Element()),
263
- additions=[Coin(bytes32([1] * 32), bytes32([2] * 32), uint64(12345678))],
264
- removals=[Coin(bytes32([2] * 32), bytes32([4] * 32), uint64(12345678))],
265
- wallet_id=uint32(1),
266
- sent_to=[("aaaaa", uint8(1), None)],
267
- trade_id=None,
268
- type=uint32(TransactionType.OUTGOING_TX.value),
269
- name=name,
270
- memos={bytes32([3] * 32): [bytes([4] * 32)]},
271
- valid_times=ConditionValidTimes(),
272
- ),
273
- name,
251
+ type=(
252
+ WalletType.NFT if request.wallet_type == CreateNewWalletType.NFT_WALLET else WalletType.DECENTRALIZED_ID
253
+ ).name,
254
+ wallet_id=uint32(4 if request.wallet_type == CreateNewWalletType.NFT_WALLET else 3),
255
+ my_did="did:chia:1qgpqyqszqgpqyqszqgpqyqszqgpqyqszqgpqyqszqgpqyqszqgpq4msw0c",
274
256
  )
275
257
 
276
258
 
@@ -280,8 +262,8 @@ class TestFullNodeRpcClient(TestRpcClient):
280
262
 
281
263
  async def get_fee_estimate(
282
264
  self,
283
- target_times: Optional[list[int]],
284
- cost: Optional[int],
265
+ target_times: list[int] | None,
266
+ cost: int | None,
285
267
  ) -> dict[str, Any]:
286
268
  return {}
287
269
 
@@ -313,11 +295,11 @@ class TestFullNodeRpcClient(TestRpcClient):
313
295
  self.add_to_log("get_blockchain_state", ())
314
296
  return response
315
297
 
316
- async def get_block_record_by_height(self, height: int) -> Optional[BlockRecord]:
298
+ async def get_block_record_by_height(self, height: int) -> BlockRecord | None:
317
299
  self.add_to_log("get_block_record_by_height", (height,))
318
300
  return cast(BlockRecord, create_test_block_record(height=uint32(height)))
319
301
 
320
- async def get_block_record(self, header_hash: bytes32) -> Optional[BlockRecord]:
302
+ async def get_block_record(self, header_hash: bytes32) -> BlockRecord | None:
321
303
  self.add_to_log("get_block_record", (header_hash,))
322
304
  return cast(BlockRecord, create_test_block_record(header_hash=header_hash))
323
305
 
@@ -374,7 +356,7 @@ def create_service_and_wallet_client_generators(test_rpc_clients: TestRpcClients
374
356
  async def test_get_any_service_client(
375
357
  client_type: type[_T_RpcClient],
376
358
  root_path: Path,
377
- rpc_port: Optional[int] = None,
359
+ rpc_port: int | None = None,
378
360
  consume_errors: bool = True,
379
361
  use_ssl: bool = True,
380
362
  ) -> AsyncIterator[tuple[_T_RpcClient, dict[str, Any]]]:
@@ -402,8 +384,8 @@ def create_service_and_wallet_client_generators(test_rpc_clients: TestRpcClients
402
384
  @asynccontextmanager
403
385
  async def test_get_wallet_client(
404
386
  root_path: Path = default_root,
405
- wallet_rpc_port: Optional[int] = None,
406
- fingerprint: Optional[int] = None,
387
+ wallet_rpc_port: int | None = None,
388
+ fingerprint: int | None = None,
407
389
  ) -> AsyncIterator[tuple[WalletRpcClient, int, dict[str, Any]]]:
408
390
  async with test_get_any_service_client(WalletRpcClient, root_path, wallet_rpc_port) as (wallet_client, config):
409
391
  wallet_client.fingerprint = fingerprint # type: ignore
@@ -5,7 +5,7 @@ import textwrap
5
5
  from collections.abc import Sequence
6
6
  from dataclasses import asdict
7
7
  from decimal import Decimal
8
- from typing import Any, Optional
8
+ from typing import Any
9
9
 
10
10
  import click
11
11
  import pytest
@@ -32,7 +32,7 @@ from chia.wallet.transaction_record import TransactionRecord
32
32
  from chia.wallet.util.tx_config import CoinSelectionConfig, TXConfig
33
33
 
34
34
 
35
- def check_click_parsing(cmd: ChiaCommand, *args: str, context: Optional[ChiaCliContext] = None) -> None:
35
+ def check_click_parsing(cmd: ChiaCommand, *args: str, context: ChiaCliContext | None = None) -> None:
36
36
  @click.group()
37
37
  def _cmd() -> None:
38
38
  pass
@@ -232,7 +232,7 @@ def test_typing() -> None:
232
232
  # Test optional
233
233
  @chia_command(group=cmd, name="temp_cmd_optional", short_help="blah", help="n/a")
234
234
  class TempCMDOptional:
235
- optional: Optional[int] = option("--optional", required=False)
235
+ optional: int | None = option("--optional", required=False)
236
236
 
237
237
  def run(self) -> None: ...
238
238
 
@@ -244,7 +244,7 @@ def test_typing() -> None:
244
244
 
245
245
  @chia_command(group=cmd, name="temp_cmd_optional_bad", short_help="blah", help="n/a")
246
246
  class TempCMDOptionalBad2:
247
- optional: Optional[int] = option("--optional", required=True)
247
+ optional: int | None = option("--optional", required=True)
248
248
 
249
249
  def run(self) -> None: ...
250
250
 
@@ -252,13 +252,13 @@ def test_typing() -> None:
252
252
 
253
253
  @chia_command(group=cmd, name="temp_cmd_optional_bad", short_help="blah", help="n/a")
254
254
  class TempCMDOptionalBad3:
255
- optional: Optional[int] = option("--optional", default="string", required=False)
255
+ optional: int | None = option("--optional", default="string", required=False)
256
256
 
257
257
  def run(self) -> None: ...
258
258
 
259
259
  @chia_command(group=cmd, name="temp_cmd_optional_fine", short_help="blah", help="n/a")
260
260
  class TempCMDOptionalBad4:
261
- optional: Optional[int] = option("--optional", default=None, required=False)
261
+ optional: int | None = option("--optional", default=None, required=False)
262
262
 
263
263
  def run(self) -> None: ...
264
264
 
@@ -2,7 +2,7 @@ from __future__ import annotations
2
2
 
3
3
  import sys
4
4
  from pathlib import Path
5
- from typing import Any, Optional
5
+ from typing import Any
6
6
 
7
7
  import pytest
8
8
  from _pytest.capture import CaptureFixture
@@ -33,10 +33,10 @@ async def test_daemon(
33
33
 
34
34
  class DummyKeychain:
35
35
  @staticmethod
36
- def get_cached_master_passphrase() -> Optional[str]:
36
+ def get_cached_master_passphrase() -> str | None:
37
37
  return None
38
38
 
39
- def get_current_passphrase() -> Optional[str]:
39
+ def get_current_passphrase() -> str | None:
40
40
  return "a-passphrase"
41
41
 
42
42
  mocker.patch("chia.cmds.start_funcs.connect_to_daemon_and_validate", side_effect=connect_to_daemon_and_validate)
@@ -2,7 +2,7 @@ from __future__ import annotations
2
2
 
3
3
  from dataclasses import dataclass
4
4
  from pathlib import Path
5
- from typing import Any, Optional
5
+ from typing import Any
6
6
 
7
7
  from chia_rs import FoliageTransactionBlock, FullBlock
8
8
  from chia_rs.sized_bytes import bytes32
@@ -16,7 +16,7 @@ from chia.types.blockchain_format.serialized_program import SerializedProgram
16
16
 
17
17
  @dataclass
18
18
  class ShowFullNodeRpcClient(TestFullNodeRpcClient):
19
- async def get_fee_estimate(self, target_times: Optional[list[int]], cost: Optional[int]) -> dict[str, Any]:
19
+ async def get_fee_estimate(self, target_times: list[int] | None, cost: int | None) -> dict[str, Any]:
20
20
  self.add_to_log("get_fee_estimate", (target_times, cost))
21
21
  response: dict[str, Any] = {
22
22
  "current_fee_rate": 0,
@@ -38,7 +38,7 @@ class ShowFullNodeRpcClient(TestFullNodeRpcClient):
38
38
  }
39
39
  return response
40
40
 
41
- async def get_block(self, header_hash: bytes32) -> Optional[FullBlock]:
41
+ async def get_block(self, header_hash: bytes32) -> FullBlock | None:
42
42
  # we return a block with the height matching the header hash
43
43
  self.add_to_log("get_block", (header_hash,))
44
44
  height = hash_to_height(header_hash)
@@ -106,7 +106,7 @@ def test_chia_show(capsys: object, get_test_cli_clients: tuple[TestRpcClients, P
106
106
  "Is a Transaction Block?True",
107
107
  ]
108
108
  run_cli_command_and_assert(capsys, root_dir, command_args, assert_list)
109
- expected_calls: dict[str, Optional[list[tuple[Any, ...]]]] = { # name of rpc: (args)
109
+ expected_calls: dict[str, list[tuple[Any, ...]] | None] = { # name of rpc: (args)
110
110
  "get_blockchain_state": None,
111
111
  "get_block_record": [(height_hash(height),) for height in [11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 11, 10]],
112
112
  "get_block_record_by_height": [(10,)],
@@ -2,7 +2,6 @@ from __future__ import annotations
2
2
 
3
3
  from collections.abc import Sequence
4
4
  from pathlib import Path
5
- from typing import Optional
6
5
 
7
6
  import click
8
7
  from chia_rs.sized_bytes import bytes32
@@ -102,7 +101,7 @@ def test_tx_config_args() -> None:
102
101
  max_coin_amount: CliAmount,
103
102
  coins_to_exclude: Sequence[bytes32],
104
103
  amounts_to_exclude: Sequence[CliAmount],
105
- reuse: Optional[bool],
104
+ reuse: bool | None,
106
105
  ) -> None:
107
106
  print(
108
107
  CMDTXConfigLoader(
@@ -1,7 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  from dataclasses import dataclass
4
- from typing import Optional
5
4
 
6
5
  from chia_rs.sized_bytes import bytes32
7
6
  from chia_rs.sized_ints import uint8, uint32, uint64
@@ -17,10 +16,10 @@ class TestBlockRecord:
17
16
 
18
17
  header_hash: bytes32
19
18
  height: uint32
20
- timestamp: Optional[uint64]
19
+ timestamp: uint64 | None
21
20
  prev_transaction_block_height: uint32
22
- prev_transaction_block_hash: Optional[bytes32]
23
- prev_hash: Optional[bytes32]
21
+ prev_transaction_block_hash: bytes32 | None
22
+ prev_hash: bytes32 | None
24
23
  weight: uint64 = uint64(10000)
25
24
  fees: uint64 = uint64(5000)
26
25
  farmer_puzzle_hash: bytes32 = bytes32([1] * 32)
@@ -43,7 +42,7 @@ def hash_to_height(int_bytes: bytes32) -> int:
43
42
 
44
43
 
45
44
  def create_test_block_record(
46
- *, height: uint32 = uint32(11), timestamp: uint64 = uint64(10040), header_hash: Optional[bytes32] = None
45
+ *, height: uint32 = uint32(11), timestamp: uint64 = uint64(10040), header_hash: bytes32 | None = None
47
46
  ) -> TestBlockRecord:
48
47
  if header_hash is None:
49
48
  header_hash = height_hash(height)
@@ -1,7 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  from pathlib import Path
4
- from typing import Optional, Union
5
4
 
6
5
  import pytest
7
6
  from chia_rs import G2Element
@@ -10,7 +9,7 @@ from chia_rs.sized_ints import uint16, uint32, uint64
10
9
 
11
10
  from chia._tests.cmds.cmd_test_utils import TestRpcClients, TestWalletRpcClient, logType, run_cli_command_and_assert
12
11
  from chia._tests.cmds.wallet.test_consts import FINGERPRINT_ARG, STD_TX, STD_UTX, get_bytes32
13
- from chia.types.blockchain_format.program import NIL, Program
12
+ from chia.types.blockchain_format.program import Program
14
13
  from chia.types.signing_mode import SigningMode
15
14
  from chia.util.bech32m import encode_puzzle_hash
16
15
  from chia.wallet.conditions import Condition, ConditionValidTimes, CreateCoinAnnouncement, CreatePuzzleAnnouncement
@@ -18,6 +17,8 @@ from chia.wallet.did_wallet.did_info import did_recovery_is_nil
18
17
  from chia.wallet.util.curry_and_treehash import NIL_TREEHASH
19
18
  from chia.wallet.util.tx_config import DEFAULT_TX_CONFIG, TXConfig
20
19
  from chia.wallet.wallet_request_types import (
20
+ CreateNewWallet,
21
+ CreateNewWalletType,
21
22
  DIDFindLostDID,
22
23
  DIDFindLostDIDResponse,
23
24
  DIDGetDID,
@@ -30,6 +31,7 @@ from chia.wallet.wallet_request_types import (
30
31
  DIDSetWalletNameResponse,
31
32
  DIDTransferDID,
32
33
  DIDTransferDIDResponse,
34
+ DIDType,
33
35
  DIDUpdateMetadata,
34
36
  DIDUpdateMetadataResponse,
35
37
  )
@@ -42,7 +44,7 @@ test_condition_valid_times: ConditionValidTimes = ConditionValidTimes(min_time=u
42
44
  argnames=["program", "result"],
43
45
  argvalues=[
44
46
  (Program.to(NIL_TREEHASH), True),
45
- (NIL, True),
47
+ (Program.NIL, True),
46
48
  (Program.to(bytes32([1] * 32)), False),
47
49
  ],
48
50
  )
@@ -55,27 +57,7 @@ def test_did_recovery_is_nil(program: Program, result: bool) -> None:
55
57
  def test_did_create(capsys: object, get_test_cli_clients: tuple[TestRpcClients, Path]) -> None:
56
58
  test_rpc_clients, root_dir = get_test_cli_clients
57
59
 
58
- # set RPC Client
59
- class DidCreateRpcClient(TestWalletRpcClient):
60
- async def create_new_did_wallet(
61
- self,
62
- amount: int,
63
- tx_config: TXConfig,
64
- fee: int = 0,
65
- name: Optional[str] = "DID Wallet",
66
- backup_ids: Optional[list[str]] = None,
67
- required_num: int = 0,
68
- push: bool = True,
69
- timelock_info: ConditionValidTimes = ConditionValidTimes(),
70
- ) -> dict[str, Union[str, int]]:
71
- if backup_ids is None:
72
- backup_ids = []
73
- self.add_to_log(
74
- "create_new_did_wallet", (amount, tx_config, fee, name, backup_ids, required_num, push, timelock_info)
75
- )
76
- return {"wallet_id": 3, "my_did": "did:chia:testdid123456"}
77
-
78
- inst_rpc_client = DidCreateRpcClient()
60
+ inst_rpc_client = TestWalletRpcClient()
79
61
  test_rpc_clients.wallet_rpc_client = inst_rpc_client
80
62
  command_args = [
81
63
  "wallet",
@@ -93,12 +75,27 @@ def test_did_create(capsys: object, get_test_cli_clients: tuple[TestRpcClients,
93
75
  # these are various things that should be in the output
94
76
  assert_list = [
95
77
  "Successfully created a DID wallet with name test and id 3 on key 123456",
96
- "Successfully created a DID did:chia:testdid123456 in the newly created DID wallet",
78
+ (
79
+ "Successfully created a DID did:chia:1qgpqyqszqgpqyqszqgpqyqszqgpqyqszqgpqyqszqgpqyqszqgpq4msw0c"
80
+ " in the newly created DID wallet"
81
+ ),
97
82
  ]
98
83
  run_cli_command_and_assert(capsys, root_dir, command_args, assert_list)
99
84
  expected_calls: logType = {
100
- "create_new_did_wallet": [
101
- (3, DEFAULT_TX_CONFIG, 100000000000, "test", [], 0, True, test_condition_valid_times)
85
+ "create_new_wallet": [
86
+ (
87
+ CreateNewWallet(
88
+ wallet_type=CreateNewWalletType.DID_WALLET,
89
+ did_type=DIDType.NEW,
90
+ amount=uint64(3),
91
+ wallet_name="test",
92
+ fee=uint64(100_000_000_000),
93
+ push=True,
94
+ ),
95
+ DEFAULT_TX_CONFIG,
96
+ tuple(),
97
+ test_condition_valid_times,
98
+ )
102
99
  ],
103
100
  }
104
101
  test_rpc_clients.wallet_rpc_client.check_log(expected_calls)
@@ -1,7 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  from pathlib import Path
4
- from typing import Any, Optional
5
4
 
6
5
  from chia_rs import G2Element
7
6
  from chia_rs.sized_bytes import bytes32
@@ -15,6 +14,8 @@ from chia.wallet.conditions import Condition, ConditionValidTimes
15
14
  from chia.wallet.nft_wallet.nft_info import NFTInfo
16
15
  from chia.wallet.util.tx_config import DEFAULT_TX_CONFIG, TXConfig
17
16
  from chia.wallet.wallet_request_types import (
17
+ CreateNewWallet,
18
+ CreateNewWalletType,
18
19
  NFTAddURI,
19
20
  NFTAddURIResponse,
20
21
  NFTGetNFTs,
@@ -38,21 +39,22 @@ test_condition_valid_times: ConditionValidTimes = ConditionValidTimes(min_time=u
38
39
  def test_nft_create(capsys: object, get_test_cli_clients: tuple[TestRpcClients, Path]) -> None:
39
40
  test_rpc_clients, root_dir = get_test_cli_clients
40
41
 
41
- # set RPC Client
42
- class NFTCreateRpcClient(TestWalletRpcClient):
43
- async def create_new_nft_wallet(self, did_id: str, name: Optional[str] = None) -> dict[str, Any]:
44
- self.add_to_log("create_new_nft_wallet", (did_id, name))
45
- return {"wallet_id": 4}
46
-
47
- inst_rpc_client = NFTCreateRpcClient()
48
- did_id = encode_puzzle_hash(get_bytes32(2), "did:chia:")
42
+ inst_rpc_client = TestWalletRpcClient()
43
+ did_id = "did:chia:1qgpqyqszqgpqyqszqgpqyqszqgpqyqszqgpqyqszqgpqyqszqgpq4msw0c"
49
44
  test_rpc_clients.wallet_rpc_client = inst_rpc_client
50
45
  command_args = ["wallet", "nft", "create", FINGERPRINT_ARG, "-ntest", "--did-id", did_id]
51
46
  # these are various things that should be in the output
52
47
  assert_list = [f"Successfully created an NFT wallet with id 4 on key {FINGERPRINT}"]
53
48
  run_cli_command_and_assert(capsys, root_dir, command_args, assert_list)
54
49
  expected_calls: logType = {
55
- "create_new_nft_wallet": [(did_id, "test")],
50
+ "create_new_wallet": [
51
+ (
52
+ CreateNewWallet(wallet_type=CreateNewWalletType.NFT_WALLET, name="test", did_id=did_id, push=True),
53
+ DEFAULT_TX_CONFIG,
54
+ tuple(),
55
+ ConditionValidTimes(),
56
+ )
57
+ ],
56
58
  }
57
59
  test_rpc_clients.wallet_rpc_client.check_log(expected_calls)
58
60