Я использую reticulate, чтобы обернуть библиотеку python для использования в R. В этой библиотеке много классов, поэтому я пытаюсь найти наилучший способ легко обернуть их, не написав много шаблонного кода.
Пакет scaffolder предоставляет такие методы, как custom_scaffold_py_function_wrapper
, для создания пользовательских оболочек для python функций. Но код оболочки basi c, сгенерированный с помощью этой функции, очень минимален, и информация о параметрах кажется отсутствующей.
Пример, если я попытаюсь обернуть функцию read
из библиотеки python os
следующим образом:
> library(reticulate)
> library(scaffolder)
> os = import("os")
> custom_scaffold_py_function_wrapper("os$read")
#' @title read
#'
#' @description Read from a file descriptor. Returns a bytes object.
#'
#' @details
#'
#'
#' @export
read <- function() {
python_function_result <- os$read(
)
}
Параметры функции не извлекаются, что, я думаю, связано с тем, что скаффолдер по умолчанию использует py_function_docs
сетки для анализа параметров, и здесь отображается NULL.
> py_function_docs("os$read")
$name
[1] "read"
$qualified_name
[1] "os$read"
$description
[1] "Read from a file descriptor. Returns a bytes object."
$details
[1] ""
$signature
[1] "read()"
$parameters
NULL
$sections
list()
$returns
NULL
Пожалуйста предлагать способы создания более богатого кода оболочки.
Есть ли способ обернуть класс python как класс R6, содержащий все его функции?