Crates.io | m-o |
lib.rs | m-o |
version | 1.0.0 |
source | src |
created_at | 2019-08-28 06:16:29.434209 |
updated_at | 2019-11-18 22:52:16.894979 |
description | A command line tool for parsing Python dataclass reprs and pretty-printing them. |
homepage | https://github.com/eignnx/m-o |
repository | https://github.com/eignnx/m-o |
max_upload_size | |
id | 160288 |
size | 81,779 |
A command line tool for parsing Python dataclass reprs and pretty-printing them. The name is based on the WALL-E character M-O, a robot who liked to clean things up.
$ cargo install m-o
# my_data.py
@dataclass
class Dog:
name: str
age: int
friends: List[str]
pip = Dog("Pip", 7, ["Quincy", "Digger"])
print(pip)
$ # without m-o:
$ python my_data.py
Dog(name="Pip", age=7, friends=["Quincy", "Digger"])
$ # with m-o:
$ python my_data.py | m-o --columns 20
Dog(
name="Pip",
age=7,
friends=[
"Quincy",
"Digger",
],
)
USAGE:
m-o [OPTIONS]
FLAGS:
-h, --help Prints help information
-V, --version Prints version information
OPTIONS:
-c, --columns <columns> Specifies the width of the terminal or file that
the results will be printed to. If unspecified,
`m-o` will try to use the width of the current
terminal window. Defaults to 80 columns.
-i, --indent <indent> The number of spaces used for a single
indentation in the output. [default: 4]
Python's pprint.pprint
function allows common values (tuples, lists, dicts, etc.) to be pretty-printed, but does not know how to format Python 3.7's dataclasses
. I use dataclasses pretty frequently, and often need to debug deeply nested trees of dataclasses. The __repr__
method on dataclasses displays everything on one line which is difficult to read.
Rather than implementing pprint.pprint
for your dataclasses (who even knows how to do this anyway?), just print out the value and pipe it into this tool. The data structure will be pretty-printed to your terminal.
pretty.rs
(1.0.0)Dog('Pip', age=7)
) (0.1.7)datetime.datetime
) (0.1.7)