Proyectos

pvv

Decorador minimal en Python para validar tipos en tiempo de ejecución a partir de type hints

pvv es una utilidad ligera para Python que añade validación en tiempo de ejecución de argumentos usando type hints, con un diseño deliberadamente minimalista: cero dependencias, una API pequeña y comportamiento predecible. Está pensada para escenarios donde necesitas una capa adicional de seguridad en código Python dinámico—sin incorporar frameworks pesados de validación.

#Por qué pvv

Los type hints mejoran la legibilidad y el soporte de herramientas, pero no se aplican en tiempo de ejecución. En sistemas reales (pipelines de datos, integraciones, APIs, librerías internas), los errores de tipo pueden aparecer tarde y ser costosos de depurar.

pvv busca un punto intermedio pragmático:

  • mantener la ergonomía de Python
  • aplicar tipos donde aporta valor
  • minimizar complejidad y sobrecarga

#Qué hace

pvv proporciona un único decorador, validate, con dos modos:

  • Validar todos los parámetros anotados por defecto
  • Validar un subconjunto de parámetros por nombre para mayor control

Si un argumento no coincide con el tipo anotado, pvv lanza un TypeError. Si la configuración del decorador es incorrecta (por ejemplo, nombres de parámetros que no son strings), lanza un ValidatorError.

#Características principales

  • Cero dependencias (Python nativo)
  • API mínima (decorador validate)
  • Ignora parámetros sin anotación en lugar de inferir
  • Comportamiento determinista basado en comprobaciones simples

#Instalación

pip install pvv

#Uso

Validar todos los parámetros:

from pvv import validate
 
@validate
def function(a: str, b: int, c):
    ...

Validar solo algunos parámetros:

from pvv import validate
 
@validate("a", "c")
def function(a: str, b: int, c: bool | None):
    ...

#Limitaciones (intencionadas)

pvv mantiene la validación estricta y simple:

  • Solo funciona con anotaciones que puedan verificarse mediante comprobaciones de clase/instancia (lógica tipo isinstance).
  • Los parámetros sin type hints se ignoran y no se validan.

Este enfoque reduce complejidad y mantiene el comportamiento claro y predecible.

Siguiente proyecto

Una Perspectiva Algorítmica a la Incompletitud de las Matemáticas