[Rd] ‘:::’ call
Duncan Murdoch
murdoch.duncan at gmail.com
Thu Aug 29 13:19:42 CEST 2013
On 13-08-28 9:00 PM, Kasper Daniel Hansen wrote:
>
>
>
> On Wed, Aug 28, 2013 at 3:22 PM, Duncan Murdoch
> <murdoch.duncan at gmail.com <mailto:murdoch.duncan at gmail.com>> wrote:
>
> On 28/08/2013 3:06 PM, Kasper Daniel Hansen wrote:
>
> My point of view is that if you have a core package where you
> need access
> to "hidden" functions for making a plugin, you should probably
> export these
> hidden functions in the first place. Chances are that if you
> need access
> to these hidden functions (for expert use), other (expert) users
> might want
> access as well, so take the time to export and document it.
>
> I want to use ::: specifically for the case where I have no
> control over
> the other package.
>
>
> And as a potential user of your package, I don't want you to use :::
> if you don't have control over the other package, because its author
> might unwittingly change it in a way that causes me to get incorrect
> results.
>
>
> Perhaps you have heard of the concept of "testing". R actually has good
> testing facilities (if you include add-on packages) and these facilities
> are very helpful in checking whether the answers provided by a package
> are correct. /sarcasm off
How does this argument not apply to *all* tests done by CRAN? Should it
stop doing any tests at all, because users can do them if they care?
Duncan Murdoch
>
> And btw. nothing guarantees that the output of an exported function does
> not change when the package version change. Only testing can help you here.
>
> I don't know if CRAN re-checks a package if dependencies change, but
> obviously it ought to, from a software validity point of view.
>
> Best,
> Kasper
>
> If you want to use :::, go ahead, just don't put your package on
> CRAN, where I get most of my packages. Then we'll both be happy.
>
> Duncan Murdoch
>
>
> Best,
> Kasper
>
>
>
>
> On Wed, Aug 28, 2013 at 2:50 PM, Paul Gilbert
> <pgilbert902 at gmail.com <mailto:pgilbert902 at gmail.com>> wrote:
>
> > On 13-08-28 12:29 PM, Marc Schwartz wrote:
> >
> >>
> >> On Aug 28, 2013, at 11:15 AM, Paul Gilbert
> <pgilbert902 at gmail.com <mailto:pgilbert902 at gmail.com>> wrote:
> >>
> >> I have a package (TSdbi) which provides end user functions
> that I
> >>> export, and several utilities for plugin packages (e.g.
> TSMySQL) that I do
> >>> not export because I do not intend them to be exposed to
> end users. I call
> >>> these from the plugin packages using TSdbi::: but that now
> produces a note
> >>> in the checks:
> >>>
> >>> * checking dependencies in R code ... NOTE
> >>> Namespace imported from by a ‘:::’ call: ‘TSdbi’
> >>> See the note in ?`:::` about the use of this operator. ::
> should be
> >>> used rather than ::: if the function is exported, and a
> package
> >>> almost never needs to use ::: for its own functions.
> >>>
> >>> Is there a preferred method to accomplish this in a way
> that does not
> >>> produce a note?
> >>>
> >>> Thanks,
> >>> Paul
> >>>
> >>
> >>
> >>
> >> Paul,
> >>
> >> See this rather lengthy discussion that occurred within the
> past week:
> >>
> >>
> https://stat.ethz.ch/**__pipermail/r-devel/2013-August/__**067180.html
> <https://stat.ethz.ch/**pipermail/r-devel/2013-August/**067180.html><https://stat.__ethz.ch/pipermail/r-devel/__2013-August/067180.html
> <https://stat.ethz.ch/pipermail/r-devel/2013-August/067180.html>>
>
> >>
> >> Regards,
> >>
> >> Marc Schwartz
> >>
> >
> > I did follow the recent discussion, but no one answered the
> question "Is
> > there a preferred method to accomplish this?" (I suppose the
> answer is that
> > there is no other way, given that no one actually suggested
> anything else.)
> > Most of the on topic discussion in that thread was about how
> to subvert the
> > CRAN checks, which is not what I am trying to do and was also
> pointed out
> > as a bad idea by Duncan. The substantive response was
> >
> > >r63654 has fixed this particular issue, and R-devel will no
> longer
> > >warn against the use of ::: on packages of the same maintainer.
> > >
> > >Regards,
> > >Yihui
> >
> > but that strikes me as a temporary work around rather than a real
> > solution: suppose plugins are provided by a package from
> another maintainer.
> >
> > Since CRAN notes have a habit of becoming warnings and then
> errors, it
> > seems useful to identify the preferred legitimate approach
> while this is
> > still a note. That would save work for both package
> developers and CRAN
> > maintainers.
> >
> > My thinking is that there is a need for a NAMESPACE directive
> something
> > like limitedExport() that allows ::: for identified functions
> without
> > provoking a CRAN complaint when packages use those functions.
> But there may
> > already be a better way I don't know about. Or perhaps the
> solution is to
> > split the end user functions and the utilities for plugin
> packages into two
> > separate packages?
> >
> > Paul
> >
> >
> > ________________________________**________________
> > R-devel at r-project.org <mailto:R-devel at r-project.org> mailing list
> > https://stat.ethz.ch/mailman/*__*listinfo/r-devel
> <https://stat.ethz.ch/mailman/**listinfo/r-devel><https://__stat.ethz.ch/mailman/listinfo/__r-devel
> <https://stat.ethz.ch/mailman/listinfo/r-devel>>
> >
>
> [[alternative HTML version deleted]]
>
>
>
>
> ________________________________________________
> R-devel at r-project.org <mailto:R-devel at r-project.org> mailing list
> https://stat.ethz.ch/mailman/__listinfo/r-devel
> <https://stat.ethz.ch/mailman/listinfo/r-devel>
>
>
>
More information about the R-devel
mailing list