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.1.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.1-py3-none-any.whl (16.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: dataclass_extensions-0.2.1.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.1.tar.gz
Algorithm Hash digest
SHA256 3444258b57d54e476a595262061aa70b99d61f8d7646bca2803b03d8feba7b8e
MD5 af8a012b45fb18ca91b965711a9ab748
BLAKE2b-256 fd595923c8029cab585cc316fa5a65d15bf6f4860fab5e1cec2dea036cb34ac1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dataclass_extensions-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 fa55fcdc260737bf29f190343c687b4b36597cc50c66d3cf8f96b8622b2d9c4c
MD5 359934c3223589e3d6f57c2274055b03
BLAKE2b-256 be3dd7b390ab84008a23b82e560e0a88c677de11f91423d5faf1bb85a559e055

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