Skip to content

Commit 4fe9038

Browse files
authored
v1.3.1 (#1011)
1 parent e339c15 commit 4fe9038

File tree

6 files changed

+344
-116
lines changed

6 files changed

+344
-116
lines changed

DESCRIPTION

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
11
Type: Package
22
Package: plumber
33
Title: An API Generator for R
4-
Version: 1.3.0.9000
4+
Version: 1.3.1
55
Authors@R: c(
66
person("Barret", "Schloerke", , "[email protected]", role = c("cre", "aut"),
77
comment = c(ORCID = "0000-0001-9986-114X")),
88
person("Jeff", "Allen", , "[email protected]", role = c("aut", "ccp")),
99
person("Bruno", "Tremblay", , "[email protected]", role = "ctb"),
1010
person("Frans", "van Dunné", , "[email protected]", role = "ctb"),
1111
person("Sebastiaan", "Vandewoude", , "[email protected]", role = "ctb"),
12-
person("Posit Software, PBC", role = c("cph", "fnd"))
12+
person("Posit Software, PBC", role = c("cph", "fnd"),
13+
comment = c(ROR = "03wc8by49"))
1314
)
1415
Description: Gives the ability to automatically generate and serve an HTTP
1516
API from R functions using the annotations in the R documentation

NEWS.md

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,17 @@
1-
# plumber (development version)
1+
# plumber 1.3.1
22

3-
* Added support for [Arrow IPC Streams](https://arrow.apache.org/docs/format/Columnar.html#serialization-and-interprocess-communication-ipc) (@josiahparry #968)
4-
* Fixed a bug where setting the `apiPath` option wouldn't be honored when running the app (@thomasp85, #836)
5-
* Removed deprecated `mockery` package dependency. Tests now use native R closures for callback tracking. (#1009)
3+
## New features
4+
5+
* `serializer_feather_stream()` and `parser_feather_stream()` now support
6+
[Arrow IPC Streams](https://arrow.apache.org/docs/format/Columnar.html#serialization-and-interprocess-communication-ipc)
7+
(@josiahparry, #968).
8+
9+
## Bug fixes and minor improvements
10+
11+
* `pr_run()` now correctly honors the `apiPath` option when mounting
12+
documentation (@thomasp85, #836).
13+
14+
* Added CI testing for only depends packages by request of CRAN (#1006).
615

716
# plumber 1.3.0
817

cran-comments.md

Lines changed: 155 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,161 @@
11
## Comments
22

3-
#### 2025-02-18
3+
#### 2025-11
44

5-
Releasing a minor update to `{plumber}`. Added a couple new features and some bug fixes.
5+
Dear maintainer,
66

7-
Please let me know if I can provide any additional information or assistance. Thank you!
7+
Please see the problems shown on
8+
cran.r-project.org/web/checks/check_results_plumber.html.
9+
10+
Please correct before 2025-12-08 to safely retain your package on CRAN.
11+
12+
Do remember to look at any 'Additional issues'
13+
14+
Packages in Suggests should be used conditionally: see 'Writing R Extensions'.
15+
This needs to be corrected even if the missing package(s) become available.
16+
It can be tested by checking with _R_CHECK_DEPENDS_ONLY_=true.
17+
18+
The CRAN Team
19+
20+
#### 2024-12-12
21+
22+
Complete output:
23+
> library(testthat)
24+
> library(plumber)
25+
>
26+
> test_check("plumber")
27+
Saving _problems/test-parser-6.R
28+
Saving _problems/test-serializer-htmlwidgets-39.R
29+
<packageNotFoundError in loadNamespace(x): there is no package called 'base64enc'>
30+
<packageNotFoundError in loadNamespace(x): there is no package called 'base64enc'>
31+
Saving _problems/test-tidy-plumber-109.R
32+
<packageNotFoundError in loadNamespace(x): there is no package called 'base64enc'>
33+
Saving _problems/test-tidy-plumber-133.R
34+
Saving _problems/test-zzz-openapi-340.R
35+
Saving _problems/test-zzz-openapi-347.R
36+
[ FAIL 7 | WARN 0 | SKIP 46 | PASS 1750 ]
37+
38+
══ Skipped tests (46) ══════════════════════════════════════════════════════════
39+
• On CRAN (15): 'test-cookies.R:47:3', 'test-deprecated.R:60:3',
40+
'test-find-port.R:40:3', 'test-find-port.R:56:3', 'test-legacy.R:20:3',
41+
'test-options.R:22:3', 'test-plumber-print.R:2:3',
42+
'test-plumber-print.R:60:3', 'test-plumber.R:67:3',
43+
'test-serializer-device.R:26:1', 'test-serializer-htmlwidgets.R:18:3',
44+
'test-static.R:23:3', 'test-zzz-openapi.R:254:3',
45+
'test-zzz-plumb_api.R:10:3', 'test-zzz-plumb_api.R:65:3'
46+
• {arrow} is not installed (5): 'test-parse-body.R:93:3',
47+
'test-parse-body.R:113:3', 'test-serializer-feather.R:4:3',
48+
'test-serializer-feather.R:21:3', 'test-serializer-feather.R:34:3'
49+
• {base64enc} is not installed (9): 'test-cookies.R:113:3',
50+
'test-cookies.R:175:3', 'test-cookies.R:207:3', 'test-cookies.R:265:3',
51+
'test-sessions.R:30:3', 'test-sessions.R:55:3', 'test-sessions.R:86:3',
52+
'test-sessions.R:117:3', 'test-sessions.R:150:3'
53+
• {geojsonsf} is not installed (3): 'test-parse-body.R:164:3',
54+
'test-serializer-geojson.R:2:3', 'test-serializer-geojson.R:24:3'
55+
• {mockery} is not installed (2): 'test-plumber-run.R:45:3',
56+
'test-plumber-run.R:71:3'
57+
• {readr} is not installed (5): 'test-parse-body.R:53:3',
58+
'test-parse-body.R:73:3', 'test-parse-body.R:305:3',
59+
'test-serializer-csv.R:4:3', 'test-serializer-csv.R:26:3'
60+
• {readxl} is not installed (1): 'test-parse-body.R:138:3'
61+
• {rmarkdown} is not installed. (1): 'test-zzzz-include.R:22:3'
62+
• {writexl} is not installed (2): 'test-serializer-excel.R:4:3',
63+
'test-serializer-excel.R:24:3'
64+
• {yaml} is not installed (3): 'test-parse-body.R:46:3',
65+
'test-serializer-yaml.R:4:3', 'test-serializer-yaml.R:26:3'
66+
67+
══ Failed tests ════════════════════════════════════════════════════════════════
68+
── Error ('test-parser.R:6:5'): parsers can be combined ────────────────────────
69+
Error in `(function (..., sheet = NULL) { if (!requireNamespace("readxl", quietly = TRUE)) { stop("`readxl` must be installed for `parser_excel` to work") } parse_fn <- parser_read_file(function(tmpfile) { if (is.null(sheet)) { sheet <- 1L } else if (anyNA(sheet)) { sheet <- readxl::excel_sheets(tmpfile) } if (is.character(sheet)) names(sheet) <- sheet out <- suppressWarnings(lapply(sheet, function(sht) { readxl::read_excel(path = tmpfile, sheet = sht, ...) })) out }) function(value, ...) { parse_fn(value) } })()`: `readxl` must be installed for `parser_excel` to work
70+
Backtrace:
71+
72+
1. └─plumber (local) expect_parsers(...) at test-parser.R:18:3
73+
2. └─plumber:::make_parser(names) at test-parser.R:6:5
74+
3. └─base::lapply(...)
75+
4. └─plumber (local) FUN(X[[i]], ...)
76+
5. ├─base::do.call(init_parser_func, aliases[[alias]])
77+
6. └─plumber (local) `<fn>`()
78+
7. ├─base::do.call(parser, list(...))
79+
8. └─plumber (local) `<fn>`()
80+
── Error ('test-parser.R:38:3'): parsers work ──────────────────────────────────
81+
Error in `(function (..., sheet = NULL) { if (!requireNamespace("readxl", quietly = TRUE)) { stop("`readxl` must be installed for `parser_excel` to work") } parse_fn <- parser_read_file(function(tmpfile) { if (is.null(sheet)) { sheet <- 1L } else if (anyNA(sheet)) { sheet <- readxl::excel_sheets(tmpfile) } if (is.character(sheet)) names(sheet) <- sheet out <- suppressWarnings(lapply(sheet, function(sht) { readxl::read_excel(path = tmpfile, sheet = sht, ...) })) out }) function(value, ...) { parse_fn(value) } })()`: `readxl` must be installed for `parser_excel` to work
82+
Backtrace:
83+
84+
1. └─plumber::pr(test_path("files/parsers.R")) at test-parser.R:38:3
85+
2. └─Plumber$new(file = file, filters = filters, envir = envir)
86+
3. └─plumber (local) initialize(...)
87+
4. └─plumber:::evaluateBlock(...)
88+
5. └─base::lapply(...)
89+
6. └─plumber (local) FUN(X[[i]], ...)
90+
7. └─PlumberEndpoint$new(...)
91+
8. └─plumber (local) initialize(...)
92+
9. └─plumber:::make_parser(parsers)
93+
1. └─base::lapply(...)
94+
2. └─plumber (local) FUN(X[[i]], ...)
95+
3. ├─base::do.call(init_parser_func, aliases[[alias]])
96+
4. └─plumber (local) `<fn>`()
97+
5. ├─base::do.call(parser, list(...))
98+
6. └─plumber (local) `<fn>`()
99+
── Error ('test-serializer-htmlwidgets.R:37:3'): Errors call error handler ─────
100+
Error: The htmlwidgets package is not available but is required in order to use the htmlwidgets serializer
101+
Backtrace:
102+
103+
1. ├─base::suppressWarnings(...) at test-serializer-htmlwidgets.R:37:3
104+
2. │ └─base::withCallingHandlers(...)
105+
3. └─plumber::serializer_htmlwidget()
106+
── Error ('test-tidy-plumber.R:109:3'): pr_cookie adds cookie ──────────────────
107+
Error in `expect_match(p$call(req)$headers$`Set-Cookie`, "^counter=")`: `object` must be a character vector, not `NULL`.
108+
Backtrace:
109+
110+
1. └─testthat::expect_match(object = p$call(req)$headers$`Set-Cookie`) at test-tidy-plumber.R:109:3
111+
2. └─testthat:::check_character(object)
112+
3. └─testthat:::stop_input_type(...)
113+
4. └─rlang::abort(message, ..., call = call, arg = arg)
114+
── Error ('test-tidy-plumber.R:133:3'): pr_cookie adds path in cookie ──────────
115+
Error in `expect_match(cookie_header1, "^counter=")`: `object` must be a character vector, not `NULL`.
116+
Backtrace:
117+
118+
1. └─testthat::expect_match(object = cookie_header1) at test-tidy-plumber.R:133:3
119+
2. └─testthat:::check_character(object)
120+
3. └─testthat:::stop_input_type(...)
121+
4. └─rlang::abort(message, ..., call = call, arg = arg)
122+
── Error ('test-zzz-openapi.R:340:3'): Response content type set with serializer ──
123+
Error in `serializer_csv()`: `readr` must be installed for `serializer_csv` to work
124+
Backtrace:
125+
126+
1. ├─plumber::pr_get(...) at test-zzz-openapi.R:340:3
127+
2. │ └─plumber::pr_handle(...)
128+
3. │ └─pr$handle(...)
129+
4. │ └─PlumberEndpoint$new(...)
130+
5. │ └─plumber (local) initialize(...)
131+
6. └─plumber::serializer_csv()
132+
── Error ('test-zzz-openapi.R:347:3'): Api spec can be set using a file path ───
133+
Error in `pr$setApiSpec(api = api)`: yaml must be installed to read yaml format
134+
Backtrace:
135+
136+
1. ├─pr() %>% pr_set_api_spec(test_path("files/openapi.yaml")) at test-zzz-openapi.R:347:3
137+
2. └─plumber::pr_set_api_spec(., test_path("files/openapi.yaml"))
138+
3. └─pr$setApiSpec(api = api)
139+
140+
[ FAIL 7 | WARN 0 | SKIP 46 | PASS 1750 ]
141+
Error:
142+
! Test failures.
143+
Execution halted
144+
* checking PDF version of manual ... [14s/18s] OK
145+
* checking HTML version of manual ... [9s/12s] OK
146+
* checking for non-standard things in the check directory ... OK
147+
* checking for detritus in the temp directory ... OK
148+
* DONE
149+
150+
Status: 1 ERROR
151+
See
152+
‘/data/gannet/ripley/R/packages/tests-Suggests/plumber.Rcheck/00check.log’
153+
for details.
154+
155+
156+
#### 2024-12-12
157+
158+
A CI check is now being run with your environment variable _R_CHECK_DEPENDS_ONLY_=true set.
8159

9160
Best,
10161
Barret
@@ -15,7 +166,7 @@ Barret
15166

16167
## revdepcheck results
17168

18-
We checked 19 reverse dependencies, comparing R CMD check results across CRAN and dev versions of this package.
169+
We checked 21 reverse dependencies, comparing R CMD check results across CRAN and dev versions of this package.
19170

20171
* We saw 0 new problems
21172
* We failed to check 0 packages

revdep/README.md

Lines changed: 35 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -2,67 +2,69 @@
22

33
|field |value |
44
|:--------|:----------------------------------------|
5-
|version |R version 4.4.2 (2024-10-31) |
6-
|os |macOS Sequoia 15.2 |
5+
|version |R version 4.5.2 (2025-10-31) |
6+
|os |macOS Tahoe 26.1 |
77
|system |aarch64, darwin20 |
88
|ui |X11 |
99
|language |(EN) |
10-
|collate |en_US.UTF-8 |
11-
|ctype |en_US.UTF-8 |
10+
|collate |C.UTF-8 |
11+
|ctype |C.UTF-8 |
1212
|tz |America/New_York |
13-
|date |2025-02-18 |
13+
|date |2025-12-12 |
1414
|pandoc |3.1 @ /opt/homebrew/bin/pandoc |
15-
|quarto |1.5.57 @ /Applications/quarto/bin/quarto |
15+
|quarto |1.8.25 @ /Applications/quarto/bin/quarto |
1616

1717
# Dependencies
1818

1919
|package |old |new |Δ |
2020
|:---------|:---------|:---------|:--|
21-
|plumber |1.2.2 |1.3.0 |* |
22-
|cli |3.6.4 |3.6.4 | |
21+
|plumber |1.3.0 |1.3.1 |* |
22+
|cli |3.6.5 |3.6.5 | |
2323
|crayon |1.5.3 |1.5.3 | |
24-
|curl |6.2.0 |6.2.0 | |
25-
|ellipsis |0.3.2 |NA |* |
24+
|curl |7.0.0 |7.0.0 | |
2625
|fastmap |1.2.0 |1.2.0 | |
2726
|glue |1.8.0 |1.8.0 | |
28-
|httpuv |1.6.15 |1.6.15 | |
29-
|jsonlite |1.8.9 |1.8.9 | |
30-
|later |1.4.1 |1.4.1 | |
27+
|httpuv |1.6.16 |1.6.16 | |
28+
|jsonlite |2.0.0 |2.0.0 | |
29+
|later |1.4.4 |1.4.4 | |
3130
|lifecycle |1.0.4 |1.0.4 | |
32-
|magrittr |2.0.3 |2.0.3 | |
33-
|mime |0.12 |0.12 | |
34-
|promises |1.3.2 |1.3.2 | |
31+
|magrittr |2.0.4 |2.0.4 | |
32+
|mime |0.13 |0.13 | |
33+
|otel |0.2.0 |0.2.0 | |
34+
|promises |1.5.0 |1.5.0 | |
3535
|R6 |2.6.1 |2.6.1 | |
36-
|Rcpp |1.0.14 |1.0.14 | |
37-
|rlang |1.1.5 |1.1.5 | |
36+
|Rcpp |1.1.0 |1.1.0 | |
37+
|rlang |1.1.6 |1.1.6 | |
3838
|sodium |1.4.0 |1.4.0 | |
39-
|stringi |1.8.4 |1.8.4 | |
39+
|stringi |1.8.7 |1.8.7 | |
4040
|swagger |5.17.14.1 |5.17.14.1 | |
4141
|webutils |1.2.2 |1.2.2 | |
4242

4343
# Revdeps
4444

45-
## All (19)
45+
## All (21)
4646

4747
|package |version |error |warning |note |
4848
|:---------------------|:---------|:-----|:-------|:----|
49-
|[arenar](problems.md#arenar)|0.2.0 | |1 |2 |
50-
|[AzureContainers](problems.md#azurecontainers)|1.3.2 | | |1 |
51-
|[bayesAB](problems.md#bayesab)|1.1.3 | | |1 |
52-
|[gqlr](problems.md#gqlr)|0.0.2 | | |1 |
53-
|[log](problems.md#log)|1.1.1 | | |1 |
54-
|microCRAN |0.9.0-1 | | | |
49+
|[arenar](problems.md#arenar)|0.2.0 | |1 |1 |
50+
|[AzureContainers](problems.md#azurecontainers)|1.3.3 | | |1 |
51+
|[bayesAB](problems.md#bayesab)|1.1.3 |1 | |1 |
52+
|[gaawr2](problems.md#gaawr2)|0.0.3 |1 | | |
53+
|gqlr |0.0.2 | | | |
54+
|[log](problems.md#log)|1.1.1 | | |2 |
55+
|[microCRAN](problems.md#microcran)|0.9.0-1 | | |1 |
5556
|MicroMoB |0.1.2 | | | |
56-
|[occupationMeasurement](problems.md#occupationmeasurement)|0.3.2 |-1 | |1 |
57-
|[openmetrics](problems.md#openmetrics)|0.3.0 | | |2 |
57+
|occupationMeasurement |0.3.2 | | | |
58+
|[openmetrics](problems.md#openmetrics)|0.3.0 | | |1 |
5859
|[plumbertableau](problems.md#plumbertableau)|0.1.1 |1 | | |
5960
|polished |0.8.1 | | | |
6061
|rapidoc |9.3.4 | | | |
6162
|redoc |2.0.0.75 | | | |
62-
|rsconnect |1.3.4 | | | |
63-
|shiny.telemetry |0.3.1 | | | |
64-
|starsTileServer |0.1.1 | | | |
65-
|[swagger](problems.md#swagger)|5.17.14.1 | | |1 |
63+
|ReliaGrowR |0.3.2 | | | |
64+
|rsconnect |1.7.0 | | | |
65+
|shiny.telemetry |0.3.2 | | | |
66+
|[starsTileServer](problems.md#starstileserver)|0.1.1 |1 | | |
67+
|swagger |5.17.14.1 | | | |
6668
|[tgver](problems.md#tgver)|0.3.0 |1 | | |
67-
|vetiver |0.2.5 | | | |
69+
|[vetiver](problems.md#vetiver)|0.2.6 |1 | | |
6870

revdep/cran.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
## revdepcheck results
22

3-
We checked 19 reverse dependencies, comparing R CMD check results across CRAN and dev versions of this package.
3+
We checked 21 reverse dependencies, comparing R CMD check results across CRAN and dev versions of this package.
44

55
* We saw 0 new problems
66
* We failed to check 0 packages

0 commit comments

Comments
 (0)