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


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

2024-03-11 Thread CRAN.r
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