Skip to main content

fast, powerful, and flexible validator with sane syntax

Project description

ValidX

https://github.com/Cottonwood-Technology/ValidX/actions/workflows/main.yaml/badge.svg https://badge.fury.io/py/ValidX.svg https://readthedocs.org/projects/validx/badge/?version=latest

ValidX is fast, powerful, and flexible validator with sane syntax.

from validx import Dict, Str

schema = Dict({"message": Str()})
data = {"message": "ValidX is cool!"}

print(schema(data))
{'message': 'ValidX is cool!'}

The full documentation is available at Read the Docs.

Changes

0.8.1

  • Fixed List and Set restricting mappings from their valid input.

  • Fixed cloning and representing of Const validator constructed with False or None a value.

  • Fixed nullable check of Type validator constructed with object as a type.

0.8

  • Dropped Python 3.5 support.

  • Added Python 3.10, 3.11 support.

  • Fixed handling UNIX-timestamps by Date and Datetime validators.

  • Added ability to specify default time which is used to implicitly convert date to datetime within Datetime validator.

  • Fixed handling bool values by Int and Float validators.

  • Changed behavior of Str validator, it now strips leading & trailing whitespace by default. Use dontstrip=True parameter to disable the stripping.

  • Added ability to normalize spaces by Str validator, i.e. replace space sequences by single space character. Use normspace=True parameter to enable the normalization.

  • Added coerce parameter to Str validator, which can be useful to sanitize data from sources with automatic type inferring, where string data might be incorrectly interpreted as another type.

  • Unified behavior of Python and Cython versions of Int validator. Both versions support unlimited integer numbers now.

  • Added new Set validator.

  • Added new Decimal validator.

  • Renamed FloatValueError to NumberError, so it is now used for both Float and Decimal validators.

  • Added new CoerceError which is raised instead of InvalidTypeError when type coercion fails.

0.7

  • Dropped Python 2.7 support.

  • Fixed relmin/relmax checks for Date validator with timezone.

  • Fixed constructing Cython version of Type validator with type created from metaclass.

0.6.1

  • Fixed type declarations for Validator.clone() method.

0.6

  • Added Python 3.8 into test matrix.

  • Made validators immutable.

  • Added contracts checks on validator initialization.

  • Added new simplified syntax for cloning validators.

  • Got rid of global state within LazyRef validator. It now acts like a pure function.

  • Fixed raising of ambiguous MinLengthError on List and Dict validation.

0.5.1

  • Fixed type declarations. Again. One does not simply make mypy happy.

0.5

  • Removed confusing nullable check from Any validator.

  • Fixed type declarations.

0.4

  • Fixed library objects pickling.

  • Fixed checking of length within List validator.

0.3

  • Fixed handling of default values and length validation within Dict validator.

0.2

  • Added support of timezones into Date and Datetime validators.

  • Added support of custom parsers into Date, Time, and Datetime validators.

  • Added Type validator for custom types.

0.1

  • Initial release.

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

ValidX-0.8.1.tar.gz (40.7 kB view hashes)

Uploaded Source

Built Distributions

ValidX-0.8.1-py3-none-any.whl (57.9 kB view hashes)

Uploaded Python 3

ValidX-0.8.1-cp311-cp311-win_amd64.whl (536.4 kB view hashes)

Uploaded CPython 3.11 Windows x86-64

ValidX-0.8.1-cp311-cp311-win32.whl (465.9 kB view hashes)

Uploaded CPython 3.11 Windows x86

ValidX-0.8.1-cp311-cp311-musllinux_1_1_x86_64.whl (3.4 MB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.1+ x86-64

ValidX-0.8.1-cp311-cp311-musllinux_1_1_i686.whl (3.3 MB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.1+ i686

ValidX-0.8.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.4 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

ValidX-0.8.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (3.2 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

ValidX-0.8.1-cp311-cp311-macosx_10_9_x86_64.whl (608.8 kB view hashes)

Uploaded CPython 3.11 macOS 10.9+ x86-64

ValidX-0.8.1-cp310-cp310-win_amd64.whl (530.0 kB view hashes)

Uploaded CPython 3.10 Windows x86-64

ValidX-0.8.1-cp310-cp310-win32.whl (462.6 kB view hashes)

Uploaded CPython 3.10 Windows x86

ValidX-0.8.1-cp310-cp310-musllinux_1_1_x86_64.whl (3.1 MB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ x86-64

ValidX-0.8.1-cp310-cp310-musllinux_1_1_i686.whl (3.0 MB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ i686

ValidX-0.8.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.1 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

ValidX-0.8.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (3.0 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

ValidX-0.8.1-cp310-cp310-macosx_10_9_x86_64.whl (601.6 kB view hashes)

Uploaded CPython 3.10 macOS 10.9+ x86-64

ValidX-0.8.1-cp39-cp39-win_amd64.whl (532.8 kB view hashes)

Uploaded CPython 3.9 Windows x86-64

ValidX-0.8.1-cp39-cp39-win32.whl (464.9 kB view hashes)

Uploaded CPython 3.9 Windows x86

ValidX-0.8.1-cp39-cp39-musllinux_1_1_x86_64.whl (3.2 MB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ x86-64

ValidX-0.8.1-cp39-cp39-musllinux_1_1_i686.whl (3.0 MB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ i686

ValidX-0.8.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.1 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

ValidX-0.8.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (3.0 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

ValidX-0.8.1-cp39-cp39-macosx_10_9_x86_64.whl (605.7 kB view hashes)

Uploaded CPython 3.9 macOS 10.9+ x86-64

ValidX-0.8.1-cp38-cp38-win_amd64.whl (533.4 kB view hashes)

Uploaded CPython 3.8 Windows x86-64

ValidX-0.8.1-cp38-cp38-win32.whl (464.8 kB view hashes)

Uploaded CPython 3.8 Windows x86

ValidX-0.8.1-cp38-cp38-musllinux_1_1_x86_64.whl (3.4 MB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.1+ x86-64

ValidX-0.8.1-cp38-cp38-musllinux_1_1_i686.whl (3.3 MB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.1+ i686

ValidX-0.8.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.2 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

ValidX-0.8.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (3.1 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

ValidX-0.8.1-cp38-cp38-macosx_10_9_x86_64.whl (599.3 kB view hashes)

Uploaded CPython 3.8 macOS 10.9+ x86-64

ValidX-0.8.1-cp37-cp37m-win_amd64.whl (521.7 kB view hashes)

Uploaded CPython 3.7m Windows x86-64

ValidX-0.8.1-cp37-cp37m-win32.whl (462.3 kB view hashes)

Uploaded CPython 3.7m Windows x86

ValidX-0.8.1-cp37-cp37m-musllinux_1_1_x86_64.whl (2.9 MB view hashes)

Uploaded CPython 3.7m musllinux: musl 1.1+ x86-64

ValidX-0.8.1-cp37-cp37m-musllinux_1_1_i686.whl (2.7 MB view hashes)

Uploaded CPython 3.7m musllinux: musl 1.1+ i686

ValidX-0.8.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.8 MB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

ValidX-0.8.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (2.7 MB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

ValidX-0.8.1-cp37-cp37m-macosx_10_9_x86_64.whl (590.3 kB view hashes)

Uploaded CPython 3.7m macOS 10.9+ x86-64

ValidX-0.8.1-cp36-cp36m-win_amd64.whl (565.3 kB view hashes)

Uploaded CPython 3.6m Windows x86-64

ValidX-0.8.1-cp36-cp36m-win32.whl (485.2 kB view hashes)

Uploaded CPython 3.6m Windows x86

ValidX-0.8.1-cp36-cp36m-musllinux_1_1_x86_64.whl (2.7 MB view hashes)

Uploaded CPython 3.6m musllinux: musl 1.1+ x86-64

ValidX-0.8.1-cp36-cp36m-musllinux_1_1_i686.whl (2.6 MB view hashes)

Uploaded CPython 3.6m musllinux: musl 1.1+ i686

ValidX-0.8.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.7 MB view hashes)

Uploaded CPython 3.6m manylinux: glibc 2.17+ x86-64

ValidX-0.8.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (2.5 MB view hashes)

Uploaded CPython 3.6m manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

ValidX-0.8.1-cp36-cp36m-macosx_10_9_x86_64.whl (570.0 kB view hashes)

Uploaded CPython 3.6m macOS 10.9+ x86-64

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