7 个版本 (1 个稳定版)
1.0.0 | 2019 年 11 月 18 日 |
---|---|
0.1.5 | 2019 年 9 月 3 日 |
0.1.4 | 2019 年 8 月 30 日 |
#539 in 调试
每月下载量:24
25KB
340 行
m-o
m-o 是一个命令行工具,用于解析 Python 数据类 的 reprs 并进行美化输出。名称基于 WALL-E 角色 M-O,一个喜欢整理东西的机器人。
安装
$ 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 的 pprint.pprint
函数允许常见值(元组、列表、字典等)进行美化输出,但不知道如何格式化 Python 3.7 的 dataclasses
。我经常使用数据类,并且经常需要调试深层嵌套的数据类树。数据类的 __repr__
方法将所有内容显示在一行上,难以阅读。
与其为你的数据类实现 pprint.pprint
(谁又知道如何做这件事?),不如直接打印值并将其通过管道输入此工具。数据结构将被美化输出到你的终端。
(计划/当前) 功能
- 解析字符串转义字符(0.1.5)
- 使用 "Wadler-style" 美化输出算法(0.1.6)
- 使用
pretty.rs
的稳定版本(1.0.0) - 添加命令行选项
- 缩进级别(目前为 4 个空格)(0.1.7)
- 目标宽度(列数)(0.1.7)
- 解析失败时提供更好的错误信息
- 允许在构造函数中包含非关键字参数(例如:
Dog('Pip', age=7)
)(0.1.7) - 支持符号中的多标识符路径(例如:
datetime.datetime
)(0.1.7)
依赖关系
~7.5MB
~128K SLoC