On Wed, Aug 28, 2013 at 3:22 PM, Duncan Murdoch <murdoch.dun...@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

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 <pgilbert...@gmail.com>
>> wrote:
>>
>> > On 13-08-28 12:29 PM, Marc Schwartz wrote:
>> >
>> >>
>> >> On Aug 28, 2013, at 11:15 AM, Paul Gilbert <pgilbert...@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@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@r-project.org mailing list
>> https://stat.ethz.ch/mailman/**listinfo/r-devel<https://stat.ethz.ch/mailman/listinfo/r-devel>
>>
>
>

        [[alternative HTML version deleted]]

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

Reply via email to