Easyclasses
Lightweight alternative to dataclasses
Quick Example
from easyclasses import EasyClass
class MyClass(EasyClass):
a: str
b: str
c: str = "test"
print(MyClass("a", "b", c="hi")) # MyClass(a='a', b='b', c='hi')
Installation
Linux/Mac
python3 -m pip install -U easyclasses
Windows
py -3 -m pip install -U easyclasses
Performance
Based on benchmarks.py, easyclasses is over 6x faster than the built-in dataclasses module.
On top of that, it's also outperforms NamedTuple.
Usage
Basics
Easyclasses API is pretty similar to dataclasses.
The main difference between dataclasses is that easyclasses uses a subclass instead of a decorator, like so:
from easyclasses import EasyClass
class MyEasyClass(EasyClass):
a: str
You can also provide default arguments the same way:
from easyclasses import EasyClass
class MyEasyClass(EasyClass):
a: str
b: str = "h"
You can pass subclass arguments to enable or disable certain features:
from easyclasses import EasyClass
class MyEasyClass(EasyClass, eq=False, immutable=True):
a: str
MyEasyClass("a") == MyEasyClass("a") # False
MyEasyClass("a").a = "test" # TypeError
If you aren't planning on using features like __eq__, then you can use LightEasyClass, which has features like that removed, allowing it to be faster than the normal EasyClass:
from easyclasses import LightEasyClass
class MyEasyClass(LightEasyClass): # works the same
a: str
Factories
If you need a default argument for a mutable object (such as list or dict), you can use the factory function:
from easyclasses import EasyClass, factory
class MyEasyClass(EasyClass):
a: list = factory(list)
Validators
You can set a validator using the validator function:
from easyclasses import EasyClass, validator
class MyEasyClass(EasyClass):
a: str = validator(str, lambda v: v == "hi")
MyEasyClass("hi") # OK
MyEasyClass("a") # AssertionError
You can even use it with factory:
from easyclasses import EasyClass, validator, factory
class MyEasyClass(EasyClass):
a: list = validator(factory(list), lambda v: v == [1])
MyEasyClass([1, 2]) # AssertionError
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file easyclasses-1.0.1.tar.gz.
File metadata
- Download URL: easyclasses-1.0.1.tar.gz
- Upload date:
- Size: 3.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f85579ad9e775358370fe7416ce3b2d36bb9fbb619fabba99ea81c19d5e9ebc5
|
|
| MD5 |
d70911c53f0fd4e3bc8ff860b58bd077
|
|
| BLAKE2b-256 |
5cab1c5458b1f8e58ee7d28da0d332c2e43d3351424136376dde0f9be1092121
|