This PR merges the 0.8.x maintenance branch to main for release as v0.8.1.
It combines the two maintenance slices defined in plans/api-1.0-redesign.md ([M1] and [M2]) into a single release.
Fixed
- Status URL derivation:
_api_status()no longer hard-codeshttps://overpass-api.de/api/status. It derives the status URL from the configured endpoint by replacing the trailing path component, and accepts an explicitstatus_urlconstructor
argument as an override. - Missing running-queries section: Hardened status parsing when the Overpass status response omits the "Currently running queries" header. Previously this raised
StopIteration; now it correctly returns an empty tuple. - Malformed lines: Unparseable lines in the status response are skipped rather than crashing.
- Coverage: Added fixture-based status tests for derived URLs, custom endpoints, missing headers, and malformed lines.
Deprecated
Every 0.8 API that is removed or renamed in 1.0 now emits DeprecationWarning on use (not on import):
| Deprecated in 0.8 | 1.0 replacement |
|---|---|
overpass.API |
overpass.OverpassClient |
API.Get, API.Search |
Removed |
API.get(build=...) |
client.query_raw(...) |
API.get(responseformat=...) |
client.query(..., output=...) |
API.get(verbosity=...) |
client.query(..., out=...) |
MapQuery |
recipes.bbox_geometry(BBox(...)) |
WayQuery |
recipes.ways_with_nodes(...) |
Utils.to_overpass_id(...) |
AreaId.from_relation(...) |
Utils.to_overpass_id(..., area=True) |
No replacement; way-derived 2400xxx area IDs are unsupported by Overpass API 0.7.57+ |
TimeoutError |
OverpassTimeout |
MultipleRequestsError |
OverpassRateLimited |
ServerLoadError |
OverpassServerBusy |
ServerRuntimeError |
OverpassRuntimeError |
UnknownOverpassError |
OverpassError base or a subclass |
debug=True |
OverpassClient(log_queries=True) |
- Added
tests/test_deprecations.pycovering every deprecated path. - Added a "Migrating to 1.0" section to
README.mdwith a link to the full design document.
This PR merges the `0.8.x` maintenance branch to `main` for release as **v0.8.1**.
It combines the two maintenance slices defined in `plans/api-1.0-redesign.md` ([M1] and [M2]) into a single release.
### Fixed
- **Status URL derivation:** `_api_status()` no longer hard-codes `https://overpass-api.de/api/status`. It derives the status URL from the configured endpoint by replacing the trailing path component, and accepts an explicit `status_url` constructor
argument as an override.
- **Missing running-queries section:** Hardened status parsing when the Overpass status response omits the "Currently running queries" header. Previously this raised `StopIteration`; now it correctly returns an empty tuple.
- **Malformed lines:** Unparseable lines in the status response are skipped rather than crashing.
- **Coverage:** Added fixture-based status tests for derived URLs, custom endpoints, missing headers, and malformed lines.
### Deprecated
Every 0.8 API that is removed or renamed in 1.0 now emits `DeprecationWarning` on use (not on import):
| Deprecated in 0.8 | 1.0 replacement |
|---|---|
| `overpass.API` | `overpass.OverpassClient` |
| `API.Get`, `API.Search` | Removed |
| `API.get(build=...)` | `client.query_raw(...)` |
| `API.get(responseformat=...)` | `client.query(..., output=...)` |
| `API.get(verbosity=...)` | `client.query(..., out=...)` |
| `MapQuery` | `recipes.bbox_geometry(BBox(...))` |
| `WayQuery` | `recipes.ways_with_nodes(...)` |
| `Utils.to_overpass_id(...)` | `AreaId.from_relation(...)` |
| `Utils.to_overpass_id(..., area=True)` | No replacement; way-derived `2400xxx` area IDs are unsupported by Overpass API 0.7.57+ |
| `TimeoutError` | `OverpassTimeout` |
| `MultipleRequestsError` | `OverpassRateLimited` |
| `ServerLoadError` | `OverpassServerBusy` |
| `ServerRuntimeError` | `OverpassRuntimeError` |
| `UnknownOverpassError` | `OverpassError` base or a subclass |
| `debug=True` | `OverpassClient(log_queries=True)` |
- Added `tests/test_deprecations.py` covering every deprecated path.
- Added a "Migrating to 1.0" section to `README.md` with a link to the full design document.