pycontracts