Skip to main content

Additional functionality for Python dataclasses

Project description

dataclass-extensions

Additional functionality for Python dataclasses

Installation

pip install dataclass-extensions

Features

Encode/decode to/from JSON-safe dictionaries

from dataclasses import dataclass
from dataclass_extensions import decode, encode


@dataclass
class Fruit:
    calories: int
    price: float


@dataclass
class FruitBasket:
    fruit: Fruit
    count: int


basket = FruitBasket(fruit=Fruit(calories=200, price=1.0), count=2)
assert encode(basket) == {"fruit": {"calories": 200, "price": 1.0}, "count": 2}
assert decode(FruitBasket, encode(basket)) == basket

Registrable subclasses

from dataclasses import dataclass
from dataclass_extensions import Registrable, decode, encode


@dataclass
class Fruit(Registrable):
    calories: int
    price: float


@Fruit.register("banana")
@dataclass
class Banana(Fruit):
    calories: int = 200
    price: float = 1.25


@Fruit.register("apple")
@dataclass
class Apple(Fruit):
    calories: int = 150
    price: float = 1.50


@dataclass
class FruitBasket:
    fruit: Fruit
    count: int


basket = FruitBasket(fruit=Apple(), count=2)
assert encode(basket) == {"fruit": {"calories": 150, "price": 1.5, "type": "apple"}, "count": 2}
assert decode(FruitBasket, encode(basket)) == basket

Project details


Download files

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

Source Distribution

dataclass_extensions-0.2.3.tar.gz (16.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dataclass_extensions-0.2.3-py3-none-any.whl (16.2 kB view details)

Uploaded Python 3

File details

Details for the file dataclass_extensions-0.2.3.tar.gz.

File metadata

  • Download URL: dataclass_extensions-0.2.3.tar.gz
  • Upload date:
  • Size: 16.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.11

File hashes

Hashes for dataclass_extensions-0.2.3.tar.gz
Algorithm Hash digest
SHA256 4f5111ccfb0f56bfbf90d9abf0b399414b0604bb6c69c8775fe5a617224b9b15
MD5 7ade93524996e2cd759d24c8395fa1d8
BLAKE2b-256 7fa0ffec2d39f4dae03172a526e6d63f6a1f92d53829f1f68fd37d273ae68a02

See more details on using hashes here.

File details

Details for the file dataclass_extensions-0.2.3-py3-none-any.whl.

File metadata

File hashes

Hashes for dataclass_extensions-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 b21f6b231f2e739547765c377b953545f3fa827eeb3b4deb489afa935385bedd
MD5 ccb97bb21877b731c48762116fb2933f
BLAKE2b-256 d839c212eaaa2933d799cc4bb091bccac91219992632c06c488d1fe84f030969

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page