[R-pkg-devel] Depending on currently unreleased package

Duncan Murdoch murdoch.duncan at gmail.com
Sat May 6 22:18:48 CEST 2017

On 06/05/2017 4:02 PM, William Brannon wrote:
> Hi r-devel,
> I have a package called sqlscore (
> https://cran.r-project.org/package=sqlscore) which depends on dplyr
> functions for SQL generation. The new version of dplyr splits these
> functions into a different package (dbplyr) and provides a recommended way
> to wrap around access to the function in the appropriate package. So when
> it's released in a few days, users with the new dplyr will see errors when
> trying to use sqlscore. So far, so good, though - updating my R code as
> such isn't hard.
> But dbplyr won't be released before the new  dplyr is, and I can't figure
> out how to list it in Imports, Depends or even Suggests to release an
> update ahead of the new dplyr release. Doing so causes ERRORs in R CMD
> check about an unavailable dependency, and not doing so causes problems
> with "::" references to a package not mentioned in DESCRIPTION.
> I'd rather not wait until dbplyr is released to submit a new package, for
> obvious reasons. But releasing an update which depends on it before that
> might also cause breakage.
> Any suggestions for the right upgrade path?

You can list dbplyr in Suggests, and put in conditionals to test for it. 
  If you don't want to wait for its release you'll need to have code 
that works without it as well, so something like this

if (requireNamespace("dbplyr"))
   foo <- dbplyr::foo
else if (packageVersion("dplyr") < "x.y.z")
   foo <- dplyr::foo
   stop("You need to install the dbplyr package, because dplyr::foo has 
moved there.")

will allow you to use foo() anywhere (as long as its interface is the 
same in both packages, of course).

Duncan Murdoch

More information about the R-package-devel mailing list