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 io
|
|
4
4
|
import re
|
|
5
5
|
from dataclasses import dataclass, field, fields
|
|
6
|
-
from typing import Any, Callable,
|
|
6
|
+
from typing import Any, Callable, Optional, get_type_hints
|
|
7
7
|
|
|
8
8
|
import pytest
|
|
9
9
|
from chia_rs import G1Element
|
|
@@ -69,7 +69,7 @@ def test_dict_not_suppported() -> None:
|
|
|
69
69
|
@streamable
|
|
70
70
|
@dataclass(frozen=True)
|
|
71
71
|
class TestClassDict(Streamable):
|
|
72
|
-
a:
|
|
72
|
+
a: dict[str, str]
|
|
73
73
|
|
|
74
74
|
|
|
75
75
|
@dataclass(frozen=True)
|
|
@@ -118,8 +118,8 @@ class StreamableFromDict2(Streamable):
|
|
|
118
118
|
@streamable
|
|
119
119
|
@dataclass(frozen=True)
|
|
120
120
|
class ConvertTupleFailures(Streamable):
|
|
121
|
-
a:
|
|
122
|
-
b:
|
|
121
|
+
a: tuple[uint8, uint8]
|
|
122
|
+
b: tuple[uint8, tuple[uint8, uint8]]
|
|
123
123
|
|
|
124
124
|
|
|
125
125
|
@pytest.mark.parametrize(
|
|
@@ -137,7 +137,7 @@ class ConvertTupleFailures(Streamable):
|
|
|
137
137
|
pytest.param({"a": (1, 1), "b": (1, "22")}, InvalidTypeError, id="b: invalid type str"),
|
|
138
138
|
],
|
|
139
139
|
)
|
|
140
|
-
def test_convert_tuple_failures(input_dict:
|
|
140
|
+
def test_convert_tuple_failures(input_dict: dict[str, Any], error: Any) -> None:
|
|
141
141
|
with pytest.raises(error):
|
|
142
142
|
streamable_from_dict(ConvertTupleFailures, input_dict)
|
|
143
143
|
|
|
@@ -145,8 +145,8 @@ def test_convert_tuple_failures(input_dict: Dict[str, Any], error: Any) -> None:
|
|
|
145
145
|
@streamable
|
|
146
146
|
@dataclass(frozen=True)
|
|
147
147
|
class ConvertListFailures(Streamable):
|
|
148
|
-
a:
|
|
149
|
-
b:
|
|
148
|
+
a: list[uint8]
|
|
149
|
+
b: list[list[uint8]]
|
|
150
150
|
|
|
151
151
|
|
|
152
152
|
@pytest.mark.parametrize(
|
|
@@ -160,7 +160,7 @@ class ConvertListFailures(Streamable):
|
|
|
160
160
|
pytest.param({"a": [1, 1], "b": [1, "22"]}, InvalidTypeError, id="b: invalid type str"),
|
|
161
161
|
],
|
|
162
162
|
)
|
|
163
|
-
def test_convert_list_failures(input_dict:
|
|
163
|
+
def test_convert_list_failures(input_dict: dict[str, Any], error: Any) -> None:
|
|
164
164
|
with pytest.raises(error):
|
|
165
165
|
streamable_from_dict(ConvertListFailures, input_dict)
|
|
166
166
|
|
|
@@ -189,7 +189,7 @@ class ConvertByteTypeFailures(Streamable):
|
|
|
189
189
|
pytest.param({"a": "00000000", "b": "invalid"}, ConversionError, id="b: invalid hex string"),
|
|
190
190
|
],
|
|
191
191
|
)
|
|
192
|
-
def test_convert_byte_type_failures(input_dict:
|
|
192
|
+
def test_convert_byte_type_failures(input_dict: dict[str, Any], error: Any) -> None:
|
|
193
193
|
with pytest.raises(error):
|
|
194
194
|
streamable_from_dict(ConvertByteTypeFailures, input_dict)
|
|
195
195
|
|
|
@@ -214,7 +214,7 @@ class ConvertUnhashableTypeFailures(Streamable):
|
|
|
214
214
|
pytest.param({"a": b"\00" * G1Element.SIZE}, ValueError, "BLS Error G1InfinityInvalidBits"),
|
|
215
215
|
],
|
|
216
216
|
)
|
|
217
|
-
def test_convert_unhashable_type_failures(input_dict:
|
|
217
|
+
def test_convert_unhashable_type_failures(input_dict: dict[str, Any], error: Any, error_msg: str) -> None:
|
|
218
218
|
with pytest.raises(error, match=re.escape(error_msg)):
|
|
219
219
|
streamable_from_dict(ConvertUnhashableTypeFailures, input_dict)
|
|
220
220
|
|
|
@@ -240,7 +240,7 @@ class ConvertPrimitiveFailures(Streamable):
|
|
|
240
240
|
pytest.param({"a": 0, "b": uint8(1), "c": NoStrClass()}, ConversionError, id="c: invalid value"),
|
|
241
241
|
],
|
|
242
242
|
)
|
|
243
|
-
def test_convert_primitive_failures(input_dict:
|
|
243
|
+
def test_convert_primitive_failures(input_dict: dict[str, Any], error: Any) -> None:
|
|
244
244
|
with pytest.raises(error):
|
|
245
245
|
streamable_from_dict(ConvertPrimitiveFailures, input_dict)
|
|
246
246
|
|
|
@@ -309,7 +309,7 @@ def test_convert_primitive_failures(input_dict: Dict[str, Any], error: Any) -> N
|
|
|
309
309
|
],
|
|
310
310
|
)
|
|
311
311
|
def test_streamable_from_dict_failures(
|
|
312
|
-
test_class:
|
|
312
|
+
test_class: type[Streamable], input_dict: dict[str, Any], error: Any, error_message: str
|
|
313
313
|
) -> None:
|
|
314
314
|
with pytest.raises(error, match=re.escape(error_message)):
|
|
315
315
|
streamable_from_dict(test_class, input_dict)
|
|
@@ -320,7 +320,7 @@ def test_streamable_from_dict_failures(
|
|
|
320
320
|
class TestFromJsonDictDefaultValues(Streamable):
|
|
321
321
|
a: uint64 = uint64(1)
|
|
322
322
|
b: str = "default"
|
|
323
|
-
c:
|
|
323
|
+
c: list[uint64] = field(default_factory=list)
|
|
324
324
|
|
|
325
325
|
|
|
326
326
|
@pytest.mark.parametrize(
|
|
@@ -333,30 +333,30 @@ class TestFromJsonDictDefaultValues(Streamable):
|
|
|
333
333
|
[{"a": 2, "b": "not_default", "c": [1, 2]}, {"a": 2, "b": "not_default", "c": [1, 2]}],
|
|
334
334
|
],
|
|
335
335
|
)
|
|
336
|
-
def test_from_json_dict_default_values(input_dict:
|
|
336
|
+
def test_from_json_dict_default_values(input_dict: dict[str, object], output_dict: dict[str, object]) -> None:
|
|
337
337
|
assert str(TestFromJsonDictDefaultValues.from_json_dict(input_dict).to_json_dict()) == str(output_dict)
|
|
338
338
|
|
|
339
339
|
|
|
340
340
|
def test_basic_list() -> None:
|
|
341
341
|
a = [1, 2, 3]
|
|
342
342
|
assert is_type_List(type(a))
|
|
343
|
-
assert is_type_List(List)
|
|
344
|
-
assert is_type_List(List[int])
|
|
345
|
-
assert is_type_List(List[uint8])
|
|
346
343
|
assert is_type_List(list)
|
|
347
|
-
assert
|
|
344
|
+
assert is_type_List(list[int])
|
|
345
|
+
assert is_type_List(list[uint8])
|
|
346
|
+
assert is_type_List(list)
|
|
347
|
+
assert not is_type_List(type(tuple))
|
|
348
348
|
assert not is_type_List(tuple)
|
|
349
349
|
assert not is_type_List(dict)
|
|
350
350
|
|
|
351
351
|
|
|
352
352
|
def test_not_lists() -> None:
|
|
353
|
-
assert not is_type_List(
|
|
353
|
+
assert not is_type_List(dict)
|
|
354
354
|
|
|
355
355
|
|
|
356
356
|
def test_basic_optional() -> None:
|
|
357
357
|
assert is_type_SpecificOptional(Optional[int])
|
|
358
358
|
assert is_type_SpecificOptional(Optional[Optional[int]])
|
|
359
|
-
assert not is_type_SpecificOptional(
|
|
359
|
+
assert not is_type_SpecificOptional(list[int])
|
|
360
360
|
|
|
361
361
|
|
|
362
362
|
@streamable
|
|
@@ -388,15 +388,15 @@ class PostInitTestClassOptional(Streamable):
|
|
|
388
388
|
@streamable
|
|
389
389
|
@dataclass(frozen=True)
|
|
390
390
|
class PostInitTestClassList(Streamable):
|
|
391
|
-
a:
|
|
392
|
-
b:
|
|
391
|
+
a: list[uint8]
|
|
392
|
+
b: list[list[G1Element]]
|
|
393
393
|
|
|
394
394
|
|
|
395
395
|
@streamable
|
|
396
396
|
@dataclass(frozen=True)
|
|
397
397
|
class PostInitTestClassTuple(Streamable):
|
|
398
|
-
a:
|
|
399
|
-
b:
|
|
398
|
+
a: tuple[uint8, str]
|
|
399
|
+
b: tuple[tuple[uint8, str], bytes32]
|
|
400
400
|
|
|
401
401
|
|
|
402
402
|
@pytest.mark.parametrize(
|
|
@@ -410,8 +410,8 @@ class PostInitTestClassTuple(Streamable):
|
|
|
410
410
|
(PostInitTestClassOptional, (12, None, 13, None)),
|
|
411
411
|
],
|
|
412
412
|
)
|
|
413
|
-
def test_post_init_valid(test_class:
|
|
414
|
-
def validate_item_type(type_in:
|
|
413
|
+
def test_post_init_valid(test_class: type[Any], args: tuple[Any, ...]) -> None:
|
|
414
|
+
def validate_item_type(type_in: type[Any], item: object) -> bool:
|
|
415
415
|
if is_type_SpecificOptional(type_in):
|
|
416
416
|
return item is None or validate_item_type(get_args(type_in)[0], item)
|
|
417
417
|
if is_type_Tuple(type_in):
|
|
@@ -449,7 +449,7 @@ def test_post_init_valid(test_class: Type[Any], args: Tuple[Any, ...]) -> None:
|
|
|
449
449
|
(PostInitTestClassOptional, ([], None, None, None), ValueError),
|
|
450
450
|
],
|
|
451
451
|
)
|
|
452
|
-
def test_post_init_failures(test_class:
|
|
452
|
+
def test_post_init_failures(test_class: type[Any], args: tuple[Any, ...], expected_exception: type[Exception]) -> None:
|
|
453
453
|
with pytest.raises(expected_exception):
|
|
454
454
|
test_class(*args)
|
|
455
455
|
|
|
@@ -460,14 +460,14 @@ def test_basic() -> None:
|
|
|
460
460
|
class TestClass(Streamable):
|
|
461
461
|
a: uint32
|
|
462
462
|
b: uint32
|
|
463
|
-
c:
|
|
464
|
-
d:
|
|
463
|
+
c: list[uint32]
|
|
464
|
+
d: list[list[uint32]]
|
|
465
465
|
e: Optional[uint32]
|
|
466
466
|
f: Optional[uint32]
|
|
467
|
-
g:
|
|
467
|
+
g: tuple[uint32, str, bytes]
|
|
468
468
|
|
|
469
469
|
# we want to test invalid here, hence the ignore.
|
|
470
|
-
a = TestClass(24, 352, [1, 2, 4], [[1, 2, 3], [3, 4]], 728, None, (383, "hello", b"goodbye")) # type: ignore[arg-type,list-item]
|
|
470
|
+
a = TestClass(24, 352, [1, 2, 4], [[1, 2, 3], [3, 4]], 728, None, (383, "hello", b"goodbye")) # type: ignore[arg-type,list-item]
|
|
471
471
|
|
|
472
472
|
b: bytes = bytes(a)
|
|
473
473
|
assert a == TestClass.from_bytes(b)
|
|
@@ -493,7 +493,7 @@ def test_variable_size() -> None:
|
|
|
493
493
|
|
|
494
494
|
|
|
495
495
|
def test_json(bt: BlockTools) -> None:
|
|
496
|
-
block = bt.create_genesis_block(test_constants, bytes32
|
|
496
|
+
block = bt.create_genesis_block(test_constants, bytes32.zeros, uint64(0))
|
|
497
497
|
dict_block = block.to_json_dict()
|
|
498
498
|
assert FullBlock.from_json_dict(dict_block) == block
|
|
499
499
|
|
|
@@ -503,7 +503,7 @@ def test_json(bt: BlockTools) -> None:
|
|
|
503
503
|
class OptionalTestClass(Streamable):
|
|
504
504
|
a: Optional[str]
|
|
505
505
|
b: Optional[bool]
|
|
506
|
-
c: Optional[
|
|
506
|
+
c: Optional[list[Optional[str]]]
|
|
507
507
|
|
|
508
508
|
|
|
509
509
|
@pytest.mark.parametrize(
|
|
@@ -517,7 +517,7 @@ class OptionalTestClass(Streamable):
|
|
|
517
517
|
(None, None, None),
|
|
518
518
|
],
|
|
519
519
|
)
|
|
520
|
-
def test_optional_json(a: Optional[str], b: Optional[bool], c: Optional[
|
|
520
|
+
def test_optional_json(a: Optional[str], b: Optional[bool], c: Optional[list[Optional[str]]]) -> None:
|
|
521
521
|
obj: OptionalTestClass = OptionalTestClass.from_json_dict({"a": a, "b": b, "c": c})
|
|
522
522
|
assert obj.a == a
|
|
523
523
|
assert obj.b == b
|
|
@@ -527,14 +527,14 @@ def test_optional_json(a: Optional[str], b: Optional[bool], c: Optional[List[Opt
|
|
|
527
527
|
@streamable
|
|
528
528
|
@dataclass(frozen=True)
|
|
529
529
|
class TestClassRecursive1(Streamable):
|
|
530
|
-
a:
|
|
530
|
+
a: list[uint32]
|
|
531
531
|
|
|
532
532
|
|
|
533
533
|
@streamable
|
|
534
534
|
@dataclass(frozen=True)
|
|
535
535
|
class TestClassRecursive2(Streamable):
|
|
536
536
|
a: uint32
|
|
537
|
-
b:
|
|
537
|
+
b: list[Optional[list[TestClassRecursive1]]]
|
|
538
538
|
c: bytes32
|
|
539
539
|
|
|
540
540
|
|
|
@@ -586,7 +586,7 @@ def test_ambiguous_deserialization_list() -> None:
|
|
|
586
586
|
@streamable
|
|
587
587
|
@dataclass(frozen=True)
|
|
588
588
|
class TestClassList(Streamable):
|
|
589
|
-
a:
|
|
589
|
+
a: list[uint8]
|
|
590
590
|
|
|
591
591
|
# Does not have the required elements
|
|
592
592
|
with pytest.raises(ValueError):
|
|
@@ -597,7 +597,7 @@ def test_ambiguous_deserialization_tuple() -> None:
|
|
|
597
597
|
@streamable
|
|
598
598
|
@dataclass(frozen=True)
|
|
599
599
|
class TestClassTuple(Streamable):
|
|
600
|
-
a:
|
|
600
|
+
a: tuple[uint8, str]
|
|
601
601
|
|
|
602
602
|
# Does not have the required elements
|
|
603
603
|
with pytest.raises(AssertionError):
|
|
@@ -3,7 +3,7 @@ from __future__ import annotations
|
|
|
3
3
|
import asyncio
|
|
4
4
|
import contextlib
|
|
5
5
|
from dataclasses import dataclass
|
|
6
|
-
from typing import TYPE_CHECKING, Callable,
|
|
6
|
+
from typing import TYPE_CHECKING, Callable, Optional
|
|
7
7
|
|
|
8
8
|
import aiosqlite
|
|
9
9
|
import pytest
|
|
@@ -14,6 +14,7 @@ from _pytest.fixtures import SubRequest
|
|
|
14
14
|
from chia._tests.util.db_connection import DBConnection, PathDBConnection
|
|
15
15
|
from chia._tests.util.misc import Marks, boolean_datacases, datacases
|
|
16
16
|
from chia.util.db_wrapper import DBWrapper2, ForeignKeyError, InternalError, NestedForeignKeyDelayedRequestError
|
|
17
|
+
from chia.util.task_referencer import create_referenced_task
|
|
17
18
|
|
|
18
19
|
if TYPE_CHECKING:
|
|
19
20
|
ConnectionContextManager = contextlib.AbstractAsyncContextManager[aiosqlite.core.Connection]
|
|
@@ -54,7 +55,7 @@ async def decrement_counter(db_wrapper: DBWrapper2) -> None:
|
|
|
54
55
|
await connection.execute("UPDATE counter SET value = :value", {"value": new_value})
|
|
55
56
|
|
|
56
57
|
|
|
57
|
-
async def sum_counter(db_wrapper: DBWrapper2, output:
|
|
58
|
+
async def sum_counter(db_wrapper: DBWrapper2, output: list[int]) -> None:
|
|
58
59
|
async with db_wrapper.reader_no_transaction() as connection:
|
|
59
60
|
async with connection.execute("SELECT value FROM counter") as cursor:
|
|
60
61
|
row = await cursor.fetchone()
|
|
@@ -119,7 +120,7 @@ async def test_concurrent_writers(acquire_outside: bool, get_reader_method: GetR
|
|
|
119
120
|
|
|
120
121
|
tasks = []
|
|
121
122
|
for index in range(concurrent_task_count):
|
|
122
|
-
task =
|
|
123
|
+
task = create_referenced_task(increment_counter(db_wrapper))
|
|
123
124
|
tasks.append(task)
|
|
124
125
|
|
|
125
126
|
await asyncio.wait_for(asyncio.gather(*tasks), timeout=None)
|
|
@@ -263,7 +264,7 @@ async def test_only_transactioned_reader_ignores_writer(transactioned: bool) ->
|
|
|
263
264
|
async with get_reader() as reader:
|
|
264
265
|
assert await query_value(connection=reader) == 0
|
|
265
266
|
|
|
266
|
-
task =
|
|
267
|
+
task = create_referenced_task(write())
|
|
267
268
|
await writer_committed.wait()
|
|
268
269
|
|
|
269
270
|
assert await query_value(connection=reader) == 0 if transactioned else 1
|
|
@@ -340,9 +341,9 @@ async def test_concurrent_readers(acquire_outside: bool, get_reader_method: GetR
|
|
|
340
341
|
await exit_stack.enter_async_context(get_reader_method(db_wrapper)())
|
|
341
342
|
|
|
342
343
|
tasks = []
|
|
343
|
-
values:
|
|
344
|
+
values: list[int] = []
|
|
344
345
|
for index in range(concurrent_task_count):
|
|
345
|
-
task =
|
|
346
|
+
task = create_referenced_task(sum_counter(db_wrapper, values))
|
|
346
347
|
tasks.append(task)
|
|
347
348
|
|
|
348
349
|
await asyncio.wait_for(asyncio.gather(*tasks), timeout=None)
|
|
@@ -369,13 +370,13 @@ async def test_mixed_readers_writers(acquire_outside: bool, get_reader_method: G
|
|
|
369
370
|
await exit_stack.enter_async_context(get_reader_method(db_wrapper)())
|
|
370
371
|
|
|
371
372
|
tasks = []
|
|
372
|
-
values:
|
|
373
|
+
values: list[int] = []
|
|
373
374
|
for index in range(concurrent_task_count):
|
|
374
|
-
task =
|
|
375
|
+
task = create_referenced_task(increment_counter(db_wrapper))
|
|
375
376
|
tasks.append(task)
|
|
376
|
-
task =
|
|
377
|
+
task = create_referenced_task(decrement_counter(db_wrapper))
|
|
377
378
|
tasks.append(task)
|
|
378
|
-
task =
|
|
379
|
+
task = create_referenced_task(sum_counter(db_wrapper, values))
|
|
379
380
|
tasks.append(task)
|
|
380
381
|
|
|
381
382
|
await asyncio.wait_for(asyncio.gather(*tasks), timeout=None)
|
|
@@ -495,11 +496,11 @@ async def test_foreign_key_pragma_rolls_back_on_foreign_key_error() -> None:
|
|
|
495
496
|
@dataclass
|
|
496
497
|
class RowFactoryCase:
|
|
497
498
|
id: str
|
|
498
|
-
factory: Optional[
|
|
499
|
+
factory: Optional[type[aiosqlite.Row]]
|
|
499
500
|
marks: Marks = ()
|
|
500
501
|
|
|
501
502
|
|
|
502
|
-
row_factory_cases:
|
|
503
|
+
row_factory_cases: list[RowFactoryCase] = [
|
|
503
504
|
RowFactoryCase(id="default named tuple", factory=None),
|
|
504
505
|
RowFactoryCase(id="aiosqlite row", factory=aiosqlite.Row),
|
|
505
506
|
]
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
from dataclasses import dataclass
|
|
4
|
-
from typing import ClassVar, Protocol,
|
|
4
|
+
from typing import ClassVar, Protocol, TypeVar
|
|
5
5
|
|
|
6
6
|
from chia.rpc.rpc_server import RpcApiProtocol, RpcServer, RpcServiceProtocol
|
|
7
7
|
from chia.server.api_protocol import ApiProtocol
|
|
@@ -17,7 +17,7 @@ T_PeerApi = TypeVar("T_PeerApi", bound=ApiProtocol)
|
|
|
17
17
|
class ServiceEnvironment(Protocol[T_Node, T_RpcApi, T_PeerApi]):
|
|
18
18
|
service: Service[T_Node, T_PeerApi, T_RpcApi]
|
|
19
19
|
|
|
20
|
-
__match_args__: ClassVar[
|
|
20
|
+
__match_args__: ClassVar[tuple[str, ...]] = ()
|
|
21
21
|
|
|
22
22
|
@property
|
|
23
23
|
def node(self) -> T_Node: ...
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
from dataclasses import dataclass
|
|
4
|
-
from typing import TYPE_CHECKING, ClassVar,
|
|
4
|
+
from typing import TYPE_CHECKING, ClassVar, cast
|
|
5
5
|
|
|
6
6
|
from chia._tests.environments.common import ServiceEnvironment
|
|
7
7
|
from chia.full_node.full_node import FullNode
|
|
@@ -20,7 +20,7 @@ class FullNodeEnvironment:
|
|
|
20
20
|
None,
|
|
21
21
|
)
|
|
22
22
|
|
|
23
|
-
__match_args__: ClassVar[
|
|
23
|
+
__match_args__: ClassVar[tuple[str, ...]] = ()
|
|
24
24
|
|
|
25
25
|
service: Service[FullNode, FullNodeSimulator, SimulatorFullNodeRpcApi]
|
|
26
26
|
|