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