r-lib / rlang

Low-level API for programming with R
https://rlang.r-lib.org
Other
489 stars 131 forks source link

Allow reticulate errors in cnd_type() (fixes #1664) #1693

Open gergness opened 4 months ago

gergness commented 4 months ago

Not sure if this is the right way to fix, but was useful enough for me for that I thought I'd share.

reticulate stores it's conditions with the right classes to work with rlang, but uses an environment instead of a list.

err <- try(reticulate::py_run_string("oops"), silent = TRUE) |> attr("condition")

is.environment(err)
#> [1] TRUE
class(err)
#> [1] "python.builtin.NameError"     "python.builtin.Exception"    
#> [3] "python.builtin.BaseException" "python.builtin.object"       
#> [5] "error"                        "condition"

Created on 2024-02-22 with reprex v2.1.0