On 21/02/2021 12:17 p.m., Gábor Csárdi wrote:
On Sun, Feb 21, 2021 at 6:05 PM Duncan Murdoch <murdoch.dun...@gmail.com> wrote:
On 21/02/2021 9:47 a.m., Iñaki Ucar wrote:
Hi,
Let's say that pkgA uses pkgB::function1. Then, version 2 of pkgB
removes function1 and exports function2 for the same functionality. So
pkgA does something along these lines:
if (utils::packageVersion("pkgB") < 2) {
pkgB::function1()
} else {
pkgB::function2()
}
I'd say that there's nothing wrong with this code, and yet checks will
complain about "missing o unexported object" in pkgB, for either
function1 or function2 depending on the version of pkgB that is
available.
Isn't this a false positive? Or is there a better way of doing this?
I'd agree it's a false positive, but I wouldn't expect the check code to
be able to interpret the logic.
A better way could be to handle it in your NAMESPACE file. For example,
this is legal (if nonsense):
if (utils::packageVersion("rgl") < "0.99.0") {
importFrom(rgl, bar = somethingNonexistent)
} else
importFrom(rgl, bar = persp3d)
Isn't this evaluated at install time? I think it is, and then you
would need to potentially reinstall the package when you update rgl,
which is not quite ideal, because it is easy to miss it, and then
you'll get runtime errors.
Yes, you're right, I didn't know that. That's not as useful.
Duncan Murdoch
______________________________________________
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel