Lightweight dataclass library.
Project description
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 10x faster than the built-in dataclasses module.
On top of that, it's also about 2x faster than 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"
c = "c" # you don't even need the type hint!
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.