Skip to main content

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

Project description


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

PyPI package version conda-forge package version Supported Python versions Supported Python implementations Linux/macOS/Windows CI status Test coverage CodeQL


  • 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


Installation: pip

pip install typepy

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

pip install typepy[datetime]

Installation: conda

conda install -c conda-forge typepy

Installation: apt

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


Optioal dependencies

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


Type Check Method

>>> from typepy import Integer
>>> Integer(1).is_type()
>>> Integer(1.1).is_type()

Type Validation Method

>>> 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

>>> from typepy import Integer, TypeConversionError
>>> Integer("1").convert()
>>> 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

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


>>> from typepy import Integer, TypeConversionError
>>> Integer("1").force_convert()  # force_convert() forcibly convert the value
>>> Integer(1.1).force_convert()
>>> 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.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

typepy-1.3.0.tar.gz (23.4 kB view hashes)

Uploaded source

Built Distribution

typepy-1.3.0-py3-none-any.whl (31.1 kB view hashes)

Uploaded py3

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page