v1.2.0 is a major release. It adds two new data modules — wateruse (USGS National Water Availability Assessment Data Companion) and ngwmn (National Ground-Water Monitoring Network) — both built on a new, API-agnostic OGC engine; migrates the HTTP layer from requests to httpx (unlocking the async, auto-chunked waterdata fan-out); and unifies every module's request failures under a single DataRetrievalError exception taxonomy. It also lands the breaking changes the 1.x line had been deferring: Python 3.10+ is now required, services are accessed through their submodules rather than the flattened top-level namespace, get_samples parameters are snake_case (camelCase still accepted via a shim), and the deprecated nadp / samples shims and NWIS_Metadata.variable_info are removed. Alongside these, a large batch of reliability fixes harden the waterdata OGC getters (chunking, DST handling, error surfacing) and repair wqp / nldi / streamstats edge cases.
Breaking changes
- Require Python >=3.10 and remove the deprecated
NWIS_Metadata.variable_infoproperty by @thodson-usgs in #332 - Access services via their submodules instead of the flattened top-level namespace by @thodson-usgs in #315
- Unify request failures under a
DataRetrievalErrortaxonomy by @thodson-usgs in #313 - Refine the error taxonomy to a lean, idiomatic form by @thodson-usgs in #319
- snake_case the
get_samplesparameters (camelCase kept via a shim) by @thodson-usgs in #331 - Remove the
nadpmodule and the deprecatedsamplesshim by @thodson-usgs in #330 - Return
(df, BaseMetadata)fromget_codesby @thodson-usgs in #301 - Migrate the HTTP layer from
requeststohttpxby @thodson-usgs in #289
New modules and features
- Add the
waterusemodule for USGS NWDC water-use data by @thodson-usgs in #328 - Add NGWMN getters on a shared, API-agnostic OGC engine by @thodson-usgs in #324
- Add
get_cqlfor generalized CQL2 queries by @thodson-usgs in #284 - Add an async parallel chunker over
httpx.AsyncClientby @thodson-usgs in #285 - Compact CQL2 JSON to halve the POST chunk count by @thodson-usgs in #292
Reliability and bug fixes
- Naive datetime filters shifted an hour across the DST boundary by @thodson-usgs in #307
- numpy array / Series numeric params leaked their repr into the query by @thodson-usgs in #308
- Raise
RequestTooLargefor an unchunkable over-budget request instead of a silent 414 by @thodson-usgs in #309 - Preserve leading zeros on WQP code columns (HUCs, parameter codes, FIPS) by @thodson-usgs in #311
- Drop
idfrom the wirepropertiessodaily/continuousdon't 400 by @thodson-usgs in #323 - Gate the chunked fan-out with a semaphore, not the connection pool by @thodson-usgs in #322
get_ratings— don't abort on one bad feature, don't silently truncate by @thodson-usgs in #304- Repair
WQP_Metadata.site_infoandstreamstats.Watershedby @thodson-usgs in #295 - Repair
WQP_Metadata.site_info(was alwaysNone) by @thodson-usgs in #305 - Return an empty
GeoDataFrameinstead of crashing on emptynldiresults by @thodson-usgs in #302 - Coherent error handling and safe cleanups for the non-OGC getters by @thodson-usgs in #298
- Stop
nwisemitting aDeprecationWarningat import time by @thodson-usgs in #300 - Small coherence cleanups (annotations, column order, defensiveness) by @thodson-usgs in #306
Docs, testing, and hygiene
- Migrate the userguide, examples, and notebooks to the Water Data API by @thodson-usgs in #290
- Python ports of the new USGS Water Data API vignettes by @thodson-usgs in #291
- Set up mypy and tighten the package to
mypy --strictby @thodson-usgs in #314 - Collapse the eight
wqpwhat_*bodies into a shared_whathelper by @thodson-usgs in #320 - Unify
last_modifiedtyping and reference/build fixups by @thodson-usgs in #326 - Add AGENTS.md and switch pre-commit to ruff-only by @thodson-usgs in #293
- Point
get_samplesdocs atget_codes(), not nonexistent*_lookup()helpers by @thodson-usgs in #303 - Drop R-analogue notes from getter docstrings by @thodson-usgs in #299
- Fix the WQP README example unpacking and stale install instructions by @thodson-usgs in #296
- Copy-edit docstrings and comments for clarity and accuracy by @thodson-usgs in #316
- Copy-edit guides and fix demo-notebook narrative/code inconsistencies by @thodson-usgs in #321
- Misc cleanups from the package review (bbox docs, nwis, empty-list) by @thodson-usgs in #312
- Unify a shared flaky-rerun marker; fix an nwis collection-time call by @thodson-usgs in #329
- Rerun flaky transient 5xx/429 from the chunked fan-out by @thodson-usgs in #325
- Mock the remaining live NWIS tests to stop the CI flakes by @thodson-usgs in #334
- Prune tautological and redundant tests by @thodson-usgs in #335
- Parametrize the
wqpwhat_*tests and factor shared assertions by @thodson-usgs in #336 - Parametrize two clean duplicated-test clusters by @thodson-usgs in #337
Full Changelog: v1.1.5...v1.2.0