Hadley Wickham
2023-Aug-10 13:46 UTC
[Rd] Improving user-friendliness of S4 dispatch failure when mis-naming arguments?
Hi Michael, I can't help with S4, but I can help to make sure this isn't a problem with S7. What do you think of the current error message? Do you see anything obvious we could do to improve? library(S7) dbGetQuery <- new_generic("dbGetQuery", c("conn", "statement")) dbGetQuery(connection = NULL, query = NULL) #> Error: Can't find method for generic `dbGetQuery(conn, statement)`: #> - conn : MISSING #> - statement: MISSING Hadley On Wed, Aug 9, 2023 at 10:02?PM Michael Chirico via R-devel <r-devel at r-project.org> wrote:> > I fielded a debugging request from a non-expert user today. At root > was running the following: > > dbGetQuery(connection = conn, query = query) > > The problem is that they've named the arguments incorrectly -- it > should have been [1]: > > dbGetQuery(conn = conn, statement = query) > > The problem is that the error message "looks" highly confusing to the > untrained eye: > > Error in (function (classes, fdef, mtable) : unable to find an > inherited method for function ?dbGetQuery? for signature ?"missing", > "missing"? > > In retrospect, of course, this makes sense -- the mis-named arguments > are getting picked up by '...', leaving the required arguments > missing. > > But I was left wondering how we could help users right their own ship here. > > Would it help to mention the argument names? To include some code > checking for weird combinations of missing arguments? Any other > suggestions? > > Mike C > > [1] https://github.com/r-dbi/DBI/blob/97934c885749dd87a6beb10e8ccb6a5ebea3675e/R/dbGetQuery.R#L62-L64 > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel-- http://hadley.nz
Michael Chirico
2023-Aug-10 16:59 UTC
[Rd] Improving user-friendliness of S4 dispatch failure when mis-naming arguments?
I forwarded that along to the original reporter with positive feedback -- including the argument names is definitely a big help for cuing what exactly is missing. Would a patch to do something similar for S4 be useful? On Thu, Aug 10, 2023 at 6:46?AM Hadley Wickham <h.wickham at gmail.com> wrote:> > Hi Michael, > > I can't help with S4, but I can help to make sure this isn't a problem > with S7. What do you think of the current error message? Do you see > anything obvious we could do to improve? > > library(S7) > > dbGetQuery <- new_generic("dbGetQuery", c("conn", "statement")) > dbGetQuery(connection = NULL, query = NULL) > #> Error: Can't find method for generic `dbGetQuery(conn, statement)`: > #> - conn : MISSING > #> - statement: MISSING > > Hadley > > On Wed, Aug 9, 2023 at 10:02?PM Michael Chirico via R-devel > <r-devel at r-project.org> wrote: > > > > I fielded a debugging request from a non-expert user today. At root > > was running the following: > > > > dbGetQuery(connection = conn, query = query) > > > > The problem is that they've named the arguments incorrectly -- it > > should have been [1]: > > > > dbGetQuery(conn = conn, statement = query) > > > > The problem is that the error message "looks" highly confusing to the > > untrained eye: > > > > Error in (function (classes, fdef, mtable) : unable to find an > > inherited method for function ?dbGetQuery? for signature ?"missing", > > "missing"? > > > > In retrospect, of course, this makes sense -- the mis-named arguments > > are getting picked up by '...', leaving the required arguments > > missing. > > > > But I was left wondering how we could help users right their own ship here. > > > > Would it help to mention the argument names? To include some code > > checking for weird combinations of missing arguments? Any other > > suggestions? > > > > Mike C > > > > [1] https://github.com/r-dbi/DBI/blob/97934c885749dd87a6beb10e8ccb6a5ebea3675e/R/dbGetQuery.R#L62-L64 > > > > ______________________________________________ > > R-devel at r-project.org mailing list > > https://stat.ethz.ch/mailman/listinfo/r-devel > > > > -- > http://hadley.nz