Skip to main content

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

Project description

Summary

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

PyPI package version Supported Python versions Supported Python implementations Linux/macOS CI status Windows CI status Test coverage GitHub stars

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

Install from PyPI

pip install typepy

Install additional dependency packages with the following command if using typepy.DateTime class

pip install typepy[datetime]

Install from PPA (for Ubuntu)

sudo add-apt-repository ppa:thombashi/ppa
sudo apt update
sudo apt install python3-typepy

Dependencies

Python 2.7+ or 3.5+

Optioal dependencies

These packages can be installed via pip install typepy[datetime]:

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

Uploaded Source

Built Distribution

typepy-0.6.6-py2.py3-none-any.whl (32.0 kB view details)

Uploaded Python 2 Python 3

File details

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

File metadata

  • Download URL: typepy-0.6.6.tar.gz
  • Upload date:
  • Size: 24.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.1

File hashes

Hashes for typepy-0.6.6.tar.gz
Algorithm Hash digest
SHA256 116d4cd26a973d4cf453e94990ab14a2d148757ced47a7b1547fcf8301c58f78
MD5 b9103024a2f26a45dbe3e3d9b3927cfb
BLAKE2b-256 ef5a1270cc9d79ea20920009f751bbb498662d14be073f0711928bed443440ae

See more details on using hashes here.

File details

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

File metadata

  • Download URL: typepy-0.6.6-py2.py3-none-any.whl
  • Upload date:
  • Size: 32.0 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.1

File hashes

Hashes for typepy-0.6.6-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 1cc1c8a96e4e78f9487b190627dec15ca579dbf5c929ce8035878b0f6ba31f40
MD5 ba35b719a4ded75be6890fed1c44b1a1
BLAKE2b-256 54e8e11b753cced190dd2e3decc1697a5fed3325e94f4e9c4ef20ff7936948ec

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