Skip to main content

A Python library for variable type checker/validator/converter at a run time.

Project description

typepy

Summary

A Python library for variable type checker/validator/converter at a run time.

https://badge.fury.io/py/typepy.svg https://img.shields.io/pypi/pyversions/typepy.svg https://img.shields.io/travis/thombashi/typepy/master.svg?label=Linux/macOS https://img.shields.io/appveyor/ci/thombashi/typepy/master.svg?label=Windows https://coveralls.io/repos/github/thombashi/typepy/badge.svg?branch=master https://img.shields.io/github/stars/thombashi/typepy.svg?style=social&label=Star

Features

  • checking a value type

  • validate a value for a type

  • convert a value from a type to the other type

The correspondence between Python types and typepy classes are as follows:

Supported Types

Python Type

typepy: Type Class

bool

Bool

datetime

DateTime

dict

Dictionary

float/decimal.Decimal (not infinity/NaN)

RealNumber

float/decimal.Decimal (infinity)

Infinity

float/decimal.Decimal (NaN)

Nan

int

Integer

list

List

None

None

str (not null)

String

str (null)

NullString

str (IP address)

IpAddress

Usage

Type Check Method

Examples:
>>> from typepy import Integer
>>> Integer(1).is_type()
True
>>> Integer(1.1).is_type()
False

Type Validation Method

Examples:
>>> from typepy import Integer
>>> Integer(1).validate()
>>> try:
...     Integer(1.1).validate()
... except TypeError as e:
...     # validate() raised TypeError when the value unmatched the type class
...     print(e)
...
invalid value type: expected=INTEGER, actual=<type 'float'>

Type Conversion Methods

convert method

Examples:
>>> from typepy import Integer, TypeConversionError
>>> Integer("1").convert()
1
>>> try:
...     Integer(1.1).convert()
... except TypeConversionError as e:
...     # convert() raised TypeConversionError when conversion failed
...     print(e)
...
failed to convert from float to INTEGER

try_convert method

Examples:
>>> from typepy import Integer
>>> Integer("1").try_convert()
1
>>> print(Integer(1.1).try_convert())  # try_convert() returned None when conversion failed
None

force_convert

Examples:
>>> from typepy import Integer, TypeConversionError
>>> Integer("1").force_convert()  # force_convert() forcibly convert the value
1
>>> Integer(1.1).force_convert()
1
>>> try:
...     Integer("abc").force_convert()
... except TypeConversionError as e:
...     # force_convert() raised TypeConversionError when the value not convertible
...     print(e)
...
failed to force_convert to int: type=<class 'str'>

For more information

Type check/validate/convert results differed according to strict_level value which can pass to typepy classes constructors as an argument. More information can be found in the API reference.

Installation

pip install typepy

Dependencies

Python 2.7+ or 3.4+

Test dependencies

Documentation

https://typepy.rtfd.io/

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

typepy-0.2.2.tar.gz (20.0 kB view details)

Uploaded Source

Built Distribution

typepy-0.2.2-py2.py3-none-any.whl (29.4 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file typepy-0.2.2.tar.gz.

File metadata

  • Download URL: typepy-0.2.2.tar.gz
  • Upload date:
  • Size: 20.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.2.0 requests-toolbelt/0.8.0 tqdm/4.24.0 CPython/3.6.5

File hashes

Hashes for typepy-0.2.2.tar.gz
Algorithm Hash digest
SHA256 3bfdbaa4c14161ce87bc10145d310a662d24901342203a78ea63f0e13a3f92e3
MD5 36006b3aa4047b2c46bbcdcb81b3e3fc
BLAKE2b-256 26a1c29f88115116b0bafbb1f7a9c78499d6440bb8c2bf9fb8204c3dc0781577

See more details on using hashes here.

File details

Details for the file typepy-0.2.2-py2.py3-none-any.whl.

File metadata

  • Download URL: typepy-0.2.2-py2.py3-none-any.whl
  • Upload date:
  • Size: 29.4 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.2.0 requests-toolbelt/0.8.0 tqdm/4.24.0 CPython/3.6.5

File hashes

Hashes for typepy-0.2.2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 ff5cd1154ae3ddf7da63733e7055c7e1c9dd1eb4856a88c367a4b5d75c66413a
MD5 2b7f86505c64cbf11822f119d2c43480
BLAKE2b-256 eb6b4a8cbb5a512fce2d2348813c249decf5009c10587fc4c4914db850ec5390

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