>>>>> 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

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

Reply via email to