Skip to content

washr

1.1.0Package record

Publication Toolkit for Water, Sanitation and Hygiene (WASH) Data

0packages depend
5.6Kdownloads / year
91.2%test coverage
13/13flavors OK

Overview

About

A toolkit to set up an R data package in a consistent structure. Automates tasks like tidy data export, data dictionary documentation, README and website creation, and citation management.

Changes in 1.1.0

The first minor release under the new maintainer. Every function now reads

what is there, merges its changes, and is safe to run again. The FAIR layer

is one experimental function that derives schema.org metadata from the

package files. Ten exports remain: seven of the nine from 1.0.2

(fill_dictionary() and generate_roxygen_docs() are internal now) plus

three new ones; eight helpers that never reached CRAN are gone. Imports go

from 16 to 10.

New

  • New setup_ci() writes the GitHub Actions workflow that runs R CMD check on every push and pull request to main and dev, on macOS, Windows and three versions of R on Linux, and adds the matching badge to README.Rmd. The README template carries the badge as well. The openwashdata review standard requires the workflow with the dev trigger, so a package scaffolded with washr meets that part of the review floor by construction (#86).
Show all changes in 1.1.0Hide the rest of the changes in 1.1.0
  • update_metadata() is rewritten as the one FAIR step (lifecycle: experimental). It derives a schema.org Dataset description from DESCRIPTION, data-raw/dictionary.csv, CITATION.cff and the files in inst/extdata, writes it as JSON-LD into pkgdown/templates/in-header.html so every page of the site carries it, and ends by listing the fields it could not fill. Spatial and temporal coverage and keywords live in DESCRIPTION as X-schema.org-spatialCoverage, X-schema.org-temporalCoverage and X-schema.org-keywords. It no longer calls the dataspice helpers, creates no data/metadata folder, and writes no inst/extdata/metadata.json; existing copies of both are ignored. generate_jsonld() is no longer exported (it is the internal builder), and lubridate leaves Imports (#68, #70, #67).
  • New use_brand() installs the openwashdata brand (_brand.yml and the logo files it references) from the central openwashdata/brand repository into the active package, refreshes an existing copy idempotently, and wires an existing _pkgdown.yml to the brand through bslib so the package site renders with the brand fonts and colors (#109).
  • setup_readme() gains has_example, the argument the guide documents. With has_example = TRUE the README carries an Example section with a commented ggplot2 scaffold for a first plot, pairing with the argument of the same name on setup_website(). The function now stops with a clear message when data/ holds no data object instead of writing a README with NA in it, and says which data object the template documents when there are several (#74, supersedes #24).
  • update_citation() gains build. With build = FALSE it regenerates the citation files and adds the badge without rebuilding README.md and the site, for scripts and tests (#75).

Changed

  • Idempotency and ergonomics sweep of the core (#73). Every function that rewrites a file follows read-merge-write and is safe to re-run:
  • setup_website() keeps an existing _pkgdown.yml as it is and only rebuilds the site, so the guide's "answer No when prompted" step goes away; it no longer crashes without a .gitignore; and it leaves docs ignored when a pkgdown workflow deploys the site, or when the new track_docs = FALSE argument says so (#104). The example article is created once.
  • The _pkgdown.yml template carries the Pages URL as the site URL, the explanatory comments, and a reference index with one entry per data object, matching the openwashdata review standard's template.
  • update_citation() re-run without a doi keeps the DOI already on file instead of dropping it, moves keywords typed into CITATION.cff by hand to X-schema.org-keywords in DESCRIPTION (their canonical home, from where cffr carries them forward), and rebuilds the README only when the badge changes.
  • setup_roxygen() re-run regenerates only the @format block and keeps everything below it (@source, @examples, and other text), writes nothing when the result is unchanged, and errors clearly when a file has no @format line instead of crashing.
  • setup_dictionary() records the first class of multi-class columns (POSIXct, ordered, Date) instead of a deparsed vector.
  • Loading a .rda file with several objects, or a file that is not an .rda, now errors with the file name and the reason instead of documenting the first object or crashing.

Fixed

  • setup_readme() no longer writes a dead license link. The README template carried the package name placeholder in URL encoded form, so whisker never substituted it and every generated README linked to .../%7B%7B%7Bpackagename%7D%7D%7D/blob/main/LICENSE.md (#101).
  • update_citation() adds CITATION.cff to .Rbuildignore, so R CMD check no longer reports a non-standard file at the top level of the data package. cffr only adds the entry itself when handed a file path, and washr hands it a cff object (#102).

Removed

  • update_gsheet_metadata() is removed. It appended a row to a private openwashdata Google Sheet, needed interactive Google authentication, and never shipped on CRAN. googlesheets4 leaves Imports with it. The catalogue update becomes org-internal tooling outside the package (#69).
  • The dataspice helpers are removed: add_metadata(), add_creator(), update_access(), update_attributes() and update_biblio(). None of them shipped on CRAN. update_metadata() replaced their output, and a package that still carries data/metadata/ keeps it; washr ignores the folder. fill_dictionary() and generate_roxygen_docs() are no longer exported; setup_dictionary() and setup_roxygen() call them. The export surface is now nine functions. dataspice, dplyr, readr, stringr and tibble leave Imports with the removed code (#71, #100, #72).

Dependencies

  • devtools moves from Imports to Suggests. update_citation() still rebuilds README.md through devtools::build_readme(), because the README loads the data package, and asks to install devtools when it is missing; the site rebuild calls pkgdown::build_site() directly. setup_website() no longer renders the example article on its own, since the site build renders it. The version constraint on utils is dropped; utils is a base package and the constraint silently required R 4.3.3. With the seven packages removed by the FAIR layer work, Imports go from 16 to 10 (#72).

Documentation and tests

  • Test bar (#75). Every export has a behavioral test that asserts on file content or output; every expect_error() names its message; the setup_rawdata() tests check the rendered template. A test coverage workflow measures coverage on every push and pull request and writes it to the job summary.
  • Documentation (#76). The Get started vignette walks through the workflow in the order of the publishing guide, one function per step; the README gives the toolkit overview with the stable core and the experimental FAIR layer, and carries the CRAN status badge; every export names its neighbours in the workflow under See also; the reference index is grouped by workflow stage; and the pkgdown site URL points at the openwashdata organisation (it pointed at the dev fork, which broke canonical links).

From NEWS.md in the release

Install

Health

CRAN checks
13OK
Slowest check: 4.0 min · r-oldrel-macos-x86_64
Status changes
  • OK13 OK2026-08-04
  • NOTE12 OK, 1 NOTE2026-08-01
  • OK13 OK2026-06-09
  • ERROR12 OK, 1 ERROR2026-06-08
  • OK14 OK2026-03-10
Advisories

none known

Documentation

In release 1.1.0
READMEYes · 283 wordsVignettesYes · 1 · staticNEWSYes · 100% structured · mentions 1.1.0Citation fileNoWebsiteYes · pkgdown
Help pages
13 (3 internal)includes a package overview page
Examples that run
0%12 never run
Exported functions with examples
100%
Documented parameters
100%
Return-value docs
100%
Help pages citing references
0%

Downloads

5.6K
CRAN downloads in the past year
Rank #16,879 · ~15/day · ~470/mo
Daily download trend is not available in this view yet.
25530 days
73790 days
5.6K1 year
Compare downloads with other packages →
Also on79 r2u4 autocran

Repository

5Stars
1Forks
27Open issues
1Open PRs
0Releases
147Commits
10Commit identities
License file reads as GPL-3.0 · 147 commits · Last activity 2026-09-17 · +25% stars, 30d · Default branch at 1.1.1, ahead of CRAN 1.1.0 (checked 2026-10-11)
Responsiveness
How these are sampled
PRs merged (all time)
85%
Median days to close, 50 most recently updated closed issues
38
Median days to close, 50 most recently updated closed PRs
0

Stars over time

2024-12-11 · 22026-10-12 · 5
PracticesBeta

9 development-tooling and community-health practices detected across 5 families in the upstream repository

Checks run against github.com/openwashdata/washr on 2026-10-11.

Continuous integration (2)
GitHub ActionsR CMD check workflow

The R CMD check workflow runs on Linux, macOS and Windows, and on R-devel

Docs source (4)
README.Rmdpkgdown

GitHub Pages site last deployed 2026-09-17 · The repository has a site deploy workflow

pkgdown site last built 2026-09-17

Coverage (1)
Coverage reporting
CRAN release process (1)
cran-comments.md
Show all practicesHide 1 practice
Lint, format, editor (1)
RStudio project
How this is detected·Detection ruleset v3 (2026-09-26)
AI coding toolsBeta

This repository shows signs of AI coding tools.

  • Claude Codefirst seen on or before 2026-07-23
    Commits: 3 by its own account · at least 16 crediting it in the message
From outside contributors
  • Claude Code
    Pull requests: 2 from outside contributors, first on 2026-07-26
Models named in its commits
  • Claude Fable 512 commits · Jul to Aug 2026
  • Claude Fable 5.13 commits · Sep 2026
  • Claude Opus 51 commit · Sep 2026
Counts are commits, not lines of code. Commits by a tool's accounts count once across all of its accounts. Commits crediting it are the largest count among its credit lines, a minimum.How this is detected·Detection ruleset v4 (updated 2026-09-27)

Dependencies

Declared dependencies
15 external dependencies (excludes base and recommended)

Installing washr adds 71 packages (38 with compiled code, 46 MB of source tarballs). Heaviest: stringi 11 MB, bslib 5.6 MB, pak 3.8 MB.

Depends (0)
none
LinkingTo (0)
none
Enhances (0)
none
Reverse dependencies
0direct
0indirect

Nothing depends on this yet.

People & History

People (5)
Author, Maintainer since 1.0.2 (2026)
Author

Previously maintained by Colin Walder (1.0.1).

Releases (3)

Pick two releases to compare their code metrics.

  • 1.1.0Latest
    record
    2026-09-02 · current release · diff ↗ ·
    removed 2 exports
    fill_dictionary, generate_roxygen_docs
    added 3 exports
    setup_ci, update_metadata, use_brand
  • 1.0.2
    record
    2026-07-26 · diff ↗
  • R
    R 4.6.0 released · 2026-04-24
  • R
    R 4.5.0 released · 2025-04-11
  • 1.0.1
    record
    2024-11-07
  • R
    R 4.4.0 released · 2024-04-24

Package metadata

First published
2024-11-07
Total releases
3 / 2 yrs
License
GPL (>= 3) OSI
Download size
50 KB

Cite

Cite this package

Run in R for the authors' preferred citation:

citation("washr")
Schöbitz, L., Global Health Engineering, ETH Zurich, Götschmann, M., Walder, C., & Zhong, M. (2026). washr: Publication Toolkit for Water, Sanitation and Hygiene (WASH) Data (Version 1.1.0) [Computer software]. https://doi.org/10.32614/CRAN.package.washr

This package has no citation file, so citation() returns this entry built from DESCRIPTION.

Cite the R Observatory

For a number measured here: a download total, a coverage figure, an archival date.

APA

Balamuta, J. J. (2026). R Observatory: Metrics for washr version 1.1.0 [Data set]. HJJB, LLC. Data release v2026-10-18. https://doi.org/10.5281/zenodo.21843040

From data release v2026-10-18, which the citation names so these numbers can be found later. More on citing and the projects behind them.

Report a problem with this page →

Privacy choices

These apply to this browser and are stored on this device only. Nothing about your choice is sent to us.

Read the privacy policy