Type-safe and eazy json-to-object-and-back conversions.
Project description
Restorify
Convert json objects and files into python objects of type that you need.
Quick guide
Simple conversions
The code below will convert json list into list, tuple and set respectively.
from restorify import restore
j1 = """
[
1, 2, 3, 1
]
"""
print( restore(j1, list[float]) )
print( restore(j1, tuple[float]) )
print( restore(j1, set[float]) )
Output:
[1.0, 2.0, 3.0, 1.0]
(1.0, 2.0, 3.0, 1.0)
{1.0, 2.0, 3.0}
Collections conversions
You can easily convert collections outside of simple built-ins. Note how nested tuple and set are accounted for.
from restorify import restore
from collections import OrderedDict
j2 = """
{
"key1" : [1, 2, 3]
}
"""
print( restore(j2, OrderedDict[str, tuple]) )
print( restore(j2, OrderedDict[str, set]) )
Output:
OrderedDict({'key1': (1, 2, 3)})
OrderedDict({'key1': {1, 2, 3}})
Dataclasses
Dataclasses (and everything type-annotated really) can be converted too.
from restorify import restore
from dataclasses import dataclass
@dataclass
class TestClass1:
id: str
data: list[int]
j3 = """
{
"id" : "MyId",
"data": [ 1, 42, 69 ]
}
"""
@dataclass
class TestClassNested:
test1_list: list[TestClass1]
j4 = """
{
"test1_list": [
{
"id" : "MyId1",
"data": [ 1, 42, 69 ]
},
{
"id" : "MyId2",
"data": [ 321, 421, 3011 ]
}
]
}
"""
print( restore(j4, TestClassNested) )
print( restore(j3, TestClass1) )
Output:
TestClass1(id='MyId', data=[1, 42, 69])
TestClassNested(test1_list=[TestClass1(id='MyId1', data=[1, 42, 69]), TestClass1(id='MyId2', data=[321, 421, 3011])])
Implicit file path conversions
Why loading jsons manually if you can just get and object from a file path? Note the use of @restorable decorator and RestorableClass.json_name class member. In the end, the new file is dumped into new directory (but with the same name).
from restorify import restore
from dataclasses import dataclass
from pathlib import Path
@dataclass
@restorable
class RestorableClass:
field: int
another_filed: list[list]
p1 = Path(RestorableClass.json_name)
obj = restore(p1)
print(obj)
p2 = Path('another_dir')
p2.mkdir()
obj.dump(p2)
Output:
RestorableClass(field=5, another_filed=[[1, 1.0, 'str'], [[4, 5, 6], 'hello!']])
The restorable_class.json file contents is the following:
{
"field": 5,
"another_filed": [
[
1,
1.0,
"str"
],
[
[
4,
5,
6
],
"hello!"
]
]
}
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file restorify-1.0.0.tar.gz.
File metadata
- Download URL: restorify-1.0.0.tar.gz
- Upload date:
- Size: 4.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6286bfbe6003a54c0092f1c0807068f4a1638bf39fd55cb4f9c9c3f036822f8a
|
|
| MD5 |
ee34fb7b7890a0acabf84e6244818829
|
|
| BLAKE2b-256 |
6769e5138e57dd00d5a932cb906b4776fad229385feebc923768c8367887aa06
|
File details
Details for the file restorify-1.0.0-py3-none-any.whl.
File metadata
- Download URL: restorify-1.0.0-py3-none-any.whl
- Upload date:
- Size: 4.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
daa61b92fdc95348fcb5dcb367013eda1b224024c92d84b200d1142e2df3d0a7
|
|
| MD5 |
3bb9bc67a1a6d693ea5d954809d9f487
|
|
| BLAKE2b-256 |
e17adfa4a9fd028bb61e81da0e9b967235978cca669a32c64ae88ce884766edc
|