chia-blockchain 2.5.0rc2__py3-none-any.whl → 2.5.1rc2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (637) hide show
  1. chia/_tests/README.md +1 -1
  2. chia/_tests/blockchain/blockchain_test_utils.py +24 -26
  3. chia/_tests/blockchain/test_augmented_chain.py +6 -8
  4. chia/_tests/blockchain/test_blockchain.py +409 -307
  5. chia/_tests/blockchain/test_blockchain_transactions.py +56 -75
  6. chia/_tests/blockchain/test_build_chains.py +11 -13
  7. chia/_tests/blockchain/test_get_block_generator.py +8 -8
  8. chia/_tests/blockchain/test_lookup_fork_chain.py +3 -4
  9. chia/_tests/build-init-files.py +3 -4
  10. chia/_tests/build-job-matrix.py +9 -9
  11. chia/_tests/check_sql_statements.py +2 -3
  12. chia/_tests/clvm/benchmark_costs.py +1 -1
  13. chia/_tests/clvm/coin_store.py +7 -5
  14. chia/_tests/clvm/test_chialisp_deserialization.py +8 -8
  15. chia/_tests/clvm/test_condition_codes.py +2 -2
  16. chia/_tests/clvm/test_curry_and_treehash.py +2 -4
  17. chia/_tests/clvm/test_message_conditions.py +184 -0
  18. chia/_tests/clvm/test_puzzle_compression.py +1 -2
  19. chia/_tests/clvm/test_puzzle_drivers.py +3 -3
  20. chia/_tests/clvm/test_puzzles.py +13 -18
  21. chia/_tests/clvm/test_singletons.py +17 -17
  22. chia/_tests/clvm/test_spend_sim.py +7 -7
  23. chia/_tests/cmds/cmd_test_utils.py +42 -45
  24. chia/_tests/cmds/conftest.py +2 -2
  25. chia/_tests/cmds/test_click_types.py +21 -16
  26. chia/_tests/cmds/test_cmd_framework.py +255 -35
  27. chia/_tests/cmds/test_cmds_util.py +2 -2
  28. chia/_tests/cmds/test_daemon.py +3 -3
  29. chia/_tests/cmds/test_dev_gh.py +131 -0
  30. chia/_tests/cmds/test_farm_cmd.py +1 -2
  31. chia/_tests/cmds/test_show.py +6 -6
  32. chia/_tests/cmds/test_tx_config_args.py +2 -1
  33. chia/_tests/cmds/wallet/test_dao.py +23 -23
  34. chia/_tests/cmds/wallet/test_did.py +29 -29
  35. chia/_tests/cmds/wallet/test_nft.py +24 -23
  36. chia/_tests/cmds/wallet/test_notifications.py +8 -8
  37. chia/_tests/cmds/wallet/test_tx_decorators.py +3 -3
  38. chia/_tests/cmds/wallet/test_vcs.py +97 -73
  39. chia/_tests/cmds/wallet/test_wallet.py +74 -75
  40. chia/_tests/cmds/wallet/test_wallet_check.py +5 -7
  41. chia/_tests/conftest.py +153 -38
  42. chia/_tests/connection_utils.py +7 -6
  43. chia/_tests/core/cmds/test_beta.py +3 -3
  44. chia/_tests/core/cmds/test_keys.py +6 -6
  45. chia/_tests/core/cmds/test_wallet.py +3 -3
  46. chia/_tests/core/consensus/test_block_creation.py +3 -5
  47. chia/_tests/core/custom_types/test_coin.py +1 -3
  48. chia/_tests/core/custom_types/test_spend_bundle.py +3 -4
  49. chia/_tests/core/daemon/test_daemon.py +58 -58
  50. chia/_tests/core/daemon/test_keychain_proxy.py +2 -1
  51. chia/_tests/core/data_layer/conftest.py +4 -3
  52. chia/_tests/core/data_layer/test_data_cli.py +1 -2
  53. chia/_tests/core/data_layer/test_data_layer.py +5 -5
  54. chia/_tests/core/data_layer/test_data_layer_util.py +8 -9
  55. chia/_tests/core/data_layer/test_data_rpc.py +75 -93
  56. chia/_tests/core/data_layer/test_data_store.py +38 -37
  57. chia/_tests/core/data_layer/test_data_store_schema.py +11 -11
  58. chia/_tests/core/data_layer/util.py +11 -10
  59. chia/_tests/core/farmer/test_farmer_api.py +6 -4
  60. chia/_tests/core/full_node/full_sync/test_full_sync.py +5 -10
  61. chia/_tests/core/full_node/ram_db.py +2 -2
  62. chia/_tests/core/full_node/stores/test_block_store.py +113 -11
  63. chia/_tests/core/full_node/stores/test_coin_store.py +37 -28
  64. chia/_tests/core/full_node/stores/test_full_node_store.py +34 -30
  65. chia/_tests/core/full_node/stores/test_hint_store.py +3 -4
  66. chia/_tests/core/full_node/test_address_manager.py +2 -2
  67. chia/_tests/core/full_node/test_block_height_map.py +1 -1
  68. chia/_tests/core/full_node/test_conditions.py +10 -12
  69. chia/_tests/core/full_node/test_full_node.py +2077 -1822
  70. chia/_tests/core/full_node/test_generator_tools.py +4 -4
  71. chia/_tests/core/full_node/test_hint_management.py +2 -2
  72. chia/_tests/core/full_node/test_performance.py +2 -5
  73. chia/_tests/core/full_node/test_subscriptions.py +4 -4
  74. chia/_tests/core/full_node/test_tx_processing_queue.py +5 -4
  75. chia/_tests/core/make_block_generator.py +5 -7
  76. chia/_tests/core/mempool/test_mempool.py +205 -208
  77. chia/_tests/core/mempool/test_mempool_fee_protocol.py +5 -5
  78. chia/_tests/core/mempool/test_mempool_item_queries.py +2 -4
  79. chia/_tests/core/mempool/test_mempool_manager.py +109 -80
  80. chia/_tests/core/mempool/test_mempool_performance.py +3 -4
  81. chia/_tests/core/mempool/test_singleton_fast_forward.py +12 -12
  82. chia/_tests/core/server/flood.py +6 -4
  83. chia/_tests/core/server/serve.py +10 -7
  84. chia/_tests/core/server/test_api_protocol.py +21 -0
  85. chia/_tests/core/server/test_capabilities.py +3 -5
  86. chia/_tests/core/server/test_dos.py +15 -16
  87. chia/_tests/core/server/test_loop.py +14 -10
  88. chia/_tests/core/server/test_node_discovery.py +1 -2
  89. chia/_tests/core/server/test_rate_limits.py +156 -44
  90. chia/_tests/core/server/test_server.py +8 -7
  91. chia/_tests/core/services/test_services.py +59 -37
  92. chia/_tests/core/ssl/test_ssl.py +5 -3
  93. chia/_tests/core/test_cost_calculation.py +5 -6
  94. chia/_tests/core/test_crawler.py +2 -2
  95. chia/_tests/core/test_db_conversion.py +5 -4
  96. chia/_tests/core/test_db_validation.py +6 -5
  97. chia/_tests/core/test_farmer_harvester_rpc.py +8 -7
  98. chia/_tests/core/test_filter.py +3 -5
  99. chia/_tests/core/test_full_node_rpc.py +64 -90
  100. chia/_tests/core/test_merkle_set.py +10 -10
  101. chia/_tests/core/test_program.py +2 -4
  102. chia/_tests/core/test_rpc_util.py +1 -2
  103. chia/_tests/core/test_seeder.py +124 -12
  104. chia/_tests/core/util/test_block_cache.py +5 -5
  105. chia/_tests/core/util/test_cached_bls.py +3 -3
  106. chia/_tests/core/util/test_config.py +13 -13
  107. chia/_tests/core/util/test_files.py +2 -2
  108. chia/_tests/core/util/test_jsonify.py +9 -9
  109. chia/_tests/core/util/test_keychain.py +13 -5
  110. chia/_tests/core/util/test_keyring_wrapper.py +6 -5
  111. chia/_tests/core/util/test_log_exceptions.py +3 -3
  112. chia/_tests/core/util/test_streamable.py +38 -38
  113. chia/_tests/db/test_db_wrapper.py +13 -12
  114. chia/_tests/environments/common.py +2 -2
  115. chia/_tests/environments/full_node.py +2 -2
  116. chia/_tests/environments/wallet.py +109 -48
  117. chia/_tests/farmer_harvester/test_farmer.py +35 -35
  118. chia/_tests/farmer_harvester/test_farmer_harvester.py +17 -17
  119. chia/_tests/farmer_harvester/test_filter_prefix_bits.py +6 -5
  120. chia/_tests/farmer_harvester/test_third_party_harvesters.py +73 -46
  121. chia/_tests/fee_estimation/test_fee_estimation_integration.py +8 -8
  122. chia/_tests/fee_estimation/test_fee_estimation_rpc.py +47 -47
  123. chia/_tests/fee_estimation/test_fee_estimation_unit_tests.py +6 -7
  124. chia/_tests/fee_estimation/test_mempoolitem_height_added.py +11 -11
  125. chia/_tests/generator/test_compression.py +13 -30
  126. chia/_tests/generator/test_generator_types.py +3 -3
  127. chia/_tests/generator/test_rom.py +7 -9
  128. chia/_tests/plot_sync/test_delta.py +2 -3
  129. chia/_tests/plot_sync/test_plot_sync.py +25 -24
  130. chia/_tests/plot_sync/test_receiver.py +9 -9
  131. chia/_tests/plot_sync/test_sender.py +1 -1
  132. chia/_tests/plot_sync/test_sync_simulated.py +27 -26
  133. chia/_tests/plot_sync/util.py +2 -1
  134. chia/_tests/plotting/test_plot_manager.py +54 -11
  135. chia/_tests/plotting/util.py +2 -3
  136. chia/_tests/pools/test_pool_cli_parsing.py +128 -0
  137. chia/_tests/pools/test_pool_cmdline.py +993 -15
  138. chia/_tests/pools/test_pool_config.py +3 -5
  139. chia/_tests/pools/test_pool_puzzles_lifecycle.py +10 -11
  140. chia/_tests/pools/test_pool_rpc.py +203 -90
  141. chia/_tests/pools/test_pool_wallet.py +12 -8
  142. chia/_tests/pools/test_wallet_pool_store.py +3 -3
  143. chia/_tests/process_junit.py +16 -17
  144. chia/_tests/rpc/test_rpc_client.py +59 -2
  145. chia/_tests/rpc/test_rpc_server.py +183 -0
  146. chia/_tests/simulation/test_simulation.py +5 -5
  147. chia/_tests/simulation/test_simulator.py +8 -10
  148. chia/_tests/simulation/test_start_simulator.py +5 -4
  149. chia/_tests/timelord/test_new_peak.py +19 -19
  150. chia/_tests/tools/test_run_block.py +1 -2
  151. chia/_tests/tools/test_virtual_project.py +591 -0
  152. chia/_tests/util/benchmark_cost.py +9 -9
  153. chia/_tests/util/benchmarks.py +1 -2
  154. chia/_tests/util/blockchain.py +12 -11
  155. chia/_tests/util/blockchain_mock.py +15 -15
  156. chia/_tests/util/build_network_protocol_files.py +12 -12
  157. chia/_tests/util/db_connection.py +3 -2
  158. chia/_tests/util/full_sync.py +14 -6
  159. chia/_tests/util/gen_ssl_certs.py +4 -5
  160. chia/_tests/util/generator_tools_testing.py +5 -7
  161. chia/_tests/util/get_name_puzzle_conditions.py +52 -0
  162. chia/_tests/util/key_tool.py +2 -3
  163. chia/_tests/util/misc.py +59 -106
  164. chia/_tests/util/network_protocol_data.py +7 -9
  165. chia/_tests/util/protocol_messages_json.py +112 -111
  166. chia/_tests/util/rpc.py +3 -0
  167. chia/_tests/util/run_block.py +16 -16
  168. chia/_tests/util/setup_nodes.py +25 -23
  169. chia/{clvm → _tests/util}/spend_sim.py +59 -55
  170. chia/_tests/util/split_managers.py +12 -9
  171. chia/_tests/util/temp_file.py +1 -1
  172. chia/_tests/util/test_action_scope.py +2 -1
  173. chia/_tests/util/test_async_pool.py +8 -8
  174. chia/_tests/util/test_build_job_matrix.py +2 -3
  175. chia/_tests/util/test_condition_tools.py +4 -6
  176. chia/_tests/util/test_config.py +5 -5
  177. chia/_tests/util/test_dump_keyring.py +1 -1
  178. chia/_tests/util/test_full_block_utils.py +19 -11
  179. chia/_tests/util/test_limited_semaphore.py +4 -3
  180. chia/_tests/util/test_logging_filter.py +2 -3
  181. chia/_tests/util/test_misc.py +29 -28
  182. chia/_tests/util/test_network.py +32 -31
  183. chia/_tests/util/test_network_protocol_files.py +2 -3
  184. chia/_tests/util/test_network_protocol_json.py +1 -0
  185. chia/_tests/util/test_network_protocol_test.py +18 -19
  186. chia/_tests/util/test_paginator.py +3 -4
  187. chia/_tests/util/test_pprint.py +1 -1
  188. chia/_tests/util/test_priority_mutex.py +18 -17
  189. chia/_tests/util/test_recursive_replace.py +2 -2
  190. chia/_tests/util/test_testnet_overrides.py +3 -3
  191. chia/_tests/util/test_timing.py +1 -1
  192. chia/_tests/util/test_trusted_peer.py +2 -2
  193. chia/_tests/util/time_out_assert.py +43 -6
  194. chia/_tests/wallet/cat_wallet/test_cat_lifecycle.py +13 -13
  195. chia/_tests/wallet/cat_wallet/test_cat_outer_puzzle.py +1 -1
  196. chia/_tests/wallet/cat_wallet/test_cat_wallet.py +117 -29
  197. chia/_tests/wallet/cat_wallet/test_offer_lifecycle.py +15 -15
  198. chia/_tests/wallet/cat_wallet/test_trades.py +50 -28
  199. chia/_tests/wallet/clawback/test_clawback_decorator.py +3 -5
  200. chia/_tests/wallet/clawback/test_clawback_lifecycle.py +6 -6
  201. chia/_tests/wallet/clawback/test_clawback_metadata.py +1 -2
  202. chia/_tests/wallet/conftest.py +135 -74
  203. chia/_tests/wallet/dao_wallet/test_dao_clvm.py +25 -17
  204. chia/_tests/wallet/dao_wallet/test_dao_wallets.py +75 -75
  205. chia/_tests/wallet/db_wallet/test_db_graftroot.py +10 -12
  206. chia/_tests/wallet/db_wallet/test_dl_offers.py +6 -6
  207. chia/_tests/wallet/db_wallet/test_dl_wallet.py +18 -18
  208. chia/_tests/wallet/did_wallet/test_did.py +1277 -474
  209. chia/_tests/wallet/nft_wallet/test_nft_1_offers.py +12 -11
  210. chia/_tests/wallet/nft_wallet/test_nft_bulk_mint.py +115 -105
  211. chia/_tests/wallet/nft_wallet/test_nft_lifecycle.py +6 -7
  212. chia/_tests/wallet/nft_wallet/test_nft_offers.py +16 -16
  213. chia/_tests/wallet/nft_wallet/test_nft_puzzles.py +3 -3
  214. chia/_tests/wallet/nft_wallet/test_nft_wallet.py +38 -12
  215. chia/_tests/wallet/nft_wallet/test_ownership_outer_puzzle.py +1 -1
  216. chia/_tests/wallet/rpc/test_dl_wallet_rpc.py +31 -33
  217. chia/_tests/wallet/rpc/test_wallet_rpc.py +218 -171
  218. chia/_tests/wallet/simple_sync/test_simple_sync_protocol.py +36 -37
  219. chia/_tests/wallet/sync/test_wallet_sync.py +241 -78
  220. chia/_tests/wallet/test_address_type.py +20 -20
  221. chia/_tests/wallet/test_clvm_streamable.py +5 -5
  222. chia/_tests/wallet/test_coin_management.py +354 -0
  223. chia/_tests/wallet/test_coin_selection.py +34 -35
  224. chia/_tests/wallet/test_conditions.py +28 -16
  225. chia/_tests/wallet/test_debug_spend_bundle.py +156 -14
  226. chia/_tests/wallet/test_new_wallet_protocol.py +29 -31
  227. chia/_tests/wallet/test_nft_store.py +1 -2
  228. chia/_tests/wallet/test_notifications.py +2 -2
  229. chia/_tests/wallet/test_offer_parsing_performance.py +1 -1
  230. chia/_tests/wallet/test_puzzle_store.py +2 -3
  231. chia/_tests/wallet/test_sign_coin_spends.py +3 -3
  232. chia/_tests/wallet/test_signer_protocol.py +33 -34
  233. chia/_tests/wallet/test_singleton_lifecycle_fast.py +29 -29
  234. chia/_tests/wallet/test_taproot.py +1 -1
  235. chia/_tests/wallet/test_transaction_store.py +23 -19
  236. chia/_tests/wallet/test_util.py +36 -32
  237. chia/_tests/wallet/test_wallet.py +37 -37
  238. chia/_tests/wallet/test_wallet_action_scope.py +8 -8
  239. chia/_tests/wallet/test_wallet_blockchain.py +4 -6
  240. chia/_tests/wallet/test_wallet_coin_store.py +34 -34
  241. chia/_tests/wallet/test_wallet_node.py +69 -72
  242. chia/_tests/wallet/test_wallet_retry.py +3 -3
  243. chia/_tests/wallet/test_wallet_state_manager.py +12 -5
  244. chia/_tests/wallet/test_wallet_trade_store.py +2 -2
  245. chia/_tests/wallet/test_wallet_utils.py +5 -4
  246. chia/_tests/wallet/vc_wallet/test_cr_outer_puzzle.py +3 -3
  247. chia/_tests/wallet/vc_wallet/test_vc_lifecycle.py +18 -18
  248. chia/_tests/wallet/vc_wallet/test_vc_wallet.py +69 -40
  249. chia/_tests/wallet/wallet_block_tools.py +27 -27
  250. chia/_tests/weight_proof/test_weight_proof.py +30 -30
  251. chia/apis.py +19 -0
  252. chia/cmds/beta.py +8 -7
  253. chia/cmds/beta_funcs.py +15 -11
  254. chia/cmds/check_wallet_db.py +29 -27
  255. chia/cmds/chia.py +17 -9
  256. chia/cmds/cmd_classes.py +87 -79
  257. chia/cmds/cmd_helpers.py +242 -0
  258. chia/cmds/cmds_util.py +56 -66
  259. chia/cmds/coin_funcs.py +168 -153
  260. chia/cmds/coins.py +156 -194
  261. chia/cmds/configure.py +4 -3
  262. chia/cmds/dao.py +89 -33
  263. chia/cmds/dao_funcs.py +55 -33
  264. chia/cmds/data.py +7 -6
  265. chia/cmds/data_funcs.py +26 -21
  266. chia/cmds/db.py +4 -3
  267. chia/cmds/db_backup_func.py +2 -2
  268. chia/cmds/db_upgrade_func.py +3 -3
  269. chia/cmds/db_validate_func.py +2 -2
  270. chia/cmds/dev.py +2 -0
  271. chia/cmds/farm.py +18 -5
  272. chia/cmds/farm_funcs.py +17 -24
  273. chia/cmds/gh.py +275 -0
  274. chia/cmds/init.py +4 -11
  275. chia/cmds/init_funcs.py +9 -9
  276. chia/cmds/installers.py +5 -3
  277. chia/cmds/keys.py +56 -39
  278. chia/cmds/keys_funcs.py +30 -31
  279. chia/cmds/netspace.py +6 -3
  280. chia/cmds/netspace_funcs.py +3 -2
  281. chia/cmds/param_types.py +16 -6
  282. chia/cmds/passphrase.py +8 -7
  283. chia/cmds/passphrase_funcs.py +7 -61
  284. chia/cmds/peer.py +2 -1
  285. chia/cmds/peer_funcs.py +5 -5
  286. chia/cmds/plotnft.py +207 -153
  287. chia/cmds/plotnft_funcs.py +205 -174
  288. chia/cmds/plots.py +14 -6
  289. chia/cmds/plotters.py +2 -1
  290. chia/cmds/rpc.py +48 -28
  291. chia/cmds/show.py +2 -1
  292. chia/cmds/show_funcs.py +7 -6
  293. chia/cmds/signer.py +50 -58
  294. chia/cmds/sim.py +22 -14
  295. chia/cmds/sim_funcs.py +11 -11
  296. chia/cmds/start.py +3 -3
  297. chia/cmds/start_funcs.py +9 -12
  298. chia/cmds/stop.py +4 -3
  299. chia/cmds/units.py +1 -3
  300. chia/cmds/wallet.py +252 -96
  301. chia/cmds/wallet_funcs.py +217 -143
  302. chia/consensus/block_body_validation.py +133 -86
  303. chia/consensus/block_creation.py +42 -21
  304. chia/consensus/block_header_validation.py +32 -37
  305. chia/consensus/block_record.py +1 -2
  306. chia/consensus/blockchain.py +167 -180
  307. chia/consensus/blockchain_interface.py +10 -10
  308. chia/consensus/constants.py +2 -2
  309. chia/consensus/default_constants.py +3 -4
  310. chia/consensus/difficulty_adjustment.py +5 -5
  311. chia/consensus/find_fork_point.py +5 -5
  312. chia/consensus/full_block_to_block_record.py +4 -4
  313. chia/consensus/get_block_challenge.py +2 -2
  314. chia/consensus/get_block_generator.py +4 -3
  315. chia/consensus/multiprocess_validation.py +207 -304
  316. chia/consensus/vdf_info_computation.py +3 -3
  317. chia/daemon/client.py +46 -27
  318. chia/daemon/keychain_proxy.py +10 -9
  319. chia/daemon/keychain_server.py +18 -18
  320. chia/daemon/server.py +103 -113
  321. chia/daemon/windows_signal.py +2 -2
  322. chia/data_layer/data_layer.py +64 -76
  323. chia/data_layer/data_layer_api.py +8 -0
  324. chia/data_layer/data_layer_errors.py +3 -3
  325. chia/data_layer/data_layer_server.py +2 -2
  326. chia/data_layer/data_layer_util.py +71 -71
  327. chia/data_layer/data_layer_wallet.py +63 -67
  328. chia/data_layer/data_store.py +72 -72
  329. chia/data_layer/dl_wallet_store.py +10 -10
  330. chia/data_layer/download_data.py +5 -5
  331. chia/data_layer/s3_plugin_service.py +9 -9
  332. chia/data_layer/util/benchmark.py +0 -1
  333. chia/data_layer/util/plugin.py +2 -3
  334. chia/farmer/farmer.py +46 -43
  335. chia/farmer/farmer_api.py +27 -21
  336. chia/full_node/block_height_map.py +6 -6
  337. chia/full_node/block_store.py +41 -35
  338. chia/full_node/coin_store.py +42 -41
  339. chia/full_node/fee_estimate.py +2 -2
  340. chia/full_node/fee_estimation.py +1 -2
  341. chia/full_node/fee_history.py +5 -6
  342. chia/full_node/fee_tracker.py +24 -24
  343. chia/full_node/full_node.py +574 -300
  344. chia/full_node/full_node_api.py +181 -130
  345. chia/full_node/full_node_store.py +43 -43
  346. chia/full_node/hint_management.py +4 -4
  347. chia/full_node/hint_store.py +9 -10
  348. chia/full_node/mempool.py +25 -19
  349. chia/full_node/mempool_check_conditions.py +11 -42
  350. chia/full_node/mempool_manager.py +48 -53
  351. chia/full_node/pending_tx_cache.py +9 -9
  352. chia/full_node/subscriptions.py +23 -24
  353. chia/full_node/sync_store.py +8 -7
  354. chia/full_node/tx_processing_queue.py +3 -3
  355. chia/full_node/util/__init__.py +0 -0
  356. chia/full_node/weight_proof.py +79 -78
  357. chia/harvester/harvester.py +9 -8
  358. chia/harvester/harvester_api.py +19 -13
  359. chia/introducer/introducer.py +7 -5
  360. chia/introducer/introducer_api.py +9 -3
  361. chia/legacy/keyring.py +6 -5
  362. chia/plot_sync/delta.py +8 -8
  363. chia/plot_sync/receiver.py +12 -11
  364. chia/plot_sync/sender.py +15 -12
  365. chia/plotters/bladebit.py +12 -12
  366. chia/plotters/chiapos.py +2 -2
  367. chia/plotters/madmax.py +8 -8
  368. chia/plotters/plotters.py +6 -6
  369. chia/plotters/plotters_util.py +6 -4
  370. chia/plotting/cache.py +8 -7
  371. chia/plotting/check_plots.py +8 -8
  372. chia/plotting/create_plots.py +6 -6
  373. chia/plotting/manager.py +22 -22
  374. chia/plotting/util.py +31 -19
  375. chia/pools/pool_config.py +7 -7
  376. chia/pools/pool_puzzles.py +16 -16
  377. chia/pools/pool_wallet.py +64 -57
  378. chia/pools/pool_wallet_info.py +3 -3
  379. chia/protocols/full_node_protocol.py +3 -3
  380. chia/protocols/harvester_protocol.py +12 -12
  381. chia/protocols/introducer_protocol.py +1 -2
  382. chia/protocols/protocol_message_types.py +4 -4
  383. chia/protocols/protocol_state_machine.py +2 -2
  384. chia/protocols/protocol_timing.py +1 -0
  385. chia/protocols/shared_protocol.py +3 -3
  386. chia/protocols/timelord_protocol.py +2 -2
  387. chia/protocols/wallet_protocol.py +33 -33
  388. chia/rpc/crawler_rpc_api.py +12 -7
  389. chia/rpc/data_layer_rpc_api.py +49 -44
  390. chia/rpc/data_layer_rpc_client.py +41 -41
  391. chia/rpc/data_layer_rpc_util.py +7 -11
  392. chia/rpc/farmer_rpc_api.py +32 -27
  393. chia/rpc/farmer_rpc_client.py +14 -14
  394. chia/rpc/full_node_rpc_api.py +53 -48
  395. chia/rpc/full_node_rpc_client.py +30 -30
  396. chia/rpc/harvester_rpc_api.py +16 -11
  397. chia/rpc/harvester_rpc_client.py +6 -6
  398. chia/rpc/rpc_client.py +34 -14
  399. chia/rpc/rpc_server.py +117 -43
  400. chia/rpc/timelord_rpc_api.py +9 -4
  401. chia/rpc/util.py +11 -211
  402. chia/rpc/wallet_request_types.py +276 -60
  403. chia/rpc/wallet_rpc_api.py +563 -399
  404. chia/rpc/wallet_rpc_client.py +220 -250
  405. chia/seeder/crawl_store.py +6 -8
  406. chia/seeder/crawler.py +23 -36
  407. chia/seeder/crawler_api.py +28 -22
  408. chia/seeder/dns_server.py +99 -50
  409. chia/seeder/start_crawler.py +13 -9
  410. chia/server/address_manager.py +19 -19
  411. chia/server/address_manager_store.py +17 -17
  412. chia/server/api_protocol.py +106 -1
  413. chia/server/capabilities.py +3 -3
  414. chia/server/chia_policy.py +17 -16
  415. chia/server/introducer_peers.py +3 -3
  416. chia/server/node_discovery.py +34 -38
  417. chia/server/rate_limit_numbers.py +26 -16
  418. chia/server/rate_limits.py +67 -27
  419. chia/server/server.py +52 -31
  420. chia/server/signal_handlers.py +6 -3
  421. chia/server/ssl_context.py +5 -5
  422. chia/server/start_data_layer.py +37 -23
  423. chia/server/start_farmer.py +28 -16
  424. chia/server/start_full_node.py +29 -23
  425. chia/server/start_harvester.py +28 -15
  426. chia/server/start_introducer.py +27 -15
  427. chia/server/start_service.py +17 -29
  428. chia/server/start_timelord.py +25 -18
  429. chia/server/start_wallet.py +22 -18
  430. chia/server/upnp.py +4 -3
  431. chia/server/ws_connection.py +68 -54
  432. chia/simulator/add_blocks_in_batches.py +54 -0
  433. chia/simulator/block_tools.py +65 -64
  434. chia/simulator/full_node_simulator.py +66 -74
  435. chia/simulator/setup_services.py +10 -9
  436. chia/simulator/simulator_full_node_rpc_api.py +12 -14
  437. chia/simulator/simulator_full_node_rpc_client.py +3 -5
  438. chia/simulator/simulator_test_tools.py +8 -7
  439. chia/simulator/socket.py +1 -4
  440. chia/simulator/ssl_certs.py +5 -5
  441. chia/simulator/ssl_certs_1.py +2 -4
  442. chia/simulator/ssl_certs_10.py +2 -4
  443. chia/simulator/ssl_certs_2.py +2 -4
  444. chia/simulator/ssl_certs_3.py +2 -4
  445. chia/simulator/ssl_certs_4.py +2 -4
  446. chia/simulator/ssl_certs_5.py +2 -4
  447. chia/simulator/ssl_certs_6.py +2 -4
  448. chia/simulator/ssl_certs_7.py +2 -4
  449. chia/simulator/ssl_certs_8.py +2 -4
  450. chia/simulator/ssl_certs_9.py +2 -4
  451. chia/simulator/start_simulator.py +14 -6
  452. chia/simulator/wallet_tools.py +21 -20
  453. chia/ssl/create_ssl.py +11 -11
  454. chia/timelord/iters_from_block.py +2 -2
  455. chia/timelord/timelord.py +57 -33
  456. chia/timelord/timelord_api.py +12 -6
  457. chia/timelord/timelord_launcher.py +10 -8
  458. chia/timelord/timelord_state.py +5 -5
  459. chia/types/block_protocol.py +2 -2
  460. chia/types/blockchain_format/coin.py +3 -3
  461. chia/types/blockchain_format/program.py +17 -18
  462. chia/types/blockchain_format/tree_hash.py +9 -9
  463. chia/types/coin_spend.py +8 -8
  464. chia/types/condition_with_args.py +1 -2
  465. chia/types/eligible_coin_spends.py +16 -15
  466. chia/types/generator_types.py +1 -2
  467. chia/types/internal_mempool_item.py +1 -2
  468. chia/types/mempool_item.py +7 -7
  469. chia/types/mempool_submission_status.py +2 -2
  470. chia/types/peer_info.py +1 -1
  471. chia/types/spend_bundle.py +1 -2
  472. chia/types/transaction_queue_entry.py +2 -2
  473. chia/types/unfinished_header_block.py +2 -2
  474. chia/types/validation_state.py +14 -0
  475. chia/types/weight_proof.py +5 -6
  476. chia/util/action_scope.py +8 -8
  477. chia/util/async_pool.py +6 -4
  478. chia/util/augmented_chain.py +13 -9
  479. chia/util/batches.py +5 -2
  480. chia/util/bech32m.py +14 -11
  481. chia/util/beta_metrics.py +5 -4
  482. chia/util/block_cache.py +5 -5
  483. chia/util/byte_types.py +2 -0
  484. chia/util/check_fork_next_block.py +3 -2
  485. chia/util/chia_logging.py +41 -21
  486. chia/util/collection.py +3 -3
  487. chia/util/condition_tools.py +18 -18
  488. chia/util/config.py +26 -25
  489. chia/util/cpu.py +2 -0
  490. chia/util/db_synchronous.py +2 -0
  491. chia/util/db_version.py +2 -0
  492. chia/util/db_wrapper.py +13 -10
  493. chia/util/default_root.py +17 -0
  494. chia/util/dump_keyring.py +6 -6
  495. chia/util/errors.py +5 -3
  496. chia/util/file_keyring.py +22 -33
  497. chia/util/files.py +2 -0
  498. chia/util/full_block_utils.py +31 -7
  499. chia/util/generator_tools.py +18 -8
  500. chia/util/hash.py +3 -1
  501. chia/util/initial-config.yaml +19 -0
  502. chia/util/inline_executor.py +2 -0
  503. chia/util/ip_address.py +39 -0
  504. chia/util/json_util.py +0 -4
  505. chia/util/keychain.py +27 -24
  506. chia/util/keyring_wrapper.py +65 -4
  507. chia/util/limited_semaphore.py +3 -1
  508. chia/util/lock.py +4 -2
  509. chia/util/log_exceptions.py +5 -2
  510. chia/util/logging.py +3 -1
  511. chia/util/lru_cache.py +2 -0
  512. chia/util/math.py +4 -4
  513. chia/util/network.py +15 -73
  514. chia/util/paginator.py +3 -1
  515. chia/util/path.py +2 -0
  516. chia/util/permissions.py +3 -2
  517. chia/util/prev_transaction_block.py +1 -3
  518. chia/util/priority_mutex.py +6 -3
  519. chia/util/profiler.py +7 -4
  520. chia/util/recursive_replace.py +2 -0
  521. chia/util/safe_cancel_task.py +2 -0
  522. chia/util/service_groups.py +2 -2
  523. chia/util/setproctitle.py +2 -0
  524. chia/util/significant_bits.py +2 -0
  525. chia/util/ssl_check.py +11 -11
  526. chia/util/streamable.py +44 -56
  527. chia/util/task_referencer.py +59 -0
  528. chia/util/task_timing.py +22 -18
  529. chia/util/timing.py +4 -1
  530. chia/util/vdf_prover.py +2 -3
  531. chia/util/virtual_project_analysis.py +540 -0
  532. chia/util/ws_message.py +6 -6
  533. chia/wallet/cat_wallet/cat_info.py +3 -3
  534. chia/wallet/cat_wallet/cat_outer_puzzle.py +3 -3
  535. chia/wallet/cat_wallet/cat_utils.py +5 -4
  536. chia/wallet/cat_wallet/cat_wallet.py +56 -70
  537. chia/wallet/cat_wallet/dao_cat_info.py +3 -3
  538. chia/wallet/cat_wallet/dao_cat_wallet.py +18 -18
  539. chia/wallet/cat_wallet/lineage_store.py +2 -2
  540. chia/wallet/coin_selection.py +15 -15
  541. chia/wallet/conditions.py +257 -71
  542. chia/wallet/dao_wallet/dao_info.py +4 -4
  543. chia/wallet/dao_wallet/dao_utils.py +43 -42
  544. chia/wallet/dao_wallet/dao_wallet.py +66 -68
  545. chia/wallet/db_wallet/db_wallet_puzzles.py +12 -8
  546. chia/wallet/derive_keys.py +11 -11
  547. chia/wallet/did_wallet/did_info.py +3 -3
  548. chia/wallet/did_wallet/did_wallet.py +56 -47
  549. chia/wallet/did_wallet/did_wallet_puzzles.py +7 -6
  550. chia/wallet/lineage_proof.py +4 -4
  551. chia/wallet/nft_wallet/metadata_outer_puzzle.py +2 -2
  552. chia/wallet/nft_wallet/nft_info.py +4 -4
  553. chia/wallet/nft_wallet/nft_puzzles.py +16 -16
  554. chia/wallet/nft_wallet/nft_wallet.py +90 -89
  555. chia/wallet/nft_wallet/ownership_outer_puzzle.py +2 -2
  556. chia/wallet/nft_wallet/singleton_outer_puzzle.py +2 -2
  557. chia/wallet/nft_wallet/transfer_program_puzzle.py +2 -2
  558. chia/wallet/nft_wallet/uncurry_nft.py +2 -2
  559. chia/wallet/notification_manager.py +5 -5
  560. chia/wallet/notification_store.py +6 -6
  561. chia/wallet/outer_puzzles.py +2 -2
  562. chia/wallet/payment.py +4 -5
  563. chia/wallet/puzzle_drivers.py +4 -4
  564. chia/wallet/puzzles/clawback/drivers.py +5 -5
  565. chia/wallet/puzzles/clawback/puzzle_decorator.py +7 -7
  566. chia/wallet/puzzles/load_clvm.py +2 -3
  567. chia/wallet/puzzles/p2_conditions.py +1 -2
  568. chia/wallet/puzzles/p2_delegated_conditions.py +1 -2
  569. chia/wallet/puzzles/p2_delegated_puzzle.py +2 -3
  570. chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.py +3 -4
  571. chia/wallet/puzzles/p2_m_of_n_delegate_direct.py +1 -2
  572. chia/wallet/puzzles/p2_puzzle_hash.py +1 -2
  573. chia/wallet/puzzles/puzzle_utils.py +7 -7
  574. chia/wallet/puzzles/singleton_top_layer.py +6 -5
  575. chia/wallet/puzzles/singleton_top_layer_v1_1.py +6 -5
  576. chia/wallet/puzzles/tails.py +34 -30
  577. chia/wallet/signer_protocol.py +7 -8
  578. chia/wallet/singleton.py +4 -4
  579. chia/wallet/trade_manager.py +155 -141
  580. chia/wallet/trade_record.py +5 -5
  581. chia/wallet/trading/offer.py +100 -101
  582. chia/wallet/trading/trade_store.py +14 -14
  583. chia/wallet/transaction_record.py +31 -16
  584. chia/wallet/util/address_type.py +4 -4
  585. chia/wallet/util/blind_signer_tl.py +8 -12
  586. chia/wallet/util/clvm_streamable.py +15 -15
  587. chia/wallet/util/compute_hints.py +5 -5
  588. chia/wallet/util/compute_memos.py +4 -6
  589. chia/wallet/util/curry_and_treehash.py +3 -2
  590. chia/wallet/util/debug_spend_bundle.py +6 -8
  591. chia/wallet/util/merkle_tree.py +10 -10
  592. chia/wallet/util/merkle_utils.py +10 -10
  593. chia/wallet/util/new_peak_queue.py +3 -3
  594. chia/wallet/util/peer_request_cache.py +8 -8
  595. chia/{util → wallet/util}/pprint.py +2 -3
  596. chia/wallet/util/puzzle_compression.py +3 -4
  597. chia/wallet/util/puzzle_decorator.py +10 -10
  598. chia/wallet/util/query_filter.py +9 -10
  599. chia/wallet/util/tx_config.py +12 -12
  600. chia/wallet/util/wallet_sync_utils.py +24 -21
  601. chia/wallet/util/wallet_types.py +9 -2
  602. chia/wallet/vc_wallet/cr_cat_drivers.py +28 -27
  603. chia/wallet/vc_wallet/cr_cat_wallet.py +42 -40
  604. chia/wallet/vc_wallet/cr_outer_puzzle.py +4 -4
  605. chia/wallet/vc_wallet/vc_drivers.py +16 -16
  606. chia/wallet/vc_wallet/vc_store.py +9 -9
  607. chia/wallet/vc_wallet/vc_wallet.py +35 -35
  608. chia/wallet/wallet.py +54 -54
  609. chia/wallet/wallet_action_scope.py +14 -13
  610. chia/wallet/wallet_blockchain.py +10 -10
  611. chia/wallet/wallet_coin_record.py +2 -2
  612. chia/wallet/wallet_coin_store.py +10 -10
  613. chia/wallet/wallet_info.py +1 -2
  614. chia/wallet/wallet_interested_store.py +5 -5
  615. chia/wallet/wallet_nft_store.py +6 -6
  616. chia/wallet/wallet_node.py +72 -76
  617. chia/wallet/wallet_node_api.py +33 -27
  618. chia/wallet/wallet_pool_store.py +1 -2
  619. chia/wallet/wallet_protocol.py +15 -15
  620. chia/wallet/wallet_puzzle_store.py +35 -4
  621. chia/wallet/wallet_retry_store.py +2 -2
  622. chia/wallet/wallet_singleton_store.py +10 -9
  623. chia/wallet/wallet_spend_bundle.py +4 -20
  624. chia/wallet/wallet_state_manager.py +223 -224
  625. chia/wallet/wallet_transaction_store.py +44 -18
  626. chia/wallet/wallet_user_store.py +2 -2
  627. chia/wallet/wallet_weight_proof_handler.py +2 -2
  628. {chia_blockchain-2.5.0rc2.dist-info → chia_blockchain-2.5.1rc2.dist-info}/LICENSE +1 -1
  629. {chia_blockchain-2.5.0rc2.dist-info → chia_blockchain-2.5.1rc2.dist-info}/METADATA +67 -72
  630. chia_blockchain-2.5.1rc2.dist-info/RECORD +1042 -0
  631. {chia_blockchain-2.5.0rc2.dist-info → chia_blockchain-2.5.1rc2.dist-info}/WHEEL +1 -1
  632. mozilla-ca/cacert.pem +32 -87
  633. chia/_tests/cmds/wallet/test_coins.py +0 -195
  634. chia/consensus/block_root_validation.py +0 -46
  635. chia/util/api_decorators.py +0 -89
  636. chia_blockchain-2.5.0rc2.dist-info/RECORD +0 -1028
  637. {chia_blockchain-2.5.0rc2.dist-info → chia_blockchain-2.5.1rc2.dist-info}/entry_points.txt +0 -0
@@ -1,9 +1,8 @@
1
- # flake8: noqa
2
1
  from __future__ import annotations
3
2
 
4
3
  import ast
5
4
  import inspect
6
- from typing import Any, Dict, Set, cast
5
+ from typing import Any, cast
7
6
 
8
7
  from chia.protocols import (
9
8
  farmer_protocol,
@@ -21,7 +20,7 @@ from chia.protocols import (
21
20
  # stays up to date. It's a test for the test
22
21
 
23
22
 
24
- def types_in_module(mod: Any) -> Set[str]:
23
+ def types_in_module(mod: Any) -> set[str]:
25
24
  parsed = ast.parse(inspect.getsource(mod))
26
25
  types = set()
27
26
  for line in parsed.body:
@@ -34,23 +33,22 @@ def types_in_module(mod: Any) -> Set[str]:
34
33
  return types
35
34
 
36
35
 
36
+ STANDARD_ADVICE = "Make sure to update the protocol message regression test to include the new message"
37
+
38
+
37
39
  def test_missing_messages_state_machine() -> None:
38
40
  from chia.protocols.protocol_state_machine import NO_REPLY_EXPECTED, VALID_REPLY_MESSAGE_MAP
39
41
 
40
42
  # if these asserts fail, make sure to add the new network protocol messages
41
43
  # to the visitor in build_network_protocol_files.py and rerun it. Then
42
44
  # update this test
43
- assert (
44
- len(VALID_REPLY_MESSAGE_MAP) == 26
45
- ), "A message was added to the protocol state machine. Make sure to update the protocol message regression test to include the new message"
46
- assert (
47
- len(NO_REPLY_EXPECTED) == 10
48
- ), "A message was added to the protocol state machine. Make sure to update the protocol message regression test to include the new message"
45
+ assert len(VALID_REPLY_MESSAGE_MAP) == 26, f"A message was added to the protocol state machine. {STANDARD_ADVICE}"
46
+ assert len(NO_REPLY_EXPECTED) == 10, f"A message was added to the protocol state machine. {STANDARD_ADVICE}"
49
47
 
50
48
 
51
49
  def test_message_ids() -> None:
52
50
  parsed = ast.parse(inspect.getsource(protocol_message_types))
53
- message_ids: Dict[int, str] = {}
51
+ message_ids: dict[int, str] = {}
54
52
  for line in parsed.body:
55
53
  if not isinstance(line, ast.ClassDef) or line.name != "ProtocolMessageTypes":
56
54
  continue
@@ -63,7 +61,8 @@ def test_message_ids() -> None:
63
61
  message_name = entry.targets[0].id
64
62
  if message_id in message_ids: # pragma: no cover
65
63
  raise AssertionError(
66
- f'protocol message ID clash between "{message_name}" and "{message_ids[message_id]}". Value {message_id}'
64
+ f'protocol message ID clash between "{message_name}" and "{message_ids[message_id]}". '
65
+ f"Value {message_id}"
67
66
  )
68
67
  message_ids[message_id] = message_name
69
68
  if message_id < 0 or message_id > 255: # pragma: no cover
@@ -226,32 +225,32 @@ def test_missing_messages() -> None:
226
225
  # update this test
227
226
  assert (
228
227
  types_in_module(wallet_protocol) == wallet_msgs
229
- ), "message types were added or removed from wallet_protocol. Make sure to update the protocol message regression test to include the new message"
228
+ ), f"message types were added or removed from wallet_protocol. {STANDARD_ADVICE}"
230
229
 
231
230
  assert (
232
231
  types_in_module(farmer_protocol) == farmer_msgs
233
- ), "message types were added or removed from farmer_protocol. Make sure to update the protocol message regression test to include the new message"
232
+ ), f"message types were added or removed from farmer_protocol. {STANDARD_ADVICE}"
234
233
 
235
234
  assert (
236
235
  types_in_module(full_node_protocol) == full_node_msgs
237
- ), "message types were added or removed from full_node_protocol. Make sure to update the protocol message regression test to include the new message"
236
+ ), f"message types were added or removed from full_node_protocol. {STANDARD_ADVICE}"
238
237
 
239
238
  assert (
240
239
  types_in_module(harvester_protocol) == harvester_msgs
241
- ), "message types were added or removed from harvester_protocol. Make sure to update the protocol message regression test to include the new message"
240
+ ), f"message types were added or removed from harvester_protocol. {STANDARD_ADVICE}"
242
241
 
243
242
  assert (
244
243
  types_in_module(introducer_protocol) == introducer_msgs
245
- ), "message types were added or removed from introducer_protocol. Make sure to update the protocol message regression test to include the new message"
244
+ ), f"message types were added or removed from introducer_protocol. {STANDARD_ADVICE}"
246
245
 
247
246
  assert (
248
247
  types_in_module(pool_protocol) == pool_msgs
249
- ), "message types were added or removed from pool_protocol. Make sure to update the protocol message regression test to include the new message"
248
+ ), f"message types were added or removed from pool_protocol. {STANDARD_ADVICE}"
250
249
 
251
250
  assert (
252
251
  types_in_module(timelord_protocol) == timelord_msgs
253
- ), "message types were added or removed from timelord_protocol. Make sure to update the protocol message regression test to include the new message"
252
+ ), f"message types were added or removed from timelord_protocol. {STANDARD_ADVICE}"
254
253
 
255
254
  assert (
256
255
  types_in_module(shared_protocol) == shared_msgs
257
- ), "message types were added or removed from shared_protocol. Make sure to update the protocol message regression test to include the new message"
256
+ ), f"message types were added or removed from shared_protocol. {STANDARD_ADVICE}"
@@ -1,7 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  from math import ceil
4
- from typing import List, Type
5
4
 
6
5
  import pytest
7
6
 
@@ -12,7 +11,7 @@ from chia.util.paginator import InvalidPageSizeError, InvalidPageSizeLimit, Page
12
11
  "source, page_size, page_size_limit",
13
12
  [([], 1, 1), ([1], 1, 2), ([1, 2], 2, 2), ([], 10, 100), ([1, 2, 10], 1000, 1000)],
14
13
  )
15
- def test_constructor_valid_inputs(source: List[int], page_size: int, page_size_limit: int) -> None:
14
+ def test_constructor_valid_inputs(source: list[int], page_size: int, page_size_limit: int) -> None:
16
15
  paginator: Paginator = Paginator.create(source, page_size, page_size_limit)
17
16
  assert paginator.page_size() == page_size
18
17
  assert paginator.page_count() == 1
@@ -29,7 +28,7 @@ def test_constructor_valid_inputs(source: List[int], page_size: int, page_size_l
29
28
  (1001, 1000, InvalidPageSizeError),
30
29
  ],
31
30
  )
32
- def test_constructor_invalid_inputs(page_size: int, page_size_limit: int, exception: Type[Exception]) -> None:
31
+ def test_constructor_invalid_inputs(page_size: int, page_size_limit: int, exception: type[Exception]) -> None:
33
32
  with pytest.raises(exception):
34
33
  Paginator.create([], page_size, page_size_limit)
35
34
 
@@ -62,7 +61,7 @@ def test_page_count() -> None:
62
61
  (0, 10, 0, []),
63
62
  ],
64
63
  )
65
- def test_get_page_valid(length: int, page: int, page_size: int, expected_data: List[int]) -> None:
64
+ def test_get_page_valid(length: int, page: int, page_size: int, expected_data: list[int]) -> None:
66
65
  assert Paginator.create(list(range(0, length)), page_size).get_page(page) == expected_data
67
66
 
68
67
 
@@ -1,6 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
- from chia.util.pprint import print_compact_ranges
3
+ from chia.wallet.util.pprint import print_compact_ranges
4
4
 
5
5
 
6
6
  def test_print_compact_ranges() -> None:
@@ -8,7 +8,7 @@ import logging
8
8
  import random
9
9
  import time
10
10
  from dataclasses import dataclass
11
- from typing import Callable, List, Optional
11
+ from typing import Callable, Optional
12
12
 
13
13
  import anyio
14
14
  import pytest
@@ -16,6 +16,7 @@ import pytest
16
16
  from chia._tests.util.misc import Marks, datacases
17
17
  from chia._tests.util.time_out_assert import time_out_assert_custom_interval
18
18
  from chia.util.priority_mutex import NestedLockUnsupportedError, PriorityMutex
19
+ from chia.util.task_referencer import create_referenced_task
19
20
  from chia.util.timing import adjusted_timeout
20
21
 
21
22
  log = logging.getLogger(__name__)
@@ -65,10 +66,10 @@ class TestPriorityMutex:
65
66
  log.warning(f"Spend {time.time() - t1} waiting for low {i}")
66
67
  await kind_of_slow_func()
67
68
 
68
- h = asyncio.create_task(do_high())
69
+ h = create_referenced_task(do_high())
69
70
  l_tasks = []
70
71
  for i in range(50):
71
- l_tasks.append(asyncio.create_task(do_low(i)))
72
+ l_tasks.append(create_referenced_task(do_low(i)))
72
73
 
73
74
  winner = None
74
75
 
@@ -158,8 +159,8 @@ class Request:
158
159
 
159
160
  @dataclass(frozen=True)
160
161
  class OrderCase:
161
- requests: List[Request]
162
- expected_acquisitions: List[str]
162
+ requests: list[Request]
163
+ expected_acquisitions: list[str]
163
164
 
164
165
 
165
166
  @dataclass
@@ -268,7 +269,7 @@ async def test_order(case: OrderCase) -> None:
268
269
  assert sane(requests=case.requests)
269
270
 
270
271
 
271
- def expected_acquisition_order(requests: List[Request]) -> List[Request]:
272
+ def expected_acquisition_order(requests: list[Request]) -> list[Request]:
272
273
  first_request, *other_requests = requests
273
274
  return [
274
275
  first_request,
@@ -334,13 +335,13 @@ async def test_cancellation_while_waiting() -> None:
334
335
  async with mutex.acquire(priority=MutexPriority.high):
335
336
  pass
336
337
 
337
- block_task = asyncio.create_task(block())
338
+ block_task = create_referenced_task(block())
338
339
  await blocker_acquired_event.wait()
339
340
 
340
- cancel_task = asyncio.create_task(to_be_cancelled(mutex=mutex))
341
+ cancel_task = create_referenced_task(to_be_cancelled(mutex=mutex))
341
342
  await wait_queued(mutex=mutex, task=cancel_task)
342
343
 
343
- queued_after_task = asyncio.create_task(queued_after())
344
+ queued_after_task = create_referenced_task(queued_after())
344
345
  await wait_queued(mutex=mutex, task=queued_after_task)
345
346
 
346
347
  cancel_task.cancel()
@@ -375,7 +376,7 @@ async def test_retains_request_order_for_matching_priority(seed: int) -> None:
375
376
  assert sane(requests=all_requests)
376
377
 
377
378
 
378
- def sane(requests: List[Request]) -> bool:
379
+ def sane(requests: list[Request]) -> bool:
379
380
  if any(not request.completed for request in requests):
380
381
  return False
381
382
 
@@ -387,7 +388,7 @@ def sane(requests: List[Request]) -> bool:
387
388
  class SaneCase:
388
389
  id: str
389
390
  good: bool
390
- requests: List[Request]
391
+ requests: list[Request]
391
392
  marks: Marks = ()
392
393
 
393
394
 
@@ -434,14 +435,14 @@ def test_sane_all_in_order(case: SaneCase) -> None:
434
435
 
435
436
 
436
437
  async def create_acquire_tasks_in_controlled_order(
437
- requests: List[Request],
438
+ requests: list[Request],
438
439
  mutex: PriorityMutex[MutexPriority],
439
- ) -> List[asyncio.Task[None]]:
440
- tasks: List[asyncio.Task[None]] = []
440
+ ) -> list[asyncio.Task[None]]:
441
+ tasks: list[asyncio.Task[None]] = []
441
442
  release_event = asyncio.Event()
442
443
 
443
444
  for request in requests:
444
- task = asyncio.create_task(request.acquire(mutex=mutex, wait_for=release_event))
445
+ task = create_referenced_task(request.acquire(mutex=mutex, wait_for=release_event))
445
446
  tasks.append(task)
446
447
  await wait_queued(mutex=mutex, task=task)
447
448
 
@@ -461,14 +462,14 @@ async def test_multiple_tasks_track_active_task_accurately() -> None:
461
462
  await other_task_allow_release_event.wait()
462
463
 
463
464
  async with mutex.acquire(priority=MutexPriority.high):
464
- other_task = asyncio.create_task(other_task_function())
465
+ other_task = create_referenced_task(other_task_function())
465
466
  await wait_queued(mutex=mutex, task=other_task)
466
467
 
467
468
  async def another_task_function() -> None:
468
469
  async with mutex.acquire(priority=MutexPriority.high):
469
470
  pass
470
471
 
471
- another_task = asyncio.create_task(another_task_function())
472
+ another_task = create_referenced_task(another_task_function())
472
473
  await wait_queued(mutex=mutex, task=another_task)
473
474
  other_task_allow_release_event.set()
474
475
 
@@ -2,7 +2,7 @@ from __future__ import annotations
2
2
 
3
3
  import copy
4
4
  from dataclasses import dataclass
5
- from typing import List, Optional, Union
5
+ from typing import Optional, Union
6
6
 
7
7
  import pytest
8
8
 
@@ -35,7 +35,7 @@ class TestC:
35
35
  class TestA:
36
36
  a: int
37
37
  b: str
38
- c: List[int]
38
+ c: list[int]
39
39
  d: Optional[TestC]
40
40
 
41
41
 
@@ -1,12 +1,12 @@
1
1
  from __future__ import annotations
2
2
 
3
- from typing import Any, Dict
3
+ from typing import Any
4
4
 
5
5
  from chia.consensus.default_constants import update_testnet_overrides
6
6
 
7
7
 
8
8
  def test_testnet11() -> None:
9
- overrides: Dict[str, Any] = {}
9
+ overrides: dict[str, Any] = {}
10
10
  update_testnet_overrides("testnet11", overrides)
11
11
  assert overrides == {
12
12
  "SOFT_FORK6_HEIGHT": 2000000,
@@ -14,6 +14,6 @@ def test_testnet11() -> None:
14
14
 
15
15
 
16
16
  def test_mainnet() -> None:
17
- overrides: Dict[str, Any] = {}
17
+ overrides: dict[str, Any] = {}
18
18
  update_testnet_overrides("mainnet", overrides)
19
19
  assert overrides == {}
@@ -1,6 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
- from typing import Iterator
3
+ from collections.abc import Iterator
4
4
 
5
5
  from chia.util.timing import backoff_times
6
6
 
@@ -1,6 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
- from typing import Any, Dict, List
3
+ from typing import Any
4
4
 
5
5
  import pytest
6
6
 
@@ -41,7 +41,7 @@ from chia.util.network import is_trusted_peer
41
41
  ],
42
42
  )
43
43
  def test_is_trusted_peer(
44
- host: str, node_id: bytes32, trusted_peers: Dict[str, Any], trusted_cidrs: List[str], testing: bool, result: bool
44
+ host: str, node_id: bytes32, trusted_peers: dict[str, Any], trusted_cidrs: list[str], testing: bool, result: bool
45
45
  ) -> None:
46
46
  assert (
47
47
  is_trusted_peer(
@@ -6,18 +6,41 @@ import json
6
6
  import logging
7
7
  import pathlib
8
8
  import time
9
- from typing import TYPE_CHECKING, Any, Callable, ClassVar, Dict, Tuple, cast, final
9
+ from collections.abc import Iterable
10
+ from inspect import getframeinfo, stack
11
+ from pathlib import Path
12
+ from typing import TYPE_CHECKING, Any, Callable, ClassVar, Protocol, TypeVar, cast, final
10
13
 
11
14
  import chia
12
15
  import chia._tests
13
16
  from chia._tests import ether
14
- from chia._tests.util.misc import DataTypeProtocol, caller_file_and_line
15
17
  from chia.protocols.protocol_message_types import ProtocolMessageTypes
16
18
  from chia.util.timing import adjusted_timeout
17
19
 
18
20
  log = logging.getLogger(__name__)
19
21
 
20
22
 
23
+ T = TypeVar("T")
24
+
25
+
26
+ @dataclasses.dataclass(frozen=True)
27
+ class DataTypeProtocol(Protocol):
28
+ tag: ClassVar[str]
29
+
30
+ line: int
31
+ path: Path
32
+ label: str
33
+ duration: float
34
+ limit: float
35
+
36
+ __match_args__: ClassVar[tuple[str, ...]] = ()
37
+
38
+ @classmethod
39
+ def unmarshal(cls: type[T], marshalled: dict[str, Any]) -> T: ...
40
+
41
+ def marshal(self) -> dict[str, Any]: ...
42
+
43
+
21
44
  @final
22
45
  @dataclasses.dataclass(frozen=True)
23
46
  class TimeOutAssertData:
@@ -34,10 +57,10 @@ class TimeOutAssertData:
34
57
 
35
58
  label: str = ""
36
59
 
37
- __match_args__: ClassVar[Tuple[str, ...]] = ()
60
+ __match_args__: ClassVar[tuple[str, ...]] = ()
38
61
 
39
62
  @classmethod
40
- def unmarshal(cls, marshalled: Dict[str, Any]) -> TimeOutAssertData:
63
+ def unmarshal(cls, marshalled: dict[str, Any]) -> TimeOutAssertData:
41
64
  return cls(
42
65
  duration=marshalled["duration"],
43
66
  path=pathlib.Path(marshalled["path"]),
@@ -46,7 +69,7 @@ class TimeOutAssertData:
46
69
  timed_out=marshalled["timed_out"],
47
70
  )
48
71
 
49
- def marshal(self) -> Dict[str, Any]:
72
+ def marshal(self) -> dict[str, Any]:
50
73
  return {
51
74
  "duration": self.duration,
52
75
  "path": self.path.as_posix(),
@@ -102,7 +125,7 @@ async def time_out_assert_custom_interval(
102
125
  timed_out=timed_out,
103
126
  )
104
127
 
105
- ether.record_property( # pylint: disable=E1102
128
+ ether.record_property(
106
129
  data.tag,
107
130
  json.dumps(data.marshal(), ensure_ascii=True, sort_keys=True),
108
131
  )
@@ -152,3 +175,17 @@ def time_out_messages(incoming_queue: asyncio.Queue, msg_name: str, count: int =
152
175
  return True
153
176
 
154
177
  return bool_f
178
+
179
+
180
+ def caller_file_and_line(distance: int = 1, relative_to: Iterable[Path] = ()) -> tuple[str, int]:
181
+ caller = getframeinfo(stack()[distance + 1][0])
182
+
183
+ caller_path = Path(caller.filename)
184
+ options: list[str] = [caller_path.as_posix()]
185
+ for path in relative_to:
186
+ try:
187
+ options.append(caller_path.relative_to(path).as_posix())
188
+ except ValueError:
189
+ pass
190
+
191
+ return min(options, key=len), caller.lineno
@@ -1,6 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
- from typing import List, Optional, Tuple
3
+ from typing import Optional
4
4
 
5
5
  import pytest
6
6
  from chia_rs import AugSchemeMPL, G2Element, PrivateKey
@@ -9,7 +9,7 @@ from clvm.casts import int_to_bytes
9
9
  from chia._tests.clvm.benchmark_costs import cost_of_spend_bundle
10
10
  from chia._tests.clvm.test_puzzles import secret_exponent_for_index
11
11
  from chia._tests.conftest import ConsensusMode
12
- from chia.clvm.spend_sim import CostLogger, SimClient, SpendSim, sim_and_client
12
+ from chia._tests.util.spend_sim import CostLogger, SimClient, SpendSim, sim_and_client
13
13
  from chia.types.blockchain_format.coin import Coin
14
14
  from chia.types.blockchain_format.program import Program
15
15
  from chia.types.coin_spend import make_spend
@@ -35,15 +35,15 @@ async def do_spend(
35
35
  sim: SpendSim,
36
36
  sim_client: SimClient,
37
37
  tail: Program,
38
- coins: List[Coin],
39
- lineage_proofs: List[LineageProof],
40
- inner_solutions: List[Program],
41
- expected_result: Tuple[MempoolInclusionStatus, Optional[Err]],
38
+ coins: list[Coin],
39
+ lineage_proofs: list[LineageProof],
40
+ inner_solutions: list[Program],
41
+ expected_result: tuple[MempoolInclusionStatus, Optional[Err]],
42
42
  reveal_limitations_program: bool = True,
43
- signatures: List[G2Element] = [],
44
- extra_deltas: Optional[List[int]] = None,
45
- additional_spends: List[WalletSpendBundle] = [],
46
- limitations_solutions: Optional[List[Program]] = None,
43
+ signatures: list[G2Element] = [],
44
+ extra_deltas: Optional[list[int]] = None,
45
+ additional_spends: list[WalletSpendBundle] = [],
46
+ limitations_solutions: Optional[list[Program]] = None,
47
47
  cost_logger: Optional[CostLogger] = None,
48
48
  cost_log_msg: str = "",
49
49
  ) -> int:
@@ -52,7 +52,7 @@ async def do_spend(
52
52
  if extra_deltas is None:
53
53
  extra_deltas = [0] * len(coins)
54
54
 
55
- spendable_cat_list: List[SpendableCAT] = []
55
+ spendable_cat_list: list[SpendableCAT] = []
56
56
  for coin, innersol, proof, limitations_solution, extra_delta in zip(
57
57
  coins, inner_solutions, lineage_proofs, limitations_solutions, extra_deltas
58
58
  ):
@@ -260,8 +260,8 @@ async def test_complex_spend(cost_logger: CostLogger, consensus_mode: ConsensusM
260
260
  # Find the two new coins
261
261
  all_cats = await sim_client.get_coin_records_by_puzzle_hash(cat_ph, include_spent_coins=False)
262
262
  all_cat_coins = [cr.coin for cr in all_cats]
263
- standard_to_mint = list(filter(lambda cr: cr.parent_coin_info == parent_of_mint.name(), all_cat_coins))[0]
264
- standard_to_melt = list(filter(lambda cr: cr.parent_coin_info == parent_of_melt.name(), all_cat_coins))[0]
263
+ standard_to_mint = next(filter(lambda cr: cr.parent_coin_info == parent_of_mint.name(), all_cat_coins))
264
+ standard_to_melt = next(filter(lambda cr: cr.parent_coin_info == parent_of_melt.name(), all_cat_coins))
265
265
 
266
266
  # Do the complex spend
267
267
  # We have both and eve and non-eve doing both minting and melting
@@ -19,7 +19,7 @@ from chia.wallet.uncurried_puzzle import uncurry_puzzle
19
19
 
20
20
  def test_cat_outer_puzzle() -> None:
21
21
  ACS = Program.to(1)
22
- tail = bytes32([0] * 32)
22
+ tail = bytes32.zeros
23
23
  cat_puzzle: Program = construct_cat_puzzle(CAT_MOD, tail, ACS)
24
24
  double_cat_puzzle: Program = construct_cat_puzzle(CAT_MOD, tail, cat_puzzle)
25
25
  uncurried_cat_puzzle = uncurry_puzzle(double_cat_puzzle)