Context
OData service discovery, metadata parsing, and query execution currently parse responses without checking HTTP status or converting parser failures into clear project exceptions.
Scope
Add explicit error handling around OData service root fetches, $metadata fetches, JSON parsing, XML parsing, and query responses.
Branching
Create the implementation branch from project-health-hardening and merge the fix back into project-health-hardening before any merge to main.
Acceptance Criteria
- OData 404, 429, 5xx, malformed JSON, and malformed XML raise clear
ODataError or a documented subclass.
- Error messages include enough context to identify service root, metadata, or query failure.
- Unit tests cover sync and async query error paths where applicable.
uv run pytest -m "not integration", Ruff, and mypy pass.
Context
OData service discovery, metadata parsing, and query execution currently parse responses without checking HTTP status or converting parser failures into clear project exceptions.
Scope
Add explicit error handling around OData service root fetches,
$metadatafetches, JSON parsing, XML parsing, and query responses.Branching
Create the implementation branch from
project-health-hardeningand merge the fix back intoproject-health-hardeningbefore any merge tomain.Acceptance Criteria
ODataErroror a documented subclass.uv run pytest -m "not integration", Ruff, and mypy pass.