On 06/05/2013 11:59 AM, peter dalgaard wrote:
I'd suspect that the Imports: line in DESCRIPTION imports the full namespaces, 
including conflicting items, on top of importFrom items. Does it not help to 
use Depends: instead?

I think of Imports: and Depends: as different -- presumably the end user has no need for ape / igraph beyond the functionality provided by the new package.

For what it's worth, with a minimal package (attached, modulo the mailman gods),

$ tree PkgA
PkgA
├── DESCRIPTION
├── NAMESPACE
└── R

1 directory, 2 files

and with DESCRIPTION / NAMESPACE as below, I don't see any warning about replacing previous imports

$ R --vanilla
> library(PkgA)
> sessionInfo()
R version 3.0.1 beta (2013-05-07 r62721)
Platform: x86_64-unknown-linux-gnu (64-bit)

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C
 [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8
 [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8
 [7] LC_PAPER=C                 LC_NAME=C
 [9] LC_ADDRESS=C               LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base

other attached packages:
[1] PkgA_1.2.3

loaded via a namespace (and not attached):
[1] ape_3.0-8       grid_3.0.1      igraph_0.6.5-2  lattice_0.20-15
[5] nlme_3.1-109

likewise with R version 3.0.1 beta (2013-05-07 r62721).

Also I don't think exportPattern(".") is to be recommended; see section 1.5.1 of Writing R Extensions (though as a lazy programmer I kind of like the pattern "^[^\\.]").

Martin Morgan

-pd


On Jun 5, 2013, at 18:48 , Jombart, Thibaut wrote:


Dear all,

It is my understanding that using 'importFrom' in the NAMESPACE of a package 
allows to avoid conflicts between different packages defining objects with 
identical names. However, I can still see conflicts while loading the package 
using 'library'.

Here is a toy example, with a package 'foo' importing 'as.igraph' from the 
igraph package, and 'nj' from ape.

'foo' uses the following DESCRIPTION file:
----------------------
Package: foo
Version: 0.0-0
Date: 2013/06/04
Title: foo
Author:  John Doe
Maintainer: John Doe <j...@nowhere.org>
Imports: igraph, ape
Description: just a test.
License: GPL (>=2)
LazyLoad: yes
----------------------

And the following NAMESPACE:
----------------------
## Export all names
exportPattern(".")

## Export all classes
exportClassPattern(".")

## Import all packages listed as Imports or Depends
importFrom(igraph, as.igraph)
importFrom(ape, nj)
----------------------

The check (R 3.0.1) passes without warnings, but then when loading the package:
library(foo)
Warning messages:
1: replacing previous import ‘as.igraph’ when loading ‘ape’
2: replacing previous import ‘edges’ when loading ‘ape’


I would have assumed only ape::nj and igraph::as.igraph would be imported when 
loading 'foo', so this conflict should not occur.

There is probably something simple I have missed as I have just began to pay 
attention to NAMESPACES recently. Reading this post:
http://stackoverflow.com/questions/8637993/better-explanation-of-when-to-use-imports-depends
clarified things a bit, but I still don't understand the warning above.

Any clarification will be much appreciated.

All the best

Thibaut

--
######################################
Dr Thibaut JOMBART
MRC Centre for Outbreak Analysis and Modelling
Department of Infectious Disease Epidemiology
Imperial College - School of Public Health
St Mary’s Campus
Norfolk Place
London W2 1PG
United Kingdom
Tel. : 0044 (0)20 7594 3658
t.jomb...@imperial.ac.uk
http://sites.google.com/site/thibautjombart/
http://adegenet.r-forge.r-project.org/
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel



--
Computational Biology / Fred Hutchinson Cancer Research Center
1100 Fairview Ave. N.
PO Box 19024 Seattle, WA 98109

Location: Arnold Building M1 B861
Phone: (206) 667-2793

Attachment: PkgA.tar.gz
Description: GNU Zip compressed data

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

Reply via email to