# `SnakeBridge.Introspector`
[🔗](https://github.com/nshkrdotcom/snakebridge/blob/v0.16.0/lib/snakebridge/introspector.ex#L1)

Introspects Python functions using the standalone introspection script.

# `function_name`

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

# `introspect`

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

# `introspect`

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

# `introspect_attribute`

```elixir
@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`

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

# `introspect_module`

```elixir
@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`

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

Fetch module docstrings without introspecting symbols.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
