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

Reply via email to