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
@@ -4,7 +4,7 @@ import importlib.metadata
4
4
  import json
5
5
  from dataclasses import dataclass, field, replace
6
6
  from pathlib import Path
7
- from typing import Any, Dict, List, Optional, Tuple, Type, Union, cast
7
+ from typing import Any, Optional, Union, cast
8
8
 
9
9
  import aiohttp
10
10
  import pytest
@@ -44,8 +44,8 @@ chiapos_version = importlib.metadata.version("chiapos")
44
44
  class RouteCase:
45
45
  route: str
46
46
  description: str
47
- request: Dict[str, Any]
48
- response: Dict[str, Any]
47
+ request: dict[str, Any]
48
+ response: dict[str, Any]
49
49
  marks: Marks = ()
50
50
 
51
51
  @property
@@ -57,9 +57,9 @@ class RouteCase:
57
57
  class RouteStatusCase:
58
58
  route: str
59
59
  description: str
60
- request: Dict[str, Any]
61
- response: Dict[str, Any]
62
- status: Dict[str, Any]
60
+ request: dict[str, Any]
61
+ response: dict[str, Any]
62
+ status: dict[str, Any]
63
63
  marks: Marks = ()
64
64
 
65
65
  @property
@@ -70,8 +70,8 @@ class RouteStatusCase:
70
70
  @dataclass
71
71
  class WalletAddressCase:
72
72
  id: str
73
- request: Dict[str, Any]
74
- response: Dict[str, Any]
73
+ request: dict[str, Any]
74
+ response: dict[str, Any]
75
75
  pubkeys_only: bool = field(default=False)
76
76
  marks: Marks = ()
77
77
 
@@ -79,8 +79,8 @@ class WalletAddressCase:
79
79
  @dataclass
80
80
  class KeysForPlotCase:
81
81
  id: str
82
- request: Dict[str, Any]
83
- response: Dict[str, Any]
82
+ request: dict[str, Any]
83
+ response: dict[str, Any]
84
84
  marks: Marks = ()
85
85
 
86
86
 
@@ -102,8 +102,8 @@ class ChiaPlottersBladebitArgsCase:
102
102
  def id(self) -> str:
103
103
  return self.case_id
104
104
 
105
- def to_command_array(self) -> List[str]:
106
- command: List[str] = ["bladebit", self.plot_type]
105
+ def to_command_array(self) -> list[str]:
106
+ command: list[str] = ["bladebit", self.plot_type]
107
107
  command += ["-r", str(self.threads)]
108
108
  command += ["-n", str(self.count)]
109
109
  command += ["-c", self.pool_contract]
@@ -154,13 +154,13 @@ class Service:
154
154
  @dataclass
155
155
  class Daemon:
156
156
  # Instance variables used by WebSocketServer.is_running()
157
- services: Dict[str, Union[List[Service], Service]]
158
- connections: Dict[str, Optional[List[Any]]]
157
+ services: dict[str, Union[list[Service], Service]]
158
+ connections: dict[str, Optional[list[Any]]]
159
159
 
160
160
  # Instance variables used by WebSocketServer.get_wallet_addresses()
161
- net_config: Dict[str, Any] = field(default_factory=dict)
161
+ net_config: dict[str, Any] = field(default_factory=dict)
162
162
 
163
- def get_command_mapping(self) -> Dict[str, Any]:
163
+ def get_command_mapping(self) -> dict[str, Any]:
164
164
  return {
165
165
  "get_routes": None,
166
166
  "example_one": None,
@@ -171,23 +171,23 @@ class Daemon:
171
171
  def is_service_running(self, service_name: str) -> bool:
172
172
  return WebSocketServer.is_service_running(cast(WebSocketServer, self), service_name)
173
173
 
174
- async def running_services(self) -> Dict[str, Any]:
174
+ async def running_services(self) -> dict[str, Any]:
175
175
  return await WebSocketServer.running_services(cast(WebSocketServer, self))
176
176
 
177
- async def is_running(self, request: Dict[str, Any]) -> Dict[str, Any]:
177
+ async def is_running(self, request: dict[str, Any]) -> dict[str, Any]:
178
178
  return await WebSocketServer.is_running(cast(WebSocketServer, self), request)
179
179
 
180
- async def get_routes(self, request: Dict[str, Any]) -> Dict[str, Any]:
180
+ async def get_routes(self, request: dict[str, Any]) -> dict[str, Any]:
181
181
  return await WebSocketServer.get_routes(
182
182
  cast(WebSocketServer, self), websocket=WebSocketResponse(), request=request
183
183
  )
184
184
 
185
- async def get_wallet_addresses(self, request: Dict[str, Any]) -> Dict[str, Any]:
185
+ async def get_wallet_addresses(self, request: dict[str, Any]) -> dict[str, Any]:
186
186
  return await WebSocketServer.get_wallet_addresses(
187
187
  cast(WebSocketServer, self), websocket=WebSocketResponse(), request=request
188
188
  )
189
189
 
190
- async def get_keys_for_plotting(self, request: Dict[str, Any]) -> Dict[str, Any]:
190
+ async def get_keys_for_plotting(self, request: dict[str, Any]) -> dict[str, Any]:
191
191
  return await WebSocketServer.get_keys_for_plotting(
192
192
  cast(WebSocketServer, self), websocket=WebSocketResponse(), request=request
193
193
  )
@@ -234,14 +234,14 @@ plotter_request_ref = {
234
234
  }
235
235
 
236
236
 
237
- def add_private_key_response_data(fingerprint: int) -> Dict[str, object]:
237
+ def add_private_key_response_data(fingerprint: int) -> dict[str, object]:
238
238
  return {
239
239
  "success": True,
240
240
  "fingerprint": fingerprint,
241
241
  }
242
242
 
243
243
 
244
- def fingerprint_missing_response_data(request_type: Type[object]) -> Dict[str, object]:
244
+ def fingerprint_missing_response_data(request_type: type[object]) -> dict[str, object]:
245
245
  return {
246
246
  "success": False,
247
247
  "error": "malformed request",
@@ -249,7 +249,7 @@ def fingerprint_missing_response_data(request_type: Type[object]) -> Dict[str, o
249
249
  }
250
250
 
251
251
 
252
- def fingerprint_not_found_response_data(fingerprint: int) -> Dict[str, object]:
252
+ def fingerprint_not_found_response_data(fingerprint: int) -> dict[str, object]:
253
253
  return {
254
254
  "success": False,
255
255
  "error": "key not found",
@@ -259,23 +259,23 @@ def fingerprint_not_found_response_data(fingerprint: int) -> Dict[str, object]:
259
259
  }
260
260
 
261
261
 
262
- def get_key_response_data(key: KeyData) -> Dict[str, object]:
262
+ def get_key_response_data(key: KeyData) -> dict[str, object]:
263
263
  return {"success": True, **GetKeyResponse(key=key).to_json_dict()}
264
264
 
265
265
 
266
- def get_keys_response_data(keys: List[KeyData]) -> Dict[str, object]:
266
+ def get_keys_response_data(keys: list[KeyData]) -> dict[str, object]:
267
267
  return {"success": True, **GetKeysResponse(keys=keys).to_json_dict()}
268
268
 
269
269
 
270
- def get_public_key_response_data(key: KeyData) -> Dict[str, object]:
270
+ def get_public_key_response_data(key: KeyData) -> dict[str, object]:
271
271
  return {"success": True, **GetPublicKeyResponse(key=key).to_json_dict()}
272
272
 
273
273
 
274
- def get_public_keys_response_data(keys: List[KeyData]) -> Dict[str, object]:
274
+ def get_public_keys_response_data(keys: list[KeyData]) -> dict[str, object]:
275
275
  return {"success": True, **GetPublicKeysResponse(keys=keys).to_json_dict()}
276
276
 
277
277
 
278
- def label_missing_response_data(request_type: Type[Any]) -> Dict[str, Any]:
278
+ def label_missing_response_data(request_type: type[Any]) -> dict[str, Any]:
279
279
  return {
280
280
  "success": False,
281
281
  "error": "malformed request",
@@ -283,7 +283,7 @@ def label_missing_response_data(request_type: Type[Any]) -> Dict[str, Any]:
283
283
  }
284
284
 
285
285
 
286
- def label_exists_response_data(fingerprint: int, label: str) -> Dict[str, Any]:
286
+ def label_exists_response_data(fingerprint: int, label: str) -> dict[str, Any]:
287
287
  return {
288
288
  "success": False,
289
289
  "error": "malformed request",
@@ -312,7 +312,7 @@ label_newline_or_tab_response_data = {
312
312
 
313
313
  def assert_response(
314
314
  response: aiohttp.http_websocket.WSMessage,
315
- expected_response_data: Dict[str, Any],
315
+ expected_response_data: dict[str, Any],
316
316
  request_id: Optional[str] = None,
317
317
  ack: bool = True,
318
318
  command: Optional[str] = None,
@@ -332,7 +332,7 @@ def assert_response(
332
332
 
333
333
  def assert_response_success_only(
334
334
  response: aiohttp.http_websocket.WSMessage, request_id: Optional[str] = None
335
- ) -> Dict[str, Any]:
335
+ ) -> dict[str, Any]:
336
336
  # Expect: JSON response
337
337
  assert response.type == aiohttp.WSMsgType.TEXT
338
338
  message = json.loads(response.data.strip())
@@ -343,7 +343,7 @@ def assert_response_success_only(
343
343
  return message
344
344
 
345
345
 
346
- def assert_running_services_response(response_dict: Dict[str, Any], expected_response_dict: Dict[str, Any]) -> None:
346
+ def assert_running_services_response(response_dict: dict[str, Any], expected_response_dict: dict[str, Any]) -> None:
347
347
  for k, v in expected_response_dict.items():
348
348
  if k == "running_services":
349
349
  # Order of services is not guaranteed
@@ -1032,10 +1032,10 @@ async def test_add_private_key(daemon_connection_and_temp_keychain):
1032
1032
 
1033
1033
  @pytest.mark.anyio
1034
1034
  async def test_add_private_key_label(daemon_connection_and_temp_keychain):
1035
- ws, keychain = daemon_connection_and_temp_keychain
1035
+ ws, _keychain = daemon_connection_and_temp_keychain
1036
1036
 
1037
1037
  async def assert_add_private_key_with_label(
1038
- key_data: KeyData, request: Dict[str, object], add_private_key_response: Dict[str, object]
1038
+ key_data: KeyData, request: dict[str, object], add_private_key_response: dict[str, object]
1039
1039
  ) -> None:
1040
1040
  await ws.send_str(create_payload("add_private_key", request, "test", "daemon"))
1041
1041
  assert_response(await ws.receive(), add_private_key_response)
@@ -1282,7 +1282,7 @@ async def test_key_label_deletion(daemon_connection_and_temp_keychain):
1282
1282
  )
1283
1283
  @pytest.mark.anyio
1284
1284
  async def test_key_label_methods(
1285
- daemon_connection_and_temp_keychain, method: str, parameter: Dict[str, Any], response_data_dict: Dict[str, Any]
1285
+ daemon_connection_and_temp_keychain, method: str, parameter: dict[str, Any], response_data_dict: dict[str, Any]
1286
1286
  ) -> None:
1287
1287
  ws, keychain = daemon_connection_and_temp_keychain
1288
1288
  keychain.add_key(test_key_data.mnemonic_str(), "key_0")
@@ -1291,7 +1291,7 @@ async def test_key_label_methods(
1291
1291
 
1292
1292
 
1293
1293
  @pytest.mark.anyio
1294
- async def test_bad_json(daemon_connection_and_temp_keychain: Tuple[aiohttp.ClientWebSocketResponse, Keychain]) -> None:
1294
+ async def test_bad_json(daemon_connection_and_temp_keychain: tuple[aiohttp.ClientWebSocketResponse, Keychain]) -> None:
1295
1295
  ws, _ = daemon_connection_and_temp_keychain
1296
1296
 
1297
1297
  await ws.send_str("{doo: '12'}") # send some bad json
@@ -1390,7 +1390,7 @@ async def test_bad_json(daemon_connection_and_temp_keychain: Tuple[aiohttp.Clien
1390
1390
  )
1391
1391
  @pytest.mark.anyio
1392
1392
  async def test_misc_daemon_ws(
1393
- daemon_connection_and_temp_keychain: Tuple[aiohttp.ClientWebSocketResponse, Keychain],
1393
+ daemon_connection_and_temp_keychain: tuple[aiohttp.ClientWebSocketResponse, Keychain],
1394
1394
  case: RouteCase,
1395
1395
  ) -> None:
1396
1396
  ws, _ = daemon_connection_and_temp_keychain
@@ -1404,7 +1404,7 @@ async def test_misc_daemon_ws(
1404
1404
 
1405
1405
  @pytest.mark.anyio
1406
1406
  async def test_unexpected_json(
1407
- daemon_connection_and_temp_keychain: Tuple[aiohttp.ClientWebSocketResponse, Keychain]
1407
+ daemon_connection_and_temp_keychain: tuple[aiohttp.ClientWebSocketResponse, Keychain],
1408
1408
  ) -> None:
1409
1409
  ws, _ = daemon_connection_and_temp_keychain
1410
1410
 
@@ -1424,7 +1424,7 @@ async def test_unexpected_json(
1424
1424
  )
1425
1425
  @pytest.mark.anyio
1426
1426
  async def test_commands_with_no_data(
1427
- daemon_connection_and_temp_keychain: Tuple[aiohttp.ClientWebSocketResponse, Keychain], command_to_test: str
1427
+ daemon_connection_and_temp_keychain: tuple[aiohttp.ClientWebSocketResponse, Keychain], command_to_test: str
1428
1428
  ) -> None:
1429
1429
  ws, _ = daemon_connection_and_temp_keychain
1430
1430
 
@@ -1468,7 +1468,7 @@ async def test_commands_with_no_data(
1468
1468
  )
1469
1469
  @pytest.mark.anyio
1470
1470
  async def test_set_keyring_passphrase_ws(
1471
- daemon_connection_and_temp_keychain: Tuple[aiohttp.ClientWebSocketResponse, Keychain],
1471
+ daemon_connection_and_temp_keychain: tuple[aiohttp.ClientWebSocketResponse, Keychain],
1472
1472
  case: RouteCase,
1473
1473
  ) -> None:
1474
1474
  ws, _ = daemon_connection_and_temp_keychain
@@ -1571,7 +1571,7 @@ async def test_set_keyring_passphrase_ws(
1571
1571
  )
1572
1572
  @pytest.mark.anyio
1573
1573
  async def test_passphrase_apis(
1574
- daemon_connection_and_temp_keychain: Tuple[aiohttp.ClientWebSocketResponse, Keychain],
1574
+ daemon_connection_and_temp_keychain: tuple[aiohttp.ClientWebSocketResponse, Keychain],
1575
1575
  case: RouteCase,
1576
1576
  ) -> None:
1577
1577
  ws, keychain = daemon_connection_and_temp_keychain
@@ -1652,7 +1652,7 @@ async def test_passphrase_apis(
1652
1652
  )
1653
1653
  @pytest.mark.anyio
1654
1654
  async def test_keychain_status_messages(
1655
- daemon_connection_and_temp_keychain: Tuple[aiohttp.ClientWebSocketResponse, Keychain],
1655
+ daemon_connection_and_temp_keychain: tuple[aiohttp.ClientWebSocketResponse, Keychain],
1656
1656
  case: RouteStatusCase,
1657
1657
  ) -> None:
1658
1658
  ws, keychain = daemon_connection_and_temp_keychain
@@ -1700,7 +1700,7 @@ async def test_keychain_status_messages(
1700
1700
  )
1701
1701
  @pytest.mark.anyio
1702
1702
  async def test_keyring_file_deleted(
1703
- daemon_connection_and_temp_keychain: Tuple[aiohttp.ClientWebSocketResponse, Keychain],
1703
+ daemon_connection_and_temp_keychain: tuple[aiohttp.ClientWebSocketResponse, Keychain],
1704
1704
  case: RouteCase,
1705
1705
  ) -> None:
1706
1706
  ws, keychain = daemon_connection_and_temp_keychain
@@ -1758,9 +1758,9 @@ async def test_keyring_file_deleted(
1758
1758
  )
1759
1759
  @pytest.mark.anyio
1760
1760
  async def test_plotter_errors(
1761
- daemon_connection_and_temp_keychain: Tuple[aiohttp.ClientWebSocketResponse, Keychain], case: RouteCase
1761
+ daemon_connection_and_temp_keychain: tuple[aiohttp.ClientWebSocketResponse, Keychain], case: RouteCase
1762
1762
  ) -> None:
1763
- ws, keychain = daemon_connection_and_temp_keychain
1763
+ ws, _keychain = daemon_connection_and_temp_keychain
1764
1764
 
1765
1765
  payload = create_payload(
1766
1766
  case.route,
@@ -1871,11 +1871,11 @@ async def test_plotter_errors(
1871
1871
  )
1872
1872
  @pytest.mark.anyio
1873
1873
  async def test_plotter_options(
1874
- daemon_connection_and_temp_keychain: Tuple[aiohttp.ClientWebSocketResponse, Keychain],
1874
+ daemon_connection_and_temp_keychain: tuple[aiohttp.ClientWebSocketResponse, Keychain],
1875
1875
  get_b_tools: BlockTools,
1876
1876
  case: RouteCase,
1877
1877
  ) -> None:
1878
- ws, keychain = daemon_connection_and_temp_keychain
1878
+ ws, _keychain = daemon_connection_and_temp_keychain
1879
1879
 
1880
1880
  # register for chia_plotter events
1881
1881
  service_name = "chia_plotter"
@@ -1937,9 +1937,9 @@ def check_plot_queue_log(
1937
1937
 
1938
1938
  @pytest.mark.anyio
1939
1939
  async def test_plotter_roundtrip(
1940
- daemon_connection_and_temp_keychain: Tuple[aiohttp.ClientWebSocketResponse, Keychain], get_b_tools: BlockTools
1940
+ daemon_connection_and_temp_keychain: tuple[aiohttp.ClientWebSocketResponse, Keychain], get_b_tools: BlockTools
1941
1941
  ) -> None:
1942
- ws, keychain = daemon_connection_and_temp_keychain
1942
+ ws, _keychain = daemon_connection_and_temp_keychain
1943
1943
 
1944
1944
  # register for chia_plotter events
1945
1945
  service_name = "chia_plotter"
@@ -1951,7 +1951,7 @@ async def test_plotter_roundtrip(
1951
1951
 
1952
1952
  root_path = get_b_tools.root_path
1953
1953
 
1954
- plotting_request: Dict[str, Any] = {
1954
+ plotting_request: dict[str, Any] = {
1955
1955
  **plotter_request_ref,
1956
1956
  "d": str(root_path),
1957
1957
  "t": str(root_path),
@@ -2009,9 +2009,9 @@ async def test_plotter_roundtrip(
2009
2009
 
2010
2010
  @pytest.mark.anyio
2011
2011
  async def test_plotter_stop_plotting(
2012
- daemon_connection_and_temp_keychain: Tuple[aiohttp.ClientWebSocketResponse, Keychain], get_b_tools: BlockTools
2012
+ daemon_connection_and_temp_keychain: tuple[aiohttp.ClientWebSocketResponse, Keychain], get_b_tools: BlockTools
2013
2013
  ) -> None:
2014
- ws, keychain = daemon_connection_and_temp_keychain
2014
+ ws, _keychain = daemon_connection_and_temp_keychain
2015
2015
 
2016
2016
  # register for chia_plotter events
2017
2017
  service_name = "chia_plotter"
@@ -2023,7 +2023,7 @@ async def test_plotter_stop_plotting(
2023
2023
 
2024
2024
  root_path = get_b_tools.root_path
2025
2025
 
2026
- plotting_request: Dict[str, Any] = {
2026
+ plotting_request: dict[str, Any] = {
2027
2027
  **plotter_request_ref,
2028
2028
  "d": str(root_path),
2029
2029
  "t": str(root_path),
@@ -2066,7 +2066,7 @@ async def test_plotter_stop_plotting(
2066
2066
  payload = dict_to_json_str(payload_rpc)
2067
2067
  await ws.send_str(payload)
2068
2068
 
2069
- responses: List[WSMessage] = []
2069
+ responses: list[WSMessage] = []
2070
2070
 
2071
2071
  # 3, 4, and 5)
2072
2072
  # Removing
@@ -2075,8 +2075,8 @@ async def test_plotter_stop_plotting(
2075
2075
  for _ in range(3):
2076
2076
  responses.append(await ws.receive())
2077
2077
 
2078
- state_changes: List[WSMessage] = []
2079
- finished: List[WSMessage] = []
2078
+ state_changes: list[WSMessage] = []
2079
+ finished: list[WSMessage] = []
2080
2080
 
2081
2081
  for response in responses:
2082
2082
  message = json.loads(response.data.strip())
@@ -2113,7 +2113,7 @@ def test_run_plotter_bladebit(
2113
2113
  def bladebit_exists(x: Path) -> bool:
2114
2114
  return True if isinstance(x, Path) and x.parent == root_path / "plotters" else mocker.DEFAULT
2115
2115
 
2116
- def get_bladebit_version(_: Path) -> Tuple[bool, List[str]]:
2116
+ def get_bladebit_version(_: Path) -> tuple[bool, list[str]]:
2117
2117
  return True, ["3", "0", "0"]
2118
2118
 
2119
2119
  mocker.patch("os.path.exists", side_effect=bladebit_exists)
@@ -1,8 +1,9 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import logging
4
+ from collections.abc import AsyncGenerator
4
5
  from dataclasses import replace
5
- from typing import Any, AsyncGenerator
6
+ from typing import Any
6
7
 
7
8
  import pytest
8
9
 
@@ -4,7 +4,8 @@ import os
4
4
  import pathlib
5
5
  import sys
6
6
  import time
7
- from typing import Any, AsyncIterable, Awaitable, Callable, Dict, Iterator
7
+ from collections.abc import AsyncIterable, Awaitable, Iterator
8
+ from typing import Any, Callable
8
9
 
9
10
  import pytest
10
11
 
@@ -84,7 +85,7 @@ async def valid_node_values_fixture(
84
85
  data_store: DataStore,
85
86
  store_id: bytes32,
86
87
  node_type: NodeType,
87
- ) -> Dict[str, Any]:
88
+ ) -> dict[str, Any]:
88
89
  await add_01234567_example(data_store=data_store, store_id=store_id)
89
90
 
90
91
  if node_type == NodeType.INTERNAL:
@@ -98,7 +99,7 @@ async def valid_node_values_fixture(
98
99
 
99
100
 
100
101
  @pytest.fixture(name="bad_node_type", params=range(2 * len(NodeType)))
101
- def bad_node_type_fixture(request: SubRequest, valid_node_values: Dict[str, Any]) -> int:
102
+ def bad_node_type_fixture(request: SubRequest, valid_node_values: dict[str, Any]) -> int:
102
103
  if request.param == valid_node_values["node_type"]:
103
104
  pytest.skip("Actually, this is a valid node type")
104
105
 
@@ -1,7 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import json
4
- from typing import Dict, List
5
4
 
6
5
  import pytest
7
6
 
@@ -32,7 +31,7 @@ def test_round_trip(chia_root: ChiaRoot, chia_daemon: None, chia_data: None) ->
32
31
  store_id = dic["id"]
33
32
  key = "1a6f915513173902a7216e7d9e4a16bfd088e20683f45de3b432ce72e9cc7aa8"
34
33
  value = "ffff8353594d8083616263"
35
- changelist: List[Dict[str, str]] = [{"action": "insert", "key": key, "value": value}]
34
+ changelist: list[dict[str, str]] = [{"action": "insert", "key": key, "value": value}]
36
35
  print(json.dumps(changelist))
37
36
  update = chia_root.run(
38
37
  args=["data", "update_data_store", "--id", store_id, "--changelist", json.dumps(changelist)]
@@ -1,7 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  from pathlib import Path
4
- from typing import Any, Dict, cast
4
+ from typing import Any, cast
5
5
 
6
6
  import pytest
7
7
 
@@ -26,7 +26,7 @@ class SufficientWalletRpcClient:
26
26
 
27
27
  @pytest.mark.parametrize(argnames="enable", argvalues=[True, False], ids=["log", "do not log"])
28
28
  @pytest.mark.anyio
29
- async def test_sql_logs(enable: bool, config: Dict[str, Any], tmp_chia_root: Path) -> None:
29
+ async def test_sql_logs(enable: bool, config: dict[str, Any], tmp_chia_root: Path) -> None:
30
30
  config["data_layer"]["log_sqlite_cmds"] = enable
31
31
 
32
32
  log_path = tmp_chia_root.joinpath("log", "data_sql.log")
@@ -51,7 +51,7 @@ async def test_sql_logs(enable: bool, config: Dict[str, Any], tmp_chia_root: Pat
51
51
  @pytest.mark.anyio
52
52
  async def test_plugin_requests_use_custom_headers(
53
53
  recording_web_server: RecordingWebServer,
54
- config: Dict[str, Any],
54
+ config: dict[str, Any],
55
55
  tmp_chia_root: Path,
56
56
  ) -> None:
57
57
  header_key = "vbiuoqemnrlah"
@@ -75,8 +75,8 @@ async def test_plugin_requests_use_custom_headers(
75
75
  )
76
76
 
77
77
  async with data_layer.manage():
78
- await data_layer.get_downloader(store_id=bytes32([0] * 32), url="")
79
- await data_layer.get_uploaders(store_id=bytes32([0] * 32))
78
+ await data_layer.get_downloader(store_id=bytes32.zeros, url="")
79
+ await data_layer.get_uploaders(store_id=bytes32.zeros)
80
80
  await data_layer.check_plugins()
81
81
 
82
82
  header_values = {request.headers.get(header_key) for request in recording_web_server.requests}
@@ -2,7 +2,6 @@ from __future__ import annotations
2
2
 
3
3
  import dataclasses
4
4
  from random import Random
5
- from typing import List, Tuple
6
5
 
7
6
  import pytest
8
7
 
@@ -32,7 +31,7 @@ pytestmark = pytest.mark.data_layer
32
31
 
33
32
  def create_valid_proof_of_inclusion(layer_count: int, other_hash_side: Side) -> ProofOfInclusion:
34
33
  node_hash = bytes32(b"a" * 32)
35
- layers: List[ProofOfInclusionLayer] = []
34
+ layers: list[ProofOfInclusionLayer] = []
36
35
 
37
36
  existing_hash = node_hash
38
37
 
@@ -106,7 +105,7 @@ class RoundTripCase:
106
105
  RoundTripCase(
107
106
  id="Root",
108
107
  instance=Root(
109
- store_id=bytes32(b"\x00" * 32),
108
+ store_id=bytes32.zeros,
110
109
  node_hash=bytes32(b"\x01" * 32),
111
110
  generation=3,
112
111
  status=Status.PENDING,
@@ -121,7 +120,7 @@ class RoundTripCase:
121
120
  instance=ClearPendingRootsResponse(
122
121
  success=True,
123
122
  root=Root(
124
- store_id=bytes32(b"\x00" * 32),
123
+ store_id=bytes32.zeros,
125
124
  node_hash=bytes32(b"\x01" * 32),
126
125
  generation=3,
127
126
  status=Status.PENDING,
@@ -143,7 +142,7 @@ def test_internal_hash(seeded_random: Random) -> None:
143
142
  def definition(left_hash: bytes32, right_hash: bytes32) -> bytes32:
144
143
  return Program.to((left_hash, right_hash)).get_tree_hash_precalc(left_hash, right_hash)
145
144
 
146
- data: List[Tuple[bytes32, bytes32, bytes32]] = []
145
+ data: list[tuple[bytes32, bytes32, bytes32]] = []
147
146
  for _ in range(5000):
148
147
  left_hash = bytes32.random(r=seeded_random)
149
148
  right_hash = bytes32.random(r=seeded_random)
@@ -170,16 +169,16 @@ def test_leaf_hash(seeded_random: Random) -> None:
170
169
  def definition(key: bytes, value: bytes) -> bytes32:
171
170
  return SerializedProgram.to((key, value)).get_tree_hash()
172
171
 
173
- data: List[Tuple[bytes, bytes, bytes32]] = []
172
+ data: list[tuple[bytes, bytes, bytes32]] = []
174
173
  for cycle in range(20000):
175
- if cycle in (0, 1):
174
+ if cycle in {0, 1}:
176
175
  length = 0
177
176
  else:
178
177
  length = seeded_random.randrange(100)
179
178
 
180
179
  key = get_random_bytes(length=length, r=seeded_random)
181
180
 
182
- if cycle in (1, 2):
181
+ if cycle in {1, 2}:
183
182
  length = 0
184
183
  else:
185
184
  length = seeded_random.randrange(100)
@@ -200,7 +199,7 @@ def test_key_hash(seeded_random: Random) -> None:
200
199
  def definition(key: bytes) -> bytes32:
201
200
  return SerializedProgram.to(key).get_tree_hash()
202
201
 
203
- data: List[Tuple[bytes, bytes32]] = []
202
+ data: list[tuple[bytes, bytes32]] = []
204
203
  for cycle in range(30000):
205
204
  if cycle == 0:
206
205
  length = 0