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

Guava like precondition enforcing for Python.

Has been tested against:

  • 2.6

  • 2.7

  • 3.2

  • 3.3

  • pypy

Decorate functions with preconditions so that your code documents itself and at the same time removes the boilerplate code that is typically required when checking parameters.

An Example:

def divideAby1or10( a, b ):
    if not ( 1 <= b <= 10 ):
        <raise some error>
    else:
        return a / b

Simply becomes the following:

from pyconditions.pre import Pre
pre = Pre()

@pre.between( "b", 1, 10 )
def divideAbyB( a, b )
  return a / b

In the above example the precondition pre.between ensures that the b variable is between (1, 10) inclusive. If it is not then a PyCondition exception is thrown with the error message detailing what went wrong.

More Examples:

def divideAby1or10( a, b ):
    if not ( 1 <= b <= 10 ):
        <raise some error>
    else:
        return a / b

Simply becomes the following:

from pyconditions.pre import Between

@Between( "b", 1, 10 )
def divideAbyB( a, b )
  return a / b

In the above example the precondition pre.between ensures that the b variable is between (1, 10) inclusive. If it is not then a PyCondition exception is thrown with the error message detailing what went wrong.

More Examples:

from pyconditions.pre import Between, NotNone
pre = Pre()

@NotNone( "a" )
@Between( "a", "a", "n" )
@NotNone( "b" )
@Between( "b", "n", "z" )
def concat( a, b ):
  return a + b

The above ensures that the variables a and b are never None and that a is between ( ?a?, ?n? ) inclusively and b is between ( ?n?, ?z? ) inclusively.

from pyconditions.pre import Custom

BASES = [ 2, 3, 4 ]

@Custom( a, lambda x: x in BASES )
@Custom( b, lambda x: x % 2 == 0 )
def weirdMethod( a, b ):
    return a ** b

Using the custom precondition you are able to pass in any function that receives a single parameter and perform whatever condition checking you need.

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.0.3.tar.gz (7.4 kB view details)

Uploaded Source

Built Distribution

pyConditions-0.0.3.macosx-10.9-intel.exe (68.0 kB view details)

Uploaded Source

File details

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

File metadata

File hashes

Hashes for pyConditions-0.0.3.tar.gz
Algorithm Hash digest
SHA256 a3a605603acc3c9533169d6191b77b0546d849d57da41ff70dc8135bb65a283a
MD5 7013a32bcb01da4c0163d3799baad73b
BLAKE2b-256 13180fd0705d9e0137815c346449c3b1fc5f68146b4461dbae90ab060f02a741

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyConditions-0.0.3.macosx-10.9-intel.exe
Algorithm Hash digest
SHA256 a505b6c8dcf14a1960d6778b5ac35e1cf1829ea30cc843874120240dc9d4de02
MD5 a3d5526c96d38bef3fb85301460c9a8d
BLAKE2b-256 ab67212805574cb1426f762213b9682ae3d2c850ba02141afec1da5edf93faf3

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