diff --git a/DESCRIPTION b/DESCRIPTION index c5778db96..a3b967909 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: drake Title: A Pipeline Toolkit for Reproducible Computation at Scale -Version: 7.13.4 +Version: 7.13.5 Authors@R: c( person( given = c("William", "Michael"), @@ -153,4 +153,4 @@ Suggests: Encoding: UTF-8 Language: en-US Roxygen: list(markdown = TRUE) -RoxygenNote: 7.2.1 +RoxygenNote: 7.2.3 diff --git a/NEWS.md b/NEWS.md index fe95d4a6c..0ae2ae2f5 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,7 @@ +# Version 7.13.5 + +* Always pass a character vector to `rm()` and `remove()`. + # Version 7.13.4 * Fix HTML documentation files. diff --git a/R/cache.R b/R/cache.R index 219e580bf..faa076171 100644 --- a/R/cache.R +++ b/R/cache.R @@ -324,7 +324,7 @@ load_targets_impl.drake_dynamic <- function( # nolint subtarget_list ) { value <- get_subtargets(hashes, target, cache, subtargets, subtarget_list) - rm(list = target, envir = envir, inherits = FALSE) + rm(list = as.character(target), envir = envir, inherits = FALSE) assign(target, value, envir = envir, inherits = FALSE) } diff --git a/R/create_drake_spec.R b/R/create_drake_spec.R index 28e11a6c2..8cc79fbc1 100644 --- a/R/create_drake_spec.R +++ b/R/create_drake_spec.R @@ -105,7 +105,7 @@ cds_unload_conflicts <- function(imports, targets, envir, logger) { if (length(common)) { logger$term("unloading", length(common), "targets from environment") } - remove(list = common, envir = envir) + remove(list = as.character(common), envir = envir) } cds_analyze_imports <- function(args, imports) { diff --git a/R/deprecated.R b/R/deprecated.R index 6e7b52300..b07e92fad 100644 --- a/R/deprecated.R +++ b/R/deprecated.R @@ -118,14 +118,14 @@ configure_cache <- function( } short_exists <- cache$exists(key = "short_hash_algo", namespace = "config") long_exists <- cache$exists(key = "long_hash_algo", namespace = "config") - if (overwrite_hash_algos | !short_exists) { + if (overwrite_hash_algos || !short_exists) { cache$set( key = "short_hash_algo", value = short_hash_algo, namespace = "config" ) } - if (overwrite_hash_algos | !long_exists) { + if (overwrite_hash_algos || !long_exists) { cache$set( key = "long_hash_algo", value = long_hash_algo, @@ -564,7 +564,7 @@ load_main_example <- function( local = TRUE )$value for (file in c("report.Rmd", "raw_data.xlsx")) { - if (file.exists(file) & overwrite) { + if (file.exists(file) && overwrite) { warn0("Overwriting file ", file) } file.copy( diff --git a/R/hash_tables.R b/R/hash_tables.R index 91e207b44..ffccb748f 100644 --- a/R/hash_tables.R +++ b/R/hash_tables.R @@ -30,7 +30,7 @@ ht_exists <- function(ht, x) { } ht_del <- function(ht, x) { - remove(list = x, envir = ht, inherits = FALSE) + remove(list = as.character(x), envir = ht, inherits = FALSE) } ht_list <- function(ht) { @@ -38,7 +38,7 @@ ht_list <- function(ht) { } ht_clear <- function(ht) { - rm(list = names(ht), envir = ht) + rm(list = as.character(names(ht)), envir = ht) } ht_clone <- function(ht) { diff --git a/R/make.R b/R/make.R index 89baddc31..35f5e0ce8 100644 --- a/R/make.R +++ b/R/make.R @@ -448,7 +448,10 @@ clear_make_memory <- function(config) { "meta_old" ) for (key in envirs) { - remove(list = names(config[[key]]), envir = config[[key]]) + remove( + list = as.character(names(config[[key]])), + envir = config[[key]] + ) } config$cache$flush_cache() if (config$settings$garbage_collection) { diff --git a/R/manage_memory.R b/R/manage_memory.R index 22e09e264..f08998d4d 100644 --- a/R/manage_memory.R +++ b/R/manage_memory.R @@ -92,7 +92,11 @@ discard_targets <- function(discard_these, target, config) { return() } config$logger$disk("unload", discard_these, target = target) - rm(list = discard_these, envir = config$envir_targets, inherits = FALSE) + rm( + list = as.character(discard_these), + envir = config$envir_targets, + inherits = FALSE + ) config$envir_loaded$targets <- setdiff( config$envir_loaded$targets, discard_these @@ -108,7 +112,11 @@ discard_dynamic <- function(discard_these, config) { inherits = FALSE ) whole_dynamic <- discard_these[index] - rm(list = whole_dynamic, envir = config$envir_dynamic, inherits = FALSE) + rm( + list = as.character(whole_dynamic), + envir = config$envir_dynamic, + inherits = FALSE + ) config$envir_loaded$dynamic <- setdiff( config$envir_loaded$dynamic, whole_dynamic @@ -116,14 +124,23 @@ discard_dynamic <- function(discard_these, config) { } clear_envir_subtargets <- function(target, config) { - rm(list = config$envir_loaded$subtargets, envir = config$envir_subtargets) + rm( + list = as.character(config$envir_loaded$subtargets), + envir = config$envir_subtargets + ) config$envir_loaded$subtargets <- character(0) } clear_envir_targets <- function(target, config) { config$logger$disk("clear target envir", target = target) - rm(list = config$envir_loaded$targets, envir = config$envir_targets) - rm(list = config$envir_loaded$dynamic, envir = config$envir_dynamic) + rm( + list = as.character(config$envir_loaded$targets), + envir = config$envir_targets + ) + rm( + list = as.character(config$envir_loaded$dynamic), + envir = config$envir_dynamic + ) config$envir_loaded$targets <- character(0) config$envir_loaded$dynamic <- character(0) } @@ -209,7 +226,7 @@ load_target_impl.bind <- function(target, cache, namespace, envir, verbose) { # Allow active bindings to overwrite existing variables. if (exists(x = target, envir = envir, inherits = FALSE)) { cli_msg("Replacing", target, "with an active binding.") - remove(list = target, envir = envir) + remove(list = as.character(target), envir = envir) } bindr::populate_env( env = envir,