py_last_error: Get or (re)set the last Python error encountered.

View source: R/python.R

py_clear_last_errorR Documentation

Get or (re)set the last Python error encountered.

Description

Get or (re)set the last Python error encountered.

Usage

py_clear_last_error()

py_last_error(exception)

Arguments

exception

A python exception object. If provided, the provided exception is set as the last exception.

Value

For py_last_error(), NULL if no error has yet been encountered. Otherwise, a named list with entries:

  • "type": R string, name of the exception class.

  • "value": R string, formatted exception message.

  • "traceback": R character vector, the formatted python traceback,

  • "message": The full formatted raised exception, as it would be printed in Python. Includes the traceback, type, and value.

And attribute "exception", a 'python.builtin.Exception' object.

The named list has class "py_error", and has a default print method that is the equivalent of cat(py_last_error()$message).

Examples

## Not run: 
# run python code that might error,
# without modifying the user-visible python exception

safe_len <- function(x) {
  last_err <- py_last_error()
  tryCatch({
    # this might raise a python exception if x has no `__len__` method.
    import_builtins()$len(x)
  }, error = function(e) {
    # py_last_error() was overwritten, is now "no len method for 'object'"
    py_last_error(last_err) # restore previous exception
    -1L
  })
}

safe_len(py_eval("object"))

## End(Not run)


reticulate documentation built on Oct. 13, 2023, 1:08 a.m.