一个用于自动删除对keys()的额外调用的工具。
项目描述
unkey
一个工具和pre-commit钩子,用于自动删除对keys()
的额外调用。
安装
pip安装unkey
作为pre-commit钩子
有关说明,请参阅pre-commit
示例 .pre-commit-config.yaml
- repo: https://github.com/mxr/unkey
rev: v0.0.1
hooks:
- id: unkey
概述
摘要
遍历Python字典将遍历其键,因此通常不需要调用keys()
。删除这些调用可以使您的代码更简洁、更易读。
排除代码
unkey
不支持flake8的# noqa
或mypy的#type: ignore
的等价功能来停止重写。直到此功能可用之前,请使用中间变量以防止重写。
# will be rewritten
min({1: 2, 3: 4}.keys()) # becomes min({1: 2, 3: 4})
# will not be rewritten
keys = {1: 2, 3: 4}.keys()
min(keys)
免责声明
由于AST解析并不总是告诉我们对象的类型,因此可能会有误报和不希望的改写或错误。话虽如此,此工具的设计是宁可不重写,而不是非常聪明地尽可能多地重写。要排除重写,请参阅上述部分。PR始终欢迎帮助!
功能
内置
重写具有可迭代参数的内置调用
# simple cases
-min({1: 2, 3: 4}.keys())
+min({1: 2, 3: 4})
-min(d.keys())
+min(d)
-min(f().keys())
+min(f())
# more complex cases
-min(d1().x.y(1, 2 ,3, (4, 5)).keys())
+min(d1().x.y(1, 2, 3, (4, 5)))
zip
重写zip()
中的相关参数
-zip(d.keys(), {}.keys(), f().keys(), [1, 2, 3])
+zip(d, {}, f(), [1, 2, 3])
map
/ filter
重写map
和filter
中的相关参数
-map(lambda x: x*2, d.keys())
+map(lambda x: x*2, d)
-filter(None, d.keys())
+filteR(None, d)
in
使用in
重写相关比较
-if x in d.keys():
+if x in d:
pass
列表推导式
重写相关的列表/字典/集合推导式和生成器表达式
-[x for x in d.keys()]
+[x for x in d]
-(x for x in d.keys())
+(x for x in d)
-{x for x in d.keys()}
+{x for x in d}
-{x: x for x in d.keys()}
+{x: x for x in d}
迭代
重写迭代
-for _ in d.keys(): pass
+for _ in d: pass
-for _ in {}.keys(): pass
+for _ in {}: pass
-for _ in f().keys(): pass
+for _ in f(): pass
要在此空间中进行额外的linting,请查看flake8-comprehensions
。
致谢
没有Anthony Sottile(https://github.com/asottile)的指导和工具,这个工具将无法实现,特别是pyupgrade
和pre-commit
。 unkey
在前面者的基础上进行了大量修改,并在可能的地方注明了代码归属。谢谢!
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪一个,请了解有关安装包的更多信息。
源代码分布
unkey-0.0.1.tar.gz (6.0 kB 查看哈希值)
构建分布
unkey-0.0.1-py2.py3-none-any.whl (6.2 kB 查看哈希值)
关闭
unkey-0.0.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9dfc15bbaf1648e127c72bbb6881f149ae936b627e64c7262b0d15ade40cce4f |
|
MD5 | 71b32704b6a98f0ee76d50c6b99e3712 |
|
BLAKE2b-256 | 371a597df3a528fff3828d1835286f5e25e7216fa2b0c63e34ed4e1cfaf5530e |
关闭
unkey-0.0.1-py2.py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 86be774fc7159449569b255a7f60a5e221e3a437815fb35c3a6af04232bc799e |
|
MD5 | a4624d1bbcb6101dfc7d94521110586f |
|
BLAKE2b-256 | 57312518cedb55f56b5b32236208f9f71ca5df9d948a9faedb647ea20a80779b |