flake8的Python字符串格式化样式(SFS)插件
项目描述
flake8-sfs - Python字符串格式化插件
介绍
这是一个MIT许可的flake8插件,用于强制执行Python字符串格式化首选项。您可以从Python包索引(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?
格式化方法(违规代码SFS2##),自Python 2.6起可用,
>>> name = "Peter"
>>> price = 1.2
>>> print("Hello {}, do you have ${:0.2f}?".format(name, price))
Hello Peter, do you have $1.20?
f-字符串(违规代码SFS3##),自Python 3.6起可用,
>>> name = "Peter"
>>> price = 1.2
>>> print(f"Hello {name}, do you have ${price:0.2f}?")
我们有很多选择,但引用Python之禅,“应该有一个 - 最好是唯一明显的方式来做这件事”。这个flake8插件的存在是为了让您定义项目中允许哪种样式。
默认情况下,此插件会对所有三种样式提出异议 - 我们预计您将做出明确的选择并配置要忽略的代码。请参见下面的用例。
Flake8验证代码
flake8早期版本假设验证代码使用单个字符前缀,这在插件生态系统中导致冲突问题。从v3.0版本开始,flake8支持更长的前缀,因此此插件使用SFS作为其前缀(代表String Format Style,字符串格式风格)。
前缀SFS1 - 百分比运算符
代码 |
描述 |
SFS101 |
使用百分比运算符进行字符串字面量格式化。 |
SFS102 |
使用百分比运算符进行字节字面量格式化。 |
前缀SFS2 - 格式化方法
代码 |
描述 |
SFS201 |
使用.format方法进行字符串字面量格式化。 |
直接使用str.format(‘…’,…) |
进行字符串格式化。 |
前缀SFS3 - f-strings
代码 |
描述 |
SFS301 |
使用f-string进行字符串字面量格式化。 |
您可以在flake8中使用部分代码如SFS1来忽略所有SFS1##百分比格式化代码。
用例
如果您接受f-strings为最佳,可以使用flynt这样的工具自动转换所有代码,然后使用此flake8插件通过配置忽略SFS301违规来强制执行样式。
您可能正在维护一个仍然支持Python 2的项目,其中混合了百分比和格式化方法字符串格式化。在这里,告诉flake8忽略SFS1和SFS2前缀,并且只对Python 2中会出错(即强制执行前缀SFS3)的f-strings提出警告。
或者,您可能有一个庞大的遗留代码库,其中包含大量百分比格式化,但希望将任何格式化方法移至f-strings。在这里,您可以忽略SFS1和SFS3前缀,并仅强制执行格式化方法检查(前缀SFS2)。
或者,您可能认为旧方法是最好的,并配置flake8忽略百分比格式化,但将格式化方法或f-strings视为错误(通过忽略前缀SFS1)。
安装和用法
需要Python 3.7或更高版本。
我们建议使用pip安装插件,它会处理依赖项。
$ pip install flake8-sfs
或者,如果您使用Anaconda打包系统,以下命令将安装插件及其依赖项
$ conda install -c conda-forge flake8-sfs
当使用flake8时,新验证器应自动包含在内,可能会报告以SFS开头(如上定义)的附加验证代码。例如
$ flake8 example.py
您可以使用以下方式仅请求显示SFS代码
$ flake8 --select SFS example.py
您应该在flake8配置文件的选择或忽略列表中至少添加一些SFS验证代码。
配置
我们假设您熟悉flake8配置。
除非您的代码完全不执行字符串格式化(这很少见),否则您应该告诉flake8忽略此插件至少一个违规代码。例如
[flake8] extend-ignore = # Ignore f-strings, we like them: SFS301,
请注意,flake8允许在多行上拆分逗号分隔的列表,并允许包含哈希注释行。
版本历史
版本 |
发布日期 |
变更 |
v1.0.0 |
2023-11-01 |
|
v0.0.4 |
2022-11-01 |
|
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
开发者可以从git仓库安装插件,可选构建依赖项。
$ pip install -e .[develop]
一旦本地和在线测试通过,就进行一次新版本发布。
$ git tag vX.Y.Z $ python -m build $ git push origin master --tags $ twine upload dist/flake8?sfs-X.Y.Z*
PyPI上传应触发自动拉取请求,更新flake8-sfs conda-forge配方。
项目详情
flake8-sfs-1.0.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | fc33279ff397f1bfc7e8f16c1921264290178f4b1f07464cc2b8d8a98cde11fc |
|
MD5 | 11d23909ad714623462225248bdaef4c |
|
BLAKE2b-256 | 729b45245bac5c570d41005aed81f149c90c2aefe7718956eea5a37a48763026 |
flake8_sfs-1.0.0-py2.py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1745af5017e17728be77f1ccac842efb2bf93e63f2c010dce01bd9e2a1904789 |
|
MD5 | 2034c5f29f8b9eb79908630ad71399c0 |
|
BLAKE2b-256 | ba47fe7492b853a20a2bff3df485f99b7ae029dfd05264754f40e96603731b2c |