SnakeBridge.Introspector (SnakeBridge v0.16.0)

Copy Markdown View Source

Introspects Python functions using the standalone introspection script.

Summary

Functions

Introspects a single attribute on a module to determine its type.

Introspect an entire Python module to discover all public symbols.

Fetch module docstrings without introspecting symbols.

Types

function_name()

@type function_name() :: atom() | String.t()

Functions

introspect(library, functions)

@spec introspect(SnakeBridge.Config.Library.t() | map(), [function_name()]) ::
  {:ok, map()} | {:error, term()}

introspect(library, functions, python_module)

@spec introspect(
  SnakeBridge.Config.Library.t() | map(),
  [function_name()],
  String.t() | nil
) ::
  {:ok, map()} | {:error, term()}

introspect_attribute(module_path, attr_name, opts \\ [])

@spec introspect_attribute(String.t() | atom(), String.t() | atom(), keyword()) ::
  {:ok, map()} | {:error, term()}

Introspects a single attribute on a module to determine its type.

introspect_batch(libs_and_functions)

@spec introspect_batch([{SnakeBridge.Config.Library.t() | map(), String.t(), list()}]) ::
  [
    {SnakeBridge.Config.Library.t() | map(), {:ok, list()} | {:error, term()},
     String.t()}
  ]

introspect_module(library, opts \\ [])

@spec introspect_module(
  SnakeBridge.Config.Library.t() | map(),
  keyword()
) :: {:ok, map()} | {:error, term()}

Introspect an entire Python module to discover all public symbols.

This is used when generate: :all is specified for a library. Unlike introspect/2 which only inspects specific symbols, this function discovers all public functions, classes, and attributes.

Options

  • :submodules - List of submodule names to also introspect (e.g., ["linalg", "fft"])
  • :flat - If true, use flat format (v2.0); otherwise use namespaced format (v2.1)

Examples

{:ok, result} = Introspector.introspect_module(library)
{:ok, result} = Introspector.introspect_module(library, submodules: ["linalg"])

introspect_module_docs(library, modules)

@spec introspect_module_docs(SnakeBridge.Config.Library.t() | map(), [String.t()]) ::
  {:ok, list()} | {:error, term()}

Fetch module docstrings without introspecting symbols.