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

Reply via email to