Re: [Rd] S4 NAMESPACE method imports and exports do not include (promoted?) generics

From: Martin Morgan <mtmorgan_at_fhcrc.org>
Date: Fri, 16 Dec 2011 06:16:55 -0800

tar of Pkgs A, B, C attached. Martin

On 12/15/2011 03:34 PM, Martin Morgan wrote:
> In
>
> > R.version.string
> [1] "R Under development (unstable) (2011-12-15 r57901)"
>
> section 1.6.6 of 'Writing R Extensions' says
>
> Note that exporting methods on a generic in the namespace will
> also export the generic, and exporting a generic in the
> namespace will also export its methods.
>
> and
>
> Note that importMethodsFrom will also import any generics defined in
> the namespace on those methods
>
> However, if PkgA promotes 'unique' to a generic and exports that
>
> DESCRIPTION:
> Imports: methods
>
> R/f.R:
> setGeneric("unique")
>
> NAMESPACE:
> export(unique)
>
> and PkgB creates and exports a method on unique
>
> DESCRIPTION
> Imports: methods, PkgA
>
> R/f.R:
> setClass("B", representation(b="numeric"))
> setMethod(unique, "B",
> function(x, incomparables=FALSE, ...) unique(x_at_b))
>
> NAMESPACE:
> importFrom(PkgA, unique)
> exportClasses(B)
> exportMethods(unique)
>
> and PkgC wants to import PkgB's classes and methods
>
> DESCRIPTION
> Imports: methods, PkgB
>
> R/f.R
> cunique <- function(x) unique(x)
>
> NAMESPACE
> importMethodsFrom(PkgB, unique)
> export(cunique)
>
> then
>
> (a) the 'unique' generic is not available to the user of PkgB
>
> > library(PkgB)
> > unique(new("B", b=1:5))
> Error in unique.default(new("B", b = 1:5)) :
> unique() applies only to vectors
>
> and (b) the generic has not been imported to PkgC's namespace
>
> > cunique(new("B", b=1:5))
> Error in unique.default(b) : unique() applies only to vectors
>
> A workaround is for PkgB to also export(unique), and for PkgC to also
> importFrom(PkgA, unique), but is this the intention?
>
> This is arising from Bioconductor efforts to place commonly promoted
> functions and S3 classes into a single package, to avoid conflicts when
> the same function is promoted independently by several packages.
>
> Martin

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

Location: M1-B861
Telephone: 206 667-2793

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

Received on Fri 16 Dec 2011 - 14:20:21 GMT

This quarter's messages: by month, or sorted: [ by date ] [ by thread ] [ by subject ] [ by author ]

All messages

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Fri 16 Dec 2011 - 22:20:18 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-devel. Please read the posting guide before posting to the list.

list of date sections of archive