Packages
snakepit
0.8.2
0.13.0
0.12.0
0.11.1
0.11.0
0.10.1
0.10.0
0.9.1
0.9.0
0.8.9
0.8.8
0.8.7
0.8.6
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.7
0.7.6
0.7.5
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.11
0.6.10
0.6.9
0.6.8
0.6.7
0.6.6
0.6.5
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.1
0.5.0
0.4.3
0.4.2
0.4.1
0.4.0
0.3.3
0.3.2
0.3.1
0.3.0
0.2.1
0.2.0
0.1.2
0.1.1
0.1.0
High-performance pooler and session manager for external language integrations. Supports Python, Node.js, Ruby, and more with gRPC streaming, session management, and production-ready process cleanup.
Current section
Files
Jump to
Current section
Files
lib/mix/tasks/snakepit.gen.adapter.ex
defmodule Mix.Tasks.Snakepit.Gen.Adapter do
@moduledoc """
Generate a Python adapter skeleton under priv/python.
"""
use Mix.Task
@shortdoc "Generate a Python adapter skeleton"
@impl true
def run(args) do
name =
case args do
[value | _] -> value
_ -> Mix.raise("Usage: mix snakepit.gen.adapter <adapter_name>")
end
adapter_dir = Path.join(["priv", "python", name])
handler_dir = Path.join([adapter_dir, "handlers"])
adapter_file = Path.join(adapter_dir, "adapter.py")
init_file = Path.join(adapter_dir, "__init__.py")
handler_init_file = Path.join(handler_dir, "__init__.py")
if File.exists?(adapter_dir) do
Mix.raise("Adapter directory already exists: #{adapter_dir}")
end
File.mkdir_p!(handler_dir)
File.write!(init_file, "")
File.write!(handler_init_file, "")
File.write!(adapter_file, adapter_template(name))
Mix.shell().info("✅ Adapter created at #{adapter_dir}")
Mix.shell().info("Configure it with:")
Mix.shell().info(~s( adapter_args: ["--adapter", "#{name}.adapter.#{adapter_class(name)}"]))
end
defp adapter_class(name) do
name
|> Macro.camelize()
end
defp adapter_template(name) do
class_name = adapter_class(name)
"""
from snakepit_bridge.adapters.base import BaseAdapter, tool
class #{class_name}(BaseAdapter):
def __init__(self):
super().__init__()
@tool(description="Example tool - replace with your own")
def example(self, payload: dict) -> dict:
return {"ok": True, "payload": payload}
"""
end
end