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.
- chia/_tests/README.md +1 -1
- chia/_tests/blockchain/blockchain_test_utils.py +24 -26
- chia/_tests/blockchain/test_augmented_chain.py +6 -8
- chia/_tests/blockchain/test_blockchain.py +409 -307
- chia/_tests/blockchain/test_blockchain_transactions.py +56 -75
- chia/_tests/blockchain/test_build_chains.py +11 -13
- chia/_tests/blockchain/test_get_block_generator.py +8 -8
- chia/_tests/blockchain/test_lookup_fork_chain.py +3 -4
- chia/_tests/build-init-files.py +3 -4
- chia/_tests/build-job-matrix.py +9 -9
- chia/_tests/check_sql_statements.py +2 -3
- chia/_tests/clvm/benchmark_costs.py +1 -1
- chia/_tests/clvm/coin_store.py +7 -5
- chia/_tests/clvm/test_chialisp_deserialization.py +8 -8
- chia/_tests/clvm/test_condition_codes.py +2 -2
- chia/_tests/clvm/test_curry_and_treehash.py +2 -4
- chia/_tests/clvm/test_message_conditions.py +184 -0
- chia/_tests/clvm/test_puzzle_compression.py +1 -2
- chia/_tests/clvm/test_puzzle_drivers.py +3 -3
- chia/_tests/clvm/test_puzzles.py +13 -18
- chia/_tests/clvm/test_singletons.py +17 -17
- chia/_tests/clvm/test_spend_sim.py +7 -7
- chia/_tests/cmds/cmd_test_utils.py +42 -45
- chia/_tests/cmds/conftest.py +2 -2
- chia/_tests/cmds/test_click_types.py +21 -16
- chia/_tests/cmds/test_cmd_framework.py +255 -35
- chia/_tests/cmds/test_cmds_util.py +2 -2
- chia/_tests/cmds/test_daemon.py +3 -3
- chia/_tests/cmds/test_dev_gh.py +131 -0
- chia/_tests/cmds/test_farm_cmd.py +1 -2
- chia/_tests/cmds/test_show.py +6 -6
- chia/_tests/cmds/test_tx_config_args.py +2 -1
- chia/_tests/cmds/wallet/test_dao.py +23 -23
- chia/_tests/cmds/wallet/test_did.py +29 -29
- chia/_tests/cmds/wallet/test_nft.py +24 -23
- chia/_tests/cmds/wallet/test_notifications.py +8 -8
- chia/_tests/cmds/wallet/test_tx_decorators.py +3 -3
- chia/_tests/cmds/wallet/test_vcs.py +97 -73
- chia/_tests/cmds/wallet/test_wallet.py +74 -75
- chia/_tests/cmds/wallet/test_wallet_check.py +5 -7
- chia/_tests/conftest.py +153 -38
- chia/_tests/connection_utils.py +7 -6
- chia/_tests/core/cmds/test_beta.py +3 -3
- chia/_tests/core/cmds/test_keys.py +6 -6
- chia/_tests/core/cmds/test_wallet.py +3 -3
- chia/_tests/core/consensus/test_block_creation.py +3 -5
- chia/_tests/core/custom_types/test_coin.py +1 -3
- chia/_tests/core/custom_types/test_spend_bundle.py +3 -4
- chia/_tests/core/daemon/test_daemon.py +58 -58
- chia/_tests/core/daemon/test_keychain_proxy.py +2 -1
- chia/_tests/core/data_layer/conftest.py +4 -3
- chia/_tests/core/data_layer/test_data_cli.py +1 -2
- chia/_tests/core/data_layer/test_data_layer.py +5 -5
- chia/_tests/core/data_layer/test_data_layer_util.py +8 -9
- chia/_tests/core/data_layer/test_data_rpc.py +75 -93
- chia/_tests/core/data_layer/test_data_store.py +38 -37
- chia/_tests/core/data_layer/test_data_store_schema.py +11 -11
- chia/_tests/core/data_layer/util.py +11 -10
- chia/_tests/core/farmer/test_farmer_api.py +6 -4
- chia/_tests/core/full_node/full_sync/test_full_sync.py +5 -10
- chia/_tests/core/full_node/ram_db.py +2 -2
- chia/_tests/core/full_node/stores/test_block_store.py +113 -11
- chia/_tests/core/full_node/stores/test_coin_store.py +37 -28
- chia/_tests/core/full_node/stores/test_full_node_store.py +34 -30
- chia/_tests/core/full_node/stores/test_hint_store.py +3 -4
- chia/_tests/core/full_node/test_address_manager.py +2 -2
- chia/_tests/core/full_node/test_block_height_map.py +1 -1
- chia/_tests/core/full_node/test_conditions.py +10 -12
- chia/_tests/core/full_node/test_full_node.py +2077 -1822
- chia/_tests/core/full_node/test_generator_tools.py +4 -4
- chia/_tests/core/full_node/test_hint_management.py +2 -2
- chia/_tests/core/full_node/test_performance.py +2 -5
- chia/_tests/core/full_node/test_subscriptions.py +4 -4
- chia/_tests/core/full_node/test_tx_processing_queue.py +5 -4
- chia/_tests/core/make_block_generator.py +5 -7
- chia/_tests/core/mempool/test_mempool.py +205 -208
- chia/_tests/core/mempool/test_mempool_fee_protocol.py +5 -5
- chia/_tests/core/mempool/test_mempool_item_queries.py +2 -4
- chia/_tests/core/mempool/test_mempool_manager.py +109 -80
- chia/_tests/core/mempool/test_mempool_performance.py +3 -4
- chia/_tests/core/mempool/test_singleton_fast_forward.py +12 -12
- chia/_tests/core/server/flood.py +6 -4
- chia/_tests/core/server/serve.py +10 -7
- chia/_tests/core/server/test_api_protocol.py +21 -0
- chia/_tests/core/server/test_capabilities.py +3 -5
- chia/_tests/core/server/test_dos.py +15 -16
- chia/_tests/core/server/test_loop.py +14 -10
- chia/_tests/core/server/test_node_discovery.py +1 -2
- chia/_tests/core/server/test_rate_limits.py +156 -44
- chia/_tests/core/server/test_server.py +8 -7
- chia/_tests/core/services/test_services.py +59 -37
- chia/_tests/core/ssl/test_ssl.py +5 -3
- chia/_tests/core/test_cost_calculation.py +5 -6
- chia/_tests/core/test_crawler.py +2 -2
- chia/_tests/core/test_db_conversion.py +5 -4
- chia/_tests/core/test_db_validation.py +6 -5
- chia/_tests/core/test_farmer_harvester_rpc.py +8 -7
- chia/_tests/core/test_filter.py +3 -5
- chia/_tests/core/test_full_node_rpc.py +64 -90
- chia/_tests/core/test_merkle_set.py +10 -10
- chia/_tests/core/test_program.py +2 -4
- chia/_tests/core/test_rpc_util.py +1 -2
- chia/_tests/core/test_seeder.py +124 -12
- chia/_tests/core/util/test_block_cache.py +5 -5
- chia/_tests/core/util/test_cached_bls.py +3 -3
- chia/_tests/core/util/test_config.py +13 -13
- chia/_tests/core/util/test_files.py +2 -2
- chia/_tests/core/util/test_jsonify.py +9 -9
- chia/_tests/core/util/test_keychain.py +13 -5
- chia/_tests/core/util/test_keyring_wrapper.py +6 -5
- chia/_tests/core/util/test_log_exceptions.py +3 -3
- chia/_tests/core/util/test_streamable.py +38 -38
- chia/_tests/db/test_db_wrapper.py +13 -12
- chia/_tests/environments/common.py +2 -2
- chia/_tests/environments/full_node.py +2 -2
- chia/_tests/environments/wallet.py +109 -48
- chia/_tests/farmer_harvester/test_farmer.py +35 -35
- chia/_tests/farmer_harvester/test_farmer_harvester.py +17 -17
- chia/_tests/farmer_harvester/test_filter_prefix_bits.py +6 -5
- chia/_tests/farmer_harvester/test_third_party_harvesters.py +73 -46
- chia/_tests/fee_estimation/test_fee_estimation_integration.py +8 -8
- chia/_tests/fee_estimation/test_fee_estimation_rpc.py +47 -47
- chia/_tests/fee_estimation/test_fee_estimation_unit_tests.py +6 -7
- chia/_tests/fee_estimation/test_mempoolitem_height_added.py +11 -11
- chia/_tests/generator/test_compression.py +13 -30
- chia/_tests/generator/test_generator_types.py +3 -3
- chia/_tests/generator/test_rom.py +7 -9
- chia/_tests/plot_sync/test_delta.py +2 -3
- chia/_tests/plot_sync/test_plot_sync.py +25 -24
- chia/_tests/plot_sync/test_receiver.py +9 -9
- chia/_tests/plot_sync/test_sender.py +1 -1
- chia/_tests/plot_sync/test_sync_simulated.py +27 -26
- chia/_tests/plot_sync/util.py +2 -1
- chia/_tests/plotting/test_plot_manager.py +54 -11
- chia/_tests/plotting/util.py +2 -3
- chia/_tests/pools/test_pool_cli_parsing.py +128 -0
- chia/_tests/pools/test_pool_cmdline.py +993 -15
- chia/_tests/pools/test_pool_config.py +3 -5
- chia/_tests/pools/test_pool_puzzles_lifecycle.py +10 -11
- chia/_tests/pools/test_pool_rpc.py +203 -90
- chia/_tests/pools/test_pool_wallet.py +12 -8
- chia/_tests/pools/test_wallet_pool_store.py +3 -3
- chia/_tests/process_junit.py +16 -17
- chia/_tests/rpc/test_rpc_client.py +59 -2
- chia/_tests/rpc/test_rpc_server.py +183 -0
- chia/_tests/simulation/test_simulation.py +5 -5
- chia/_tests/simulation/test_simulator.py +8 -10
- chia/_tests/simulation/test_start_simulator.py +5 -4
- chia/_tests/timelord/test_new_peak.py +19 -19
- chia/_tests/tools/test_run_block.py +1 -2
- chia/_tests/tools/test_virtual_project.py +591 -0
- chia/_tests/util/benchmark_cost.py +9 -9
- chia/_tests/util/benchmarks.py +1 -2
- chia/_tests/util/blockchain.py +12 -11
- chia/_tests/util/blockchain_mock.py +15 -15
- chia/_tests/util/build_network_protocol_files.py +12 -12
- chia/_tests/util/db_connection.py +3 -2
- chia/_tests/util/full_sync.py +14 -6
- chia/_tests/util/gen_ssl_certs.py +4 -5
- chia/_tests/util/generator_tools_testing.py +5 -7
- chia/_tests/util/get_name_puzzle_conditions.py +52 -0
- chia/_tests/util/key_tool.py +2 -3
- chia/_tests/util/misc.py +59 -106
- chia/_tests/util/network_protocol_data.py +7 -9
- chia/_tests/util/protocol_messages_json.py +112 -111
- chia/_tests/util/rpc.py +3 -0
- chia/_tests/util/run_block.py +16 -16
- chia/_tests/util/setup_nodes.py +25 -23
- chia/{clvm → _tests/util}/spend_sim.py +59 -55
- chia/_tests/util/split_managers.py +12 -9
- chia/_tests/util/temp_file.py +1 -1
- chia/_tests/util/test_action_scope.py +2 -1
- chia/_tests/util/test_async_pool.py +8 -8
- chia/_tests/util/test_build_job_matrix.py +2 -3
- chia/_tests/util/test_condition_tools.py +4 -6
- chia/_tests/util/test_config.py +5 -5
- chia/_tests/util/test_dump_keyring.py +1 -1
- chia/_tests/util/test_full_block_utils.py +19 -11
- chia/_tests/util/test_limited_semaphore.py +4 -3
- chia/_tests/util/test_logging_filter.py +2 -3
- chia/_tests/util/test_misc.py +29 -28
- chia/_tests/util/test_network.py +32 -31
- chia/_tests/util/test_network_protocol_files.py +2 -3
- chia/_tests/util/test_network_protocol_json.py +1 -0
- chia/_tests/util/test_network_protocol_test.py +18 -19
- chia/_tests/util/test_paginator.py +3 -4
- chia/_tests/util/test_pprint.py +1 -1
- chia/_tests/util/test_priority_mutex.py +18 -17
- chia/_tests/util/test_recursive_replace.py +2 -2
- chia/_tests/util/test_testnet_overrides.py +3 -3
- chia/_tests/util/test_timing.py +1 -1
- chia/_tests/util/test_trusted_peer.py +2 -2
- chia/_tests/util/time_out_assert.py +43 -6
- chia/_tests/wallet/cat_wallet/test_cat_lifecycle.py +13 -13
- chia/_tests/wallet/cat_wallet/test_cat_outer_puzzle.py +1 -1
- chia/_tests/wallet/cat_wallet/test_cat_wallet.py +117 -29
- chia/_tests/wallet/cat_wallet/test_offer_lifecycle.py +15 -15
- chia/_tests/wallet/cat_wallet/test_trades.py +50 -28
- chia/_tests/wallet/clawback/test_clawback_decorator.py +3 -5
- chia/_tests/wallet/clawback/test_clawback_lifecycle.py +6 -6
- chia/_tests/wallet/clawback/test_clawback_metadata.py +1 -2
- chia/_tests/wallet/conftest.py +135 -74
- chia/_tests/wallet/dao_wallet/test_dao_clvm.py +25 -17
- chia/_tests/wallet/dao_wallet/test_dao_wallets.py +75 -75
- chia/_tests/wallet/db_wallet/test_db_graftroot.py +10 -12
- chia/_tests/wallet/db_wallet/test_dl_offers.py +6 -6
- chia/_tests/wallet/db_wallet/test_dl_wallet.py +18 -18
- chia/_tests/wallet/did_wallet/test_did.py +1277 -474
- chia/_tests/wallet/nft_wallet/test_nft_1_offers.py +12 -11
- chia/_tests/wallet/nft_wallet/test_nft_bulk_mint.py +115 -105
- chia/_tests/wallet/nft_wallet/test_nft_lifecycle.py +6 -7
- chia/_tests/wallet/nft_wallet/test_nft_offers.py +16 -16
- chia/_tests/wallet/nft_wallet/test_nft_puzzles.py +3 -3
- chia/_tests/wallet/nft_wallet/test_nft_wallet.py +38 -12
- chia/_tests/wallet/nft_wallet/test_ownership_outer_puzzle.py +1 -1
- chia/_tests/wallet/rpc/test_dl_wallet_rpc.py +31 -33
- chia/_tests/wallet/rpc/test_wallet_rpc.py +218 -171
- chia/_tests/wallet/simple_sync/test_simple_sync_protocol.py +36 -37
- chia/_tests/wallet/sync/test_wallet_sync.py +241 -78
- chia/_tests/wallet/test_address_type.py +20 -20
- chia/_tests/wallet/test_clvm_streamable.py +5 -5
- chia/_tests/wallet/test_coin_management.py +354 -0
- chia/_tests/wallet/test_coin_selection.py +34 -35
- chia/_tests/wallet/test_conditions.py +28 -16
- chia/_tests/wallet/test_debug_spend_bundle.py +156 -14
- chia/_tests/wallet/test_new_wallet_protocol.py +29 -31
- chia/_tests/wallet/test_nft_store.py +1 -2
- chia/_tests/wallet/test_notifications.py +2 -2
- chia/_tests/wallet/test_offer_parsing_performance.py +1 -1
- chia/_tests/wallet/test_puzzle_store.py +2 -3
- chia/_tests/wallet/test_sign_coin_spends.py +3 -3
- chia/_tests/wallet/test_signer_protocol.py +33 -34
- chia/_tests/wallet/test_singleton_lifecycle_fast.py +29 -29
- chia/_tests/wallet/test_taproot.py +1 -1
- chia/_tests/wallet/test_transaction_store.py +23 -19
- chia/_tests/wallet/test_util.py +36 -32
- chia/_tests/wallet/test_wallet.py +37 -37
- chia/_tests/wallet/test_wallet_action_scope.py +8 -8
- chia/_tests/wallet/test_wallet_blockchain.py +4 -6
- chia/_tests/wallet/test_wallet_coin_store.py +34 -34
- chia/_tests/wallet/test_wallet_node.py +69 -72
- chia/_tests/wallet/test_wallet_retry.py +3 -3
- chia/_tests/wallet/test_wallet_state_manager.py +12 -5
- chia/_tests/wallet/test_wallet_trade_store.py +2 -2
- chia/_tests/wallet/test_wallet_utils.py +5 -4
- chia/_tests/wallet/vc_wallet/test_cr_outer_puzzle.py +3 -3
- chia/_tests/wallet/vc_wallet/test_vc_lifecycle.py +18 -18
- chia/_tests/wallet/vc_wallet/test_vc_wallet.py +69 -40
- chia/_tests/wallet/wallet_block_tools.py +27 -27
- chia/_tests/weight_proof/test_weight_proof.py +30 -30
- chia/apis.py +19 -0
- chia/cmds/beta.py +8 -7
- chia/cmds/beta_funcs.py +15 -11
- chia/cmds/check_wallet_db.py +29 -27
- chia/cmds/chia.py +17 -9
- chia/cmds/cmd_classes.py +87 -79
- chia/cmds/cmd_helpers.py +242 -0
- chia/cmds/cmds_util.py +56 -66
- chia/cmds/coin_funcs.py +168 -153
- chia/cmds/coins.py +156 -194
- chia/cmds/configure.py +4 -3
- chia/cmds/dao.py +89 -33
- chia/cmds/dao_funcs.py +55 -33
- chia/cmds/data.py +7 -6
- chia/cmds/data_funcs.py +26 -21
- chia/cmds/db.py +4 -3
- chia/cmds/db_backup_func.py +2 -2
- chia/cmds/db_upgrade_func.py +3 -3
- chia/cmds/db_validate_func.py +2 -2
- chia/cmds/dev.py +2 -0
- chia/cmds/farm.py +18 -5
- chia/cmds/farm_funcs.py +17 -24
- chia/cmds/gh.py +275 -0
- chia/cmds/init.py +4 -11
- chia/cmds/init_funcs.py +9 -9
- chia/cmds/installers.py +5 -3
- chia/cmds/keys.py +56 -39
- chia/cmds/keys_funcs.py +30 -31
- chia/cmds/netspace.py +6 -3
- chia/cmds/netspace_funcs.py +3 -2
- chia/cmds/param_types.py +16 -6
- chia/cmds/passphrase.py +8 -7
- chia/cmds/passphrase_funcs.py +7 -61
- chia/cmds/peer.py +2 -1
- chia/cmds/peer_funcs.py +5 -5
- chia/cmds/plotnft.py +207 -153
- chia/cmds/plotnft_funcs.py +205 -174
- chia/cmds/plots.py +14 -6
- chia/cmds/plotters.py +2 -1
- chia/cmds/rpc.py +48 -28
- chia/cmds/show.py +2 -1
- chia/cmds/show_funcs.py +7 -6
- chia/cmds/signer.py +50 -58
- chia/cmds/sim.py +22 -14
- chia/cmds/sim_funcs.py +11 -11
- chia/cmds/start.py +3 -3
- chia/cmds/start_funcs.py +9 -12
- chia/cmds/stop.py +4 -3
- chia/cmds/units.py +1 -3
- chia/cmds/wallet.py +252 -96
- chia/cmds/wallet_funcs.py +217 -143
- chia/consensus/block_body_validation.py +133 -86
- chia/consensus/block_creation.py +42 -21
- chia/consensus/block_header_validation.py +32 -37
- chia/consensus/block_record.py +1 -2
- chia/consensus/blockchain.py +167 -180
- chia/consensus/blockchain_interface.py +10 -10
- chia/consensus/constants.py +2 -2
- chia/consensus/default_constants.py +3 -4
- chia/consensus/difficulty_adjustment.py +5 -5
- chia/consensus/find_fork_point.py +5 -5
- chia/consensus/full_block_to_block_record.py +4 -4
- chia/consensus/get_block_challenge.py +2 -2
- chia/consensus/get_block_generator.py +4 -3
- chia/consensus/multiprocess_validation.py +207 -304
- chia/consensus/vdf_info_computation.py +3 -3
- chia/daemon/client.py +46 -27
- chia/daemon/keychain_proxy.py +10 -9
- chia/daemon/keychain_server.py +18 -18
- chia/daemon/server.py +103 -113
- chia/daemon/windows_signal.py +2 -2
- chia/data_layer/data_layer.py +64 -76
- chia/data_layer/data_layer_api.py +8 -0
- chia/data_layer/data_layer_errors.py +3 -3
- chia/data_layer/data_layer_server.py +2 -2
- chia/data_layer/data_layer_util.py +71 -71
- chia/data_layer/data_layer_wallet.py +63 -67
- chia/data_layer/data_store.py +72 -72
- chia/data_layer/dl_wallet_store.py +10 -10
- chia/data_layer/download_data.py +5 -5
- chia/data_layer/s3_plugin_service.py +9 -9
- chia/data_layer/util/benchmark.py +0 -1
- chia/data_layer/util/plugin.py +2 -3
- chia/farmer/farmer.py +46 -43
- chia/farmer/farmer_api.py +27 -21
- chia/full_node/block_height_map.py +6 -6
- chia/full_node/block_store.py +41 -35
- chia/full_node/coin_store.py +42 -41
- chia/full_node/fee_estimate.py +2 -2
- chia/full_node/fee_estimation.py +1 -2
- chia/full_node/fee_history.py +5 -6
- chia/full_node/fee_tracker.py +24 -24
- chia/full_node/full_node.py +574 -300
- chia/full_node/full_node_api.py +181 -130
- chia/full_node/full_node_store.py +43 -43
- chia/full_node/hint_management.py +4 -4
- chia/full_node/hint_store.py +9 -10
- chia/full_node/mempool.py +25 -19
- chia/full_node/mempool_check_conditions.py +11 -42
- chia/full_node/mempool_manager.py +48 -53
- chia/full_node/pending_tx_cache.py +9 -9
- chia/full_node/subscriptions.py +23 -24
- chia/full_node/sync_store.py +8 -7
- chia/full_node/tx_processing_queue.py +3 -3
- chia/full_node/util/__init__.py +0 -0
- chia/full_node/weight_proof.py +79 -78
- chia/harvester/harvester.py +9 -8
- chia/harvester/harvester_api.py +19 -13
- chia/introducer/introducer.py +7 -5
- chia/introducer/introducer_api.py +9 -3
- chia/legacy/keyring.py +6 -5
- chia/plot_sync/delta.py +8 -8
- chia/plot_sync/receiver.py +12 -11
- chia/plot_sync/sender.py +15 -12
- chia/plotters/bladebit.py +12 -12
- chia/plotters/chiapos.py +2 -2
- chia/plotters/madmax.py +8 -8
- chia/plotters/plotters.py +6 -6
- chia/plotters/plotters_util.py +6 -4
- chia/plotting/cache.py +8 -7
- chia/plotting/check_plots.py +8 -8
- chia/plotting/create_plots.py +6 -6
- chia/plotting/manager.py +22 -22
- chia/plotting/util.py +31 -19
- chia/pools/pool_config.py +7 -7
- chia/pools/pool_puzzles.py +16 -16
- chia/pools/pool_wallet.py +64 -57
- chia/pools/pool_wallet_info.py +3 -3
- chia/protocols/full_node_protocol.py +3 -3
- chia/protocols/harvester_protocol.py +12 -12
- chia/protocols/introducer_protocol.py +1 -2
- chia/protocols/protocol_message_types.py +4 -4
- chia/protocols/protocol_state_machine.py +2 -2
- chia/protocols/protocol_timing.py +1 -0
- chia/protocols/shared_protocol.py +3 -3
- chia/protocols/timelord_protocol.py +2 -2
- chia/protocols/wallet_protocol.py +33 -33
- chia/rpc/crawler_rpc_api.py +12 -7
- chia/rpc/data_layer_rpc_api.py +49 -44
- chia/rpc/data_layer_rpc_client.py +41 -41
- chia/rpc/data_layer_rpc_util.py +7 -11
- chia/rpc/farmer_rpc_api.py +32 -27
- chia/rpc/farmer_rpc_client.py +14 -14
- chia/rpc/full_node_rpc_api.py +53 -48
- chia/rpc/full_node_rpc_client.py +30 -30
- chia/rpc/harvester_rpc_api.py +16 -11
- chia/rpc/harvester_rpc_client.py +6 -6
- chia/rpc/rpc_client.py +34 -14
- chia/rpc/rpc_server.py +117 -43
- chia/rpc/timelord_rpc_api.py +9 -4
- chia/rpc/util.py +11 -211
- chia/rpc/wallet_request_types.py +276 -60
- chia/rpc/wallet_rpc_api.py +563 -399
- chia/rpc/wallet_rpc_client.py +220 -250
- chia/seeder/crawl_store.py +6 -8
- chia/seeder/crawler.py +23 -36
- chia/seeder/crawler_api.py +28 -22
- chia/seeder/dns_server.py +99 -50
- chia/seeder/start_crawler.py +13 -9
- chia/server/address_manager.py +19 -19
- chia/server/address_manager_store.py +17 -17
- chia/server/api_protocol.py +106 -1
- chia/server/capabilities.py +3 -3
- chia/server/chia_policy.py +17 -16
- chia/server/introducer_peers.py +3 -3
- chia/server/node_discovery.py +34 -38
- chia/server/rate_limit_numbers.py +26 -16
- chia/server/rate_limits.py +67 -27
- chia/server/server.py +52 -31
- chia/server/signal_handlers.py +6 -3
- chia/server/ssl_context.py +5 -5
- chia/server/start_data_layer.py +37 -23
- chia/server/start_farmer.py +28 -16
- chia/server/start_full_node.py +29 -23
- chia/server/start_harvester.py +28 -15
- chia/server/start_introducer.py +27 -15
- chia/server/start_service.py +17 -29
- chia/server/start_timelord.py +25 -18
- chia/server/start_wallet.py +22 -18
- chia/server/upnp.py +4 -3
- chia/server/ws_connection.py +68 -54
- chia/simulator/add_blocks_in_batches.py +54 -0
- chia/simulator/block_tools.py +65 -64
- chia/simulator/full_node_simulator.py +66 -74
- chia/simulator/setup_services.py +10 -9
- chia/simulator/simulator_full_node_rpc_api.py +12 -14
- chia/simulator/simulator_full_node_rpc_client.py +3 -5
- chia/simulator/simulator_test_tools.py +8 -7
- chia/simulator/socket.py +1 -4
- chia/simulator/ssl_certs.py +5 -5
- chia/simulator/ssl_certs_1.py +2 -4
- chia/simulator/ssl_certs_10.py +2 -4
- chia/simulator/ssl_certs_2.py +2 -4
- chia/simulator/ssl_certs_3.py +2 -4
- chia/simulator/ssl_certs_4.py +2 -4
- chia/simulator/ssl_certs_5.py +2 -4
- chia/simulator/ssl_certs_6.py +2 -4
- chia/simulator/ssl_certs_7.py +2 -4
- chia/simulator/ssl_certs_8.py +2 -4
- chia/simulator/ssl_certs_9.py +2 -4
- chia/simulator/start_simulator.py +14 -6
- chia/simulator/wallet_tools.py +21 -20
- chia/ssl/create_ssl.py +11 -11
- chia/timelord/iters_from_block.py +2 -2
- chia/timelord/timelord.py +57 -33
- chia/timelord/timelord_api.py +12 -6
- chia/timelord/timelord_launcher.py +10 -8
- chia/timelord/timelord_state.py +5 -5
- chia/types/block_protocol.py +2 -2
- chia/types/blockchain_format/coin.py +3 -3
- chia/types/blockchain_format/program.py +17 -18
- chia/types/blockchain_format/tree_hash.py +9 -9
- chia/types/coin_spend.py +8 -8
- chia/types/condition_with_args.py +1 -2
- chia/types/eligible_coin_spends.py +16 -15
- chia/types/generator_types.py +1 -2
- chia/types/internal_mempool_item.py +1 -2
- chia/types/mempool_item.py +7 -7
- chia/types/mempool_submission_status.py +2 -2
- chia/types/peer_info.py +1 -1
- chia/types/spend_bundle.py +1 -2
- chia/types/transaction_queue_entry.py +2 -2
- chia/types/unfinished_header_block.py +2 -2
- chia/types/validation_state.py +14 -0
- chia/types/weight_proof.py +5 -6
- chia/util/action_scope.py +8 -8
- chia/util/async_pool.py +6 -4
- chia/util/augmented_chain.py +13 -9
- chia/util/batches.py +5 -2
- chia/util/bech32m.py +14 -11
- chia/util/beta_metrics.py +5 -4
- chia/util/block_cache.py +5 -5
- chia/util/byte_types.py +2 -0
- chia/util/check_fork_next_block.py +3 -2
- chia/util/chia_logging.py +41 -21
- chia/util/collection.py +3 -3
- chia/util/condition_tools.py +18 -18
- chia/util/config.py +26 -25
- chia/util/cpu.py +2 -0
- chia/util/db_synchronous.py +2 -0
- chia/util/db_version.py +2 -0
- chia/util/db_wrapper.py +13 -10
- chia/util/default_root.py +17 -0
- chia/util/dump_keyring.py +6 -6
- chia/util/errors.py +5 -3
- chia/util/file_keyring.py +22 -33
- chia/util/files.py +2 -0
- chia/util/full_block_utils.py +31 -7
- chia/util/generator_tools.py +18 -8
- chia/util/hash.py +3 -1
- chia/util/initial-config.yaml +19 -0
- chia/util/inline_executor.py +2 -0
- chia/util/ip_address.py +39 -0
- chia/util/json_util.py +0 -4
- chia/util/keychain.py +27 -24
- chia/util/keyring_wrapper.py +65 -4
- chia/util/limited_semaphore.py +3 -1
- chia/util/lock.py +4 -2
- chia/util/log_exceptions.py +5 -2
- chia/util/logging.py +3 -1
- chia/util/lru_cache.py +2 -0
- chia/util/math.py +4 -4
- chia/util/network.py +15 -73
- chia/util/paginator.py +3 -1
- chia/util/path.py +2 -0
- chia/util/permissions.py +3 -2
- chia/util/prev_transaction_block.py +1 -3
- chia/util/priority_mutex.py +6 -3
- chia/util/profiler.py +7 -4
- chia/util/recursive_replace.py +2 -0
- chia/util/safe_cancel_task.py +2 -0
- chia/util/service_groups.py +2 -2
- chia/util/setproctitle.py +2 -0
- chia/util/significant_bits.py +2 -0
- chia/util/ssl_check.py +11 -11
- chia/util/streamable.py +44 -56
- chia/util/task_referencer.py +59 -0
- chia/util/task_timing.py +22 -18
- chia/util/timing.py +4 -1
- chia/util/vdf_prover.py +2 -3
- chia/util/virtual_project_analysis.py +540 -0
- chia/util/ws_message.py +6 -6
- chia/wallet/cat_wallet/cat_info.py +3 -3
- chia/wallet/cat_wallet/cat_outer_puzzle.py +3 -3
- chia/wallet/cat_wallet/cat_utils.py +5 -4
- chia/wallet/cat_wallet/cat_wallet.py +56 -70
- chia/wallet/cat_wallet/dao_cat_info.py +3 -3
- chia/wallet/cat_wallet/dao_cat_wallet.py +18 -18
- chia/wallet/cat_wallet/lineage_store.py +2 -2
- chia/wallet/coin_selection.py +15 -15
- chia/wallet/conditions.py +257 -71
- chia/wallet/dao_wallet/dao_info.py +4 -4
- chia/wallet/dao_wallet/dao_utils.py +43 -42
- chia/wallet/dao_wallet/dao_wallet.py +66 -68
- chia/wallet/db_wallet/db_wallet_puzzles.py +12 -8
- chia/wallet/derive_keys.py +11 -11
- chia/wallet/did_wallet/did_info.py +3 -3
- chia/wallet/did_wallet/did_wallet.py +56 -47
- chia/wallet/did_wallet/did_wallet_puzzles.py +7 -6
- chia/wallet/lineage_proof.py +4 -4
- chia/wallet/nft_wallet/metadata_outer_puzzle.py +2 -2
- chia/wallet/nft_wallet/nft_info.py +4 -4
- chia/wallet/nft_wallet/nft_puzzles.py +16 -16
- chia/wallet/nft_wallet/nft_wallet.py +90 -89
- chia/wallet/nft_wallet/ownership_outer_puzzle.py +2 -2
- chia/wallet/nft_wallet/singleton_outer_puzzle.py +2 -2
- chia/wallet/nft_wallet/transfer_program_puzzle.py +2 -2
- chia/wallet/nft_wallet/uncurry_nft.py +2 -2
- chia/wallet/notification_manager.py +5 -5
- chia/wallet/notification_store.py +6 -6
- chia/wallet/outer_puzzles.py +2 -2
- chia/wallet/payment.py +4 -5
- chia/wallet/puzzle_drivers.py +4 -4
- chia/wallet/puzzles/clawback/drivers.py +5 -5
- chia/wallet/puzzles/clawback/puzzle_decorator.py +7 -7
- chia/wallet/puzzles/load_clvm.py +2 -3
- chia/wallet/puzzles/p2_conditions.py +1 -2
- chia/wallet/puzzles/p2_delegated_conditions.py +1 -2
- chia/wallet/puzzles/p2_delegated_puzzle.py +2 -3
- chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.py +3 -4
- chia/wallet/puzzles/p2_m_of_n_delegate_direct.py +1 -2
- chia/wallet/puzzles/p2_puzzle_hash.py +1 -2
- chia/wallet/puzzles/puzzle_utils.py +7 -7
- chia/wallet/puzzles/singleton_top_layer.py +6 -5
- chia/wallet/puzzles/singleton_top_layer_v1_1.py +6 -5
- chia/wallet/puzzles/tails.py +34 -30
- chia/wallet/signer_protocol.py +7 -8
- chia/wallet/singleton.py +4 -4
- chia/wallet/trade_manager.py +155 -141
- chia/wallet/trade_record.py +5 -5
- chia/wallet/trading/offer.py +100 -101
- chia/wallet/trading/trade_store.py +14 -14
- chia/wallet/transaction_record.py +31 -16
- chia/wallet/util/address_type.py +4 -4
- chia/wallet/util/blind_signer_tl.py +8 -12
- chia/wallet/util/clvm_streamable.py +15 -15
- chia/wallet/util/compute_hints.py +5 -5
- chia/wallet/util/compute_memos.py +4 -6
- chia/wallet/util/curry_and_treehash.py +3 -2
- chia/wallet/util/debug_spend_bundle.py +6 -8
- chia/wallet/util/merkle_tree.py +10 -10
- chia/wallet/util/merkle_utils.py +10 -10
- chia/wallet/util/new_peak_queue.py +3 -3
- chia/wallet/util/peer_request_cache.py +8 -8
- chia/{util → wallet/util}/pprint.py +2 -3
- chia/wallet/util/puzzle_compression.py +3 -4
- chia/wallet/util/puzzle_decorator.py +10 -10
- chia/wallet/util/query_filter.py +9 -10
- chia/wallet/util/tx_config.py +12 -12
- chia/wallet/util/wallet_sync_utils.py +24 -21
- chia/wallet/util/wallet_types.py +9 -2
- chia/wallet/vc_wallet/cr_cat_drivers.py +28 -27
- chia/wallet/vc_wallet/cr_cat_wallet.py +42 -40
- chia/wallet/vc_wallet/cr_outer_puzzle.py +4 -4
- chia/wallet/vc_wallet/vc_drivers.py +16 -16
- chia/wallet/vc_wallet/vc_store.py +9 -9
- chia/wallet/vc_wallet/vc_wallet.py +35 -35
- chia/wallet/wallet.py +54 -54
- chia/wallet/wallet_action_scope.py +14 -13
- chia/wallet/wallet_blockchain.py +10 -10
- chia/wallet/wallet_coin_record.py +2 -2
- chia/wallet/wallet_coin_store.py +10 -10
- chia/wallet/wallet_info.py +1 -2
- chia/wallet/wallet_interested_store.py +5 -5
- chia/wallet/wallet_nft_store.py +6 -6
- chia/wallet/wallet_node.py +72 -76
- chia/wallet/wallet_node_api.py +33 -27
- chia/wallet/wallet_pool_store.py +1 -2
- chia/wallet/wallet_protocol.py +15 -15
- chia/wallet/wallet_puzzle_store.py +35 -4
- chia/wallet/wallet_retry_store.py +2 -2
- chia/wallet/wallet_singleton_store.py +10 -9
- chia/wallet/wallet_spend_bundle.py +4 -20
- chia/wallet/wallet_state_manager.py +223 -224
- chia/wallet/wallet_transaction_store.py +44 -18
- chia/wallet/wallet_user_store.py +2 -2
- chia/wallet/wallet_weight_proof_handler.py +2 -2
- {chia_blockchain-2.5.0rc1.dist-info → chia_blockchain-2.5.1.dist-info}/LICENSE +1 -1
- {chia_blockchain-2.5.0rc1.dist-info → chia_blockchain-2.5.1.dist-info}/METADATA +67 -72
- chia_blockchain-2.5.1.dist-info/RECORD +1042 -0
- {chia_blockchain-2.5.0rc1.dist-info → chia_blockchain-2.5.1.dist-info}/WHEEL +1 -1
- mozilla-ca/cacert.pem +32 -87
- chia/_tests/cmds/wallet/test_coins.py +0 -195
- chia/consensus/block_root_validation.py +0 -46
- chia/util/api_decorators.py +0 -89
- chia_blockchain-2.5.0rc1.dist-info/RECORD +0 -1028
- {chia_blockchain-2.5.0rc1.dist-info → chia_blockchain-2.5.1.dist-info}/entry_points.txt +0 -0
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
# flake8: noqa
|
|
2
1
|
from __future__ import annotations
|
|
3
2
|
|
|
4
3
|
import ast
|
|
5
4
|
import inspect
|
|
6
|
-
from typing import Any,
|
|
5
|
+
from typing import Any, cast
|
|
7
6
|
|
|
8
7
|
from chia.protocols import (
|
|
9
8
|
farmer_protocol,
|
|
@@ -21,7 +20,7 @@ from chia.protocols import (
|
|
|
21
20
|
# stays up to date. It's a test for the test
|
|
22
21
|
|
|
23
22
|
|
|
24
|
-
def types_in_module(mod: Any) ->
|
|
23
|
+
def types_in_module(mod: Any) -> set[str]:
|
|
25
24
|
parsed = ast.parse(inspect.getsource(mod))
|
|
26
25
|
types = set()
|
|
27
26
|
for line in parsed.body:
|
|
@@ -34,23 +33,22 @@ def types_in_module(mod: Any) -> Set[str]:
|
|
|
34
33
|
return types
|
|
35
34
|
|
|
36
35
|
|
|
36
|
+
STANDARD_ADVICE = "Make sure to update the protocol message regression test to include the new message"
|
|
37
|
+
|
|
38
|
+
|
|
37
39
|
def test_missing_messages_state_machine() -> None:
|
|
38
40
|
from chia.protocols.protocol_state_machine import NO_REPLY_EXPECTED, VALID_REPLY_MESSAGE_MAP
|
|
39
41
|
|
|
40
42
|
# if these asserts fail, make sure to add the new network protocol messages
|
|
41
43
|
# to the visitor in build_network_protocol_files.py and rerun it. Then
|
|
42
44
|
# update this test
|
|
43
|
-
assert (
|
|
44
|
-
|
|
45
|
-
), "A message was added to the protocol state machine. Make sure to update the protocol message regression test to include the new message"
|
|
46
|
-
assert (
|
|
47
|
-
len(NO_REPLY_EXPECTED) == 10
|
|
48
|
-
), "A message was added to the protocol state machine. Make sure to update the protocol message regression test to include the new message"
|
|
45
|
+
assert len(VALID_REPLY_MESSAGE_MAP) == 26, f"A message was added to the protocol state machine. {STANDARD_ADVICE}"
|
|
46
|
+
assert len(NO_REPLY_EXPECTED) == 10, f"A message was added to the protocol state machine. {STANDARD_ADVICE}"
|
|
49
47
|
|
|
50
48
|
|
|
51
49
|
def test_message_ids() -> None:
|
|
52
50
|
parsed = ast.parse(inspect.getsource(protocol_message_types))
|
|
53
|
-
message_ids:
|
|
51
|
+
message_ids: dict[int, str] = {}
|
|
54
52
|
for line in parsed.body:
|
|
55
53
|
if not isinstance(line, ast.ClassDef) or line.name != "ProtocolMessageTypes":
|
|
56
54
|
continue
|
|
@@ -63,7 +61,8 @@ def test_message_ids() -> None:
|
|
|
63
61
|
message_name = entry.targets[0].id
|
|
64
62
|
if message_id in message_ids: # pragma: no cover
|
|
65
63
|
raise AssertionError(
|
|
66
|
-
f'protocol message ID clash between "{message_name}" and "{message_ids[message_id]}".
|
|
64
|
+
f'protocol message ID clash between "{message_name}" and "{message_ids[message_id]}". '
|
|
65
|
+
f"Value {message_id}"
|
|
67
66
|
)
|
|
68
67
|
message_ids[message_id] = message_name
|
|
69
68
|
if message_id < 0 or message_id > 255: # pragma: no cover
|
|
@@ -226,32 +225,32 @@ def test_missing_messages() -> None:
|
|
|
226
225
|
# update this test
|
|
227
226
|
assert (
|
|
228
227
|
types_in_module(wallet_protocol) == wallet_msgs
|
|
229
|
-
), "message types were added or removed from wallet_protocol.
|
|
228
|
+
), f"message types were added or removed from wallet_protocol. {STANDARD_ADVICE}"
|
|
230
229
|
|
|
231
230
|
assert (
|
|
232
231
|
types_in_module(farmer_protocol) == farmer_msgs
|
|
233
|
-
), "message types were added or removed from farmer_protocol.
|
|
232
|
+
), f"message types were added or removed from farmer_protocol. {STANDARD_ADVICE}"
|
|
234
233
|
|
|
235
234
|
assert (
|
|
236
235
|
types_in_module(full_node_protocol) == full_node_msgs
|
|
237
|
-
), "message types were added or removed from full_node_protocol.
|
|
236
|
+
), f"message types were added or removed from full_node_protocol. {STANDARD_ADVICE}"
|
|
238
237
|
|
|
239
238
|
assert (
|
|
240
239
|
types_in_module(harvester_protocol) == harvester_msgs
|
|
241
|
-
), "message types were added or removed from harvester_protocol.
|
|
240
|
+
), f"message types were added or removed from harvester_protocol. {STANDARD_ADVICE}"
|
|
242
241
|
|
|
243
242
|
assert (
|
|
244
243
|
types_in_module(introducer_protocol) == introducer_msgs
|
|
245
|
-
), "message types were added or removed from introducer_protocol.
|
|
244
|
+
), f"message types were added or removed from introducer_protocol. {STANDARD_ADVICE}"
|
|
246
245
|
|
|
247
246
|
assert (
|
|
248
247
|
types_in_module(pool_protocol) == pool_msgs
|
|
249
|
-
), "message types were added or removed from pool_protocol.
|
|
248
|
+
), f"message types were added or removed from pool_protocol. {STANDARD_ADVICE}"
|
|
250
249
|
|
|
251
250
|
assert (
|
|
252
251
|
types_in_module(timelord_protocol) == timelord_msgs
|
|
253
|
-
), "message types were added or removed from timelord_protocol.
|
|
252
|
+
), f"message types were added or removed from timelord_protocol. {STANDARD_ADVICE}"
|
|
254
253
|
|
|
255
254
|
assert (
|
|
256
255
|
types_in_module(shared_protocol) == shared_msgs
|
|
257
|
-
), "message types were added or removed from shared_protocol.
|
|
256
|
+
), f"message types were added or removed from shared_protocol. {STANDARD_ADVICE}"
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
from math import ceil
|
|
4
|
-
from typing import List, Type
|
|
5
4
|
|
|
6
5
|
import pytest
|
|
7
6
|
|
|
@@ -12,7 +11,7 @@ from chia.util.paginator import InvalidPageSizeError, InvalidPageSizeLimit, Page
|
|
|
12
11
|
"source, page_size, page_size_limit",
|
|
13
12
|
[([], 1, 1), ([1], 1, 2), ([1, 2], 2, 2), ([], 10, 100), ([1, 2, 10], 1000, 1000)],
|
|
14
13
|
)
|
|
15
|
-
def test_constructor_valid_inputs(source:
|
|
14
|
+
def test_constructor_valid_inputs(source: list[int], page_size: int, page_size_limit: int) -> None:
|
|
16
15
|
paginator: Paginator = Paginator.create(source, page_size, page_size_limit)
|
|
17
16
|
assert paginator.page_size() == page_size
|
|
18
17
|
assert paginator.page_count() == 1
|
|
@@ -29,7 +28,7 @@ def test_constructor_valid_inputs(source: List[int], page_size: int, page_size_l
|
|
|
29
28
|
(1001, 1000, InvalidPageSizeError),
|
|
30
29
|
],
|
|
31
30
|
)
|
|
32
|
-
def test_constructor_invalid_inputs(page_size: int, page_size_limit: int, exception:
|
|
31
|
+
def test_constructor_invalid_inputs(page_size: int, page_size_limit: int, exception: type[Exception]) -> None:
|
|
33
32
|
with pytest.raises(exception):
|
|
34
33
|
Paginator.create([], page_size, page_size_limit)
|
|
35
34
|
|
|
@@ -62,7 +61,7 @@ def test_page_count() -> None:
|
|
|
62
61
|
(0, 10, 0, []),
|
|
63
62
|
],
|
|
64
63
|
)
|
|
65
|
-
def test_get_page_valid(length: int, page: int, page_size: int, expected_data:
|
|
64
|
+
def test_get_page_valid(length: int, page: int, page_size: int, expected_data: list[int]) -> None:
|
|
66
65
|
assert Paginator.create(list(range(0, length)), page_size).get_page(page) == expected_data
|
|
67
66
|
|
|
68
67
|
|
chia/_tests/util/test_pprint.py
CHANGED
|
@@ -8,7 +8,7 @@ import logging
|
|
|
8
8
|
import random
|
|
9
9
|
import time
|
|
10
10
|
from dataclasses import dataclass
|
|
11
|
-
from typing import Callable,
|
|
11
|
+
from typing import Callable, Optional
|
|
12
12
|
|
|
13
13
|
import anyio
|
|
14
14
|
import pytest
|
|
@@ -16,6 +16,7 @@ import pytest
|
|
|
16
16
|
from chia._tests.util.misc import Marks, datacases
|
|
17
17
|
from chia._tests.util.time_out_assert import time_out_assert_custom_interval
|
|
18
18
|
from chia.util.priority_mutex import NestedLockUnsupportedError, PriorityMutex
|
|
19
|
+
from chia.util.task_referencer import create_referenced_task
|
|
19
20
|
from chia.util.timing import adjusted_timeout
|
|
20
21
|
|
|
21
22
|
log = logging.getLogger(__name__)
|
|
@@ -65,10 +66,10 @@ class TestPriorityMutex:
|
|
|
65
66
|
log.warning(f"Spend {time.time() - t1} waiting for low {i}")
|
|
66
67
|
await kind_of_slow_func()
|
|
67
68
|
|
|
68
|
-
h =
|
|
69
|
+
h = create_referenced_task(do_high())
|
|
69
70
|
l_tasks = []
|
|
70
71
|
for i in range(50):
|
|
71
|
-
l_tasks.append(
|
|
72
|
+
l_tasks.append(create_referenced_task(do_low(i)))
|
|
72
73
|
|
|
73
74
|
winner = None
|
|
74
75
|
|
|
@@ -158,8 +159,8 @@ class Request:
|
|
|
158
159
|
|
|
159
160
|
@dataclass(frozen=True)
|
|
160
161
|
class OrderCase:
|
|
161
|
-
requests:
|
|
162
|
-
expected_acquisitions:
|
|
162
|
+
requests: list[Request]
|
|
163
|
+
expected_acquisitions: list[str]
|
|
163
164
|
|
|
164
165
|
|
|
165
166
|
@dataclass
|
|
@@ -268,7 +269,7 @@ async def test_order(case: OrderCase) -> None:
|
|
|
268
269
|
assert sane(requests=case.requests)
|
|
269
270
|
|
|
270
271
|
|
|
271
|
-
def expected_acquisition_order(requests:
|
|
272
|
+
def expected_acquisition_order(requests: list[Request]) -> list[Request]:
|
|
272
273
|
first_request, *other_requests = requests
|
|
273
274
|
return [
|
|
274
275
|
first_request,
|
|
@@ -334,13 +335,13 @@ async def test_cancellation_while_waiting() -> None:
|
|
|
334
335
|
async with mutex.acquire(priority=MutexPriority.high):
|
|
335
336
|
pass
|
|
336
337
|
|
|
337
|
-
block_task =
|
|
338
|
+
block_task = create_referenced_task(block())
|
|
338
339
|
await blocker_acquired_event.wait()
|
|
339
340
|
|
|
340
|
-
cancel_task =
|
|
341
|
+
cancel_task = create_referenced_task(to_be_cancelled(mutex=mutex))
|
|
341
342
|
await wait_queued(mutex=mutex, task=cancel_task)
|
|
342
343
|
|
|
343
|
-
queued_after_task =
|
|
344
|
+
queued_after_task = create_referenced_task(queued_after())
|
|
344
345
|
await wait_queued(mutex=mutex, task=queued_after_task)
|
|
345
346
|
|
|
346
347
|
cancel_task.cancel()
|
|
@@ -375,7 +376,7 @@ async def test_retains_request_order_for_matching_priority(seed: int) -> None:
|
|
|
375
376
|
assert sane(requests=all_requests)
|
|
376
377
|
|
|
377
378
|
|
|
378
|
-
def sane(requests:
|
|
379
|
+
def sane(requests: list[Request]) -> bool:
|
|
379
380
|
if any(not request.completed for request in requests):
|
|
380
381
|
return False
|
|
381
382
|
|
|
@@ -387,7 +388,7 @@ def sane(requests: List[Request]) -> bool:
|
|
|
387
388
|
class SaneCase:
|
|
388
389
|
id: str
|
|
389
390
|
good: bool
|
|
390
|
-
requests:
|
|
391
|
+
requests: list[Request]
|
|
391
392
|
marks: Marks = ()
|
|
392
393
|
|
|
393
394
|
|
|
@@ -434,14 +435,14 @@ def test_sane_all_in_order(case: SaneCase) -> None:
|
|
|
434
435
|
|
|
435
436
|
|
|
436
437
|
async def create_acquire_tasks_in_controlled_order(
|
|
437
|
-
requests:
|
|
438
|
+
requests: list[Request],
|
|
438
439
|
mutex: PriorityMutex[MutexPriority],
|
|
439
|
-
) ->
|
|
440
|
-
tasks:
|
|
440
|
+
) -> list[asyncio.Task[None]]:
|
|
441
|
+
tasks: list[asyncio.Task[None]] = []
|
|
441
442
|
release_event = asyncio.Event()
|
|
442
443
|
|
|
443
444
|
for request in requests:
|
|
444
|
-
task =
|
|
445
|
+
task = create_referenced_task(request.acquire(mutex=mutex, wait_for=release_event))
|
|
445
446
|
tasks.append(task)
|
|
446
447
|
await wait_queued(mutex=mutex, task=task)
|
|
447
448
|
|
|
@@ -461,14 +462,14 @@ async def test_multiple_tasks_track_active_task_accurately() -> None:
|
|
|
461
462
|
await other_task_allow_release_event.wait()
|
|
462
463
|
|
|
463
464
|
async with mutex.acquire(priority=MutexPriority.high):
|
|
464
|
-
other_task =
|
|
465
|
+
other_task = create_referenced_task(other_task_function())
|
|
465
466
|
await wait_queued(mutex=mutex, task=other_task)
|
|
466
467
|
|
|
467
468
|
async def another_task_function() -> None:
|
|
468
469
|
async with mutex.acquire(priority=MutexPriority.high):
|
|
469
470
|
pass
|
|
470
471
|
|
|
471
|
-
another_task =
|
|
472
|
+
another_task = create_referenced_task(another_task_function())
|
|
472
473
|
await wait_queued(mutex=mutex, task=another_task)
|
|
473
474
|
other_task_allow_release_event.set()
|
|
474
475
|
|
|
@@ -2,7 +2,7 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import copy
|
|
4
4
|
from dataclasses import dataclass
|
|
5
|
-
from typing import
|
|
5
|
+
from typing import Optional, Union
|
|
6
6
|
|
|
7
7
|
import pytest
|
|
8
8
|
|
|
@@ -35,7 +35,7 @@ class TestC:
|
|
|
35
35
|
class TestA:
|
|
36
36
|
a: int
|
|
37
37
|
b: str
|
|
38
|
-
c:
|
|
38
|
+
c: list[int]
|
|
39
39
|
d: Optional[TestC]
|
|
40
40
|
|
|
41
41
|
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from typing import Any
|
|
3
|
+
from typing import Any
|
|
4
4
|
|
|
5
5
|
from chia.consensus.default_constants import update_testnet_overrides
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
def test_testnet11() -> None:
|
|
9
|
-
overrides:
|
|
9
|
+
overrides: dict[str, Any] = {}
|
|
10
10
|
update_testnet_overrides("testnet11", overrides)
|
|
11
11
|
assert overrides == {
|
|
12
12
|
"SOFT_FORK6_HEIGHT": 2000000,
|
|
@@ -14,6 +14,6 @@ def test_testnet11() -> None:
|
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
def test_mainnet() -> None:
|
|
17
|
-
overrides:
|
|
17
|
+
overrides: dict[str, Any] = {}
|
|
18
18
|
update_testnet_overrides("mainnet", overrides)
|
|
19
19
|
assert overrides == {}
|
chia/_tests/util/test_timing.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from typing import Any
|
|
3
|
+
from typing import Any
|
|
4
4
|
|
|
5
5
|
import pytest
|
|
6
6
|
|
|
@@ -41,7 +41,7 @@ from chia.util.network import is_trusted_peer
|
|
|
41
41
|
],
|
|
42
42
|
)
|
|
43
43
|
def test_is_trusted_peer(
|
|
44
|
-
host: str, node_id: bytes32, trusted_peers:
|
|
44
|
+
host: str, node_id: bytes32, trusted_peers: dict[str, Any], trusted_cidrs: list[str], testing: bool, result: bool
|
|
45
45
|
) -> None:
|
|
46
46
|
assert (
|
|
47
47
|
is_trusted_peer(
|
|
@@ -6,18 +6,41 @@ import json
|
|
|
6
6
|
import logging
|
|
7
7
|
import pathlib
|
|
8
8
|
import time
|
|
9
|
-
from
|
|
9
|
+
from collections.abc import Iterable
|
|
10
|
+
from inspect import getframeinfo, stack
|
|
11
|
+
from pathlib import Path
|
|
12
|
+
from typing import TYPE_CHECKING, Any, Callable, ClassVar, Protocol, TypeVar, cast, final
|
|
10
13
|
|
|
11
14
|
import chia
|
|
12
15
|
import chia._tests
|
|
13
16
|
from chia._tests import ether
|
|
14
|
-
from chia._tests.util.misc import DataTypeProtocol, caller_file_and_line
|
|
15
17
|
from chia.protocols.protocol_message_types import ProtocolMessageTypes
|
|
16
18
|
from chia.util.timing import adjusted_timeout
|
|
17
19
|
|
|
18
20
|
log = logging.getLogger(__name__)
|
|
19
21
|
|
|
20
22
|
|
|
23
|
+
T = TypeVar("T")
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
@dataclasses.dataclass(frozen=True)
|
|
27
|
+
class DataTypeProtocol(Protocol):
|
|
28
|
+
tag: ClassVar[str]
|
|
29
|
+
|
|
30
|
+
line: int
|
|
31
|
+
path: Path
|
|
32
|
+
label: str
|
|
33
|
+
duration: float
|
|
34
|
+
limit: float
|
|
35
|
+
|
|
36
|
+
__match_args__: ClassVar[tuple[str, ...]] = ()
|
|
37
|
+
|
|
38
|
+
@classmethod
|
|
39
|
+
def unmarshal(cls: type[T], marshalled: dict[str, Any]) -> T: ...
|
|
40
|
+
|
|
41
|
+
def marshal(self) -> dict[str, Any]: ...
|
|
42
|
+
|
|
43
|
+
|
|
21
44
|
@final
|
|
22
45
|
@dataclasses.dataclass(frozen=True)
|
|
23
46
|
class TimeOutAssertData:
|
|
@@ -34,10 +57,10 @@ class TimeOutAssertData:
|
|
|
34
57
|
|
|
35
58
|
label: str = ""
|
|
36
59
|
|
|
37
|
-
__match_args__: ClassVar[
|
|
60
|
+
__match_args__: ClassVar[tuple[str, ...]] = ()
|
|
38
61
|
|
|
39
62
|
@classmethod
|
|
40
|
-
def unmarshal(cls, marshalled:
|
|
63
|
+
def unmarshal(cls, marshalled: dict[str, Any]) -> TimeOutAssertData:
|
|
41
64
|
return cls(
|
|
42
65
|
duration=marshalled["duration"],
|
|
43
66
|
path=pathlib.Path(marshalled["path"]),
|
|
@@ -46,7 +69,7 @@ class TimeOutAssertData:
|
|
|
46
69
|
timed_out=marshalled["timed_out"],
|
|
47
70
|
)
|
|
48
71
|
|
|
49
|
-
def marshal(self) ->
|
|
72
|
+
def marshal(self) -> dict[str, Any]:
|
|
50
73
|
return {
|
|
51
74
|
"duration": self.duration,
|
|
52
75
|
"path": self.path.as_posix(),
|
|
@@ -102,7 +125,7 @@ async def time_out_assert_custom_interval(
|
|
|
102
125
|
timed_out=timed_out,
|
|
103
126
|
)
|
|
104
127
|
|
|
105
|
-
ether.record_property(
|
|
128
|
+
ether.record_property(
|
|
106
129
|
data.tag,
|
|
107
130
|
json.dumps(data.marshal(), ensure_ascii=True, sort_keys=True),
|
|
108
131
|
)
|
|
@@ -152,3 +175,17 @@ def time_out_messages(incoming_queue: asyncio.Queue, msg_name: str, count: int =
|
|
|
152
175
|
return True
|
|
153
176
|
|
|
154
177
|
return bool_f
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
def caller_file_and_line(distance: int = 1, relative_to: Iterable[Path] = ()) -> tuple[str, int]:
|
|
181
|
+
caller = getframeinfo(stack()[distance + 1][0])
|
|
182
|
+
|
|
183
|
+
caller_path = Path(caller.filename)
|
|
184
|
+
options: list[str] = [caller_path.as_posix()]
|
|
185
|
+
for path in relative_to:
|
|
186
|
+
try:
|
|
187
|
+
options.append(caller_path.relative_to(path).as_posix())
|
|
188
|
+
except ValueError:
|
|
189
|
+
pass
|
|
190
|
+
|
|
191
|
+
return min(options, key=len), caller.lineno
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from typing import
|
|
3
|
+
from typing import Optional
|
|
4
4
|
|
|
5
5
|
import pytest
|
|
6
6
|
from chia_rs import AugSchemeMPL, G2Element, PrivateKey
|
|
@@ -9,7 +9,7 @@ from clvm.casts import int_to_bytes
|
|
|
9
9
|
from chia._tests.clvm.benchmark_costs import cost_of_spend_bundle
|
|
10
10
|
from chia._tests.clvm.test_puzzles import secret_exponent_for_index
|
|
11
11
|
from chia._tests.conftest import ConsensusMode
|
|
12
|
-
from chia.
|
|
12
|
+
from chia._tests.util.spend_sim import CostLogger, SimClient, SpendSim, sim_and_client
|
|
13
13
|
from chia.types.blockchain_format.coin import Coin
|
|
14
14
|
from chia.types.blockchain_format.program import Program
|
|
15
15
|
from chia.types.coin_spend import make_spend
|
|
@@ -35,15 +35,15 @@ async def do_spend(
|
|
|
35
35
|
sim: SpendSim,
|
|
36
36
|
sim_client: SimClient,
|
|
37
37
|
tail: Program,
|
|
38
|
-
coins:
|
|
39
|
-
lineage_proofs:
|
|
40
|
-
inner_solutions:
|
|
41
|
-
expected_result:
|
|
38
|
+
coins: list[Coin],
|
|
39
|
+
lineage_proofs: list[LineageProof],
|
|
40
|
+
inner_solutions: list[Program],
|
|
41
|
+
expected_result: tuple[MempoolInclusionStatus, Optional[Err]],
|
|
42
42
|
reveal_limitations_program: bool = True,
|
|
43
|
-
signatures:
|
|
44
|
-
extra_deltas: Optional[
|
|
45
|
-
additional_spends:
|
|
46
|
-
limitations_solutions: Optional[
|
|
43
|
+
signatures: list[G2Element] = [],
|
|
44
|
+
extra_deltas: Optional[list[int]] = None,
|
|
45
|
+
additional_spends: list[WalletSpendBundle] = [],
|
|
46
|
+
limitations_solutions: Optional[list[Program]] = None,
|
|
47
47
|
cost_logger: Optional[CostLogger] = None,
|
|
48
48
|
cost_log_msg: str = "",
|
|
49
49
|
) -> int:
|
|
@@ -52,7 +52,7 @@ async def do_spend(
|
|
|
52
52
|
if extra_deltas is None:
|
|
53
53
|
extra_deltas = [0] * len(coins)
|
|
54
54
|
|
|
55
|
-
spendable_cat_list:
|
|
55
|
+
spendable_cat_list: list[SpendableCAT] = []
|
|
56
56
|
for coin, innersol, proof, limitations_solution, extra_delta in zip(
|
|
57
57
|
coins, inner_solutions, lineage_proofs, limitations_solutions, extra_deltas
|
|
58
58
|
):
|
|
@@ -260,8 +260,8 @@ async def test_complex_spend(cost_logger: CostLogger, consensus_mode: ConsensusM
|
|
|
260
260
|
# Find the two new coins
|
|
261
261
|
all_cats = await sim_client.get_coin_records_by_puzzle_hash(cat_ph, include_spent_coins=False)
|
|
262
262
|
all_cat_coins = [cr.coin for cr in all_cats]
|
|
263
|
-
standard_to_mint =
|
|
264
|
-
standard_to_melt =
|
|
263
|
+
standard_to_mint = next(filter(lambda cr: cr.parent_coin_info == parent_of_mint.name(), all_cat_coins))
|
|
264
|
+
standard_to_melt = next(filter(lambda cr: cr.parent_coin_info == parent_of_melt.name(), all_cat_coins))
|
|
265
265
|
|
|
266
266
|
# Do the complex spend
|
|
267
267
|
# We have both and eve and non-eve doing both minting and melting
|
|
@@ -19,7 +19,7 @@ from chia.wallet.uncurried_puzzle import uncurry_puzzle
|
|
|
19
19
|
|
|
20
20
|
def test_cat_outer_puzzle() -> None:
|
|
21
21
|
ACS = Program.to(1)
|
|
22
|
-
tail = bytes32
|
|
22
|
+
tail = bytes32.zeros
|
|
23
23
|
cat_puzzle: Program = construct_cat_puzzle(CAT_MOD, tail, ACS)
|
|
24
24
|
double_cat_puzzle: Program = construct_cat_puzzle(CAT_MOD, tail, cat_puzzle)
|
|
25
25
|
uncurried_cat_puzzle = uncurry_puzzle(double_cat_puzzle)
|