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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 86b68cc6e6a7e5632342679e1173702224f40cddf0a93ab6dbfd89f0be7e1f09 |
|
MD5 | f11bcd8e9076d7e21f67af0f7d468cf9 |
|
BLAKE2b-256 | daf184f33ec31bfdca4b77bd0254f235c892f37b29d4b67f9d7a96381b8fe77c |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | f127f55f7788fa3c413bf5a58b8bd1f097661708547cabdc9ed1fe51f0308c04 |
|
MD5 | de7d5787dbd52506888b71b6f73b0074 |
|
BLAKE2b-256 | 27e40859cf97e1363d417dca5d2529acc42e7b953b491d64b0788119e3cbcbe8 |