Hi,

I second Bert's comment. I would like to go even farther and suggest that it 
would be really useful if one of the R gurus (like Simon) wrote a relatively 
non-technical article in the R journal on this topic of 
"Depends/Imports/Suggested."  Someone like myself would benefit immensely.

Thank you,
Ravi

-----Original Message-----
From: r-devel-boun...@r-project.org [mailto:r-devel-boun...@r-project.org] On 
Behalf Of Bert Gunter
Sent: Thursday, August 28, 2014 10:47 AM
To: Simon Urbanek
Cc: r-devel@r-project.org
Subject: Re: [Rd] Re R CMD check checking in development version of R

This is a nice explanation of the Imports/Depends distinction. It ought to go 
into the Extensions ref manual imho.

Cheers,
Bert

Bert Gunter
Genentech Nonclinical Biostatistics
(650) 467-7374

"Data is not information. Information is not knowledge. And knowledge is 
certainly not wisdom."
Clifford Stoll




On Thu, Aug 28, 2014 at 7:39 AM, Simon Urbanek <simon.urba...@r-project.org> 
wrote:
>
> On Aug 27, 2014, at 6:01 PM, Gavin Simpson <ucfa...@gmail.com> wrote:
>
>> On 27 August 2014 15:24, Hadley Wickham <h.wick...@gmail.com> wrote:
>>
>>>> Is that the cause of these NOTEs? Is the expectation that if I am 
>>>> using a function from a package, even a package that I have in 
>>>> Depends:, that I have to explicitly declare these imports in NAMESPACE?
>>>
>>> Yes.
>>>
>>> (Otherwise your package won't work if it's only attached and not 
>>> loaded. i.e. if someone does analogue::foo() only the imported 
>>> functions are available, not the functions in packages you depend 
>>> on)
>>>
>>
>> Cheers Hadley. Thanks for the confirmation, but...
>>
>> ...I don't get this; what is the point of Depends? I thought it was 
>> "my package needs these other packages to work, i.e. be loaded". 
>> Hence it is user error (IMHO ;-) to do `analogue::foo()` without 
>> having the dependencies loaded too.
>>
>
> No. The point of Depends is that if your package is attached, it also 
> attaches the other packages to make them available for the user. Essentially 
> you're saying "if you want to use my package interactively, you will also 
> want to use those other packages interactively". You still need to use 
> import() to define what exactly is used by your package - as opposed to what 
> you want to be available to the user in case it is attached.
>
> Cheers,
> Simon
>
>
>
>> This check (whilst having found some things I should have imported 
>> and didn't - which is a good thing!) seems to be circumventing the 
>> intention of having something in Depends. Is Depends going to go away?
>>
>>
>>> (And really you shouldn't have any packages in depends, they should 
>>> all be in imports)
>>
>>
>> I disagree with *any*; having say vegan loaded when one is using 
>> analogue is a design decision as the latter borrows heavily from and 
>> builds upon vegan. In general I have moved packages that didn't need 
>> to be in Depends into Imports; in the version I am currently doing 
>> final tweaks on before it goes to CRAN I have remove all but vegan from 
>> Depends.
>>
>> Or am I thinking about this in the wrong way?
>>
>> Thanks again
>>
>> Gavin
>>
>>
>>>
>>> Hadley
>>>
>>>
>>> --
>>> http://had.co.nz/
>>>
>>
>>
>>
>> --
>> Gavin Simpson, PhD
>>
>>       [[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

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

Reply via email to