Releases: hyriver/pynhd
Releases · hyriver/pynhd
v0.20.0
Release Notes
This release introduces a dedicated ogcapi module that consolidates all OGC API-based web service clients under a single, extensible framework. The module exposes a new OGCAPIBase base class that handles pagination, CQL filtering, geometry queries, feature ID lookups, bounding-box queries, User-Agent identification, optional API-key injection, and automatic cache eviction for error responses. The existing GeoConnex and FabricData classes have been refactored to inherit from OGCAPIBase, and a new NWIS class has been added to access the USGS Water Data OGC API (https://api.waterdata.usgs.gov/ogcapi/v0) as USGS migrates its services to the OGC API standard.
New Features
- Add
NWISclass for accessing the new USGS Water Data OGC API (https://api.waterdata.usgs.gov/ogcapi/v0). USGS is migrating its web services to the OGC API standard; this class provides access to monitoring locations, daily/continuous observations, field/channel measurements, and reference code tables. The class reads theUSGS_API_KEYenvironment variable automatically for higher rate limits. - Add
NLDI.get_characteristics_byidmethod for retrieving local, total, or divergence-routed catchment characteristics for a specific feature directly from the NLDI API. - Add
trim_toleranceparameter toNLDI.navigate_byidandNLDI.navigate_byboxfor controlling how aggressively the first flowline is trimmed whentrim_start=True. - Add
StreamCat.changelog,StreamCat.data_dictionary, andStreamCat.all_metrics_bycomidmethods to expose additional StreamCat API endpoints.
Internal Changes
- Move
GeoConnexandFabricDatafromcoreto the new dedicatedogcapimodule alongside the newNWISclass. - Introduce
OGCAPIBaseas a reusable base class for all OGC API services.GeoConnex,FabricData, andNWISnow inherit from it, making it straightforward to add further OGC API-based services. OGCAPIBasenow sends aUser-Agentheader (pynhd/<version>) on every request so API providers can identify traffic from HyRiver.FabricDataandNWISread theUSGS_API_KEYenvironment variable when no explicitapi_keyis passed.- Error responses (e.g., rate-limit or server errors) are automatically evicted from the HTTP cache so they do not persist across retries.
- Fix type annotations across
core,network_tools,nhdplus_derived,ogcapi,pygeoapi, andpynhdmodules to pass strict Pyright type-checking.
v0.19.4
Release Notes
New Features
- Add the development version of the NLDI web service to the
NLDIclass. This version is not stable and is intended for testing purposes only. The default version is still the production version.
Bug Fixes
- Fix the issue with normalizing variables in
streamcatfunctionc caused by changes in the StreamCat web service.
v0.19.3
Release Notes
Internal Changes
- Use
orjsoninstead ofujsondue to the package not being maintained anymore. The developer ofujsonraised conrcerns about security vulnerabilities and recommended usingorjsoninstead. - Create two new modules called
nldiandpygeoapifor better organization of the codebase.
v0.19.0
Release Notes
Breaking Changes
- Remove
NLDI.getcharacteristic_byidmethod since its endpoint will be removed from the NLDI service. The characteristics can still be accessed via theNLDI.get_characteristicsmethod and only requires specifying the characteristic names and optionally the NHDPlus ComIDs. This method calls thepynhd.nhdplus_attrs_s3function internally. - Switch to using the new StreamCat web service link. While the public API of the
pynhd.streamcatfunction did not change the web service itself might return different results and metrics names have been changed. Thus, this change might affect the results of the function and is considered a breaking change.
New Features
- Add a new optional argument to
pynhd.nhdplus_attrs_s3to pass a PyArrow Expression for filtering the query.
Internal Changes
- Switch to using the new NLDI web service link. Note that NLDI web service now has a rate limit of 3600 requests per hour per IP.
v0.18.0
Release Notes
New Features
- Replace the links to NLDI and PyGeoAPI web services to their new URLs.
- Add two new methods to
GeoConnexclass for queryingbyboxandbyfilter. Note that CQL query is still not working due to an issue with the GeoConnex service. For now, it's recommended to use thebyfiltermethod for most of the queries, including spatial queries. For simple spatial queries, you can use thebyboxmethod then filter the results based on the actual geometry.
Breaking Changes
- Drop support for Python 3.8 since its end-of-life date is October 2024.
- Remove all exceptions from the main module and raise them from the
exceptionsmodule. This is to declutter the public API and make it easier to maintain.
v0.17.1
Release Notes
Internal Changes
- Drop support for Python 3.8 since its end-of-life date is October 2024.
v0.17.0
Release Notes
New Features
- The function
pynhd.streamcatnow can be called without any arguments to get a dataframe of all available metrics and their descriptions.
Internal Changes
- Add the
exceptionsmodule to the high-level API to declutter the main module. In the future, all exceptions will be raised from this module and not from the main module. For now, the exceptions are raised from both modules for backward compatibility. - Switch to using the
srclayout instead of theflatlayout for the package structure. This is to make the package more maintainable and to avoid any potential conflicts with other packages. - Add artifact attestations to the release workflow.
v0.16.3
Release Notes
New Features
- Add support for LakeCat dataset in
streamcatfunction. A new argument calledlakes_onlyis added to the function. If set toTrue, only metrics for lake and their associated catchments will be returned. The default isFalseto retain backward compatibility.
Bug Fixes
- Modify
HP3Dclass based on the latest changes to the 3D Hydrography Program service. Hydrolocation layer has now three sub-layers:hydrolocation_waterbodyfor Sink, Spring, Waterbody Outlet,hydrolocation_flowlinefor Headwater, Terminus, Divergence, Confluence, Catchment Outlet,hydrolocation_reachfor Reach Code, External Connection.
Breaking Changes
- EPA's HMS no longer supports the StreamCat dataset, since they have a dedicated service for it. Thus, the
epa_nhd_catchmentsfunction no longer accepts "streamcat" as an input for thefeatureargument. For all StreamCat queries, use thestreamcatfunction instead. Now, theepa_nhd_catchmentsfunction is essentially useful for getting Curve Number data.
v0.16.2
Release Notes
Bug Fixes
- In
NLDI.get_basins, the indices used to be station IDs but in the previous release they were reset by mistake. This version retains the correct indices.
New Features
- In
nhdplus_l48function, when the layer isNHDFlowline_NetworkorNHDFlowline_NonNetwork, merge allMultiLineStringgeometries toLineString.
v0.16.1
Release Notes
Bug Fixes
- Fix an issue in
network_xsectionandflowline_xsectionrelated to the changes inshapely2 API. Now, these functions should return the correct cross-sections.