Commenting sucks so let your code do it for you with Guava like preconditions that also actually do something.
Commenting sucks so let your code do it for you with preconditions that actually do something.
from pyconditions.pre import * @Between( "b", 1, 10 ) def divideAbyB( a, b ) return a / b @NotNone( "a" ) @Between( "a", "a", "n" ) @NotNone( "b" ) @Between( "b", "n", "z" ) def concat( a, b ): return a + b @Custom( "a", lambda x: x % 2 == 0 ) @Custom( "b", lambda x: not x % 2 == 0 ) def evenOdd( a, b ): return a * b
The documenting is there with the code it self, and if you violate the preconditions then a PyCondition exception is thrown with a much nicer error message than broken code.
evenOdd( 3, 1 )
pyconditions.exceptions.PyCondition: 3 did not pass the custom condition for parameter 'a' in function evenOdd
How about some postconditions?
from pyconditions.post import * @NotNone() def test( a ): return a @Custom( lambda a: a % 2 == 0 ) def even( a ): return a
test( None )
pyconditions.exception.PyCondition: The return value for uber.awesome.project.test was None
You can also mix the two as well.
from pyconditions import pre from pyconditions import post @pre.Custom( "a", lamda a: a % 2 == 0 ) @post.Custom( lambda a: a % 2 == 0 ) def superSafeEven( a ): return a
Have conditions you want added? Open a PR with code. Have an issue? Open a PR with fixed code.
Release history Release notifications
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
|Filename, size & hash SHA256 hash help||File type||Python version||Upload date|
|pyConditions-0.2.1.macosx-10.9-intel.exe (70.7 kB) Copy SHA256 hash SHA256||Windows Installer||any||Mar 21, 2014|
|pyConditions-0.2.1.tar.gz (8.5 kB) Copy SHA256 hash SHA256||Source||None||Mar 21, 2014|