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

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for dataclass_extensions-0.1.0.tar.gz
Algorithm Hash digest
SHA256 9b16c61142611e2a7a5dbcbf02a7b55dca69baf696f7e8f237337c1fa8afa228
MD5 1220755f9f6aa934e9af9dbbcf3df768
BLAKE2b-256 c2e058e53044c0c718a3ed908a1d0be075ddfac08a0506e4500b1eb889c9120e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dataclass_extensions-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 97521f83155ccdbf4019f46d75022da1fb80bc4d65bbbd3aba630a2f89b23ea3
MD5 3dcafc1ccebbd916025e6fbf10b606f0
BLAKE2b-256 75078887d4dd60b3252bebb6fc773a83a347baeea4ff0a668e13b9d6167ef296

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