Expand a dict into a collection of subdirectories and json files or contract (un-expand) the output of expand() into a dict.
Project description
JSON Expand-O-Matic
Expand a dict into a collection of subdirectories and json files or contract (un-expand) the output of expand() into a dict.
Overview
Construct
expandomatic = JsonExpandOMatic(path=data_path, logger=logger)
Expand -- become or make larger or more extensive.
data = { ... }
data_path = sys.argv[1] if len(sys.argv) > 1 else '.'
Create {data_path}/root.json and {data_path}/root/...
expandomatic.expand(data)
Create {data_path}/foo.json and {data_path}/foo/...
expandomatic.expand(foo, root_element='foo')
Warning: expand() is destructive unless `preserve=True`
Contract -- decrease in size, number, or range.
data = expandomatic.contract()
Or use jsonref
import jsonref
with open(f'{data_path}/root.json') as f:
data = jsonref.load(f, base_uri=f'file://{os.path.abspath(data_path)}/')
Quick Start
Setup wrapper scripts:
./wrapper.sh
Install for development:
./tox.sh
Do a thing:
rm -rf output
./expand.sh output tests/testresources/actor-data.json 2>&1 | tee log.txt
find output -type f | sort
Do another thing:
rm -rf output
./expand.sh output tests/testresources/actor-data.json '[{"/root/actors/.*": ["/[^/]+/movies/.*"]}]' 2>&1 | tee log.txt
find output -type f | sort
Testing
Install & use tox:
./tox.sh
Update requirements.txt and dev-requirements.txt:
./tox.sh -e deps
Reformat the code to make it pretty:
./tox.sh -e fmt
Manually run the commands:
./wrapper.sh
./expand.sh output tests/testresources/actor-data.json
./contract.sh output | jq -S . > output.json
ls -l output.json tests/testresources/actor-data.json
cmp output.json <(jq -S . tests/testresources/actor-data.json)
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
Hashes for json_expand_o_matic-0.2.2.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 28aa7d6d7a0b52bf332d8ce7b71a0ac6b230e0b321c443464a05a5dc2837f3a9 |
|
MD5 | e3e78ed421c983d2f408dc65bc7eaef2 |
|
BLAKE2b-256 | 0a34334e101b87f1a1d0b32d0dc3e7742fff595a4ecdbb956b9e039edd99ea11 |
Hashes for json_expand_o_matic-0.2.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8448df5c4641e63954a9062c98f631a7fbd9f7e124059d0dfa48b95fb52f9e06 |
|
MD5 | 1f3bcaf1cba2a30720abec334da4d669 |
|
BLAKE2b-256 | cd0d72359c55e6f9e70693bc1d596ff94f2731fe9612a8402e621cd193640712 |