SnakeBridge.Config (SnakeBridge v0.2.4)

View Source

Configuration schema for SnakeBridge integrations.

Defines the structure for declarative Python library integration configs.

Example

config = %SnakeBridge.Config{
  python_module: "dspy",
  version: "2.5.0",
  introspection: %{
    enabled: true,
    cache_path: "priv/snakebridge/schemas/dspy.json"
  },
  classes: [
    %{
      python_path: "dspy.Predict",
      elixir_module: DSPy.Predict,
      constructor: %{args: %{signature: {:required, :string}}},
      methods: [%{name: "__call__", elixir_name: :call}]
    }
  ]
}

{:ok, validated} = SnakeBridge.Config.validate(config)

Summary

Functions

Compose configuration with extends and mixins.

Create config from map.

Compute content hash of configuration.

Pretty print configuration.

Convert config to Elixir code string.

Convert config to map.

Validate a configuration.

Types

t()

@type t() :: %SnakeBridge.Config{
  bidirectional_tools: map(),
  caching: map(),
  classes: [map()],
  compilation_mode: :auto | :compile_time | :runtime,
  description: String.t() | nil,
  extends: t() | nil,
  functions: [map()],
  grpc: map(),
  introspection: map(),
  mixins: [map()],
  python_module: String.t() | nil,
  telemetry: map(),
  timeout: non_neg_integer() | nil,
  version: String.t() | nil
}

Functions

compose(config)

@spec compose(t()) :: t()

Compose configuration with extends and mixins.

Applies inheritance and mixin patterns to build final configuration.

from_map(map)

@spec from_map(map()) :: {:ok, t()} | {:error, term()}

Create config from map.

hash(config)

@spec hash(t()) :: String.t()

Compute content hash of configuration.

pretty_print(config)

@spec pretty_print(t()) :: String.t()

Pretty print configuration.

to_elixir_code(config)

@spec to_elixir_code(t()) :: String.t()

Convert config to Elixir code string.

to_map(config)

@spec to_map(t()) :: map()

Convert config to map.

validate(config)

@spec validate(t()) :: {:ok, t()} | {:error, [String.t()]}

Validate a configuration.

Returns {:ok, config} if valid, or {:error, errors} with a list of error messages.