Skip to content

Commit e6e262a

Browse files
authored
feat: Support new vctrs .name_repair options: unique_quiet, universal_quiet (#1625)
1 parent 4e1ab1e commit e6e262a

File tree

9 files changed

+63
-18
lines changed

9 files changed

+63
-18
lines changed

DESCRIPTION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ Imports:
3838
pkgconfig,
3939
rlang (>= 1.0.2),
4040
utils,
41-
vctrs (>= 0.4.2)
41+
vctrs (>= 0.5.0)
4242
Suggests:
4343
bench,
4444
bit64,

R/add.R

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ rbind_at <- function(old, new, pos) {
125125
#'
126126
#' @export
127127
add_column <- function(.data, ..., .before = NULL, .after = NULL,
128-
.name_repair = c("check_unique", "unique", "universal", "minimal")) {
128+
.name_repair = c("check_unique", "unique", "universal", "minimal", "unique_quiet", "universal_quiet")) {
129129
if (!is.data.frame(.data)) {
130130
deprecate_stop("2.1.1", "add_column(.data = 'must be a data frame')")
131131
}

R/as_tibble.R

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@
5959
#' df <- as_tibble(m)
6060
as_tibble <- function(x, ...,
6161
.rows = NULL,
62-
.name_repair = c("check_unique", "unique", "universal", "minimal"),
62+
.name_repair = c("check_unique", "unique", "universal", "minimal", "unique_quiet", "universal_quiet"),
6363
rownames = pkgconfig::get_config("tibble::rownames", NULL)) {
6464
UseMethod("as_tibble")
6565
}
@@ -68,7 +68,7 @@ as_tibble <- function(x, ...,
6868
#' @rdname as_tibble
6969
as_tibble.data.frame <- function(x, validate = NULL, ...,
7070
.rows = NULL,
71-
.name_repair = c("check_unique", "unique", "universal", "minimal"),
71+
.name_repair = c("check_unique", "unique", "universal", "minimal", "unique_quiet", "universal_quiet"),
7272
rownames = pkgconfig::get_config("tibble::rownames", NULL)) {
7373
if (!is.null(validate)) {
7474
deprecate_stop("2.0.0", "tibble::as_tibble(validate = )", "as_tibble(.name_repair =)")
@@ -103,7 +103,7 @@ as_tibble.data.frame <- function(x, validate = NULL, ...,
103103
#' @export
104104
#' @rdname as_tibble
105105
as_tibble.list <- function(x, validate = NULL, ..., .rows = NULL,
106-
.name_repair = c("check_unique", "unique", "universal", "minimal")) {
106+
.name_repair = c("check_unique", "unique", "universal", "minimal", "unique_quiet", "universal_quiet")) {
107107
if (!is.null(validate)) {
108108
deprecate_stop("2.0.0", "tibble::as_tibble(validate = )", "as_tibble(.name_repair =)")
109109
}
@@ -279,7 +279,7 @@ as_tibble.default <- function(x, ...) {
279279
#' as_tibble_row(list(c = "three", d = list(4:5)))
280280
#' as_tibble_row(1:3, .name_repair = "unique")
281281
as_tibble_row <- function(x,
282-
.name_repair = c("check_unique", "unique", "universal", "minimal")) {
282+
.name_repair = c("check_unique", "unique", "universal", "minimal", "unique_quiet", "universal_quiet")) {
283283
if (!vec_is(x)) {
284284
abort_as_tibble_row_vector(x)
285285
}

R/names.R

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
vectbl_names2 <- function(x,
2-
.name_repair = c("check_unique", "unique", "universal", "minimal"),
2+
.name_repair = c("check_unique", "unique", "universal", "minimal", "unique_quiet", "universal_quiet"),
33
quiet = FALSE,
44
call = caller_env()) {
55
name <- vec_names2(x, repair = "minimal", quiet = quiet)
@@ -8,7 +8,7 @@ vectbl_names2 <- function(x,
88

99
set_repaired_names <- function(x,
1010
repair_hint,
11-
.name_repair = c("check_unique", "unique", "universal", "minimal"),
11+
.name_repair = c("check_unique", "unique", "universal", "minimal", "unique_quiet", "universal_quiet"),
1212
quiet = FALSE,
1313
call = caller_env()) {
1414
names <- repaired_names(names2(x), repair_hint, .name_repair = .name_repair, quiet = quiet, call = call)
@@ -17,7 +17,7 @@ set_repaired_names <- function(x,
1717

1818
repaired_names <- function(name,
1919
repair_hint,
20-
.name_repair = c("check_unique", "unique", "universal", "minimal"),
20+
.name_repair = c("check_unique", "unique", "universal", "minimal", "unique_quiet", "universal_quiet"),
2121
quiet = FALSE,
2222
details = NULL,
2323
call = caller_env()) {

R/tibble.R

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@
4444
#' * `"check_unique"`: (default value), no name repair, but check they are
4545
#' `unique`,
4646
#' * `"universal"`: Make the names `unique` and syntactic
47+
#' * `"unique_quiet"`: Same as `"unique"`, but "quiet"
48+
#' * `"universal_quiet"`: Same as `"universal"`, but "quiet"
4749
#' * a function: apply custom name repair (e.g., `.name_repair = make.names`
4850
#' for names in the style of base R).
4951
#' * A purrr-style anonymous function, see [rlang::as_function()]
@@ -157,7 +159,7 @@
157159
#' try(tibble(a = 2, b = !!bogus))
158160
tibble <- function(...,
159161
.rows = NULL,
160-
.name_repair = c("check_unique", "unique", "universal", "minimal")) {
162+
.name_repair = c("check_unique", "unique", "universal", "minimal", "unique_quiet", "universal_quiet")) {
161163
xs <- quos(...)
162164

163165
tibble_quos(xs, .rows, .name_repair)
@@ -177,7 +179,7 @@ tibble <- function(...,
177179
#' # Use tibble_row() to construct a one-row tibble:
178180
#' tibble_row(a = 1, lm = lm(Height ~ Girth + Volume, data = trees))
179181
tibble_row <- function(...,
180-
.name_repair = c("check_unique", "unique", "universal", "minimal")) {
182+
.name_repair = c("check_unique", "unique", "universal", "minimal", "unique_quiet", "universal_quiet")) {
181183
xs <- enquos(...)
182184

183185
tibble_quos(xs, .rows = 1, .name_repair = .name_repair, single_row = TRUE)

man/add_column.Rd

Lines changed: 4 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

man/as_tibble.Rd

Lines changed: 10 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

man/tibble.Rd

Lines changed: 6 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/testthat/test-as_tibble.R

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,36 @@ test_that("as_tibble() implements universal names", {
188188
)
189189
})
190190

191+
test_that("as_tibble() implements unique_quiet", {
192+
skip_if_not_installed("vctrs", "0.5.0")
193+
194+
expect_no_message({
195+
invalid_df <- as_tibble(list(3, 4, 5), .name_repair = "unique_quiet")
196+
})
197+
expect_equal(length(invalid_df), 3)
198+
expect_equal(nrow(invalid_df), 1)
199+
# it is "quiet" despite `quiet` being FALSE
200+
expect_equal(
201+
names(invalid_df),
202+
vec_as_names(rep("", 3), repair = "unique_quiet", quiet = FALSE)
203+
)
204+
})
205+
206+
test_that("as_tibble() implements universal_quiet", {
207+
skip_if_not_installed("vctrs", "0.5.0")
208+
209+
expect_no_message({
210+
invalid_df <- as_tibble(list(3, 4, 5), .name_repair = "universal_quiet")
211+
})
212+
expect_equal(length(invalid_df), 3)
213+
expect_equal(nrow(invalid_df), 1)
214+
# it is "quiet" despite `quiet` being FALSE
215+
expect_equal(
216+
names(invalid_df),
217+
vec_as_names(rep("", 3), repair = "universal_quiet", quiet = FALSE)
218+
)
219+
})
220+
191221

192222
test_that("as_tibble() implements custom name repair", {
193223
expect_silent(

0 commit comments

Comments
 (0)