Skip to main content

A simple mixin that adds .to_hjson and .from_hjson to the dataclasses-json mixin

Project description

dataclasses-hjson

This package provides a simple way to serialize and deserialize dataclasses to and from Hjson.

This uses dataclasses-json to serialize and deserialize dataclasses, and hjson to parse and generate Hjson.

Opposed to dataclasses-json, this package does only provide a mixin class to add the functionality to a dataclass, instead of a decorator. You can change the configuration of dataclasses-json by either using the using_config decorator or by manually setting the dataclasses_json_config attribute on the dataclass, using the hjson_config function.

If you have any problems, ideas or suggestions, feel free to open an issue or a pull request!

Installation

pip install dataclasses-hjson

Usage

Example adding config using the using_config decorator:

from dataclasses import dataclass
from dataclasses_json import Undefined, LetterCase
from dataclasses_hjson import DataClassHjsonMixin, using_config


@using_config(
    undefined=Undefined.EXCLUDE, letter_case=LetterCase.CAMEL
)  # (These are the default values)
@dataclass
class Person(DataClassHjsonMixin):
    first_name: str
    age: int

Alternatively, you can use the hjson_config function:

from dataclasses import dataclass
from dataclasses_json import Undefined, LetterCase
from dataclasses_hjson import DataClassHjsonMixin, hjson_config


@dataclass
class Person(DataClassHjsonMixin):
    dataclasses_json_config = hjson_config(undefined=Undefined.EXCLUDE, letter_case=LetterCase.CAMEL) # (These are the default values)

    first_name: str
    age: int

Adding the config is optional however!

Now you can serialize and deserialize the dataclass to and from Hjson:

person = Person(first_name="Guido", age=42)
person_json = person.to_hjson()
print(person_json)
# {
#   firstName: Guido
#   age: 42
# }
person_copy = Person.from_hjson(person_json)
print(person_copy)
# Person(name='Guido', age=42)

License

This project is licensed under the MIT License - see the LICENSE file for details.

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

dataclasses_hjson-0.0.3.tar.gz (2.9 kB view details)

Uploaded Source

Built Distribution

dataclasses_hjson-0.0.3-py3-none-any.whl (3.4 kB view details)

Uploaded Python 3

File details

Details for the file dataclasses_hjson-0.0.3.tar.gz.

File metadata

  • Download URL: dataclasses_hjson-0.0.3.tar.gz
  • Upload date:
  • Size: 2.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.2 CPython/3.11.5 Windows/10

File hashes

Hashes for dataclasses_hjson-0.0.3.tar.gz
Algorithm Hash digest
SHA256 77f041d4e37bd1c111593304c77a5381d1805a128d6d3743a517e80322a877f7
MD5 d67724e8e51ff763a0dde30cac41a6a7
BLAKE2b-256 94fc411d3ff44d5ba2d1bfff5d5e099b6f3322644bd0ef677d95574c2e7f0747

See more details on using hashes here.

File details

Details for the file dataclasses_hjson-0.0.3-py3-none-any.whl.

File metadata

File hashes

Hashes for dataclasses_hjson-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 d41920c324ad87f4f9fc3ed5e84189501261c24546b61b92f8297126e99ab885
MD5 7155fa0a38e2799a1e9dc507b2f191d8
BLAKE2b-256 267106f50508612814e05ddfa6d950b018b7e3599b3bda0ee661e0776500d629

See more details on using hashes here.

Supported by

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