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.2.tar.gz (16.1 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.2-py3-none-any.whl (16.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: dataclass_extensions-0.2.2.tar.gz
  • Upload date:
  • Size: 16.1 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.2.tar.gz
Algorithm Hash digest
SHA256 4eda3967b77b918087c74c5a6018a39717ac31e94ab786e154f52e9ac0f87c25
MD5 5a4a0798a9b9b7032aea903fd0af033e
BLAKE2b-256 a094e8f5b9cbf87e3e9d956cca9b9ba6e2e2a3a17446d5f3929016f191dea3a1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dataclass_extensions-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 2aee84b75e155b0b24fe2b23ed2708d19b876072e6067a924000b22e00267267
MD5 2261a1f9df15b89aa98151d960442c30
BLAKE2b-256 881d850386b2f071eb2df51fd0220e375b7bc8e96cc087e8742eff16a3cf9e20

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