Orientación de la Base de Código
Cómo leer un repositorio de servicios Python: estructura de carpetas, propiedad, convenciones y el camino más rápido desde la clonación hasta la navegación segura.
Busca en todas las páginas de la documentación
Cómo leer un repositorio de servicios Python: estructura de carpetas, propiedad, convenciones y el camino más rápido desde la clonación hasta la navegación segura.
service/
├── src/billing/ # paquete de la aplicación
├── tests/ # refleja la estructura de src
├── alembic/ # migraciones de DB (si se usa SQLAlchemy)
├── pyproject.toml # deps, configuración de ruff, pytest
├── uv.lock # resolución reproducible
├── docs/ # ADRs, onboarding, runbooks
└── .github/workflows/ # fuente de verdad de CICuándo recurrir a esto:
# Script de sesión de orientación (30-60 min autoguiado)
tree -L 2 src/ tests/
rg -l "router|Blueprint|urlpatterns" src/ # encontrar puntos de entrada HTTP
cat pyproject.toml | rg "name|requires-python|scripts"
cat docs/adr/0001-*.md 2>/dev/null || ls docs/
gh api repos/:owner/:repo/contents/CODEOWNERS 2>/dev/null || cat CODEOWNERS
uv run pytest --collect-only -q | head # ver módulos de pruebaRastrea una historia de usuario:
src/billing/api/routes/orders.py).services/order_service.py).repositories/order_repo.py).alembic/versions/).Lo que esto demuestra:
src/ separa el paquete importable de la raíz del repositorio.src - El paquete bajo src/<nombre>/ evita importaciones accidentales desde la raíz del repositorio en PYTHONPATH.pyproject.toml - Manifiesto único para metadatos, dependencias, configuración de herramientas (ruff, pytest, mypy).src - tests/billing/api/test_orders.py se mapea a src/billing/api/orders.py.CODEOWNERS solicita automáticamente a los expertos del dominio en las PRs.| Artefacto | Respuestas |
|---|---|
| README | Comandos de inicio rápido |
docs/onboarding.md | Trampas específicas del equipo |
| ADRs | Decisiones de framework y esquema |
| Flujo de CI | Puertas de calidad requeridas |
CONTRIBUTING.md | Reglas de PR y commit |
# Descubre la versión del paquete y los puntos de entrada programáticamente
import importlib.metadata as m
m.version("billing")
# console_scripts de pyproject [project.scripts]pyproject..env.example obsoleto. Solución: documentar el error en el primer clave faltante.docs/onboarding.md.| Alternativa | Usar Cuando | No Usar Cuando |
|---|---|---|
| Wiki de diagramas de arquitectura | Solo alto nivel | Diagrama obsoleto vs código |
pydeps / grafos de importación | Desenredar ciclos | Primera hora en el repositorio |
| IDE de búsqueda de código | Salto de símbolo | Aún no hay clonación local |
| Tour de emparejamiento | Legado complejo | Escala de incorporación autoservicio |
Leer el README raíz para la lista de paquetes; cd services/billing-api por servicio con su propio uv.lock.
Los equipos usan la capa services/ o el paquete de dominio; evitar manejadores de ruta "gordos"; buscar class *Service.
Comprobar Makefile / scripts/generate - no editar manualmente la salida del cliente OpenAPI.
Buscar settings o la inicialización del SDK de LaunchDarkly - las banderas ocultan rutas incompletas.
Seguir el submódulo git o libs/ del monorepo - tener en cuenta el proceso de actualización de versión separado.
Puede ser pre-migración de src - el README debería indicar el estado de la migración; preferir src/ para código nuevo.
CODEOWNERS en infra/ o etiqueta del equipo de plataforma en README.
Fecha en el nombre del archivo - si tiene más de 2 años, verificar que sigue siendo válida con un compañero.
Cada apps/* es un contexto delimitado - empezar en urls.py y models.py por aplicación.
rg "@app.task" src/ o lista de inclusión de celery.py.
src - arquitecturaVersiones de Stack: Esta página fue escrita para Python 3.14.0 (estable 3.14, mantenimiento 3.13), FastAPI 0.115+, Django 5.2, Flask 3.1, Pydantic 2, PyTorch 2.6+, pandas 2.2+, Polars 1.x, ruff 0.9+, y uv 0.6+.
Revisado por Chris St. John·Última actualización: 16 jul 2026