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
else
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
______________________________________________
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel