← Back to all sparks
R

rATTAINS

ANALYTICS
Velocity0.0

R package rATTAINS by mps9506 — release notes from GitHub.

The R client for EPA water quality data spent two releases undoing its own promises about data shape.

water-qualityepa-datar-packageapi-wrapperenvironmental-datadependency-reduction
Current state
rATTAINS wraps the EPA's ATTAINS API, which holds state water quality assessments and impaired-waters listings. The package reached 1.0.0 by promising stable, consistently rectangled return structures, then walked that promise back in 1.1.0 when it dropped the dependency doing the rectangling. As of 1.2.0 it also requires an API key, because ATTAINS itself began requiring one in May 2026.
Where it's heading
The direction is toward a thinner, lower-maintenance wrapper. Caching went in 0.1.4 when hoardr was archived, tidyjson and janitor went earlier, tibblify went in 1.1.0, and each removal handed a little more data-shaping responsibility back to the user — the current advice is to pass .unnest = FALSE and rectangle the results with whatever tidying package you prefer. Release cadence is slow and mostly reactive: upstream API terms, archived dependencies, and compatibility with test tooling account for most of the log. The package's centre of gravity is staying installable and honest about what ATTAINS returns rather than smoothing it over.
Prediction
Given the pattern, the next release is likelier to be a compatibility or upstream-driven fix than new endpoint coverage; how the API key requirement affects users in scripted and CI contexts is the obvious open question the entries do not yet answer.

Recent moves

  1. 1mo ago

    ATTAINS now requires an API key, and the package follows

    Not a change the package chose: the EPA began requiring an API key for ATTAINS in May 2026, and this release adds the plumbing to supply one. Every existing user now has a registration step before their scripts run again, which is the second consecutive release where the practical work was absorbing someone else's decision.

    View source ↗
  2. 8mo ago

    The tibblify dependency goes, and with it the stable data shapes

    ⚡ SPARK

    1.0.0's headline commitment was consistent return structures across web calls, delivered via tibblify. This release removes that dependency and states plainly that some endpoints may now return different lists or incompletely unnested data frames — the guarantee is rescinded and the recommended workflow is to opt out of unnesting entirely.

    View source ↗
  3. 1y ago

    Test suite updated for vcr v2

    A compatibility update to the HTTP mocking used in tests, with no effect on the package's behaviour for users. Housekeeping between the two releases that actually mattered.

    View source ↗
  4. 3y ago

    1.0.0 commits to stable return structures via tibblify

    The release that set the terms later walked back: every API function routed through tibblify so return shapes stayed consistent between calls, with .unnest added to let users opt into the raw nested structure. Read against 1.1.0, it is also the high-water mark of the package's willingness to carry dependencies in exchange for tidier output.

    View source ↗
  5. 3y ago

    Caching removed after hoardr was archived

    A breaking removal driven entirely by an upstream package being archived — caching disappears rather than being reimplemented. The earliest instance of the dependency-shedding reflex that later claims tibblify.

    View source ↗
  6. 4y ago

    Requests retry on timeout, with offline detection

    Switching from GET to RETRY and adding connectivity checks with clear messages addresses the ordinary failure mode of a federal API that times out. Modest, but the kind of reliability work that determines whether an analyst trusts a wrapper in a scheduled job.

    View source ↗