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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 77f041d4e37bd1c111593304c77a5381d1805a128d6d3743a517e80322a877f7 |
|
MD5 | d67724e8e51ff763a0dde30cac41a6a7 |
|
BLAKE2b-256 | 94fc411d3ff44d5ba2d1bfff5d5e099b6f3322644bd0ef677d95574c2e7f0747 |
File details
Details for the file dataclasses_hjson-0.0.3-py3-none-any.whl
.
File metadata
- Download URL: dataclasses_hjson-0.0.3-py3-none-any.whl
- Upload date:
- Size: 3.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.2 CPython/3.11.5 Windows/10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d41920c324ad87f4f9fc3ed5e84189501261c24546b61b92f8297126e99ab885 |
|
MD5 | 7155fa0a38e2799a1e9dc507b2f191d8 |
|
BLAKE2b-256 | 267106f50508612814e05ddfa6d950b018b7e3599b3bda0ee661e0776500d629 |