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

Uploaded Source

Built Distribution

json_expand_o_matic-0.2.2-py3-none-any.whl (14.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: json_expand_o_matic-0.2.2.tar.gz
  • Upload date:
  • Size: 16.6 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.2.tar.gz
Algorithm Hash digest
SHA256 28aa7d6d7a0b52bf332d8ce7b71a0ac6b230e0b321c443464a05a5dc2837f3a9
MD5 e3e78ed421c983d2f408dc65bc7eaef2
BLAKE2b-256 0a34334e101b87f1a1d0b32d0dc3e7742fff595a4ecdbb956b9e039edd99ea11

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for json_expand_o_matic-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 8448df5c4641e63954a9062c98f631a7fbd9f7e124059d0dfa48b95fb52f9e06
MD5 1f3bcaf1cba2a30720abec334da4d669
BLAKE2b-256 cd0d72359c55e6f9e70693bc1d596ff94f2731fe9612a8402e621cd193640712

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