Ah, you are correct, my bad and apologies. I forgot that table is only for available methods, not for available generics.
KK. > On Apr 30, 2023, at 4:49 PM, Kurt Hornik <kurt.hor...@wu.ac.at> wrote: > >>>>>> Karolis Koncevičius writes: > >> But this might require a more detailed investigation. For example I >> just noticed that even with the patch `@` is still not listed in >> .S3_methods_table(). > > Afaict base does not register any methods for @ or @<- ? > > -k > >> KK. > >>> On Apr 29, 2023, at 4:44 PM, Karolis Koncevičius >>> <karolis.koncevic...@gmail.com> wrote: >>> >>> Hello Kurt, >>> >>> With r84341 it now works on my side. >>> >>> Warm regards, >>> Karolis K. >>> >>>> On Apr 29, 2023, at 1:24 PM, Kurt Hornik <kurt.hor...@wu.ac.at> wrote: >>>> >>>>>>>>> Karolis Koncevičius writes: >>>> >>>> Can you pls try again with r84341 or later? >>>> >>>> Best >>>> -k >>>> >>>>> A more concrete example in order to correct my vague messages below. >>>>> Writing an R package that uses `@` and `@<-` as S3 generics. Line from >>>>> manual pages in .Rd files: >>>> >>>>> \method{@}{newclass}(object, name) <- value >>>> >>>>> Throws this error during R CMD check —as-cran >>>> >>>>> Bad \usage lines found in documentation object ’code’: >>>>> <unescaped bksl>method{@}{newclass}(object, name) <- value >>>> >>>>> This error is due to tools::checkDocFiles eventually calling >>>>> tools:::.S3_method_markup_regexp and not finding `@` as a valid for S3. >>>>> This error is gone if we adjust tools:::.S3_method_markup_regexp to pass >>>>> for ‘@‘ by adding ‘\\@‘ to regexp. >>>> >>>>> Please note that this now is not dependant on using or not using roxygen2 >>>>> KK. >>>> >>>>>> On Apr 29, 2023, at 12:53 AM, Karolis Koncevičius >>>>>> <karolis.koncevic...@gmail.com> wrote: >>>>>> >>>>>> Thank you for such a quick reply, Gabriel, >>>>>> >>>>>> I am not too familiar with the package tools, so cannot speak too >>>>>> confidently, but below is how I see the issue currently. >>>>>> >>>>>> The issue is not for external packages to rely on unexported functions >>>>>> from tools::, rather the issue is that 'R CMD check —as-cran' runs those >>>>>> functions from tools:: in order to check the validity of Rd files (from >>>>>> any package). R 4.3.0 added @ as internal S3 generic. However, package >>>>>> tools does not recognise it as valid in Rd files and throws errors when >>>>>> it sees S3 method declared for @ in the Rd usage lines. >>>>>> >>>>>> So any package that will try to use @ generic will run into the issue, >>>>>> without attempting to use internal S3 functions in their code, but >>>>>> during the R CMD check step. >>>>>> >>>>>> Hope I am being clearer now, and not missing something important (all >>>>>> these things: both @ as generic and tools:: package are quite new to me), >>>>>> Karolis K. >>>>>> >>>>>> On Apr 29, 2023, at 12:38 AM, Gabriel Becker <gabembec...@gmail.com> >>>>>> wrote: >>>>>> >>>>>> Karolis, >>>>>> >>>>>> It seems likely, without having looked myself, that you could be correct >>>>>> about the issue, but it does seem worth noting that both of the >>>>>> functions you have mentioned are not exported, and thus not part of the >>>>>> API that extension packages are allowed to use and rely on. >>>>>> >>>>>> If retrieving the list of "internal S3 generics" is something package >>>>>> and user code is allowed to do, the real fix seems to go beyond what >>>>>> you're suggesting, to actually providing an API entry point that gives >>>>>> the relevant information (maybe in an identical form to how those >>>>>> internal functions do so, maybe not). If it's not, for some principled >>>>>> reason, something R-core wants to support package and user code doing, >>>>>> then the fact that the new thing doesn't work automatically with >>>>>> roxygen2 would become the roxygen maintainers' job to fix or document. >>>>>> >>>>>> I do not know whether R-core feels this is something packages/users >>>>>> should be able to do; both decisions strike me as possible, to be >>>>>> honest, depending on details I don't know and/or am not privy to. >>>>>> >>>>>> Best, >>>>>> ~G >>>>>> >>>>>> On Fri, Apr 28, 2023 at 1:49 PM Karolis Koncevičius >>>>>> <karolis.koncevic...@gmail.com <mailto:karolis.koncevic...@gmail.com> >>>>>> <mailto:karolis.koncevic...@gmail.com>> wrote: >>>>>>>> This issue might go deeper - I was not successful in passing R CMD >>>>>>>> checks for the usage files. R CMD check kept showing errors for `@` >>>>>>>> declarations, even thou they were identical to `$` declarations (which >>>>>>>> passed fine). >>>>>>>> >>>>>>>> Seems like the usage check functions are not prepared for `@` - also >>>>>>>> in tools:::.S3_method_markup_regexp >>>>>>>> >>>>>>>>> On Apr 28, 2023, at 10:34 PM, Karolis Koncevičius >>>>>>>>> <karolis.koncevic...@gmail.com <mailto:karolis.koncevic...@gmail.com> >>>>>>>>> <mailto:karolis.koncevic...@gmail.com>> wrote: >>>>>>>>> >>>>>>>>> I was building a package that uses the new generic @ and kept having >>>>>>>>> errors with “roxygen2” documentation. “roxygen2” generated NAMESPACE >>>>>>>>> added `@.newclass` as a newly exported function, not as a S3method. >>>>>>>>> >>>>>>>>> At first I thought this must be a bug in roxygen2 and they lag behind >>>>>>>>> the new developments in R. But after some investigation I found that >>>>>>>>> “roxygen2” is using tools:::.get_internal_S3_generis() to decide if >>>>>>>>> the method should be exported as S3method or not. For some reason >>>>>>>>> “@<-“ is listed in there, but “@“ is not. >>>>>>>>> >>>>>>>>> Am I missing some context, or is this an oversight? >>>>>>>>> >>>>>>>>> Kind regards, >>>>>>>>> Karolis Koncevicius >>>>>>>> >>>>>>>> ______________________________________________ >>>>>>>> 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 >>>>>> >>>> >>>> >>>>> [[alternative HTML version deleted]] >>>> >>>>> ______________________________________________ >>>>> R-devel@r-project.org <mailto:R-devel@r-project.org> mailing list >>>>> https://stat.ethz.ch/mailman/listinfo/r-devel >>> > > >> [[alternative HTML version deleted]] > >> ______________________________________________ >> R-devel@r-project.org mailing list >> https://stat.ethz.ch/mailman/listinfo/r-devel [[alternative HTML version deleted]] ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel