chia-blockchain 2.5.0rc2__py3-none-any.whl → 2.5.1rc2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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.0rc2.dist-info → chia_blockchain-2.5.1rc2.dist-info}/LICENSE +1 -1
- {chia_blockchain-2.5.0rc2.dist-info → chia_blockchain-2.5.1rc2.dist-info}/METADATA +67 -72
- chia_blockchain-2.5.1rc2.dist-info/RECORD +1042 -0
- {chia_blockchain-2.5.0rc2.dist-info → chia_blockchain-2.5.1rc2.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.0rc2.dist-info/RECORD +0 -1028
- {chia_blockchain-2.5.0rc2.dist-info → chia_blockchain-2.5.1rc2.dist-info}/entry_points.txt +0 -0
|
@@ -3,7 +3,7 @@ from __future__ import annotations
|
|
|
3
3
|
import datetime
|
|
4
4
|
import os
|
|
5
5
|
from pathlib import Path
|
|
6
|
-
from typing import Any,
|
|
6
|
+
from typing import Any, Optional, Union
|
|
7
7
|
|
|
8
8
|
import importlib_resources
|
|
9
9
|
import pytest
|
|
@@ -27,6 +27,7 @@ from chia.rpc.wallet_request_types import (
|
|
|
27
27
|
CancelOfferResponse,
|
|
28
28
|
CATSpendResponse,
|
|
29
29
|
CreateOfferForIDsResponse,
|
|
30
|
+
GetHeightInfoResponse,
|
|
30
31
|
SendTransactionResponse,
|
|
31
32
|
TakeOfferResponse,
|
|
32
33
|
)
|
|
@@ -56,10 +57,10 @@ test_offer_id_bytes: bytes32 = bytes32.from_hexstr(test_offer_id)
|
|
|
56
57
|
test_condition_valid_times: ConditionValidTimes = ConditionValidTimes(min_time=uint64(100), max_time=uint64(150))
|
|
57
58
|
|
|
58
59
|
|
|
59
|
-
def test_get_transaction(capsys: object, get_test_cli_clients:
|
|
60
|
+
def test_get_transaction(capsys: object, get_test_cli_clients: tuple[TestRpcClients, Path]) -> None:
|
|
60
61
|
test_rpc_clients, root_dir = get_test_cli_clients
|
|
61
62
|
# set RPC Client
|
|
62
|
-
inst_rpc_client = TestWalletRpcClient()
|
|
63
|
+
inst_rpc_client = TestWalletRpcClient()
|
|
63
64
|
test_rpc_clients.wallet_rpc_client = inst_rpc_client
|
|
64
65
|
# get output with all options but verbose
|
|
65
66
|
command_args = ["wallet", "get_transaction", WALLET_ID_ARG, "-tx", bytes32_hexstr]
|
|
@@ -80,9 +81,9 @@ def test_get_transaction(capsys: object, get_test_cli_clients: Tuple[TestRpcClie
|
|
|
80
81
|
"Amount sent: 12345.678 test1",
|
|
81
82
|
"To address: xch1qyqszqgpqyqszqgpqyqszqgpqyqszqgpqyqszqgpqyqszqgpqyqs0wg4qq",
|
|
82
83
|
]
|
|
83
|
-
run_cli_command_and_assert(capsys, root_dir, command_args
|
|
84
|
-
run_cli_command_and_assert(capsys, root_dir, command_args
|
|
85
|
-
run_cli_command_and_assert(capsys, root_dir, command_args
|
|
84
|
+
run_cli_command_and_assert(capsys, root_dir, [*command_args, FINGERPRINT_ARG], assert_list)
|
|
85
|
+
run_cli_command_and_assert(capsys, root_dir, [*command_args, FINGERPRINT_ARG, "-v"], v_assert_list)
|
|
86
|
+
run_cli_command_and_assert(capsys, root_dir, [*command_args, CAT_FINGERPRINT_ARG], cat_assert_list)
|
|
86
87
|
# these are various things that should be in the output
|
|
87
88
|
expected_calls: logType = {
|
|
88
89
|
"get_wallets": [(None,), (None,), (None,)],
|
|
@@ -96,7 +97,7 @@ def test_get_transaction(capsys: object, get_test_cli_clients: Tuple[TestRpcClie
|
|
|
96
97
|
test_rpc_clients.wallet_rpc_client.check_log(expected_calls)
|
|
97
98
|
|
|
98
99
|
|
|
99
|
-
def test_get_transactions(capsys: object, get_test_cli_clients:
|
|
100
|
+
def test_get_transactions(capsys: object, get_test_cli_clients: tuple[TestRpcClients, Path]) -> None:
|
|
100
101
|
test_rpc_clients, root_dir = get_test_cli_clients
|
|
101
102
|
|
|
102
103
|
# set RPC Client
|
|
@@ -111,7 +112,7 @@ def test_get_transactions(capsys: object, get_test_cli_clients: Tuple[TestRpcCli
|
|
|
111
112
|
to_address: Optional[str] = None,
|
|
112
113
|
type_filter: Optional[TransactionTypeFilter] = None,
|
|
113
114
|
confirmed: Optional[bool] = None,
|
|
114
|
-
) ->
|
|
115
|
+
) -> list[TransactionRecord]:
|
|
115
116
|
self.add_to_log(
|
|
116
117
|
"get_transactions", (wallet_id, start, end, sort_key, reverse, to_address, type_filter, confirmed)
|
|
117
118
|
)
|
|
@@ -141,14 +142,14 @@ def test_get_transactions(capsys: object, get_test_cli_clients: Tuple[TestRpcCli
|
|
|
141
142
|
|
|
142
143
|
return l_tx_rec
|
|
143
144
|
|
|
144
|
-
async def get_coin_records(self, request: GetCoinRecords) ->
|
|
145
|
+
async def get_coin_records(self, request: GetCoinRecords) -> dict[str, Any]:
|
|
145
146
|
self.add_to_log("get_coin_records", (request,))
|
|
146
147
|
return {
|
|
147
148
|
"coin_records": [{"metadata": {"time_lock": 12345678}}],
|
|
148
149
|
"total_count": 1,
|
|
149
150
|
}
|
|
150
151
|
|
|
151
|
-
inst_rpc_client = GetTransactionsWalletRpcClient()
|
|
152
|
+
inst_rpc_client = GetTransactionsWalletRpcClient()
|
|
152
153
|
test_rpc_clients.wallet_rpc_client = inst_rpc_client
|
|
153
154
|
# get output with all options but verbose
|
|
154
155
|
command_args = [
|
|
@@ -182,7 +183,7 @@ def test_get_transactions(capsys: object, get_test_cli_clients: Tuple[TestRpcCli
|
|
|
182
183
|
"'type': 7", # clawback tx
|
|
183
184
|
]
|
|
184
185
|
run_cli_command_and_assert(capsys, root_dir, command_args, assert_list)
|
|
185
|
-
run_cli_command_and_assert(capsys, root_dir, command_args
|
|
186
|
+
run_cli_command_and_assert(capsys, root_dir, [*command_args, "-v"], v_assert_list)
|
|
186
187
|
# these are various things that should be in the output
|
|
187
188
|
expected_coin_id = Coin(get_bytes32(4), get_bytes32(5), uint64(12345678)).name()
|
|
188
189
|
expected_calls: logType = {
|
|
@@ -199,14 +200,14 @@ def test_get_transactions(capsys: object, get_test_cli_clients: Tuple[TestRpcCli
|
|
|
199
200
|
test_rpc_clients.wallet_rpc_client.check_log(expected_calls)
|
|
200
201
|
|
|
201
202
|
|
|
202
|
-
def test_show(capsys: object, get_test_cli_clients:
|
|
203
|
+
def test_show(capsys: object, get_test_cli_clients: tuple[TestRpcClients, Path]) -> None:
|
|
203
204
|
test_rpc_clients, root_dir = get_test_cli_clients
|
|
204
205
|
|
|
205
206
|
# set RPC Client
|
|
206
207
|
class ShowRpcClient(TestWalletRpcClient):
|
|
207
|
-
async def get_wallets(self, wallet_type: Optional[WalletType] = None) ->
|
|
208
|
+
async def get_wallets(self, wallet_type: Optional[WalletType] = None) -> list[dict[str, Union[str, int]]]:
|
|
208
209
|
self.add_to_log("get_wallets", (wallet_type,))
|
|
209
|
-
wallet_list:
|
|
210
|
+
wallet_list: list[dict[str, Union[str, int]]] = [
|
|
210
211
|
{"data": "", "id": 1, "name": "Chia Wallet", "type": WalletType.STANDARD_WALLET},
|
|
211
212
|
{
|
|
212
213
|
"data": "dc59bcd60ce5fc9c93a5d3b11875486b03efb53a53da61e453f5cf61a774686001ff02ffff01ff02ffff03ff2f"
|
|
@@ -227,11 +228,11 @@ def test_show(capsys: object, get_test_cli_clients: Tuple[TestRpcClients, Path])
|
|
|
227
228
|
return [wallet_list[1]]
|
|
228
229
|
return wallet_list
|
|
229
230
|
|
|
230
|
-
async def get_height_info(self) ->
|
|
231
|
+
async def get_height_info(self) -> GetHeightInfoResponse:
|
|
231
232
|
self.add_to_log("get_height_info", ())
|
|
232
|
-
return uint32(10)
|
|
233
|
+
return GetHeightInfoResponse(uint32(10))
|
|
233
234
|
|
|
234
|
-
async def get_wallet_balance(self, wallet_id: int) ->
|
|
235
|
+
async def get_wallet_balance(self, wallet_id: int) -> dict[str, uint64]:
|
|
235
236
|
self.add_to_log("get_wallet_balance", (wallet_id,))
|
|
236
237
|
if wallet_id == 1:
|
|
237
238
|
amount = uint64(1000000000)
|
|
@@ -251,7 +252,7 @@ def test_show(capsys: object, get_test_cli_clients: Tuple[TestRpcClients, Path])
|
|
|
251
252
|
|
|
252
253
|
async def get_connections(
|
|
253
254
|
self, node_type: Optional[NodeType] = None
|
|
254
|
-
) ->
|
|
255
|
+
) -> list[dict[str, Union[str, int, float, bytes32]]]:
|
|
255
256
|
self.add_to_log("get_connections", (node_type,))
|
|
256
257
|
return [
|
|
257
258
|
{
|
|
@@ -268,7 +269,7 @@ def test_show(capsys: object, get_test_cli_clients: Tuple[TestRpcClients, Path])
|
|
|
268
269
|
}
|
|
269
270
|
]
|
|
270
271
|
|
|
271
|
-
inst_rpc_client = ShowRpcClient()
|
|
272
|
+
inst_rpc_client = ShowRpcClient()
|
|
272
273
|
test_rpc_clients.wallet_rpc_client = inst_rpc_client
|
|
273
274
|
command_args = ["wallet", "show", FINGERPRINT_ARG]
|
|
274
275
|
assert_list = [
|
|
@@ -287,11 +288,10 @@ def test_show(capsys: object, get_test_cli_clients: Tuple[TestRpcClients, Path])
|
|
|
287
288
|
"47482/47482 01010101... May 12",
|
|
288
289
|
]
|
|
289
290
|
run_cli_command_and_assert(capsys, root_dir, command_args, assert_list)
|
|
290
|
-
run_cli_command_and_assert(capsys, root_dir, command_args
|
|
291
|
+
run_cli_command_and_assert(capsys, root_dir, [*command_args, "--wallet_type", "cat"], other_assert_list)
|
|
291
292
|
# these are various things that should be in the output
|
|
292
293
|
expected_calls: logType = {
|
|
293
294
|
"get_wallets": [(None,), (WalletType.CAT,)],
|
|
294
|
-
"get_synced": [(), ()],
|
|
295
295
|
"get_sync_status": [(), ()],
|
|
296
296
|
"get_height_info": [(), ()],
|
|
297
297
|
"get_wallet_balance": [(1,), (2,), (3,), (2,)],
|
|
@@ -301,7 +301,7 @@ def test_show(capsys: object, get_test_cli_clients: Tuple[TestRpcClients, Path])
|
|
|
301
301
|
test_rpc_clients.wallet_rpc_client.check_log(expected_calls)
|
|
302
302
|
|
|
303
303
|
|
|
304
|
-
def test_send(capsys: object, get_test_cli_clients:
|
|
304
|
+
def test_send(capsys: object, get_test_cli_clients: tuple[TestRpcClients, Path]) -> None:
|
|
305
305
|
test_rpc_clients, root_dir = get_test_cli_clients
|
|
306
306
|
|
|
307
307
|
# set RPC Client
|
|
@@ -313,8 +313,8 @@ def test_send(capsys: object, get_test_cli_clients: Tuple[TestRpcClients, Path])
|
|
|
313
313
|
address: str,
|
|
314
314
|
tx_config: TXConfig,
|
|
315
315
|
fee: uint64 = uint64(0),
|
|
316
|
-
memos: Optional[
|
|
317
|
-
puzzle_decorator_override: Optional[
|
|
316
|
+
memos: Optional[list[str]] = None,
|
|
317
|
+
puzzle_decorator_override: Optional[list[dict[str, Union[str, int, bool]]]] = None,
|
|
318
318
|
push: bool = True,
|
|
319
319
|
timelock_info: ConditionValidTimes = ConditionValidTimes(),
|
|
320
320
|
) -> SendTransactionResponse:
|
|
@@ -351,10 +351,10 @@ def test_send(capsys: object, get_test_cli_clients: Tuple[TestRpcClients, Path])
|
|
|
351
351
|
amount: Optional[uint64] = None,
|
|
352
352
|
inner_address: Optional[str] = None,
|
|
353
353
|
fee: uint64 = uint64(0),
|
|
354
|
-
memos: Optional[
|
|
355
|
-
additions: Optional[
|
|
356
|
-
removals: Optional[
|
|
357
|
-
cat_discrepancy: Optional[
|
|
354
|
+
memos: Optional[list[str]] = None,
|
|
355
|
+
additions: Optional[list[dict[str, Any]]] = None,
|
|
356
|
+
removals: Optional[list[Coin]] = None,
|
|
357
|
+
cat_discrepancy: Optional[tuple[int, Program, Program]] = None, # (extra_delta, tail_reveal, tail_solution)
|
|
358
358
|
push: bool = True,
|
|
359
359
|
timelock_info: ConditionValidTimes = ConditionValidTimes(),
|
|
360
360
|
) -> CATSpendResponse:
|
|
@@ -376,7 +376,7 @@ def test_send(capsys: object, get_test_cli_clients: Tuple[TestRpcClients, Path])
|
|
|
376
376
|
)
|
|
377
377
|
return CATSpendResponse([STD_UTX], [STD_TX], STD_TX, STD_TX.name)
|
|
378
378
|
|
|
379
|
-
inst_rpc_client = SendWalletRpcClient()
|
|
379
|
+
inst_rpc_client = SendWalletRpcClient()
|
|
380
380
|
test_rpc_clients.wallet_rpc_client = inst_rpc_client
|
|
381
381
|
# get output with all options but verbose
|
|
382
382
|
addr = encode_puzzle_hash(get_bytes32(3), "xch")
|
|
@@ -409,10 +409,10 @@ def test_send(capsys: object, get_test_cli_clients: Tuple[TestRpcClients, Path])
|
|
|
409
409
|
]
|
|
410
410
|
with CliRunner().isolated_filesystem():
|
|
411
411
|
run_cli_command_and_assert(
|
|
412
|
-
capsys, root_dir, command_args
|
|
412
|
+
capsys, root_dir, [*command_args, FINGERPRINT_ARG, "--transaction-file-out=temp"], assert_list
|
|
413
413
|
)
|
|
414
414
|
run_cli_command_and_assert(
|
|
415
|
-
capsys, root_dir, command_args
|
|
415
|
+
capsys, root_dir, [*command_args, CAT_FINGERPRINT_ARG, "--transaction-file-out=temp2"], cat_assert_list
|
|
416
416
|
)
|
|
417
417
|
|
|
418
418
|
with open("temp", "rb") as file:
|
|
@@ -468,7 +468,7 @@ def test_send(capsys: object, get_test_cli_clients: Tuple[TestRpcClients, Path])
|
|
|
468
468
|
test_rpc_clients.wallet_rpc_client.check_log(expected_calls)
|
|
469
469
|
|
|
470
470
|
|
|
471
|
-
def test_get_address(capsys: object, get_test_cli_clients:
|
|
471
|
+
def test_get_address(capsys: object, get_test_cli_clients: tuple[TestRpcClients, Path]) -> None:
|
|
472
472
|
test_rpc_clients, root_dir = get_test_cli_clients
|
|
473
473
|
|
|
474
474
|
# set RPC Client
|
|
@@ -479,7 +479,7 @@ def test_get_address(capsys: object, get_test_cli_clients: Tuple[TestRpcClients,
|
|
|
479
479
|
return encode_puzzle_hash(get_bytes32(3), "xch")
|
|
480
480
|
return encode_puzzle_hash(get_bytes32(4), "xch")
|
|
481
481
|
|
|
482
|
-
inst_rpc_client = GetAddressWalletRpcClient()
|
|
482
|
+
inst_rpc_client = GetAddressWalletRpcClient()
|
|
483
483
|
test_rpc_clients.wallet_rpc_client = inst_rpc_client
|
|
484
484
|
# get output with all options but verbose
|
|
485
485
|
addr1 = encode_puzzle_hash(get_bytes32(3), "xch")
|
|
@@ -490,8 +490,8 @@ def test_get_address(capsys: object, get_test_cli_clients: Tuple[TestRpcClients,
|
|
|
490
490
|
WALLET_ID_ARG,
|
|
491
491
|
FINGERPRINT_ARG,
|
|
492
492
|
]
|
|
493
|
-
run_cli_command_and_assert(capsys, root_dir, command_args
|
|
494
|
-
run_cli_command_and_assert(capsys, root_dir, command_args
|
|
493
|
+
run_cli_command_and_assert(capsys, root_dir, [*command_args, "-n"], [addr1])
|
|
494
|
+
run_cli_command_and_assert(capsys, root_dir, [*command_args, "-l"], [addr2])
|
|
495
495
|
# these are various things that should be in the output
|
|
496
496
|
expected_calls: logType = {
|
|
497
497
|
"get_next_address": [(1, True), (1, False)],
|
|
@@ -499,19 +499,19 @@ def test_get_address(capsys: object, get_test_cli_clients: Tuple[TestRpcClients,
|
|
|
499
499
|
test_rpc_clients.wallet_rpc_client.check_log(expected_calls)
|
|
500
500
|
|
|
501
501
|
|
|
502
|
-
def test_clawback(capsys: object, get_test_cli_clients:
|
|
502
|
+
def test_clawback(capsys: object, get_test_cli_clients: tuple[TestRpcClients, Path]) -> None:
|
|
503
503
|
test_rpc_clients, root_dir = get_test_cli_clients
|
|
504
504
|
|
|
505
505
|
# set RPC Client
|
|
506
506
|
class ClawbackWalletRpcClient(TestWalletRpcClient):
|
|
507
507
|
async def spend_clawback_coins(
|
|
508
508
|
self,
|
|
509
|
-
coin_ids:
|
|
509
|
+
coin_ids: list[bytes32],
|
|
510
510
|
fee: int = 0,
|
|
511
511
|
force: bool = False,
|
|
512
512
|
push: bool = True,
|
|
513
513
|
timelock_info: ConditionValidTimes = ConditionValidTimes(),
|
|
514
|
-
) ->
|
|
514
|
+
) -> dict[str, Any]:
|
|
515
515
|
self.add_to_log("spend_clawback_coins", (coin_ids, fee, force, push, timelock_info))
|
|
516
516
|
tx_hex_list = [get_bytes32(6).hex(), get_bytes32(7).hex(), get_bytes32(8).hex()]
|
|
517
517
|
return {
|
|
@@ -526,7 +526,7 @@ def test_clawback(capsys: object, get_test_cli_clients: Tuple[TestRpcClients, Pa
|
|
|
526
526
|
],
|
|
527
527
|
}
|
|
528
528
|
|
|
529
|
-
inst_rpc_client = ClawbackWalletRpcClient()
|
|
529
|
+
inst_rpc_client = ClawbackWalletRpcClient()
|
|
530
530
|
test_rpc_clients.wallet_rpc_client = inst_rpc_client
|
|
531
531
|
tx_ids = [get_bytes32(3), get_bytes32(4), get_bytes32(5)]
|
|
532
532
|
r_tx_ids_hex = [get_bytes32(6).hex(), get_bytes32(7).hex(), get_bytes32(8).hex()]
|
|
@@ -551,16 +551,15 @@ def test_clawback(capsys: object, get_test_cli_clients: Tuple[TestRpcClients, Pa
|
|
|
551
551
|
test_rpc_clients.wallet_rpc_client.check_log(expected_calls)
|
|
552
552
|
|
|
553
553
|
|
|
554
|
-
def test_del_unconfirmed_tx(capsys: object, get_test_cli_clients:
|
|
554
|
+
def test_del_unconfirmed_tx(capsys: object, get_test_cli_clients: tuple[TestRpcClients, Path]) -> None:
|
|
555
555
|
test_rpc_clients, root_dir = get_test_cli_clients
|
|
556
556
|
|
|
557
557
|
# set RPC Client
|
|
558
558
|
class UnconfirmedTxRpcClient(TestWalletRpcClient):
|
|
559
559
|
async def delete_unconfirmed_transactions(self, wallet_id: int) -> None:
|
|
560
560
|
self.add_to_log("delete_unconfirmed_transactions", (wallet_id,))
|
|
561
|
-
return None
|
|
562
561
|
|
|
563
|
-
inst_rpc_client = UnconfirmedTxRpcClient()
|
|
562
|
+
inst_rpc_client = UnconfirmedTxRpcClient()
|
|
564
563
|
test_rpc_clients.wallet_rpc_client = inst_rpc_client
|
|
565
564
|
command_args = [
|
|
566
565
|
"wallet",
|
|
@@ -577,7 +576,7 @@ def test_del_unconfirmed_tx(capsys: object, get_test_cli_clients: Tuple[TestRpcC
|
|
|
577
576
|
test_rpc_clients.wallet_rpc_client.check_log(expected_calls)
|
|
578
577
|
|
|
579
578
|
|
|
580
|
-
def test_get_derivation_index(capsys: object, get_test_cli_clients:
|
|
579
|
+
def test_get_derivation_index(capsys: object, get_test_cli_clients: tuple[TestRpcClients, Path]) -> None:
|
|
581
580
|
test_rpc_clients, root_dir = get_test_cli_clients
|
|
582
581
|
|
|
583
582
|
# set RPC Client
|
|
@@ -586,7 +585,7 @@ def test_get_derivation_index(capsys: object, get_test_cli_clients: Tuple[TestRp
|
|
|
586
585
|
self.add_to_log("get_current_derivation_index", ())
|
|
587
586
|
return str(520)
|
|
588
587
|
|
|
589
|
-
inst_rpc_client = GetDerivationIndexRpcClient()
|
|
588
|
+
inst_rpc_client = GetDerivationIndexRpcClient()
|
|
590
589
|
test_rpc_clients.wallet_rpc_client = inst_rpc_client
|
|
591
590
|
command_args = [
|
|
592
591
|
"wallet",
|
|
@@ -601,11 +600,11 @@ def test_get_derivation_index(capsys: object, get_test_cli_clients: Tuple[TestRp
|
|
|
601
600
|
test_rpc_clients.wallet_rpc_client.check_log(expected_calls)
|
|
602
601
|
|
|
603
602
|
|
|
604
|
-
def test_sign_message(capsys: object, get_test_cli_clients:
|
|
603
|
+
def test_sign_message(capsys: object, get_test_cli_clients: tuple[TestRpcClients, Path]) -> None:
|
|
605
604
|
test_rpc_clients, root_dir = get_test_cli_clients
|
|
606
605
|
|
|
607
606
|
# set RPC Client
|
|
608
|
-
inst_rpc_client = TestWalletRpcClient()
|
|
607
|
+
inst_rpc_client = TestWalletRpcClient()
|
|
609
608
|
test_rpc_clients.wallet_rpc_client = inst_rpc_client
|
|
610
609
|
xch_addr = encode_puzzle_hash(get_bytes32(1), "xch")
|
|
611
610
|
message = b"hello world"
|
|
@@ -617,14 +616,14 @@ def test_sign_message(capsys: object, get_test_cli_clients: Tuple[TestRpcClients
|
|
|
617
616
|
f"Signature: {bytes([6] * 576).hex()}",
|
|
618
617
|
f"Signing Mode: {SigningMode.CHIP_0002.value}",
|
|
619
618
|
]
|
|
620
|
-
run_cli_command_and_assert(capsys, root_dir, command_args
|
|
619
|
+
run_cli_command_and_assert(capsys, root_dir, [*command_args, f"-a{xch_addr}"], assert_list)
|
|
621
620
|
expected_calls: logType = {
|
|
622
621
|
"sign_message_by_address": [(xch_addr, message.hex())], # xch std
|
|
623
622
|
}
|
|
624
623
|
test_rpc_clients.wallet_rpc_client.check_log(expected_calls)
|
|
625
624
|
|
|
626
625
|
|
|
627
|
-
def test_update_derivation_index(capsys: object, get_test_cli_clients:
|
|
626
|
+
def test_update_derivation_index(capsys: object, get_test_cli_clients: tuple[TestRpcClients, Path]) -> None:
|
|
628
627
|
test_rpc_clients, root_dir = get_test_cli_clients
|
|
629
628
|
|
|
630
629
|
# set RPC Client
|
|
@@ -633,7 +632,7 @@ def test_update_derivation_index(capsys: object, get_test_cli_clients: Tuple[Tes
|
|
|
633
632
|
self.add_to_log("extend_derivation_index", (index,))
|
|
634
633
|
return str(index)
|
|
635
634
|
|
|
636
|
-
inst_rpc_client = UpdateDerivationIndexRpcClient()
|
|
635
|
+
inst_rpc_client = UpdateDerivationIndexRpcClient()
|
|
637
636
|
test_rpc_clients.wallet_rpc_client = inst_rpc_client
|
|
638
637
|
index = 600
|
|
639
638
|
command_args = ["wallet", "update_derivation_index", FINGERPRINT_ARG, "--index", str(index)]
|
|
@@ -644,26 +643,25 @@ def test_update_derivation_index(capsys: object, get_test_cli_clients: Tuple[Tes
|
|
|
644
643
|
test_rpc_clients.wallet_rpc_client.check_log(expected_calls)
|
|
645
644
|
|
|
646
645
|
|
|
647
|
-
def test_add_token(capsys: object, get_test_cli_clients:
|
|
646
|
+
def test_add_token(capsys: object, get_test_cli_clients: tuple[TestRpcClients, Path]) -> None:
|
|
648
647
|
test_rpc_clients, root_dir = get_test_cli_clients
|
|
649
648
|
|
|
650
649
|
# set RPC Client
|
|
651
650
|
class AddTokenRpcClient(TestWalletRpcClient):
|
|
652
|
-
async def create_wallet_for_existing_cat(self, asset_id: bytes) ->
|
|
651
|
+
async def create_wallet_for_existing_cat(self, asset_id: bytes) -> dict[str, int]:
|
|
653
652
|
self.add_to_log("create_wallet_for_existing_cat", (asset_id,))
|
|
654
653
|
return {"wallet_id": 3}
|
|
655
654
|
|
|
656
655
|
async def set_cat_name(self, wallet_id: int, name: str) -> None:
|
|
657
656
|
self.add_to_log("set_cat_name", (wallet_id, name))
|
|
658
|
-
return None # we don't need to do anything here
|
|
659
657
|
|
|
660
|
-
inst_rpc_client = AddTokenRpcClient()
|
|
658
|
+
inst_rpc_client = AddTokenRpcClient()
|
|
661
659
|
test_rpc_clients.wallet_rpc_client = inst_rpc_client
|
|
662
660
|
command_args = ["wallet", "add_token", FINGERPRINT_ARG, "-nexamplecat"]
|
|
663
661
|
assert_list = [f"Successfully renamed test1 with wallet_id 2 on key {FINGERPRINT} to examplecat"]
|
|
664
662
|
other_assert_list = [f"Successfully added examplecat with wallet id 3 on key {FINGERPRINT}"]
|
|
665
|
-
run_cli_command_and_assert(capsys, root_dir, command_args
|
|
666
|
-
run_cli_command_and_assert(capsys, root_dir, command_args
|
|
663
|
+
run_cli_command_and_assert(capsys, root_dir, [*command_args, "--asset-id", get_bytes32(1).hex()], assert_list)
|
|
664
|
+
run_cli_command_and_assert(capsys, root_dir, [*command_args, "--asset-id", get_bytes32(3).hex()], other_assert_list)
|
|
667
665
|
# these are various things that should be in the output
|
|
668
666
|
|
|
669
667
|
expected_calls: logType = {
|
|
@@ -675,7 +673,7 @@ def test_add_token(capsys: object, get_test_cli_clients: Tuple[TestRpcClients, P
|
|
|
675
673
|
|
|
676
674
|
|
|
677
675
|
def test_make_offer_bad_filename(
|
|
678
|
-
capsys: object, get_test_cli_clients:
|
|
676
|
+
capsys: object, get_test_cli_clients: tuple[TestRpcClients, Path], tmp_path: Path
|
|
679
677
|
) -> None:
|
|
680
678
|
_, root_dir = get_test_cli_clients
|
|
681
679
|
|
|
@@ -687,7 +685,7 @@ def test_make_offer_bad_filename(
|
|
|
687
685
|
"wallet",
|
|
688
686
|
"make_offer",
|
|
689
687
|
FINGERPRINT_ARG,
|
|
690
|
-
f"-p{
|
|
688
|
+
f"-p{tmp_path!s}",
|
|
691
689
|
"--reuse",
|
|
692
690
|
"-m0.5",
|
|
693
691
|
"--offer",
|
|
@@ -707,7 +705,7 @@ def test_make_offer_bad_filename(
|
|
|
707
705
|
"wallet",
|
|
708
706
|
"make_offer",
|
|
709
707
|
FINGERPRINT_ARG,
|
|
710
|
-
f"-p{
|
|
708
|
+
f"-p{test_file!s}",
|
|
711
709
|
"--reuse",
|
|
712
710
|
"-m0.5",
|
|
713
711
|
"--offer",
|
|
@@ -727,17 +725,17 @@ def test_make_offer_bad_filename(
|
|
|
727
725
|
run_cli_command_and_assert(capsys, root_dir, command_args_unwritable, [""])
|
|
728
726
|
|
|
729
727
|
|
|
730
|
-
def test_make_offer(capsys: object, get_test_cli_clients:
|
|
728
|
+
def test_make_offer(capsys: object, get_test_cli_clients: tuple[TestRpcClients, Path], tmp_path: Path) -> None:
|
|
731
729
|
test_rpc_clients, root_dir = get_test_cli_clients
|
|
732
730
|
|
|
733
731
|
# set RPC Client
|
|
734
732
|
class MakeOfferRpcClient(TestWalletRpcClient):
|
|
735
733
|
async def create_offer_for_ids(
|
|
736
734
|
self,
|
|
737
|
-
offer_dict:
|
|
735
|
+
offer_dict: dict[uint32, int],
|
|
738
736
|
tx_config: TXConfig,
|
|
739
|
-
driver_dict: Optional[
|
|
740
|
-
solver: Optional[
|
|
737
|
+
driver_dict: Optional[dict[str, Any]] = None,
|
|
738
|
+
solver: Optional[dict[str, Any]] = None,
|
|
741
739
|
fee: uint64 = uint64(0),
|
|
742
740
|
validate_only: bool = False,
|
|
743
741
|
timelock_info: ConditionValidTimes = ConditionValidTimes(),
|
|
@@ -765,7 +763,7 @@ def test_make_offer(capsys: object, get_test_cli_clients: Tuple[TestRpcClients,
|
|
|
765
763
|
|
|
766
764
|
return CreateOfferForIDsResponse([STD_UTX], [STD_TX], created_offer, trade_offer)
|
|
767
765
|
|
|
768
|
-
inst_rpc_client = MakeOfferRpcClient()
|
|
766
|
+
inst_rpc_client = MakeOfferRpcClient()
|
|
769
767
|
test_rpc_clients.wallet_rpc_client = inst_rpc_client
|
|
770
768
|
request_cat_id = get_bytes32(2)
|
|
771
769
|
request_nft_id = get_bytes32(2)
|
|
@@ -775,7 +773,7 @@ def test_make_offer(capsys: object, get_test_cli_clients: Tuple[TestRpcClients,
|
|
|
775
773
|
"wallet",
|
|
776
774
|
"make_offer",
|
|
777
775
|
FINGERPRINT_ARG,
|
|
778
|
-
f"-p{
|
|
776
|
+
f"-p{tmp_path / 'test.offer'!s}",
|
|
779
777
|
"--reuse",
|
|
780
778
|
"-m0.5",
|
|
781
779
|
"--offer",
|
|
@@ -857,7 +855,7 @@ def test_make_offer(capsys: object, get_test_cli_clients: Tuple[TestRpcClients,
|
|
|
857
855
|
test_rpc_clients.wallet_rpc_client.check_log(expected_calls)
|
|
858
856
|
|
|
859
857
|
|
|
860
|
-
def test_get_offers(capsys: object, get_test_cli_clients:
|
|
858
|
+
def test_get_offers(capsys: object, get_test_cli_clients: tuple[TestRpcClients, Path]) -> None:
|
|
861
859
|
test_rpc_clients, root_dir = get_test_cli_clients
|
|
862
860
|
|
|
863
861
|
# set RPC Client
|
|
@@ -872,7 +870,7 @@ def test_get_offers(capsys: object, get_test_cli_clients: Tuple[TestRpcClients,
|
|
|
872
870
|
exclude_my_offers: bool = False,
|
|
873
871
|
exclude_taken_offers: bool = False,
|
|
874
872
|
include_completed: bool = False,
|
|
875
|
-
) ->
|
|
873
|
+
) -> list[TradeRecord]:
|
|
876
874
|
self.add_to_log(
|
|
877
875
|
"get_all_offers",
|
|
878
876
|
(
|
|
@@ -886,7 +884,7 @@ def test_get_offers(capsys: object, get_test_cli_clients: Tuple[TestRpcClients,
|
|
|
886
884
|
include_completed,
|
|
887
885
|
),
|
|
888
886
|
)
|
|
889
|
-
records:
|
|
887
|
+
records: list[TradeRecord] = []
|
|
890
888
|
for i in reversed(range(start, end - 1)): # reversed to match the sort order
|
|
891
889
|
trade_offer = TradeRecord(
|
|
892
890
|
confirmed_at_index=uint32(0),
|
|
@@ -913,7 +911,7 @@ def test_get_offers(capsys: object, get_test_cli_clients: Tuple[TestRpcClients,
|
|
|
913
911
|
records.append(trade_offer)
|
|
914
912
|
return records
|
|
915
913
|
|
|
916
|
-
inst_rpc_client = GetOffersRpcClient()
|
|
914
|
+
inst_rpc_client = GetOffersRpcClient()
|
|
917
915
|
test_rpc_clients.wallet_rpc_client = inst_rpc_client
|
|
918
916
|
command_args = [
|
|
919
917
|
"wallet",
|
|
@@ -923,6 +921,7 @@ def test_get_offers(capsys: object, get_test_cli_clients: Tuple[TestRpcClients,
|
|
|
923
921
|
"--exclude-taken-offers",
|
|
924
922
|
"--include-completed",
|
|
925
923
|
"--reverse",
|
|
924
|
+
"--sort-by-relevance",
|
|
926
925
|
]
|
|
927
926
|
# these are various things that should be in the output
|
|
928
927
|
assert_list = [
|
|
@@ -940,7 +939,7 @@ def test_get_offers(capsys: object, get_test_cli_clients: Tuple[TestRpcClients,
|
|
|
940
939
|
"Record with id: 0101010101010101010101010101010101010101010101010101010101010101",
|
|
941
940
|
]
|
|
942
941
|
run_cli_command_and_assert(capsys, root_dir, command_args, assert_list)
|
|
943
|
-
expected_calls: logType = {"get_all_offers": [(0, 10,
|
|
942
|
+
expected_calls: logType = {"get_all_offers": [(0, 10, "RELEVANCE", True, False, True, True, True)]}
|
|
944
943
|
command_args = [
|
|
945
944
|
"wallet",
|
|
946
945
|
"get_offers",
|
|
@@ -960,11 +959,11 @@ def test_get_offers(capsys: object, get_test_cli_clients: Tuple[TestRpcClients,
|
|
|
960
959
|
]
|
|
961
960
|
run_cli_command_and_assert(capsys, root_dir, command_args, assert_list)
|
|
962
961
|
assert expected_calls["get_all_offers"] is not None
|
|
963
|
-
expected_calls["get_all_offers"].append((0, 10,
|
|
962
|
+
expected_calls["get_all_offers"].append((0, 10, "CONFIRMED_AT_HEIGHT", False, True, False, False, False))
|
|
964
963
|
test_rpc_clients.wallet_rpc_client.check_log(expected_calls)
|
|
965
964
|
|
|
966
965
|
|
|
967
|
-
def test_take_offer(capsys: object, get_test_cli_clients:
|
|
966
|
+
def test_take_offer(capsys: object, get_test_cli_clients: tuple[TestRpcClients, Path]) -> None:
|
|
968
967
|
test_rpc_clients, root_dir = get_test_cli_clients
|
|
969
968
|
|
|
970
969
|
# set RPC Client
|
|
@@ -973,7 +972,7 @@ def test_take_offer(capsys: object, get_test_cli_clients: Tuple[TestRpcClients,
|
|
|
973
972
|
self,
|
|
974
973
|
offer: Offer,
|
|
975
974
|
tx_config: TXConfig,
|
|
976
|
-
solver: Optional[
|
|
975
|
+
solver: Optional[dict[str, Any]] = None,
|
|
977
976
|
fee: uint64 = uint64(0),
|
|
978
977
|
push: bool = True,
|
|
979
978
|
timelock_info: ConditionValidTimes = ConditionValidTimes(),
|
|
@@ -999,7 +998,7 @@ def test_take_offer(capsys: object, get_test_cli_clients: Tuple[TestRpcClients,
|
|
|
999
998
|
),
|
|
1000
999
|
)
|
|
1001
1000
|
|
|
1002
|
-
inst_rpc_client = TakeOfferRpcClient()
|
|
1001
|
+
inst_rpc_client = TakeOfferRpcClient()
|
|
1003
1002
|
test_rpc_clients.wallet_rpc_client = inst_rpc_client
|
|
1004
1003
|
# these are various things that should be in the output
|
|
1005
1004
|
cat1 = bytes32.from_hexstr("fd6a341ed39c05c31157d5bfea395a0e142398ced24deea1e82f836d7ec2909c")
|
|
@@ -1049,7 +1048,7 @@ def test_take_offer(capsys: object, get_test_cli_clients: Tuple[TestRpcClients,
|
|
|
1049
1048
|
test_rpc_clients.wallet_rpc_client.check_log(expected_calls)
|
|
1050
1049
|
|
|
1051
1050
|
|
|
1052
|
-
def test_cancel_offer(capsys: object, get_test_cli_clients:
|
|
1051
|
+
def test_cancel_offer(capsys: object, get_test_cli_clients: tuple[TestRpcClients, Path]) -> None:
|
|
1053
1052
|
test_rpc_clients, root_dir = get_test_cli_clients
|
|
1054
1053
|
|
|
1055
1054
|
# set RPC Client
|
|
@@ -1084,7 +1083,7 @@ def test_cancel_offer(capsys: object, get_test_cli_clients: Tuple[TestRpcClients
|
|
|
1084
1083
|
self.add_to_log("cancel_offer", (trade_id, tx_config, fee, secure, push, timelock_info))
|
|
1085
1084
|
return CancelOfferResponse([STD_UTX], [STD_TX])
|
|
1086
1085
|
|
|
1087
|
-
inst_rpc_client = CancelOfferRpcClient()
|
|
1086
|
+
inst_rpc_client = CancelOfferRpcClient()
|
|
1088
1087
|
test_rpc_clients.wallet_rpc_client = inst_rpc_client
|
|
1089
1088
|
command_args = [
|
|
1090
1089
|
"wallet",
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from typing import Dict, List
|
|
4
|
-
|
|
5
3
|
import pytest
|
|
6
4
|
|
|
7
5
|
from chia.cmds.check_wallet_db import DerivationPath, Wallet, check_addresses_used_contiguous, check_for_gaps
|
|
@@ -68,7 +66,7 @@ def make_dp(
|
|
|
68
66
|
return DerivationPath(row, fields)
|
|
69
67
|
|
|
70
68
|
|
|
71
|
-
def used_list_to_dp_list(used_list:
|
|
69
|
+
def used_list_to_dp_list(used_list: list[int], wallet_id: int) -> list[DerivationPath]:
|
|
72
70
|
dps = []
|
|
73
71
|
|
|
74
72
|
for index, used in enumerate(used_list):
|
|
@@ -78,14 +76,14 @@ def used_list_to_dp_list(used_list: List[int], wallet_id: int) -> List[Derivatio
|
|
|
78
76
|
|
|
79
77
|
|
|
80
78
|
def test_check_addresses_used_contiguous() -> None:
|
|
81
|
-
ok_used_lists:
|
|
79
|
+
ok_used_lists: list[list[int]] = [
|
|
82
80
|
[],
|
|
83
81
|
[1],
|
|
84
82
|
[0],
|
|
85
83
|
[1, 0],
|
|
86
84
|
]
|
|
87
85
|
|
|
88
|
-
bad_used_lists:
|
|
86
|
+
bad_used_lists: list[list[int]] = [
|
|
89
87
|
[0, 1],
|
|
90
88
|
]
|
|
91
89
|
|
|
@@ -103,9 +101,9 @@ def test_check_addresses_used_contiguous() -> None:
|
|
|
103
101
|
|
|
104
102
|
|
|
105
103
|
def test_check_addresses_used_contiguous_multiple_wallets() -> None:
|
|
106
|
-
multi_used_lists:
|
|
104
|
+
multi_used_lists: list[dict[int, list[int]]] = [{0: [1, 1], 1: [1, 1]}, {0: [0, 0], 1: [1, 1]}]
|
|
107
105
|
for entry in multi_used_lists:
|
|
108
|
-
dp_list:
|
|
106
|
+
dp_list: list[DerivationPath] = []
|
|
109
107
|
for wallet_id, used_list in entry.items():
|
|
110
108
|
dp_list.extend(used_list_to_dp_list(used_list, wallet_id))
|
|
111
109
|
assert [] == check_addresses_used_contiguous(dp_list)
|