Kevin Ushey
2023-Feb-06 18:03 UTC
[Rd] Unnecessary note when import only used in arg definition
Hi Antoine, Maybe I'm misunderstanding, but I think the warning is saying that you've declared the package dependency in the DESCRIPTION file, but you haven't actually imported the package (or any functions) in your package NAMESPACE file? I put together an example package that I think satisfies the point you're describing, and I don't see any R CMD check warnings (using R 4.2.2). https://github.com/kevinushey/imports.example As I understand it, if you declare a package dependency in the DESCRIPTION file, you need to clarify how you're using the package in the NAMESPACE file -- e.g. what symbols you want to import, and so on. Best, Kevin On Mon, Feb 6, 2023 at 6:43 AM Antoine Fabri <antoine.fabri at gmail.com> wrote:> > Dear r-devel, > > When a package is only used in an argument definition, e.g : > > > f <- function(test = testthat::is_testing()) { > > if (test) 1 else 2 > > } > > > R CMD CHECK gives us a note: "Namespace in Imports field not imported from: > 'testthat'" > > > This incites me to remove the package from the Imports field but that'll > make my package brittle. > > > I noted I'm not the first one having the issue ( > https://github.com/r-lib/devtools/issues/2456 ) and I've seen some > workarounds too, in particular Hadley Wickham suggests in 'R packages' to > use the following construct : > > > ignore_unused_imports <- *function*() { > > aaapkg::aaa_fun > > } > > > That's far from obvious though, and not very satisfying. > > Are there any downside to removing this note in this scenario? it makes > little sense to me and incites wrong behaviour AFAIU. > > > Thanks, > > > Antoine > > [[alternative HTML version deleted]] > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel
Duncan Murdoch
2023-Feb-06 18:59 UTC
[Rd] Unnecessary note when import only used in arg definition
I think the usual rule is that a qualified use of a package is sufficient to suppress the warning without any entry in the NAMESPACE file. So if there isn't something else going on, Antoine's example illustrates a bug (or at least an inconsistency) in the check code. Here's a version of your example that doesn't import anything from rlang using the NAMESPACE, but uses it in code: https://github.com/dmurdoch/imports.example/tree/explicituse And here's one like Antoine's, where the only use is in a default value: https://github.com/dmurdoch/imports.example/tree/defaultvalue The first one tests clean, the second one gives the note he was talking about: ? checking dependencies in R code ... NOTE Namespace in Imports field not imported from: ?rlang? All declared Imports should be used. Duncan On 06/02/2023 1:03 p.m., Kevin Ushey wrote:> Hi Antoine, > > Maybe I'm misunderstanding, but I think the warning is saying that > you've declared the package dependency in the DESCRIPTION file, but > you haven't actually imported the package (or any functions) in your > package NAMESPACE file? > > I put together an example package that I think satisfies the point > you're describing, and I don't see any R CMD check warnings (using R > 4.2.2). > > https://github.com/kevinushey/imports.example > > As I understand it, if you declare a package dependency in the > DESCRIPTION file, you need to clarify how you're using the package in > the NAMESPACE file -- e.g. what symbols you want to import, and so on. > > Best, > Kevin > > On Mon, Feb 6, 2023 at 6:43 AM Antoine Fabri <antoine.fabri at gmail.com> wrote: >> >> Dear r-devel, >> >> When a package is only used in an argument definition, e.g : >> >> >> f <- function(test = testthat::is_testing()) { >> >> if (test) 1 else 2 >> >> } >> >> >> R CMD CHECK gives us a note: "Namespace in Imports field not imported from: >> 'testthat'" >> >> >> This incites me to remove the package from the Imports field but that'll >> make my package brittle. >> >> >> I noted I'm not the first one having the issue ( >> https://github.com/r-lib/devtools/issues/2456 ) and I've seen some >> workarounds too, in particular Hadley Wickham suggests in 'R packages' to >> use the following construct : >> >> >> ignore_unused_imports <- *function*() { >> >> aaapkg::aaa_fun >> >> } >> >> >> That's far from obvious though, and not very satisfying. >> >> Are there any downside to removing this note in this scenario? it makes >> little sense to me and incites wrong behaviour AFAIU. >> >> >> Thanks, >> >> >> Antoine >> >> [[alternative HTML version deleted]] >> >> ______________________________________________ >> R-devel at r-project.org mailing list >> https://stat.ethz.ch/mailman/listinfo/r-devel > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel