flake8的Python字符串格式设置样式(SFS)插件

flake8-sfs的Python项目详细描述


flake8 sfs-Python字符串格式化样式插件

Released on the Python Package Index (PyPI)Released on CondaTesting with TravisCIPyPI downloadsCode style: black

简介

这是麻省理工学院授权的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开始提供
^{pr2}$
  • 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-百分比运算符:

CodeDescription
SFS101String literal formatting using percent operator.
SFS102Bytes literal formatting using percent operator.

前缀SFS2-格式方法:

^{tb2}$

前缀SFS3-f字符串:

CodeDescription
SFS301String literal formatting using f-string.

您可以在flake8中使用类似SFS1的部分代码来忽略所有SFS1## 百分比格式代码。在

用例

如果您接受f字符串是最好的,那么您可以运行类似flynt的工具来自动转换所有代码- 然后使用这个flake8插件将其配置为 忽略SFS301冲突。在

您可能正在维护一个仍然支持Python2的项目,其中 混合使用百分比和格式方法字符串格式。告诉flake8 忽略SFS1SFS2前缀,只抱怨f字符串 这在Python2上是一个语法错误(即只强制前缀SFS3)。在

或者,您可能有一个很大的遗留代码库,其中有很多百分比 格式化-但要将任何格式方法移动到f字符串。在这里你可以 忽略SFS1SFS3前缀,只执行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允许拆分逗号分隔的列表在多条线路上, 并允许包含哈希注释行。在

版本历史

VersionReleasedChanges
v0.0.32020-01-22
  • Updates to documentation and PyPI metadata.
v0.0.22020-01-12
  • Codes now have a heirachy (so can ignore whole groups).
  • Added ^{tt21}$ check.
v0.0.12020-01-11
  • Initial public release (initial codes later reallocated).

开发者

此插件位于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。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java嵌套循环打印一个数字,旁边有相同数量的星号   java JodReports替代方案   java如何将模型类parcelable对象从片段传递到活动?   java JCS缓存删除功能不删除特定元素   如何打开。Java的dll文件。   java在这种情况下如何选择聚合根?   java从CellEditorListener获取编辑的TreeNode   Java到web服务和mysql   从openssl ec在Java中创建公钥时出现加密无效密钥异常   Java数组:添加多个数组的元素时忽略空数组   java在初始化后向fragment发送数据   JButtons的java数组正在返回void   若联接列不包含特定值,则java JPA条件生成器仅返回实体   java ActionBar问题:NPE   java Portlet是被广泛使用还是非常罕见?