Pysertive : ASSERVIVIVIVIVIVIVIVE Python Design by Contract (DBC) Toolkit
O Pysertive é uma biblioteca Python que fornece decoradores para implementar os princípios do design por contrato (DBC). Ele simplifica a aplicação de pré -condições, pós -condicionas e invariantes em seu código. A Pysertive pretende ser uma ferramenta poderosa para garantir o comportamento e as restrições do código, promovendo o desenvolvimento de software seguro, sustentável e robusto no Python.
As coisas que Pysertive fazem bem:
O Pysertive foi projetado com simplicidade e flexibilidade em mente, permitindo que você integre facilmente verificações rigorosas de contratos ao seu código Python, o que ajuda a depurar e manter sistemas complexos.
Para instalar Pysertive, basta usar o PIP:
pip install pysertiveVeja como começar rapidamente com o 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 Verifique se as entradas para suas funções são 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 saídas após suas funções executar:
@ post_condition ( lambda result : result > 0 , exception_type = AssertionError , message = "Profit must be positive" )
def calculate_profit ( revenue , costs ):
return revenue - costsAplicar os estados da classe permanecem 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 obter exemplos mais detalhados de como usar Pysertive, consulte o arquivo examples.py no repositório. Este arquivo contém exemplos de como usar pré -condições, pós -condições e invariantes no seu código Python.
As contribuições são bem -vindas! Se você quiser contribuir, consulte o guia contribuinte e sinta -se à vontade para abrir um problema ou uma solicitação de tração.
O Pysertive é liberado sob a licença do MIT. Consulte o arquivo de licença para obter mais detalhes.
Vá para o topo