Skip to content

Use dataclasses without variable annotations.

License

Notifications You must be signed in to change notification settings

lemon24/typeless-dataclasses

Repository files navigation

typeless-dataclasses: use dataclasses without variable annotations

build codecov PyPI black

Have you ever wanted to use dataclasses, but don't like type annotations?

@dataclass
class Data:
    one: Any
    two: Any = 2

... and don't want to resort to any ugly hacks like this one?

@dataclass
class Data:
    one: ...
    two: ... = 2

With the power of typeless-dataclasses, now you can!

@dataclass
@typeless
class Data:
    one = field()
    two = field(default=2)

Compare with attrs:

@attr.s
class Data:
    one = attr.ib()
    two = attr.ib(default=2)

Installing

Install and update using pip:

$ pip install --upgrade typeless-dataclasses

typeless-dataclasses offers a type-annotation-free experience for Python 3.6* and newer, and PyPy.

(On 3.6, you also need to install the dataclasses backport.)

A Simple Example

Using typeless-dataclasses is easy!

Just add @typeless to your class before @dataclass, and use field() as you normally would; field() attributes become instance variables, and all others remain class variables.

>>> from dataclasses import dataclass, field
>>> from typeless_dataclasses import typeless
>>>
>>> @dataclass
... @typeless
... class Data:
...     one = field()
...     two = field(default=2)
...     three = 3
...
>>> Data(1)
Data(one=1, two=2)

Links

About

Use dataclasses without variable annotations.

Resources

License

Stars

Watchers

Forks

Packages

No packages published