[Rd] Depends vs Imports
Paul Gilbert
pgilbert902 at gmail.com
Thu Aug 1 01:14:42 CEST 2013
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?
-Should the package DESCRIPTION make any accommodation for the
situation where users will probably need to directly call functions in
the imported package, even though the package itself does not?
-What does "need to be attached" mean? Is there a distinction
between a package being attached and a namespace being attached.
-Does "successfully load" mean something different from actually
using the package? That is, can we assume that if the package loads then
all the functions to run things will actually be found?
-If pkg1 uses a function foo in pkg3 indirectly, by a call to a
function in pkg2 which then uses foo, how should pkg1 indicate the
relationship with foo's pkg3, or is there no need to indicate any
relationship with pkg3 because that is all looked after by pkg2?
Thanks,
Paul
More information about the R-devel
mailing list