Skip to content

Latest commit

 

History

History
61 lines (43 loc) · 1.62 KB

File metadata and controls

61 lines (43 loc) · 1.62 KB

Python para pipelines: consulta rápida

Prefira funções pequenas, entradas explícitas e validação na borda do pipeline.

Ambiente

python --version
python -m venv .venv
python -m pip install --upgrade pip
python -m pip install -r requirements.txt
python -m pytest -q

No PowerShell, ative o ambiente com .venv\Scripts\Activate.ps1. No Bash, use source .venv/bin/activate.

Leitura e validação

from pathlib import Path
import csv


def read_rows(path: Path) -> list[dict[str, str]]:
    with path.open(encoding="utf-8", newline="") as source:
        return list(csv.DictReader(source))


def require_columns(rows: list[dict[str, str]], required: set[str]) -> None:
    available = set(rows[0]) if rows else set()
    missing = required - available
    if missing:
        raise ValueError(f"Colunas ausentes: {sorted(missing)}")

Erros e logs

import logging

logger = logging.getLogger(__name__)

try:
    process_batch()
except ValueError as exc:
    logger.error("Lote inválido: %s", exc)
    raise

Não capture Exception sem contexto. Preserve a causa e faça o processo retornar código de saída diferente de zero.

Checklist de pipeline

  • use pathlib.Path para caminhos;
  • mantenha credenciais fora do código;
  • separe leitura, validação, transformação e escrita;
  • grave saída de forma idempotente;
  • teste lote vazio, schema inválido, duplicidade e falha parcial;
  • registre contagens de entrada, válidos, rejeitados e saída.

Veja também: AWS CLI, Lambda e Módulo 06.