.../dataclasses_json/mm.py:288: UserWarning: Unknown type <class 'bytes'> at MyClass.attribute: dict[str, bytes] | None It's advised to pass the correct marshmallow type to `mm_field`.
Code snippet that reproduces the issue
import base64
from dataclasses import dataclass, field
from enum import Enum
from dataclasses_json import DataClassJsonMixin, LetterCase, Undefined, config
class DataClassJsonCamelMixIn(DataClassJsonMixin):
dataclass_json_config = config(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)['dataclasses_json']
def base64_to_bytes(data: dict[str, str | bytes] | None) -> dict[str, bytes] | None:
if data is not None and all(isinstance(content, str) for content in data.values()):
return {filename: base64.b64decode(content.encode('utf-8')) for filename, content in data.items()}
return data
def bytes_to_base64(data: dict[str, bytes] | None) -> dict[str, str] | None:
if data is not None and all(isinstance(content, bytes) for content in data.values()):
return {filename: base64.b64encode(content).decode('utf-8') for filename, content in data.items()}
return data
@dataclass
class MyClass(DataClassJsonCamelMixIn):
attribute: dict[str, bytes] | None = field( # mapping filename -> binary content
metadata=config(encoder=bytes_to_base64, decoder=base64_to_bytes),
default=None,
)
Description
I'm getting the following warning:
Code snippet that reproduces the issue
Describe the results you expected
I would expect the code to work without warnings.
Python version you are using
3.12
Environment description