Skip to main content

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

json_expand_o_matic-0.2.4.tar.gz (17.4 kB view details)

Uploaded Source

Built Distribution

json_expand_o_matic-0.2.4-py3-none-any.whl (14.3 kB view details)

Uploaded Python 3

File details

Details for the file json_expand_o_matic-0.2.4.tar.gz.

File metadata

  • Download URL: json_expand_o_matic-0.2.4.tar.gz
  • Upload date:
  • Size: 17.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.3

File hashes

Hashes for json_expand_o_matic-0.2.4.tar.gz
Algorithm Hash digest
SHA256 248f45562f00fbf41a6601f330293d03422f366716e11d23365c5b951d436b06
MD5 14fb4f07edb7e5fa9dd0047a737d4baf
BLAKE2b-256 23a9388d3fbf7cc202e1107cbe8f4e7fe7a207a4b6cf24c865a06c066fa3e6bb

See more details on using hashes here.

File details

Details for the file json_expand_o_matic-0.2.4-py3-none-any.whl.

File metadata

File hashes

Hashes for json_expand_o_matic-0.2.4-py3-none-any.whl
Algorithm Hash digest
SHA256 dd15d0c8af53d2f84eba933631892be03fe596c60b1bc0f2f4440eb47e8693a7
MD5 a5961c17a744f7b986dc3bd966fb12a8
BLAKE2b-256 7ab7a235eeff6b3201f24a5716a61647e9efce21ae8f70f748358be47a457f00

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