From 52a6ea664b30593911f82fe5a7ff4a08d4f9c9d6 Mon Sep 17 00:00:00 2001 From: Andy Teucher Date: Mon, 6 Mar 2023 15:03:48 -0800 Subject: [PATCH 01/19] use_tidy_depencies --- DESCRIPTION | 1 + NAMESPACE | 2 + R/devtools-package.R | 2 + R/import-standalone-purrr.R | 239 ++++++++++++++++++++++ man/figures/lifecycle-archived.svg | 22 +- man/figures/lifecycle-defunct.svg | 22 +- man/figures/lifecycle-deprecated.svg | 22 +- man/figures/lifecycle-experimental.svg | 22 +- man/figures/lifecycle-maturing.svg | 22 +- man/figures/lifecycle-questioning.svg | 22 +- man/figures/lifecycle-soft-deprecated.svg | 21 ++ man/figures/lifecycle-stable.svg | 30 ++- man/figures/lifecycle-superseded.svg | 22 +- 13 files changed, 441 insertions(+), 8 deletions(-) create mode 100644 R/import-standalone-purrr.R create mode 100644 man/figures/lifecycle-soft-deprecated.svg diff --git a/DESCRIPTION b/DESCRIPTION index 83e23ac38..f30df9614 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -21,6 +21,7 @@ Imports: desc (>= 1.4.1), ellipsis (>= 0.3.2), fs (>= 1.5.2), + glue, lifecycle (>= 1.0.1), memoise (>= 2.0.1), miniUI (>= 0.1.1.1), diff --git a/NAMESPACE b/NAMESPACE index 6ad5b66d6..c1620ed61 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -80,9 +80,11 @@ export(uses_testthat) export(wd) export(with_debug) import(fs) +import(rlang) importFrom(cli,cat_bullet) importFrom(cli,cat_rule) importFrom(ellipsis,check_dots_used) +importFrom(glue,glue) importFrom(lifecycle,deprecated) importFrom(memoise,memoise) importFrom(miniUI,miniPage) diff --git a/R/devtools-package.R b/R/devtools-package.R index 01349f78b..2ed7fb6f1 100644 --- a/R/devtools-package.R +++ b/R/devtools-package.R @@ -16,6 +16,8 @@ "_PACKAGE" ## usethis namespace: start +#' @import rlang +#' @importFrom glue glue #' @importFrom lifecycle deprecated #' @importFrom miniUI miniPage #' @importFrom profvis profvis diff --git a/R/import-standalone-purrr.R b/R/import-standalone-purrr.R new file mode 100644 index 000000000..42e132d7e --- /dev/null +++ b/R/import-standalone-purrr.R @@ -0,0 +1,239 @@ +# Standalone file: do not edit by hand +# Source: +# ---------------------------------------------------------------------- +# +# --- +# repo: r-lib/rlang +# file: standalone-purrr.R +# last-updated: 2023-02-23 +# license: https://unlicense.org +# --- +# +# This file provides a minimal shim to provide a purrr-like API on top of +# base R functions. They are not drop-in replacements but allow a similar style +# of programming. +# +# ## Changelog +# +# 2023-02-23: +# * Added `list_c()` +# +# 2022-06-07: +# * `transpose()` is now more consistent with purrr when inner names +# are not congruent (#1346). +# +# 2021-12-15: +# * `transpose()` now supports empty lists. +# +# 2021-05-21: +# * Fixed "object `x` not found" error in `imap()` (@mgirlich) +# +# 2020-04-14: +# * Removed `pluck*()` functions +# * Removed `*_cpl()` functions +# * Used `as_function()` to allow use of `~` +# * Used `.` prefix for helpers +# +# nocov start + +map <- function(.x, .f, ...) { + .f <- as_function(.f, env = global_env()) + lapply(.x, .f, ...) +} +walk <- function(.x, .f, ...) { + map(.x, .f, ...) + invisible(.x) +} + +map_lgl <- function(.x, .f, ...) { + .rlang_purrr_map_mold(.x, .f, logical(1), ...) +} +map_int <- function(.x, .f, ...) { + .rlang_purrr_map_mold(.x, .f, integer(1), ...) +} +map_dbl <- function(.x, .f, ...) { + .rlang_purrr_map_mold(.x, .f, double(1), ...) +} +map_chr <- function(.x, .f, ...) { + .rlang_purrr_map_mold(.x, .f, character(1), ...) +} +.rlang_purrr_map_mold <- function(.x, .f, .mold, ...) { + .f <- as_function(.f, env = global_env()) + out <- vapply(.x, .f, .mold, ..., USE.NAMES = FALSE) + names(out) <- names(.x) + out +} + +map2 <- function(.x, .y, .f, ...) { + .f <- as_function(.f, env = global_env()) + out <- mapply(.f, .x, .y, MoreArgs = list(...), SIMPLIFY = FALSE) + if (length(out) == length(.x)) { + set_names(out, names(.x)) + } else { + set_names(out, NULL) + } +} +map2_lgl <- function(.x, .y, .f, ...) { + as.vector(map2(.x, .y, .f, ...), "logical") +} +map2_int <- function(.x, .y, .f, ...) { + as.vector(map2(.x, .y, .f, ...), "integer") +} +map2_dbl <- function(.x, .y, .f, ...) { + as.vector(map2(.x, .y, .f, ...), "double") +} +map2_chr <- function(.x, .y, .f, ...) { + as.vector(map2(.x, .y, .f, ...), "character") +} +imap <- function(.x, .f, ...) { + map2(.x, names(.x) %||% seq_along(.x), .f, ...) +} + +pmap <- function(.l, .f, ...) { + .f <- as.function(.f) + args <- .rlang_purrr_args_recycle(.l) + do.call("mapply", c( + FUN = list(quote(.f)), + args, MoreArgs = quote(list(...)), + SIMPLIFY = FALSE, USE.NAMES = FALSE + )) +} +.rlang_purrr_args_recycle <- function(args) { + lengths <- map_int(args, length) + n <- max(lengths) + + stopifnot(all(lengths == 1L | lengths == n)) + to_recycle <- lengths == 1L + args[to_recycle] <- map(args[to_recycle], function(x) rep.int(x, n)) + + args +} + +keep <- function(.x, .f, ...) { + .x[.rlang_purrr_probe(.x, .f, ...)] +} +discard <- function(.x, .p, ...) { + sel <- .rlang_purrr_probe(.x, .p, ...) + .x[is.na(sel) | !sel] +} +map_if <- function(.x, .p, .f, ...) { + matches <- .rlang_purrr_probe(.x, .p) + .x[matches] <- map(.x[matches], .f, ...) + .x +} +.rlang_purrr_probe <- function(.x, .p, ...) { + if (is_logical(.p)) { + stopifnot(length(.p) == length(.x)) + .p + } else { + .p <- as_function(.p, env = global_env()) + map_lgl(.x, .p, ...) + } +} + +compact <- function(.x) { + Filter(length, .x) +} + +transpose <- function(.l) { + if (!length(.l)) { + return(.l) + } + + inner_names <- names(.l[[1]]) + + if (is.null(inner_names)) { + fields <- seq_along(.l[[1]]) + } else { + fields <- set_names(inner_names) + .l <- map(.l, function(x) { + if (is.null(names(x))) { + set_names(x, inner_names) + } else { + x + } + }) + } + + # This way missing fields are subsetted as `NULL` instead of causing + # an error + .l <- map(.l, as.list) + + map(fields, function(i) { + map(.l, .subset2, i) + }) +} + +every <- function(.x, .p, ...) { + .p <- as_function(.p, env = global_env()) + + for (i in seq_along(.x)) { + if (!rlang::is_true(.p(.x[[i]], ...))) return(FALSE) + } + TRUE +} +some <- function(.x, .p, ...) { + .p <- as_function(.p, env = global_env()) + + for (i in seq_along(.x)) { + if (rlang::is_true(.p(.x[[i]], ...))) return(TRUE) + } + FALSE +} +negate <- function(.p) { + .p <- as_function(.p, env = global_env()) + function(...) !.p(...) +} + +reduce <- function(.x, .f, ..., .init) { + f <- function(x, y) .f(x, y, ...) + Reduce(f, .x, init = .init) +} +reduce_right <- function(.x, .f, ..., .init) { + f <- function(x, y) .f(y, x, ...) + Reduce(f, .x, init = .init, right = TRUE) +} +accumulate <- function(.x, .f, ..., .init) { + f <- function(x, y) .f(x, y, ...) + Reduce(f, .x, init = .init, accumulate = TRUE) +} +accumulate_right <- function(.x, .f, ..., .init) { + f <- function(x, y) .f(y, x, ...) + Reduce(f, .x, init = .init, right = TRUE, accumulate = TRUE) +} + +detect <- function(.x, .f, ..., .right = FALSE, .p = is_true) { + .p <- as_function(.p, env = global_env()) + .f <- as_function(.f, env = global_env()) + + for (i in .rlang_purrr_index(.x, .right)) { + if (.p(.f(.x[[i]], ...))) { + return(.x[[i]]) + } + } + NULL +} +detect_index <- function(.x, .f, ..., .right = FALSE, .p = is_true) { + .p <- as_function(.p, env = global_env()) + .f <- as_function(.f, env = global_env()) + + for (i in .rlang_purrr_index(.x, .right)) { + if (.p(.f(.x[[i]], ...))) { + return(i) + } + } + 0L +} +.rlang_purrr_index <- function(x, right = FALSE) { + idx <- seq_along(x) + if (right) { + idx <- rev(idx) + } + idx +} + +list_c <- function(x) { + inject(c(!!!x)) +} + +# nocov end diff --git a/man/figures/lifecycle-archived.svg b/man/figures/lifecycle-archived.svg index 48f72a6f3..745ab0c78 100644 --- a/man/figures/lifecycle-archived.svg +++ b/man/figures/lifecycle-archived.svg @@ -1 +1,21 @@ - lifecyclelifecyclearchivedarchived \ No newline at end of file + + lifecycle: archived + + + + + + + + + + + + + + + lifecycle + + archived + + diff --git a/man/figures/lifecycle-defunct.svg b/man/figures/lifecycle-defunct.svg index 01452e5fb..d5c9559ed 100644 --- a/man/figures/lifecycle-defunct.svg +++ b/man/figures/lifecycle-defunct.svg @@ -1 +1,21 @@ -lifecyclelifecycledefunctdefunct \ No newline at end of file + + lifecycle: defunct + + + + + + + + + + + + + + + lifecycle + + defunct + + diff --git a/man/figures/lifecycle-deprecated.svg b/man/figures/lifecycle-deprecated.svg index 4baaee01c..b61c57c3f 100644 --- a/man/figures/lifecycle-deprecated.svg +++ b/man/figures/lifecycle-deprecated.svg @@ -1 +1,21 @@ -lifecyclelifecycledeprecateddeprecated \ No newline at end of file + + lifecycle: deprecated + + + + + + + + + + + + + + + lifecycle + + deprecated + + diff --git a/man/figures/lifecycle-experimental.svg b/man/figures/lifecycle-experimental.svg index d1d060e92..5d88fc2c6 100644 --- a/man/figures/lifecycle-experimental.svg +++ b/man/figures/lifecycle-experimental.svg @@ -1 +1,21 @@ -lifecyclelifecycleexperimentalexperimental \ No newline at end of file + + lifecycle: experimental + + + + + + + + + + + + + + + lifecycle + + experimental + + diff --git a/man/figures/lifecycle-maturing.svg b/man/figures/lifecycle-maturing.svg index df7131014..897370ecf 100644 --- a/man/figures/lifecycle-maturing.svg +++ b/man/figures/lifecycle-maturing.svg @@ -1 +1,21 @@ -lifecyclelifecyclematuringmaturing \ No newline at end of file + + lifecycle: maturing + + + + + + + + + + + + + + + lifecycle + + maturing + + diff --git a/man/figures/lifecycle-questioning.svg b/man/figures/lifecycle-questioning.svg index 08ee0c903..7c1721d05 100644 --- a/man/figures/lifecycle-questioning.svg +++ b/man/figures/lifecycle-questioning.svg @@ -1 +1,21 @@ -lifecyclelifecyclequestioningquestioning \ No newline at end of file + + lifecycle: questioning + + + + + + + + + + + + + + + lifecycle + + questioning + + diff --git a/man/figures/lifecycle-soft-deprecated.svg b/man/figures/lifecycle-soft-deprecated.svg new file mode 100644 index 000000000..9c166ff30 --- /dev/null +++ b/man/figures/lifecycle-soft-deprecated.svg @@ -0,0 +1,21 @@ + + lifecycle: soft-deprecated + + + + + + + + + + + + + + + lifecycle + + soft-deprecated + + diff --git a/man/figures/lifecycle-stable.svg b/man/figures/lifecycle-stable.svg index e015dc811..9bf21e76b 100644 --- a/man/figures/lifecycle-stable.svg +++ b/man/figures/lifecycle-stable.svg @@ -1 +1,29 @@ -lifecyclelifecyclestablestable \ No newline at end of file + + lifecycle: stable + + + + + + + + + + + + + + + + lifecycle + + + + stable + + + diff --git a/man/figures/lifecycle-superseded.svg b/man/figures/lifecycle-superseded.svg index 75f24f553..25211d1a6 100644 --- a/man/figures/lifecycle-superseded.svg +++ b/man/figures/lifecycle-superseded.svg @@ -1 +1,21 @@ - lifecyclelifecyclesupersededsuperseded \ No newline at end of file + + lifecycle: superseded + + + + + + + + + + + + + + + lifecycle + + superseded + + From 556db887d8be1dd7d71690ca9a4f508e9edf0a38 Mon Sep 17 00:00:00 2001 From: Andy Teucher Date: Mon, 6 Mar 2023 15:10:07 -0800 Subject: [PATCH 02/19] Start using glue --- R/release.R | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/R/release.R b/R/release.R index 9ac699815..e46859697 100644 --- a/R/release.R +++ b/R/release.R @@ -71,13 +71,13 @@ release <- function(pkg = ".", check = FALSE, args = NULL) { if (show_cran_check) { if (!is.null(cran_details)) { end_sentence <- "\n shown above?" - cat_rule(paste0("Details of the CRAN check results for ", pkg$package)) + cat_rule(glue("Details of the CRAN check results for {pkg$package}")) summary(cran_details) cat_rule() } - cran_url <- paste0( - cran_mirror(), "/web/checks/check_results_", - pkg$package, ".html" + cran_url <- glue( + "{cran_mirror()}/web/checks/check_results_", + "{pkg$package}.html" ) if (yesno("Have you fixed all existing problems at \n{cran_url}{end_sentence}")) { return(invisible()) @@ -95,8 +95,8 @@ release <- function(pkg = ".", check = FALSE, args = NULL) { deps <- if (new_pkg) 0 else length(revdep(pkg$package)) if (deps > 0) { - msg <- paste0( - "Have you checked the ", deps, " reverse dependencies ", + msg <- glue( + "Have you checked the {deps} reverse dependencies ", "(with the revdepcheck package)?" ) if (yesno(msg)) { From 39840a564212732b0fde381bf29797700e230052 Mon Sep 17 00:00:00 2001 From: Andy Teucher Date: Mon, 6 Mar 2023 15:13:05 -0800 Subject: [PATCH 03/19] use standalone-purrr compact and rlang %||% --- R/utils.R | 7 ------- 1 file changed, 7 deletions(-) diff --git a/R/utils.R b/R/utils.R index 48629a0e6..4f8da6894 100644 --- a/R/utils.R +++ b/R/utils.R @@ -1,10 +1,3 @@ -compact <- function(x) { - is_empty <- vapply(x, function(x) length(x) == 0, logical(1)) - x[!is_empty] -} - -"%||%" <- function(a, b) if (!is.null(a)) a else b - "%:::%" <- function(p, f) { get(f, envir = asNamespace(p)) } From 0fd801878633409d30b489f0b92a324504f0ff1c Mon Sep 17 00:00:00 2001 From: Andy Teucher Date: Mon, 6 Mar 2023 15:19:25 -0800 Subject: [PATCH 04/19] Replace vcapply with map_chr --- R/sitrep.R | 4 ++-- R/utils.R | 4 ---- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/R/sitrep.R b/R/sitrep.R index 27c809c24..334a774d4 100644 --- a/R/sitrep.R +++ b/R/sitrep.R @@ -46,8 +46,8 @@ check_for_rstudio_updates <- function(os = tolower(Sys.info()[["sysname"]]), return() } - nms <- vcapply(result, `[[`, 1) - values <- vcapply(result, function(x) utils::URLdecode(x[[2]])) + nms <- map_chr(result, `[[`, 1) + values <- map_chr(result, function(x) utils::URLdecode(x[[2]])) result <- stats::setNames(values, nms) diff --git a/R/utils.R b/R/utils.R index 4f8da6894..2804153ef 100644 --- a/R/utils.R +++ b/R/utils.R @@ -19,10 +19,6 @@ is_attached <- function(pkg = ".") { !is.null(pkgload::pkg_env(pkg$package)) } -vcapply <- function(x, FUN, ...) { - vapply(x, FUN, FUN.VALUE = character(1), ...) -} - release_bullets <- function() { c( '`usethis::use_latest_dependencies(TRUE, "CRAN")`', From 4a886f7ada4627a57ed569579bdcbe1011da182c Mon Sep 17 00:00:00 2001 From: Andy Teucher Date: Mon, 6 Mar 2023 15:29:22 -0800 Subject: [PATCH 05/19] replace vapply with map_* --- R/check-devtools.R | 6 +++--- R/check-win.R | 2 +- R/dev-mode.R | 2 +- R/session-info.R | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/R/check-devtools.R b/R/check-devtools.R index 96727b00e..babcd3a5a 100644 --- a/R/check-devtools.R +++ b/R/check-devtools.R @@ -28,8 +28,8 @@ check_dev_versions <- function(pkg = ".") { parsed <- lapply(deps$version, function(x) unlist(numeric_version(x))) - lengths <- vapply(parsed, length, integer(1)) - last_ver <- vapply(parsed, function(x) x[[length(x)]], integer(1)) + lengths <- map_int(parsed, length) + last_ver <- map_int(parsed, function(x) x[[length(x)]]) is_dev <- lengths == 4 & last_ver >= 9000 @@ -66,7 +66,7 @@ check_vignette_titles <- function(pkg = ".") { any(grepl("Vignette Title", h)) } v <- stats::setNames(vigns$docs, path_file(vigns$docs)) - has_vt <- vapply(v, has_vignette_title, logical(1), n = 30) + has_vt <- map_lgl(v, has_vignette_title, n = 30) check_status( !any(has_vt), diff --git a/R/check-win.R b/R/check-win.R index fd735cc7e..80fd3993d 100644 --- a/R/check-win.R +++ b/R/check-win.R @@ -127,7 +127,7 @@ change_maintainer_email <- function(path, email, call = parent.frame()) { if (!is.list(roles)) { roles <- list(roles) } - is_maintainer <- vapply(roles, function(r) all("cre" %in% r), logical(1)) + is_maintainer <- map_lgl(roles, function(r) all("cre" %in% r)) aut[is_maintainer]$email <- email desc$set_authors(aut) diff --git a/R/dev-mode.R b/R/dev-mode.R index dcc1488dc..f4b01b4a2 100644 --- a/R/dev-mode.R +++ b/R/dev-mode.R @@ -70,7 +70,7 @@ is_library <- function(path) { dirs <- dir_ls(path, type = "directory") has_pkg_dir <- function(path) length(dir_ls(path, regexp = "Meta")) > 0 - help_dirs <- vapply(dirs, has_pkg_dir, logical(1)) + help_dirs <- map_lgl(dirs, has_pkg_dir) all(help_dirs) } diff --git a/R/session-info.R b/R/session-info.R index f82a3bf54..a54dfc656 100644 --- a/R/session-info.R +++ b/R/session-info.R @@ -20,9 +20,9 @@ loaded_packages <- function() { #' @export #' @keywords internal dev_packages <- function() { - packages <- vapply( + packages <- map_lgl( loadedNamespaces(), - function(x) !is.null(pkgload::dev_meta(x)), logical(1) + function(x) !is.null(pkgload::dev_meta(x)) ) names(packages)[packages] From 15a6074a70375fa1f94d426daea249eb9833fa07 Mon Sep 17 00:00:00 2001 From: Andy Teucher Date: Mon, 6 Mar 2023 15:43:55 -0800 Subject: [PATCH 06/19] More glue --- R/active.R | 2 +- R/build-manual.R | 2 +- R/build-readme.R | 2 +- R/check-devtools.R | 4 ++-- R/check-git.R | 2 +- R/check-win.R | 4 ++-- R/check.R | 2 +- R/run-examples.R | 2 +- 8 files changed, 10 insertions(+), 10 deletions(-) diff --git a/R/active.R b/R/active.R index ebe7792a3..b1314a488 100644 --- a/R/active.R +++ b/R/active.R @@ -16,7 +16,7 @@ find_test_file <- function(path, call = parent.frame()) { } is_test <- type == "test" - path[!is_test] <- paste0("tests/testthat/test-", name_source(path[!is_test]), ".R") + path[!is_test] <- glue("tests/testthat/test-{name_source(path[!is_test])}.R") path <- unique(path[file_exists(path)]) if (length(path) == 0) { diff --git a/R/build-manual.R b/R/build-manual.R index 0c9112db2..27557fd1b 100644 --- a/R/build-manual.R +++ b/R/build-manual.R @@ -12,7 +12,7 @@ build_manual <- function(pkg = ".", path = NULL) { name <- paste0(pkg$package, "_", pkg$version, ".pdf", collapse = " ") tryCatch(msg <- callr::rcmd("Rd2pdf", cmdargs = c( "--force", - paste0("--output=", path, "/", name), + glue("--output={path}/{name}"), pkg$path ), fail_on_status = TRUE, stderr = "2>&1", spinner = FALSE), error = function(e) { diff --git a/R/build-readme.R b/R/build-readme.R index 174efcdc1..c00172d09 100644 --- a/R/build-readme.R +++ b/R/build-readme.R @@ -53,7 +53,7 @@ build_rmd <- function(files, path = ".", output_options = list(), ..., quiet = T build_readme <- function(path = ".", quiet = TRUE, ...) { pkg <- as.package(path) - regexp <- paste0(path_file(pkg$path), "/(inst/)?readme[.]rmd") + regexp <- glue("{path_file(pkg$path)}/(inst/)?readme[.]rmd") readme_path <- path_abs(dir_ls(pkg$path, ignore.case = TRUE, regexp = regexp, recurse = 1, type = "file")) if (length(readme_path) == 0) { diff --git a/R/check-devtools.R b/R/check-devtools.R index babcd3a5a..3e191d6dc 100644 --- a/R/check-devtools.R +++ b/R/check-devtools.R @@ -8,7 +8,7 @@ #' @export release_checks <- function(pkg = ".", built_path = NULL) { pkg <- as.package(pkg) - cat_rule(paste0("Running additional devtools checks for ", pkg$package)) + cat_rule(glue("Running additional devtools checks for {pkg$package}")) check_version(pkg) check_dev_versions(pkg) @@ -52,7 +52,7 @@ check_version <- function(pkg = ".") { check_status( length(ver) == 3, "version number has three components", - paste0("version (", pkg$version, ") should have exactly three components") + glue("version ({pkg$version}) should have exactly three components") ) } diff --git a/R/check-git.R b/R/check-git.R index d1dfe5645..59bb64d7a 100644 --- a/R/check-git.R +++ b/R/check-git.R @@ -7,7 +7,7 @@ #' @keywords internal git_checks <- function(pkg = ".") { pkg <- as.package(pkg) - cat_rule(paste0("Running Git checks for ", pkg$package)) + cat_rule(glue("Running Git checks for {pkg$package}")) git_report_branch(pkg) git_check_uncommitted(pkg) diff --git a/R/check-win.R b/R/check-win.R index 80fd3993d..e0a350b17 100644 --- a/R/check-win.R +++ b/R/check-win.R @@ -86,8 +86,8 @@ check_win <- function(pkg = ".", version = c("R-devel", "R-release", "R-oldrelea ) on.exit(file_delete(built_path), add = TRUE) - url <- paste0( - "ftp://win-builder.r-project.org/", version, "/", + url <- glue( + "ftp://win-builder.r-project.org/{version}/", path_file(built_path) ) lapply(url, upload_ftp, file = built_path) diff --git a/R/check.R b/R/check.R index 3602b3899..003149c70 100644 --- a/R/check.R +++ b/R/check.R @@ -246,5 +246,5 @@ aspell_env_var <- function() { show_env_vars <- function(env_vars) { cli::cat_line("Setting env vars:", col = "darkgrey") - cat_bullet(paste0(format(names(env_vars)), ": ", unname(env_vars)), col = "darkgrey") + cat_bullet(glue("{format(names(env_vars))}: {unname(env_vars)}"), col = "darkgrey") } diff --git a/R/run-examples.R b/R/run-examples.R index cfc87fd72..111197679 100644 --- a/R/run-examples.R +++ b/R/run-examples.R @@ -58,7 +58,7 @@ run_examples <- function(pkg = ".", start = NULL, show = deprecated(), run_dontt } cat_rule( - left = paste0("Running ", length(files), " example files"), + left = glue("Running {length(files)} example files"), right = pkg$package ) From e6d674231035b0683f6070c90db17406e1102f03 Mon Sep 17 00:00:00 2001 From: Andy Teucher Date: Mon, 6 Mar 2023 21:51:51 -0800 Subject: [PATCH 07/19] remove unnecessary line breaks --- R/check-win.R | 3 +-- R/release.R | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/R/check-win.R b/R/check-win.R index e0a350b17..dc7a94347 100644 --- a/R/check-win.R +++ b/R/check-win.R @@ -87,8 +87,7 @@ check_win <- function(pkg = ".", version = c("R-devel", "R-release", "R-oldrelea on.exit(file_delete(built_path), add = TRUE) url <- glue( - "ftp://win-builder.r-project.org/{version}/", - path_file(built_path) + "ftp://win-builder.r-project.org/{version}/{path_file(built_path)}" ) lapply(url, upload_ftp, file = built_path) diff --git a/R/release.R b/R/release.R index e46859697..2fd1cf9ba 100644 --- a/R/release.R +++ b/R/release.R @@ -76,8 +76,7 @@ release <- function(pkg = ".", check = FALSE, args = NULL) { cat_rule() } cran_url <- glue( - "{cran_mirror()}/web/checks/check_results_", - "{pkg$package}.html" + "{cran_mirror()}/web/checks/check_results_{pkg$package}.html" ) if (yesno("Have you fixed all existing problems at \n{cran_url}{end_sentence}")) { return(invisible()) From 92ed6b8ba3dc8d81ff041a4debdaf820232ba4eb Mon Sep 17 00:00:00 2001 From: Andy Teucher Date: Mon, 6 Mar 2023 22:02:17 -0800 Subject: [PATCH 08/19] Another glue replacement --- R/build-manual.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/build-manual.R b/R/build-manual.R index 27557fd1b..67bf49226 100644 --- a/R/build-manual.R +++ b/R/build-manual.R @@ -9,7 +9,7 @@ build_manual <- function(pkg = ".", path = NULL) { pkg <- as.package(pkg) path <- path %||% path_dir(pkg$path) - name <- paste0(pkg$package, "_", pkg$version, ".pdf", collapse = " ") + name <- glue("{pkg$package}_{pkg$version}.pdf") tryCatch(msg <- callr::rcmd("Rd2pdf", cmdargs = c( "--force", glue("--output={path}/{name}"), From 386b84d0a56d246e489d7729c2a230b811bd2475 Mon Sep 17 00:00:00 2001 From: Andy Teucher Date: Mon, 6 Mar 2023 22:10:52 -0800 Subject: [PATCH 09/19] Remove rlang:: since now import rlang wholesale --- R/build-readme.R | 2 +- R/build-site.R | 2 +- R/check-win.R | 2 +- R/lint.R | 2 +- R/r-hub.R | 2 +- R/remotes.R | 2 +- R/run-source.R | 4 ++-- R/spell-check.R | 2 +- R/test.R | 4 ++-- R/vignettes.R | 2 +- 10 files changed, 12 insertions(+), 12 deletions(-) diff --git a/R/build-readme.R b/R/build-readme.R index c00172d09..3d60eae99 100644 --- a/R/build-readme.R +++ b/R/build-readme.R @@ -16,7 +16,7 @@ build_rmd <- function(files, path = ".", output_options = list(), ..., quiet = T pkg <- as.package(path) - rlang::check_installed("rmarkdown") + check_installed("rmarkdown") save_all() paths <- files diff --git a/R/build-site.R b/R/build-site.R index 9935963c3..0944345ac 100644 --- a/R/build-site.R +++ b/R/build-site.R @@ -10,7 +10,7 @@ #' @return NULL #' @export build_site <- function(path = ".", quiet = TRUE, ...) { - rlang::check_installed("pkgdown") + check_installed("pkgdown") save_all() diff --git a/R/check-win.R b/R/check-win.R index dc7a94347..44c1e05b3 100644 --- a/R/check-win.R +++ b/R/check-win.R @@ -134,7 +134,7 @@ change_maintainer_email <- function(path, email, call = parent.frame()) { } upload_ftp <- function(file, url, verbose = FALSE) { - rlang::check_installed("curl") + check_installed("curl") stopifnot(file_exists(file)) stopifnot(is.character(url)) diff --git a/R/lint.R b/R/lint.R index 10f9b1ac5..e8e87b910 100644 --- a/R/lint.R +++ b/R/lint.R @@ -12,7 +12,7 @@ #' @seealso [lintr::lint_package()], [lintr::lint()] #' @export lint <- function(pkg = ".", cache = TRUE, ...) { - rlang::check_installed("lintr") + check_installed("lintr") pkg <- as.package(pkg) cli::cli_inform(c(i = "Linting {.pkg {pkg$package}}")) diff --git a/R/r-hub.R b/R/r-hub.R index d3f690a8e..1da391327 100644 --- a/R/r-hub.R +++ b/R/r-hub.R @@ -36,7 +36,7 @@ check_rhub <- function(pkg = ".", interactive = TRUE, build_args = NULL, ...) { - rlang::check_installed("rhub") + check_installed("rhub") pkg <- as.package(pkg) built_path <- build(pkg$path, tempdir(), quiet = !interactive, diff --git a/R/remotes.R b/R/remotes.R index c783301dc..5f384facf 100644 --- a/R/remotes.R +++ b/R/remotes.R @@ -7,7 +7,7 @@ with_ellipsis <- function(fun) { !! b } - f <- rlang::expr_interp(f) + f <- expr_interp(f) body(fun) <- body(f) fun diff --git a/R/run-source.R b/R/run-source.R index b3a0ca317..47e823551 100644 --- a/R/run-source.R +++ b/R/run-source.R @@ -30,7 +30,7 @@ #' } source_url <- function(url, ..., sha1 = NULL) { stopifnot(is.character(url), length(url) == 1) - rlang::check_installed("digest") + check_installed("digest") temp_file <- file_temp() on.exit(file_delete(temp_file), add = TRUE) @@ -108,7 +108,7 @@ check_sha1 <- function(path, sha1) { #' source_gist(6872663, filename = "hi.r", sha1 = "54f1db27e60") #' } source_gist <- function(id, ..., filename = NULL, sha1 = NULL, quiet = FALSE) { - rlang::check_installed("gh") + check_installed("gh") stopifnot(length(id) == 1) url_match <- "((^https://)|^)gist.github.com/([^/]+/)?([0-9a-f]+)$" diff --git a/R/spell-check.R b/R/spell-check.R index c3aa1e8e3..d005740f4 100644 --- a/R/spell-check.R +++ b/R/spell-check.R @@ -10,7 +10,7 @@ #' @param vignettes also check all `rmd` and `rnw` files in the pkg `vignettes` folder #' @param use_wordlist ignore words in the package [WORDLIST][spelling::get_wordlist] file spell_check <- function(pkg = ".", vignettes = TRUE, use_wordlist = TRUE) { - rlang::check_installed("spelling") + check_installed("spelling") pkg <- as.package(pkg) spelling::spell_check_package(pkg = pkg, vignettes = vignettes, use_wordlist = use_wordlist) } diff --git a/R/test.R b/R/test.R index 0fcfccf80..fdaff2809 100644 --- a/R/test.R +++ b/R/test.R @@ -91,7 +91,7 @@ load_package_if_needed <- function(pkg) { #' @export #' @rdname test test_coverage <- function(pkg = ".", show_report = interactive(), ...) { - rlang::check_installed(c("covr", "DT")) + check_installed(c("covr", "DT")) save_all() pkg <- as.package(pkg) @@ -120,7 +120,7 @@ test_coverage_file <- function(file = find_active_file(), ...) { #' @rdname test #' @export test_coverage_active_file <- function(file = find_active_file(), filter = TRUE, show_report = interactive(), export_all = TRUE, ...) { - rlang::check_installed(c("covr", "DT")) + check_installed(c("covr", "DT")) save_all() test_files <- find_test_file(file) diff --git a/R/vignettes.R b/R/vignettes.R index 1ce59746c..0edff5e2d 100644 --- a/R/vignettes.R +++ b/R/vignettes.R @@ -120,7 +120,7 @@ clean_vignettes <- function(pkg = ".") { } dir_delete_if_empty <- function(x) { - if (dir_exists(x) && rlang::is_empty(dir_ls(x))) { + if (dir_exists(x) && is_empty(dir_ls(x))) { dir_delete(x) cli::cli_inform(c(x = "Removing {.file {path_file(x)}}")) } From c9632c423c3e8499d3da94984d2c164702596d4b Mon Sep 17 00:00:00 2001 From: Andy Teucher Date: Mon, 6 Mar 2023 22:29:14 -0800 Subject: [PATCH 10/19] Use map over lapply, use ~ for anonymous functions --- R/check-devtools.R | 6 +++--- R/check-mac.R | 2 +- R/check-win.R | 4 ++-- R/run-examples.R | 2 +- R/session-info.R | 3 +-- R/sitrep.R | 2 +- R/vignettes.R | 2 +- 7 files changed, 10 insertions(+), 11 deletions(-) diff --git a/R/check-devtools.R b/R/check-devtools.R index 3e191d6dc..407dc837b 100644 --- a/R/check-devtools.R +++ b/R/check-devtools.R @@ -23,13 +23,13 @@ check_dev_versions <- function(pkg = ".") { pkg <- as.package(pkg) dep_list <- pkg[tolower(remotes::standardise_dep(TRUE))] - deps <- do.call("rbind", unname(compact(lapply(dep_list, parse_deps)))) + deps <- do.call("rbind", unname(compact(map(dep_list, parse_deps)))) deps <- deps[!is.na(deps$version), , drop = FALSE] - parsed <- lapply(deps$version, function(x) unlist(numeric_version(x))) + parsed <- map(deps$version, ~ unlist(numeric_version(.x))) lengths <- map_int(parsed, length) - last_ver <- map_int(parsed, function(x) x[[length(x)]]) + last_ver <- map_int(parsed, ~ .x[[length(.x)]]) is_dev <- lengths == 4 & last_ver >= 9000 diff --git a/R/check-mac.R b/R/check-mac.R index 94dbb34c0..0e3315832 100644 --- a/R/check-mac.R +++ b/R/check-mac.R @@ -43,7 +43,7 @@ check_mac_release <- function(pkg = ".", dep_pkgs = character(), args = NULL, ma body <- list(pkgfile = httr::upload_file(built_path)) if (length(dep_built_paths) > 0) { - uploads <- lapply(dep_built_paths, httr::upload_file) + uploads <- map(dep_built_paths, httr::upload_file) names(uploads) <- rep("depfiles", length(uploads)) body <- append(body, uploads) } diff --git a/R/check-win.R b/R/check-win.R index 44c1e05b3..1a26a3262 100644 --- a/R/check-win.R +++ b/R/check-win.R @@ -89,7 +89,7 @@ check_win <- function(pkg = ".", version = c("R-devel", "R-release", "R-oldrelea url <- glue( "ftp://win-builder.r-project.org/{version}/{path_file(built_path)}" ) - lapply(url, upload_ftp, file = built_path) + map(url, upload_ftp, file = built_path) if (!quiet) { time <- strftime(Sys.time() + 30 * 60, "%I:%M %p") @@ -126,7 +126,7 @@ change_maintainer_email <- function(path, email, call = parent.frame()) { if (!is.list(roles)) { roles <- list(roles) } - is_maintainer <- map_lgl(roles, function(r) all("cre" %in% r)) + is_maintainer <- map_lgl(roles, ~ all("cre" %in% .x)) aut[is_maintainer]$email <- email desc$set_authors(aut) diff --git a/R/run-examples.R b/R/run-examples.R index 111197679..7ca31dab1 100644 --- a/R/run-examples.R +++ b/R/run-examples.R @@ -65,7 +65,7 @@ run_examples <- function(pkg = ".", start = NULL, show = deprecated(), run_dontt load_all(pkg$path, reset = TRUE, export_all = FALSE) on.exit(load_all(pkg$path, reset = TRUE)) - lapply(files, pkgload::run_example, run_donttest = run_donttest, run_dontrun = run_dontrun) + map(files, pkgload::run_example, run_donttest = run_donttest, run_dontrun = run_dontrun) invisible() } diff --git a/R/session-info.R b/R/session-info.R index a54dfc656..6811fce88 100644 --- a/R/session-info.R +++ b/R/session-info.R @@ -21,8 +21,7 @@ loaded_packages <- function() { #' @keywords internal dev_packages <- function() { packages <- map_lgl( - loadedNamespaces(), - function(x) !is.null(pkgload::dev_meta(x)) + loadedNamespaces(), ~ !is.null(pkgload::dev_meta(.x)) ) names(packages)[packages] diff --git a/R/sitrep.R b/R/sitrep.R index 334a774d4..1630527bd 100644 --- a/R/sitrep.R +++ b/R/sitrep.R @@ -47,7 +47,7 @@ check_for_rstudio_updates <- function(os = tolower(Sys.info()[["sysname"]]), } nms <- map_chr(result, `[[`, 1) - values <- map_chr(result, function(x) utils::URLdecode(x[[2]])) + values <- map_chr(result, ~ utils::URLdecode(.x[[2]])) result <- stats::setNames(values, nms) diff --git a/R/vignettes.R b/R/vignettes.R index 0edff5e2d..0c58ede59 100644 --- a/R/vignettes.R +++ b/R/vignettes.R @@ -114,7 +114,7 @@ clean_vignettes <- function(pkg = ".") { file_delete(to_remove) } - lapply(c(doc_path, meta_path), dir_delete_if_empty) + map(c(doc_path, meta_path), dir_delete_if_empty) invisible(TRUE) } From d0740ff4c4f32ada20a7477e02f6a02cdcdab1ca Mon Sep 17 00:00:00 2001 From: Andy Teucher Date: Tue, 7 Mar 2023 08:31:31 -0800 Subject: [PATCH 11/19] Revert use of ~ in anonymous functions --- R/check-devtools.R | 4 ++-- R/check-win.R | 2 +- R/session-info.R | 2 +- R/sitrep.R | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/R/check-devtools.R b/R/check-devtools.R index 407dc837b..b045375ba 100644 --- a/R/check-devtools.R +++ b/R/check-devtools.R @@ -26,10 +26,10 @@ check_dev_versions <- function(pkg = ".") { deps <- do.call("rbind", unname(compact(map(dep_list, parse_deps)))) deps <- deps[!is.na(deps$version), , drop = FALSE] - parsed <- map(deps$version, ~ unlist(numeric_version(.x))) + parsed <- map(deps$version, function(x) unlist(numeric_version(x))) lengths <- map_int(parsed, length) - last_ver <- map_int(parsed, ~ .x[[length(.x)]]) + last_ver <- map_int(parsed, function(x) x[[length(x)]]) is_dev <- lengths == 4 & last_ver >= 9000 diff --git a/R/check-win.R b/R/check-win.R index 1a26a3262..7c5c1de50 100644 --- a/R/check-win.R +++ b/R/check-win.R @@ -126,7 +126,7 @@ change_maintainer_email <- function(path, email, call = parent.frame()) { if (!is.list(roles)) { roles <- list(roles) } - is_maintainer <- map_lgl(roles, ~ all("cre" %in% .x)) + is_maintainer <- map_lgl(roles, function(r) all("cre" %in% r)) aut[is_maintainer]$email <- email desc$set_authors(aut) diff --git a/R/session-info.R b/R/session-info.R index 6811fce88..dffa1eb4e 100644 --- a/R/session-info.R +++ b/R/session-info.R @@ -21,7 +21,7 @@ loaded_packages <- function() { #' @keywords internal dev_packages <- function() { packages <- map_lgl( - loadedNamespaces(), ~ !is.null(pkgload::dev_meta(.x)) + loadedNamespaces(), function(x) !is.null(pkgload::dev_meta(x)) ) names(packages)[packages] diff --git a/R/sitrep.R b/R/sitrep.R index 1630527bd..334a774d4 100644 --- a/R/sitrep.R +++ b/R/sitrep.R @@ -47,7 +47,7 @@ check_for_rstudio_updates <- function(os = tolower(Sys.info()[["sysname"]]), } nms <- map_chr(result, `[[`, 1) - values <- map_chr(result, ~ utils::URLdecode(.x[[2]])) + values <- map_chr(result, function(x) utils::URLdecode(x[[2]])) result <- stats::setNames(values, nms) From 644eee0305e440c9498a43d2a7340ba5e2a63030 Mon Sep 17 00:00:00 2001 From: Andy Teucher Date: Tue, 7 Mar 2023 10:14:34 -0800 Subject: [PATCH 12/19] Change cph to Posit Software, PBC --- DESCRIPTION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index 1bf6fd95c..7896980c9 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -7,7 +7,7 @@ Authors@R: c( person("Winston", "Chang", role = "aut"), person("Jennifer", "Bryan", , "jenny@posit.co", role = c("aut", "cre"), comment = c(ORCID = "0000-0002-6983-2759")), - person(given = "Posit, PBC", role = c("cph", "fnd")) + person(given = "Posit Software, PBC", role = c("cph", "fnd")) ) Description: Collection of package development tools. License: MIT + file LICENSE From c4053625682622c10d453e6c5bef2ff139f0b23d Mon Sep 17 00:00:00 2001 From: Andy Teucher Date: Tue, 7 Mar 2023 15:39:29 -0800 Subject: [PATCH 13/19] Move callr, httr, rstudioapi to Imports --- DESCRIPTION | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 7896980c9..71d87f35a 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -17,11 +17,13 @@ Depends: R (>= 3.0.2), usethis (>= 2.1.6) Imports: + callr (>= 3.7.1), cli (>= 3.3.0), desc (>= 1.4.1), ellipsis (>= 0.3.2), fs (>= 1.5.2), glue, + httr (>= 1.4.3), lifecycle (>= 1.0.1), memoise (>= 2.0.1), miniUI (>= 0.1.1.1), @@ -33,6 +35,7 @@ Imports: remotes (>= 2.4.2), rlang (>= 1.0.4), roxygen2 (>= 7.2.1), + rstudioapi (>= 0.13), rversions (>= 2.1.1), sessioninfo (>= 1.2.2), stats, @@ -43,7 +46,6 @@ Imports: withr (>= 2.5.0) Suggests: BiocManager (>= 1.30.18), - callr (>= 3.7.1), covr (>= 3.5.1), curl (>= 4.3.2), digest (>= 0.6.29), @@ -51,7 +53,6 @@ Suggests: foghorn (>= 1.4.2), gh (>= 1.3.0), gmailr (>= 1.0.1), - httr (>= 1.4.3), knitr (>= 1.39), lintr (>= 3.0.0), MASS, @@ -59,7 +60,6 @@ Suggests: pingr (>= 2.0.1), rhub (>= 1.1.1), rmarkdown (>= 2.14), - rstudioapi (>= 0.13), spelling (>= 2.2) VignetteBuilder: knitr From 4d0300c9d32686f97b02f71ff7ae0cd9f32b4109 Mon Sep 17 00:00:00 2001 From: Andy Teucher Date: Tue, 7 Mar 2023 15:52:43 -0800 Subject: [PATCH 14/19] Add minimum glue version --- DESCRIPTION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index 71d87f35a..0fefa1ab9 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -22,7 +22,7 @@ Imports: desc (>= 1.4.1), ellipsis (>= 0.3.2), fs (>= 1.5.2), - glue, + glue (>= 1.6.2), httr (>= 1.4.3), lifecycle (>= 1.0.1), memoise (>= 2.0.1), From 0e45d00c0947d1897b8c2934cb16de969d075eb0 Mon Sep 17 00:00:00 2001 From: Andy Teucher Date: Tue, 7 Mar 2023 16:19:58 -0800 Subject: [PATCH 15/19] Document --- man/devtools-package.Rd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/man/devtools-package.Rd b/man/devtools-package.Rd index c6500b304..7213543aa 100644 --- a/man/devtools-package.Rd +++ b/man/devtools-package.Rd @@ -43,7 +43,7 @@ Authors: Other contributors: \itemize{ - \item Posit, PBC [copyright holder, funder] + \item Posit Software, PBC [copyright holder, funder] } } From a8eb4e903d22245cf1e5a3e8985c2532bd631cd4 Mon Sep 17 00:00:00 2001 From: Andy Teucher Date: Wed, 8 Mar 2023 09:35:50 -0800 Subject: [PATCH 16/19] use_latest_dependencies() --- DESCRIPTION | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 0fefa1ab9..4803ec7d7 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -17,29 +17,29 @@ Depends: R (>= 3.0.2), usethis (>= 2.1.6) Imports: - callr (>= 3.7.1), - cli (>= 3.3.0), - desc (>= 1.4.1), + callr (>= 3.7.3), + cli (>= 3.6.0), + desc (>= 1.4.2), ellipsis (>= 0.3.2), - fs (>= 1.5.2), + fs (>= 1.6.1), glue (>= 1.6.2), - httr (>= 1.4.3), - lifecycle (>= 1.0.1), + httr (>= 1.4.5), + lifecycle (>= 1.0.3), memoise (>= 2.0.1), miniUI (>= 0.1.1.1), - pkgbuild (>= 1.3.1), - pkgdown (>= 2.0.6), - pkgload (>= 1.3.0), + pkgbuild (>= 1.4.0), + pkgdown (>= 2.0.7), + pkgload (>= 1.3.2), profvis (>= 0.3.7), rcmdcheck (>= 1.4.0), remotes (>= 2.4.2), - rlang (>= 1.0.4), - roxygen2 (>= 7.2.1), - rstudioapi (>= 0.13), - rversions (>= 2.1.1), + rlang (>= 1.0.6), + roxygen2 (>= 7.2.3), + rstudioapi (>= 0.14), + rversions (>= 2.1.2), sessioninfo (>= 1.2.2), stats, - testthat (>= 3.1.5), + testthat (>= 3.1.6), tools, urlchecker (>= 1.0.1), utils, From 77683abcdcecf131bb1f34bff6d7b89b12d6fc3d Mon Sep 17 00:00:00 2001 From: Andy Teucher Date: Wed, 8 Mar 2023 09:36:01 -0800 Subject: [PATCH 17/19] Update WORDLIST --- inst/WORDLIST | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/inst/WORDLIST b/inst/WORDLIST index 07b12fed9..23c3ce42c 100644 --- a/inst/WORDLIST +++ b/inst/WORDLIST @@ -5,6 +5,7 @@ Bitbucket BugReports Bugfix CMD +CRAN's CYGWIN Cheatsheet Chun @@ -34,7 +35,9 @@ Maëlle Müller NOTEs ORCID +PBC README +RStudio RTools Rbuildignore Rcpp @@ -138,6 +141,7 @@ rds readme realisation reinstalls +renv repo repos revdep From 1bd7ececa0fa1a000374d8b38717aa8134bf7ff4 Mon Sep 17 00:00:00 2001 From: Andy Teucher Date: Wed, 8 Mar 2023 09:47:55 -0800 Subject: [PATCH 18/19] Update NEWS.md; update WORDLIST --- NEWS.md | 8 ++++++++ inst/WORDLIST | 1 + 2 files changed, 9 insertions(+) diff --git a/NEWS.md b/NEWS.md index 49416f25f..ca75c392b 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,13 @@ # devtools (development version) +* Copyright holder is now "Posit Software, PBC". + +* We have updated the Contributor Code of Conduct and changed the contact + email to codeofconduct@posit.co. + +* Internally we are now using glue and purrr-like functionality from + `usethis::use_standalone("r-lib/rlang", "purrr")` for consistency. + # devtools 2.4.5 * `check(cleanup =)` was deprecated in devtools v1.11.0 (2016-04-12) and was diff --git a/inst/WORDLIST b/inst/WORDLIST index 23c3ce42c..803be5d4e 100644 --- a/inst/WORDLIST +++ b/inst/WORDLIST @@ -134,6 +134,7 @@ pre processx profvis pryr +purrr rOpenSci randomises rcmdcheck From 87b4f447acf106c4b81eeb3e8fc56b2b5daa64e6 Mon Sep 17 00:00:00 2001 From: Andy Teucher Date: Wed, 8 Mar 2023 15:05:33 -0800 Subject: [PATCH 19/19] Remove unnecessary NEWS items --- NEWS.md | 8 -------- 1 file changed, 8 deletions(-) diff --git a/NEWS.md b/NEWS.md index ca75c392b..49416f25f 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,13 +1,5 @@ # devtools (development version) -* Copyright holder is now "Posit Software, PBC". - -* We have updated the Contributor Code of Conduct and changed the contact - email to codeofconduct@posit.co. - -* Internally we are now using glue and purrr-like functionality from - `usethis::use_standalone("r-lib/rlang", "purrr")` for consistency. - # devtools 2.4.5 * `check(cleanup =)` was deprecated in devtools v1.11.0 (2016-04-12) and was