GuíaBásico
Guía del Toolchain Moderno de Python
El toolchain de un proyecto Python —qué intérprete lo corre, dónde viven las dependencias, quién revisa el estilo y los tipos, quién construye y publica el paquete— se decide una sola vez y se paga todos los días. Esta guía te lleva a operar ese toolchain con las herramientas que la industria adoptó en 2026: `uv` para intérpretes, entornos y dependencias con lockfile reproducible; Ruff como linter y formateador único que reemplaza a flake8, isort, pyupgrade y black; un verificador de tipos (mypy, pyright o ty) integrado a `pyproject.toml`; automatización con hooks de pre-commit y GitHub Actions; y empaquetado y publicación en PyPI con trusted publishing. El diferencial no es la lista de comandos, sino el criterio: cada herramienta se presenta con su argumento a favor y su objeción más seria, incluyendo cuándo NO conviene adoptarla y cómo evaluar la salud de gobernanza de un proyecto open source antes de apostarle tu stack. Todo el recorrido construye un solo proyecto —`pkgpeek`, una CLI que consulta PyPI— que termina publicado desde CI con nueve entregables verificables y un documento de decisiones que defiende cada elección.
- 48
- lecciones
- 6
- módulos
- Inglés · Español
- disponible en
- Sí
- certificado
- Gratis
- acceso
Resultados
Lo que vas a poder hacer
- Instalar y fijar cualquier versión de Python con `uv python install`, sin pyenv ni conda, y crear un proyecto con `pyproject.toml` reproducible en otra máquina
- Manejar el ciclo completo de dependencias con `uv`: agregar y quitar paquetes, agrupar dev/prod, resolver conflictos, y reproducir un entorno idéntico con `uv sync --frozen` o `--locked`
- Configurar Ruff como linter y formateador único, justificar el conjunto de reglas elegido y migrar un repositorio de black + flake8 + isort sin cambiar el comportamiento del código
- Anotar código con sintaxis moderna (`list[str]`, `str | None`, `Protocol`, `TypedDict`) y llevar un módulo real a modo estricto con mypy, pyright o ty
- Distinguir con precisión verificación estática de validación en runtime, y saber por qué un servicio que recibe datos externos necesita ambas
- Automatizar el toolchain con hooks de pre-commit rápidos y un workflow de GitHub Actions que corre lint, tipos y pruebas en varias versiones de Python
- Actualizar dependencias con una política definida, auditar la cadena de suministro y construir imágenes Docker reproducibles desde el lockfile
- Construir y publicar un paquete en PyPI con `uv build` y `uv publish`, versionado semántico y publicación automatizada por CI con OIDC (sin tokens de larga vida)
- Distribuir una herramienta de línea de comandos instalable con `uvx`, usando entry points en `[project.scripts]`
- Leer la salud de gobernanza de una herramienta antes de adoptarla (licencia, bus factor, cadencia de releases) y defender con criterio propio cuándo NO conviene usar este stack
Antes de empezar
Qué necesitas traer
Es para ti si...
- Desarrolladores Python de nivel intermedio que ya escriben funciones, clases y módulos propios, y quieren pasar de "uso pip porque me lo dijeron" a defender cada herramienta de su stack
- Equipos que heredan proyectos con `requirements.txt`, `setup.py`, poetry o conda y necesitan un criterio claro para decidir si migrar a `uv` y Ruff
- Devs cansados de discutir estilo de código en cada pull request y que quieren automatizar esa capa para enfocar la revisión en lo que importa
- Personas preparando entrevistas técnicas donde se pregunta por reproducibilidad de entornos, tipado gradual o cómo evaluar la salud de una dependencia
- Cualquiera que nunca publicó un paquete propio en PyPI y quiere hacerlo con CI, versionado y publicación segura de punta a punta
Requisitos y materiales
- Python a nivel intermedio: escribir funciones, clases y módulos propios, entender imports y haber instalado paquetes con pip alguna vez
- Manejo básico de terminal (navegar, ejecutar comandos, variables de entorno) y de git (clonar, commitear, abrir un pull request)
- Una cuenta de GitHub
- No se requiere experiencia previa con poetry, conda, pyenv, Docker ni haber publicado nunca un paquete: todo se explica desde cero
Contenido
El temario, módulo por módulo
Abre cualquiera para ver sus lecciones.
- 1. Introducción: el toolchain es una decisión de ingeniería
- 2. Qué se rompe de verdad en un proyecto de Python
- 3. Intérpretes, entornos y dependencias: los tres problemas
- 4. El mapa fragmentado: pip, venv, pyenv, pipx, poetry, conda
- 5. pyproject.toml: el estándar que unificó todo
- 6. Instalar uv y manejar versiones de Python
- 7. Tu primer proyecto con uv
- 8. Mini-proyecto: rescatar un proyecto legacy
- 1. Introducción: reproducible o no existe
- 2. Agregar y quitar dependencias
- 3. El lockfile y la reproducibilidad real
- 4. Cómo se resuelve un conflicto de dependencias
- 5. Extras, grupos y proyectos con varios paquetes
- 6. Ejecutar herramientas y scripts sin instalar nada
- 7. Cuándo uv NO es la respuesta
- 8. Mini-proyecto: un entorno reproducible bit a bit
- 1. Introducción: dejar de discutir estilo en los PRs
- 2. Linting y formateo: dos trabajos distintos
- 3. La herramienta que reemplazó a cinco
- 4. Formatear con ruff format
- 5. Elegir y entender las reglas
- 6. Autofix sin romper nada
- 7. Configurar Ruff y conocer sus límites
- 8. Mini-proyecto: migrar un repo a Ruff
- 1. Introducción: los errores que el linter no ve
- 2. Qué te compra y qué no te compra un type checker
- 3. Anotar código real con sintaxis moderna
- 4. mypy, pyright y ty: comparación honesta
- 5. Ejecutar el verificador con uv
- 6. Adoptar tipos en un código heredado
- 7. Tipos estáticos frente a validación en runtime
- 8. Mini-proyecto: llevar un módulo a modo estricto
- 1. Introducción: que el toolchain se aplique solo
- 2. Ejecutar tu suite de pruebas con uv
- 3. Probar en varias versiones de Python
- 4. Hooks de pre-commit que no estorban
- 5. GitHub Actions con uv
- 6. Actualizar dependencias y cuidar la cadena de suministro
- 7. Builds reproducibles en Docker
- 8. Mini-proyecto: un pipeline de CI completo
- 1. Introducción: de proyecto propio a paquete instalable
- 2. Qué significa realmente empaquetar en Python
- 3. Construir tu paquete con uv build
- 4. Versionado y changelog
- 5. Publicar en PyPI
- 6. Distribuir herramientas de línea de comandos
- 7. Leer la salud de gobernanza de una herramienta
- 8. Mini-proyecto: publica tu primer paquete
Dudas frecuentes
Lo que suele preguntarse
Sin límite. Es una guía gratuita: entras cuando quieras, las veces que quieras.
No. Los módulos están ordenados de menos a más, pero puedes saltar al que necesites. Tu progreso se guarda por lección.
Lo que haga falta está en «Qué necesitas traer», arriba. Si no aparece nada ahí, puedes empezar desde cero.
En el grupo de WhatsApp del Club, y cada quince días hay un live con un instructor donde se resuelven dudas en vivo.
Sí. Al terminar todas las lecciones se emite automáticamente, con un código verificable que puedes compartir en LinkedIn.
Empieza cuando quieras
Lo que dicen los estudiantes
Estas reseñas son de estudiantes inscritos que completaron al menos el 50% del curso. Moderamos las reseñas solo por motivos de contenido (spam, lenguaje ofensivo, datos personales), nunca por ser críticas o negativas.
Aún no hay reseñas aprobadas.
¡Sé el primero en compartir tu experiencia!