from .base_schema import BaseSchema
from .base_value_type import BaseValueType
-from .parsing import parse, parse_json, parse_yaml
+from .parsing import parse, parse_json, parse_yaml, try_to_parse
__all__ = [
"BaseValueType",
"parse",
"parse_yaml",
"parse_json",
+ "try_to_parse",
]
def parse_json(data: str) -> Any:
return _Format.JSON.parse_to_dict(data)
+
+
+def try_to_parse(data: str) -> ParsedTree:
+ """Attempt to parse the data as a YAML or JSON string."""
+ try:
+ return parse_yaml(data)
+ except yaml.YAMLError as ye:
+ try:
+ return parse_json(data)
+ except json.JSONDecodeError as je:
+ raise DataParsingError(f"failed to parse data, YAML: {ye}, JSON: {je}")