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)