[Rd] Unnecessary note when import only used in arg definition

Duncan Murdoch murdoch@dunc@n @end|ng |rom gm@||@com
Mon Feb 6 19:59:27 CET 2023


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



More information about the R-devel mailing list