diff --git a/aleph_message/exceptions.py b/aleph_message/exceptions.py index c8f7873..de043c3 100644 --- a/aleph_message/exceptions.py +++ b/aleph_message/exceptions.py @@ -1,2 +1 @@ -class UnknownHashError(ValueError): - ... +class UnknownHashError(ValueError): ... diff --git a/aleph_message/models/__init__.py b/aleph_message/models/__init__.py index 4f15e42..3c6e7d0 100644 --- a/aleph_message/models/__init__.py +++ b/aleph_message/models/__init__.py @@ -6,14 +6,14 @@ from pathlib import Path from typing import Any, Dict, List, Literal, Optional, Type, TypeVar, Union, cast -from pydantic import BaseModel, Extra, Field, validator +from pydantic import BaseModel, Field, validator from typing_extensions import TypeAlias from .abstract import BaseContent from .base import Chain, HashType, MessageType +from .execution.base import MachineType, Payment, PaymentType # noqa from .execution.instance import InstanceContent from .execution.program import ProgramContent -from .execution.base import PaymentType, MachineType, Payment # noqa from .item_hash import ItemHash, ItemType @@ -22,9 +22,6 @@ class MongodbId(BaseModel): oid: str = Field(alias="$oid") - class Config: - extra = Extra.forbid - class ChainRef(BaseModel): """Some POST messages have a 'ref' field referencing other content""" @@ -44,9 +41,6 @@ class MessageConfirmationHash(BaseModel): binary: str = Field(alias="$binary") type: str = Field(alias="$type") - class Config: - extra = Extra.forbid - class MessageConfirmation(BaseModel): """Format of the result when a message has been confirmed on a blockchain""" @@ -61,16 +55,10 @@ class MessageConfirmation(BaseModel): default=None, description="The address that published the transaction." ) - class Config: - extra = Extra.forbid - class AggregateContentKey(BaseModel): name: str - class Config: - extra = Extra.forbid - class PostContent(BaseContent): """Content of a POST message""" @@ -92,9 +80,6 @@ def check_type(cls, v, values): raise ValueError("A 'ref' is required for POST type 'amend'") return v - class Config: - extra = Extra.forbid - class AggregateContent(BaseContent): """Content of an AGGREGATE message""" @@ -104,9 +89,6 @@ class AggregateContent(BaseContent): ) content: Dict = Field(description="The content of an aggregate must be a dict") - class Config: - extra = Extra.forbid - class StoreContent(BaseContent): """Content of a STORE message""" @@ -118,9 +100,6 @@ class StoreContent(BaseContent): ref: Optional[str] = None metadata: Optional[Dict[str, Any]] = Field(description="Metadata of the VM") - class Config: - extra = Extra.allow - class ForgetContent(BaseContent): """Content of a FORGET message""" @@ -238,7 +217,6 @@ def convert_float_to_datetime(cls, v, values): return v class Config: - extra = Extra.forbid exclude = {"id_", "_id"} @@ -403,6 +381,3 @@ class MessagesResponse(BaseModel): pagination_total: int pagination_per_page: int pagination_item: str - - class Config: - extra = Extra.forbid diff --git a/aleph_message/models/abstract.py b/aleph_message/models/abstract.py index f272dbd..1882f01 100644 --- a/aleph_message/models/abstract.py +++ b/aleph_message/models/abstract.py @@ -1,4 +1,4 @@ -from pydantic import BaseModel, Extra +from pydantic import BaseModel def hashable(obj): @@ -23,6 +23,3 @@ class BaseContent(BaseModel): address: str time: float - - class Config: - extra = Extra.forbid diff --git a/aleph_message/models/execution/abstract.py b/aleph_message/models/execution/abstract.py index 833ba7c..c6271b5 100644 --- a/aleph_message/models/execution/abstract.py +++ b/aleph_message/models/execution/abstract.py @@ -5,14 +5,10 @@ from pydantic import Field -from .environment import ( - FunctionEnvironment, - HostRequirements, - MachineResources, -) +from ..abstract import BaseContent, HashableModel from .base import Payment +from .environment import FunctionEnvironment, HostRequirements, MachineResources from .volume import MachineVolume -from ..abstract import BaseContent, HashableModel class BaseExecutableContent(HashableModel, BaseContent, ABC): diff --git a/aleph_message/models/execution/environment.py b/aleph_message/models/execution/environment.py index 1e97073..8e34ed0 100644 --- a/aleph_message/models/execution/environment.py +++ b/aleph_message/models/execution/environment.py @@ -28,9 +28,6 @@ class FunctionTriggers(HashableModel): description="Persist the execution of the program instead of running it on demand.", ) - class Config: - extra = Extra.forbid - class NetworkProtocol(str, Enum): tcp = "tcp" @@ -78,9 +75,6 @@ class CpuProperties(HashableModel): default=None, description="CPU vendor. Allows other vendors." ) - class Config: - extra = Extra.forbid - class HypervisorType(str, Enum): qemu = "qemu" @@ -101,9 +95,6 @@ class NodeRequirements(HashableModel): default=None, description="Node address must match this regular expression" ) - class Config: - extra = Extra.forbid - class HostRequirements(HashableModel): cpu: Optional[CpuProperties] = Field( diff --git a/aleph_message/models/execution/volume.py b/aleph_message/models/execution/volume.py index 0fd0c9e..5fbe9b7 100644 --- a/aleph_message/models/execution/volume.py +++ b/aleph_message/models/execution/volume.py @@ -16,10 +16,11 @@ class AbstractVolume(HashableModel, ABC): mount: Optional[str] = None @abstractmethod - def is_read_only(self): - ... + def is_read_only(self): ... class Config: + # This is the only type where we really need to forbid extra fields. + # Otherwise the pydantic_encoder will take the first allowed type instead of the correct one. extra = Extra.forbid