Re: [R-pkg-devel] Conditionally register method with generic in other package

2018-01-22 Thread Joshua Ulrich
For posterity, the solution I employed did not register the method as a formal S3 method. Functionality in package B was unchanged as long as package B was loaded and attached... which was good enough for my purposes. On Wed, Dec 6, 2017 at 6:45 AM, Joshua Ulrich wrote: > I have a feeling I know

Re: [R-pkg-devel] Conditionally register method with generic in other package

2017-12-07 Thread Hadley Wickham
We use this technique in a couple of places: https://github.com/tidyverse/dbplyr/blob/6be777d8b23d588f19c98de52f4e58f16c2ef67e/R/zzz.R Basic idea is to call registerS3method() manually, when needed - it's just a little tricky because the suggested package may be loaded either before or after your

Re: [R-pkg-devel] Conditionally register method with generic in other package

2017-12-07 Thread Hadley Wickham
On Thu, Dec 7, 2017 at 2:44 AM, Bill Denney wrote: > >> On Dec 6, 2017, at 07:45, Joshua Ulrich wrote: >> >> To avoid excessive dependencies, I would like to only register >> foo.bar() if package A is installed at the time package B is >> installed. If package A is installed after package B, the

Re: [R-pkg-devel] Conditionally register method with generic in other package

2017-12-07 Thread Joshua Ulrich
Bill, Duncan, Thanks for the replies. On Wed, Dec 6, 2017 at 12:51 PM, Duncan Murdoch wrote: > On 06/12/2017 8:44 AM, Bill Denney wrote: >> >> >>> On Dec 6, 2017, at 07:45, Joshua Ulrich wrote: >>> >>> To avoid excessive dependencies, I would like to only register >>> foo.bar() if package A is

Re: [R-pkg-devel] Conditionally register method with generic in other package

2017-12-06 Thread Duncan Murdoch
On 06/12/2017 8:44 AM, Bill Denney wrote: On Dec 6, 2017, at 07:45, Joshua Ulrich wrote: To avoid excessive dependencies, I would like to only register foo.bar() if package A is installed at the time package B is installed. If package A is installed after package B, then warn the user when p

Re: [R-pkg-devel] Conditionally register method with generic in other package

2017-12-06 Thread Bill Denney
> On Dec 6, 2017, at 07:45, Joshua Ulrich wrote: > > To avoid excessive dependencies, I would like to only register > foo.bar() if package A is installed at the time package B is > installed. If package A is installed after package B, then warn the > user when package B is loaded and/or attache

[R-pkg-devel] Conditionally register method with generic in other package

2017-12-06 Thread Joshua Ulrich
I have a feeling I know the answer to this question, but I'm asking with the hope that I learn something new. Package A defines a S3 generic function, "foo()". Package B defines a S3 class "bar", and a foo.bar() method. This method is not strictly necessary for the package to function, and packa