Usethis: `usethis::use_pipe()` gives `.Rd` warning

Created on 5 Oct 2018  ยท  15Comments  ยท  Source: r-lib/usethis

After using usethis::use_pipe() in my R package, roxygen2::roxygenize() has started producing the following warning:

file link '%>%' in package 'magrittr' does not exist and so has been treated as a topic

How can I get rid of it? Or, even better, is there any way that the usethis function can be modified so that it produces the roxygen template for %>% that doesn't produce this warning?

Most helpful comment

I believe the issue can be solved temporarily by modifying the doc string from

#' See \code{magrittr::\link[magrittr]{\%>\%}} for details.

to

#' See \code{magrittr::\link[magrittr:pipe]{\%>\%}} for details.

The reason is that we need to indicate the .Rd file name (in this case pipe) that contains the topic %>%. See also https://github.com/klutometis/roxygen/issues/707

All 15 comments

Had this happen too. I first could not follow the suggested instructions of running devtools::document() after usethis::use_pipe() - RStudio would crash completely. The only way I could run it is in a command line R session, after which I receive the same warning when running devtools::document().

Can either of you provide a clean reprex? I can't reproduce your problem.

Using the current dev version of usethis (1e3c6a66e8b2d2790ee6d7e6d5651c52fb61abfc):

I execute usethis::create_package("~/tmp/zzz").
In the new package zzz, I see this:

> use_roxygen_md()
โœ” Setting active project to '/Users/jenny/tmp/zzz'
โœ” Setting Roxygen field in DESCRIPTION to 'list(markdown = TRUE)'
โœ” Setting RoxygenNote field in DESCRIPTION to '6.1.0'
โ— Run `devtools::document()`
> use_pipe()
โœ” Adding 'magrittr' to Imports field in DESCRIPTION
โœ” Writing 'R/utils-pipe.R'
โ— Run `devtools::document()`
> devtools::document()
Updating zzz documentation
Writing NAMESPACE
Loading zzz
Writing NAMESPACE
Writing pipe.Rd

Here's my version of devtools and roxygen2:

 devtools    * 1.13.6.9000 2018-10-06 [1] Github (r-lib/devtools@c24b146)   
roxygen2     6.1.0       2018-07-27 CRAN (R 3.5.0)   

Huh, if I try to do a reprex, I don't get any warning in the reprex.

setwd("~/sentiwordcloud")

usethis::use_roxygen_md()
#> <U+2714> Setting active project to 'C:/Users/inp099/Documents/sentiwordcloud'
#> Error: Package 'roxygen2md' required. Please install before re-trying.

usethis::use_pipe()
#> <U+25CF> Run `devtools::document()`

devtools::document()
#> Updating sentiwordcloud documentation
#> Writing NAMESPACE
#> Loading sentiwordcloud
#> Writing NAMESPACE

devtools::document(roclets = c('rd', 'collate', 'namespace'))
#> Updating sentiwordcloud documentation
#> Writing NAMESPACE
#> Loading sentiwordcloud
#> Writing NAMESPACE

Created on 2018-10-05 by the reprex package (v0.2.1)

But I still get this warning in my local session.

image

Here is my session info:

options(width = 200)
devtools::session_info()
#> - Session info ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#>  setting  value                       
#>  version  R version 3.5.1 (2018-07-02)
#>  os       Windows 10 x64              
#>  system   x86_64, mingw32             
#>  ui       RTerm                       
#>  language (EN)                        
#>  collate  English_United States.1252  
#>  ctype    English_United States.1252  
#>  tz       America/New_York            
#>  date     2018-10-05                  
#> 
#> - Packages -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#>  package     * version     date       lib source                            
#>  assertthat    0.2.0       2017-04-11 [1] CRAN (R 3.5.0)                    
#>  backports     1.1.2       2017-12-13 [1] CRAN (R 3.5.0)                    
#>  base64enc     0.1-3       2015-07-28 [1] CRAN (R 3.5.0)                    
#>  callr         3.0.0       2018-08-24 [1] CRAN (R 3.5.1)                    
#>  cli           1.0.1       2018-09-25 [1] CRAN (R 3.5.1)                    
#>  crayon        1.3.4       2018-09-26 [1] Github (r-lib/crayon@3e751fb)     
#>  debugme       1.1.0       2017-10-22 [1] CRAN (R 3.5.0)                    
#>  desc          1.2.0       2018-05-01 [1] CRAN (R 3.5.0)                    
#>  devtools      1.13.6.9000 2018-09-23 [1] Github (r-lib/devtools@74df201)   
#>  digest        0.6.17      2018-09-12 [1] CRAN (R 3.5.1)                    
#>  evaluate      0.11        2018-07-17 [1] CRAN (R 3.5.1)                    
#>  fs            1.2.6       2018-08-23 [1] CRAN (R 3.5.1)                    
#>  glue          1.3.0       2018-09-17 [1] Github (tidyverse/glue@4e74901)   
#>  htmldeps      0.1.1       2018-09-17 [1] Github (rstudio/htmldeps@c1023e0) 
#>  htmltools     0.3.6       2017-04-28 [1] CRAN (R 3.5.0)                    
#>  knitr         1.20.12     2018-08-13 [1] local                             
#>  magrittr      1.5         2014-11-22 [1] CRAN (R 3.5.0)                    
#>  memoise       1.1.0       2017-04-21 [1] CRAN (R 3.5.0)                    
#>  pkgbuild      1.0.1.9000  2018-10-01 [1] Github (r-lib/pkgbuild@446d70c)   
#>  pkgload       1.0.0       2018-09-17 [1] Github (r-lib/pkgload@7771d78)    
#>  prettyunits   1.0.2       2015-07-13 [1] CRAN (R 3.5.0)                    
#>  processx      3.2.0       2018-08-16 [1] CRAN (R 3.5.1)                    
#>  ps            1.1.0       2018-08-10 [1] CRAN (R 3.5.1)                    
#>  R6            2.3.0       2018-10-04 [1] CRAN (R 3.5.1)                    
#>  Rcpp          0.12.19     2018-10-01 [1] CRAN (R 3.5.1)                    
#>  remotes       1.1.1.9000  2018-09-23 [1] Github (r-lib/remotes@5a07ad2)    
#>  rlang         0.2.2       2018-08-16 [1] CRAN (R 3.5.1)                    
#>  rmarkdown     1.10.13     2018-09-17 [1] Github (rstudio/rmarkdown@df4ec91)
#>  rprojroot     1.3-2       2018-01-03 [1] CRAN (R 3.5.0)                    
#>  sessioninfo   1.1.0       2018-09-25 [1] CRAN (R 3.5.1)                    
#>  stringi       1.2.4       2018-07-20 [1] CRAN (R 3.5.1)                    
#>  stringr       1.3.1       2018-05-10 [1] CRAN (R 3.5.0)                    
#>  testthat      2.0.0       2017-12-13 [1] CRAN (R 3.5.0)                    
#>  usethis       1.4.0.9000  2018-09-23 [1] Github (r-lib/usethis@1e3c6a6)    
#>  withr         2.1.2       2018-03-15 [1] CRAN (R 3.5.0)                    
#>  xfun          0.3         2018-07-06 [1] CRAN (R 3.5.1)                    
#>  yaml          2.2.0       2018-07-25 [1] CRAN (R 3.5.1)                    
#> 
#> [1] C:/Users/inp099/Documents/R/win-library/3.5
#> [2] C:/Program Files/R/R-3.5.1/library

Created on 2018-10-05 by the reprex package (v0.2.1)

> usethis::create_package("usethisissue478") # restarts R normally
> usethis::use_roxygen_md()
โœ” Setting active project to '/home/kdaily/scratch/usethisissue478'
โœ” Setting Roxygen field in DESCRIPTION to 'list(markdown = TRUE)'
โœ” Setting RoxygenNote field in DESCRIPTION to '6.1.0'
โ— Run `devtools::document()`
> devtools::document()
Updating usethisissue478 documentation
Loading usethisissue478
Writing NAMESPACE
> usethis::use_pipe()
โœ” Adding 'magrittr' to Imports field in DESCRIPTION
โœ” Writing 'R/utils-pipe.R'
โ— Run `devtools::document()`
> devtools::document()
Updating usethisissue478 documentation
Loading usethisissue478

results in RStudio modal popup:

R Session Aborted
R encountered a fatal error.
The session was terminated.

I started a new R session and re-created the package (using only usethis::create_package("usethisissue478"). After reloading, this was my sessionInfo:

> sessionInfo()
R version 3.5.0 (2018-04-23)
Platform: x86_64-redhat-linux-gnu (64-bit)
Running under: Fedora 27 (Workstation Edition)

Matrix products: default
BLAS/LAPACK: /usr/lib64/R/lib/libRblas.so

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C               LC_TIME=en_US.UTF-8       
 [4] LC_COLLATE=en_US.UTF-8     LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
 [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                  LC_ADDRESS=C              
[10] LC_TELEPHONE=C             LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
[1] compiler_3.5.0 tools_3.5.0    yaml_2.1.19   

I have usethis 1.4.0, magrittr 1.5, and RStudio 1.1.383.

Can you both report what version of roxygen2 you have?

I have roxygen2 6.1.0.

I have:

roxygen2 6.1.0.9000
roxygen2md 0.0.4.9000

This doesn't solve the issue, but shouldn't \code{magrittr::\link[magrittr]{\%>\%}} here be \code{\link[magrittr]{\%>\%}}?

#' Pipe operator
#'
#' See \code{magrittr::\link[magrittr]{\%>\%}} for details.
#'
#' @name %>%
#' @rdname pipe
#' @keywords internal
#' @export
#' @importFrom magrittr %>%
#' @usage lhs \%>\% rhs
NULL

The same also holds true for the roxygen template created by usethis::use_tibble().

No, I think the text and link are what we want them to be.

screen shot 2018-11-05 at 8 22 21 am

Hmm, this doesn't seem specific to the pipe operator. For example, if re-export some of the tidyverse operators-

#' @export
#' @importFrom rlang "%||%"
rlang::`%||%`

#' @export
#' @importFrom rlang "%|%"
rlang::`%|%`

#' @export
#' @importFrom magrittr "%>%"
magrittr::`%>%`

#' @export
#' @importFrom magrittr "%<>%"
magrittr::`%<>%`

#' @export
#' @importFrom magrittr "%$%"
magrittr::`%$%`

All of these provide warnings during devtools::check():

Rd warning: C:/Users/inp099/Documents/ggstatsplot/man/reexports.Rd:22: file link '%>%' in package 'magrittr' does not exist and so has been treated as a topic
Rd warning: C:/Users/inp099/Documents/ggstatsplot/man/reexports.Rd:22: file link '%<>%' in package 'magrittr' does not exist and so has been treated as a topic
Rd warning: C:/Users/inp099/Documents/ggstatsplot/man/reexports.Rd:22: file link '%$%' in package 'magrittr' does not exist and so has been treated as a topic
Rd warning: C:/Users/inp099/Documents/ggstatsplot/man/reexports.Rd:24: file link '%||%' in package 'rlang' does not exist and so has been treated as a topic

So maybe the issue is with roxygen2 and how it is handling operators with unusual names?

This is not a usethis problem, but is somehow related to your version of R. The warning can be ignored.

@hadley is there somewhere else I should report this? This crashes RStudio for me (see https://github.com/r-lib/usethis/issues/478#issuecomment-427879907). Thanks!

I doubt that is the source of the crash. Maybe start in community.rstudio.com?

Will do. Thanks!

I believe the issue can be solved temporarily by modifying the doc string from

#' See \code{magrittr::\link[magrittr]{\%>\%}} for details.

to

#' See \code{magrittr::\link[magrittr:pipe]{\%>\%}} for details.

The reason is that we need to indicate the .Rd file name (in this case pipe) that contains the topic %>%. See also https://github.com/klutometis/roxygen/issues/707

Was this page helpful?
0 / 5 - 0 ratings

Related issues

uribo picture uribo  ยท  5Comments

EmilHvitfeldt picture EmilHvitfeldt  ยท  3Comments

Jadamso picture Jadamso  ยท  3Comments

jennybc picture jennybc  ยท  6Comments

xrobin picture xrobin  ยท  7Comments