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

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to