Skip to content

More clearly differentiate resp_parse() vs resp_tidy()#89

Merged
jonthegeek merged 2 commits into
mainfrom
resp_parse_clarify
May 11, 2026
Merged

More clearly differentiate resp_parse() vs resp_tidy()#89
jonthegeek merged 2 commits into
mainfrom
resp_parse_clarify

Conversation

@jonthegeek
Copy link
Copy Markdown
Collaborator

resp_tidy() now acts on a single response, and either applies the defined resp_tidy policy or uses resp_body_auto(resp) to extract the response.

resp_parse() is the wrapper that automatically deals with single responses vs lists of responses.

I also brought R/utils.R to 100% file-level coverage.

Closes #88

`resp_tidy()` now acts on a single response, and either applies the defined `resp_tidy` policy or uses `resp_body_auto(resp)` to extract the response.

`resp_parse()` is the wrapper that automatically deals with single responses vs lists of responses.

I also brought `R/utils.R` to 100% file-level coverage.
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 11, 2026

{qcthat} Report: User Acceptance

No issues are awaiting UAT.

This report was generated by this GitHub Actions run.

Last updated: 2026-05-11 14:21:33 UTC

Session Info ─ Session info ───────────────────────────────────────────────────────────────

setting value

version R version 4.6.0 (2026-04-24)

os Ubuntu 24.04.4 LTS

system x86_64, linux-gnu

ui X11

language (EN)

collate en_US.UTF-8

ctype en_US.UTF-8

tz UTC

date 2026-05-11

pandoc 3.1.3 @ /usr/bin/pandoc

quarto NA

─ Packages ───────────────────────────────────────────────────────────────────

package * version date (UTC) lib source

askpass 1.2.1 2024-10-04 [1] RSPM

astgrepr 0.1.1 2025-06-07 [1] RSPM

backports 1.5.1 2026-04-03 [1] RSPM

base * 4.6.0 2026-04-24 [2] local

base64enc 0.1-6 2026-02-02 [1] RSPM

boot 1.3-32 2025-08-29 [2] CRAN (R 4.6.0)

brew 1.0-10 2023-12-16 [1] RSPM

brio 1.1.5 2024-04-24 [1] RSPM

bslib 0.10.0 2026-01-26 [1] RSPM

cachem 1.1.0 2024-05-16 [1] RSPM

callr 3.7.6 2024-03-25 [1] RSPM

checkmate 2.3.4 2026-02-03 [1] RSPM

class 7.3-23 2025-01-01 [2] CRAN (R 4.6.0)

cli 3.6.6 2026-04-09 [1] RSPM

clipr 0.8.0 2022-02-22 [1] RSPM

cluster 2.1.8.2 2026-02-05 [2] CRAN (R 4.6.0)

codetools 0.2-20 2024-03-31 [2] CRAN (R 4.6.0)

commonmark 2.0.0 2025-07-07 [1] RSPM

compiler 4.6.0 2026-04-24 [2] local

covr 3.6.5 2025-11-09 [1] RSPM

crayon 1.5.3 2024-06-20 [1] RSPM

credentials 2.0.3 2025-09-12 [1] RSPM

curl 7.1.0 2026-04-22 [1] RSPM

datasets * 4.6.0 2026-04-24 [2] local

desc 1.4.3 2023-12-10 [1] RSPM

devtools 2.5.2 2026-04-30 [1] RSPM

diffobj 0.3.6 2025-04-21 [1] RSPM

digest 0.6.39 2025-11-19 [1] RSPM

docopt 0.7.2 2025-03-25 [1] RSPM (R 4.6.0)

downlit 0.4.5 2025-11-14 [1] RSPM

dplyr 1.2.1 2026-04-03 [1] RSPM

ellipsis 0.3.3 2026-04-04 [1] RSPM

emoji 16.0.0 2024-10-28 [1] RSPM

evaluate 1.0.5 2025-08-27 [1] RSPM

fansi 1.0.7 2025-11-19 [1] RSPM

fastmap 1.2.0 2024-05-15 [1] RSPM

fontawesome 0.5.3 2024-11-16 [1] RSPM

foreign 0.8-91 2026-01-29 [2] CRAN (R 4.6.0)

fs 2.1.0 2026-04-18 [1] RSPM

generics 0.1.4 2025-05-09 [1] RSPM

gert 2.3.1 2026-01-11 [1] RSPM

gh 1.5.0 2025-05-26 [1] RSPM

git2r 0.36.2 2025-03-29 [1] RSPM

gitcreds 0.1.2 2022-09-08 [1] RSPM

glue 1.8.1 2026-04-17 [1] RSPM

graphics * 4.6.0 2026-04-24 [2] local

grDevices * 4.6.0 2026-04-24 [2] local

grid 4.6.0 2026-04-24 [2] local

highr 0.12 2026-03-06 [1] RSPM

htmltools 0.5.9 2025-12-04 [1] RSPM

htmlwidgets 1.6.4 2023-12-06 [1] RSPM

httpuv 1.6.17 2026-03-18 [1] RSPM

httr 1.4.8 2026-02-13 [1] RSPM

httr2 1.2.2 2025-12-08 [1] RSPM

ini 0.3.1 2018-05-20 [1] RSPM

jquerylib 0.1.4 2021-04-26 [1] RSPM

jsonlite 2.0.0 2025-03-27 [1] RSPM

KernSmooth 2.23-26 2025-01-01 [2] CRAN (R 4.6.0)

knitr 1.51 2025-12-20 [1] RSPM

later 1.4.8 2026-03-05 [1] RSPM

lattice 0.22-9 2026-02-09 [2] CRAN (R 4.6.0)

lifecycle 1.0.5 2026-01-08 [1] RSPM

littler 0.3.23 2026-04-12 [1] RSPM (R 4.6.0)

magick 2.9.1 2026-02-28 [1] RSPM

magrittr 2.0.5 2026-04-04 [1] RSPM

MASS 7.3-65 2025-02-28 [2] CRAN (R 4.6.0)

Matrix 1.7-5 2026-03-21 [2] CRAN (R 4.6.0)

memoise 2.0.1 2021-11-26 [1] RSPM

methods * 4.6.0 2026-04-24 [2] local

mgcv 1.9-4 2025-11-07 [2] CRAN (R 4.6.0)

mime 0.13 2025-03-17 [1] RSPM

miniUI 0.1.2 2025-04-17 [1] RSPM

nectar 0.0.0.9007 2026-05-11 [1] local

nlme 3.1-169 2026-03-27 [2] CRAN (R 4.6.0)

nnet 7.3-20 2025-01-01 [2] CRAN (R 4.6.0)

openssl 2.4.0 2026-04-15 [1] RSPM

otel 0.2.0 2025-08-29 [1] RSPM

pak 0.9.5 2026-04-27 [1] RSPM (R 4.6.0)

parallel 4.6.0 2026-04-24 [2] local

pillar 1.11.1 2025-09-17 [1] RSPM

pkgbuild 1.4.8 2025-05-26 [1] RSPM

pkgconfig 2.0.3 2019-09-22 [1] RSPM

pkgdown 2.2.0 2025-11-06 [1] RSPM

pkgload 1.5.2 2026-04-22 [1] RSPM

praise 1.0.0 2015-08-11 [1] RSPM

prettyunits 1.2.0 2023-09-24 [1] RSPM

processx 3.9.0 2026-04-22 [1] RSPM

profvis 0.4.0 2024-09-20 [1] RSPM

promises 1.5.0 2025-11-01 [1] RSPM

ps 1.9.3 2026-04-20 [1] RSPM

purrr 1.2.2 2026-04-10 [1] RSPM

qcthat 1.1.2 2026-05-11 [1] Github (Gilead-BioStats/qcthat@d0958dc)

R6 2.6.1 2025-02-15 [1] RSPM

ragg 1.5.2 2026-03-23 [1] RSPM

rappdirs 0.3.4 2026-01-17 [1] RSPM

rcmdcheck 1.4.0 2021-09-27 [1] RSPM

Rcpp 1.1.1-1.1 2026-04-24 [1] RSPM

rex 1.2.2 2026-03-28 [1] RSPM

rlang 1.2.0 2026-04-06 [1] RSPM

rmarkdown 2.31 2026-03-26 [1] RSPM

roxygen2 8.0.0 2026-05-01 [1] RSPM

rpart 4.1.27 2026-03-27 [2] CRAN (R 4.6.0)

rprojroot 2.1.1 2025-08-26 [1] RSPM

rrapply 1.2.8 2025-11-25 [1] RSPM

rstudioapi 0.18.0 2026-01-16 [1] RSPM

rversions 3.0.0 2025-10-09 [1] RSPM

sass 0.4.10 2025-04-11 [1] RSPM

sessioninfo 1.2.3 2025-02-05 [1] RSPM

shiny 1.13.0 2026-02-20 [1] RSPM

sourcetools 0.1.7-2 2026-03-28 [1] RSPM

spatial 7.3-18 2025-01-01 [2] CRAN (R 4.6.0)

splines 4.6.0 2026-04-24 [2] local

stats * 4.6.0 2026-04-24 [2] local

stats4 4.6.0 2026-04-24 [2] local

stbl 0.3.0 2026-04-04 [1] RSPM

stringi 1.8.7 2025-03-27 [1] RSPM

stringr 1.6.0 2025-11-04 [1] RSPM

survival 3.8-6 2026-01-16 [2] CRAN (R 4.6.0)

sys 3.4.3 2024-10-04 [1] RSPM

systemfonts 1.3.2 2026-03-05 [1] RSPM

tcltk 4.6.0 2026-04-24 [2] local

testthat 3.3.2 2026-01-11 [1] RSPM

textshaping 1.0.5 2026-03-06 [1] RSPM

tibble 3.3.1 2026-01-11 [1] RSPM

tibblify 0.4.1 2026-05-11 [1] Github (wranglezone/tibblify@331c8fa)

tidyr 1.3.2 2025-12-19 [1] RSPM

tidyselect 1.2.1 2024-03-11 [1] RSPM

tinytex 0.59 2026-03-28 [1] RSPM

tools 4.6.0 2026-04-24 [2] local

urlchecker 1.0.1 2021-11-30 [1] RSPM

usethis 3.2.1 2025-09-06 [1] RSPM

utf8 1.2.6 2025-06-08 [1] RSPM

utils * 4.6.0 2026-04-24 [2] local

vctrs 0.7.3 2026-04-11 [1] RSPM

waldo 0.6.2 2025-07-11 [1] RSPM

whisker 0.4.1 2022-12-05 [1] RSPM

withr 3.0.2 2024-10-28 [1] RSPM

xfun 0.57 2026-03-20 [1] RSPM

xml2 1.5.2 2026-01-17 [1] RSPM

xopen 1.0.1 2024-04-25 [1] RSPM

xtable 1.8-8 2026-02-22 [1] RSPM

yaml 2.3.12 2025-12-10 [1] RSPM

zip 2.3.3 2025-05-13 [1] RSPM

[1] /usr/local/lib/R/site-library

[2] /usr/local/lib/R/library

[3] /__w/_temp/Library

  • ── Packages attached to the search path.

──────────────────────────────────────────────────────────────────────────────

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 11, 2026

{qcthat} Reports

PR-Associated Issues

✅ A qcthat issue test matrix with 0 milestones, 1 issue, and 6 tests
└─█─Milestone: <none> (1 issue, 6 tests)
  └─📥─Issue 88: Clarify `resp_parse()` vs `resp_tidy()`
    ├─✅─resp_parse fails gracefully for list of non-responses (#88)
    ├─✅─resp_tidy returns NULL for NULL input (#88)
    ├─✅─resp_tidy errors for non-response input (#88)
    ├─✅─resp_tidy parses json-containing httr2_response objects (#40, #88)
    ├─✅─resp_tidy parses httr2_response objects with resp_tidy policy (#40, #88)
    └─✅─resp_tidy uses policies$resp_tidy$tidy_args (#40, #88)
# Issue state: 📥 = open, ☑️ = closed (completed), ⛔ = closed (won't fix)
# Test disposition: ✅ = passed, ❌ = failed, 🚫 = skipped
✅ All tests passed

🟢 All issues have at least one test


Completed Issues

✅ A qcthat issue test matrix with 1 milestone, 15 issues, and 77 tests
└─█─Milestone: 0.1 (15 issues, 77 tests)
  ├─☑️─Feature 86: `tidy_policy_prepare()` function
  │ ├─✅─req_prepare() applies prepared tidying (#86)
  │ ├─✅─req_prepare() errors for unsupported tidy policy objects (#86)
  │ ├─✅─req_tidy_policy applies resp_body_auto by default (#44, #86)
  │ ├─✅─req_tidy_policy applies the specified policy (#44, #86)
  │ ├─✅─tidy_policy_body_auto() prepares resp_body_auto for resp_tidy() (#86)
  │ ├─✅─tidy_policy_json() prepares resp_tidy_json for resp_tidy() (#40, #86)
  │ ├─✅─tidy_policy_unknown() prepares resp_tidy_unknown for resp_tidy() (#86)
  │ ├─✅─tidy_policy_prepare() constructs nectar_tidy_policy objects (#86)
  │ ├─✅─.as_nectar_tidy_policy() returns nectar_tidy_policy objects unchanged (#86)
  │ ├─✅─.as_nectar_tidy_policy() returns NULL for NULL input (#86)
  │ ├─✅─.as_nectar_tidy_policy() errors for list without tidy_fn (#86)
  │ ├─✅─.as_nectar_tidy_policy() converts function input to nectar_tidy_policy (#86)
  │ ├─✅─.as_nectar_tidy_policy() merges tidy_args with additional tidy policy fields (#86)
  │ └─✅─.as_nectar_tidy_policy() errors for non-listable tidy_args (#86)
  ├─☑️─Feature 19: Export more autoreq pieces
  │ ├─✅─req_prepare() uses query parameters (#5, #10, #11, #19)
  │ ├─✅─req_prepare() uses the .multi arg (#5, #11, #19)
  │ ├─✅─req_prepare() removes empty query parameters (#5, #11, #19)
  │ └─✅─req_prepare() applies methods (#5, #10, #11, #19)
  ├─☑️─Feature 11: Reconcile body parser
  │ ├─✅─req_prepare() uses query parameters (#5, #10, #11, #19)
  │ ├─✅─req_prepare() uses the .multi arg (#5, #11, #19)
  │ ├─✅─req_prepare() removes empty query parameters (#5, #11, #19)
  │ ├─✅─req_prepare() applies methods (#5, #10, #11, #19)
  │ └─✅─resp_parse works for raw results (#11)
  ├─☑️─Feature 10: Split call_api()
  │ ├─✅─req_prepare() applies user agent (#10, #29)
  │ ├─✅─req_prepare() deals with paths (#10)
  │ ├─✅─req_prepare() uses query parameters (#5, #10, #11, #19)
  │ ├─✅─req_prepare() uses body parameters (#10)
  │ ├─✅─req_prepare() applies methods (#5, #10, #11, #19)
  │ ├─✅─resp_parse parses json-containing httr2_response objects (#10)
  │ ├─✅─resp_parse parses httr2_response objects with specified parser (#10)
  │ ├─✅─resp_parse returns raw resp if NULL parser specified (#10)
  │ ├─✅─resp_parse accepts parser args (#10)
  │ └─✅─resp_parse parses lists of httr2_responses (#10)
  ├─☑️─Feature 8: Authenticate with API Keys
  │ ├─✅─req_auth_api_key works for header (#8)
  │ └─✅─req_auth_api_key works for query (#8)
  ├─☑️─Feature 6: Standardize endpoint argument
  │ └─✅─bodies with paths are handled properly (#6)
  ├─☑️─Feature 5: req_perform() args
  │ ├─✅─req_prepare() uses query parameters (#5, #10, #11, #19)
  │ ├─✅─req_prepare() uses the .multi arg (#5, #11, #19)
  │ ├─✅─req_prepare() removes empty query parameters (#5, #11, #19)
  │ └─✅─req_prepare() applies methods (#5, #10, #11, #19)
  ├─☑️─Feature 81: `auth_prepare()` function
  │ ├─✅─auth_prepare() constructs nectar_auth objects (#81)
  │ ├─✅─.as_nectar_auth() returns nectar_auth objects unchanged (#81)
  │ ├─✅─.as_nectar_auth() returns NULL auth_fn and empty auth_args for NULL input (#81)
  │ ├─✅─.as_nectar_auth() errors for list without auth_fn (#81)
  │ ├─✅─.as_nectar_auth() converts function input to nectar_auth (#81)
  │ ├─✅─.as_nectar_auth() merges auth_args with additional auth fields (#81)
  │ ├─✅─.as_nectar_auth() errors for non-listable auth_args (#81)
  │ ├─✅─auth_api_key() prepares req_auth_api_key auth (#81)
  │ ├─✅─req_prepare() applies prepared auth (#81)
  │ └─✅─req_prepare() errors for unsupported auth objects (#81)
  ├─☑️─Bug 76: Remove api key on `NULL`
  │ ├─✅─req_auth_api_key returns req unchanged if api_key is NA or empty (#76)
  │ └─✅─req_auth_api_key removes the key when api_key is NULL (#76)
  ├─☑️─Feature 44: resp_tidy policies
  │ ├─✅─req_tidy_policy applies resp_body_auto by default (#44, #86)
  │ └─✅─req_tidy_policy applies the specified policy (#44, #86)
  ├─☑️─Feature 40: resp_tidy()
  │ ├─✅─resp_body_auto works for json (#40)
  │ ├─✅─resp_body_auto works for xml (#40)
  │ ├─✅─resp_body_auto works for html (#40)
  │ ├─✅─resp_body_auto works for svg (#40)
  │ ├─✅─resp_body_auto works for csv (#40)
  │ ├─✅─resp_body_auto works for tsv (#40)
  │ ├─✅─resp_body_auto works for json subtypes (#40)
  │ ├─✅─resp_body_auto works for other strings (#40)
  │ ├─✅─resp_body_auto works for other things (#40)
  │ ├─✅─resp_body_csv extracts csv data (#40)
  │ ├─✅─resp_body_csv fails gracefully for bad data (#40)
  │ ├─✅─resp_body_tsv extracts tsv data (#40)
  │ ├─✅─resp_body_tsv fails gracefully for bad data (#40)
  │ ├─✅─resp_body_separate listifies responses (#40)
  │ ├─✅─resp_parse fails gracefully for unsupported classes (#40)
  │ ├─✅─resp_tidy_json fails gracefully with a bad subset_path (#40)
  │ ├─✅─resp_tidy_json returns NULL for an empty body (#40)
  │ ├─✅─resp_tidy_json tidies a response (#40)
  │ ├─✅─resp_tidy_json subsets a response (#40)
  │ ├─✅─resp_tidy_json tidies a response with a spec (#40)
  │ ├─✅─tidy_policy_json() prepares resp_tidy_json for resp_tidy() (#40, #86)
  │ ├─✅─resp_tidy parses json-containing httr2_response objects (#40, #88)
  │ ├─✅─resp_tidy parses httr2_response objects with resp_tidy policy (#40, #88)
  │ └─✅─resp_tidy uses policies$resp_tidy$tidy_args (#40, #88)
  ├─☑️─Feature 35: req_pagination()
  │ ├─✅─req_pagination_policy errors informatively for bad fn (#35)
  │ ├─✅─req_pagination_policy applies the specified policy (#35)
  │ ├─✅─choose_pagination_fn returns NULL for no policy (#35)
  │ └─✅─choose_pagination_fn extracts the pagination_fn (#35)
  ├─☑️─Feature 32: Feature: smarter cursor pagination
  │ ├─✅─iterate_with_json_cursor repeats with non-empty cursor (#32)
  │ ├─✅─iterate_with_json_cursor stops with NULL cursor (#32)
  │ └─✅─iterate_with_json_cursor stops with blank cursor (#32)
  ├─☑️─Feature 30: Simpler cookies in req_auth_api_key()
  │ └─✅─req_auth_api_key works for cookies (#30)
  └─☑️─Feature 29: User Agent Modifier
    ├─✅─req_pkg_user_agent adds a package agent (#29)
    ├─✅─req_pkg_user_agent adds a package agent and url (#29)
    ├─✅─Corner case of no supplied name works (#29)
    ├─✅─Corner case of no supplied agent works (#29)
    └─✅─req_prepare() applies user agent (#10, #29)
# Issue state: 📥 = open, ☑️ = closed (completed), ⛔ = closed (won't fix)
# Test disposition: ✅ = passed, ❌ = failed, 🚫 = skipped
✅ All tests passed

🟢 All issues have at least one test

🙈 7 issues with label "qcthat-nocov" were ignored


This report was generated by this GitHub Actions run.

Last updated: 2026-05-11 14:21:35 UTC

Session Info ─ Session info ───────────────────────────────────────────────────────────────

setting value

version R version 4.6.0 (2026-04-24)

os Ubuntu 24.04.4 LTS

system x86_64, linux-gnu

ui X11

language (EN)

collate en_US.UTF-8

ctype en_US.UTF-8

tz UTC

date 2026-05-11

pandoc 3.1.3 @ /usr/bin/pandoc

quarto NA

─ Packages ───────────────────────────────────────────────────────────────────

package * version date (UTC) lib source

askpass 1.2.1 2024-10-04 [1] RSPM

astgrepr 0.1.1 2025-06-07 [1] RSPM

backports 1.5.1 2026-04-03 [1] RSPM

base * 4.6.0 2026-04-24 [2] local

base64enc 0.1-6 2026-02-02 [1] RSPM

boot 1.3-32 2025-08-29 [2] CRAN (R 4.6.0)

brew 1.0-10 2023-12-16 [1] RSPM

brio 1.1.5 2024-04-24 [1] RSPM

bslib 0.10.0 2026-01-26 [1] RSPM

cachem 1.1.0 2024-05-16 [1] RSPM

callr 3.7.6 2024-03-25 [1] RSPM

checkmate 2.3.4 2026-02-03 [1] RSPM

class 7.3-23 2025-01-01 [2] CRAN (R 4.6.0)

cli 3.6.6 2026-04-09 [1] RSPM

clipr 0.8.0 2022-02-22 [1] RSPM

cluster 2.1.8.2 2026-02-05 [2] CRAN (R 4.6.0)

codetools 0.2-20 2024-03-31 [2] CRAN (R 4.6.0)

commonmark 2.0.0 2025-07-07 [1] RSPM

compiler 4.6.0 2026-04-24 [2] local

covr 3.6.5 2025-11-09 [1] RSPM

crayon 1.5.3 2024-06-20 [1] RSPM

credentials 2.0.3 2025-09-12 [1] RSPM

curl 7.1.0 2026-04-22 [1] RSPM

datasets * 4.6.0 2026-04-24 [2] local

desc 1.4.3 2023-12-10 [1] RSPM

devtools 2.5.2 2026-04-30 [1] RSPM

diffobj 0.3.6 2025-04-21 [1] RSPM

digest 0.6.39 2025-11-19 [1] RSPM

docopt 0.7.2 2025-03-25 [1] RSPM (R 4.6.0)

downlit 0.4.5 2025-11-14 [1] RSPM

dplyr 1.2.1 2026-04-03 [1] RSPM

ellipsis 0.3.3 2026-04-04 [1] RSPM

emoji 16.0.0 2024-10-28 [1] RSPM

evaluate 1.0.5 2025-08-27 [1] RSPM

fansi 1.0.7 2025-11-19 [1] RSPM

fastmap 1.2.0 2024-05-15 [1] RSPM

fontawesome 0.5.3 2024-11-16 [1] RSPM

foreign 0.8-91 2026-01-29 [2] CRAN (R 4.6.0)

fs 2.1.0 2026-04-18 [1] RSPM

generics 0.1.4 2025-05-09 [1] RSPM

gert 2.3.1 2026-01-11 [1] RSPM

gh 1.5.0 2025-05-26 [1] RSPM

git2r 0.36.2 2025-03-29 [1] RSPM

gitcreds 0.1.2 2022-09-08 [1] RSPM

glue 1.8.1 2026-04-17 [1] RSPM

graphics * 4.6.0 2026-04-24 [2] local

grDevices * 4.6.0 2026-04-24 [2] local

grid 4.6.0 2026-04-24 [2] local

highr 0.12 2026-03-06 [1] RSPM

htmltools 0.5.9 2025-12-04 [1] RSPM

htmlwidgets 1.6.4 2023-12-06 [1] RSPM

httpuv 1.6.17 2026-03-18 [1] RSPM

httr 1.4.8 2026-02-13 [1] RSPM

httr2 1.2.2 2025-12-08 [1] RSPM

ini 0.3.1 2018-05-20 [1] RSPM

jquerylib 0.1.4 2021-04-26 [1] RSPM

jsonlite 2.0.0 2025-03-27 [1] RSPM

KernSmooth 2.23-26 2025-01-01 [2] CRAN (R 4.6.0)

knitr 1.51 2025-12-20 [1] RSPM

later 1.4.8 2026-03-05 [1] RSPM

lattice 0.22-9 2026-02-09 [2] CRAN (R 4.6.0)

lifecycle 1.0.5 2026-01-08 [1] RSPM

littler 0.3.23 2026-04-12 [1] RSPM (R 4.6.0)

magick 2.9.1 2026-02-28 [1] RSPM

magrittr 2.0.5 2026-04-04 [1] RSPM

MASS 7.3-65 2025-02-28 [2] CRAN (R 4.6.0)

Matrix 1.7-5 2026-03-21 [2] CRAN (R 4.6.0)

memoise 2.0.1 2021-11-26 [1] RSPM

methods * 4.6.0 2026-04-24 [2] local

mgcv 1.9-4 2025-11-07 [2] CRAN (R 4.6.0)

mime 0.13 2025-03-17 [1] RSPM

miniUI 0.1.2 2025-04-17 [1] RSPM

nectar 0.0.0.9007 2026-05-11 [1] local

nlme 3.1-169 2026-03-27 [2] CRAN (R 4.6.0)

nnet 7.3-20 2025-01-01 [2] CRAN (R 4.6.0)

openssl 2.4.0 2026-04-15 [1] RSPM

otel 0.2.0 2025-08-29 [1] RSPM

pak 0.9.5 2026-04-27 [1] RSPM (R 4.6.0)

parallel 4.6.0 2026-04-24 [2] local

pillar 1.11.1 2025-09-17 [1] RSPM

pkgbuild 1.4.8 2025-05-26 [1] RSPM

pkgconfig 2.0.3 2019-09-22 [1] RSPM

pkgdown 2.2.0 2025-11-06 [1] RSPM

pkgload 1.5.2 2026-04-22 [1] RSPM

praise 1.0.0 2015-08-11 [1] RSPM

prettyunits 1.2.0 2023-09-24 [1] RSPM

processx 3.9.0 2026-04-22 [1] RSPM

profvis 0.4.0 2024-09-20 [1] RSPM

promises 1.5.0 2025-11-01 [1] RSPM

ps 1.9.3 2026-04-20 [1] RSPM

purrr 1.2.2 2026-04-10 [1] RSPM

qcthat 1.1.2 2026-05-11 [1] Github (Gilead-BioStats/qcthat@d0958dc)

R6 2.6.1 2025-02-15 [1] RSPM

ragg 1.5.2 2026-03-23 [1] RSPM

rappdirs 0.3.4 2026-01-17 [1] RSPM

rcmdcheck 1.4.0 2021-09-27 [1] RSPM

Rcpp 1.1.1-1.1 2026-04-24 [1] RSPM

rex 1.2.2 2026-03-28 [1] RSPM

rlang 1.2.0 2026-04-06 [1] RSPM

rmarkdown 2.31 2026-03-26 [1] RSPM

roxygen2 8.0.0 2026-05-01 [1] RSPM

rpart 4.1.27 2026-03-27 [2] CRAN (R 4.6.0)

rprojroot 2.1.1 2025-08-26 [1] RSPM

rrapply 1.2.8 2025-11-25 [1] RSPM

rstudioapi 0.18.0 2026-01-16 [1] RSPM

rversions 3.0.0 2025-10-09 [1] RSPM

sass 0.4.10 2025-04-11 [1] RSPM

sessioninfo 1.2.3 2025-02-05 [1] RSPM

shiny 1.13.0 2026-02-20 [1] RSPM

sourcetools 0.1.7-2 2026-03-28 [1] RSPM

spatial 7.3-18 2025-01-01 [2] CRAN (R 4.6.0)

splines 4.6.0 2026-04-24 [2] local

stats * 4.6.0 2026-04-24 [2] local

stats4 4.6.0 2026-04-24 [2] local

stbl 0.3.0 2026-04-04 [1] RSPM

stringi 1.8.7 2025-03-27 [1] RSPM

stringr 1.6.0 2025-11-04 [1] RSPM

survival 3.8-6 2026-01-16 [2] CRAN (R 4.6.0)

sys 3.4.3 2024-10-04 [1] RSPM

systemfonts 1.3.2 2026-03-05 [1] RSPM

tcltk 4.6.0 2026-04-24 [2] local

testthat 3.3.2 2026-01-11 [1] RSPM

textshaping 1.0.5 2026-03-06 [1] RSPM

tibble 3.3.1 2026-01-11 [1] RSPM

tibblify 0.4.1 2026-05-11 [1] Github (wranglezone/tibblify@331c8fa)

tidyr 1.3.2 2025-12-19 [1] RSPM

tidyselect 1.2.1 2024-03-11 [1] RSPM

tinytex 0.59 2026-03-28 [1] RSPM

tools 4.6.0 2026-04-24 [2] local

urlchecker 1.0.1 2021-11-30 [1] RSPM

usethis 3.2.1 2025-09-06 [1] RSPM

utf8 1.2.6 2025-06-08 [1] RSPM

utils * 4.6.0 2026-04-24 [2] local

vctrs 0.7.3 2026-04-11 [1] RSPM

waldo 0.6.2 2025-07-11 [1] RSPM

whisker 0.4.1 2022-12-05 [1] RSPM

withr 3.0.2 2024-10-28 [1] RSPM

xfun 0.57 2026-03-20 [1] RSPM

xml2 1.5.2 2026-01-17 [1] RSPM

xopen 1.0.1 2024-04-25 [1] RSPM

xtable 1.8-8 2026-02-22 [1] RSPM

yaml 2.3.12 2025-12-10 [1] RSPM

zip 2.3.3 2025-05-13 [1] RSPM

[1] /usr/local/lib/R/site-library

[2] /usr/local/lib/R/library

[3] /__w/_temp/Library

  • ── Packages attached to the search path.

──────────────────────────────────────────────────────────────────────────────

Comment thread R/resp_tidy.R Outdated
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 11, 2026

🌐 PR pkgdown deployed

This report was generated by this GitHub Actions run.

Last updated: 2026-05-11 14:27:43 UTC

Session Info ─ Session info ───────────────────────────────────────────────────────────────

setting value

version R version 4.6.0 (2026-04-24)

os Ubuntu 24.04.4 LTS

system x86_64, linux-gnu

ui X11

language (EN)

collate en_US.UTF-8

ctype en_US.UTF-8

tz UTC

date 2026-05-11

pandoc 3.1.3 @ /usr/bin/pandoc

quarto NA

─ Packages ───────────────────────────────────────────────────────────────────

package * version date (UTC) lib source

askpass 1.2.1 2024-10-04 [1] RSPM

astgrepr 0.1.1 2025-06-07 [1] RSPM

backports 1.5.1 2026-04-03 [1] RSPM

base * 4.6.0 2026-04-24 [2] local

base64enc 0.1-6 2026-02-02 [1] RSPM

boot 1.3-32 2025-08-29 [2] CRAN (R 4.6.0)

brew 1.0-10 2023-12-16 [1] RSPM

brio 1.1.5 2024-04-24 [1] RSPM

bslib 0.10.0 2026-01-26 [1] RSPM

cachem 1.1.0 2024-05-16 [1] RSPM

callr 3.7.6 2024-03-25 [1] RSPM

checkmate 2.3.4 2026-02-03 [1] RSPM

class 7.3-23 2025-01-01 [2] CRAN (R 4.6.0)

cli 3.6.6 2026-04-09 [1] RSPM

clipr 0.8.0 2022-02-22 [1] RSPM

cluster 2.1.8.2 2026-02-05 [2] CRAN (R 4.6.0)

codetools 0.2-20 2024-03-31 [2] CRAN (R 4.6.0)

commonmark 2.0.0 2025-07-07 [1] RSPM

compiler 4.6.0 2026-04-24 [2] local

covr 3.6.5 2025-11-09 [1] RSPM

crayon 1.5.3 2024-06-20 [1] RSPM

credentials 2.0.3 2025-09-12 [1] RSPM

curl 7.1.0 2026-04-22 [1] RSPM

datasets * 4.6.0 2026-04-24 [2] local

desc 1.4.3 2023-12-10 [1] RSPM

devtools 2.5.2 2026-04-30 [1] RSPM

diffobj 0.3.6 2025-04-21 [1] RSPM

digest 0.6.39 2025-11-19 [1] RSPM

docopt 0.7.2 2025-03-25 [1] RSPM (R 4.6.0)

downlit 0.4.5 2025-11-14 [1] RSPM

dplyr 1.2.1 2026-04-03 [1] RSPM

ellipsis 0.3.3 2026-04-04 [1] RSPM

emoji 16.0.0 2024-10-28 [1] RSPM

evaluate 1.0.5 2025-08-27 [1] RSPM

fansi 1.0.7 2025-11-19 [1] RSPM

fastmap 1.2.0 2024-05-15 [1] RSPM

fontawesome 0.5.3 2024-11-16 [1] RSPM

foreign 0.8-91 2026-01-29 [2] CRAN (R 4.6.0)

fs 2.1.0 2026-04-18 [1] RSPM

generics 0.1.4 2025-05-09 [1] RSPM

gert 2.3.1 2026-01-11 [1] RSPM

gh 1.5.0 2025-05-26 [1] RSPM

git2r 0.36.2 2025-03-29 [1] RSPM

gitcreds 0.1.2 2022-09-08 [1] RSPM

glue 1.8.1 2026-04-17 [1] RSPM

graphics * 4.6.0 2026-04-24 [2] local

grDevices * 4.6.0 2026-04-24 [2] local

grid 4.6.0 2026-04-24 [2] local

here 1.0.2 2025-09-15 [1] RSPM

highr 0.12 2026-03-06 [1] RSPM

htmltools 0.5.9 2025-12-04 [1] RSPM

htmlwidgets 1.6.4 2023-12-06 [1] RSPM

httpuv 1.6.17 2026-03-18 [1] RSPM

httr 1.4.8 2026-02-13 [1] RSPM

httr2 1.2.2 2025-12-08 [1] RSPM

ini 0.3.1 2018-05-20 [1] RSPM

jquerylib 0.1.4 2021-04-26 [1] RSPM

jsonlite 2.0.0 2025-03-27 [1] RSPM

KernSmooth 2.23-26 2025-01-01 [2] CRAN (R 4.6.0)

knitr 1.51 2025-12-20 [1] RSPM

later 1.4.8 2026-03-05 [1] RSPM

lattice 0.22-9 2026-02-09 [2] CRAN (R 4.6.0)

lifecycle 1.0.5 2026-01-08 [1] RSPM

littler 0.3.23 2026-04-12 [1] RSPM (R 4.6.0)

magick 2.9.1 2026-02-28 [1] RSPM

magrittr 2.0.5 2026-04-04 [1] RSPM

MASS 7.3-65 2025-02-28 [2] CRAN (R 4.6.0)

Matrix 1.7-5 2026-03-21 [2] CRAN (R 4.6.0)

memoise 2.0.1 2021-11-26 [1] RSPM

methods * 4.6.0 2026-04-24 [2] local

mgcv 1.9-4 2025-11-07 [2] CRAN (R 4.6.0)

mime 0.13 2025-03-17 [1] RSPM

miniUI 0.1.2 2025-04-17 [1] RSPM

nectar 0.0.0.9007 2026-05-11 [1] local

nlme 3.1-169 2026-03-27 [2] CRAN (R 4.6.0)

nnet 7.3-20 2025-01-01 [2] CRAN (R 4.6.0)

openssl 2.4.0 2026-04-15 [1] RSPM

otel 0.2.0 2025-08-29 [1] RSPM

pak 0.9.5 2026-04-27 [1] RSPM (R 4.6.0)

parallel 4.6.0 2026-04-24 [2] local

pillar 1.11.1 2025-09-17 [1] RSPM

pkgbuild 1.4.8 2025-05-26 [1] RSPM

pkgconfig 2.0.3 2019-09-22 [1] RSPM

pkgdown 2.2.0 2025-11-06 [1] RSPM

pkgload 1.5.2 2026-04-22 [1] RSPM

praise 1.0.0 2015-08-11 [1] RSPM

prettyunits 1.2.0 2023-09-24 [1] RSPM

processx 3.9.0 2026-04-22 [1] RSPM

profvis 0.4.0 2024-09-20 [1] RSPM

promises 1.5.0 2025-11-01 [1] RSPM

ps 1.9.3 2026-04-20 [1] RSPM

purrr 1.2.2 2026-04-10 [1] RSPM

qcthat 1.1.2.9000 2026-05-11 [1] Github (Gilead-BioStats/qcthat@f508b0f)

quarto 1.5.1 2025-09-04 [1] RSPM

R6 2.6.1 2025-02-15 [1] RSPM

ragg 1.5.2 2026-03-23 [1] RSPM

rappdirs 0.3.4 2026-01-17 [1] RSPM

rcmdcheck 1.4.0 2021-09-27 [1] RSPM

Rcpp 1.1.1-1.1 2026-04-24 [1] RSPM

rex 1.2.2 2026-03-28 [1] RSPM

rlang 1.2.0 2026-04-06 [1] RSPM

rmarkdown 2.31 2026-03-26 [1] RSPM

roxygen2 8.0.0 2026-05-01 [1] RSPM

rpart 4.1.27 2026-03-27 [2] CRAN (R 4.6.0)

rprojroot 2.1.1 2025-08-26 [1] RSPM

rrapply 1.2.8 2025-11-25 [1] RSPM

rstudioapi 0.18.0 2026-01-16 [1] RSPM

rversions 3.0.0 2025-10-09 [1] RSPM

sass 0.4.10 2025-04-11 [1] RSPM

sessioninfo 1.2.3 2025-02-05 [1] RSPM

shiny 1.13.0 2026-02-20 [1] RSPM

sourcetools 0.1.7-2 2026-03-28 [1] RSPM

spatial 7.3-18 2025-01-01 [2] CRAN (R 4.6.0)

splines 4.6.0 2026-04-24 [2] local

stats * 4.6.0 2026-04-24 [2] local

stats4 4.6.0 2026-04-24 [2] local

stbl 0.3.0 2026-04-04 [1] RSPM

stringi 1.8.7 2025-03-27 [1] RSPM

stringr 1.6.0 2025-11-04 [1] RSPM

survival 3.8-6 2026-01-16 [2] CRAN (R 4.6.0)

sys 3.4.3 2024-10-04 [1] RSPM

systemfonts 1.3.2 2026-03-05 [1] RSPM

tcltk 4.6.0 2026-04-24 [2] local

testthat 3.3.2 2026-01-11 [1] RSPM

textshaping 1.0.5 2026-03-06 [1] RSPM

tibble 3.3.1 2026-01-11 [1] RSPM

tibblify 0.4.1 2026-05-11 [1] Github (wranglezone/tibblify@331c8fa)

tidyr 1.3.2 2025-12-19 [1] RSPM

tidyselect 1.2.1 2024-03-11 [1] RSPM

tinytex 0.59 2026-03-28 [1] RSPM

tools 4.6.0 2026-04-24 [2] local

urlchecker 1.0.1 2021-11-30 [1] RSPM

usethis 3.2.1 2025-09-06 [1] RSPM

utf8 1.2.6 2025-06-08 [1] RSPM

utils * 4.6.0 2026-04-24 [2] local

vctrs 0.7.3 2026-04-11 [1] RSPM

waldo 0.6.2 2025-07-11 [1] RSPM

whisker 0.4.1 2022-12-05 [1] RSPM

withr 3.0.2 2024-10-28 [1] RSPM

xfun 0.57 2026-03-20 [1] RSPM

xml2 1.5.2 2026-01-17 [1] RSPM

xopen 1.0.1 2024-04-25 [1] RSPM

xtable 1.8-8 2026-02-22 [1] RSPM

yaml 2.3.12 2025-12-10 [1] RSPM

zip 2.3.3 2025-05-13 [1] RSPM

[1] /usr/local/lib/R/site-library

[2] /usr/local/lib/R/library

[3] /__w/_temp/Library

  • ── Packages attached to the search path.

──────────────────────────────────────────────────────────────────────────────

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR clarifies responsibilities between resp_tidy() and resp_parse() within the response-handling layer of the package: resp_tidy() now operates on a single httr2_response (optionally using a request’s resp_tidy policy), while resp_parse() is the wrapper that handles single responses vs. lists of responses. It also adds a new internal validator (check_httr2_response()) and expands tests to bring R/utils.R to full file-level coverage.

Changes:

  • Refactors resp_tidy() from an S3 generic (handling lists) into a single-response function (plus NULL passthrough).
  • Strengthens resp_parse.list() validation to error early for lists containing non-httr2_response elements and updates error messaging.
  • Adds check_httr2_response() and broadens test-utils.R + snapshots to improve coverage.

Reviewed changes

Copilot reviewed 12 out of 12 changed files in this pull request and generated 7 comments.

Show a summary per file
File Description
tests/testthat/test-utils.R Adds tests for utility helpers (including internal helpers) to increase coverage.
tests/testthat/test-resp_tidy.R Updates expectations for resp_tidy() now operating on single responses and NULL.
tests/testthat/test-resp_parse.R Adds coverage for list validation and updates test descriptions.
tests/testthat/_snaps/utils.md Adds snapshot for check_httr2_response() error.
tests/testthat/_snaps/resp_tidy.md Updates snapshots for new resp_tidy() error class/message.
tests/testthat/_snaps/resp_parse.md Updates snapshots for improved resp_parse() error messaging and list validation.
R/utils.R Introduces check_httr2_response() helper and keeps other utilities unchanged.
R/resp_tidy.R Refactors resp_tidy() to accept a single response (or NULL) and use policy/default parsing.
R/resp_parse.R Improves default error wording and adds list element-type validation.
NAMESPACE Removes resp_tidy S3 method registrations since it is no longer an S3 generic.
man/resp_tidy.Rd Updates docs to match the new resp_tidy(resp) single-response signature.
man/check_httr2_response.Rd Adds generated documentation for the new internal helper.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread tests/testthat/test-utils.R Outdated
Comment thread tests/testthat/test-utils.R
Comment thread tests/testthat/test-utils.R
Comment thread tests/testthat/test-utils.R
Comment thread tests/testthat/test-utils.R
Comment thread R/utils.R
Comment thread man/resp_tidy.Rd
Except not the insane ones.
@jonthegeek jonthegeek enabled auto-merge (squash) May 11, 2026 14:19
@jonthegeek jonthegeek merged commit 147294b into main May 11, 2026
9 of 11 checks passed
@jonthegeek jonthegeek deleted the resp_parse_clarify branch May 11, 2026 14:27
github-actions Bot pushed a commit that referenced this pull request May 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Clarify resp_parse() vs resp_tidy()

2 participants