Skip to main content

A simple asynchronus json prettifier.

Project description

apjson

apjson is an asynchonus prettifier for json-like objects and a simple implementation of the json module and decorators.

Installation

Install via pip:

pip install apjson

Example

from apjson import prettify, to_bytesio, jbytesio, jpretty
import asyncio


@jbytesio(sort_keys=True, check_circular=True)
def sync_json():

    return '{"in": "this", "example": "the", "json": "function", "is": "sync"}'


@jpretty(silent=True)
async def async_json():

    return "{\"instead\": \"here\", \"is\": \"async\"}"


async def main():

    print((await to_bytesio('{"this": "is", "an": "example", "here": 123}')).read())

    print(await prettify('{"this": "is", "another": "example", "here": True}'))

    print(await prettify(b"{\"X\": 123}"))

    print(await prettify(bytearray("{\"X\": 123}", encoding='utf-8')))

    #every decorated function should be awaited (even sync)
    print((await sync_json()).read())
    print(await async_json())

loop = asyncio.get_event_loop()
loop.run_until_complete(main())

Prettifier

prettify: Prettifies and dumps the input (str, bytes, bytearray, dict) to json. Accepts every kwarg of json.dumps.

await prettify('{"this": "is", "an_": "example", "here": 123, "even": 1.02, "but": False}')

await prettify(b"{\"X\": 123}")

await prettify(bytearray("{\"X\": 123}", encoding='utf-8'))

#or use the decorator

@jpretty(silent=True)
async def async_json():

    #return a json-like str, bytes, bytearray, dict and the decorator will convert it
    return "{\"instead\": \"here\", \"is\": \"async\"}"

Other Utilities

to_bytes: converts input (str, bytes, bytearray, dict) to io.BytesIO

await to_bytesio('{"this": "is", "an_": "example", "here": 123, "even": 1.02, "but": False}')

#or use the decorator

@jbytesio()
async def json_to_bytesio():

    #return a json-like str, bytes, bytearray, dict and the decorator will convert it
    return '{"in": "this", "example": "the", "json": "function", "is": "sync"}'

Notes

You can use the boolean kwarg silent for skipping encoding exceptions.

For custom encoder use the kwarg encoder instead of cls in the function that uses the custom encoder.

You can decorate both sync and async functions but always return async function that needs to be awaited.

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

apjson-0.0.3.tar.gz (5.4 kB view details)

Uploaded Source

Built Distribution

apjson-0.0.3-py3-none-any.whl (6.5 kB view details)

Uploaded Python 3

File details

Details for the file apjson-0.0.3.tar.gz.

File metadata

  • Download URL: apjson-0.0.3.tar.gz
  • Upload date:
  • Size: 5.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.49.0 CPython/3.8.2

File hashes

Hashes for apjson-0.0.3.tar.gz
Algorithm Hash digest
SHA256 86b68cc6e6a7e5632342679e1173702224f40cddf0a93ab6dbfd89f0be7e1f09
MD5 f11bcd8e9076d7e21f67af0f7d468cf9
BLAKE2b-256 daf184f33ec31bfdca4b77bd0254f235c892f37b29d4b67f9d7a96381b8fe77c

See more details on using hashes here.

File details

Details for the file apjson-0.0.3-py3-none-any.whl.

File metadata

  • Download URL: apjson-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 6.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.49.0 CPython/3.8.2

File hashes

Hashes for apjson-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 f127f55f7788fa3c413bf5a58b8bd1f097661708547cabdc9ed1fe51f0308c04
MD5 de7d5787dbd52506888b71b6f73b0074
BLAKE2b-256 27e40859cf97e1363d417dca5d2529acc42e7b953b491d64b0788119e3cbcbe8

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