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.1.tar.gz
(7.6 kB
view hashes)
Built Distribution
Close
Hashes for prettyformatter-1.0.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fb8cf357267eee03040dabed8a6c8522ed960ca3ad82e0540f3a0720d291d3ff |
|
MD5 | dd3899965b99065ef6ea8e62c22e51e5 |
|
BLAKE2b-256 | 41a03525ea533f815abdf9213ec743ff9014415263b8d241aac7b6782a120c73 |