python-kasa/kasa/json.py
Steven B. bf8f0adabe
Return raw discovery result in cli discover raw (#1342)
Add `on_discovered_raw` callback to Discover and adds a cli command `discover raw` which returns the raw json before serializing to a `DiscoveryResult` and attempting to create a device class.
2024-12-10 22:42:14 +00:00

41 lines
1021 B
Python
Executable File

"""JSON abstraction."""
from __future__ import annotations
from collections.abc import Callable
from typing import Any
try:
import orjson
def dumps(
obj: Any, *, default: Callable | None = None, indent: bool = False
) -> str:
"""Dump JSON."""
return orjson.dumps(
obj, option=orjson.OPT_INDENT_2 if indent else None
).decode()
loads = orjson.loads
except ImportError:
import json
def dumps(
obj: Any, *, default: Callable | None = None, indent: bool = False
) -> str:
"""Dump JSON."""
# Separators specified for consistency with orjson
return json.dumps(obj, separators=(",", ":"), indent=2 if indent else None)
loads = json.loads
try:
from mashumaro.mixins.orjson import DataClassORJSONMixin
DataClassJSONMixin = DataClassORJSONMixin
except ImportError:
from mashumaro.mixins.json import DataClassJSONMixin as JSONMixin
DataClassJSONMixin = JSONMixin # type: ignore[assignment, misc]