跳转到主要内容

Flake8插件的Polyfill包

项目描述

flake8-polyfill 是一个包,为打算同时支持Flake8 2.x和3.x的插件提供一些兼容性辅助工具。

安装

pip install flake8-polyfill

使用方法

选项处理

与Flake8 2.x和3.x兼容性的一个问题领域是与注册选项和接收解析值。

Flake8 3.0向 add_option 方法添加了额外的参数,这些参数在Flake8 2.x上没有相同的效果。为了适应这种变化,此polyfill模块允许您这样做

from flake8_polyfill import options

class MyFlake8Plugin(object):
    @classmethod
    def add_options(cls, parser):
        options.register(parser, '--my-long-option-name',
                         parse_from_config=True,
                         comma_separated_list=True,
                         default='...',
                         help='...')
        options.register(parser, '-m', '--my-other-long-option-name',
                         parse_from_config=True,
                         normalize_paths=True,
                         default='...',
                         help='...')

    @classmethod
    def parse_options(cls, values):
        cls.my_long_option_name = values.my_long_option_name
        cls.my_other_long_option_name = values.my_other_long_option_name

并且代码在两个版本上以相同的方式工作。

检索标准输入

在Flake8 2.6之前,从插件获取标准输入上的代码很简单

import pep8

stdin = pep8.get_stdin_value()

在2.6中,您现在必须知道是使用 pep8 还是 pycodestyle,因为Flake8 2.6对 pycodestyle 进行了硬变更。

您需要知道哪个模块要使用的原因是标准输入可能会耗尽,Flake8进行了一些工作来缓存值,以确保调用总是返回所需的数据。

在3.0中,Flake8不再对这些模块进行猴子补丁。

为了适应这一点,这个包提供了

from flake8_polyfill import stdin

stdin.monkey_patch('all')
stdin.monkey_patch('pep8')
stdin.monkey_patch('pycodestyle')

这允许您使用polyfill模块猴子补丁您想要的任何内容,使其始终被猴子补丁。它也会以智能的方式这样做。

版本比较

Flake8 2.x 版本中没有包含用于轻松进行版本比较的对象。然而,Flake8 3.0 版本添加了 __version_info__ 属性。为了保持一致性,Flake8 Polyfill 将 2.x 的版本字符串转换为适合比较的元组。

from flake8_polyfill import version

if (2, 4) <= version.version_info < (2, 6):
    # ...
elif (2, 6) <= version.version_info < (3, 0):
    # ...
elif (3, 0) <= version.version_info < (4, 0):
    # ...

许可证

MIT 协议

创建者

Ian Cordasco

由以下提供支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面