[R-pkg-devel] Deprecating apparent S3 method, changing name
Jan van der Laan
rhe|p @end|ng |rom eoo@@dd@@n|
Tue Oct 1 09:32:59 CEST 2024
On 9/26/24 23:48, Murray Efford via R-package-devel wrote:
> I am tossing up between (i) appealing to CRAN to allow the submission through with NOTEs until it feels safe to remove the functions with misleading names altogether, and (ii) removing them now and warning users about the new names in an onLoad message.
A third solution would be to create a `esa.plot` method that redirects
the user to `esaPlot` etc. So you create a function `esa.plot`. Its
arguments should match those of the `esa` generic. If the `esaPlot`
function has completely different arguments, you could have this
`esa.plot` function give an error, redirecting the user to `esaPlot`.
You will still need to document the `esa.plot` function as a method to
prevent warnings/notes:
\usage{
\method{esa}{plot}(..)
}
And you should export it:
export(esa.plot)
So that it can be called directly. To prevent that the `esa.plot` is
called when a user passes a `plot` object to the `esa` generic, you
could use the solution mentioned below:
> ________________________________
> From: Ivan Krylov <ikrylov using disroot.org>
>
> Theoretically speaking, if there was a place in your package where you
> called the esa() generic with a user-supplied object, esa.plot() would
> be a reachable S3 method, because the user would be able to construct
> structure(list(), class = 'plot') and give it to your package code to
> call esa(plot_object) and have it dispatched to esa.plot(). (Which
> wouldn't be useful to the user, but that's how S3 works.)
>
In NAMESPACE you can do:
S3method(esa, plot, esaplotmethod)
To register `esaplotmethod` as the method that is called when using
`esa` with an object of type `plot`. This would prevent this issue.
However, this probably (can't test as the note doesn't happen on my
system) doesn't resolve the issue with the NOTE.
Best,
Jan
More information about the R-package-devel
mailing list