Re: [R-pkg-devel] R CHECK warning about new S3 generic/method consistency

2024-03-11 Thread Uwe Ligges



On 11.03.2024 19:34, CRAN.r wrote:

No, your assumption is backwards. The methods do need to include all
arguments of the generic. As Writing R Extensions says near the start
of section 7, "A method must have all the arguments of the generic,
including … if the generic does."


That's embarrassing. I was worried it was something simple I missed. Thanks for 
pointing that out!

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



Even more embarassing given you seem to be Mr CRAN given your mail 
message's "From" field ...


Uwe Ligges

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


Re: [R-pkg-devel] R CHECK warning about new S3 generic/method consistency

2024-03-11 Thread CRAN.r
> No, your assumption is backwards. The methods do need to include all
> arguments of the generic. As Writing R Extensions says near the start
> of section 7, "A method must have all the arguments of the generic,
> including … if the generic does."

That's embarrassing. I was worried it was something simple I missed. Thanks for 
pointing that out!

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


Re: [R-pkg-devel] R CHECK warning about new S3 generic/method consistency

2024-03-11 Thread Duncan Murdoch

On 11/03/2024 2:13 p.m., CRAN.r wrote:

On Monday, March 11th, 2024 at 12:43 PM, Diego Hernangómez Herrero 
 wrote:


Shouldn’t you include the y argument also inmyscale.default ? Your generic is 
defining that argument as well.


I assume (hopefully correctly) that methods don't need to include all the arguments of 
the generic. I get the same warning if I use "..." instead of y, too.


No, your assumption is backwards.  The methods do need to include all 
arguments of the generic.  As Writing R Extensions says near the start 
of section 7, "A method must have all the arguments of the generic, 
including … if the generic does."


Think about your user.  They'll ask about help for `inmyscale`, and see 
that it has two arguments, x and y.  If x is a type that goes to 
`inmyscale.default`, the user would receive an error when they followed 
the docs and included the y value.


The usual way to handle this is to include both x and y in all methods, 
but document some of them to say that y is ignored.


Duncan Murdoch

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


Re: [R-pkg-devel] R CHECK warning about new S3 generic/method consistency

2024-03-11 Thread Diego Hernangómez Herrero
Usually when I write a generic I use … in the definition to allow using
additional arguments in specific methods, see

as_bibentry <- function(x, ...) { UseMethod("as_bibentry")
 }

as_bibentry.cff <- function(x, ..., what = c("preferred", "references",
"all")) {


}

but in any case the method must include at least the arguments defined in
the same order. Using … in the generic allows me to include `what` arg with
no WARNINGs.




Have a nice day!


El El lun, 11 mar 2024 a las 19:13, CRAN.r  escribió:

> On Monday, March 11th, 2024 at 12:43 PM, Diego Hernangómez Herrero <
> diego.hernangomezherr...@gmail.com> wrote:
>
> > Shouldn’t you include the y argument also inmyscale.default ? Your
> generic is defining that argument as well.
>
> I assume (hopefully correctly) that methods don't need to include all the
> arguments of the generic. I get the same warning if I use "..." instead of
> y, too.
>

[[alternative HTML version deleted]]

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


Re: [R-pkg-devel] R CHECK warning about new S3 generic/method consistency

2024-03-11 Thread CRAN.r
On Monday, March 11th, 2024 at 12:43 PM, Diego Hernangómez Herrero 
 wrote:

> Shouldn’t you include the y argument also inmyscale.default ? Your generic is 
> defining that argument as well.

I assume (hopefully correctly) that methods don't need to include all the 
arguments of the generic. I get the same warning if I use "..." instead of y, 
too.

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


Re: [R-pkg-devel] R CHECK warning about new S3 generic/method consistency

2024-03-11 Thread Diego Hernangómez Herrero
Shouldn’t you include the y argument also in
myscale.default ? Your generic is defining that argument as well.



Have a nice day!


El El lun, 11 mar 2024 a las 18:25, CRAN.r  escribió:

> I'm trying to define a new generic, and keep getting an S3 generic/method
> consistency when running R CHECK. All of the code seems to be working, and
> I'm not getting any note, errors, or other warnings.
>
> This minimal example shows the warning I'm getting. The functions are
>
>   myscale <- function(x, y) UseMethod("myscale")
>   myscale.default <- function(x) x
>
> The usage section of the man file is
>
>   \usage{
> myscale(x, y)
> \method{myscale}{default}(x)
>   }
>
> and the NAMESPACE file is
>
>   export("myscale", "myscale.default")
>   S3method(myscale, default)
>
> When I build the package and run CHECK, I get
>
>   * checking S3 generic/method consistency ... WARNING
>   myscale:
> function(x, y)
>   myscale.default:
> function(x)
>   See section 'Generic functions and methods' in the 'Writing R
>   Extensions' manual.
>
> As I understand it, there shouldn't be a problem as long as the generic
> function contains all possible arguments of any method, and the methods
> have their arguments in the same order as the generic. It seems that having
> one method with only "x" shouldn't be a problem. I've read the section
> mentioned in the warning, but I can't figure out what's going on. Is any of
> this wrong?
>
> Jay
>
> __
> R-package-devel@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-package-devel
>

[[alternative HTML version deleted]]

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