class_docstr: SerDe Mixin for dataclass. dataclasses which can be represented as JSON can implement `SerDe` simply by inheriting this Mixin.
  
  >>> @dataclass
      class DataClassFoo(SerDeDataclassMixin):
          ...
  >>> d = DataClassFoo()
  >>> camphr.serde.to_disk(d, "path/to/save")
class_docstr_tok: ["SerDe","Mixin","for","dataclass",".","dataclasses","which","can","be","represented","as","JSON","can","implement","`","SerDe","`","simply","by","inheriting","this","Mixin",".",">",">",">","@","dataclass","class","DataClassFoo","(","SerDeDataclassMixin",")",":","...",">",">",">","d","=","DataClassFoo","(",")",">",">",">","camphr.serde.to_disk","(","d",",","``","path\/to\/save","''",")"]
docstr: Load cls from json file.
docstr_tok: ["Load","cls","from","json","file","."]
code: def from_disk(
      cls: Type[T_SerdeDataclass], path: Path
  ) -> T_SerdeDataclass:
      """Load cls from json file."""
      meta_path = path / cls.FILENAME
      try:
          data = dataclass_utils.into(
              json.loads(meta_path.read_text()), cls
          )
      except dataclass_utils.error.Error as e:
          raise ValueError("Invalid metadata content.") from e
      return data
  
imports: from dataclasses import dataclass, asdict
  import importlib
  import dataclass_utils.error
  import pickle
  from pathlib import Path
  from typing import Any, ClassVar, List, Tuple, Type, TypeVar
  import dataclass_utils
  from typing_extensions import Protocol, runtime_checkable
  import json
label_desc: Use image node_id 2 for calling the SerDeDataclassMixin obj's underlying member method code with example usage: obj.from_disk(cls, path) and returns: data