Hi Kurt, Is it intended that numeric_version() returns an error by default on non-character input in R 4.4.0? It seems that I can turn this into a warning by setting _R_CHECK_STOP_ON_INVALID_NUMERIC_VERSION_INPUTS_=false but I don't seem to be able to find any of this mentioned in the NEWS file.
Thanks, H. On 4/1/24 05:28, Kurt Hornik wrote: >>>>>> Andrea Gilardi via R-devel writes: > Thanks: should be fixed now in the trunk. > > Best > -k > >> Thank you very much Dirk for your kind words and for confirming the bug. >> Next week I will open a new issue on Bugzilla adding the related patch. >> Kind regards >> Andrea >> On 29/03/2024 20:14, Dirk Eddelbuettel wrote: >>> On 29 March 2024 at 17:56, Andrea Gilardi via R-devel wrote: >>> | Dear all, >>> | >>> | I have a question regarding the R-devel version of >>> .make_numeric_version() function. As far as I can understand, the current >>> code >>> (https://github.com/wch/r-source/blob/66b91578dfc85140968f07dd4e72d8cb8a54f4c6/src/library/base/R/version.R#L50-L56) >>> runs the following steps in case of non-character input: >>> | >>> | 1. It creates a message named msg using gettextf. >>> | 2. Such object is then passed to stop(msg) or warning(msg) according to >>> the following condition >>> | >>> | tolower(Sys.getenv("_R_CHECK_STOP_ON_INVALID_NUMERIC_VERSION_INPUTS_") != >>> "false") >>> | >>> | However, I don't understand the previous code since the output of >>> Sys.getenv("_R_CHECK_STOP_ON_INVALID_NUMERIC_VERSION_INPUTS_") != "false" >>> is just a boolean value and tolower() will just return "true" or "false". >>> Maybe the intended code is >>> tolower(Sys.getenv("_R_CHECK_STOP_ON_INVALID_NUMERIC_VERSION_INPUTS_")) != >>> "false" ? Or am I missing something? >>> >>> Yes, agreed -- good catch. In full, the code is (removing leading >>> whitespace, and putting it back onto single lines) >>> >>> msg <- gettextf("invalid non-character version specification 'x' (type: >>> %s)", typeof(x)) >>> if(tolower(Sys.getenv("_R_CHECK_STOP_ON_INVALID_NUMERIC_VERSION_INPUTS_") >>> != "false")) >>> stop(msg, domain = NA) >>> else >>> warning(msg, domain = NA, immediate. = TRUE) >>> >>> where msg is constant (but reflecting language settings via standard i18n) >>> and as you not the parentheses appear wrong. What was intended is likely >>> >>> msg <- gettextf("invalid non-character version specification 'x' (type: >>> %s)", typeof(x)) >>> if(tolower(Sys.getenv("_R_CHECK_STOP_ON_INVALID_NUMERIC_VERSION_INPUTS_")) >>> != "false") >>> stop(msg, domain = NA) >>> else >>> warning(msg, domain = NA, immediate. = TRUE) >>> >>> If you use bugzilla before and have a handle, maybe file a bug report with >>> this as patch athttps://bugs.r-project.org/ >>> >>> Dirk >>> >> ______________________________________________ >> 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 -- Hervé Pagès Bioconductor Core Team hpages.on.git...@gmail.com [[alternative HTML version deleted]] ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel