SnakeBridge.Introspector (SnakeBridge v0.9.0)

View Source

Introspects Python functions using the standalone introspection script.

Summary

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(), [function_name()]}
]) :: [
  {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"])