Thanks, will fix. On Fri, Apr 29, 2016 at 10:26 AM, davide risso <risso.dav...@gmail.com> wrote: > Hi all, > > when running R CMD check on our package, we get the following warning: > > checking whether the namespace can be unloaded cleanly ... WARNING > ---- unloading > Error in .getClassFromCache(what, resolve.confl = "all") : > argument "where" is missing, with no default > Calls: unloadNamespace ... <Anonymous> -> .removeSuperclassBackRefs -> > .getClassFromCache > Execution halted > > Is this warning related to the message mentioned earlier in this thread? If > so, should I expect this warning to go away once the bug in the class import > is fixed? > > Here for the full Travis CI report: > https://travis-ci.org/epurdom/clusterExperiment/builds/126175973 > > Thanks, > Davide > > > On Mon, Apr 25, 2016 at 2:00 PM davide risso <risso.dav...@gmail.com> wrote: >> >> Thank you Michael and Martin for looking into this! >> >> Best, >> davide >> >> >> On Mon, Apr 25, 2016 at 1:49 PM Michael Lawrence >> <lawrence.mich...@gene.com> wrote: >>> >>> Yes, that's a better fix for this in principle, since it uses the >>> information encoded in the extends object, although I think >>> getClassFromCache() also needs to be fixed, so that getClassDef() sees >>> only the imported classes when only given "where". That's a more >>> general fix that works in both load orders. >>> >>> Maybe the superClass slot of the extends object should store its >>> package? Would be convenient, if somewhat redundant. Conceptually, it >>> seems the package really belongs on superClass, not on the extends >>> object itself (how does a ClassExtends pertain to a package?). >>> >>> Index: ClassExtensions.R >>> =================================================================== >>> --- ClassExtensions.R (revision 70547) >>> +++ ClassExtensions.R (working copy) >>> @@ -316,6 +316,7 @@ >>> stop(gettextf("the 'replace' argument to setIs() should be a >>> function of 2 or 3 arguments, got an object of class %s", >>> dQuote(class(replace))), domain = NA) >>> >>> + packageSlot(to) <- package >>> new(extClass, subClass = Class, superClass = to, package = package, >>> coerce = coerce, test = test, replace = replace, simple = simple, >>> by = by, dataPart = dataPart, distance = distance) >>> >>> >>> >>> On Mon, Apr 25, 2016 at 1:24 PM, Martin Morgan >>> <martin.mor...@roswellpark.org> wrote: >>> > >>> > >>> > On 04/25/2016 03:53 PM, Michael Lawrence wrote: >>> >> >>> >> Yea, this is a bug in R, in my opinion. The class cache circumvents >>> >> the namespace imports. In my working copy I've fixed it by falling >>> >> back to the namespace search when there are multiple hits. That at >>> >> least fixes this case. >>> > >>> > >>> > This also fixes it >>> > >>> > Index: src/library/methods/R/SClasses.R >>> > =================================================================== >>> > --- src/library/methods/R/SClasses.R (revision 70547) >>> > +++ src/library/methods/R/SClasses.R (working copy) >>> > @@ -524,7 +524,7 @@ >>> > superClass <- exti@superClass >>> > if(!exti@simple && !is(object, superClass)) >>> > next ## skip conditional relations that don't hold for this >>> > object >>> > - superDef <- getClassDef(superClass, where = where) >>> > + superDef <- getClassDef(superClass, package = >>> > packageSlot(exti)) >>> > if(is.null(superDef)) { >>> > errors <- c(errors, >>> > paste0("superclass \"", superClass, >>> > >>> > >>> > There's another problem seen by loading the packages in reverse order >>> > >>> >> suppressPackageStartupMessages({ library(RNeXML); >>> >> library(GenomicRanges) >>> >> }) >>> > Found more than one class "Annotated" in cache; using the first, from >>> > namespace 'RNeXML' >>> > Also defined by 'S4Vectors' >>> > ... >>> > >>> > which is from >>> > >>> > [[17]] >>> > S4Vectors:::setDefaultSlotValue("XRaw", "shared", new("SharedRaw"), >>> > where = asNamespace(pkgname)) >>> > >>> > [[18]] >>> > resetClass(classname, classdef, where = where) >>> > >>> > [[19]] >>> > completeClassDefinition(Class, classDef, where) >>> > >>> > [[20]] >>> > .completeClassSlots(ClassDef, where) >>> > >>> > [[21]] >>> > isClass(eClass, where = where) >>> > >>> > [[22]] >>> > getClassDef(Class, where) >>> > >>> > [[23]] >>> > .getClassFromCache(Class, where, package = package, resolve.msg = >>> > resolve.msg) >>> > >>> > but I haven't quite got to the bottom of that. Also, I think these are >>> > both >>> > different from but related to >>> > >>> >> suppressPackageStartupMessages(library(Statomica)) >>> > Error in .mergeMethodsTable(generic, mtable, tt, attach) : >>> > trying to get slot "defined" from an object of a basic class ("list") >>> > with >>> > no slots >>> > Error: package or namespace load failed for 'Statomica' >>> > >>> > >>> >> >>> >> You can disable the message in the short term by setting the >>> >> "getClass.msg" option to FALSE. >>> >> >>> >> Michael >>> >> >>> >> On Sun, Apr 24, 2016 at 12:50 PM, davide risso >>> >> <risso.dav...@gmail.com> >>> >> wrote: >>> >>> >>> >>> Dear list, >>> >>> >>> >>> we are developing a new package that defines a class that builds on >>> >>> SummarizedExperiment and also imports the CRAN package phylobase. >>> >>> >>> >>> The class "Annotated" is defined both in the S4Vectors package (a >>> >>> dependency of SummarizedExperiment) and in the RNeXML package (a >>> >>> dependency >>> >>> of phylobase). Note that we want the former. This causes the >>> >>> following >>> >>> message to be thrown every time we create a new object. >>> >>> >>> >>> Found more than one class "Annotated" in cache; using the first, from >>> >>> namespace 'S4Vectors' >>> >>> >>> >>> >>> >>> A minimal example is the following. >>> >>> >>> >>>> library(SummarizedExperiment)> SummarizedExperiment()class: >>> >>>> SummarizedExperiment >>> >>> >>> >>> dim: 0 0 >>> >>> metadata(0): >>> >>> assays(0): >>> >>> rownames: NULL >>> >>> rowData names(0): >>> >>> colnames: NULL >>> >>> colData names(0):> library(phylobase)> SummarizedExperiment()Found >>> >>> more than one class "Annotated" in cache; using the first, from >>> >>> namespace 'S4Vectors'class: SummarizedExperiment >>> >>> dim: 0 0 >>> >>> metadata(0): >>> >>> assays(0): >>> >>> rownames: NULL >>> >>> rowData names(0): >>> >>> colnames: NULL >>> >>> colData names(0): >>> >>> >>> >>>> sessionInfo()R Under development (unstable) (2016-03-07 r70284) >>> >>> >>> >>> Platform: x86_64-pc-linux-gnu (64-bit) >>> >>> Running under: Debian GNU/Linux stretch/sid >>> >>> >>> >>> locale: >>> >>> [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C >>> >>> LC_TIME=en_US.UTF-8 >>> >>> [4] LC_COLLATE=en_US.UTF-8 LC_MONETARY=en_US.UTF-8 >>> >>> LC_MESSAGES=en_US.UTF-8 >>> >>> [7] LC_PAPER=en_US.UTF-8 LC_NAME=C >>> >>> LC_ADDRESS=C >>> >>> [10] LC_TELEPHONE=C LC_MEASUREMENT=en_US.UTF-8 >>> >>> LC_IDENTIFICATION=C >>> >>> >>> >>> attached base packages: >>> >>> [1] stats4 parallel stats graphics grDevices utils >>> >>> datasets methods >>> >>> [9] base >>> >>> >>> >>> other attached packages: >>> >>> [1] phylobase_0.8.2 SummarizedExperiment_1.1.21 >>> >>> [3] Biobase_2.31.3 GenomicRanges_1.23.23 >>> >>> [5] GenomeInfoDb_1.7.6 IRanges_2.5.39 >>> >>> [7] S4Vectors_0.9.41 BiocGenerics_0.17.3 >>> >>> >>> >>> loaded via a namespace (and not attached): >>> >>> [1] Rcpp_0.12.3 plyr_1.8.3 XVector_0.11.7 >>> >>> iterators_1.0.8 >>> >>> [5] tools_3.3.0 zlibbioc_1.17.0 uuid_0.1-2 >>> >>> jsonlite_0.9.19 >>> >>> [9] nlme_3.1-125 lattice_0.20-33 foreach_1.4.3 DBI_0.3.1 >>> >>> [13] httr_1.1.0 stringr_1.0.0 dplyr_0.4.3 xml2_0.1.2 >>> >>> [17] ade4_1.7-4 grid_3.3.0 rredlist_0.1.0 reshape_0.8.5 >>> >>> [21] data.table_1.9.6 R6_2.1.2 XML_3.98-1.4 RNeXML_2.0.6 >>> >>> [25] reshape2_1.4.1 tidyr_0.4.1 magrittr_1.5 >>> >>> codetools_0.2-14 >>> >>> [29] assertthat_0.1 bold_0.3.5 taxize_0.7.5 ape_3.4 >>> >>> [33] stringi_1.0-1 rncl_0.6.0 lazyeval_0.1.10 rotl_0.5.0 >>> >>> [37] chron_2.3-47 >>> >>> >>> >>> >>> >>> Since we need to import both packages, is there a way to explicitly >>> >>> use >>> >>> the >>> >>> correct definition of "Annotated" or to not import the class >>> >>> "Annotated" >>> >>> from RNeXML? >>> >>> >>> >>> Or is this something that could be addressed in the >>> >>> SummarizedExperiment >>> >>> package? >>> >>> >>> >>> These are our DESCRIPTION and NAMESPACE file (note that we are >>> >>> importing >>> >>> only what we need from phylobase): >>> >>> https://github.com/epurdom/clusterExperiment/blob/develop/DESCRIPTION >>> >>> https://github.com/epurdom/clusterExperiment/blob/develop/NAMESPACE >>> >>> >>> >>> See also Henrik's comment at: >>> >>> https://github.com/epurdom/clusterExperiment/issues/66 >>> >>> >>> >>> Thank you in advance for any help! >>> >>> >>> >>> Best, >>> >>> davide >>> >>> >>> >>> [[alternative HTML version deleted]] >>> >>> >>> >>> _______________________________________________ >>> >>> Bioc-devel@r-project.org mailing list >>> >>> https://stat.ethz.ch/mailman/listinfo/bioc-devel >>> >>> >>> >> >>> >> _______________________________________________ >>> >> Bioc-devel@r-project.org mailing list >>> >> https://stat.ethz.ch/mailman/listinfo/bioc-devel >>> >> >>> > >>> > >>> > This email message may contain legally privileged and/or confidential >>> > information. If you are not the intended recipient(s), or the employee >>> > or >>> > agent responsible for the delivery of this message to the intended >>> > recipient(s), you are hereby notified that any disclosure, copying, >>> > distribution, or use of this email message is prohibited. If you have >>> > received this message in error, please notify the sender immediately by >>> > e-mail and delete this email message from your computer. Thank you. >>> >
_______________________________________________ Bioc-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/bioc-devel