On Nov 6, 2012, at 3:43 PM, Uwe Ligges wrote: > > > On 06.11.2012 21:17, Simon Urbanek wrote: >> >> 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. > > Yes, sure, sorry for causing confusion. > > >> 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 scri > pting 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 ;)) > > Yes, fair enough. From my point of view that shift already started with > formal (S4) classes/methods. I still find reading S4 code much more > complicated than hunting through namespaces, but that point of view may just > be biased by amount of experience in those different aspects. >
Yes, no argument there, I won't even start about that aspect of S4 ;) Cheers, Simon > > >> 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