Pysertive : diseño de herramientas de pitón asertivo por contrato (DBC)
Pysertive es una biblioteca de Python que proporciona decoradores para implementar los principios de diseño por contrato (DBC). Simplifica la aplicación de condiciones previas, poscondiciones e invariantes en su código. Pysertive tiene como objetivo ser una herramienta poderosa para garantizar el comportamiento y las limitaciones del código, promover el desarrollo de software seguro, mantenible y robusto en Python.
Las cosas que Pysertive hace bien:
Pysertive está diseñado con la simplicidad y la flexibilidad en mente, lo que le permite integrar fácilmente las rigurosas controles de contratos en su código Python, lo que ayuda a depurar y mantener sistemas complejos.
Para instalar Pysertive, simplemente use PIP:
pip install pysertiveAquí le mostramos cómo comenzar rápidamente con Pysertive:
from pysertive import pre_condition , post_condition , invariant
@ pre_condition ( lambda x : x > 0 , exception_type = ValueError , message = "Input must be positive" )
def sqrt ( x ):
return x ** 0.5
@ post_condition ( lambda result : result != None , exception_type = AssertionError , message = "Result cannot be None" )
def fetch_data ():
return { "data" : "Here is your data" }
@ invariant ( lambda self : self . balance >= 0 , exception_type = RuntimeError , message = "Insufficient funds" )
class BankAccount :
def __init__ ( self , balance ):
self . balance = balance
def deposit ( self , amount ):
self . balance += amount
def withdraw ( self , amount ):
self . balance -= amount # No need to manually check for negative balance Asegúrese de que las entradas a sus funciones sean válidas:
@ pre_condition ( lambda age : age >= 18 , exception_type = ValueError , message = "Must be 18 or older" )
def sign_contract ( age ):
print ( f"Contract signed by individual aged { age } " )Validar salidas después de que se ejecute sus funciones:
@ post_condition ( lambda result : result > 0 , exception_type = AssertionError , message = "Profit must be positive" )
def calculate_profit ( revenue , costs ):
return revenue - costsHacer cumplir los estados de clase siguen siendo consistentes:
@ invariant ( lambda self : self . inventory_count >= 0 , exception_type = RuntimeError , message = "Inventory count cannot be negative" )
class Warehouse :
def __init__ ( self , inventory_count ):
self . inventory_count = inventory_count
def add_stock ( self , number ):
self . inventory_count += number
def remove_stock ( self , number ):
self . inventory_count -= number Para ver ejemplos más detallados de cómo usar Pysertive, consulte el archivo examples.py en el repositorio. Este archivo contiene ejemplos de cómo usar condiciones previas, poscondiciones e invariantes en su código Python.
¡Las contribuciones son bienvenidas! Si desea contribuir, consulte la guía contribuyente y no dude en abrir un problema o una solicitud de extracción.
Pysertive se libera bajo la licencia MIT. Consulte el archivo de licencia para obtener más detalles.
Ir a la cima