diff --git a/.isort.cfg b/.isort.cfg index 6f2e941e335c..9dfa2fd5db3e 100644 --- a/.isort.cfg +++ b/.isort.cfg @@ -6,8 +6,6 @@ skip_gitignore=true extend_skip= chia/clvm/spend_sim.py chia/cmds/chia.py - chia/cmds/data_funcs.py - chia/cmds/data.py chia/cmds/db.py chia/cmds/db_upgrade_func.py chia/cmds/farm_funcs.py @@ -30,14 +28,6 @@ extend_skip= chia/daemon/keychain_proxy.py chia/daemon/keychain_server.py chia/daemon/server.py - chia/data_layer/data_layer_errors.py - chia/data_layer/data_layer.py - chia/data_layer/data_layer_server.py - chia/data_layer/data_layer_wallet.py - chia/data_layer/data_store.py - chia/data_layer/dl_wallet_store.py - chia/data_layer/download_data.py - chia/data_layer/util/benchmark.py chia/full_node/block_height_map.py chia/full_node/block_store.py chia/full_node/bundle_tools.py @@ -61,7 +51,6 @@ extend_skip= chia/pools/pool_wallet.py chia/protocols/pool_protocol.py chia/protocols/protocol_state_machine.py - chia/rpc/data_layer_rpc_api.py chia/rpc/full_node_rpc_client.py chia/rpc/rpc_client.py chia/rpc/wallet_rpc_api.py @@ -75,7 +64,6 @@ extend_skip= chia/server/node_discovery.py chia/server/peer_store_resolver.py chia/server/reconnect_task.py - chia/server/start_data_layer.py chia/server/start_service.py chia/server/start_wallet.py chia/simulator/simulator_constants.py @@ -112,7 +100,6 @@ extend_skip= chia/wallet/cat_wallet/cat_info.py chia/wallet/cat_wallet/cat_utils.py chia/wallet/cat_wallet/cat_wallet.py - chia/wallet/db_wallet/db_wallet_puzzles.py chia/wallet/derive_keys.py chia/wallet/did_wallet/did_info.py chia/wallet/did_wallet/did_wallet_puzzles.py @@ -165,11 +152,6 @@ extend_skip= tests/core/custom_types/test_coin.py tests/core/custom_types/test_spend_bundle.py tests/core/daemon/test_daemon.py - tests/core/data_layer/conftest.py - tests/core/data_layer/test_data_cli.py - tests/core/data_layer/test_data_rpc.py - tests/core/data_layer/test_data_store.py - tests/core/data_layer/util.py tests/core/full_node/full_sync/test_full_sync.py tests/core/full_node/ram_db.py tests/core/full_node/stores/test_block_store.py @@ -222,11 +204,8 @@ extend_skip= tests/wallet/cat_wallet/test_cat_lifecycle.py tests/wallet/cat_wallet/test_cat_wallet.py tests/wallet/cat_wallet/test_offer_lifecycle.py - tests/wallet/db_wallet/test_db_clvm.py - tests/wallet/db_wallet/test_dl_wallet.py tests/wallet/did_wallet/test_did.py tests/wallet/did_wallet/test_did_rpc.py - tests/wallet/rpc/test_dl_wallet_rpc.py tests/wallet/simple_sync/test_simple_sync_protocol.py tests/wallet/test_singleton_lifecycle_fast.py tests/wallet/test_singleton_lifecycle.py diff --git a/chia/cmds/data.py b/chia/cmds/data.py index 36bd0175cb83..71f73835bc55 100644 --- a/chia/cmds/data.py +++ b/chia/cmds/data.py @@ -1,12 +1,11 @@ import json import logging -from typing import Any, Coroutine, Dict, List, Optional, TypeVar from pathlib import Path +from typing import Any, Coroutine, Dict, List, Optional, TypeVar import click from typing_extensions import Protocol - _T = TypeVar("_T") diff --git a/chia/cmds/data_funcs.py b/chia/cmds/data_funcs.py index fbf9b6651f3b..e6ce131a36dd 100644 --- a/chia/cmds/data_funcs.py +++ b/chia/cmds/data_funcs.py @@ -1,7 +1,7 @@ from decimal import Decimal -from typing import List, Optional, Tuple, Dict, Type -from types import TracebackType from pathlib import Path +from types import TracebackType +from typing import Dict, List, Optional, Tuple, Type import aiohttp @@ -13,7 +13,6 @@ from chia.util.config import load_config from chia.util.default_root import DEFAULT_ROOT_PATH from chia.util.ints import uint16, uint64 - # TODO: there seems to be a large amount of repetition in these to dedupe diff --git a/chia/data_layer/data_layer.py b/chia/data_layer/data_layer.py index b2a1d1c28961..94ac97f1a511 100644 --- a/chia/data_layer/data_layer.py +++ b/chia/data_layer/data_layer.py @@ -1,13 +1,18 @@ +import asyncio import logging -from pathlib import Path -from typing import Any, Callable, Dict, List, Optional, Tuple, Awaitable, Set -import aiosqlite import time import traceback -import asyncio +from pathlib import Path +from typing import Any, Awaitable, Callable, Dict, List, Optional, Set, Tuple + import aiohttp -from chia.data_layer.data_layer_util import InternalNode, TerminalNode, Subscription, DiffData, Status, Root +import aiosqlite + +from chia.data_layer.data_layer_server import DataLayerServer +from chia.data_layer.data_layer_util import DiffData, InternalNode, Root, Status, Subscription, TerminalNode +from chia.data_layer.data_layer_wallet import SingletonRecord from chia.data_layer.data_store import DataStore +from chia.data_layer.download_data import insert_from_delta_file, write_files_for_root from chia.rpc.wallet_rpc_client import WalletRpcClient from chia.server.server import ChiaServer from chia.types.blockchain_format.sized_bytes import bytes32 @@ -16,9 +21,6 @@ from chia.util.db_wrapper import DBWrapper from chia.util.ints import uint32, uint64 from chia.util.path import path_from_root from chia.wallet.transaction_record import TransactionRecord -from chia.data_layer.data_layer_wallet import SingletonRecord -from chia.data_layer.download_data import insert_from_delta_file, write_files_for_root -from chia.data_layer.data_layer_server import DataLayerServer class DataLayer: diff --git a/chia/data_layer/data_layer_errors.py b/chia/data_layer/data_layer_errors.py index 4020014b3a67..3c087efe1fff 100644 --- a/chia/data_layer/data_layer_errors.py +++ b/chia/data_layer/data_layer_errors.py @@ -1,4 +1,4 @@ -from typing import List, Iterable +from typing import Iterable, List from chia.types.blockchain_format.sized_bytes import bytes32 diff --git a/chia/data_layer/data_layer_server.py b/chia/data_layer/data_layer_server.py index 33f74131d1b4..129c9f8c6339 100644 --- a/chia/data_layer/data_layer_server.py +++ b/chia/data_layer/data_layer_server.py @@ -1,10 +1,12 @@ import logging -from typing import Any, Dict -from pathlib import Path -from aiohttp import web from dataclasses import dataclass -from chia.server.upnp import UPnP +from pathlib import Path +from typing import Any, Dict + +from aiohttp import web + from chia.data_layer.download_data import is_filename_valid +from chia.server.upnp import UPnP from chia.util.path import path_from_root diff --git a/chia/data_layer/data_layer_wallet.py b/chia/data_layer/data_layer_wallet.py index 0e246e950a84..c90c38fab3d2 100644 --- a/chia/data_layer/data_layer_wallet.py +++ b/chia/data_layer/data_layer_wallet.py @@ -1,17 +1,17 @@ from __future__ import annotations -import logging -import json -import time import dataclasses +import json +import logging +import time from operator import attrgetter -from typing import Any, Optional, Tuple, Set, List, Dict, Type, TypeVar, TYPE_CHECKING +from typing import TYPE_CHECKING, Any, Dict, List, Optional, Set, Tuple, Type, TypeVar from blspy import G2Element from clvm.EvalError import EvalError from chia.consensus.block_record import BlockRecord -from chia.protocols.wallet_protocol import PuzzleSolutionResponse, CoinState +from chia.protocols.wallet_protocol import CoinState, PuzzleSolutionResponse from chia.wallet.db_wallet.db_wallet_puzzles import ( ACS_MU, ACS_MU_PH, @@ -34,20 +34,29 @@ from chia.types.spend_bundle import SpendBundle from chia.util.ints import uint8, uint32, uint64, uint128 from chia.util.json_util import dict_to_json_str from chia.util.streamable import Streamable, streamable +from chia.wallet.db_wallet.db_wallet_puzzles import ( + ACS_MU, + ACS_MU_PH, + SINGLETON_LAUNCHER, + create_host_fullpuz, + create_host_layer_puzzle, + launch_solution_to_singleton_info, + match_dl_singleton, +) from chia.wallet.derivation_record import DerivationRecord +from chia.wallet.lineage_proof import LineageProof from chia.wallet.outer_puzzles import AssetType from chia.wallet.puzzle_drivers import PuzzleInfo, Solver from chia.wallet.puzzles.singleton_top_layer_v1_1 import SINGLETON_LAUNCHER_HASH from chia.wallet.sign_coin_spends import sign_coin_spends from chia.wallet.trading.offer import Offer, NotarizedPayment from chia.wallet.transaction_record import TransactionRecord -from chia.wallet.wallet_coin_record import WalletCoinRecord -from chia.wallet.lineage_proof import LineageProof from chia.wallet.util.compute_memos import compute_memos from chia.wallet.util.merkle_utils import simplify_merkle_proof from chia.wallet.util.transaction_type import TransactionType from chia.wallet.util.wallet_types import AmountWithPuzzlehash, WalletType from chia.wallet.wallet import Wallet +from chia.wallet.wallet_coin_record import WalletCoinRecord from chia.wallet.wallet_info import WalletInfo if TYPE_CHECKING: diff --git a/chia/data_layer/data_store.py b/chia/data_layer/data_store.py index 0c060ba1ac4b..19697206e678 100644 --- a/chia/data_layer/data_store.py +++ b/chia/data_layer/data_store.py @@ -1,10 +1,11 @@ -import logging -import aiosqlite import json +import logging from collections import defaultdict from dataclasses import dataclass, replace from typing import Any, Awaitable, BinaryIO, Callable, Dict, List, Optional, Set, Tuple +import aiosqlite + from chia.data_layer.data_layer_errors import ( InternalKeyValueError, InternalLeftRightNotBytes32Error, @@ -13,19 +14,19 @@ from chia.data_layer.data_layer_errors import ( TreeGenerationIncrementingError, ) from chia.data_layer.data_layer_util import ( + DiffData, InternalNode, Node, NodeType, - Root, + OperationType, ProofOfInclusion, ProofOfInclusionLayer, + Root, + SerializedNode, Side, - TerminalNode, Status, Subscription, - DiffData, - OperationType, - SerializedNode, + TerminalNode, internal_hash, leaf_hash, row_to_node, diff --git a/chia/data_layer/dl_wallet_store.py b/chia/data_layer/dl_wallet_store.py index 232a4f0bc19c..7c589305fc95 100644 --- a/chia/data_layer/dl_wallet_store.py +++ b/chia/data_layer/dl_wallet_store.py @@ -1,8 +1,8 @@ -from aiosqlite import Row +import dataclasses from typing import List, Optional, Type, TypeVar, Union import aiosqlite -import dataclasses +from aiosqlite import Row from chia.data_layer.data_layer_wallet import SingletonRecord from chia.types.blockchain_format.coin import Coin diff --git a/chia/data_layer/download_data.py b/chia/data_layer/download_data.py index 8eaf18d554a7..e41fb8038753 100644 --- a/chia/data_layer/download_data.py +++ b/chia/data_layer/download_data.py @@ -1,13 +1,15 @@ -import aiohttp import asyncio -import os import logging +import os from pathlib import Path from typing import List, Optional + +import aiohttp from typing_extensions import Literal + +from chia.data_layer.data_layer_util import NodeType, Root, SerializedNode, Status from chia.data_layer.data_store import DataStore from chia.types.blockchain_format.sized_bytes import bytes32 -from chia.data_layer.data_layer_util import NodeType, Status, SerializedNode, Root def get_full_tree_filename(tree_id: bytes32, node_hash: bytes32, generation: int) -> str: diff --git a/chia/data_layer/util/benchmark.py b/chia/data_layer/util/benchmark.py index af6ab393b434..0c705c6b8de9 100644 --- a/chia/data_layer/util/benchmark.py +++ b/chia/data_layer/util/benchmark.py @@ -1,15 +1,17 @@ import asyncio +import os import sys -import aiosqlite import tempfile import time -import os -from typing import Optional, Dict from pathlib import Path -from chia.util.db_wrapper import DBWrapper +from typing import Dict, Optional + +import aiosqlite + +from chia.data_layer.data_layer_util import Side, TerminalNode, leaf_hash from chia.data_layer.data_store import DataStore from chia.types.blockchain_format.sized_bytes import bytes32 -from chia.data_layer.data_layer_util import Side, TerminalNode, leaf_hash +from chia.util.db_wrapper import DBWrapper async def generate_datastore(num_nodes: int, slow_mode: bool) -> None: diff --git a/chia/rpc/data_layer_rpc_api.py b/chia/rpc/data_layer_rpc_api.py index 9c57fde9e27f..0c066ae04549 100644 --- a/chia/rpc/data_layer_rpc_api.py +++ b/chia/rpc/data_layer_rpc_api.py @@ -1,11 +1,10 @@ import dataclasses -from typing import Any, Dict, List, Optional from pathlib import Path +from typing import Any, Dict, List, Optional from chia.data_layer.data_layer import DataLayer from chia.data_layer.data_layer_util import Side, Subscription from chia.rpc.rpc_server import Endpoint, EndpointResult - from chia.types.blockchain_format.sized_bytes import bytes32 from chia.util.byte_types import hexstr_to_bytes diff --git a/chia/server/start_data_layer.py b/chia/server/start_data_layer.py index 7c370bd12abf..311e5f2a62a4 100644 --- a/chia/server/start_data_layer.py +++ b/chia/server/start_data_layer.py @@ -1,14 +1,13 @@ import logging import pathlib from typing import Any, Dict + from chia.data_layer.data_layer import DataLayer from chia.data_layer.data_layer_api import DataLayerAPI - from chia.rpc.data_layer_rpc_api import DataLayerRpcApi from chia.rpc.wallet_rpc_client import WalletRpcClient from chia.server.outbound_message import NodeType from chia.server.start_service import run_service - from chia.util.config import load_config from chia.util.default_root import DEFAULT_ROOT_PATH from chia.util.ints import uint16 diff --git a/chia/wallet/db_wallet/db_wallet_puzzles.py b/chia/wallet/db_wallet/db_wallet_puzzles.py index 79b042197508..e27005447fb1 100644 --- a/chia/wallet/db_wallet/db_wallet_puzzles.py +++ b/chia/wallet/db_wallet/db_wallet_puzzles.py @@ -1,9 +1,9 @@ -from typing import Union, Tuple, Iterator, List +from typing import Iterator, List, Tuple, Union -from chia.types.blockchain_format.sized_bytes import bytes32 from chia.types.blockchain_format.program import Program +from chia.types.blockchain_format.sized_bytes import bytes32 from chia.util.ints import uint64 -from chia.wallet.nft_wallet.nft_puzzles import create_nft_layer_puzzle_with_curry_params, NFT_STATE_LAYER_MOD +from chia.wallet.nft_wallet.nft_puzzles import NFT_STATE_LAYER_MOD, create_nft_layer_puzzle_with_curry_params from chia.wallet.puzzles.load_clvm import load_clvm # from chia.types.condition_opcodes import ConditionOpcode diff --git a/tests/core/data_layer/conftest.py b/tests/core/data_layer/conftest.py index 64e4a1fda6b4..d256a9560cee 100644 --- a/tests/core/data_layer/conftest.py +++ b/tests/core/data_layer/conftest.py @@ -8,19 +8,17 @@ import time from typing import AsyncIterable, Awaitable, Callable, Iterator, List import aiosqlite - -# https://github.com/pytest-dev/pytest/issues/7469 -from _pytest.fixtures import SubRequest import pytest import pytest_asyncio -from chia.data_layer.data_store import DataStore +# https://github.com/pytest-dev/pytest/issues/7469 +from _pytest.fixtures import SubRequest + from chia.data_layer.data_layer_util import Status +from chia.data_layer.data_store import DataStore from chia.types.blockchain_format.tree_hash import bytes32 from chia.util.db_wrapper import DBWrapper - -from tests.core.data_layer.util import add_0123_example, add_01234567_example, ChiaRoot, Example - +from tests.core.data_layer.util import ChiaRoot, Example, add_0123_example, add_01234567_example # TODO: These are more general than the data layer and should either move elsewhere or # be replaced with an existing common approach. For now they can at least be diff --git a/tests/core/data_layer/test_data_cli.py b/tests/core/data_layer/test_data_cli.py index 4d1bd481191d..815f3cf092f4 100644 --- a/tests/core/data_layer/test_data_cli.py +++ b/tests/core/data_layer/test_data_cli.py @@ -5,7 +5,6 @@ import pytest from tests.core.data_layer.util import ChiaRoot - pytestmark = pytest.mark.data_layer diff --git a/tests/core/data_layer/test_data_rpc.py b/tests/core/data_layer/test_data_rpc.py index a94589089799..87851e29b948 100644 --- a/tests/core/data_layer/test_data_rpc.py +++ b/tests/core/data_layer/test_data_rpc.py @@ -1,7 +1,8 @@ import asyncio import contextlib from pathlib import Path -from typing import AsyncIterator, Dict, List, Tuple, Set +from typing import AsyncIterator, Dict, List, Set, Tuple + import pytest import pytest_asyncio @@ -19,6 +20,7 @@ from chia.simulator.simulator_protocol import FarmNewBlockProtocol from chia.types.blockchain_format.sized_bytes import bytes32 from chia.types.peer_info import PeerInfo from chia.util.byte_types import hexstr_to_bytes +from chia.util.config import save_config from chia.util.ints import uint16, uint32 from chia.wallet.wallet_node import WalletNode from tests.block_tools import BlockTools @@ -26,7 +28,6 @@ from tests.setup_nodes import setup_simulators_and_wallets from tests.time_out_assert import time_out_assert from tests.util.socket import find_available_listen_port from tests.wallet.rl_wallet.test_rl_rpc import is_transaction_confirmed -from chia.util.config import save_config pytestmark = pytest.mark.data_layer nodes = Tuple[WalletNode, FullNodeSimulator] diff --git a/tests/core/data_layer/test_data_store.py b/tests/core/data_layer/test_data_store.py index 691ffd617720..739b08f193a1 100644 --- a/tests/core/data_layer/test_data_store.py +++ b/tests/core/data_layer/test_data_store.py @@ -1,19 +1,11 @@ import itertools -from pathlib import Path -import statistics import logging -import aiosqlite - -from typing import Awaitable, Callable, Dict, List, Optional, Tuple, Set, Any -from chia.data_layer.download_data import ( - insert_into_data_store_from_file, - write_files_for_root, - get_full_tree_filename, - get_delta_filename, - is_filename_valid, -) - +import statistics +from pathlib import Path from random import Random +from typing import Any, Awaitable, Callable, Dict, List, Optional, Set, Tuple + +import aiosqlite import pytest from chia.data_layer.data_layer_errors import ( @@ -24,31 +16,33 @@ from chia.data_layer.data_layer_errors import ( TreeGenerationIncrementingError, ) from chia.data_layer.data_layer_util import ( + DiffData, + InternalNode, NodeType, + OperationType, ProofOfInclusion, ProofOfInclusionLayer, + Root, Side, Status, - InternalNode, - TerminalNode, - OperationType, - DiffData, - Root, Subscription, + TerminalNode, _debug_dump, leaf_hash, ) from chia.data_layer.data_store import DataStore +from chia.data_layer.download_data import ( + get_delta_filename, + get_full_tree_filename, + insert_into_data_store_from_file, + is_filename_valid, + write_files_for_root, +) from chia.types.blockchain_format.program import Program from chia.types.blockchain_format.tree_hash import bytes32 from chia.util.byte_types import hexstr_to_bytes from chia.util.db_wrapper import DBWrapper -from tests.core.data_layer.util import ( - add_0123_example, - add_01234567_example, - Example, -) - +from tests.core.data_layer.util import Example, add_0123_example, add_01234567_example log = logging.getLogger(__name__) diff --git a/tests/core/data_layer/util.py b/tests/core/data_layer/util.py index 3c494830052a..4096c95c6070 100644 --- a/tests/core/data_layer/util.py +++ b/tests/core/data_layer/util.py @@ -1,16 +1,16 @@ import contextlib -from dataclasses import dataclass import functools import os import pathlib import subprocess -from typing import Any, Iterator, IO, List, Optional, TYPE_CHECKING, Union +from dataclasses import dataclass +from typing import IO, TYPE_CHECKING, Any, Iterator, List, Optional, Union + from chia.data_layer.data_layer_util import Side, Status from chia.data_layer.data_store import DataStore from chia.types.blockchain_format.program import Program from chia.types.blockchain_format.tree_hash import bytes32 - # from subprocess.pyi _FILE = Union[None, int, IO[Any]] diff --git a/tests/wallet/db_wallet/test_dl_wallet.py b/tests/wallet/db_wallet/test_dl_wallet.py index d111c82edaaf..9b72b1b025e5 100644 --- a/tests/wallet/db_wallet/test_dl_wallet.py +++ b/tests/wallet/db_wallet/test_dl_wallet.py @@ -1,20 +1,18 @@ import asyncio -import pytest -import pytest_asyncio from typing import AsyncIterator, Iterator +import pytest +import pytest_asyncio + +from chia.data_layer.data_layer_wallet import DataLayerWallet +from chia.simulator.simulator_protocol import FarmNewBlockProtocol +from chia.types.blockchain_format.program import Program from chia.types.blockchain_format.sized_bytes import bytes32 from chia.types.peer_info import PeerInfo from chia.util.ints import uint16, uint32, uint64 -from chia.simulator.simulator_protocol import FarmNewBlockProtocol -from tests.setup_nodes import setup_simulators_and_wallets -from chia.data_layer.data_layer_wallet import DataLayerWallet - -from chia.types.blockchain_format.program import Program -from tests.time_out_assert import time_out_assert from chia.wallet.util.merkle_tree import MerkleTree - -from tests.setup_nodes import SimulatorsAndWallets +from tests.setup_nodes import SimulatorsAndWallets, setup_simulators_and_wallets +from tests.time_out_assert import time_out_assert pytestmark = pytest.mark.data_layer diff --git a/tests/wallet/rpc/test_dl_wallet_rpc.py b/tests/wallet/rpc/test_dl_wallet_rpc.py index c44368a8d41f..f44209b105b3 100644 --- a/tests/wallet/rpc/test_dl_wallet_rpc.py +++ b/tests/wallet/rpc/test_dl_wallet_rpc.py @@ -18,7 +18,6 @@ from chia.types.blockchain_format.sized_bytes import bytes32 from chia.types.peer_info import PeerInfo from chia.util.ints import uint16, uint32, uint64 from chia.wallet.wallet_node import WalletNode - from tests.block_tools import BlockTools from tests.setup_nodes import setup_simulators_and_wallets from tests.time_out_assert import time_out_assert