You're right, that's enough to not dig any further. I remembered it from the earlier days of devtools, but they removed that dependency ages ago. I also believe now the namespace package predates the later changes to the namespace mechanism. Forget what I said, I should have spent a bit more time testing it myself first.
Kind regards Joris Joris Meys Statistician T +32 9 264 61 79 Department Data Analysis and Mathematical Modelling Campus Coupure, Block A 1st floor 110.050, Coupure links 653, B-9000 Ghent, Belgium T administration office +32 9 264 59 32 www.ugent.be e-maildisclaimer ________________________________________ From: Stefan Lenz IMBI <l...@imbi.uni-freiburg.de> Sent: Thursday, April 9, 2020 6:09 PM To: Joris Meys; r-package-devel@r-project.org Subject: Re: [R-pkg-devel] [FWD] [CRAN-pretest-archived] CRAN submission JuliaConnectoR 0.5.0 When I execute the example, I also get a strange behaviour: library(namespace) ns <- makeNamespace("myNamespace") assign("test",7, env=ns) ls(env=ns) When I now want to invoke any help for a function, I get a warning message: > ?loadNamespace Warning message: In find.package(if (is.null(package)) loadedNamespaces() else package, : there is no package called ‘myNamespace’ Also sessionInfo doesn't work any more: > sessionInfo() Error in if (pkgpath == "") { : argument is of length zero I don't think this is a good sign.... Stefan ----------------ursprüngliche Nachricht----------------- Von: Joris Meys [joris.m...@ugent.be] An: Stefan Lenz IMBI [l...@imbi.uni-freiburg.de], r-package-devel@r-project.org Datum: Thu, 9 Apr 2020 15:37:09 +0000 ------------------------------------------------- > Hi Stefan, > > you need the function makeNamespace() to create the environment as a > namespace. > Look at the examples in the help files, I found them rather instructive. I > also > hope someone else chimes in to shed some light on whether or not that approach > would be acceptable. > > > Joris Meys > Statistician > T +32 9 264 61 79 > > Department Data Analysis and Mathematical Modelling > > Campus Coupure, Block A 1st floor 110.050, Coupure links 653, B-9000 Ghent, > Belgium > T administration office +32 9 264 59 32 > > www.ugent.be > > e-maildisclaimer > > > ________________________________________ > From: Stefan Lenz IMBI <l...@imbi.uni-freiburg.de> > Sent: Thursday, April 9, 2020 5:30 PM > To: Joris Meys; Jeff Newmiller; r-package-devel@r-project.org; Duncan > Murdoch > Subject: Re: [R-pkg-devel] [FWD] [CRAN-pretest-archived] CRAN submission > JuliaConnectoR 0.5.0 > > Hi! > Thanks for pointing to the package "namespace". > I experimented with it but I couldn't really figure out how it is supposed to > work: > > The following code leads to strange errors that I don't understand: > > > nse <- list2env(list(data="x", asdf = 2)) > > namespace::registerNamespace(name = "NewNamespace", env = nse) > > NewNamespace::asdf > Error in asNamespace(ns) : not a namespace > > It would really be interesting if someone could comment on whether the > namespace > approach is feasible, how it is supposed to work, and whether/how it would be > better than using attach. > Greetings! > Stefan > > > ----------------ursprüngliche Nachricht----------------- > Von: Joris Meys [joris.m...@ugent.be] > An: Stefan Lenz IMBI [l...@imbi.uni-freiburg.de], Jeff Newmiller > [jdnew...@dcn.davis.ca.us], r-package-devel@r-project.org, Duncan > Murdoch [murdoch.dun...@gmail.com] > Datum: Thu, 9 Apr 2020 12:59:23 +0000 > ------------------------------------------------- > > >> Hi Stefan, >> >> first of all, thank you for taking the time and effort to link Julia and R. >> That >> said, I would strongly encourage you to go for a reticulate-like approach. >> There's a good reason for that. Once you start mixing languages, you really >> want >> to have some indication what code is ran in what language. Especially since >> I can >> imagine at one point there'll be a Julia function masking an R function of >> the same >> name, and that is going to cause a world of hurt and confusion. >> >> If you don't like environments, you can try to use namespace functionality. >> There's the "namespace" package that allows you to create one, and some >> internal >> namespace functions are visible (eg namespaceExport() from base). That's >> going to be the closest to mimicking R packages, but it's beyond my >> knowledge to >> know how feasible this approach actually is. I hope someone else chimes in, >> especially if this is dangerous for other reasons I overlooked. >> >> Kind regards >> Joris >> >> Joris Meys >> Statistician >> T +32 9 264 61 79 >> >> Department Data Analysis and Mathematical Modelling >> >> Campus Coupure, Block A 1st floor 110.050, Coupure links 653, B-9000 Ghent, >> Belgium >> T administration office +32 9 264 59 32 >> >> www.ugent.be >> >> e-maildisclaimer >> >> >> ________________________________________ >> From: R-package-devel <r-package-devel-boun...@r-project.org> on behalf >> of Stefan Lenz IMBI <l...@imbi.uni-freiburg.de> >> Sent: Thursday, April 9, 2020 10:41 AM >> To: Jeff Newmiller; r-package-devel@r-project.org; Duncan Murdoch >> Subject: Re: [R-pkg-devel] [FWD] [CRAN-pretest-archived] CRAN submission >> JuliaConnectoR 0.5.0 >> >> It is important for me to get my package into CRAN. >> I haven't gotten any answer from the CRAN maintainers. I already tried to >> submit a >> version of the package before some months and haven't gotten any reply then. >> The replies you gave me (thanks to all engaged in the discussion) were mixed. >> I still think that the library-like import is a good feature, but if it is >> not >> possible to get this package on CRAN with it, I will change it with >> returning an >> environment like reticulate. >> My question now is: >> So what would be the process how to proceed? >> Is there anybody who can make a decision in such cases? >> Or do I make this decision myself after I lost hope that it will be accepted >> the way >> it is now? >> >> Stefan >> >> >> ----------------ursprüngliche Nachricht----------------- >> Von: Jeff Newmiller [jdnew...@dcn.davis.ca.us] >> An: Stefan Lenz IMBI [l...@imbi.uni-freiburg.de], >> r-package-devel@r-project.org, Duncan Murdoch >> [murdoch.dun...@gmail.com] >> Datum: Tue, 07 Apr 2020 09:52:52 -0700 >> ------------------------------------------------- >> >> >>> I did not say "interfere"... I said "problems with consistency". I don't >>> think >>> your wholesale import of functions without corresponding help pages is >>> consistent with the normal use of R, which will make reading R code written >>> with >>> this mechanism in place a painful source of trouble for help forums. >>> >>> On the other hand, if the code is prefaced with an environment name then >>> there will >>> be no expectation that a help page should exist on the part of someone >>> reading that >>> code for the first time. (It will be no less obscure, but at least it won't >>> be >>> misleading.) >>> >>> On April 7, 2020 9:40:02 AM PDT, Stefan Lenz IMBI >>> <l...@imbi.uni-freiburg.de> >>> wrote: >>>>Thank you very much for your comment. >>>>Could you elaborate how you think that it could interfere with the help >>>>system? >>>>I haven't yet connected the Julia help with the R help, as the R help >>>>system is quite complex and RStudio handles it again differently. So >>>>it's simply like the functions were declared on the command line. They >>>>have no help. >>>>A simply way to print the help for a Julia function, e.g. the function >>>>"first", is to call >>>> juliaEval("@doc first") >>>>This then simply prints the output on the command line. >>>> >>>> >>>>----------------ursprüngliche Nachricht----------------- >>>>Von: Jeff Newmiller [jdnew...@dcn.davis.ca.us] >>>>An: r-package-devel@r-project.org, Duncan Murdoch >>>>[murdoch.dun...@gmail.com], Stefan Lenz IMBI >>>>[l...@imbi.uni-freiburg.de] >>>>Datum: Mon, 06 Apr 2020 10:51:53 -0700 >>>>------------------------------------------------- >>>> >>>> >>>>> One could take the position that the library and require functions >>>>were a mistake >>>>> to begin with and that all contributed packages should be accessed >>>>using ::... or >>>>> one could recognize that these functions are an expected feature of R >>>>at this >>>>> point and then it is not defensible to ban the proposed approach of >>>>importing >>>>> names as Stefan wants to. I don't think it is fair to require this >>>>higher level of >>>>> specificity just because it involves use of attach. >>>>> >>>>> That said, another feature of R packages is the integrated help >>>>system... >>>>> importing Julia functions wholesale may lead to problems with >>>>consistency in >>>>> navigating the help files. IMO it may be justifiable to ban this >>>>particular >>>>> syntactic convenience to maintain some separation in the minds of >>>>users looking >>>>> for help on these new functions, since the syntactic and semantic >>>>structure of >>>>> functions from another language may not align well with normal R >>>>functions. But I >>>>> am not familiar with Julia or Stefan's package or the support it >>>>brings in this >>>>> area... I just disagree with banning a "library" lookalike function >>>>"just >>>>> because" it happens to involve attach. >>>>> >>>>> On April 6, 2020 8:40:12 AM PDT, Duncan Murdoch >>>><murdoch.dun...@gmail.com> >>>>> wrote: >>>>>>On 06/04/2020 11:25 a.m., Stefan Lenz IMBI wrote: >>>>>>> Yes, as I wrote earlier, I would like to imitate the behaviour of >>>>>>loading an R package >>>>>>> >>>>>>> juliaUsing("SomeJuliaPackage") # exports myJuliaFunction >>>>>>> myJuliaFunction() >>>>>>> >>>>>>> like R: >>>>>>> >>>>>>> library("MyRPackage") # exports myRFunction >>>>>>> myRFunction() >>>>>>> >>>>>>> I could return an environment, such that the call becomes >>>>>>> >>>>>>> attach(juliaUsing("SomeJuliaPackage")) >>>>>>> myJuliaFunction() >>>>>> >>>>>>I wouldn't use it that way. I'd write it as >>>>>> >>>>>> sjp <- juliaUsing("SomeJuliaPackage") >>>>>> sjp$myJuliaFunction() >>>>>> >>>>>>This is similar to the advice to use pkg::foo() rather than >>>>>>library(pkg) >>>>>>followed by plain foo() in the code. >>>>>> >>>>>>Duncan Murdoch >>>>>> >>>>>>> >>>>>>> But calling juliaUsing(), as it is now, takes care that if a >>>>package >>>>>>is imported a second time, >>>>>>> the first data base is removed via detach(). >>>>>>> This way, users do not have to worry about calling juliaUsing() >>>>>>mutliple times in a script, same >>>>>>> as R users don't have to worry about calling library() multiple >>>>>>times. >>>>>>> If you call the code with attach() multiple times and do not >>>>detach, >>>>>>you get your screen cluttered with >>>>>>> warnings "xxx is masked by xxx". >>>>>>> So I would say it would decrease user-friendliness to return an >>>>>>environment. >>>>>>> I also want to make explicit, that the call to attach >>>>>>> occurs only once in my code, after creating the environment: >>>>>>> >>>>>>> envName <- paste0("JuliaConnectoR:", absoluteModulePath) >>>>>>> if (envName %in% search()) { >>>>>>> detach(envName, character.only = TRUE) >>>>>>> } >>>>>>> attach(funenv, name = envName) >>>>>>> >>>>>>> This code is only called by juliaImport() and juliaUsing(), which >>>>>>aren't called by any other function of >>>>>>> the package >>>>>>> and are supposed to be called directly by the user. >>>>>>> >>>>>>> Stefan >>>>>>> >>>>>>> ----------------ursprüngliche Nachricht----------------- >>>>>>> Von: Duncan Murdoch [murdoch.dun...@gmail.com] >>>>>>> An: Dirk Eddelbuettel [e...@debian.org], Ben Bolker >>>>>>[bbol...@gmail.com] >>>>>>> Kopie: List r-package-devel [r-package-devel@r-project.org] >>>>>>> Datum: Mon, 6 Apr 2020 11:00:09 -0400 >>>>>>> ------------------------------------------------- >>>>>>> >>>>>>> >>>>>>>> On 06/04/2020 10:49 a.m., Dirk Eddelbuettel wrote: >>>>>>>>> >>>>>>>>> On 6 April 2020 at 08:38, Ben Bolker wrote: >>>>>>>>> | Just reply to the CRAN maintainers and explain this situation. >>>>>>It¨s >>>>>>>>> | slightly buried, but the e-mail you received does say: >>>>>>>>> | >>>>>>>>> | > If you are fairly certain the rejection is a false positive, >>>>>>please reply-all to this >>>>>>>>> | > message and explain. >>>>>>>>> >>>>>>>>> True, but this misses the "Letter of the law" versus the "Spirit >>>>of >>>>>>the law". >>>>>>>>> >>>>>>>>> It might be worth mentioning that use of attach() is seen, to >>>>find >>>>>>one poor >>>>>>>>> analogy, pretty much like use of global variables these days. >>>>"Just >>>>>>because >>>>>>>>> you could does not mean you should". >>>>>>>>> >>>>>>>>> See e.g. one of the first google hits for 'r do not use attach' >>>>>>here: >>>>>>>>> >>>>>>https://stackoverflow.com/questions/10067680/why-is-it-not-advisable-to-use-attach-in-r-and-what-should-i-use-instead >>>>>>>> >>>>>>>> I don't have a strong opinion on this: the proposed use seems to >>>>be >>>>>>no >>>>>>>> worse than library() or require(). Those are fine for users to >>>>use, >>>>>>but >>>>>>>> are discouraged in a package. If the attach() never happens >>>>without >>>>>>an >>>>>>>> explicit request from the user (and that's what it sounds like), >>>>I'd >>>>>>say >>>>>>>> it's probably okay. >>>>>>>> >>>>>>>> However, there is an easy workaround: just return the environment >>>>>>>> without attaching it. Then the user has the choice of attaching >>>>it, >>>>>>or >>>>>>>> using it as a prefix when they call the functions in it. So it's >>>>not >>>>>>as >>>>>>>> though this will destroy the utility of the package if Stefan >>>>isn't >>>>>>>> allowed to call attach(). >>>>>>>> >>>>>>>> Duncan Murdoch >>>>>>>> >>>>>>>> ______________________________________________ >>>>>>>> R-package-devel@r-project.org mailing list >>>>>>>> https://stat.ethz.ch/mailman/listinfo/r-package-devel >>>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>>>______________________________________________ >>>>>>R-package-devel@r-project.org mailing list >>>>>>https://stat.ethz.ch/mailman/listinfo/r-package-devel >>>>> >>> >> >> >> -- >> >> Stefan Lenz >> >> Institut für Medizinische Biometrie und Statistik >> Medizinische Fakultät / Universitätsklinikum Freiburg >> >> Postadresse: Stefan-Meier-Str. 26, 79104 Freiburg >> >> Tel.: 0761/203-6670 >> E-Mail: l...@imbi.uni-freiburg.de >> >> ______________________________________________ >> R-package-devel@r-project.org mailing list >> https://stat.ethz.ch/mailman/listinfo/r-package-devel >> > > > -- > > Stefan Lenz > > Institut für Medizinische Biometrie und Statistik > Medizinische Fakultät / Universitätsklinikum Freiburg > > Postadresse: Stefan-Meier-Str. 26, 79104 Freiburg > > Tel.: 0761/203-6670 > E-Mail: l...@imbi.uni-freiburg.de > -- Stefan Lenz Institut für Medizinische Biometrie und Statistik Medizinische Fakultät / Universitätsklinikum Freiburg Postadresse: Stefan-Meier-Str. 26, 79104 Freiburg Tel.: 0761/203-6670 E-Mail: l...@imbi.uni-freiburg.de ______________________________________________ R-package-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-package-devel