On Nov 6, 2012, at 2:44 PM, Davor Cubranic wrote:

> On 2012-11-06, at 9:49 AM, Uwe Ligges wrote:
> 
>> On 06.11.2012 17:55, Christophe Genolini wrote:
>>> 
>>>> "Imports" means that symbols are imported form the namespace, so they
>>>> are mandatory for the package to operate. "Suggests" means that
>>>> symbols from the package are not required, but they are used in
>>>> examples or vignettes, so the listed package(s) will be needed for a
>>>> full check. They are not needed for the operation of the package, though.
>>> That's very clear, thanks a lot.
>>> So I will use
>>> 
>>> 
>>> - 'Depends:foo1' if there is a function in foo1 that my package use often
>> 
>> No, better make use of Namespace imports all the time and only use "Depends" 
>> if you really need the other package to be installed. This is rarely needed.
> 
> Uwe, did you mean to say "only use 'Depends' if the other package really 
> needs to be *attached*"?

I think so.

BTW: this Depends/Imports is an interesting aspect that it may look trivial for 
package developers, but can be quite confusing for users. Uwe was suggesting 
Imports over Depends which is clean from a technical point of view (no 
namespace collisions etc.), but as an R user I have to say I find it bad since 
I used to be able to just load one package and not have to load (=attach) every 
package in the dependency tree that I may want to use myself by hand, but if 
people really decide to go that route, you'll have to do it for every single 
package which is a real pain. (Also it's a very bad thing for debugging - you 
can't even ask users to test things since the imports will be hidden). In 
addition, it hides declared methods which is, again, a pain when using R 
interactively, since you can't simply check what a certain method definition 
looks like - you'd have to hunt for it through namespaces (this is also related 
to not exporting methods). There is a difference in treating R as !
 a scripting language versus an interactive analytics system and I find that 
recently focus has been shifting to the former aspect, while, personally, I 
think it's actually more useful as the latter. (Just my $0.02 off topic ;))

Cheers,
Simon


> Because in terms of determining dependencies for `install.package`, I thought 
> "Imports" and "Depends" are no different. (Unless the user explicitly chooses 
> otherwise in the 'dependencies' argument, that is.)
> 
>>> - 'Imports:foo2' if there is a function in foo2 that my package might
>>> use rarely
> 
> 
> I don't think choosing to declare "Imports" has anything to do with frequency 
> of use. But if you do use it, then don't forget to include "imports(foo2)" or 
> "importsFrom(foo2, ...)" in the NAMESPACE file.
> 
> Davor
> 
> 

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to