On 30/06/2014 8:51 AM, Michael Lawrence wrote:
I think it's generally nice to be able to compute on the network of imported and exported symbols, and exportFrom() preserves the information that a symbol has been forwarded. But let's focus on the use case of documenting the symbol.

First, from the user perspective: my understanding (without testing anything) is that with promptImport(), the call to help() will find two or more hits to the symbol, so the user has to choose from a menu or otherwise qualify the package.

It depends how the user formulates it. The usual ?foo will find at least two hits. But if a user qualifies it by saying ?pkg::foo,
they'll just get the redirect page.

I think we need ?pkg::foo to do something, and this seemed easier than inventing an invisible redirect.

Choosing the man page for the re-exported symbol will bring up a page that just requests them to make an extra click. This seems like extra work for the user. One potential benefit is that the user will know that a re-export has occurred, but does the user care? Why not proceed directly to the actual documentation? The majority of users have no or little knowledge of namespaces.

I think some users would like to know that pkg::foo is identical to original::foo, so if we had the invisible redirect, I think the target page should be modified to say "redirected from ...", just so the users were sure they had come to the right place.

From the developer perspective, promptImport() means that there is another man page to worry about, while exportFrom() would make it clear to developers reading the NAMESPACE that symbols are being simply forwarded, rather than re-defined.

Those are both benefits of your approach, which I wouldn't object to if you go ahead and do it subject to the qualifications above, and one other. How should existing redirects be handled? If a package imports and re-exports a symbol without change, should the author be encouraged/required to use exportFrom? If we do nothing, most people will just do what they're currently doing, so maybe some sort of nag should be added. Package writers won't like that unless there's some obvious benefit to the change.

Duncan


Michael


On Sun, Jun 29, 2014 at 12:43 PM, Duncan Murdoch <murdoch.dun...@gmail.com <mailto:murdoch.dun...@gmail.com>> wrote:

    On 29/06/2014, 3:07 PM, Michael Lawrence wrote:
    > While the change to the symbol lookup is generally useful (e.g., for
    > finding S4 methods that become available whenever a package is
    loaded),
    > it seems that we ultimately want a mechanism by which a package
    > namespace can formally declare that it is re-exporting a symbol from
    > some package. Then, for example, the check mechanism can be made
    smart
    > enough to avoid throwing such warnings.
    >
    > I've developed a proof-of-concept exportFrom() namespace
    directive. This
    > is the syntax:
    >
    > exportFrom(utils, help)
    >
    > Then:
    >
    >> getNamespaceInfo("ReexportingPackage", "exports")$help
    > [1] "help"
    > attr(,"origin")
    > [1] "utils"
    >
    > Comments?

    I don't see why this is needed.  What does it gain over
    documenting that
    the symbol "help" is just a copy of the one from utils?  As of this
    morning, that's easy...

    Duncan Murdoch

    >
    > Michael
    >
    >
    > On Fri, Jun 27, 2014 at 8:32 PM, Yihui Xie <x...@yihui.name
    <mailto:x...@yihui.name>
    > <mailto:x...@yihui.name <mailto:x...@yihui.name>>> wrote:
    >
    >     Hi Duncan,
    >
    >     Again, thanks a lot for making this change (help requests
    are tried
    >     over all loaded instead of attached packages):
    > https://github.com/wch/r-source/commit/21d2f7430b4 This makes what I
    >     proposed last time possible now: if pkg B imports FUN from A and
    >     re-exports it, ?FUN will work after B is attached because A
    will also
    >     be at least attached.
    >
    >     Then it will be perfect if `R CMD check` can stop warning
    against the
    >     missing documentation, which is not really missing.
    >
    >     Regards,
    >     Yihui
    >     --
    >     Yihui Xie <xieyi...@gmail.com <mailto:xieyi...@gmail.com>
    <mailto:xieyi...@gmail.com <mailto:xieyi...@gmail.com>>>
    >     Web: http://yihui.name
    >
    >
    >     On Fri, Jun 20, 2014 at 1:34 AM, Yihui Xie <x...@yihui.name
    <mailto:x...@yihui.name>
    >     <mailto:x...@yihui.name <mailto:x...@yihui.name>>> wrote:
    >     > but note that you will have to document it even if it is a
    function
    >     > imported from another package... Perhaps help() should be
    intelligent
    >     > enough to link the documentation of `FUN` from package A
    for package B
    >     > when B imports `FUN` from A, and exports it in B's
    NAMESPACE. The
    >     > package name of A may be obtained from
    >     > environmentName(environment(FUN)). At the moment, since R
    CMD check
    >     > will warn against the missing documentation of `FUN` in B,
    I have to
    >     > copy FUN.Rd from A to B in this case, which seems to be
    inefficient
    >     > and not a best way to maintain. Did I miss anything in the
    R-exts
    >     > manual?
    >     >
    >     > Regards,
    >     > Yihui
    >     > --
    >     > Yihui Xie <xieyi...@gmail.com <mailto:xieyi...@gmail.com>
    <mailto:xieyi...@gmail.com <mailto:xieyi...@gmail.com>>>
    >     > Web: http://yihui.name
    >     >
    >     >
    >     > On Fri, Jun 20, 2014 at 12:19 AM, Winston Chang
    >     <winstoncha...@gmail.com <mailto:winstoncha...@gmail.com>
    <mailto:winstoncha...@gmail.com <mailto:winstoncha...@gmail.com>>>
    wrote:
    >     >> On Thu, Jun 19, 2014 at 3:15 PM, Martyn Plummer
    <plumm...@iarc.fr <mailto:plumm...@iarc.fr>
    >     <mailto:plumm...@iarc.fr <mailto:plumm...@iarc.fr>>> wrote:
    >     >>
    >     >>>  Export filter in the NAMESPACE file *without copying
    it* in the
    >     R source
    >     >>> code.
    >     >>>
    >     >>>
    >     >> Ah, it works! Thank you!
    >     >>
    >
    >     ______________________________________________
    > R-devel@r-project.org <mailto:R-devel@r-project.org>
    <mailto:R-devel@r-project.org <mailto:R-devel@r-project.org>>
    mailing list
    > https://stat.ethz.ch/mailman/listinfo/r-devel
    >
    >



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

Reply via email to