Skip to content

Commit

Permalink
fix: reuse msgspec Encoder and Decoder instances (#19)
Browse files Browse the repository at this point in the history
  • Loading branch information
guacs committed Sep 17, 2023
1 parent a5a290e commit b6adda3
Showing 1 changed file with 8 additions and 6 deletions.
14 changes: 8 additions & 6 deletions advanced_alchemy/config/engine.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,23 +15,25 @@
from advanced_alchemy.config.types import EmptyType

try:
from msgspec.json import decode as decode_json
from msgspec.json import encode as _encode_json
from msgspec.json import Decoder, Encoder

encoder, decoder = Encoder(), Decoder()
decode_json = decoder.decode

def encode_json(data: Any) -> str:
return _encode_json(data).decode("utf-8")
return encoder.encode(data).decode("utf-8")

except ImportError:
try:
from orjson import dumps as _encode_json # type: ignore[no-redef]
from orjson import dumps as _encode_json
from orjson import loads as decode_json # type: ignore[no-redef]

def encode_json(data: Any) -> str:
return _encode_json(data).decode("utf-8")
return _encode_json(data).decode("utf-8") # type: ignore[no-any-return]

except ImportError:
from json import dumps as encode_json # type: ignore[assignment]
from json import loads as decode_json # type: ignore[no-redef]
from json import loads as decode_json # type: ignore[assignment]

__all__ = ("EngineConfig",)

Expand Down

0 comments on commit b6adda3

Please sign in to comment.