flake8插件,用于检查“sys.version”或“sys.version”信息的误用`

flake8-2020的Python项目详细描述


Build StatusAzure DevOps coverage

薄片8-2020

检查sys.versionsys.version_info

<^ >当{{CD3>}或^ {CD4}}存在时,这将成为一个问题(大概) 在2020年)。

您可能还会发现早期构建的python3.10很有用

安装

pip install flake8-2020

flake8代码

CodeDescription
YTT101^{} referenced (python3.10)
YTT102^{} referenced (python3.10)
YTT103^{} compared to string (python3.10)
YTT201^{} referenced (python4)
YTT202^{} referenced (python4)
YTT203^{} compared to integer (python4)
YTT204^{} compared to integer (python4)
YTT301^{} referenced (python10)
YTT302^{} compared to string (python10)
YTT303^{} referenced (python10)

基本原理

许多代码错误地引用了sys.versionsys.version_info。 成员。特别是,当python的版本 在Python3.9被释放后。我现在的建议是3.10,因为我相信 它中断的代码更少,下面是一些会导致问题的模式:

# in python3.10 this will report as '3.1' (should be '3.10')python_version=sys.version[:3]# YTT101# in python3.10 this will report as '1' (should be '10')py_minor=sys.version[2]# in python3.10 this will be False (which goes against developer intention)sys.version>='3.5'# YTT103# correct way to do thispython_version='{}.{}'.format(*sys.version_info)py_minor=str(sys.version_info[1])sys.version_info>=(3,5)
# in python4 this will report as `False` (and suddenly run python2 code!)is_py3=sys.version_info[0]==3# YTT201# in python4 this will report as `False` (six violates YTT201!)ifsix.PY3:# YTT202print('python3!')ifsys.version_info[0]>=3andsys.version_info[1]>=5:# YTT203print('py35+')ifsys.version_info.major>=3andsys.version_info.minor>=6:# YTT204print('py36+')# correct way to do thisis_py3=sys.version_info>=(3,)ifnotsix.PY2:print('python3!')ifsys.version_info>=(3,5):print('py35+')ifsys.version_info>=(3,6):print('py36+')
# in python10 this will report as '1'python_major_version=sys.version[0]# YTT301# in python10 this will be Falseifsys.version>='3':# YTT302print('python3!')# in python10 this will be Falseifsys.version[:1]>='3':# YTT303print('python3!')# correct way to do thispython_major_version=str(sys.version_info[0])ifsys.version_info>=(3,):print('python3!')ifsys.version_info>=(3,):print('python3!')

作为预提交挂钩

有关说明,请参见pre-commit

样本.pre-commit-config.yaml

-repo:https://gitlab.com/pycqa/flake8rev:3.7.8hooks:-id:flake8additional_dependencies:[flake8-2020==1.3.0]

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

推荐PyPI第三方库


热门话题
带有服务类安卓的java altbeacon   java在OpenXava免费版本中可以创建多个用户吗?   java如何决定定义变量“private”?   java为什么GetMethodID()对不存在的方法不返回NULL?   java Get JComboBox项字符串表示法   java如何在ifs之间设置限制?   java Android错误:IllegalStateException   JavaSpring4MVC语言环境已更改,但JSP对此没有响应   java Netbeans:如何构建。jar文件随附外部文件。jar库?   Spring Petclinic项目Maven编译时出现java错误   声明Java数组增量元素的快速方法   java无法使用相对xpath找到元素   javascript无法更改标题,也无法在操作栏上显示图标   java标签不是一个接一个地动态创建的   java如何使用ThymeLeaf将对象的属性绑定到隐藏字段?   java从EJB无状态会话bean调用CDI会话范围的生产者方法   java为什么num+=array[i]与for循环中的num=num+array[i]的工作方式不同   使用jsonsimple实现jQuery UI自动完成的java JSON格式   JavaFaceletsUI:重复标记中断JSF表单验证