Pysertive : Toolkit Desain Python dengan Kontrak (DBC) Asertif
Pysive adalah perpustakaan Python yang menyediakan dekorator untuk mengimplementasikan prinsip desain berdasarkan kontrak (DBC). Ini menyederhanakan penegakan prasyarat, postcondition, dan invarian dalam kode Anda. Pysive bertujuan untuk menjadi alat yang ampuh untuk memastikan perilaku dan kendala kode, mempromosikan pengembangan perangkat lunak yang aman, dapat dipelihara, dan kuat di Python.
Hal -hal yang pysive lakukan dengan baik:
Pysertive dirancang dengan kesederhanaan dan fleksibilitas dalam pikiran, memungkinkan Anda untuk dengan mudah mengintegrasikan pemeriksaan kontrak yang ketat ke dalam kode Python Anda, yang membantu dalam men -debug dan pemeliharaan sistem yang kompleks.
Untuk menginstal Pysive, cukup gunakan PIP:
pip install pysertiveInilah cara untuk memulai dengan pysertive dengan cepat:
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 Pastikan input ke fungsi Anda valid:
@ 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 } " )Validasi output setelah fungsi Anda dijalankan:
@ post_condition ( lambda result : result > 0 , exception_type = AssertionError , message = "Profit must be positive" )
def calculate_profit ( revenue , costs ):
return revenue - costsMenegakkan negara kelas tetap konsisten:
@ 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 Untuk contoh yang lebih rinci tentang cara menggunakan pysive, lihat file examples.py di repositori. File ini berisi contoh cara menggunakan prasyarat, postconditions, dan invarian dalam kode Python Anda.
Kontribusi dipersilakan! Jika Anda ingin berkontribusi, silakan periksa panduan yang berkontribusi, dan jangan ragu untuk membuka masalah atau permintaan tarik.
Pysive dirilis di bawah lisensi MIT. Lihat file lisensi untuk lebih jelasnya.
Pergi ke atas