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,23 +1,24 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import logging
4
- from typing import Tuple
5
4
 
6
5
  import pytest
7
6
  from clvm.casts import int_to_bytes
8
7
 
9
8
  from chia._tests.blockchain.blockchain_test_utils import _validate_and_add_block
10
9
  from chia._tests.util.generator_tools_testing import run_and_get_removals_and_additions
10
+ from chia.consensus.blockchain import AddBlockResult
11
11
  from chia.full_node.full_node_api import FullNodeAPI
12
12
  from chia.protocols import wallet_protocol
13
13
  from chia.server.server import ChiaServer
14
+ from chia.simulator.add_blocks_in_batches import add_blocks_in_batches
14
15
  from chia.simulator.block_tools import BlockTools, test_constants
15
16
  from chia.simulator.wallet_tools import WalletTool
16
17
  from chia.types.blockchain_format.sized_bytes import bytes32
17
18
  from chia.types.condition_opcodes import ConditionOpcode
18
19
  from chia.types.condition_with_args import ConditionWithArgs
19
20
  from chia.types.spend_bundle import SpendBundle, estimate_fees
20
- from chia.util.errors import ConsensusError, Err
21
+ from chia.util.errors import Err
21
22
  from chia.util.ints import uint32, uint64
22
23
  from chia.wallet.conditions import AssertCoinAnnouncement, AssertPuzzleAnnouncement
23
24
 
@@ -32,7 +33,7 @@ log = logging.getLogger(__name__)
32
33
  class TestBlockchainTransactions:
33
34
  @pytest.mark.anyio
34
35
  async def test_basic_blockchain_tx(
35
- self, two_nodes: Tuple[FullNodeAPI, FullNodeAPI, ChiaServer, ChiaServer, BlockTools]
36
+ self, two_nodes: tuple[FullNodeAPI, FullNodeAPI, ChiaServer, ChiaServer, BlockTools]
36
37
  ) -> None:
37
38
  num_blocks = 10
38
39
  wallet_a = WALLET_A
@@ -44,8 +45,7 @@ class TestBlockchainTransactions:
44
45
  num_blocks, farmer_reward_puzzle_hash=coinbase_puzzlehash, guarantee_transaction_block=True
45
46
  )
46
47
 
47
- for block in blocks:
48
- await full_node_api_1.full_node.add_block(block, None)
48
+ await add_blocks_in_batches(blocks, full_node_api_1.full_node)
49
49
 
50
50
  spend_block = blocks[2]
51
51
  spend_coin = None
@@ -98,7 +98,7 @@ class TestBlockchainTransactions:
98
98
 
99
99
  @pytest.mark.anyio
100
100
  async def test_validate_blockchain_with_double_spend(
101
- self, two_nodes: Tuple[FullNodeAPI, FullNodeAPI, ChiaServer, ChiaServer, BlockTools]
101
+ self, two_nodes: tuple[FullNodeAPI, FullNodeAPI, ChiaServer, ChiaServer, BlockTools]
102
102
  ) -> None:
103
103
  num_blocks = 5
104
104
  wallet_a = WALLET_A
@@ -110,8 +110,7 @@ class TestBlockchainTransactions:
110
110
  num_blocks, farmer_reward_puzzle_hash=coinbase_puzzlehash, guarantee_transaction_block=True
111
111
  )
112
112
 
113
- for block in blocks:
114
- await full_node_api_1.full_node.add_block(block)
113
+ await add_blocks_in_batches(blocks, full_node_api_1.full_node)
115
114
 
116
115
  spend_block = blocks[2]
117
116
  spend_coin = None
@@ -138,7 +137,7 @@ class TestBlockchainTransactions:
138
137
 
139
138
  @pytest.mark.anyio
140
139
  async def test_validate_blockchain_duplicate_output(
141
- self, two_nodes: Tuple[FullNodeAPI, FullNodeAPI, ChiaServer, ChiaServer, BlockTools]
140
+ self, two_nodes: tuple[FullNodeAPI, FullNodeAPI, ChiaServer, ChiaServer, BlockTools]
142
141
  ) -> None:
143
142
  num_blocks = 3
144
143
  wallet_a = WALLET_A
@@ -150,8 +149,7 @@ class TestBlockchainTransactions:
150
149
  num_blocks, farmer_reward_puzzle_hash=coinbase_puzzlehash, guarantee_transaction_block=True
151
150
  )
152
151
 
153
- for block in blocks:
154
- await full_node_api_1.full_node.add_block(block)
152
+ await add_blocks_in_batches(blocks, full_node_api_1.full_node)
155
153
 
156
154
  spend_block = blocks[2]
157
155
 
@@ -178,7 +176,7 @@ class TestBlockchainTransactions:
178
176
 
179
177
  @pytest.mark.anyio
180
178
  async def test_validate_blockchain_with_reorg_double_spend(
181
- self, two_nodes: Tuple[FullNodeAPI, FullNodeAPI, ChiaServer, ChiaServer, BlockTools]
179
+ self, two_nodes: tuple[FullNodeAPI, FullNodeAPI, ChiaServer, ChiaServer, BlockTools]
182
180
  ) -> None:
183
181
  num_blocks = 10
184
182
  wallet_a = WALLET_A
@@ -189,8 +187,7 @@ class TestBlockchainTransactions:
189
187
  num_blocks, farmer_reward_puzzle_hash=coinbase_puzzlehash, guarantee_transaction_block=True
190
188
  )
191
189
 
192
- for block in blocks:
193
- await full_node_api_1.full_node.add_block(block)
190
+ await add_blocks_in_batches(blocks, full_node_api_1.full_node)
194
191
 
195
192
  spend_block = blocks[2]
196
193
 
@@ -209,8 +206,7 @@ class TestBlockchainTransactions:
209
206
  transaction_data=spend_bundle,
210
207
  )
211
208
  # Move chain to height 10, with a spend at height 10
212
- for block in blocks_spend:
213
- await full_node_api_1.full_node.add_block(block)
209
+ await add_blocks_in_batches(blocks_spend, full_node_api_1.full_node)
214
210
 
215
211
  # Reorg at height 5, add up to and including height 12
216
212
  new_blocks = bt.get_consecutive_blocks(
@@ -221,8 +217,7 @@ class TestBlockchainTransactions:
221
217
  seed=b"another seed",
222
218
  )
223
219
 
224
- for block in new_blocks:
225
- await full_node_api_1.full_node.add_block(block)
220
+ await add_blocks_in_batches(new_blocks[-7:], full_node_api_1.full_node)
226
221
 
227
222
  # Spend the same coin in the new reorg chain at height 13
228
223
  new_blocks = bt.get_consecutive_blocks(
@@ -257,8 +252,9 @@ class TestBlockchainTransactions:
257
252
  transaction_data=spend_bundle,
258
253
  seed=b"spend at 12 is ok",
259
254
  )
260
- for block in new_blocks_reorg:
261
- await full_node_api_1.full_node.add_block(block)
255
+ await _validate_and_add_block(
256
+ full_node_api_1.full_node.blockchain, new_blocks_reorg[-1], expected_result=AddBlockResult.ADDED_AS_ORPHAN
257
+ )
262
258
 
263
259
  # Spend at height 13 is also OK (same height)
264
260
  new_blocks_reorg = bt.get_consecutive_blocks(
@@ -269,8 +265,9 @@ class TestBlockchainTransactions:
269
265
  transaction_data=spend_bundle,
270
266
  seed=b"spend at 13 is ok",
271
267
  )
272
- for block in new_blocks_reorg:
273
- await full_node_api_1.full_node.add_block(block)
268
+ await _validate_and_add_block(
269
+ full_node_api_1.full_node.blockchain, new_blocks_reorg[-1], expected_result=AddBlockResult.ADDED_AS_ORPHAN
270
+ )
274
271
 
275
272
  # Spend at height 14 is not OK (already spend)
276
273
  new_blocks_reorg = bt.get_consecutive_blocks(
@@ -281,13 +278,16 @@ class TestBlockchainTransactions:
281
278
  transaction_data=spend_bundle,
282
279
  seed=b"spend at 14 is double spend",
283
280
  )
284
- with pytest.raises(ConsensusError):
285
- for block in new_blocks_reorg:
286
- await full_node_api_1.full_node.add_block(block)
281
+ await _validate_and_add_block(
282
+ full_node_api_1.full_node.blockchain,
283
+ new_blocks_reorg[-1],
284
+ expected_result=AddBlockResult.INVALID_BLOCK,
285
+ expected_error=Err.DOUBLE_SPEND,
286
+ )
287
287
 
288
288
  @pytest.mark.anyio
289
289
  async def test_validate_blockchain_spend_reorg_coin(
290
- self, two_nodes: Tuple[FullNodeAPI, FullNodeAPI, ChiaServer, ChiaServer, BlockTools], softfork_height: uint32
290
+ self, two_nodes: tuple[FullNodeAPI, FullNodeAPI, ChiaServer, ChiaServer, BlockTools], softfork_height: uint32
291
291
  ) -> None:
292
292
  num_blocks = 10
293
293
  wallet_a = WALLET_A
@@ -300,8 +300,7 @@ class TestBlockchainTransactions:
300
300
  num_blocks, farmer_reward_puzzle_hash=coinbase_puzzlehash, guarantee_transaction_block=True
301
301
  )
302
302
 
303
- for block in blocks:
304
- await full_node_api_1.full_node.add_block(block)
303
+ await add_blocks_in_batches(blocks, full_node_api_1.full_node)
305
304
 
306
305
  spend_block = blocks[2]
307
306
 
@@ -321,8 +320,7 @@ class TestBlockchainTransactions:
321
320
  transaction_data=spend_bundle,
322
321
  guarantee_transaction_block=True,
323
322
  )
324
-
325
- await full_node_api_1.full_node.add_block(new_blocks[-1])
323
+ await add_blocks_in_batches([new_blocks[-1]], full_node_api_1.full_node)
326
324
 
327
325
  coin_2 = None
328
326
  for coin in run_and_get_removals_and_additions(
@@ -346,7 +344,7 @@ class TestBlockchainTransactions:
346
344
  transaction_data=spend_bundle,
347
345
  guarantee_transaction_block=True,
348
346
  )
349
- await full_node_api_1.full_node.add_block(new_blocks[-1])
347
+ await add_blocks_in_batches(new_blocks, full_node_api_1.full_node)
350
348
 
351
349
  coin_3 = None
352
350
  for coin in run_and_get_removals_and_additions(
@@ -370,12 +368,11 @@ class TestBlockchainTransactions:
370
368
  transaction_data=spend_bundle,
371
369
  guarantee_transaction_block=True,
372
370
  )
373
-
374
- await full_node_api_1.full_node.add_block(new_blocks[-1])
371
+ await add_blocks_in_batches(new_blocks, full_node_api_1.full_node)
375
372
 
376
373
  @pytest.mark.anyio
377
374
  async def test_validate_blockchain_spend_reorg_cb_coin(
378
- self, two_nodes: Tuple[FullNodeAPI, FullNodeAPI, ChiaServer, ChiaServer, BlockTools]
375
+ self, two_nodes: tuple[FullNodeAPI, FullNodeAPI, ChiaServer, ChiaServer, BlockTools]
379
376
  ) -> None:
380
377
  num_blocks = 15
381
378
  wallet_a = WALLET_A
@@ -383,9 +380,7 @@ class TestBlockchainTransactions:
383
380
  receiver_1_puzzlehash = WALLET_A_PUZZLE_HASHES[1]
384
381
  full_node_api_1, _, _, _, bt = two_nodes
385
382
  blocks = bt.get_consecutive_blocks(num_blocks, farmer_reward_puzzle_hash=coinbase_puzzlehash)
386
-
387
- for block in blocks:
388
- await full_node_api_1.full_node.add_block(block)
383
+ await add_blocks_in_batches(blocks, full_node_api_1.full_node)
389
384
 
390
385
  # Spends a coinbase created in reorg
391
386
  new_blocks = bt.get_consecutive_blocks(
@@ -396,8 +391,7 @@ class TestBlockchainTransactions:
396
391
  guarantee_transaction_block=True,
397
392
  )
398
393
 
399
- for block in new_blocks:
400
- await full_node_api_1.full_node.add_block(block)
394
+ await add_blocks_in_batches(new_blocks, full_node_api_1.full_node)
401
395
 
402
396
  spend_block = new_blocks[-1]
403
397
  spend_coin = None
@@ -415,12 +409,11 @@ class TestBlockchainTransactions:
415
409
  transaction_data=spend_bundle,
416
410
  guarantee_transaction_block=True,
417
411
  )
418
-
419
- await full_node_api_1.full_node.add_block(new_blocks[-1])
412
+ await add_blocks_in_batches(new_blocks, full_node_api_1.full_node)
420
413
 
421
414
  @pytest.mark.anyio
422
415
  async def test_validate_blockchain_spend_reorg_since_genesis(
423
- self, two_nodes: Tuple[FullNodeAPI, FullNodeAPI, ChiaServer, ChiaServer, BlockTools]
416
+ self, two_nodes: tuple[FullNodeAPI, FullNodeAPI, ChiaServer, ChiaServer, BlockTools]
424
417
  ) -> None:
425
418
  num_blocks = 10
426
419
  wallet_a = WALLET_A
@@ -431,8 +424,7 @@ class TestBlockchainTransactions:
431
424
  num_blocks, farmer_reward_puzzle_hash=coinbase_puzzlehash, guarantee_transaction_block=True
432
425
  )
433
426
 
434
- for block in blocks:
435
- await full_node_api_1.full_node.add_block(block)
427
+ await add_blocks_in_batches(blocks, full_node_api_1.full_node)
436
428
 
437
429
  spend_block = blocks[-1]
438
430
  spend_coin = None
@@ -445,7 +437,7 @@ class TestBlockchainTransactions:
445
437
  new_blocks = bt.get_consecutive_blocks(
446
438
  1, blocks, seed=b"", farmer_reward_puzzle_hash=coinbase_puzzlehash, transaction_data=spend_bundle
447
439
  )
448
- await full_node_api_1.full_node.add_block(new_blocks[-1])
440
+ await _validate_and_add_block(full_node_api_1.full_node.blockchain, new_blocks[-1])
449
441
 
450
442
  # Spends a coin in a genesis reorg, that was already spent
451
443
  new_blocks = bt.get_consecutive_blocks(
@@ -456,9 +448,6 @@ class TestBlockchainTransactions:
456
448
  guarantee_transaction_block=True,
457
449
  )
458
450
 
459
- for block in new_blocks:
460
- await full_node_api_1.full_node.add_block(block)
461
-
462
451
  new_blocks = bt.get_consecutive_blocks(
463
452
  1,
464
453
  new_blocks,
@@ -467,11 +456,11 @@ class TestBlockchainTransactions:
467
456
  transaction_data=spend_bundle,
468
457
  )
469
458
 
470
- await full_node_api_1.full_node.add_block(new_blocks[-1])
459
+ await add_blocks_in_batches(new_blocks, full_node_api_1.full_node)
471
460
 
472
461
  @pytest.mark.anyio
473
462
  async def test_assert_my_coin_id(
474
- self, two_nodes: Tuple[FullNodeAPI, FullNodeAPI, ChiaServer, ChiaServer, BlockTools]
463
+ self, two_nodes: tuple[FullNodeAPI, FullNodeAPI, ChiaServer, ChiaServer, BlockTools]
475
464
  ) -> None:
476
465
  num_blocks = 10
477
466
  wallet_a = WALLET_A
@@ -484,8 +473,7 @@ class TestBlockchainTransactions:
484
473
  num_blocks, farmer_reward_puzzle_hash=coinbase_puzzlehash, guarantee_transaction_block=True
485
474
  )
486
475
 
487
- for block in blocks:
488
- await full_node_api_1.full_node.add_block(block)
476
+ await add_blocks_in_batches(blocks, full_node_api_1.full_node)
489
477
 
490
478
  # Coinbase that gets spent
491
479
 
@@ -543,7 +531,7 @@ class TestBlockchainTransactions:
543
531
 
544
532
  @pytest.mark.anyio
545
533
  async def test_assert_coin_announcement_consumed(
546
- self, two_nodes: Tuple[FullNodeAPI, FullNodeAPI, ChiaServer, ChiaServer, BlockTools]
534
+ self, two_nodes: tuple[FullNodeAPI, FullNodeAPI, ChiaServer, ChiaServer, BlockTools]
547
535
  ) -> None:
548
536
  num_blocks = 10
549
537
  wallet_a = WALLET_A
@@ -556,8 +544,7 @@ class TestBlockchainTransactions:
556
544
  num_blocks, farmer_reward_puzzle_hash=coinbase_puzzlehash, guarantee_transaction_block=True
557
545
  )
558
546
 
559
- for block in blocks:
560
- await full_node_api_1.full_node.add_block(block)
547
+ await add_blocks_in_batches(blocks, full_node_api_1.full_node)
561
548
 
562
549
  # Coinbase that gets spent
563
550
  block1 = blocks[2]
@@ -627,7 +614,7 @@ class TestBlockchainTransactions:
627
614
 
628
615
  @pytest.mark.anyio
629
616
  async def test_assert_puzzle_announcement_consumed(
630
- self, two_nodes: Tuple[FullNodeAPI, FullNodeAPI, ChiaServer, ChiaServer, BlockTools]
617
+ self, two_nodes: tuple[FullNodeAPI, FullNodeAPI, ChiaServer, ChiaServer, BlockTools]
631
618
  ) -> None:
632
619
  num_blocks = 10
633
620
  wallet_a = WALLET_A
@@ -640,8 +627,7 @@ class TestBlockchainTransactions:
640
627
  num_blocks, farmer_reward_puzzle_hash=coinbase_puzzlehash, guarantee_transaction_block=True
641
628
  )
642
629
 
643
- for block in blocks:
644
- await full_node_api_1.full_node.add_block(block)
630
+ await add_blocks_in_batches(blocks, full_node_api_1.full_node)
645
631
 
646
632
  # Coinbase that gets spent
647
633
  block1 = blocks[2]
@@ -711,7 +697,7 @@ class TestBlockchainTransactions:
711
697
 
712
698
  @pytest.mark.anyio
713
699
  async def test_assert_height_absolute(
714
- self, two_nodes: Tuple[FullNodeAPI, FullNodeAPI, ChiaServer, ChiaServer, BlockTools]
700
+ self, two_nodes: tuple[FullNodeAPI, FullNodeAPI, ChiaServer, ChiaServer, BlockTools]
715
701
  ) -> None:
716
702
  num_blocks = 10
717
703
  wallet_a = WALLET_A
@@ -724,8 +710,7 @@ class TestBlockchainTransactions:
724
710
  num_blocks, farmer_reward_puzzle_hash=coinbase_puzzlehash, guarantee_transaction_block=True
725
711
  )
726
712
 
727
- for block in blocks:
728
- await full_node_api_1.full_node.add_block(block)
713
+ await add_blocks_in_batches(blocks, full_node_api_1.full_node)
729
714
 
730
715
  # Coinbase that gets spent
731
716
  block1 = blocks[2]
@@ -777,7 +762,7 @@ class TestBlockchainTransactions:
777
762
 
778
763
  @pytest.mark.anyio
779
764
  async def test_assert_height_relative(
780
- self, two_nodes: Tuple[FullNodeAPI, FullNodeAPI, ChiaServer, ChiaServer, BlockTools]
765
+ self, two_nodes: tuple[FullNodeAPI, FullNodeAPI, ChiaServer, ChiaServer, BlockTools]
781
766
  ) -> None:
782
767
  num_blocks = 11
783
768
  wallet_a = WALLET_A
@@ -790,8 +775,7 @@ class TestBlockchainTransactions:
790
775
  num_blocks, farmer_reward_puzzle_hash=coinbase_puzzlehash, guarantee_transaction_block=True
791
776
  )
792
777
 
793
- for block in blocks:
794
- await full_node_api_1.full_node.add_block(block)
778
+ await add_blocks_in_batches(blocks, full_node_api_1.full_node)
795
779
 
796
780
  # Coinbase that gets spent
797
781
  block1 = blocks[2]
@@ -845,7 +829,7 @@ class TestBlockchainTransactions:
845
829
 
846
830
  @pytest.mark.anyio
847
831
  async def test_assert_seconds_relative(
848
- self, two_nodes: Tuple[FullNodeAPI, FullNodeAPI, ChiaServer, ChiaServer, BlockTools]
832
+ self, two_nodes: tuple[FullNodeAPI, FullNodeAPI, ChiaServer, ChiaServer, BlockTools]
849
833
  ) -> None:
850
834
  num_blocks = 10
851
835
  wallet_a = WALLET_A
@@ -858,8 +842,7 @@ class TestBlockchainTransactions:
858
842
  num_blocks, farmer_reward_puzzle_hash=coinbase_puzzlehash, guarantee_transaction_block=True
859
843
  )
860
844
 
861
- for block in blocks:
862
- await full_node_api_1.full_node.add_block(block)
845
+ await add_blocks_in_batches(blocks, full_node_api_1.full_node)
863
846
 
864
847
  # Coinbase that gets spent
865
848
  block1 = blocks[2]
@@ -903,7 +886,7 @@ class TestBlockchainTransactions:
903
886
  time_per_block=301,
904
887
  )
905
888
  )
906
- await full_node_api_1.full_node.add_block(blocks[-1])
889
+ await _validate_and_add_block(full_node_1.blockchain, blocks[-1])
907
890
 
908
891
  valid_new_blocks = bt.get_consecutive_blocks(
909
892
  1,
@@ -917,7 +900,7 @@ class TestBlockchainTransactions:
917
900
 
918
901
  @pytest.mark.anyio
919
902
  async def test_assert_seconds_absolute(
920
- self, two_nodes: Tuple[FullNodeAPI, FullNodeAPI, ChiaServer, ChiaServer, BlockTools]
903
+ self, two_nodes: tuple[FullNodeAPI, FullNodeAPI, ChiaServer, ChiaServer, BlockTools]
921
904
  ) -> None:
922
905
  num_blocks = 10
923
906
  wallet_a = WALLET_A
@@ -930,8 +913,7 @@ class TestBlockchainTransactions:
930
913
  num_blocks, farmer_reward_puzzle_hash=coinbase_puzzlehash, guarantee_transaction_block=True
931
914
  )
932
915
 
933
- for block in blocks:
934
- await full_node_api_1.full_node.add_block(block)
916
+ await add_blocks_in_batches(blocks, full_node_api_1.full_node)
935
917
 
936
918
  # Coinbase that gets spent
937
919
  block1 = blocks[2]
@@ -977,7 +959,7 @@ class TestBlockchainTransactions:
977
959
  time_per_block=30,
978
960
  )
979
961
  )
980
- await full_node_api_1.full_node.add_block(blocks[-1])
962
+ await _validate_and_add_block(full_node_1.blockchain, blocks[-1])
981
963
 
982
964
  valid_new_blocks = bt.get_consecutive_blocks(
983
965
  1,
@@ -991,7 +973,7 @@ class TestBlockchainTransactions:
991
973
 
992
974
  @pytest.mark.anyio
993
975
  async def test_assert_fee_condition(
994
- self, two_nodes: Tuple[FullNodeAPI, FullNodeAPI, ChiaServer, ChiaServer, BlockTools]
976
+ self, two_nodes: tuple[FullNodeAPI, FullNodeAPI, ChiaServer, ChiaServer, BlockTools]
995
977
  ) -> None:
996
978
  num_blocks = 10
997
979
  wallet_a = WALLET_A
@@ -1004,8 +986,7 @@ class TestBlockchainTransactions:
1004
986
  num_blocks, farmer_reward_puzzle_hash=coinbase_puzzlehash, guarantee_transaction_block=True
1005
987
  )
1006
988
 
1007
- for block in blocks:
1008
- await full_node_api_1.full_node.add_block(block)
989
+ await add_blocks_in_batches(blocks, full_node_api_1.full_node)
1009
990
 
1010
991
  # Coinbase that gets spent
1011
992
  block1 = blocks[2]
@@ -1,7 +1,5 @@
1
1
  from __future__ import annotations
2
2
 
3
- from typing import List
4
-
5
3
  import pytest
6
4
 
7
5
  from chia.types.full_block import FullBlock
@@ -21,41 +19,41 @@ from chia.types.full_block import FullBlock
21
19
 
22
20
 
23
21
  @pytest.mark.build_test_chains
24
- def test_trigger_default_400(default_400_blocks: List[FullBlock]) -> None:
22
+ def test_trigger_default_400(default_400_blocks: list[FullBlock]) -> None:
25
23
  pass
26
24
 
27
25
 
28
26
  @pytest.mark.build_test_chains
29
- def test_trigger_default_1000(default_1000_blocks: List[FullBlock]) -> None:
27
+ def test_trigger_default_1000(default_1000_blocks: list[FullBlock]) -> None:
30
28
  pass
31
29
 
32
30
 
33
31
  @pytest.mark.build_test_chains
34
- def test_trigger_pre_genesis_empty_1000(pre_genesis_empty_slots_1000_blocks: List[FullBlock]) -> None:
32
+ def test_trigger_pre_genesis_empty_1000(pre_genesis_empty_slots_1000_blocks: list[FullBlock]) -> None:
35
33
  pass
36
34
 
37
35
 
38
36
  @pytest.mark.build_test_chains
39
- def test_trigger_default_1500(default_1500_blocks: List[FullBlock]) -> None:
37
+ def test_trigger_default_1500(default_1500_blocks: list[FullBlock]) -> None:
40
38
  pass
41
39
 
42
40
 
43
41
  @pytest.mark.build_test_chains
44
42
  def test_trigger_default_10000(
45
- default_10000_blocks: List[FullBlock],
46
- test_long_reorg_blocks: List[FullBlock],
47
- test_long_reorg_blocks_light: List[FullBlock],
48
- test_long_reorg_1500_blocks: List[FullBlock],
49
- test_long_reorg_1500_blocks_light: List[FullBlock],
43
+ default_10000_blocks: list[FullBlock],
44
+ test_long_reorg_blocks: list[FullBlock],
45
+ test_long_reorg_blocks_light: list[FullBlock],
46
+ test_long_reorg_1500_blocks: list[FullBlock],
47
+ test_long_reorg_1500_blocks_light: list[FullBlock],
50
48
  ) -> None:
51
49
  pass
52
50
 
53
51
 
54
52
  @pytest.mark.build_test_chains
55
- def test_trigger_default_2000_compact(default_2000_blocks_compact: List[FullBlock]) -> None:
53
+ def test_trigger_default_2000_compact(default_2000_blocks_compact: list[FullBlock]) -> None:
56
54
  pass
57
55
 
58
56
 
59
57
  @pytest.mark.build_test_chains
60
- def test_trigger_default_10000_compact(default_10000_blocks_compact: List[FullBlock]) -> None:
58
+ def test_trigger_default_10000_compact(default_10000_blocks_compact: list[FullBlock]) -> None:
61
59
  pass
@@ -1,7 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  from dataclasses import dataclass
4
- from typing import Dict, List, Optional, Set
4
+ from typing import Optional
5
5
 
6
6
  import pytest
7
7
  from clvm.casts import int_to_bytes
@@ -17,7 +17,7 @@ from chia.util.ints import uint32
17
17
  class BR:
18
18
  prev_header_hash: bytes32
19
19
  transactions_generator: Optional[SerializedProgram]
20
- transactions_generator_ref_list: List[uint32]
20
+ transactions_generator_ref_list: list[uint32]
21
21
 
22
22
 
23
23
  @dataclass(frozen=True)
@@ -35,15 +35,15 @@ def program(i: int) -> SerializedProgram:
35
35
  return SerializedProgram.from_bytes(int_to_bytes(i))
36
36
 
37
37
 
38
- async def zero_hits(hh: bytes32, refs: Set[uint32]) -> Dict[uint32, bytes]:
38
+ async def zero_hits(hh: bytes32, refs: set[uint32]) -> dict[uint32, bytes]:
39
39
  return {}
40
40
 
41
41
 
42
- async def never_called(hh: bytes32, refs: Set[uint32]) -> Dict[uint32, bytes]:
42
+ async def never_called(hh: bytes32, refs: set[uint32]) -> dict[uint32, bytes]:
43
43
  assert False # pragma: no cover
44
44
 
45
45
 
46
- async def only_lookup_5(hh: bytes32, refs: Set[uint32]) -> Dict[uint32, bytes]:
46
+ async def only_lookup_5(hh: bytes32, refs: set[uint32]) -> dict[uint32, bytes]:
47
47
  assert refs == {uint32(5)}
48
48
  return {uint32(5): bytes(program(5))}
49
49
 
@@ -53,20 +53,20 @@ DUMMY_PROGRAM = SerializedProgram.from_bytes(b"\x80")
53
53
 
54
54
  @pytest.mark.anyio
55
55
  async def test_failing_lookup() -> None:
56
- br = BR(bytes32([0] * 32), DUMMY_PROGRAM, [uint32(1)])
56
+ br = BR(bytes32.zeros, DUMMY_PROGRAM, [uint32(1)])
57
57
  with pytest.raises(KeyError):
58
58
  await get_block_generator(zero_hits, br)
59
59
 
60
60
 
61
61
  @pytest.mark.anyio
62
62
  async def test_no_generator() -> None:
63
- br = BR(bytes32([0] * 32), None, [uint32(1)])
63
+ br = BR(bytes32.zeros, None, [uint32(1)])
64
64
  with pytest.raises(AssertionError):
65
65
  await get_block_generator(zero_hits, br)
66
66
 
67
67
 
68
68
  @pytest.mark.anyio
69
69
  async def test_no_refs() -> None:
70
- br = BR(bytes32([0] * 32), DUMMY_PROGRAM, [])
70
+ br = BR(bytes32.zeros, DUMMY_PROGRAM, [])
71
71
  bg = await get_block_generator(never_called, br)
72
72
  assert bg == BlockGenerator(DUMMY_PROGRAM, [])
@@ -1,7 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  from dataclasses import dataclass
4
- from typing import Dict, List
5
4
 
6
5
  import pytest
7
6
 
@@ -15,7 +14,7 @@ from chia.util.ints import uint32
15
14
 
16
15
 
17
16
  class DummyChain:
18
- _chain: Dict[bytes32, bytes32]
17
+ _chain: dict[bytes32, bytes32]
19
18
 
20
19
  def __init__(self) -> None:
21
20
  self._chain = {}
@@ -23,8 +22,8 @@ class DummyChain:
23
22
  def add_block(self, h: bytes32, prev: bytes32) -> None:
24
23
  self._chain[h] = prev
25
24
 
26
- async def prev_block_hash(self, header_hashes: List[bytes32]) -> List[bytes32]:
27
- ret: List[bytes32] = []
25
+ async def prev_block_hash(self, header_hashes: list[bytes32]) -> list[bytes32]:
26
+ ret: list[bytes32] = []
28
27
  for h in header_hashes:
29
28
  ret.append(self._chain[h])
30
29
  return ret
@@ -13,7 +13,6 @@ from __future__ import annotations
13
13
 
14
14
  import logging
15
15
  import pathlib
16
- from typing import List
17
16
 
18
17
  import click
19
18
 
@@ -27,8 +26,8 @@ log_levels = {
27
26
  ignores = {"__pycache__", ".pytest_cache"}
28
27
 
29
28
 
30
- def traverse_directory(path: pathlib.Path) -> List[pathlib.Path]:
31
- of_interest: List[pathlib.Path] = []
29
+ def traverse_directory(path: pathlib.Path) -> list[pathlib.Path]:
30
+ of_interest: list[pathlib.Path] = []
32
31
 
33
32
  file_found = False
34
33
 
@@ -90,4 +89,4 @@ def command(verbose, root_str):
90
89
  raise click.ClickException("At least one __init__.py created or not a regular file")
91
90
 
92
91
 
93
- command() # pylint: disable=no-value-for-parameter
92
+ command()
@@ -6,7 +6,7 @@ import json
6
6
  import logging
7
7
  import types
8
8
  from pathlib import Path
9
- from typing import Any, Dict, List
9
+ from typing import Any
10
10
 
11
11
  import testconfig
12
12
 
@@ -18,7 +18,7 @@ def skip(path: Path) -> bool:
18
18
  return any(part.startswith(("_", ".")) and part != "_tests" for part in path.parts)
19
19
 
20
20
 
21
- def subdirs(per: str) -> List[Path]:
21
+ def subdirs(per: str) -> list[Path]:
22
22
  if per == "directory":
23
23
  glob_pattern = "**/"
24
24
  elif per == "file":
@@ -44,11 +44,11 @@ def subdirs(per: str) -> List[Path]:
44
44
  return sorted(paths)
45
45
 
46
46
 
47
- def module_dict(module: types.ModuleType) -> Dict[str, Any]:
47
+ def module_dict(module: types.ModuleType) -> dict[str, Any]:
48
48
  return {k: v for k, v in module.__dict__.items() if not k.startswith("_") and k != "annotations"}
49
49
 
50
50
 
51
- def dir_config(dir: Path) -> Dict[str, Any]:
51
+ def dir_config(dir: Path) -> dict[str, Any]:
52
52
  import importlib
53
53
 
54
54
  module_name = ".".join([*dir.relative_to(root_path).parts, "config"])
@@ -60,14 +60,14 @@ def dir_config(dir: Path) -> Dict[str, Any]:
60
60
 
61
61
  @dataclasses.dataclass
62
62
  class SpecifiedDefaultsError(Exception):
63
- overlap: Dict[str, Any]
63
+ overlap: dict[str, Any]
64
64
 
65
65
  def __post_init__(self) -> None:
66
66
  super().__init__()
67
67
 
68
68
 
69
69
  # Overwrite with directory specific values
70
- def update_config(parent: Dict[str, Any], child: Dict[str, Any]) -> Dict[str, Any]:
70
+ def update_config(parent: dict[str, Any], child: dict[str, Any]) -> dict[str, Any]:
71
71
  if child is None:
72
72
  return parent
73
73
  conf = child
@@ -107,8 +107,8 @@ test_paths_with_index = [(path, index + 1) for path in test_paths for index in r
107
107
 
108
108
  configuration = []
109
109
 
110
- specified_defaults: Dict[Path, Dict[str, Any]] = {}
111
- pytest_monitor_enabling_paths: List[Path] = []
110
+ specified_defaults: dict[Path, dict[str, Any]] = {}
111
+ pytest_monitor_enabling_paths: list[Path] = []
112
112
 
113
113
  for path, index in test_paths_with_index:
114
114
  if path.is_dir():
@@ -177,7 +177,7 @@ for path, index in test_paths_with_index:
177
177
  for_matrix = dict(sorted(for_matrix.items()))
178
178
  configuration.append(for_matrix)
179
179
 
180
- messages: List[str] = []
180
+ messages: list[str] = []
181
181
 
182
182
  if len(specified_defaults) > 0:
183
183
  message = f"Found {len(specified_defaults)} directories with specified defaults"