Simplify omit http_client in DeviceConfig serialization (#1292)

Related explanation: https://github.com/Fatal1ty/mashumaro/issues/264
This commit is contained in:
Steven B. 2024-11-21 18:18:04 +00:00 committed by GitHub
parent 879aca77d1
commit 5221fc07ca
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -33,12 +33,11 @@ from __future__ import annotations
import logging import logging
from dataclasses import dataclass, field, replace from dataclasses import dataclass, field, replace
from enum import Enum from enum import Enum
from typing import TYPE_CHECKING, Any, Self, TypedDict from typing import TYPE_CHECKING, TypedDict
from aiohttp import ClientSession from aiohttp import ClientSession
from mashumaro import field_options from mashumaro import field_options, pass_through
from mashumaro.config import BaseConfig from mashumaro.config import BaseConfig
from mashumaro.types import SerializationStrategy
from .credentials import Credentials from .credentials import Credentials
from .exceptions import KasaException from .exceptions import KasaException
@ -122,14 +121,6 @@ class DeviceConnectionParameters(_DeviceConfigBaseMixin):
) from ex ) from ex
class _DoNotSerialize(SerializationStrategy):
def serialize(self, value: Any) -> None:
return None # pragma: no cover
def deserialize(self, value: Any) -> None:
return None # pragma: no cover
@dataclass @dataclass
class DeviceConfig(_DeviceConfigBaseMixin): class DeviceConfig(_DeviceConfigBaseMixin):
"""Class to represent paramaters that determine how to connect to devices.""" """Class to represent paramaters that determine how to connect to devices."""
@ -163,7 +154,7 @@ class DeviceConfig(_DeviceConfigBaseMixin):
http_client: ClientSession | None = field( http_client: ClientSession | None = field(
default=None, default=None,
compare=False, compare=False,
metadata=field_options(serialization_strategy=_DoNotSerialize()), metadata=field_options(serialize="omit", deserialize=pass_through),
) )
aes_keys: KeyPairDict | None = None aes_keys: KeyPairDict | None = None
@ -174,9 +165,6 @@ class DeviceConfig(_DeviceConfigBaseMixin):
DeviceFamily.IotSmartPlugSwitch, DeviceEncryptionType.Xor DeviceFamily.IotSmartPlugSwitch, DeviceEncryptionType.Xor
) )
def __pre_serialize__(self) -> Self:
return replace(self, http_client=None)
def to_dict_control_credentials( def to_dict_control_credentials(
self, self,
*, *,