From murdoch@dunc@n @end|ng |rom gm@||@com  Mon Feb  6 19:59:27 2023
From: murdoch@dunc@n @end|ng |rom gm@||@com (Duncan Murdoch)
Date: Mon, 6 Feb 2023 13:59:27 -0500
Subject: [Rd] Unnecessary note when import only used in arg definition
In-Reply-To: <CAJXgQP0NhMQYRNqy8SfS4jN-kcVKFinJG4bxfROX_BEbBt5L+Q@mail.gmail.com>
References: <CAEKh8ujzyH=Lhd49yc58=1Q4MxiGbjFpfQ13Rp+dEUQFA0Yr8g@mail.gmail.com>
 <CAJXgQP0NhMQYRNqy8SfS4jN-kcVKFinJG4bxfROX_BEbBt5L+Q@mail.gmail.com>
Message-ID: <e02220d8-9806-09dd-aee3-665479704d6d@gmail.com>

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



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