Skip to main content

Commenting sucks so let your code do it for you with Guava like preconditions that also actually do something.

Project description

Build Status

Commenting sucks so let your code do it for you with preconditions that actually do something.

Examples:

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyConditions-0.2.1.tar.gz (8.5 kB view details)

Uploaded Source

Built Distribution

pyConditions-0.2.1.macosx-10.9-intel.exe (70.7 kB view details)

Uploaded Source

File details

Details for the file pyConditions-0.2.1.tar.gz.

File metadata

File hashes

Hashes for pyConditions-0.2.1.tar.gz
Algorithm Hash digest
SHA256 93e379ea6cf3599cd16c496123b61b70ed15f4e14ad34f5e8d2e59532b52dd53
MD5 e0f48916aaec1c2d99fc61d5a6307f75
BLAKE2b-256 d01c8811b00ac18fa8373efb9c5ac1e1de296f9a79c931eba703b785278536c5

See more details on using hashes here.

File details

Details for the file pyConditions-0.2.1.macosx-10.9-intel.exe.

File metadata

File hashes

Hashes for pyConditions-0.2.1.macosx-10.9-intel.exe
Algorithm Hash digest
SHA256 4c30727254ebf13e7921f639480f93f833798fd4fb8220e1a93335bc5a94c5ee
MD5 99c277e670d35fad6a79046b90b82126
BLAKE2b-256 bed68b25885908b6751d0067390f794e24085d7e5951c4f124e643ff2cd5af0d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page