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

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for dataclass_extensions-0.2.4.tar.gz
Algorithm Hash digest
SHA256 0d44b33381e756088892bdf1a3d110360c2bf28f36da74db93ad3ef69781805a
MD5 e4c829b55f882dfc51ffdae42ee00bec
BLAKE2b-256 22cbc0e36406d7c96a5851bc6bfc12cbfebdb80cc8c7c5ed40af1563df9d1834

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dataclass_extensions-0.2.4-py3-none-any.whl
Algorithm Hash digest
SHA256 b28261fa1641c745c16f1f8ab1235152410cb66500c0ad22efe62c5b58c070d6
MD5 6ff81b0ee04c05c44b6fd8c6e06eeb85
BLAKE2b-256 579465084672157c2c23412101d7e84835b4cbbbb8266cadfe10c68c98f81d90

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