No project description provided
Project description
prettyformatter
Pretty formatter enables pretty formatting using hanging indents, dataclasses, ellipses, and simple customizability by registering formatters.
Installation
Windows:
py -m pip install prettyformatter
Unix/MacOS:
python3 -m pip install prettyformatter
Imports
from prettyformatter import PrettyDataclass, pprint, pformat, register
Basic Usage
Long containers are truncated.
pprint(list(range(1000)))
"""
[0, 1, 2, 3, 4, ..., 997, 998, 999]
"""
Large nested structures are split into multiple lines, while things which (reasonably) fit on a line will remain on one line.
Notice that trailing commas are used.
Notice that multi-line dictionaries have key-value pairs indented at different levels.
pprint([{i: {"ABC": [list(range(30))]} for i in range(5)}])
"""
[
{
0:
{'ABC': [[0, 1, 2, 3, 4, ..., 27, 28, 29]]},
1:
{'ABC': [[0, 1, 2, 3, 4, ..., 27, 28, 29]]},
2:
{'ABC': [[0, 1, 2, 3, 4, ..., 27, 28, 29]]},
3:
{'ABC': [[0, 1, 2, 3, 4, ..., 27, 28, 29]]},
4:
{'ABC': [[0, 1, 2, 3, 4, ..., 27, 28, 29]]},
},
]
"""
The current depth and indentation size can be modified.
pprint([{i: {"ABC": [list(range(30))]} for i in range(5)}], indent=2)
"""
[
{
0:
{'ABC': [[0, 1, 2, 3, 4, ..., 27, 28, 29]]},
1:
{'ABC': [[0, 1, 2, 3, 4, ..., 27, 28, 29]]},
2:
{'ABC': [[0, 1, 2, 3, 4, ..., 27, 28, 29]]},
3:
{'ABC': [[0, 1, 2, 3, 4, ..., 27, 28, 29]]},
4:
{'ABC': [[0, 1, 2, 3, 4, ..., 27, 28, 29]]},
},
]
"""
Dataclasses are supported by subclassing the PrettyDataclass.
from dataclasses import dataclass
from typing import List
bit_data = list(range(1000))
@dataclass
class Data(PrettyDataclass):
data: List[int]
print(Data(big_data)) # Normal print.
"""
Data(data=[0, 1, 2, 3, 4, ..., 997, 998, 999])
"""
@dataclass
class MultiData(PrettyDataclass):
x: List[int]
y: List[int]
z: List[int]
print(MultiData(big_data, big_data, big_data))
"""
MultiData(
x=[0, 1, 2, 3, 4, ..., 997, 998, 999],
y=[0, 1, 2, 3, 4, ..., 997, 998, 999],
z=[0, 1, 2, 3, 4, ..., 997, 998, 999],
)
"""
Custom formatters can be registered.
import numpy as np
@register(np.ndarray)
def pformat_ndarray(obj, specifier, depth, indent):
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]]),
}
"""
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
prettyformatter-1.0.0.tar.gz
(8.4 kB
view hashes)
Built Distribution
Close
Hashes for prettyformatter-1.0.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0ccce9483c0eb2f813b5f22ba5c6b383428b68d862b4ad444e88aeeabc9b0b3c |
|
MD5 | cce225fee548e81ae6adb03071ef2674 |
|
BLAKE2b-256 | 13a629f8d6488da02aa03f8ceeb2314b9e33d52c03b14b8201ab7cd2d5876c69 |