flake8的Python字符串格式设置样式(SFS)插件
flake8-sfs的Python项目详细描述
flake8 sfs-Python字符串格式化样式插件
简介
这是麻省理工学院授权的flake8插件,用于强制执行Python字符串格式 偏爱。它可以从Python Package Index (PyPI)安装。在
由于历史原因,Python编程语言已经积累了 字符串格式的方法。主要有三个方面:
- 百分比运算符(冲突代码SFS1##),如下例所示:
>>> name="Peter">>> price=1.2>>> print("Hello %s, do you have $%0.2f?"%(name,price))Hello Peter, do you have $1.20?
- Format方法(违例代码SFS2##),自python2.6开始提供
- f-strings(违例代码SFS3##),从python3.6开始提供
>>> name="Peter">>> price=1.2>>> print(f"Hello {name}, do you have ${price:0.2f}?")
我们很想选择,但引用Zen of Python,应该有一个-和 最好只有一种明显的方法。这个flake8插件的存在是为了让 您可以定义您的项目允许哪些样式。在
默认情况下,这个插件会抱怨这三种风格——我们希望你能做到 显式选择和配置要忽略的代码。请参阅下面的用例。在
Flake8验证代码
早期版本的flake8假定验证使用一个字符前缀 代码,这就成了插件生态系统中的冲突问题。因为 v3.0,flake8支持更长的前缀,因此此插件使用SFS 作为其前缀(字符串格式样式的缩写)。在
前缀SFS1-百分比运算符:
Code | Description |
SFS101 | String literal formatting using percent operator. |
SFS102 | Bytes literal formatting using percent operator. |
前缀SFS2-格式方法:
^{tb2}$前缀SFS3-f字符串:
Code | Description |
SFS301 | String literal formatting using f-string. |
您可以在flake8中使用类似SFS1的部分代码来忽略所有SFS1## 百分比格式代码。在
用例
如果您接受f字符串是最好的,那么您可以运行类似flynt的工具来自动转换所有代码- 然后使用这个flake8插件将其配置为 忽略SFS301冲突。在
您可能正在维护一个仍然支持Python2的项目,其中 混合使用百分比和格式方法字符串格式。告诉flake8 忽略SFS1和SFS2前缀,只抱怨f字符串 这在Python2上是一个语法错误(即只强制前缀SFS3)。在
或者,您可能有一个很大的遗留代码库,其中有很多百分比 格式化-但要将任何格式方法移动到f字符串。在这里你可以 忽略SFS1和SFS3前缀,只执行format方法 检查(SFS2前缀)。在
或者您可能会说旧的方法是最好的,并配置flake8来忽略 百分比格式,但将format方法或f-strings视为错误 (通过忽略SFS1前缀)。在
安装和使用
python3.6或更高版本是必需的(因为我们需要解析Python语法 但flake8和这个插件仍然可以用于 代码支持旧版本的Python。在
我们建议使用pip安装插件,pip处理依赖关系:
$ pip install flake8-sfs
或者,如果您使用的是Python包装系统,则 命令将安装插件及其依赖项:
$ conda install -c conda-forge flake8-sfs
当使用flake8时,应该自动包含新的验证器 现在可以报告以SFS开头的其他验证代码(如定义 以上)。例如:
$ flake8 example.py
您只能使用以下命令请求显示SFS代码:
$ flake8 --select SFS example.py
您应该至少向flake8配置添加一些SFS验证代码 文件的选择或忽略列表。在
配置
我们假设你熟悉flake8 configuration。在
除非您的代码根本不执行任何字符串格式化(这是不寻常的), 你应该告诉flake8至少忽略这个插件的一个违规代码。 例如:
[flake8] extend-ignore = # Ignore f-strings, we like them: SFS301,
请注意,flake8允许拆分逗号分隔的列表在多条线路上, 并允许包含哈希注释行。在
版本历史
Version | Released | Changes |
v0.0.3 | 2020-01-22 |
|
v0.0.2 | 2020-01-12 |
|
v0.0.1 | 2020-01-11 |
|
开发者
此插件位于GitHub的https://github.com/peterjc/flake8-sfs
在本地和TravisCI上进行测试后,要制作新版本:
$ git tag vX.Y.Z $ python setup.py sdist --formats=gztar $ twine upload dist/flake8-sfs-X.Y.Z.tar.gz $ git push origin master --tags
PyPI上传应该触发一个自动请求来更新 flake8-sfs conda-forge recipe。在
- 项目
标签: