74 lines
2.6 KiB
Plaintext
74 lines
2.6 KiB
Plaintext
---
|
|
title: "Manage lifecycle changes in functions you use"
|
|
output: rmarkdown::html_vignette
|
|
vignette: >
|
|
%\VignetteIndexEntry{Manage lifecycle changes in functions you use}
|
|
%\VignetteEngine{knitr::rmarkdown}
|
|
%\VignetteEncoding{UTF-8}
|
|
---
|
|
|
|
```{r, include = FALSE}
|
|
knitr::opts_chunk$set(
|
|
collapse = TRUE,
|
|
comment = "#>"
|
|
)
|
|
options("lifecycle:::calling_package" = "tibble")
|
|
```
|
|
|
|
The lifecycle package uses warnings to tell you about deprecated functions.
|
|
Deprecated functions will be removed in a future release, so it's good practice to eliminate the warnings as soon as you see them.
|
|
|
|
For example, lets imagine your code uses `tibble::data_frame()`, which was deprecated in favour of `tibble()` in version 1.1.0.
|
|
`data_frame()` now looks something like this:
|
|
|
|
```{r}
|
|
data_frame <- function(...) {
|
|
lifecycle::deprecate_warn("1.1.0", "data_frame()", "tibble()")
|
|
tibble::tibble(...)
|
|
}
|
|
```
|
|
|
|
That means if you use `data_frame()` in your own code you'll get a warning:
|
|
|
|
```{r}
|
|
df1 <- data_frame(x = 1, y = 2)
|
|
#> This warning is displayed once every 8 hours.
|
|
#> Call `lifecycle::last_lifecycle_warnings()` to see where this warning was generated.
|
|
df2 <- data_frame(a = "apple", b = "banana")
|
|
```
|
|
|
|
You'll notice that the warning only appears the first time we call it --- lifecycle only notifies you every 8 hours so it's not overly disruptive if you've used a deprecated function in many places.
|
|
|
|
So how do you track down exactly where the warning came from?
|
|
Firstly, you might notice the deprecation warning message includes the advice to call `lifecycle::last_lifecycle_warnings()`.
|
|
That'll give you a list of all the deprecation warnings that have happened recently:
|
|
|
|
```{r, eval = FALSE}
|
|
lifecycle::last_lifecycle_warnings()
|
|
#> [[1]]
|
|
#> <deprecated>
|
|
#> message: `data_frame()` was deprecated in tibble 1.1.0.
|
|
#> Please use `tibble()` instead.
|
|
#> Backtrace:
|
|
#> 1. global::data_frame(x = 1)
|
|
```
|
|
|
|
Each warning comes with a back trace that shows you the full sequence of calls that lead to the deprecated function.
|
|
|
|
Alternatively, if you're ready to spend some time tracking down all your uses of deprecated functions, you can use the `lifecycle_verbosity` option to make deprecated functions warn every time:
|
|
|
|
```{r}
|
|
options(lifecycle_verbosity = "warning")
|
|
df1 <- data_frame(x = 1, y = 2)
|
|
df2 <- data_frame(a = "apple", b = "banana")
|
|
```
|
|
|
|
Then use `lifecycle::last_lifecycle_warnings()` to track down the source.
|
|
|
|
Alternatively, if you want to be really strict, you can turn all deprecation warnings into errors, forcing you to deal with them immediately:
|
|
|
|
```{r, error = TRUE}
|
|
options("lifecycle_verbosity" = "error")
|
|
df1 <- data_frame(x = 1, y = 2)
|
|
```
|