Обертывание python функций класса в R с использованием сетки и скаффолдера - PullRequest
0 голосов
/ 26 мая 2020

Я использую 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, содержащий все его функции?

...