Ir al contenido

Comenzando con PyGo

Esta guía te ayudará a configurar PyGo y construir tu primera aplicación.

  • Go 1.22+ — para el runtime de Go y el transpiler
  • Python 3.10+ — para el runtime de Python
  • Módulo venv de Python — para entornos virtuales

Nota: pnpm NO es necesario para PyGo. PyGo usa Go y Python de forma nativa. El sitio de documentación usa pnpm, pero el framework en sí usa go build y la biblioteca estándar de Python.

Opción 1: Script de Instalación Universal (Recomendado)

Sección titulada «Opción 1: Script de Instalación Universal (Recomendado)»
Terminal window
# Instalar desde GitHub releases (Linux/macOS)
curl -fsSL https://pygo.dev/install.sh | bash
# Agregar al PATH
export PATH="$HOME/.local/bin:$PATH"

Opción 2: Desde el código fuente (desarrollo)

Sección titulada «Opción 2: Desde el código fuente (desarrollo)»
Terminal window
git clone https://github.com/Ander-Labs/pygo.git
cd pygo
go build -o pygo ./cmd/pygo
sudo mv pygo /usr/local/bin/

Opción 3: Desde GitHub Releases (cuando esté disponible)

Sección titulada «Opción 3: Desde GitHub Releases (cuando esté disponible)»
Terminal window
# Descargar el último release (Linux)
curl -L https://github.com/Ander-Labs/pygo/releases/latest/download/pygo-linux-amd64 -o /usr/local/bin/pygo
chmod +x /usr/local/bin/pygo

Nota: El paquete PyPI (pip install pygo-framework) aún no está disponible. Usa la instalación desde el código fuente por ahora.

Terminal window
pygo version

Salida esperada:

PyGo Framework v1.0.0
Go runtime: go1.22+
Python runtime: 3.10+
Terminal window
pygo new myapp
cd myapp
pygo dev

Esto crea un nuevo proyecto PyGo con la siguiente estructura:

myapp/
├── app/
│ ├── web/ # Archivos DSL .pgo (modelos, handlers, rutas)
│ ├── templates/ # Plantillas HTML (HTMX)
│ ├── core/ # Módulos runtime Python
│ └── pygo.toml # Configuración del proyecto
├── install.sh # Instalador de dependencias Python
└── README.md

El DSL .pgo es isomórfico a Python — misma indentación, misma sintaxis. PyGo transpila archivos .pgo en:

  • gen_py.py — Código Python 1:1 (sintaxis idéntica)
  • gen_go.go — Código Go mecánico (desde AST visitor)

Ejemplo web/app.pgo:

enum Status:
active
inactive
pending
model User:
id: UUID
email: Email
name: String
status: Status
tags: Array[String]
metadata: Map[String]String
created: DateTime
updated: DateTime?
handler greet:
greet(name: String) -> String:
return f"Hello, {name}!"
route GET /hello/:name -> greet

Luego transpila y ejecuta:

Terminal window
# Transpilar archivos .pgo a gen_py.py y gen_go.go
pygo gen web/app.pgo
# Iniciar servidor de desarrollo (transpile + supervisor + servidor HTTP)
pygo dev

Abre http://localhost:8080/hello/World en tu navegador.

Comando Descripción
pygo new <name> Crear un nuevo proyecto PyGo
pygo dev Transpilar e iniciar servidor de desarrollo
pygo build --embed-python Construir para producción con Python embebido
pygo gen [file] Transpilar archivos .pgo
pygo test Ejecutar tests