Skip to main content

Python method's parameter validation library, as a pythonic decorator

Project description

Validates input parameters of a callable using this arguments:

param: arg_types:            list of types, Required argument's types  & counts in order
param: deny_match            list of string ,regex pattern, if any argument matches with the pattern, exception raises
param: requires:             list of fields to check for mandatory
param: deny:                 string ,regex pattern, if any parameter matches with the pattern, exception raises
param: deny_except:          string ,regex pattern for excluding fields from deny
param: types:                dict of key:name and value:type to check for types, if mismatch it will be raises exception
param: values:               dict of key:name and value:regex pattern to check the values, & fire exception if mismatch
param: ignore:               string ,regex pattern of parameters to filter
param: defaults:             dict of key:name and value:default_value

Exceptions:

raise: MandatoryException:           if any param in requires does not provided
raise: ArgumentException:            if arguments are invalid , short or mismatch type.
raise: DenialException:              if found param in deny list
raise: ParameterTypeException:       if parameter types invalid
raise: ParameterValueException:      if values are not in correct format

Example:

from pyvalidate import validate, ValidationException

@validate(arg_types=[int, str, str],
          deny_match=['xxx', 'tiktik'],
          requires=['phone'],
          deny='query',
          deny_except='query2',
          types={'phone':str, 'address':str, 'age':int},
          values={'phone':'^\d*$'},
          ignore='age',
          defaults={'address':'nothing'})
def add_person(serial, firstname, lastname, phone=None, address=None, age=None, **kw):
    print 'adding person "%s:%s %s:%s" with serial: %s:%s phone: %s:%s address: %s:%s age:%s:%s'                % (firstname, type(firstname),
               lastname, type(lastname),
               serial, type(serial),
               phone,
               type(phone),
               address,
               type(address),
               age,
               type(age))

def test(*args, **kwargs):
    try:
        add_person(*args, **kwargs)
    except ValidationException as ex:
        print ex.message

def main():
    test(12, "Vahid", "Mardani", phone="09122451075", address="Tehran")
    test("12", "Vahid", "Mardani", phone='+9122451075', address="Tehran")
    test("12", "Vahid", "Mardani", phone='1')
    test("12", "Vahid", "Mardani", phone='tiktik')
    test("12", "xxx", "Mardani", phone='')
    test("12", "", "Mardani",)
    test("12", "", "Mardani", phone='1', query='123')
    test("12", "", "Mardani", phone='1', query2='123')
    test("12", "", "Mardani", phone='1', age='123')

if __name__ == '__main__':
    main()

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

pyvalidate-1.3.1.tar.gz (3.9 kB view details)

Uploaded Source

Built Distribution

pyvalidate-1.3.1-py2.7.egg (6.8 kB view details)

Uploaded Source

File details

Details for the file pyvalidate-1.3.1.tar.gz.

File metadata

  • Download URL: pyvalidate-1.3.1.tar.gz
  • Upload date:
  • Size: 3.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for pyvalidate-1.3.1.tar.gz
Algorithm Hash digest
SHA256 564be484820432e052f2bc23d29165822d56f71d5ff6ce8040cd4643c28a3a97
MD5 6c10625283b1fa1543213242550a3697
BLAKE2b-256 ea92c2303c5adaff4ffc2313e7afec91f169372a7b6922d40ab46fd83a67153f

See more details on using hashes here.

File details

Details for the file pyvalidate-1.3.1-py2.7.egg.

File metadata

File hashes

Hashes for pyvalidate-1.3.1-py2.7.egg
Algorithm Hash digest
SHA256 bfb49447d1d0c060fdea8efc7710b8f66b6cd8e14d60362fc1736a8c660ae5f1
MD5 6a42f3d7a892f7b28510d3b906b0b324
BLAKE2b-256 8ef5c2aa47ddeaba61008f8d2c6ac15a3ab3160eb84a9783971159689a7c837e

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