Pretty formatter enables pretty formatting using hanging indents, dataclasses, ellipses, and simple customizability by registering formatters.
Project description
prettyformatter
Pretty formatter enables pretty formatting using aligned and hanging indents for JSON, dataclasses, named tuples, and any custom formatted object such as Numpy arrays.
For the full documentation, see here.
Installation
Windows:
py -m pip install prettyformatter
Unix/MacOS:
python3 -m pip install prettyformatter
Imports
from prettyformatter import PrettyClass, PrettyDataclass
from prettyformatter import pprint, pformat, register
JSON Data
prettyformatter
works with JSON data.
batters = [
{"id": "1001", "type": "Regular"},
{"id": "1002", "type": "Chocolate"},
{"id": "1003", "type": "Blueberry"},
{"id": "1004", "type": "Devil's Food"},
]
toppings = [
{"id": "5001", "type": None},
{"id": "5002", "type": "Glazed"},
{"id": "5005", "type": "Sugar"},
{"id": "5007", "type": "Powdered Sugar"},
{"id": "5006", "type": "Chocolate with Sprinkles"},
{"id": "5003", "type": "Chocolate"},
{"id": "5004", "type": "Maple"},
]
data = {"id": "0001", "type": "donut", "name": "Cake", "ppu": 0.55, "batters": batters, "topping": toppings}
pprint
:
prettyformatter
attempts to compromise between alignment,
readability, and horizontal/vertical compactness.
Support for JSON data is also as easy as pprint(json=True)
.
from prettyformatter import pprint
pprint(data, json=True)
"""
{
"id" : "0001",
"type" : "donut",
"name" : "Cake",
"ppu" : 0.55,
"batters":
[
{"id": "1001", "type": "Regular"},
{"id": "1002", "type": "Chocolate"},
{"id": "1003", "type": "Blueberry"},
{"id": "1004", "type": "Devil's Food"}
],
"topping":
[
{"id": "5001", "type": None},
{"id": "5002", "type": "Glazed"},
{"id": "5005", "type": "Sugar"},
{"id": "5007", "type": "Powdered Sugar"},
{"id": "5006", "type": "Chocolate with Sprinkles"},
{"id": "5003", "type": "Chocolate"},
{"id": "5004", "type": "Maple"}
]
}
"""
pprint
supports the same parameters as print
, meaning saving to
files is as easy as file=file
.
from prettyformatter import pprint
with open("cake.json", mode="w") as file:
pprint(data, json=True, file=file)
PrettyDataclass
prettyformatter
supports dataclasses easily.
@dataclass
class Person(PrettyDataclass):
name: str
birthday: str
phone_number: str
address: str
print(Person("Jane Doe", "2001-01-01", "012-345-6789", "123 Sample St."))
"""
Person(
name=
"Jane Doe",
birthday=
"2001-01-01",
phone_number=
"012-345-6789",
address=
"123 Sample St.",
)
"""
register
Custom formatters for existing classes can be registered.
import numpy as np
@register(np.ndarray)
def pformat_ndarray(obj, specifier, depth, indent, shorten, json):
if json:
return pformat(obj.tolist(), specifier, depth, indent, shorten, json)
with np.printoptions(formatter=dict(all=lambda x: format(x, specifier))):
return repr(obj).replace("\n", "\n" + " " * depth)
pprint(dict.fromkeys("ABC", np.arange(9).reshape(3, 3)))
"""
{
"A":
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]]),
"B":
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]]),
"C":
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]]),
}
"""
pprint(dict.fromkeys("ABC", np.arange(9).reshape(3, 3)), json=True)
"""
{
"A" : [[0, 1, 2], [3, 4, 5], [6, 7, 8]],
"B" : [[0, 1, 2], [3, 4, 5], [6, 7, 8]],
"C" : [[0, 1, 2], [3, 4, 5], [6, 7, 8]]
}
"""
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 prettyformatter-2.0.3.tar.gz
.
File metadata
- Download URL: prettyformatter-2.0.3.tar.gz
- Upload date:
- Size: 13.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.10.1 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 489df3ca48845148ee829fa7a9883dcfc42c034ffaf82196e3cc3aded1583d31 |
|
MD5 | a18611d139c02cf58c935c8172af67ff |
|
BLAKE2b-256 | 67a7debb74399838b22c01636c0cca89b5743bfa0ef4ab1d56c60b5ca45464d6 |
File details
Details for the file prettyformatter-2.0.3-py3-none-any.whl
.
File metadata
- Download URL: prettyformatter-2.0.3-py3-none-any.whl
- Upload date:
- Size: 15.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.10.1 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e77a15b08ed0e4b395b429cfd43c3267be3a4e1503c772633018f075f2e17f4b |
|
MD5 | ec9e881d3c776b10b363e3daf810eb4b |
|
BLAKE2b-256 | dd20aca1646952d186b9da381bfe5f947ac6334c317dbc9fd591fde84b25854a |