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.1.tar.gz (15.5 kB view details)

Uploaded Source

Built Distribution

json_expand_o_matic-0.2.1-py3-none-any.whl (12.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: json_expand_o_matic-0.2.1.tar.gz
  • Upload date:
  • Size: 15.5 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.1.tar.gz
Algorithm Hash digest
SHA256 3e2e062f84fce48264fc110ef40ed41e8ee07e502db8567b93bc076cca33495c
MD5 eea2db9e4ba394d12eda1f8db4102063
BLAKE2b-256 3e08ae86d4e0dfad7063d917c7db1d2db9752ce5d99de639f73689cafe337525

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for json_expand_o_matic-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6855f179ce75521d1e8beef38f8b4262a67f56678338e3c5cd3f73a64554bad5
MD5 5f90fc31e98e1b776ff2573ae6534bfd
BLAKE2b-256 63ce23cf41a2633e6f0fd9e9bcdcc32df8cd323adc5a9bd4e9708ae03521d1c3

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