chia-blockchain 2.5.0rc1__py3-none-any.whl → 2.5.1__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.0rc1.dist-info → chia_blockchain-2.5.1.dist-info}/LICENSE +1 -1
  629. {chia_blockchain-2.5.0rc1.dist-info → chia_blockchain-2.5.1.dist-info}/METADATA +67 -72
  630. chia_blockchain-2.5.1.dist-info/RECORD +1042 -0
  631. {chia_blockchain-2.5.0rc1.dist-info → chia_blockchain-2.5.1.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.0rc1.dist-info/RECORD +0 -1028
  637. {chia_blockchain-2.5.0rc1.dist-info → chia_blockchain-2.5.1.dist-info}/entry_points.txt +0 -0
chia/cmds/data.py CHANGED
@@ -2,8 +2,9 @@ from __future__ import annotations
2
2
 
3
3
  import json
4
4
  import logging
5
+ from collections.abc import Coroutine, Sequence
5
6
  from pathlib import Path
6
- from typing import Any, Callable, Coroutine, Dict, List, Optional, Sequence, TypeVar, Union
7
+ from typing import Any, Callable, Optional, TypeVar, Union
7
8
 
8
9
  import click
9
10
 
@@ -20,7 +21,7 @@ logger = logging.getLogger(__name__)
20
21
 
21
22
 
22
23
  # TODO: this is more general and should be part of refactoring the overall CLI code duplication
23
- def run(coro: Coroutine[Any, Any, Optional[Dict[str, Any]]]) -> None:
24
+ def run(coro: Coroutine[Any, Any, Optional[dict[str, Any]]]) -> None:
24
25
  import asyncio
25
26
 
26
27
  response = asyncio.run(coro)
@@ -344,7 +345,7 @@ def get_root(
344
345
  @options.create_fingerprint()
345
346
  def subscribe(
346
347
  id: bytes32,
347
- urls: List[str],
348
+ urls: list[str],
348
349
  data_rpc_port: int,
349
350
  fingerprint: Optional[int],
350
351
  ) -> None:
@@ -360,7 +361,7 @@ def subscribe(
360
361
  @options.create_fingerprint()
361
362
  def remove_subscription(
362
363
  id: bytes32,
363
- urls: List[str],
364
+ urls: list[str],
364
365
  data_rpc_port: int,
365
366
  fingerprint: Optional[int],
366
367
  ) -> None:
@@ -492,7 +493,7 @@ def add_missing_files(
492
493
  def add_mirror(
493
494
  id: bytes32,
494
495
  amount: int,
495
- urls: List[str],
496
+ urls: list[str],
496
497
  fee: Optional[uint64],
497
498
  data_rpc_port: int,
498
499
  fingerprint: Optional[int],
@@ -674,7 +675,7 @@ def wallet_log_in(
674
675
  @options.create_fingerprint()
675
676
  def get_proof(
676
677
  id: bytes32,
677
- key_strings: List[str],
678
+ key_strings: list[str],
678
679
  data_rpc_port: int,
679
680
  fingerprint: Optional[int],
680
681
  ) -> None:
chia/cmds/data_funcs.py CHANGED
@@ -2,20 +2,24 @@ from __future__ import annotations
2
2
 
3
3
  import contextlib
4
4
  import json
5
+ from collections.abc import AsyncIterator
5
6
  from pathlib import Path
6
- from typing import Any, AsyncIterator, Dict, List, Optional, Tuple
7
+ from typing import Any, Optional
7
8
 
8
9
  from chia.cmds.cmds_util import get_any_service_client
9
10
  from chia.rpc.data_layer_rpc_client import DataLayerRpcClient
10
11
  from chia.types.blockchain_format.sized_bytes import bytes32
11
12
  from chia.util.byte_types import hexstr_to_bytes
13
+ from chia.util.default_root import resolve_root_path
12
14
  from chia.util.ints import uint64
13
15
 
14
16
 
15
17
  @contextlib.asynccontextmanager
16
18
  async def get_client(
17
19
  rpc_port: Optional[int], fingerprint: Optional[int] = None, root_path: Optional[Path] = None
18
- ) -> AsyncIterator[Tuple[DataLayerRpcClient, Dict[str, Any]]]:
20
+ ) -> AsyncIterator[tuple[DataLayerRpcClient, dict[str, Any]]]:
21
+ root_path = resolve_root_path(override=root_path)
22
+
19
23
  async with get_any_service_client(
20
24
  client_type=DataLayerRpcClient,
21
25
  rpc_port=rpc_port,
@@ -31,7 +35,7 @@ async def wallet_log_in_cmd(
31
35
  fingerprint: int,
32
36
  root_path: Optional[Path] = None,
33
37
  ) -> None:
34
- async with get_client(rpc_port=rpc_port, fingerprint=fingerprint, root_path=root_path) as (client, _):
38
+ async with get_client(rpc_port=rpc_port, fingerprint=fingerprint, root_path=root_path):
35
39
  pass
36
40
 
37
41
 
@@ -63,12 +67,12 @@ async def get_value_cmd(
63
67
  async def update_data_store_cmd(
64
68
  rpc_port: Optional[int],
65
69
  store_id: bytes32,
66
- changelist: List[Dict[str, str]],
70
+ changelist: list[dict[str, str]],
67
71
  fee: Optional[uint64],
68
72
  fingerprint: Optional[int],
69
73
  submit_on_chain: bool,
70
74
  root_path: Optional[Path] = None,
71
- ) -> Dict[str, Any]:
75
+ ) -> dict[str, Any]:
72
76
  res = dict()
73
77
  async with get_client(rpc_port=rpc_port, fingerprint=fingerprint, root_path=root_path) as (client, _):
74
78
  res = await client.update_data_store(
@@ -84,12 +88,12 @@ async def update_data_store_cmd(
84
88
 
85
89
  async def update_multiple_stores_cmd(
86
90
  rpc_port: Optional[int],
87
- store_updates: List[Dict[str, str]],
91
+ store_updates: list[dict[str, str]],
88
92
  fee: Optional[uint64],
89
93
  fingerprint: Optional[int],
90
94
  submit_on_chain: bool,
91
95
  root_path: Optional[Path] = None,
92
- ) -> Dict[str, Any]:
96
+ ) -> dict[str, Any]:
93
97
  res = dict()
94
98
 
95
99
  async with get_client(rpc_port=rpc_port, fingerprint=fingerprint, root_path=root_path) as (client, _):
@@ -109,7 +113,7 @@ async def submit_pending_root_cmd(
109
113
  fee: Optional[uint64],
110
114
  fingerprint: Optional[int],
111
115
  root_path: Optional[Path] = None,
112
- ) -> Dict[str, Any]:
116
+ ) -> dict[str, Any]:
113
117
  res = dict()
114
118
  async with get_client(rpc_port=rpc_port, fingerprint=fingerprint, root_path=root_path) as (client, _):
115
119
  res = await client.submit_pending_root(
@@ -126,7 +130,7 @@ async def submit_all_pending_roots_cmd(
126
130
  fee: Optional[uint64],
127
131
  fingerprint: Optional[int],
128
132
  root_path: Optional[Path] = None,
129
- ) -> Dict[str, Any]:
133
+ ) -> dict[str, Any]:
130
134
  res = dict()
131
135
  async with get_client(rpc_port=rpc_port, fingerprint=fingerprint, root_path=root_path) as (client, _):
132
136
  res = await client.submit_all_pending_roots(fee=fee)
@@ -144,7 +148,7 @@ async def get_keys_cmd(
144
148
  page: Optional[int],
145
149
  max_page_size: Optional[int],
146
150
  root_path: Optional[Path] = None,
147
- ) -> Dict[str, Any]:
151
+ ) -> dict[str, Any]:
148
152
  res = dict()
149
153
  async with get_client(rpc_port=rpc_port, fingerprint=fingerprint, root_path=root_path) as (client, _):
150
154
  res = await client.get_keys(store_id=store_id, root_hash=root_hash, page=page, max_page_size=max_page_size)
@@ -162,7 +166,7 @@ async def get_keys_values_cmd(
162
166
  page: Optional[int],
163
167
  max_page_size: Optional[int],
164
168
  root_path: Optional[Path] = None,
165
- ) -> Dict[str, Any]:
169
+ ) -> dict[str, Any]:
166
170
  res = dict()
167
171
  async with get_client(rpc_port=rpc_port, fingerprint=fingerprint, root_path=root_path) as (client, _):
168
172
  res = await client.get_keys_values(
@@ -186,7 +190,7 @@ async def get_root_cmd(
186
190
  async def subscribe_cmd(
187
191
  rpc_port: Optional[int],
188
192
  store_id: bytes32,
189
- urls: List[str],
193
+ urls: list[str],
190
194
  fingerprint: Optional[int],
191
195
  ) -> None:
192
196
  async with get_client(rpc_port=rpc_port, fingerprint=fingerprint) as (client, _):
@@ -208,7 +212,7 @@ async def unsubscribe_cmd(
208
212
  async def remove_subscriptions_cmd(
209
213
  rpc_port: Optional[int],
210
214
  store_id: bytes32,
211
- urls: List[str],
215
+ urls: list[str],
212
216
  fingerprint: Optional[int],
213
217
  ) -> None:
214
218
  async with get_client(rpc_port=rpc_port, fingerprint=fingerprint) as (client, _):
@@ -225,7 +229,7 @@ async def get_kv_diff_cmd(
225
229
  page: Optional[int],
226
230
  max_page_size: Optional[int],
227
231
  root_path: Optional[Path] = None,
228
- ) -> Dict[str, Any]:
232
+ ) -> dict[str, Any]:
229
233
  res = dict()
230
234
  async with get_client(rpc_port=rpc_port, fingerprint=fingerprint, root_path=root_path) as (client, _):
231
235
  res = await client.get_kv_diff(
@@ -248,7 +252,7 @@ async def get_root_history_cmd(
248
252
 
249
253
  async def add_missing_files_cmd(
250
254
  rpc_port: Optional[int],
251
- ids: Optional[List[bytes32]],
255
+ ids: Optional[list[bytes32]],
252
256
  overwrite: bool,
253
257
  foldername: Optional[Path],
254
258
  fingerprint: Optional[int],
@@ -265,7 +269,7 @@ async def add_missing_files_cmd(
265
269
  async def add_mirror_cmd(
266
270
  rpc_port: Optional[int],
267
271
  store_id: bytes32,
268
- urls: List[str],
272
+ urls: list[str],
269
273
  amount: int,
270
274
  fee: Optional[uint64],
271
275
  fingerprint: Optional[int],
@@ -343,7 +347,8 @@ async def clear_pending_roots(
343
347
  rpc_port: Optional[int],
344
348
  root_path: Optional[Path] = None,
345
349
  fingerprint: Optional[int] = None,
346
- ) -> Dict[str, Any]:
350
+ ) -> dict[str, Any]:
351
+ result = dict()
347
352
  async with get_client(rpc_port=rpc_port, fingerprint=fingerprint, root_path=root_path) as (client, _):
348
353
  result = await client.clear_pending_roots(store_id=store_id)
349
354
  print(json.dumps(result, indent=2, sort_keys=True))
@@ -353,11 +358,11 @@ async def clear_pending_roots(
353
358
 
354
359
  async def get_proof_cmd(
355
360
  store_id: bytes32,
356
- key_strings: List[str],
361
+ key_strings: list[str],
357
362
  rpc_port: Optional[int],
358
363
  root_path: Optional[Path] = None,
359
364
  fingerprint: Optional[int] = None,
360
- ) -> Dict[str, Any]:
365
+ ) -> dict[str, Any]:
361
366
  result = dict()
362
367
  async with get_client(rpc_port=rpc_port, fingerprint=fingerprint, root_path=root_path) as (client, _):
363
368
  result = await client.get_proof(store_id=store_id, keys=[hexstr_to_bytes(key) for key in key_strings])
@@ -367,11 +372,11 @@ async def get_proof_cmd(
367
372
 
368
373
 
369
374
  async def verify_proof_cmd(
370
- proof: Dict[str, Any],
375
+ proof: dict[str, Any],
371
376
  rpc_port: Optional[int],
372
377
  root_path: Optional[Path] = None,
373
378
  fingerprint: Optional[int] = None,
374
- ) -> Dict[str, Any]:
379
+ ) -> dict[str, Any]:
375
380
  result = dict()
376
381
  async with get_client(rpc_port=rpc_port, fingerprint=fingerprint, root_path=root_path) as (client, _):
377
382
  result = await client.verify_proof(proof=proof)
chia/cmds/db.py CHANGED
@@ -5,6 +5,7 @@ from typing import Optional
5
5
 
6
6
  import click
7
7
 
8
+ from chia.cmds.cmd_classes import ChiaCliContext
8
9
  from chia.cmds.db_backup_func import db_backup_func
9
10
  from chia.cmds.db_upgrade_func import db_upgrade_func
10
11
  from chia.cmds.db_validate_func import db_validate_func
@@ -41,7 +42,7 @@ def db_upgrade_cmd(
41
42
  ) -> None:
42
43
  try:
43
44
  db_upgrade_func(
44
- Path(ctx.obj["root_path"]),
45
+ ChiaCliContext.set_default(ctx).root_path,
45
46
  None if in_db_path is None else Path(in_db_path),
46
47
  None if out_db_path is None else Path(out_db_path),
47
48
  no_update_config=no_update_config,
@@ -63,7 +64,7 @@ def db_upgrade_cmd(
63
64
  def db_validate_cmd(ctx: click.Context, in_db_path: Optional[str], validate_blocks: bool) -> None:
64
65
  try:
65
66
  db_validate_func(
66
- Path(ctx.obj["root_path"]),
67
+ ChiaCliContext.set_default(ctx).root_path,
67
68
  None if in_db_path is None else Path(in_db_path),
68
69
  validate_blocks=validate_blocks,
69
70
  )
@@ -78,7 +79,7 @@ def db_validate_cmd(ctx: click.Context, in_db_path: Optional[str], validate_bloc
78
79
  def db_backup_cmd(ctx: click.Context, db_backup_file: Optional[str], no_indexes: bool) -> None:
79
80
  try:
80
81
  db_backup_func(
81
- Path(ctx.obj["root_path"]),
82
+ ChiaCliContext.set_default(ctx).root_path,
82
83
  None if db_backup_file is None else Path(db_backup_file),
83
84
  no_indexes=no_indexes,
84
85
  )
@@ -1,7 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  from pathlib import Path
4
- from typing import Any, Dict, Optional
4
+ from typing import Any, Optional
5
5
 
6
6
  from chia.util.config import load_config
7
7
  from chia.util.path import path_from_root
@@ -13,7 +13,7 @@ def db_backup_func(
13
13
  *,
14
14
  no_indexes: bool,
15
15
  ) -> None:
16
- config: Dict[str, Any] = load_config(root_path, "config.yaml")["full_node"]
16
+ config: dict[str, Any] = load_config(root_path, "config.yaml")["full_node"]
17
17
  selected_network: str = config["selected_network"]
18
18
  db_pattern: str = config["database_path"]
19
19
  db_path_replaced: str = db_pattern.replace("CHALLENGE", selected_network)
@@ -10,7 +10,7 @@ import textwrap
10
10
  from contextlib import closing
11
11
  from pathlib import Path
12
12
  from time import monotonic
13
- from typing import Any, Dict, List, Optional
13
+ from typing import Any, Optional
14
14
 
15
15
  import zstd
16
16
 
@@ -33,7 +33,7 @@ def db_upgrade_func(
33
33
  ) -> None:
34
34
  update_config: bool = in_db_path is None and out_db_path is None and not no_update_config
35
35
 
36
- config: Dict[str, Any]
36
+ config: dict[str, Any]
37
37
  selected_network: str
38
38
  db_pattern: str
39
39
  if in_db_path is None or out_db_path is None:
@@ -183,7 +183,7 @@ def convert_v1_to_v2(in_path: Path, out_path: Path) -> None:
183
183
  parameter_limit = get_host_parameter_limit()
184
184
  start_time = monotonic()
185
185
  block_start_time = start_time
186
- rowids: List[int] = []
186
+ rowids: list[int] = []
187
187
  small_batch_size = BATCH_SIZE <= parameter_limit
188
188
  small_chain = peak_height <= parameter_limit
189
189
  current_header_hash = peak_hash
@@ -1,7 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  from pathlib import Path
4
- from typing import Any, Dict, Optional
4
+ from typing import Any, Optional
5
5
 
6
6
  from chia.consensus.block_record import BlockRecord
7
7
  from chia.consensus.default_constants import DEFAULT_CONSTANTS
@@ -18,7 +18,7 @@ def db_validate_func(
18
18
  validate_blocks: bool,
19
19
  ) -> None:
20
20
  if in_db_path is None:
21
- config: Dict[str, Any] = load_config(root_path, "config.yaml")["full_node"]
21
+ config: dict[str, Any] = load_config(root_path, "config.yaml")["full_node"]
22
22
  selected_network: str = config["selected_network"]
23
23
  db_pattern: str = config["database_path"]
24
24
  db_path_replaced: str = db_pattern.replace("CHALLENGE", selected_network)
chia/cmds/dev.py CHANGED
@@ -2,6 +2,7 @@ from __future__ import annotations
2
2
 
3
3
  import click
4
4
 
5
+ from chia.cmds.gh import gh_group
5
6
  from chia.cmds.installers import installers_group
6
7
  from chia.cmds.sim import sim_cmd
7
8
 
@@ -14,3 +15,4 @@ def dev_cmd(ctx: click.Context) -> None:
14
15
 
15
16
  dev_cmd.add_command(sim_cmd)
16
17
  dev_cmd.add_command(installers_group)
18
+ dev_cmd.add_command(gh_group)
chia/cmds/farm.py CHANGED
@@ -4,6 +4,8 @@ from typing import Optional
4
4
 
5
5
  import click
6
6
 
7
+ from chia.cmds.cmd_classes import ChiaCliContext
8
+
7
9
 
8
10
  @click.group("farm", help="Manage your farm")
9
11
  def farm_cmd() -> None:
@@ -49,7 +51,9 @@ def farm_cmd() -> None:
49
51
  default=None,
50
52
  show_default=True,
51
53
  )
54
+ @click.pass_context
52
55
  def summary_cmd(
56
+ ctx: click.Context,
53
57
  rpc_port: Optional[int],
54
58
  wallet_rpc_port: Optional[int],
55
59
  harvester_rpc_port: Optional[int],
@@ -57,9 +61,17 @@ def summary_cmd(
57
61
  ) -> None:
58
62
  import asyncio
59
63
 
60
- from .farm_funcs import summary
64
+ from chia.cmds.farm_funcs import summary
61
65
 
62
- asyncio.run(summary(rpc_port, wallet_rpc_port, harvester_rpc_port, farmer_rpc_port))
66
+ asyncio.run(
67
+ summary(
68
+ rpc_port,
69
+ wallet_rpc_port,
70
+ harvester_rpc_port,
71
+ farmer_rpc_port,
72
+ root_path=ChiaCliContext.set_default(ctx).root_path,
73
+ )
74
+ )
63
75
 
64
76
 
65
77
  @farm_cmd.command("challenges", help="Show the latest challenges")
@@ -79,9 +91,10 @@ def summary_cmd(
79
91
  default=20,
80
92
  show_default=True,
81
93
  )
82
- def challenges_cmd(farmer_rpc_port: Optional[int], limit: int) -> None:
94
+ @click.pass_context
95
+ def challenges_cmd(ctx: click.Context, farmer_rpc_port: Optional[int], limit: int) -> None:
83
96
  import asyncio
84
97
 
85
- from .farm_funcs import challenges
98
+ from chia.cmds.farm_funcs import challenges
86
99
 
87
- asyncio.run(challenges(farmer_rpc_port, limit))
100
+ asyncio.run(challenges(ChiaCliContext.set_default(ctx).root_path, farmer_rpc_port, limit))
chia/cmds/farm_funcs.py CHANGED
@@ -3,7 +3,7 @@ from __future__ import annotations
3
3
  import sys
4
4
  import traceback
5
5
  from pathlib import Path
6
- from typing import Any, Dict, List, Optional
6
+ from typing import Any, Optional
7
7
 
8
8
  from chia.cmds.cmds_util import format_bytes, format_minutes, get_any_service_client
9
9
  from chia.cmds.units import units
@@ -11,29 +11,24 @@ from chia.consensus.block_record import BlockRecord
11
11
  from chia.rpc.farmer_rpc_client import FarmerRpcClient
12
12
  from chia.rpc.full_node_rpc_client import FullNodeRpcClient
13
13
  from chia.rpc.wallet_rpc_client import WalletRpcClient
14
- from chia.util.default_root import DEFAULT_ROOT_PATH
15
14
  from chia.util.errors import CliRpcConnectionError
16
15
  from chia.util.network import is_localhost
17
16
 
18
17
  SECONDS_PER_BLOCK = (24 * 3600) / 4608
19
18
 
20
19
 
21
- async def get_harvesters_summary(
22
- farmer_rpc_port: Optional[int], root_path: Path = DEFAULT_ROOT_PATH
23
- ) -> Optional[Dict[str, Any]]:
24
- async with get_any_service_client(FarmerRpcClient, farmer_rpc_port, root_path) as (farmer_client, _):
20
+ async def get_harvesters_summary(farmer_rpc_port: Optional[int], root_path: Path) -> Optional[dict[str, Any]]:
21
+ async with get_any_service_client(FarmerRpcClient, root_path, farmer_rpc_port) as (farmer_client, _):
25
22
  return await farmer_client.get_harvesters_summary()
26
23
 
27
24
 
28
- async def get_blockchain_state(
29
- rpc_port: Optional[int], root_path: Path = DEFAULT_ROOT_PATH
30
- ) -> Optional[Dict[str, Any]]:
31
- async with get_any_service_client(FullNodeRpcClient, rpc_port, root_path) as (client, _):
25
+ async def get_blockchain_state(rpc_port: Optional[int], root_path: Path) -> Optional[dict[str, Any]]:
26
+ async with get_any_service_client(FullNodeRpcClient, root_path, rpc_port) as (client, _):
32
27
  return await client.get_blockchain_state()
33
28
 
34
29
 
35
- async def get_average_block_time(rpc_port: Optional[int], root_path: Path = DEFAULT_ROOT_PATH) -> float:
36
- async with get_any_service_client(FullNodeRpcClient, rpc_port, root_path) as (client, _):
30
+ async def get_average_block_time(rpc_port: Optional[int], root_path: Path) -> float:
31
+ async with get_any_service_client(FullNodeRpcClient, root_path, rpc_port) as (client, _):
37
32
  blocks_to_compare = 500
38
33
  blockchain_state = await client.get_blockchain_state()
39
34
  curr: Optional[BlockRecord] = blockchain_state["peak"]
@@ -53,20 +48,18 @@ async def get_average_block_time(rpc_port: Optional[int], root_path: Path = DEFA
53
48
  return (curr.timestamp - past_curr.timestamp) / (curr.height - past_curr.height)
54
49
 
55
50
 
56
- async def get_wallets_stats(
57
- wallet_rpc_port: Optional[int], root_path: Path = DEFAULT_ROOT_PATH
58
- ) -> Optional[Dict[str, Any]]:
59
- async with get_any_service_client(WalletRpcClient, wallet_rpc_port, root_path) as (wallet_client, _):
51
+ async def get_wallets_stats(wallet_rpc_port: Optional[int], root_path: Path) -> Optional[dict[str, Any]]:
52
+ async with get_any_service_client(WalletRpcClient, root_path, wallet_rpc_port) as (wallet_client, _):
60
53
  return await wallet_client.get_farmed_amount()
61
54
 
62
55
 
63
- async def get_challenges(farmer_rpc_port: Optional[int]) -> Optional[List[Dict[str, Any]]]:
64
- async with get_any_service_client(FarmerRpcClient, farmer_rpc_port) as (farmer_client, _):
56
+ async def get_challenges(root_path: Path, farmer_rpc_port: Optional[int]) -> Optional[list[dict[str, Any]]]:
57
+ async with get_any_service_client(FarmerRpcClient, root_path, farmer_rpc_port) as (farmer_client, _):
65
58
  return await farmer_client.get_signage_points()
66
59
 
67
60
 
68
- async def challenges(farmer_rpc_port: Optional[int], limit: int) -> None:
69
- signage_points = await get_challenges(farmer_rpc_port)
61
+ async def challenges(root_path: Path, farmer_rpc_port: Optional[int], limit: int) -> None:
62
+ signage_points = await get_challenges(root_path, farmer_rpc_port)
70
63
  if signage_points is None:
71
64
  return None
72
65
 
@@ -86,7 +79,7 @@ async def summary(
86
79
  wallet_rpc_port: Optional[int],
87
80
  harvester_rpc_port: Optional[int],
88
81
  farmer_rpc_port: Optional[int],
89
- root_path: Path = DEFAULT_ROOT_PATH,
82
+ root_path: Path,
90
83
  ) -> None:
91
84
  harvesters_summary = await get_harvesters_summary(farmer_rpc_port, root_path)
92
85
  blockchain_state = None
@@ -135,8 +128,8 @@ async def summary(
135
128
  total_plots = 0
136
129
 
137
130
  if harvesters_summary is not None:
138
- harvesters_local: Dict[str, Dict[str, Any]] = {}
139
- harvesters_remote: Dict[str, Dict[str, Any]] = {}
131
+ harvesters_local: dict[str, dict[str, Any]] = {}
132
+ harvesters_remote: dict[str, dict[str, Any]] = {}
140
133
  for harvester in harvesters_summary["harvesters"]:
141
134
  ip = harvester["connection"]["host"]
142
135
  if is_localhost(ip):
@@ -146,7 +139,7 @@ async def summary(
146
139
  harvesters_remote[ip] = {}
147
140
  harvesters_remote[ip][harvester["connection"]["node_id"]] = harvester
148
141
 
149
- def process_harvesters(harvester_peers_in: Dict[str, Dict[str, Any]]) -> None:
142
+ def process_harvesters(harvester_peers_in: dict[str, dict[str, Any]]) -> None:
150
143
  for harvester_peer_id, harvester_dict in harvester_peers_in.items():
151
144
  syncing = harvester_dict["syncing"]
152
145
  if syncing is not None and syncing["initial"]: