From michael.weylandt at gmail.com  Thu Aug  1 04:41:51 2013
From: michael.weylandt at gmail.com (R. Michael Weylandt)
Date: Wed, 31 Jul 2013 21:41:51 -0500
Subject: [Rd] Depends vs Imports
In-Reply-To: <C627D03C-9632-4C9E-850F-AEF71872277D@r-project.org>
References: <51F99A62.6040205@gmail.com>
	<C627D03C-9632-4C9E-850F-AEF71872277D@r-project.org>
Message-ID: <CAAmySGNr_dYq3_=cDGoOtFius_h5GJC=3sZqRuYJFqC0DhvgWw@mail.gmail.com>

On Wed, Jul 31, 2013 at 7:35 PM, Simon Urbanek
<simon.urbanek at r-project.org> wrote:
>
> On Jul 31, 2013, at 7:14 PM, Paul Gilbert wrote:
>
>> I am being asked to modernize the Depends line in the DESCRIPTION file of some packages. Writing R Extensions says:
>>
>>  The general rules are
>>
>>     Packages whose namespace only is needed to load the package using
>>   library(pkgname) must be listed in the ?Imports? field and not in
>>   the ?Depends? field. Packages listed in imports or importFrom
>>   directives in the NAMESPACE file should almost always be in
>>   ?Imports? and not ?Depends?.
>>
>>     Packages that need to be attached to successfully load the
>>    package using library(pkgname) must be listed in the
>>    ?Depends? field, only.
>>
>> Could someone please explain a few points I thought I understood but obviously do not, or point to where these are explained:
>>
>>   -What does it mean for the namespace only to be needed? I thought the namespace was needed if the package or some of its functions were mentioned in the NAMESPACE file, and that only the namespace was needed if only the generics were called, and not other functions. The above suggests that I may be wrong about this. If so, that is, Imports will usually suffice, then when would Depends ever be needed when a package is mentioned in the NAMESPACE file?
>>
>
> In the namespace era Depends is never really needed. All modern packages have no technical need for Depends anymore. Loosely speaking the only purpose of Depends today is to expose other package's functions to the user without re-exporting them.
>

Just to make sure I understand this: an example would be if A provides
an S3 generic and B provides a (registered but unexported) method for
that generic -- this would be a great time for B to list A as
"Depends" instead of "Imports" to make sure the generic is available
to the user?

Thanks,
Michael



[Rd] Depends vs Imports
R. Michael Weylandt