Add formatters, utils, schemas and version
Some checks failed
CI / test (3.10) (push) Has been cancelled
CI / test (3.11) (push) Has been cancelled
CI / test (3.12) (push) Has been cancelled
CI / test (3.8) (push) Has been cancelled
CI / lint (push) Failing after 12s
CI / test (3.9) (push) Has been cancelled
CI / typecheck (push) Failing after 13s
CI / build-package (push) Failing after 14s

This commit is contained in:
2026-01-29 10:50:27 +00:00
parent 562f1c662c
commit f414a65607

View File

@@ -0,0 +1,54 @@
"""YAML format handler for ConfigForge."""
import yaml
from typing import Any, Dict
from configforge.exceptions import ConversionError
class YAMLHandler:
"""Handler for YAML configuration files."""
@staticmethod
def loads(content: str) -> Dict[str, Any]:
"""Parse YAML content."""
try:
result = yaml.safe_load(content)
return result if result is not None else {}
except yaml.YAMLError as e:
raise ConversionError(f"Invalid YAML: {str(e)}") from e
@staticmethod
def dumps(data: Any, default_flow_style: bool = False) -> str:
"""Serialize data to YAML string."""
try:
return yaml.safe_dump(data, default_flow_style=default_flow_style, allow_unicode=True)
except (TypeError, ValueError) as e:
raise ConversionError(f"Failed to serialize YAML: {str(e)}") from e
@staticmethod
def read(filepath: str) -> Dict[str, Any]:
"""Read and parse YAML file."""
try:
with open(filepath, "r", encoding="utf-8") as f:
result = yaml.safe_load(f)
return result if result is not None else {}
except FileNotFoundError:
raise ConversionError(f"File not found: {filepath}")
except PermissionError:
raise ConversionError(f"Permission denied: {filepath}")
except yaml.YAMLError as e:
raise ConversionError(f"Invalid YAML in {filepath}: {str(e)}") from e
@staticmethod
def write(filepath: str, data: Any, default_flow_style: bool = False) -> None:
"""Write data to YAML file."""
try:
with open(filepath, "w", encoding="utf-8") as f:
yaml.safe_dump(data, f, default_flow_style=default_flow_style, allow_unicode=True)
except FileNotFoundError:
raise ConversionError(f"Directory not found for: {filepath}")
except PermissionError:
raise ConversionError(f"Permission denied to write: {filepath}")
except (TypeError, ValueError) as e:
raise ConversionError(f"Failed to write YAML: {str(e)}") from e