[Rd] Confusion about Depends:, Imports:, Enhances:, import(), inportFrom()

R. Michael Weylandt <michael.weylandt@gmail.com> michael.weylandt at gmail.com
Thu Aug 22 22:28:05 CEST 2013



On Aug 22, 2013, at 15:33, Henrik Bengtsson <hb at biostat.ucsf.edu> wrote:

> On Thu, Aug 22, 2013 at 10:05 AM, R. Michael Weylandt
> <michael.weylandt at gmail.com> <michael.weylandt at gmail.com> wrote:
>> 
>> 
>> On Aug 22, 2013, at 9:09, Michael Friendly <friendly at yorku.ca> wrote:
>> 
>>> In checking my vcdExtra package, the following NOTE newly appeared (R-Forge, using R version 3.0.1 Patched (2013-08-20 r63635))
>>> 
>>> Package in Depends field not imported from: ‘gnm’
>>> These packages needs to imported from for the case when
>>> this namespace is loaded but not attached.
>>> 
>>> In the DESCRIPTION file, I have
>>> 
>>> Depends: R (>= 2.10), vcd, gnm (>= 1.0.3)
>>> 
>>> In NAMESPACE:
>>> 
>>> # we are a vcd extension
>>> import(vcd)
>>> 
>>> I've read 1.1.1 of R-Exts, but it is not clear to me whether I should also import gnm or change
>>> the DESCRIPTION file to use
>>> 
>>> Imports: vcd, gnm (>= 1.0.3)
>>> 
>>> R-Exts says: The ‘Imports’ field lists packages whose namespaces are imported from (as specified in the
>>> NAMESPACE file) but which do not need to be attached, but how can I tell if gnm needs to be attached?
>> 
>> I think the current best practice is to use Imports unless gnm provides functions the end user needs in order to use your package.
>> 
>> Practically, I think this usually comes down to asking whether gnm provides relevant generics -- if you provide methods only, the end user would only be able to call them directly (ick!) unless gnm is both loaded and attached (Depends)
>> 
>> If gnm is tools for your code, but not the user to call directly, Imports is cleaner.
>> 
>> Does that help?
>> 
>> Michael
>> 
>>> 
>>> Also, what is the difference between Imports: in DESCRIPTION and imports() in NAMESPACE?
>> 
>> One enables the other: Imports in DESCRIPTION allows for both imports() and importsFrom(). It could probably be automatic, but the DESC file is much older than the NAMESPACE file.
> 
> I pretty sure you can also use import()/importFrom() in NAMESPACE for
> packages listed under Depends in DESCRIPTION.
> 

Agreed, but you couldn't auto-generate Depends from the namespace file. I suppose if (per my above) Depends was only used for generics...

Not sure if the devtools world does anything like this, though it seems logical enough. 

Michael

> /Henrik
> 
>> 
>> 
>>> -Michael
>>> 
>>> --
>>> Michael Friendly     Email: friendly AT yorku DOT ca
>>> Professor, Psychology Dept. & Chair, Quantitative Methods
>>> York University      Voice: 416 736-2100 x66249 Fax: 416 736-5814
>>> 4700 Keele Street    Web:   http://www.datavis.ca
>>> Toronto, ONT  M3J 1P3 CANADA
>>> 
>>> ______________________________________________
>>> R-devel at r-project.org mailing list
>>> https://stat.ethz.ch/mailman/listinfo/r-devel
>> 
>> ______________________________________________
>> R-devel at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-devel



More information about the R-devel mailing list