Source code for doitoml.sources.json._json
"""A base class for JSON sources."""
import json
from pathlib import Path
from typing import Any
from doitoml.errors import ParseError
from doitoml.sources._source import JsonLikeSource, Parser
[docs]
class JsonSource(JsonLikeSource):
[docs]
def parse(self, data: str) -> Any:
try:
return json.loads(data)
except json.JSONDecodeError as err:
message = f"Failed to even parse {self.path}"
raise ParseError(message) from err
[docs]
class JsonParser(Parser):
"""A parser for JSON files."""
def __call__(self, path: Path) -> JsonSource:
"""Find a JSON Source."""
return JsonSource(path)