Skip to main content

JSONStreams

Python Linting status Linux test status https://badge.fury.io/py/jsonstreams.svg Appveyor CI Status Documentation Status

Source code is available at github.

The code is licensed MIT. See the included LICENSE file for the exact terms.

Description

JSONstreams is a package that attempts to making writing JSON in a streaming format easier. In contrast to the core json module, this package doesn’t require building a complete tree of dicts and lists before writing, instead it provides a straightforward way to to write a JSON document without building the whole data structure ahead of time.

JSONstreams considers there to be two basic types, the JSON array and the JSON object, which correspond to Python’s list and dict respectively, and can encode any types that the json.JSONEncoder can, or can use an subclass to handle additional types.

The interface is designed to be context manger centric. The Stream class, and the Array and Object classes returned by the subarray and subobject methods (respectively), can be used as context managers or not, but use as context managers are recommended to ensure that each container is closed properly.

Basic Usage

A simple example looks like this

import jsonstreams

with jsonstreams.Stream(jsonstreams.Type.OBJECT, filename='foo') as s:
    s.write('foo', 'bar')
    with s.subobject('a') as a:
        a.write('foo', 1)
        a.write('bar', 2)
    s.write('bar', 'foo')

Writing into a closed group will raise an exception, which should not be handled, this exception is always an error in programming and should be corrected.

It is possible to write any value that the encoder (json.JSONEncoder by default) can encode, so iterating over lists or dictionaries to write them in is unnecessary:

import jsonstreams

mylist = list(range(10))
mydict = {a: b for a in range(10) for b in 'abcdefghij'}

with jsonstreams.Stream(jsonstreams.Type.OBJECT, filename='foo') as s:
    s.write('list', mylist)
    s.write('dict', mydict)

Metadata

Release files for jsonstreams 0.6.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for jsonstreams 0.6.0
File Size Uploaded Provenance Actions
jsonstreams-0.6.0.tar.gz 33.5 kB Without provenance Details for jsonstreams-0.6.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for jsonstreams 0.6.0
File Interpreter ABI Platform Actions
jsonstreams-0.6.0-py2.py3-none-any.whl Python 2, Python 3 none any Details for jsonstreams-0.6.0-py2.py3-none-any.whl

Total release size: 44.2 kB

Release files / jsonstreams-0.6.0.tar.gz

Download URL jsonstreams-0.6.0.tar.gz
Size 33.5 kB
Tags Source
SHA-256 checksum
How to use checksums
721cda7391e9415b7b15cebd6cf92fc7f8788ca211eda7d64162a066ee45a72e
BLAKE2b-256 checksum
How to use checksums
858c01333839805428590015bb4cbc3b730876609e536954eb1140d24b410bd0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.3.1.post20210301 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.6.13

Release files / jsonstreams-0.6.0-py2.py3-none-any.whl

Download URL jsonstreams-0.6.0-py2.py3-none-any.whl
Size 10.6 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
b2e609c2bc17eec77fe26dae4d32556ba59dafbbff30c9a4909f2e19fa5bb000
BLAKE2b-256 checksum
How to use checksums
afbe233b55906cc033b890c2e4593077bc10c7e09257c46f5253dd9b2850f3f4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.3.1.post20210301 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.6.13

Security for jsonstreams 0.6.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page