diff --git a/package/test_tools/__private/block_log.py b/package/test_tools/__private/block_log.py index 3b2b9964e5187d1d79e75f688db6e9f2e618eb4d..126f9ba89b52bd01824db0fefca35d414a50236c 100644 --- a/package/test_tools/__private/block_log.py +++ b/package/test_tools/__private/block_log.py @@ -8,12 +8,11 @@ import typing from pathlib import Path from typing import ClassVar, Final, Literal, overload -import msgspec - from schemas.apis.block_api.fundaments_of_responses import ( BlockLogUtilSignedBlockBaseTransaction, BlockLogUtilSignedBlockBaseTransactionLegacy, ) +from schemas.errors import ValidationError from test_tools.__private import paths_to_executables from test_tools.__private.exceptions import BlockLogError, BlockLogUtilError, MissingBlockLogArtifactsError from wax.helpy._interfaces.time import Time, TimeFormats @@ -238,7 +237,7 @@ class BlockLog: if expected_str in output: try: return BlockLogUtilResultTransaction.parse_builtins(json.loads(output)) - except msgspec.ValidationError: + except ValidationError: return BlockLogUtilResultTransactionLegacy.parse_builtins(json.loads(output)) raise BlockLogUtilError(f"Block {block_number} not found or response malformed: `{output}`") diff --git a/package/test_tools/__private/communication.py b/package/test_tools/__private/communication.py index 2e40649210e99c4205d83dcef0404a3fa49b5901..ac5cdb9f1fb42e6598b620c9dbb99b57ce8c00de 100644 --- a/package/test_tools/__private/communication.py +++ b/package/test_tools/__private/communication.py @@ -15,7 +15,6 @@ from schemas._preconfigured_base_model import PreconfiguredBaseModel from schemas.operations import AnyLegacyOperation from beekeepy.exceptions import UnableToAcquireDatabaseLockError, UnableToAcquireForkdbLockError, CommunicationError from loguru import logger -from beekeepy.interfaces import HttpUrl from wax.helpy import Time @@ -26,7 +25,7 @@ class CommonJsonEncoder(json.JSONEncoder): if isinstance(o, JsonString): return o.serialize() if isinstance(o, PreconfiguredBaseModel): - return o.shallow_dict() + return o.dict() return super().default(o) diff --git a/package/test_tools/__private/process/node_arguments.py b/package/test_tools/__private/process/node_arguments.py index 29774f26aa5ec3dd6d21154c25a060463f65e43d..c88eb89503dcca8792e089774943b11d9cffef36 100644 --- a/package/test_tools/__private/process/node_arguments.py +++ b/package/test_tools/__private/process/node_arguments.py @@ -5,8 +5,8 @@ from typing import TYPE_CHECKING, Any, Literal, overload from beekeepy.handle.runnable import Arguments from beekeepy.interfaces import HttpUrl, P2PUrl, Url, WsUrl -from msgspec import field +from schemas.base import field from test_tools.__private.process.node_commons import PathQuoted, QuotedMarker, StringQuoted, UniqueList if TYPE_CHECKING: diff --git a/package/test_tools/__private/process/node_commons.py b/package/test_tools/__private/process/node_commons.py index a3409e54c32c4f9cf553739db6b5245a53305d4b..f583fb66cf7be9b821914827c127ddce3c37b0a8 100644 --- a/package/test_tools/__private/process/node_commons.py +++ b/package/test_tools/__private/process/node_commons.py @@ -4,8 +4,7 @@ from collections.abc import Iterable from pathlib import Path from typing import TYPE_CHECKING, Any, Generic, Literal, TypeVar, get_args -import msgspec - +from schemas.base import convert from schemas.fields.resolvables import Resolvable if TYPE_CHECKING: @@ -81,7 +80,7 @@ class UniqueList(list[T], Resolvable["UniqueList[T]", list[T]], Generic[T]): if len(value) == 0: return UniqueList() non_empty_str_t = get_args(incoming_cls)[0] - return UniqueList(msgspec.convert(value, type=list[non_empty_str_t])) # type: ignore[valid-type] + return UniqueList(convert(value, type=list[non_empty_str_t])) # type: ignore[valid-type] def serialize(self) -> Any: return list(self) diff --git a/package/test_tools/__private/process/node_config.py b/package/test_tools/__private/process/node_config.py index c4228adcbff1afb1edd2893caabb0873c3b74fb8..f623912c34f1290ae7ae055db785bba90c648745 100644 --- a/package/test_tools/__private/process/node_config.py +++ b/package/test_tools/__private/process/node_config.py @@ -5,8 +5,8 @@ from typing import Any, Final, TypeGuard, overload from beekeepy.handle.runnable import Config from beekeepy.interfaces import HttpUrl, P2PUrl, Url, WsUrl -from msgspec import field +from schemas.base import field from test_tools.__private.process.node_commons import ( BacktraceAllowedValues, PathQuoted, diff --git a/package/test_tools/__private/wallet/wallet_api.py b/package/test_tools/__private/wallet/wallet_api.py index 4bb95edfc38ad7c714aa894956d85ebb50110fb1..0a95b3a1e34891960ce63eae161f1a4cb92468e0 100644 --- a/package/test_tools/__private/wallet/wallet_api.py +++ b/package/test_tools/__private/wallet/wallet_api.py @@ -93,7 +93,6 @@ from wax.exceptions import WaxValidationFailedError if TYPE_CHECKING: from collections.abc import Callable - import msgspec from beekeepy._interface.abc.synchronous.wallet import UnlockedWallet import schemas.apis.database_api.fundaments_of_reponses as fundaments_database_api @@ -125,6 +124,7 @@ if TYPE_CHECKING: ListRcDirectDelegations, ListWitnesses, ) + from schemas.base import Meta from schemas.fields.assets import AssetHbd, AssetVests from schemas.fields.hex import Hex from schemas.fields.hive_int import HiveInt @@ -1309,7 +1309,7 @@ class Api: @warn_if_only_result_set() def get_active_witnesses( self, include_future: bool, only_witnesses: bool = False, only_result: bool | None = None # noqa: ARG002 - ) -> Annotated[list[AccountName], msgspec.Meta(min_length=1, max_length=21)] | GetActiveWitnesses: + ) -> Annotated[list[AccountName], Meta(min_length=1, max_length=21)] | GetActiveWitnesses: """ Retrieves the list of active witnesses. diff --git a/poetry.lock b/poetry.lock index 2f8cbe3cf582a454282956209a42668f8213e4b4..911763f3b523ea2ea06255b2c92eb7a2b3b80fed 100644 --- a/poetry.lock +++ b/poetry.lock @@ -184,13 +184,13 @@ tests-no-zope = ["cloudpickle ; platform_python_implementation == \"CPython\"", [[package]] name = "beekeepy" -version = "0.0.1.dev410+452d0be" +version = "0.0.1.dev413+0bc0d4b" description = "All in one package for beekeeper interaction via Python interface." optional = false python-versions = ">=3.12,<4.0" groups = ["main"] files = [ - {file = "beekeepy-0.0.1.dev410+452d0be-py3-none-any.whl", hash = "sha256:fa755e2b8524609d9d3d6d71fa8144fa43dc660cb9506debdbd48cff8be2942f"}, + {file = "beekeepy-0.0.1.dev413+0bc0d4b-py3-none-any.whl", hash = "sha256:f9a17976648a43accc91b345fb46989feb93b376616f59dc9808198001d62e47"}, ] [package.dependencies] @@ -200,7 +200,7 @@ loguru = "0.7.2" psutil = "7.0.0" python-dateutil = "2.8.2" requests = "2.32.3" -schemas = "0.0.1.dev393+d04802f" +schemas = "0.0.1.dev424+eeb5c94" [package.source] type = "legacy" @@ -324,17 +324,17 @@ markers = {main = "sys_platform == \"win32\"", dev = "platform_system == \"Windo [[package]] name = "database-api" -version = "1.27.11rc6.dev350+dcbf18cf6" +version = "1.27.11rc6.dev353+108f17fef" description = "" optional = false python-versions = ">=3.12,<4.0" groups = ["main"] files = [ - {file = "database_api-1.27.11rc6.dev350+dcbf18cf6-py3-none-any.whl", hash = "sha256:f7e5dd3e5d48d7350a5e0b43b6880a9d860f5c46cd113b73d38c0bf4d90c7a2a"}, + {file = "database_api-1.27.11rc6.dev353+108f17fef-py3-none-any.whl", hash = "sha256:0946e7532a45667a29744866ff1f8c6c539949b07bbb2cafa49bfba2142369af"}, ] [package.dependencies] -beekeepy = "0.0.1.dev410+452d0be" +beekeepy = "0.0.1.dev413+0bc0d4b" [package.source] type = "legacy" @@ -825,17 +825,17 @@ files = [ [[package]] name = "network-broadcast-api" -version = "1.27.11rc6.dev350+dcbf18cf6" +version = "1.27.11rc6.dev353+108f17fef" description = "" optional = false python-versions = ">=3.12,<4.0" groups = ["main"] files = [ - {file = "network_broadcast_api-1.27.11rc6.dev350+dcbf18cf6-py3-none-any.whl", hash = "sha256:577ec88406b23f89a2aa6ed3a64f86c19e9c406bececb14a27003d0bfa432a01"}, + {file = "network_broadcast_api-1.27.11rc6.dev353+108f17fef-py3-none-any.whl", hash = "sha256:34b4a4925415fd4f0474bc523a8b37caa3faaf716188f9bd47e10792cac0192d"}, ] [package.dependencies] -beekeepy = "0.0.1.dev410+452d0be" +beekeepy = "0.0.1.dev413+0bc0d4b" [package.source] type = "legacy" @@ -1275,21 +1275,18 @@ files = [ [[package]] name = "schemas" -version = "0.0.1.dev393+d04802f" +version = "0.0.1.dev424+eeb5c94" description = "Tools for checking if message fits expected format" optional = false python-versions = ">=3.12,<4.0" groups = ["main"] files = [ - {file = "schemas-0.0.1.dev393+d04802f-py3-none-any.whl", hash = "sha256:9624e7c143c4c88319a20866297ca75dadd2e1d990cf496d4a65b35e1ef9bdc9"}, + {file = "schemas-0.0.1.dev424+eeb5c94-py3-none-any.whl", hash = "sha256:eaa87991fbec3878d1f3fbba1cf9562995364b80530787d1eb7598ad62bdea72"}, ] [package.dependencies] msgspec = "0.18.6" -[package.extras] -api-generation = ["datamodel-code-generator (==0.30.1)", "ruff (==0.11.5)"] - [package.source] type = "legacy" url = "https://gitlab.syncad.com/api/v4/projects/362/packages/pypi/simple" @@ -1392,20 +1389,20 @@ test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess [[package]] name = "wax" -version = "0.3.10.dev838+6ea08665" +version = "0.3.10.dev841+5ac4412f" description = "" optional = false python-versions = ">=3.12,<4.0" groups = ["main"] files = [ - {file = "wax-0.3.10.dev838+6ea08665-cp312-cp312-manylinux_2_39_x86_64.whl", hash = "sha256:aac95565952e2380eba12bb3286b98eb754d4339977aea6fb0b9600ac6521717"}, + {file = "wax-0.3.10.dev841+5ac4412f-cp312-cp312-manylinux_2_39_x86_64.whl", hash = "sha256:7b472a060529bcd9fd4e7e4ddde1ab32c0453563b2260bb756da8215c15bd3e3"}, ] [package.dependencies] -database-api = "1.27.11rc6.dev350+dcbf18cf6" +database-api = "1.27.11rc6.dev353+108f17fef" httpx = {version = "0.23.3", extras = ["http2"]} loguru = "0.7.2" -network-broadcast-api = "1.27.11rc6.dev350+dcbf18cf6" +network-broadcast-api = "1.27.11rc6.dev353+108f17fef" protobuf = "4.24.4" python-dateutil = "2.8.2" requests = "2.32.3" @@ -1531,4 +1528,4 @@ propcache = ">=0.2.0" [metadata] lock-version = "2.1" python-versions = "^3.12" -content-hash = "a39c9968e583585212efda666dd247dac93ea5c4859435061d8c4de10e216e15" +content-hash = "c58a645709f14142ed70c9115526c5fbb465b831ea027ff8ea22ae1d8b121ac4" diff --git a/pyproject.toml b/pyproject.toml index 5374ee27383357c2625d0bcbf023a11d8366b690..5c3e276526aa73c6a1674fa5118bddb2e3b74485 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -28,7 +28,7 @@ python = "^3.12" python-dateutil = "2.8.2" abstractcp = "0.9.9" loguru = "0.7.2" -wax = "0.3.10.dev838+6ea08665" +wax = "0.3.10.dev841+5ac4412f" [tool.poetry.group.dev.dependencies] diff --git a/tests/conftest.py b/tests/conftest.py index 8bfdc80a54cabf7ad471d2adc1f6e7d706a922c2..9ff90592eec6b05d0996b688c82a7ab48b54e6fe 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -8,7 +8,7 @@ from loguru import logger from test_tools.__private.scope.scope_fixtures import * # noqa: F403 from schemas.policies.policy import set_policies -from schemas.policies.testnet_assets import TestnetAssets +from schemas.policies.testnet_assets import TestnetAssetsPolicy @pytest.fixture(autouse=True) @@ -24,7 +24,7 @@ def pytest_sessionstart() -> None: @pytest.fixture(autouse=True) def _use_testnet_assets() -> None: - set_policies(TestnetAssets(use_testnet_assets=True)) + set_policies(TestnetAssetsPolicy(use_testnet_assets=True)) @pytest.fixture(name="node") diff --git a/tests/functional_tests/wallet_tests/test_api_helper_methods.py b/tests/functional_tests/wallet_tests/test_api_helper_methods.py index 4dbd4929e3c5371c94f31e64e18cf6cea51187ee..79c1c45c7e78ec425f9b09a4e97b9d6e1a5c92cc 100644 --- a/tests/functional_tests/wallet_tests/test_api_helper_methods.py +++ b/tests/functional_tests/wallet_tests/test_api_helper_methods.py @@ -3,8 +3,6 @@ from __future__ import annotations import pytest import test_tools as tt -from schemas.fields.assets._base import AssetNaiAmount - @pytest.fixture def node(request: pytest.FixtureRequest) -> tt.InitNode: @@ -41,7 +39,7 @@ def test_creation_of_huge_number_of_accounts(node: tt.InitNode, wallet: tt.Walle url="https://initminer.com", block_signing_key=tt.Account("initminer").public_key, props={ - "account_creation_fee": tt.Asset.TestT(amount=AssetNaiAmount(1)), + "account_creation_fee": tt.Asset.Test(amount=1), "maximum_block_size": 2097152, "hbd_interest_rate": 0, }, @@ -82,7 +80,7 @@ def test_creation_of_huge_number_of_accounts_and_import_keys(node: tt.InitNode, url="https://initminer.com", block_signing_key=tt.Account("initminer").public_key, props={ - "account_creation_fee": tt.Asset.TestT(amount=AssetNaiAmount(1)), + "account_creation_fee": tt.Asset.Test(amount=1), "maximum_block_size": 2097152, "hbd_interest_rate": 0, },