chia-blockchain 2.5.0rc1__py3-none-any.whl → 2.5.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- chia/_tests/README.md +1 -1
- chia/_tests/blockchain/blockchain_test_utils.py +24 -26
- chia/_tests/blockchain/test_augmented_chain.py +6 -8
- chia/_tests/blockchain/test_blockchain.py +409 -307
- chia/_tests/blockchain/test_blockchain_transactions.py +56 -75
- chia/_tests/blockchain/test_build_chains.py +11 -13
- chia/_tests/blockchain/test_get_block_generator.py +8 -8
- chia/_tests/blockchain/test_lookup_fork_chain.py +3 -4
- chia/_tests/build-init-files.py +3 -4
- chia/_tests/build-job-matrix.py +9 -9
- chia/_tests/check_sql_statements.py +2 -3
- chia/_tests/clvm/benchmark_costs.py +1 -1
- chia/_tests/clvm/coin_store.py +7 -5
- chia/_tests/clvm/test_chialisp_deserialization.py +8 -8
- chia/_tests/clvm/test_condition_codes.py +2 -2
- chia/_tests/clvm/test_curry_and_treehash.py +2 -4
- chia/_tests/clvm/test_message_conditions.py +184 -0
- chia/_tests/clvm/test_puzzle_compression.py +1 -2
- chia/_tests/clvm/test_puzzle_drivers.py +3 -3
- chia/_tests/clvm/test_puzzles.py +13 -18
- chia/_tests/clvm/test_singletons.py +17 -17
- chia/_tests/clvm/test_spend_sim.py +7 -7
- chia/_tests/cmds/cmd_test_utils.py +42 -45
- chia/_tests/cmds/conftest.py +2 -2
- chia/_tests/cmds/test_click_types.py +21 -16
- chia/_tests/cmds/test_cmd_framework.py +255 -35
- chia/_tests/cmds/test_cmds_util.py +2 -2
- chia/_tests/cmds/test_daemon.py +3 -3
- chia/_tests/cmds/test_dev_gh.py +131 -0
- chia/_tests/cmds/test_farm_cmd.py +1 -2
- chia/_tests/cmds/test_show.py +6 -6
- chia/_tests/cmds/test_tx_config_args.py +2 -1
- chia/_tests/cmds/wallet/test_dao.py +23 -23
- chia/_tests/cmds/wallet/test_did.py +29 -29
- chia/_tests/cmds/wallet/test_nft.py +24 -23
- chia/_tests/cmds/wallet/test_notifications.py +8 -8
- chia/_tests/cmds/wallet/test_tx_decorators.py +3 -3
- chia/_tests/cmds/wallet/test_vcs.py +97 -73
- chia/_tests/cmds/wallet/test_wallet.py +74 -75
- chia/_tests/cmds/wallet/test_wallet_check.py +5 -7
- chia/_tests/conftest.py +153 -38
- chia/_tests/connection_utils.py +7 -6
- chia/_tests/core/cmds/test_beta.py +3 -3
- chia/_tests/core/cmds/test_keys.py +6 -6
- chia/_tests/core/cmds/test_wallet.py +3 -3
- chia/_tests/core/consensus/test_block_creation.py +3 -5
- chia/_tests/core/custom_types/test_coin.py +1 -3
- chia/_tests/core/custom_types/test_spend_bundle.py +3 -4
- chia/_tests/core/daemon/test_daemon.py +58 -58
- chia/_tests/core/daemon/test_keychain_proxy.py +2 -1
- chia/_tests/core/data_layer/conftest.py +4 -3
- chia/_tests/core/data_layer/test_data_cli.py +1 -2
- chia/_tests/core/data_layer/test_data_layer.py +5 -5
- chia/_tests/core/data_layer/test_data_layer_util.py +8 -9
- chia/_tests/core/data_layer/test_data_rpc.py +75 -93
- chia/_tests/core/data_layer/test_data_store.py +38 -37
- chia/_tests/core/data_layer/test_data_store_schema.py +11 -11
- chia/_tests/core/data_layer/util.py +11 -10
- chia/_tests/core/farmer/test_farmer_api.py +6 -4
- chia/_tests/core/full_node/full_sync/test_full_sync.py +5 -10
- chia/_tests/core/full_node/ram_db.py +2 -2
- chia/_tests/core/full_node/stores/test_block_store.py +113 -11
- chia/_tests/core/full_node/stores/test_coin_store.py +37 -28
- chia/_tests/core/full_node/stores/test_full_node_store.py +34 -30
- chia/_tests/core/full_node/stores/test_hint_store.py +3 -4
- chia/_tests/core/full_node/test_address_manager.py +2 -2
- chia/_tests/core/full_node/test_block_height_map.py +1 -1
- chia/_tests/core/full_node/test_conditions.py +10 -12
- chia/_tests/core/full_node/test_full_node.py +2077 -1822
- chia/_tests/core/full_node/test_generator_tools.py +4 -4
- chia/_tests/core/full_node/test_hint_management.py +2 -2
- chia/_tests/core/full_node/test_performance.py +2 -5
- chia/_tests/core/full_node/test_subscriptions.py +4 -4
- chia/_tests/core/full_node/test_tx_processing_queue.py +5 -4
- chia/_tests/core/make_block_generator.py +5 -7
- chia/_tests/core/mempool/test_mempool.py +205 -208
- chia/_tests/core/mempool/test_mempool_fee_protocol.py +5 -5
- chia/_tests/core/mempool/test_mempool_item_queries.py +2 -4
- chia/_tests/core/mempool/test_mempool_manager.py +109 -80
- chia/_tests/core/mempool/test_mempool_performance.py +3 -4
- chia/_tests/core/mempool/test_singleton_fast_forward.py +12 -12
- chia/_tests/core/server/flood.py +6 -4
- chia/_tests/core/server/serve.py +10 -7
- chia/_tests/core/server/test_api_protocol.py +21 -0
- chia/_tests/core/server/test_capabilities.py +3 -5
- chia/_tests/core/server/test_dos.py +15 -16
- chia/_tests/core/server/test_loop.py +14 -10
- chia/_tests/core/server/test_node_discovery.py +1 -2
- chia/_tests/core/server/test_rate_limits.py +156 -44
- chia/_tests/core/server/test_server.py +8 -7
- chia/_tests/core/services/test_services.py +59 -37
- chia/_tests/core/ssl/test_ssl.py +5 -3
- chia/_tests/core/test_cost_calculation.py +5 -6
- chia/_tests/core/test_crawler.py +2 -2
- chia/_tests/core/test_db_conversion.py +5 -4
- chia/_tests/core/test_db_validation.py +6 -5
- chia/_tests/core/test_farmer_harvester_rpc.py +8 -7
- chia/_tests/core/test_filter.py +3 -5
- chia/_tests/core/test_full_node_rpc.py +64 -90
- chia/_tests/core/test_merkle_set.py +10 -10
- chia/_tests/core/test_program.py +2 -4
- chia/_tests/core/test_rpc_util.py +1 -2
- chia/_tests/core/test_seeder.py +124 -12
- chia/_tests/core/util/test_block_cache.py +5 -5
- chia/_tests/core/util/test_cached_bls.py +3 -3
- chia/_tests/core/util/test_config.py +13 -13
- chia/_tests/core/util/test_files.py +2 -2
- chia/_tests/core/util/test_jsonify.py +9 -9
- chia/_tests/core/util/test_keychain.py +13 -5
- chia/_tests/core/util/test_keyring_wrapper.py +6 -5
- chia/_tests/core/util/test_log_exceptions.py +3 -3
- chia/_tests/core/util/test_streamable.py +38 -38
- chia/_tests/db/test_db_wrapper.py +13 -12
- chia/_tests/environments/common.py +2 -2
- chia/_tests/environments/full_node.py +2 -2
- chia/_tests/environments/wallet.py +109 -48
- chia/_tests/farmer_harvester/test_farmer.py +35 -35
- chia/_tests/farmer_harvester/test_farmer_harvester.py +17 -17
- chia/_tests/farmer_harvester/test_filter_prefix_bits.py +6 -5
- chia/_tests/farmer_harvester/test_third_party_harvesters.py +73 -46
- chia/_tests/fee_estimation/test_fee_estimation_integration.py +8 -8
- chia/_tests/fee_estimation/test_fee_estimation_rpc.py +47 -47
- chia/_tests/fee_estimation/test_fee_estimation_unit_tests.py +6 -7
- chia/_tests/fee_estimation/test_mempoolitem_height_added.py +11 -11
- chia/_tests/generator/test_compression.py +13 -30
- chia/_tests/generator/test_generator_types.py +3 -3
- chia/_tests/generator/test_rom.py +7 -9
- chia/_tests/plot_sync/test_delta.py +2 -3
- chia/_tests/plot_sync/test_plot_sync.py +25 -24
- chia/_tests/plot_sync/test_receiver.py +9 -9
- chia/_tests/plot_sync/test_sender.py +1 -1
- chia/_tests/plot_sync/test_sync_simulated.py +27 -26
- chia/_tests/plot_sync/util.py +2 -1
- chia/_tests/plotting/test_plot_manager.py +54 -11
- chia/_tests/plotting/util.py +2 -3
- chia/_tests/pools/test_pool_cli_parsing.py +128 -0
- chia/_tests/pools/test_pool_cmdline.py +993 -15
- chia/_tests/pools/test_pool_config.py +3 -5
- chia/_tests/pools/test_pool_puzzles_lifecycle.py +10 -11
- chia/_tests/pools/test_pool_rpc.py +203 -90
- chia/_tests/pools/test_pool_wallet.py +12 -8
- chia/_tests/pools/test_wallet_pool_store.py +3 -3
- chia/_tests/process_junit.py +16 -17
- chia/_tests/rpc/test_rpc_client.py +59 -2
- chia/_tests/rpc/test_rpc_server.py +183 -0
- chia/_tests/simulation/test_simulation.py +5 -5
- chia/_tests/simulation/test_simulator.py +8 -10
- chia/_tests/simulation/test_start_simulator.py +5 -4
- chia/_tests/timelord/test_new_peak.py +19 -19
- chia/_tests/tools/test_run_block.py +1 -2
- chia/_tests/tools/test_virtual_project.py +591 -0
- chia/_tests/util/benchmark_cost.py +9 -9
- chia/_tests/util/benchmarks.py +1 -2
- chia/_tests/util/blockchain.py +12 -11
- chia/_tests/util/blockchain_mock.py +15 -15
- chia/_tests/util/build_network_protocol_files.py +12 -12
- chia/_tests/util/db_connection.py +3 -2
- chia/_tests/util/full_sync.py +14 -6
- chia/_tests/util/gen_ssl_certs.py +4 -5
- chia/_tests/util/generator_tools_testing.py +5 -7
- chia/_tests/util/get_name_puzzle_conditions.py +52 -0
- chia/_tests/util/key_tool.py +2 -3
- chia/_tests/util/misc.py +59 -106
- chia/_tests/util/network_protocol_data.py +7 -9
- chia/_tests/util/protocol_messages_json.py +112 -111
- chia/_tests/util/rpc.py +3 -0
- chia/_tests/util/run_block.py +16 -16
- chia/_tests/util/setup_nodes.py +25 -23
- chia/{clvm → _tests/util}/spend_sim.py +59 -55
- chia/_tests/util/split_managers.py +12 -9
- chia/_tests/util/temp_file.py +1 -1
- chia/_tests/util/test_action_scope.py +2 -1
- chia/_tests/util/test_async_pool.py +8 -8
- chia/_tests/util/test_build_job_matrix.py +2 -3
- chia/_tests/util/test_condition_tools.py +4 -6
- chia/_tests/util/test_config.py +5 -5
- chia/_tests/util/test_dump_keyring.py +1 -1
- chia/_tests/util/test_full_block_utils.py +19 -11
- chia/_tests/util/test_limited_semaphore.py +4 -3
- chia/_tests/util/test_logging_filter.py +2 -3
- chia/_tests/util/test_misc.py +29 -28
- chia/_tests/util/test_network.py +32 -31
- chia/_tests/util/test_network_protocol_files.py +2 -3
- chia/_tests/util/test_network_protocol_json.py +1 -0
- chia/_tests/util/test_network_protocol_test.py +18 -19
- chia/_tests/util/test_paginator.py +3 -4
- chia/_tests/util/test_pprint.py +1 -1
- chia/_tests/util/test_priority_mutex.py +18 -17
- chia/_tests/util/test_recursive_replace.py +2 -2
- chia/_tests/util/test_testnet_overrides.py +3 -3
- chia/_tests/util/test_timing.py +1 -1
- chia/_tests/util/test_trusted_peer.py +2 -2
- chia/_tests/util/time_out_assert.py +43 -6
- chia/_tests/wallet/cat_wallet/test_cat_lifecycle.py +13 -13
- chia/_tests/wallet/cat_wallet/test_cat_outer_puzzle.py +1 -1
- chia/_tests/wallet/cat_wallet/test_cat_wallet.py +117 -29
- chia/_tests/wallet/cat_wallet/test_offer_lifecycle.py +15 -15
- chia/_tests/wallet/cat_wallet/test_trades.py +50 -28
- chia/_tests/wallet/clawback/test_clawback_decorator.py +3 -5
- chia/_tests/wallet/clawback/test_clawback_lifecycle.py +6 -6
- chia/_tests/wallet/clawback/test_clawback_metadata.py +1 -2
- chia/_tests/wallet/conftest.py +135 -74
- chia/_tests/wallet/dao_wallet/test_dao_clvm.py +25 -17
- chia/_tests/wallet/dao_wallet/test_dao_wallets.py +75 -75
- chia/_tests/wallet/db_wallet/test_db_graftroot.py +10 -12
- chia/_tests/wallet/db_wallet/test_dl_offers.py +6 -6
- chia/_tests/wallet/db_wallet/test_dl_wallet.py +18 -18
- chia/_tests/wallet/did_wallet/test_did.py +1277 -474
- chia/_tests/wallet/nft_wallet/test_nft_1_offers.py +12 -11
- chia/_tests/wallet/nft_wallet/test_nft_bulk_mint.py +115 -105
- chia/_tests/wallet/nft_wallet/test_nft_lifecycle.py +6 -7
- chia/_tests/wallet/nft_wallet/test_nft_offers.py +16 -16
- chia/_tests/wallet/nft_wallet/test_nft_puzzles.py +3 -3
- chia/_tests/wallet/nft_wallet/test_nft_wallet.py +38 -12
- chia/_tests/wallet/nft_wallet/test_ownership_outer_puzzle.py +1 -1
- chia/_tests/wallet/rpc/test_dl_wallet_rpc.py +31 -33
- chia/_tests/wallet/rpc/test_wallet_rpc.py +218 -171
- chia/_tests/wallet/simple_sync/test_simple_sync_protocol.py +36 -37
- chia/_tests/wallet/sync/test_wallet_sync.py +241 -78
- chia/_tests/wallet/test_address_type.py +20 -20
- chia/_tests/wallet/test_clvm_streamable.py +5 -5
- chia/_tests/wallet/test_coin_management.py +354 -0
- chia/_tests/wallet/test_coin_selection.py +34 -35
- chia/_tests/wallet/test_conditions.py +28 -16
- chia/_tests/wallet/test_debug_spend_bundle.py +156 -14
- chia/_tests/wallet/test_new_wallet_protocol.py +29 -31
- chia/_tests/wallet/test_nft_store.py +1 -2
- chia/_tests/wallet/test_notifications.py +2 -2
- chia/_tests/wallet/test_offer_parsing_performance.py +1 -1
- chia/_tests/wallet/test_puzzle_store.py +2 -3
- chia/_tests/wallet/test_sign_coin_spends.py +3 -3
- chia/_tests/wallet/test_signer_protocol.py +33 -34
- chia/_tests/wallet/test_singleton_lifecycle_fast.py +29 -29
- chia/_tests/wallet/test_taproot.py +1 -1
- chia/_tests/wallet/test_transaction_store.py +23 -19
- chia/_tests/wallet/test_util.py +36 -32
- chia/_tests/wallet/test_wallet.py +37 -37
- chia/_tests/wallet/test_wallet_action_scope.py +8 -8
- chia/_tests/wallet/test_wallet_blockchain.py +4 -6
- chia/_tests/wallet/test_wallet_coin_store.py +34 -34
- chia/_tests/wallet/test_wallet_node.py +69 -72
- chia/_tests/wallet/test_wallet_retry.py +3 -3
- chia/_tests/wallet/test_wallet_state_manager.py +12 -5
- chia/_tests/wallet/test_wallet_trade_store.py +2 -2
- chia/_tests/wallet/test_wallet_utils.py +5 -4
- chia/_tests/wallet/vc_wallet/test_cr_outer_puzzle.py +3 -3
- chia/_tests/wallet/vc_wallet/test_vc_lifecycle.py +18 -18
- chia/_tests/wallet/vc_wallet/test_vc_wallet.py +69 -40
- chia/_tests/wallet/wallet_block_tools.py +27 -27
- chia/_tests/weight_proof/test_weight_proof.py +30 -30
- chia/apis.py +19 -0
- chia/cmds/beta.py +8 -7
- chia/cmds/beta_funcs.py +15 -11
- chia/cmds/check_wallet_db.py +29 -27
- chia/cmds/chia.py +17 -9
- chia/cmds/cmd_classes.py +87 -79
- chia/cmds/cmd_helpers.py +242 -0
- chia/cmds/cmds_util.py +56 -66
- chia/cmds/coin_funcs.py +168 -153
- chia/cmds/coins.py +156 -194
- chia/cmds/configure.py +4 -3
- chia/cmds/dao.py +89 -33
- chia/cmds/dao_funcs.py +55 -33
- chia/cmds/data.py +7 -6
- chia/cmds/data_funcs.py +26 -21
- chia/cmds/db.py +4 -3
- chia/cmds/db_backup_func.py +2 -2
- chia/cmds/db_upgrade_func.py +3 -3
- chia/cmds/db_validate_func.py +2 -2
- chia/cmds/dev.py +2 -0
- chia/cmds/farm.py +18 -5
- chia/cmds/farm_funcs.py +17 -24
- chia/cmds/gh.py +275 -0
- chia/cmds/init.py +4 -11
- chia/cmds/init_funcs.py +9 -9
- chia/cmds/installers.py +5 -3
- chia/cmds/keys.py +56 -39
- chia/cmds/keys_funcs.py +30 -31
- chia/cmds/netspace.py +6 -3
- chia/cmds/netspace_funcs.py +3 -2
- chia/cmds/param_types.py +16 -6
- chia/cmds/passphrase.py +8 -7
- chia/cmds/passphrase_funcs.py +7 -61
- chia/cmds/peer.py +2 -1
- chia/cmds/peer_funcs.py +5 -5
- chia/cmds/plotnft.py +207 -153
- chia/cmds/plotnft_funcs.py +205 -174
- chia/cmds/plots.py +14 -6
- chia/cmds/plotters.py +2 -1
- chia/cmds/rpc.py +48 -28
- chia/cmds/show.py +2 -1
- chia/cmds/show_funcs.py +7 -6
- chia/cmds/signer.py +50 -58
- chia/cmds/sim.py +22 -14
- chia/cmds/sim_funcs.py +11 -11
- chia/cmds/start.py +3 -3
- chia/cmds/start_funcs.py +9 -12
- chia/cmds/stop.py +4 -3
- chia/cmds/units.py +1 -3
- chia/cmds/wallet.py +252 -96
- chia/cmds/wallet_funcs.py +217 -143
- chia/consensus/block_body_validation.py +133 -86
- chia/consensus/block_creation.py +42 -21
- chia/consensus/block_header_validation.py +32 -37
- chia/consensus/block_record.py +1 -2
- chia/consensus/blockchain.py +167 -180
- chia/consensus/blockchain_interface.py +10 -10
- chia/consensus/constants.py +2 -2
- chia/consensus/default_constants.py +3 -4
- chia/consensus/difficulty_adjustment.py +5 -5
- chia/consensus/find_fork_point.py +5 -5
- chia/consensus/full_block_to_block_record.py +4 -4
- chia/consensus/get_block_challenge.py +2 -2
- chia/consensus/get_block_generator.py +4 -3
- chia/consensus/multiprocess_validation.py +207 -304
- chia/consensus/vdf_info_computation.py +3 -3
- chia/daemon/client.py +46 -27
- chia/daemon/keychain_proxy.py +10 -9
- chia/daemon/keychain_server.py +18 -18
- chia/daemon/server.py +103 -113
- chia/daemon/windows_signal.py +2 -2
- chia/data_layer/data_layer.py +64 -76
- chia/data_layer/data_layer_api.py +8 -0
- chia/data_layer/data_layer_errors.py +3 -3
- chia/data_layer/data_layer_server.py +2 -2
- chia/data_layer/data_layer_util.py +71 -71
- chia/data_layer/data_layer_wallet.py +63 -67
- chia/data_layer/data_store.py +72 -72
- chia/data_layer/dl_wallet_store.py +10 -10
- chia/data_layer/download_data.py +5 -5
- chia/data_layer/s3_plugin_service.py +9 -9
- chia/data_layer/util/benchmark.py +0 -1
- chia/data_layer/util/plugin.py +2 -3
- chia/farmer/farmer.py +46 -43
- chia/farmer/farmer_api.py +27 -21
- chia/full_node/block_height_map.py +6 -6
- chia/full_node/block_store.py +41 -35
- chia/full_node/coin_store.py +42 -41
- chia/full_node/fee_estimate.py +2 -2
- chia/full_node/fee_estimation.py +1 -2
- chia/full_node/fee_history.py +5 -6
- chia/full_node/fee_tracker.py +24 -24
- chia/full_node/full_node.py +574 -300
- chia/full_node/full_node_api.py +181 -130
- chia/full_node/full_node_store.py +43 -43
- chia/full_node/hint_management.py +4 -4
- chia/full_node/hint_store.py +9 -10
- chia/full_node/mempool.py +25 -19
- chia/full_node/mempool_check_conditions.py +11 -42
- chia/full_node/mempool_manager.py +48 -53
- chia/full_node/pending_tx_cache.py +9 -9
- chia/full_node/subscriptions.py +23 -24
- chia/full_node/sync_store.py +8 -7
- chia/full_node/tx_processing_queue.py +3 -3
- chia/full_node/util/__init__.py +0 -0
- chia/full_node/weight_proof.py +79 -78
- chia/harvester/harvester.py +9 -8
- chia/harvester/harvester_api.py +19 -13
- chia/introducer/introducer.py +7 -5
- chia/introducer/introducer_api.py +9 -3
- chia/legacy/keyring.py +6 -5
- chia/plot_sync/delta.py +8 -8
- chia/plot_sync/receiver.py +12 -11
- chia/plot_sync/sender.py +15 -12
- chia/plotters/bladebit.py +12 -12
- chia/plotters/chiapos.py +2 -2
- chia/plotters/madmax.py +8 -8
- chia/plotters/plotters.py +6 -6
- chia/plotters/plotters_util.py +6 -4
- chia/plotting/cache.py +8 -7
- chia/plotting/check_plots.py +8 -8
- chia/plotting/create_plots.py +6 -6
- chia/plotting/manager.py +22 -22
- chia/plotting/util.py +31 -19
- chia/pools/pool_config.py +7 -7
- chia/pools/pool_puzzles.py +16 -16
- chia/pools/pool_wallet.py +64 -57
- chia/pools/pool_wallet_info.py +3 -3
- chia/protocols/full_node_protocol.py +3 -3
- chia/protocols/harvester_protocol.py +12 -12
- chia/protocols/introducer_protocol.py +1 -2
- chia/protocols/protocol_message_types.py +4 -4
- chia/protocols/protocol_state_machine.py +2 -2
- chia/protocols/protocol_timing.py +1 -0
- chia/protocols/shared_protocol.py +3 -3
- chia/protocols/timelord_protocol.py +2 -2
- chia/protocols/wallet_protocol.py +33 -33
- chia/rpc/crawler_rpc_api.py +12 -7
- chia/rpc/data_layer_rpc_api.py +49 -44
- chia/rpc/data_layer_rpc_client.py +41 -41
- chia/rpc/data_layer_rpc_util.py +7 -11
- chia/rpc/farmer_rpc_api.py +32 -27
- chia/rpc/farmer_rpc_client.py +14 -14
- chia/rpc/full_node_rpc_api.py +53 -48
- chia/rpc/full_node_rpc_client.py +30 -30
- chia/rpc/harvester_rpc_api.py +16 -11
- chia/rpc/harvester_rpc_client.py +6 -6
- chia/rpc/rpc_client.py +34 -14
- chia/rpc/rpc_server.py +117 -43
- chia/rpc/timelord_rpc_api.py +9 -4
- chia/rpc/util.py +11 -211
- chia/rpc/wallet_request_types.py +276 -60
- chia/rpc/wallet_rpc_api.py +563 -399
- chia/rpc/wallet_rpc_client.py +220 -250
- chia/seeder/crawl_store.py +6 -8
- chia/seeder/crawler.py +23 -36
- chia/seeder/crawler_api.py +28 -22
- chia/seeder/dns_server.py +99 -50
- chia/seeder/start_crawler.py +13 -9
- chia/server/address_manager.py +19 -19
- chia/server/address_manager_store.py +17 -17
- chia/server/api_protocol.py +106 -1
- chia/server/capabilities.py +3 -3
- chia/server/chia_policy.py +17 -16
- chia/server/introducer_peers.py +3 -3
- chia/server/node_discovery.py +34 -38
- chia/server/rate_limit_numbers.py +26 -16
- chia/server/rate_limits.py +67 -27
- chia/server/server.py +52 -31
- chia/server/signal_handlers.py +6 -3
- chia/server/ssl_context.py +5 -5
- chia/server/start_data_layer.py +37 -23
- chia/server/start_farmer.py +28 -16
- chia/server/start_full_node.py +29 -23
- chia/server/start_harvester.py +28 -15
- chia/server/start_introducer.py +27 -15
- chia/server/start_service.py +17 -29
- chia/server/start_timelord.py +25 -18
- chia/server/start_wallet.py +22 -18
- chia/server/upnp.py +4 -3
- chia/server/ws_connection.py +68 -54
- chia/simulator/add_blocks_in_batches.py +54 -0
- chia/simulator/block_tools.py +65 -64
- chia/simulator/full_node_simulator.py +66 -74
- chia/simulator/setup_services.py +10 -9
- chia/simulator/simulator_full_node_rpc_api.py +12 -14
- chia/simulator/simulator_full_node_rpc_client.py +3 -5
- chia/simulator/simulator_test_tools.py +8 -7
- chia/simulator/socket.py +1 -4
- chia/simulator/ssl_certs.py +5 -5
- chia/simulator/ssl_certs_1.py +2 -4
- chia/simulator/ssl_certs_10.py +2 -4
- chia/simulator/ssl_certs_2.py +2 -4
- chia/simulator/ssl_certs_3.py +2 -4
- chia/simulator/ssl_certs_4.py +2 -4
- chia/simulator/ssl_certs_5.py +2 -4
- chia/simulator/ssl_certs_6.py +2 -4
- chia/simulator/ssl_certs_7.py +2 -4
- chia/simulator/ssl_certs_8.py +2 -4
- chia/simulator/ssl_certs_9.py +2 -4
- chia/simulator/start_simulator.py +14 -6
- chia/simulator/wallet_tools.py +21 -20
- chia/ssl/create_ssl.py +11 -11
- chia/timelord/iters_from_block.py +2 -2
- chia/timelord/timelord.py +57 -33
- chia/timelord/timelord_api.py +12 -6
- chia/timelord/timelord_launcher.py +10 -8
- chia/timelord/timelord_state.py +5 -5
- chia/types/block_protocol.py +2 -2
- chia/types/blockchain_format/coin.py +3 -3
- chia/types/blockchain_format/program.py +17 -18
- chia/types/blockchain_format/tree_hash.py +9 -9
- chia/types/coin_spend.py +8 -8
- chia/types/condition_with_args.py +1 -2
- chia/types/eligible_coin_spends.py +16 -15
- chia/types/generator_types.py +1 -2
- chia/types/internal_mempool_item.py +1 -2
- chia/types/mempool_item.py +7 -7
- chia/types/mempool_submission_status.py +2 -2
- chia/types/peer_info.py +1 -1
- chia/types/spend_bundle.py +1 -2
- chia/types/transaction_queue_entry.py +2 -2
- chia/types/unfinished_header_block.py +2 -2
- chia/types/validation_state.py +14 -0
- chia/types/weight_proof.py +5 -6
- chia/util/action_scope.py +8 -8
- chia/util/async_pool.py +6 -4
- chia/util/augmented_chain.py +13 -9
- chia/util/batches.py +5 -2
- chia/util/bech32m.py +14 -11
- chia/util/beta_metrics.py +5 -4
- chia/util/block_cache.py +5 -5
- chia/util/byte_types.py +2 -0
- chia/util/check_fork_next_block.py +3 -2
- chia/util/chia_logging.py +41 -21
- chia/util/collection.py +3 -3
- chia/util/condition_tools.py +18 -18
- chia/util/config.py +26 -25
- chia/util/cpu.py +2 -0
- chia/util/db_synchronous.py +2 -0
- chia/util/db_version.py +2 -0
- chia/util/db_wrapper.py +13 -10
- chia/util/default_root.py +17 -0
- chia/util/dump_keyring.py +6 -6
- chia/util/errors.py +5 -3
- chia/util/file_keyring.py +22 -33
- chia/util/files.py +2 -0
- chia/util/full_block_utils.py +31 -7
- chia/util/generator_tools.py +18 -8
- chia/util/hash.py +3 -1
- chia/util/initial-config.yaml +19 -0
- chia/util/inline_executor.py +2 -0
- chia/util/ip_address.py +39 -0
- chia/util/json_util.py +0 -4
- chia/util/keychain.py +27 -24
- chia/util/keyring_wrapper.py +65 -4
- chia/util/limited_semaphore.py +3 -1
- chia/util/lock.py +4 -2
- chia/util/log_exceptions.py +5 -2
- chia/util/logging.py +3 -1
- chia/util/lru_cache.py +2 -0
- chia/util/math.py +4 -4
- chia/util/network.py +15 -73
- chia/util/paginator.py +3 -1
- chia/util/path.py +2 -0
- chia/util/permissions.py +3 -2
- chia/util/prev_transaction_block.py +1 -3
- chia/util/priority_mutex.py +6 -3
- chia/util/profiler.py +7 -4
- chia/util/recursive_replace.py +2 -0
- chia/util/safe_cancel_task.py +2 -0
- chia/util/service_groups.py +2 -2
- chia/util/setproctitle.py +2 -0
- chia/util/significant_bits.py +2 -0
- chia/util/ssl_check.py +11 -11
- chia/util/streamable.py +44 -56
- chia/util/task_referencer.py +59 -0
- chia/util/task_timing.py +22 -18
- chia/util/timing.py +4 -1
- chia/util/vdf_prover.py +2 -3
- chia/util/virtual_project_analysis.py +540 -0
- chia/util/ws_message.py +6 -6
- chia/wallet/cat_wallet/cat_info.py +3 -3
- chia/wallet/cat_wallet/cat_outer_puzzle.py +3 -3
- chia/wallet/cat_wallet/cat_utils.py +5 -4
- chia/wallet/cat_wallet/cat_wallet.py +56 -70
- chia/wallet/cat_wallet/dao_cat_info.py +3 -3
- chia/wallet/cat_wallet/dao_cat_wallet.py +18 -18
- chia/wallet/cat_wallet/lineage_store.py +2 -2
- chia/wallet/coin_selection.py +15 -15
- chia/wallet/conditions.py +257 -71
- chia/wallet/dao_wallet/dao_info.py +4 -4
- chia/wallet/dao_wallet/dao_utils.py +43 -42
- chia/wallet/dao_wallet/dao_wallet.py +66 -68
- chia/wallet/db_wallet/db_wallet_puzzles.py +12 -8
- chia/wallet/derive_keys.py +11 -11
- chia/wallet/did_wallet/did_info.py +3 -3
- chia/wallet/did_wallet/did_wallet.py +56 -47
- chia/wallet/did_wallet/did_wallet_puzzles.py +7 -6
- chia/wallet/lineage_proof.py +4 -4
- chia/wallet/nft_wallet/metadata_outer_puzzle.py +2 -2
- chia/wallet/nft_wallet/nft_info.py +4 -4
- chia/wallet/nft_wallet/nft_puzzles.py +16 -16
- chia/wallet/nft_wallet/nft_wallet.py +90 -89
- chia/wallet/nft_wallet/ownership_outer_puzzle.py +2 -2
- chia/wallet/nft_wallet/singleton_outer_puzzle.py +2 -2
- chia/wallet/nft_wallet/transfer_program_puzzle.py +2 -2
- chia/wallet/nft_wallet/uncurry_nft.py +2 -2
- chia/wallet/notification_manager.py +5 -5
- chia/wallet/notification_store.py +6 -6
- chia/wallet/outer_puzzles.py +2 -2
- chia/wallet/payment.py +4 -5
- chia/wallet/puzzle_drivers.py +4 -4
- chia/wallet/puzzles/clawback/drivers.py +5 -5
- chia/wallet/puzzles/clawback/puzzle_decorator.py +7 -7
- chia/wallet/puzzles/load_clvm.py +2 -3
- chia/wallet/puzzles/p2_conditions.py +1 -2
- chia/wallet/puzzles/p2_delegated_conditions.py +1 -2
- chia/wallet/puzzles/p2_delegated_puzzle.py +2 -3
- chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.py +3 -4
- chia/wallet/puzzles/p2_m_of_n_delegate_direct.py +1 -2
- chia/wallet/puzzles/p2_puzzle_hash.py +1 -2
- chia/wallet/puzzles/puzzle_utils.py +7 -7
- chia/wallet/puzzles/singleton_top_layer.py +6 -5
- chia/wallet/puzzles/singleton_top_layer_v1_1.py +6 -5
- chia/wallet/puzzles/tails.py +34 -30
- chia/wallet/signer_protocol.py +7 -8
- chia/wallet/singleton.py +4 -4
- chia/wallet/trade_manager.py +155 -141
- chia/wallet/trade_record.py +5 -5
- chia/wallet/trading/offer.py +100 -101
- chia/wallet/trading/trade_store.py +14 -14
- chia/wallet/transaction_record.py +31 -16
- chia/wallet/util/address_type.py +4 -4
- chia/wallet/util/blind_signer_tl.py +8 -12
- chia/wallet/util/clvm_streamable.py +15 -15
- chia/wallet/util/compute_hints.py +5 -5
- chia/wallet/util/compute_memos.py +4 -6
- chia/wallet/util/curry_and_treehash.py +3 -2
- chia/wallet/util/debug_spend_bundle.py +6 -8
- chia/wallet/util/merkle_tree.py +10 -10
- chia/wallet/util/merkle_utils.py +10 -10
- chia/wallet/util/new_peak_queue.py +3 -3
- chia/wallet/util/peer_request_cache.py +8 -8
- chia/{util → wallet/util}/pprint.py +2 -3
- chia/wallet/util/puzzle_compression.py +3 -4
- chia/wallet/util/puzzle_decorator.py +10 -10
- chia/wallet/util/query_filter.py +9 -10
- chia/wallet/util/tx_config.py +12 -12
- chia/wallet/util/wallet_sync_utils.py +24 -21
- chia/wallet/util/wallet_types.py +9 -2
- chia/wallet/vc_wallet/cr_cat_drivers.py +28 -27
- chia/wallet/vc_wallet/cr_cat_wallet.py +42 -40
- chia/wallet/vc_wallet/cr_outer_puzzle.py +4 -4
- chia/wallet/vc_wallet/vc_drivers.py +16 -16
- chia/wallet/vc_wallet/vc_store.py +9 -9
- chia/wallet/vc_wallet/vc_wallet.py +35 -35
- chia/wallet/wallet.py +54 -54
- chia/wallet/wallet_action_scope.py +14 -13
- chia/wallet/wallet_blockchain.py +10 -10
- chia/wallet/wallet_coin_record.py +2 -2
- chia/wallet/wallet_coin_store.py +10 -10
- chia/wallet/wallet_info.py +1 -2
- chia/wallet/wallet_interested_store.py +5 -5
- chia/wallet/wallet_nft_store.py +6 -6
- chia/wallet/wallet_node.py +72 -76
- chia/wallet/wallet_node_api.py +33 -27
- chia/wallet/wallet_pool_store.py +1 -2
- chia/wallet/wallet_protocol.py +15 -15
- chia/wallet/wallet_puzzle_store.py +35 -4
- chia/wallet/wallet_retry_store.py +2 -2
- chia/wallet/wallet_singleton_store.py +10 -9
- chia/wallet/wallet_spend_bundle.py +4 -20
- chia/wallet/wallet_state_manager.py +223 -224
- chia/wallet/wallet_transaction_store.py +44 -18
- chia/wallet/wallet_user_store.py +2 -2
- chia/wallet/wallet_weight_proof_handler.py +2 -2
- {chia_blockchain-2.5.0rc1.dist-info → chia_blockchain-2.5.1.dist-info}/LICENSE +1 -1
- {chia_blockchain-2.5.0rc1.dist-info → chia_blockchain-2.5.1.dist-info}/METADATA +67 -72
- chia_blockchain-2.5.1.dist-info/RECORD +1042 -0
- {chia_blockchain-2.5.0rc1.dist-info → chia_blockchain-2.5.1.dist-info}/WHEEL +1 -1
- mozilla-ca/cacert.pem +32 -87
- chia/_tests/cmds/wallet/test_coins.py +0 -195
- chia/consensus/block_root_validation.py +0 -46
- chia/util/api_decorators.py +0 -89
- chia_blockchain-2.5.0rc1.dist-info/RECORD +0 -1028
- {chia_blockchain-2.5.0rc1.dist-info → chia_blockchain-2.5.1.dist-info}/entry_points.txt +0 -0
|
@@ -1,23 +1,24 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import logging
|
|
4
|
-
from typing import Tuple
|
|
5
4
|
|
|
6
5
|
import pytest
|
|
7
6
|
from clvm.casts import int_to_bytes
|
|
8
7
|
|
|
9
8
|
from chia._tests.blockchain.blockchain_test_utils import _validate_and_add_block
|
|
10
9
|
from chia._tests.util.generator_tools_testing import run_and_get_removals_and_additions
|
|
10
|
+
from chia.consensus.blockchain import AddBlockResult
|
|
11
11
|
from chia.full_node.full_node_api import FullNodeAPI
|
|
12
12
|
from chia.protocols import wallet_protocol
|
|
13
13
|
from chia.server.server import ChiaServer
|
|
14
|
+
from chia.simulator.add_blocks_in_batches import add_blocks_in_batches
|
|
14
15
|
from chia.simulator.block_tools import BlockTools, test_constants
|
|
15
16
|
from chia.simulator.wallet_tools import WalletTool
|
|
16
17
|
from chia.types.blockchain_format.sized_bytes import bytes32
|
|
17
18
|
from chia.types.condition_opcodes import ConditionOpcode
|
|
18
19
|
from chia.types.condition_with_args import ConditionWithArgs
|
|
19
20
|
from chia.types.spend_bundle import SpendBundle, estimate_fees
|
|
20
|
-
from chia.util.errors import
|
|
21
|
+
from chia.util.errors import Err
|
|
21
22
|
from chia.util.ints import uint32, uint64
|
|
22
23
|
from chia.wallet.conditions import AssertCoinAnnouncement, AssertPuzzleAnnouncement
|
|
23
24
|
|
|
@@ -32,7 +33,7 @@ log = logging.getLogger(__name__)
|
|
|
32
33
|
class TestBlockchainTransactions:
|
|
33
34
|
@pytest.mark.anyio
|
|
34
35
|
async def test_basic_blockchain_tx(
|
|
35
|
-
self, two_nodes:
|
|
36
|
+
self, two_nodes: tuple[FullNodeAPI, FullNodeAPI, ChiaServer, ChiaServer, BlockTools]
|
|
36
37
|
) -> None:
|
|
37
38
|
num_blocks = 10
|
|
38
39
|
wallet_a = WALLET_A
|
|
@@ -44,8 +45,7 @@ class TestBlockchainTransactions:
|
|
|
44
45
|
num_blocks, farmer_reward_puzzle_hash=coinbase_puzzlehash, guarantee_transaction_block=True
|
|
45
46
|
)
|
|
46
47
|
|
|
47
|
-
|
|
48
|
-
await full_node_api_1.full_node.add_block(block, None)
|
|
48
|
+
await add_blocks_in_batches(blocks, full_node_api_1.full_node)
|
|
49
49
|
|
|
50
50
|
spend_block = blocks[2]
|
|
51
51
|
spend_coin = None
|
|
@@ -98,7 +98,7 @@ class TestBlockchainTransactions:
|
|
|
98
98
|
|
|
99
99
|
@pytest.mark.anyio
|
|
100
100
|
async def test_validate_blockchain_with_double_spend(
|
|
101
|
-
self, two_nodes:
|
|
101
|
+
self, two_nodes: tuple[FullNodeAPI, FullNodeAPI, ChiaServer, ChiaServer, BlockTools]
|
|
102
102
|
) -> None:
|
|
103
103
|
num_blocks = 5
|
|
104
104
|
wallet_a = WALLET_A
|
|
@@ -110,8 +110,7 @@ class TestBlockchainTransactions:
|
|
|
110
110
|
num_blocks, farmer_reward_puzzle_hash=coinbase_puzzlehash, guarantee_transaction_block=True
|
|
111
111
|
)
|
|
112
112
|
|
|
113
|
-
|
|
114
|
-
await full_node_api_1.full_node.add_block(block)
|
|
113
|
+
await add_blocks_in_batches(blocks, full_node_api_1.full_node)
|
|
115
114
|
|
|
116
115
|
spend_block = blocks[2]
|
|
117
116
|
spend_coin = None
|
|
@@ -138,7 +137,7 @@ class TestBlockchainTransactions:
|
|
|
138
137
|
|
|
139
138
|
@pytest.mark.anyio
|
|
140
139
|
async def test_validate_blockchain_duplicate_output(
|
|
141
|
-
self, two_nodes:
|
|
140
|
+
self, two_nodes: tuple[FullNodeAPI, FullNodeAPI, ChiaServer, ChiaServer, BlockTools]
|
|
142
141
|
) -> None:
|
|
143
142
|
num_blocks = 3
|
|
144
143
|
wallet_a = WALLET_A
|
|
@@ -150,8 +149,7 @@ class TestBlockchainTransactions:
|
|
|
150
149
|
num_blocks, farmer_reward_puzzle_hash=coinbase_puzzlehash, guarantee_transaction_block=True
|
|
151
150
|
)
|
|
152
151
|
|
|
153
|
-
|
|
154
|
-
await full_node_api_1.full_node.add_block(block)
|
|
152
|
+
await add_blocks_in_batches(blocks, full_node_api_1.full_node)
|
|
155
153
|
|
|
156
154
|
spend_block = blocks[2]
|
|
157
155
|
|
|
@@ -178,7 +176,7 @@ class TestBlockchainTransactions:
|
|
|
178
176
|
|
|
179
177
|
@pytest.mark.anyio
|
|
180
178
|
async def test_validate_blockchain_with_reorg_double_spend(
|
|
181
|
-
self, two_nodes:
|
|
179
|
+
self, two_nodes: tuple[FullNodeAPI, FullNodeAPI, ChiaServer, ChiaServer, BlockTools]
|
|
182
180
|
) -> None:
|
|
183
181
|
num_blocks = 10
|
|
184
182
|
wallet_a = WALLET_A
|
|
@@ -189,8 +187,7 @@ class TestBlockchainTransactions:
|
|
|
189
187
|
num_blocks, farmer_reward_puzzle_hash=coinbase_puzzlehash, guarantee_transaction_block=True
|
|
190
188
|
)
|
|
191
189
|
|
|
192
|
-
|
|
193
|
-
await full_node_api_1.full_node.add_block(block)
|
|
190
|
+
await add_blocks_in_batches(blocks, full_node_api_1.full_node)
|
|
194
191
|
|
|
195
192
|
spend_block = blocks[2]
|
|
196
193
|
|
|
@@ -209,8 +206,7 @@ class TestBlockchainTransactions:
|
|
|
209
206
|
transaction_data=spend_bundle,
|
|
210
207
|
)
|
|
211
208
|
# Move chain to height 10, with a spend at height 10
|
|
212
|
-
|
|
213
|
-
await full_node_api_1.full_node.add_block(block)
|
|
209
|
+
await add_blocks_in_batches(blocks_spend, full_node_api_1.full_node)
|
|
214
210
|
|
|
215
211
|
# Reorg at height 5, add up to and including height 12
|
|
216
212
|
new_blocks = bt.get_consecutive_blocks(
|
|
@@ -221,8 +217,7 @@ class TestBlockchainTransactions:
|
|
|
221
217
|
seed=b"another seed",
|
|
222
218
|
)
|
|
223
219
|
|
|
224
|
-
|
|
225
|
-
await full_node_api_1.full_node.add_block(block)
|
|
220
|
+
await add_blocks_in_batches(new_blocks[-7:], full_node_api_1.full_node)
|
|
226
221
|
|
|
227
222
|
# Spend the same coin in the new reorg chain at height 13
|
|
228
223
|
new_blocks = bt.get_consecutive_blocks(
|
|
@@ -257,8 +252,9 @@ class TestBlockchainTransactions:
|
|
|
257
252
|
transaction_data=spend_bundle,
|
|
258
253
|
seed=b"spend at 12 is ok",
|
|
259
254
|
)
|
|
260
|
-
|
|
261
|
-
|
|
255
|
+
await _validate_and_add_block(
|
|
256
|
+
full_node_api_1.full_node.blockchain, new_blocks_reorg[-1], expected_result=AddBlockResult.ADDED_AS_ORPHAN
|
|
257
|
+
)
|
|
262
258
|
|
|
263
259
|
# Spend at height 13 is also OK (same height)
|
|
264
260
|
new_blocks_reorg = bt.get_consecutive_blocks(
|
|
@@ -269,8 +265,9 @@ class TestBlockchainTransactions:
|
|
|
269
265
|
transaction_data=spend_bundle,
|
|
270
266
|
seed=b"spend at 13 is ok",
|
|
271
267
|
)
|
|
272
|
-
|
|
273
|
-
|
|
268
|
+
await _validate_and_add_block(
|
|
269
|
+
full_node_api_1.full_node.blockchain, new_blocks_reorg[-1], expected_result=AddBlockResult.ADDED_AS_ORPHAN
|
|
270
|
+
)
|
|
274
271
|
|
|
275
272
|
# Spend at height 14 is not OK (already spend)
|
|
276
273
|
new_blocks_reorg = bt.get_consecutive_blocks(
|
|
@@ -281,13 +278,16 @@ class TestBlockchainTransactions:
|
|
|
281
278
|
transaction_data=spend_bundle,
|
|
282
279
|
seed=b"spend at 14 is double spend",
|
|
283
280
|
)
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
281
|
+
await _validate_and_add_block(
|
|
282
|
+
full_node_api_1.full_node.blockchain,
|
|
283
|
+
new_blocks_reorg[-1],
|
|
284
|
+
expected_result=AddBlockResult.INVALID_BLOCK,
|
|
285
|
+
expected_error=Err.DOUBLE_SPEND,
|
|
286
|
+
)
|
|
287
287
|
|
|
288
288
|
@pytest.mark.anyio
|
|
289
289
|
async def test_validate_blockchain_spend_reorg_coin(
|
|
290
|
-
self, two_nodes:
|
|
290
|
+
self, two_nodes: tuple[FullNodeAPI, FullNodeAPI, ChiaServer, ChiaServer, BlockTools], softfork_height: uint32
|
|
291
291
|
) -> None:
|
|
292
292
|
num_blocks = 10
|
|
293
293
|
wallet_a = WALLET_A
|
|
@@ -300,8 +300,7 @@ class TestBlockchainTransactions:
|
|
|
300
300
|
num_blocks, farmer_reward_puzzle_hash=coinbase_puzzlehash, guarantee_transaction_block=True
|
|
301
301
|
)
|
|
302
302
|
|
|
303
|
-
|
|
304
|
-
await full_node_api_1.full_node.add_block(block)
|
|
303
|
+
await add_blocks_in_batches(blocks, full_node_api_1.full_node)
|
|
305
304
|
|
|
306
305
|
spend_block = blocks[2]
|
|
307
306
|
|
|
@@ -321,8 +320,7 @@ class TestBlockchainTransactions:
|
|
|
321
320
|
transaction_data=spend_bundle,
|
|
322
321
|
guarantee_transaction_block=True,
|
|
323
322
|
)
|
|
324
|
-
|
|
325
|
-
await full_node_api_1.full_node.add_block(new_blocks[-1])
|
|
323
|
+
await add_blocks_in_batches([new_blocks[-1]], full_node_api_1.full_node)
|
|
326
324
|
|
|
327
325
|
coin_2 = None
|
|
328
326
|
for coin in run_and_get_removals_and_additions(
|
|
@@ -346,7 +344,7 @@ class TestBlockchainTransactions:
|
|
|
346
344
|
transaction_data=spend_bundle,
|
|
347
345
|
guarantee_transaction_block=True,
|
|
348
346
|
)
|
|
349
|
-
await full_node_api_1.full_node
|
|
347
|
+
await add_blocks_in_batches(new_blocks, full_node_api_1.full_node)
|
|
350
348
|
|
|
351
349
|
coin_3 = None
|
|
352
350
|
for coin in run_and_get_removals_and_additions(
|
|
@@ -370,12 +368,11 @@ class TestBlockchainTransactions:
|
|
|
370
368
|
transaction_data=spend_bundle,
|
|
371
369
|
guarantee_transaction_block=True,
|
|
372
370
|
)
|
|
373
|
-
|
|
374
|
-
await full_node_api_1.full_node.add_block(new_blocks[-1])
|
|
371
|
+
await add_blocks_in_batches(new_blocks, full_node_api_1.full_node)
|
|
375
372
|
|
|
376
373
|
@pytest.mark.anyio
|
|
377
374
|
async def test_validate_blockchain_spend_reorg_cb_coin(
|
|
378
|
-
self, two_nodes:
|
|
375
|
+
self, two_nodes: tuple[FullNodeAPI, FullNodeAPI, ChiaServer, ChiaServer, BlockTools]
|
|
379
376
|
) -> None:
|
|
380
377
|
num_blocks = 15
|
|
381
378
|
wallet_a = WALLET_A
|
|
@@ -383,9 +380,7 @@ class TestBlockchainTransactions:
|
|
|
383
380
|
receiver_1_puzzlehash = WALLET_A_PUZZLE_HASHES[1]
|
|
384
381
|
full_node_api_1, _, _, _, bt = two_nodes
|
|
385
382
|
blocks = bt.get_consecutive_blocks(num_blocks, farmer_reward_puzzle_hash=coinbase_puzzlehash)
|
|
386
|
-
|
|
387
|
-
for block in blocks:
|
|
388
|
-
await full_node_api_1.full_node.add_block(block)
|
|
383
|
+
await add_blocks_in_batches(blocks, full_node_api_1.full_node)
|
|
389
384
|
|
|
390
385
|
# Spends a coinbase created in reorg
|
|
391
386
|
new_blocks = bt.get_consecutive_blocks(
|
|
@@ -396,8 +391,7 @@ class TestBlockchainTransactions:
|
|
|
396
391
|
guarantee_transaction_block=True,
|
|
397
392
|
)
|
|
398
393
|
|
|
399
|
-
|
|
400
|
-
await full_node_api_1.full_node.add_block(block)
|
|
394
|
+
await add_blocks_in_batches(new_blocks, full_node_api_1.full_node)
|
|
401
395
|
|
|
402
396
|
spend_block = new_blocks[-1]
|
|
403
397
|
spend_coin = None
|
|
@@ -415,12 +409,11 @@ class TestBlockchainTransactions:
|
|
|
415
409
|
transaction_data=spend_bundle,
|
|
416
410
|
guarantee_transaction_block=True,
|
|
417
411
|
)
|
|
418
|
-
|
|
419
|
-
await full_node_api_1.full_node.add_block(new_blocks[-1])
|
|
412
|
+
await add_blocks_in_batches(new_blocks, full_node_api_1.full_node)
|
|
420
413
|
|
|
421
414
|
@pytest.mark.anyio
|
|
422
415
|
async def test_validate_blockchain_spend_reorg_since_genesis(
|
|
423
|
-
self, two_nodes:
|
|
416
|
+
self, two_nodes: tuple[FullNodeAPI, FullNodeAPI, ChiaServer, ChiaServer, BlockTools]
|
|
424
417
|
) -> None:
|
|
425
418
|
num_blocks = 10
|
|
426
419
|
wallet_a = WALLET_A
|
|
@@ -431,8 +424,7 @@ class TestBlockchainTransactions:
|
|
|
431
424
|
num_blocks, farmer_reward_puzzle_hash=coinbase_puzzlehash, guarantee_transaction_block=True
|
|
432
425
|
)
|
|
433
426
|
|
|
434
|
-
|
|
435
|
-
await full_node_api_1.full_node.add_block(block)
|
|
427
|
+
await add_blocks_in_batches(blocks, full_node_api_1.full_node)
|
|
436
428
|
|
|
437
429
|
spend_block = blocks[-1]
|
|
438
430
|
spend_coin = None
|
|
@@ -445,7 +437,7 @@ class TestBlockchainTransactions:
|
|
|
445
437
|
new_blocks = bt.get_consecutive_blocks(
|
|
446
438
|
1, blocks, seed=b"", farmer_reward_puzzle_hash=coinbase_puzzlehash, transaction_data=spend_bundle
|
|
447
439
|
)
|
|
448
|
-
await full_node_api_1.full_node.
|
|
440
|
+
await _validate_and_add_block(full_node_api_1.full_node.blockchain, new_blocks[-1])
|
|
449
441
|
|
|
450
442
|
# Spends a coin in a genesis reorg, that was already spent
|
|
451
443
|
new_blocks = bt.get_consecutive_blocks(
|
|
@@ -456,9 +448,6 @@ class TestBlockchainTransactions:
|
|
|
456
448
|
guarantee_transaction_block=True,
|
|
457
449
|
)
|
|
458
450
|
|
|
459
|
-
for block in new_blocks:
|
|
460
|
-
await full_node_api_1.full_node.add_block(block)
|
|
461
|
-
|
|
462
451
|
new_blocks = bt.get_consecutive_blocks(
|
|
463
452
|
1,
|
|
464
453
|
new_blocks,
|
|
@@ -467,11 +456,11 @@ class TestBlockchainTransactions:
|
|
|
467
456
|
transaction_data=spend_bundle,
|
|
468
457
|
)
|
|
469
458
|
|
|
470
|
-
await full_node_api_1.full_node
|
|
459
|
+
await add_blocks_in_batches(new_blocks, full_node_api_1.full_node)
|
|
471
460
|
|
|
472
461
|
@pytest.mark.anyio
|
|
473
462
|
async def test_assert_my_coin_id(
|
|
474
|
-
self, two_nodes:
|
|
463
|
+
self, two_nodes: tuple[FullNodeAPI, FullNodeAPI, ChiaServer, ChiaServer, BlockTools]
|
|
475
464
|
) -> None:
|
|
476
465
|
num_blocks = 10
|
|
477
466
|
wallet_a = WALLET_A
|
|
@@ -484,8 +473,7 @@ class TestBlockchainTransactions:
|
|
|
484
473
|
num_blocks, farmer_reward_puzzle_hash=coinbase_puzzlehash, guarantee_transaction_block=True
|
|
485
474
|
)
|
|
486
475
|
|
|
487
|
-
|
|
488
|
-
await full_node_api_1.full_node.add_block(block)
|
|
476
|
+
await add_blocks_in_batches(blocks, full_node_api_1.full_node)
|
|
489
477
|
|
|
490
478
|
# Coinbase that gets spent
|
|
491
479
|
|
|
@@ -543,7 +531,7 @@ class TestBlockchainTransactions:
|
|
|
543
531
|
|
|
544
532
|
@pytest.mark.anyio
|
|
545
533
|
async def test_assert_coin_announcement_consumed(
|
|
546
|
-
self, two_nodes:
|
|
534
|
+
self, two_nodes: tuple[FullNodeAPI, FullNodeAPI, ChiaServer, ChiaServer, BlockTools]
|
|
547
535
|
) -> None:
|
|
548
536
|
num_blocks = 10
|
|
549
537
|
wallet_a = WALLET_A
|
|
@@ -556,8 +544,7 @@ class TestBlockchainTransactions:
|
|
|
556
544
|
num_blocks, farmer_reward_puzzle_hash=coinbase_puzzlehash, guarantee_transaction_block=True
|
|
557
545
|
)
|
|
558
546
|
|
|
559
|
-
|
|
560
|
-
await full_node_api_1.full_node.add_block(block)
|
|
547
|
+
await add_blocks_in_batches(blocks, full_node_api_1.full_node)
|
|
561
548
|
|
|
562
549
|
# Coinbase that gets spent
|
|
563
550
|
block1 = blocks[2]
|
|
@@ -627,7 +614,7 @@ class TestBlockchainTransactions:
|
|
|
627
614
|
|
|
628
615
|
@pytest.mark.anyio
|
|
629
616
|
async def test_assert_puzzle_announcement_consumed(
|
|
630
|
-
self, two_nodes:
|
|
617
|
+
self, two_nodes: tuple[FullNodeAPI, FullNodeAPI, ChiaServer, ChiaServer, BlockTools]
|
|
631
618
|
) -> None:
|
|
632
619
|
num_blocks = 10
|
|
633
620
|
wallet_a = WALLET_A
|
|
@@ -640,8 +627,7 @@ class TestBlockchainTransactions:
|
|
|
640
627
|
num_blocks, farmer_reward_puzzle_hash=coinbase_puzzlehash, guarantee_transaction_block=True
|
|
641
628
|
)
|
|
642
629
|
|
|
643
|
-
|
|
644
|
-
await full_node_api_1.full_node.add_block(block)
|
|
630
|
+
await add_blocks_in_batches(blocks, full_node_api_1.full_node)
|
|
645
631
|
|
|
646
632
|
# Coinbase that gets spent
|
|
647
633
|
block1 = blocks[2]
|
|
@@ -711,7 +697,7 @@ class TestBlockchainTransactions:
|
|
|
711
697
|
|
|
712
698
|
@pytest.mark.anyio
|
|
713
699
|
async def test_assert_height_absolute(
|
|
714
|
-
self, two_nodes:
|
|
700
|
+
self, two_nodes: tuple[FullNodeAPI, FullNodeAPI, ChiaServer, ChiaServer, BlockTools]
|
|
715
701
|
) -> None:
|
|
716
702
|
num_blocks = 10
|
|
717
703
|
wallet_a = WALLET_A
|
|
@@ -724,8 +710,7 @@ class TestBlockchainTransactions:
|
|
|
724
710
|
num_blocks, farmer_reward_puzzle_hash=coinbase_puzzlehash, guarantee_transaction_block=True
|
|
725
711
|
)
|
|
726
712
|
|
|
727
|
-
|
|
728
|
-
await full_node_api_1.full_node.add_block(block)
|
|
713
|
+
await add_blocks_in_batches(blocks, full_node_api_1.full_node)
|
|
729
714
|
|
|
730
715
|
# Coinbase that gets spent
|
|
731
716
|
block1 = blocks[2]
|
|
@@ -777,7 +762,7 @@ class TestBlockchainTransactions:
|
|
|
777
762
|
|
|
778
763
|
@pytest.mark.anyio
|
|
779
764
|
async def test_assert_height_relative(
|
|
780
|
-
self, two_nodes:
|
|
765
|
+
self, two_nodes: tuple[FullNodeAPI, FullNodeAPI, ChiaServer, ChiaServer, BlockTools]
|
|
781
766
|
) -> None:
|
|
782
767
|
num_blocks = 11
|
|
783
768
|
wallet_a = WALLET_A
|
|
@@ -790,8 +775,7 @@ class TestBlockchainTransactions:
|
|
|
790
775
|
num_blocks, farmer_reward_puzzle_hash=coinbase_puzzlehash, guarantee_transaction_block=True
|
|
791
776
|
)
|
|
792
777
|
|
|
793
|
-
|
|
794
|
-
await full_node_api_1.full_node.add_block(block)
|
|
778
|
+
await add_blocks_in_batches(blocks, full_node_api_1.full_node)
|
|
795
779
|
|
|
796
780
|
# Coinbase that gets spent
|
|
797
781
|
block1 = blocks[2]
|
|
@@ -845,7 +829,7 @@ class TestBlockchainTransactions:
|
|
|
845
829
|
|
|
846
830
|
@pytest.mark.anyio
|
|
847
831
|
async def test_assert_seconds_relative(
|
|
848
|
-
self, two_nodes:
|
|
832
|
+
self, two_nodes: tuple[FullNodeAPI, FullNodeAPI, ChiaServer, ChiaServer, BlockTools]
|
|
849
833
|
) -> None:
|
|
850
834
|
num_blocks = 10
|
|
851
835
|
wallet_a = WALLET_A
|
|
@@ -858,8 +842,7 @@ class TestBlockchainTransactions:
|
|
|
858
842
|
num_blocks, farmer_reward_puzzle_hash=coinbase_puzzlehash, guarantee_transaction_block=True
|
|
859
843
|
)
|
|
860
844
|
|
|
861
|
-
|
|
862
|
-
await full_node_api_1.full_node.add_block(block)
|
|
845
|
+
await add_blocks_in_batches(blocks, full_node_api_1.full_node)
|
|
863
846
|
|
|
864
847
|
# Coinbase that gets spent
|
|
865
848
|
block1 = blocks[2]
|
|
@@ -903,7 +886,7 @@ class TestBlockchainTransactions:
|
|
|
903
886
|
time_per_block=301,
|
|
904
887
|
)
|
|
905
888
|
)
|
|
906
|
-
await
|
|
889
|
+
await _validate_and_add_block(full_node_1.blockchain, blocks[-1])
|
|
907
890
|
|
|
908
891
|
valid_new_blocks = bt.get_consecutive_blocks(
|
|
909
892
|
1,
|
|
@@ -917,7 +900,7 @@ class TestBlockchainTransactions:
|
|
|
917
900
|
|
|
918
901
|
@pytest.mark.anyio
|
|
919
902
|
async def test_assert_seconds_absolute(
|
|
920
|
-
self, two_nodes:
|
|
903
|
+
self, two_nodes: tuple[FullNodeAPI, FullNodeAPI, ChiaServer, ChiaServer, BlockTools]
|
|
921
904
|
) -> None:
|
|
922
905
|
num_blocks = 10
|
|
923
906
|
wallet_a = WALLET_A
|
|
@@ -930,8 +913,7 @@ class TestBlockchainTransactions:
|
|
|
930
913
|
num_blocks, farmer_reward_puzzle_hash=coinbase_puzzlehash, guarantee_transaction_block=True
|
|
931
914
|
)
|
|
932
915
|
|
|
933
|
-
|
|
934
|
-
await full_node_api_1.full_node.add_block(block)
|
|
916
|
+
await add_blocks_in_batches(blocks, full_node_api_1.full_node)
|
|
935
917
|
|
|
936
918
|
# Coinbase that gets spent
|
|
937
919
|
block1 = blocks[2]
|
|
@@ -977,7 +959,7 @@ class TestBlockchainTransactions:
|
|
|
977
959
|
time_per_block=30,
|
|
978
960
|
)
|
|
979
961
|
)
|
|
980
|
-
await
|
|
962
|
+
await _validate_and_add_block(full_node_1.blockchain, blocks[-1])
|
|
981
963
|
|
|
982
964
|
valid_new_blocks = bt.get_consecutive_blocks(
|
|
983
965
|
1,
|
|
@@ -991,7 +973,7 @@ class TestBlockchainTransactions:
|
|
|
991
973
|
|
|
992
974
|
@pytest.mark.anyio
|
|
993
975
|
async def test_assert_fee_condition(
|
|
994
|
-
self, two_nodes:
|
|
976
|
+
self, two_nodes: tuple[FullNodeAPI, FullNodeAPI, ChiaServer, ChiaServer, BlockTools]
|
|
995
977
|
) -> None:
|
|
996
978
|
num_blocks = 10
|
|
997
979
|
wallet_a = WALLET_A
|
|
@@ -1004,8 +986,7 @@ class TestBlockchainTransactions:
|
|
|
1004
986
|
num_blocks, farmer_reward_puzzle_hash=coinbase_puzzlehash, guarantee_transaction_block=True
|
|
1005
987
|
)
|
|
1006
988
|
|
|
1007
|
-
|
|
1008
|
-
await full_node_api_1.full_node.add_block(block)
|
|
989
|
+
await add_blocks_in_batches(blocks, full_node_api_1.full_node)
|
|
1009
990
|
|
|
1010
991
|
# Coinbase that gets spent
|
|
1011
992
|
block1 = blocks[2]
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from typing import List
|
|
4
|
-
|
|
5
3
|
import pytest
|
|
6
4
|
|
|
7
5
|
from chia.types.full_block import FullBlock
|
|
@@ -21,41 +19,41 @@ from chia.types.full_block import FullBlock
|
|
|
21
19
|
|
|
22
20
|
|
|
23
21
|
@pytest.mark.build_test_chains
|
|
24
|
-
def test_trigger_default_400(default_400_blocks:
|
|
22
|
+
def test_trigger_default_400(default_400_blocks: list[FullBlock]) -> None:
|
|
25
23
|
pass
|
|
26
24
|
|
|
27
25
|
|
|
28
26
|
@pytest.mark.build_test_chains
|
|
29
|
-
def test_trigger_default_1000(default_1000_blocks:
|
|
27
|
+
def test_trigger_default_1000(default_1000_blocks: list[FullBlock]) -> None:
|
|
30
28
|
pass
|
|
31
29
|
|
|
32
30
|
|
|
33
31
|
@pytest.mark.build_test_chains
|
|
34
|
-
def test_trigger_pre_genesis_empty_1000(pre_genesis_empty_slots_1000_blocks:
|
|
32
|
+
def test_trigger_pre_genesis_empty_1000(pre_genesis_empty_slots_1000_blocks: list[FullBlock]) -> None:
|
|
35
33
|
pass
|
|
36
34
|
|
|
37
35
|
|
|
38
36
|
@pytest.mark.build_test_chains
|
|
39
|
-
def test_trigger_default_1500(default_1500_blocks:
|
|
37
|
+
def test_trigger_default_1500(default_1500_blocks: list[FullBlock]) -> None:
|
|
40
38
|
pass
|
|
41
39
|
|
|
42
40
|
|
|
43
41
|
@pytest.mark.build_test_chains
|
|
44
42
|
def test_trigger_default_10000(
|
|
45
|
-
default_10000_blocks:
|
|
46
|
-
test_long_reorg_blocks:
|
|
47
|
-
test_long_reorg_blocks_light:
|
|
48
|
-
test_long_reorg_1500_blocks:
|
|
49
|
-
test_long_reorg_1500_blocks_light:
|
|
43
|
+
default_10000_blocks: list[FullBlock],
|
|
44
|
+
test_long_reorg_blocks: list[FullBlock],
|
|
45
|
+
test_long_reorg_blocks_light: list[FullBlock],
|
|
46
|
+
test_long_reorg_1500_blocks: list[FullBlock],
|
|
47
|
+
test_long_reorg_1500_blocks_light: list[FullBlock],
|
|
50
48
|
) -> None:
|
|
51
49
|
pass
|
|
52
50
|
|
|
53
51
|
|
|
54
52
|
@pytest.mark.build_test_chains
|
|
55
|
-
def test_trigger_default_2000_compact(default_2000_blocks_compact:
|
|
53
|
+
def test_trigger_default_2000_compact(default_2000_blocks_compact: list[FullBlock]) -> None:
|
|
56
54
|
pass
|
|
57
55
|
|
|
58
56
|
|
|
59
57
|
@pytest.mark.build_test_chains
|
|
60
|
-
def test_trigger_default_10000_compact(default_10000_blocks_compact:
|
|
58
|
+
def test_trigger_default_10000_compact(default_10000_blocks_compact: list[FullBlock]) -> None:
|
|
61
59
|
pass
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
from dataclasses import dataclass
|
|
4
|
-
from typing import
|
|
4
|
+
from typing import Optional
|
|
5
5
|
|
|
6
6
|
import pytest
|
|
7
7
|
from clvm.casts import int_to_bytes
|
|
@@ -17,7 +17,7 @@ from chia.util.ints import uint32
|
|
|
17
17
|
class BR:
|
|
18
18
|
prev_header_hash: bytes32
|
|
19
19
|
transactions_generator: Optional[SerializedProgram]
|
|
20
|
-
transactions_generator_ref_list:
|
|
20
|
+
transactions_generator_ref_list: list[uint32]
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
@dataclass(frozen=True)
|
|
@@ -35,15 +35,15 @@ def program(i: int) -> SerializedProgram:
|
|
|
35
35
|
return SerializedProgram.from_bytes(int_to_bytes(i))
|
|
36
36
|
|
|
37
37
|
|
|
38
|
-
async def zero_hits(hh: bytes32, refs:
|
|
38
|
+
async def zero_hits(hh: bytes32, refs: set[uint32]) -> dict[uint32, bytes]:
|
|
39
39
|
return {}
|
|
40
40
|
|
|
41
41
|
|
|
42
|
-
async def never_called(hh: bytes32, refs:
|
|
42
|
+
async def never_called(hh: bytes32, refs: set[uint32]) -> dict[uint32, bytes]:
|
|
43
43
|
assert False # pragma: no cover
|
|
44
44
|
|
|
45
45
|
|
|
46
|
-
async def only_lookup_5(hh: bytes32, refs:
|
|
46
|
+
async def only_lookup_5(hh: bytes32, refs: set[uint32]) -> dict[uint32, bytes]:
|
|
47
47
|
assert refs == {uint32(5)}
|
|
48
48
|
return {uint32(5): bytes(program(5))}
|
|
49
49
|
|
|
@@ -53,20 +53,20 @@ DUMMY_PROGRAM = SerializedProgram.from_bytes(b"\x80")
|
|
|
53
53
|
|
|
54
54
|
@pytest.mark.anyio
|
|
55
55
|
async def test_failing_lookup() -> None:
|
|
56
|
-
br = BR(bytes32
|
|
56
|
+
br = BR(bytes32.zeros, DUMMY_PROGRAM, [uint32(1)])
|
|
57
57
|
with pytest.raises(KeyError):
|
|
58
58
|
await get_block_generator(zero_hits, br)
|
|
59
59
|
|
|
60
60
|
|
|
61
61
|
@pytest.mark.anyio
|
|
62
62
|
async def test_no_generator() -> None:
|
|
63
|
-
br = BR(bytes32
|
|
63
|
+
br = BR(bytes32.zeros, None, [uint32(1)])
|
|
64
64
|
with pytest.raises(AssertionError):
|
|
65
65
|
await get_block_generator(zero_hits, br)
|
|
66
66
|
|
|
67
67
|
|
|
68
68
|
@pytest.mark.anyio
|
|
69
69
|
async def test_no_refs() -> None:
|
|
70
|
-
br = BR(bytes32
|
|
70
|
+
br = BR(bytes32.zeros, DUMMY_PROGRAM, [])
|
|
71
71
|
bg = await get_block_generator(never_called, br)
|
|
72
72
|
assert bg == BlockGenerator(DUMMY_PROGRAM, [])
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
from dataclasses import dataclass
|
|
4
|
-
from typing import Dict, List
|
|
5
4
|
|
|
6
5
|
import pytest
|
|
7
6
|
|
|
@@ -15,7 +14,7 @@ from chia.util.ints import uint32
|
|
|
15
14
|
|
|
16
15
|
|
|
17
16
|
class DummyChain:
|
|
18
|
-
_chain:
|
|
17
|
+
_chain: dict[bytes32, bytes32]
|
|
19
18
|
|
|
20
19
|
def __init__(self) -> None:
|
|
21
20
|
self._chain = {}
|
|
@@ -23,8 +22,8 @@ class DummyChain:
|
|
|
23
22
|
def add_block(self, h: bytes32, prev: bytes32) -> None:
|
|
24
23
|
self._chain[h] = prev
|
|
25
24
|
|
|
26
|
-
async def prev_block_hash(self, header_hashes:
|
|
27
|
-
ret:
|
|
25
|
+
async def prev_block_hash(self, header_hashes: list[bytes32]) -> list[bytes32]:
|
|
26
|
+
ret: list[bytes32] = []
|
|
28
27
|
for h in header_hashes:
|
|
29
28
|
ret.append(self._chain[h])
|
|
30
29
|
return ret
|
chia/_tests/build-init-files.py
CHANGED
|
@@ -13,7 +13,6 @@ from __future__ import annotations
|
|
|
13
13
|
|
|
14
14
|
import logging
|
|
15
15
|
import pathlib
|
|
16
|
-
from typing import List
|
|
17
16
|
|
|
18
17
|
import click
|
|
19
18
|
|
|
@@ -27,8 +26,8 @@ log_levels = {
|
|
|
27
26
|
ignores = {"__pycache__", ".pytest_cache"}
|
|
28
27
|
|
|
29
28
|
|
|
30
|
-
def traverse_directory(path: pathlib.Path) ->
|
|
31
|
-
of_interest:
|
|
29
|
+
def traverse_directory(path: pathlib.Path) -> list[pathlib.Path]:
|
|
30
|
+
of_interest: list[pathlib.Path] = []
|
|
32
31
|
|
|
33
32
|
file_found = False
|
|
34
33
|
|
|
@@ -90,4 +89,4 @@ def command(verbose, root_str):
|
|
|
90
89
|
raise click.ClickException("At least one __init__.py created or not a regular file")
|
|
91
90
|
|
|
92
91
|
|
|
93
|
-
command()
|
|
92
|
+
command()
|
chia/_tests/build-job-matrix.py
CHANGED
|
@@ -6,7 +6,7 @@ import json
|
|
|
6
6
|
import logging
|
|
7
7
|
import types
|
|
8
8
|
from pathlib import Path
|
|
9
|
-
from typing import Any
|
|
9
|
+
from typing import Any
|
|
10
10
|
|
|
11
11
|
import testconfig
|
|
12
12
|
|
|
@@ -18,7 +18,7 @@ def skip(path: Path) -> bool:
|
|
|
18
18
|
return any(part.startswith(("_", ".")) and part != "_tests" for part in path.parts)
|
|
19
19
|
|
|
20
20
|
|
|
21
|
-
def subdirs(per: str) ->
|
|
21
|
+
def subdirs(per: str) -> list[Path]:
|
|
22
22
|
if per == "directory":
|
|
23
23
|
glob_pattern = "**/"
|
|
24
24
|
elif per == "file":
|
|
@@ -44,11 +44,11 @@ def subdirs(per: str) -> List[Path]:
|
|
|
44
44
|
return sorted(paths)
|
|
45
45
|
|
|
46
46
|
|
|
47
|
-
def module_dict(module: types.ModuleType) ->
|
|
47
|
+
def module_dict(module: types.ModuleType) -> dict[str, Any]:
|
|
48
48
|
return {k: v for k, v in module.__dict__.items() if not k.startswith("_") and k != "annotations"}
|
|
49
49
|
|
|
50
50
|
|
|
51
|
-
def dir_config(dir: Path) ->
|
|
51
|
+
def dir_config(dir: Path) -> dict[str, Any]:
|
|
52
52
|
import importlib
|
|
53
53
|
|
|
54
54
|
module_name = ".".join([*dir.relative_to(root_path).parts, "config"])
|
|
@@ -60,14 +60,14 @@ def dir_config(dir: Path) -> Dict[str, Any]:
|
|
|
60
60
|
|
|
61
61
|
@dataclasses.dataclass
|
|
62
62
|
class SpecifiedDefaultsError(Exception):
|
|
63
|
-
overlap:
|
|
63
|
+
overlap: dict[str, Any]
|
|
64
64
|
|
|
65
65
|
def __post_init__(self) -> None:
|
|
66
66
|
super().__init__()
|
|
67
67
|
|
|
68
68
|
|
|
69
69
|
# Overwrite with directory specific values
|
|
70
|
-
def update_config(parent:
|
|
70
|
+
def update_config(parent: dict[str, Any], child: dict[str, Any]) -> dict[str, Any]:
|
|
71
71
|
if child is None:
|
|
72
72
|
return parent
|
|
73
73
|
conf = child
|
|
@@ -107,8 +107,8 @@ test_paths_with_index = [(path, index + 1) for path in test_paths for index in r
|
|
|
107
107
|
|
|
108
108
|
configuration = []
|
|
109
109
|
|
|
110
|
-
specified_defaults:
|
|
111
|
-
pytest_monitor_enabling_paths:
|
|
110
|
+
specified_defaults: dict[Path, dict[str, Any]] = {}
|
|
111
|
+
pytest_monitor_enabling_paths: list[Path] = []
|
|
112
112
|
|
|
113
113
|
for path, index in test_paths_with_index:
|
|
114
114
|
if path.is_dir():
|
|
@@ -177,7 +177,7 @@ for path, index in test_paths_with_index:
|
|
|
177
177
|
for_matrix = dict(sorted(for_matrix.items()))
|
|
178
178
|
configuration.append(for_matrix)
|
|
179
179
|
|
|
180
|
-
messages:
|
|
180
|
+
messages: list[str] = []
|
|
181
181
|
|
|
182
182
|
if len(specified_defaults) > 0:
|
|
183
183
|
message = f"Found {len(specified_defaults)} directories with specified defaults"
|