Packages
snakepit
0.9.0
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.doctor.ex
defmodule Mix.Tasks.Snakepit.Doctor do
@moduledoc """
Diagnose the local Python and gRPC tooling required by Snakepit.
"""
use Mix.Task
@shortdoc "Run environment diagnostics for the Python bridge"
@impl true
def run(_args) do
case Snakepit.EnvDoctor.run() do
{:ok, results} ->
Enum.each(results, &print_result/1)
Mix.shell().info("✅ Snakepit environment is ready")
:ok
{:error, results} ->
Enum.each(results, &print_result/1)
Mix.raise("Snakepit environment checks failed. See messages above for remediation steps.")
end
end
defp print_result(%{status: :ok, name: name, message: message}) do
Mix.shell().info("✅ [#{format_name(name)}] #{message}")
end
defp print_result(%{status: :warning, name: name, message: message}) do
Mix.shell().info("⚠️ [#{format_name(name)}] #{message}")
end
defp print_result(%{status: :error, name: name, message: message}) do
Mix.shell().error("❌ [#{format_name(name)}] #{message}")
end
defp format_name(name) do
name
|> Atom.to_string()
|> String.replace("_", " ")
end
end