Gavin,
I admit to not knowing the details of your package, but do users commonly
need to use symbols from other package *in calls to functions exported by
your package*? If so, you're in the situation Martin (Morgan) described,
which is one I think everyone agrees Depends is appropriate for.
If the above is not the case, and you're arguing it's simply convenient
for users because it's very common for them to use top level functions from
both in the same analysis, the case for Depends is not as strong. In that
case, the official wisdom, AFAIK, is that Depends is not warranted.
~G
On Thu, Aug 28, 2014 at 11:43 AM, Gavin Simpson <ucfagls at gmail.com> wrote:
I fully agree.
This is how I have come to understand Depends vs Imports and why I
currently will not be removing vegan from Depends for my analogue package.
This is also why I was pushing back against the notion that was voiced
early in this thread that *nothing* should be in Depends.
Cheers
G
On 28 August 2014 08:47, Bert Gunter <bgunter at gene.com> wrote:
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.urbanek at r-project.org> wrote:
On Aug 27, 2014, at 6:01 PM, Gavin Simpson <ucfagls at gmail.com> wrote:
On 27 August 2014 15:24, Hadley Wickham <h.wickham at gmail.com> wrote:
Is that the cause of these NOTEs? Is the expectation that if I am
function from a package, even a package that I have in Depends:,
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
Cheers Hadley. Thanks for the confirmation, but...
...I don't get this; what is the point of Depends? I thought it was
package needs these other packages to work, i.e. be loaded". Hence
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,
will also want to use those other packages interactively". You still
to use import() to define what exactly is used by your package - as
to what you want to be available to the user in case it is attached.
This check (whilst having found some things I should have imported
didn't - which is a good thing!) seems to be circumventing the
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
is a design decision as the latter borrows heavily from and builds
vegan. In general I have moved packages that didn't need to be in
into Imports; in the version I am currently doing final tweaks on
goes to CRAN I have remove all but vegan from Depends.
Or am I thinking about this in the wrong way?
Thanks again
Gavin
--
Gavin Simpson, PhD
[[alternative HTML version deleted]]