Python classes with types validation at runtime.
This is purely an experiment, not meant for actual use.
You can install this library using Python's favorite, pip
package manager.
pip install -U typedclasses
Using typedclasses, you can create classes in dataclasses
-like manner i.e using type annotations and library will enforce types for
that class at runtime. Here's an example:
import typing
from typedclasses import TypedClass
class User(TypedClass):
id: int
name: str
email: typing.Optional[str] = None
Parameters will be validated when initialising above class. Since email
has a default value set, It is optional to pass
it as a parameter while instansiating:
>>> User(id=1, name="foobar") # runs fine
>>> User(id="1", name="foobar")
TypeError: Parameter 'id' must be an instance of <class 'int'>, <class 'str'> is unsupported.
This library also provides validation for various generic types from typing
module:
class Foo(TypedClass):
x: typing.Union[int, float]
Foo(x=1) # ok
Foo(x=1.0) # ok
Foo(x="1") # invalid
List of all types supported from typing
module can be found in the documentation.
You can contribute to the library in two ways:
- Directly contributing to code using pull requests.
- Suggest features or report bugs via issues.
We welcome all contributions! 👍
When using issues, Please be descriptive about your issue and for pull requests, Try to be consistent with current design.