Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

Rework specifying and layering of configuration

未关闭
#332 9 条评论 1 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
5/5
预计耗时
一周以上
新手友好度
25/100
Issue 类型
功能
描述清晰度
基本清楚
活跃度
停滞
技术栈
python
领域
cli, tooling

调研方向

首先跟踪 flake8 的 CLI 解析、配置文件加载和配置分层路径;该 issue 未指定具体文件或测试。将当前行为与每个 shell 示例进行比较,然后定义重复使用 --config、移除 --append-config 以及处理 --isolated 所需的解析顺序和优先级规则。实现并验证所列行为即表示完成。

由索引模型根据 Issue 内容生成。

描述

In GitLab by @ericvw on Dec 29, 2019, 07:30

After having spent some time making changes in CLI parsing, the configuration
file loading, and the layering of the configuration options, I would like to
simplify how configuration gets specified and layered. I wanted to raise this
issue for awareness and discussion before proceeding with this larger goal.

The user-facing would be the following:

  • Allow --config to be used multiple times for specifying configuration
    files. Options in subsequent --config file take precedence. The command
    line arguments in the configuration files will be used as if they were
    provided first on the command line before other options that are specified on
    the command line.
  • Remove --append-config in favor of --config now that --config can be
    specified multiple times.
  • Keep --isolated to ignore the automatic detection of configuration (i.e.,
    user configuration and the searching-up-the-paths configuration). However,
    --config may be specified with --isolated to provide files to be parsed.

Below are the behaviors expected if the above changes were implemented:

# Configuration options found in the user's config path followed by
# configuration options found locally taking precedence.
flake8 file1.py file2.py

# Same as above with options in 'config.ini' taking precedence.
flake8 --config config.ini file1.py file2.py

# The '--max-line-length 99' takes precedence over the option specified in
# any configuration file.
flake8 --max-line-length 99 --config config.ini file1.py file2.py

# Configuration options in 'config2.ini' takes precedence over those in 'config1.ini'.
flake8 --config config1.ini --config2.ini file1.py file2.py

# Configuration options in 'config1.ini' takes precedence over those in 'config2.ini'.
flake8 --config2.ini --config config1.ini file1.py file2.py

# Default configuration is used and not read from the user's config path nor
# detecting local configuration.
flake8 --isolated file1.py file2.py

# Same as above, however, configuration options in 'config.ini' are used as if they were
# specified on the command line.
flake8 --isolated --config 'config.ini' file1.py file2.py

With these changes, the benefits are the following:

  • Configuration files from --config are just appended to a single list to be
    parsed. If --isolated is not specified, elide the user and local files
    included in the list of configuration files to parse.
  • Handling of single configuration and what is considered "appended"
    configuration is exactly the same.
  • With --isolated present, there is still an elegant way to specify a set of
    configuration options via file without having to put them all on the command
    line.

The following trade-offs are the following:

  • The changes are backward-incompatible.
    • Removal of --append-config.
    • Changing the behavior of --isolated to allow --config in addition to.
    • Change the behavior of --config to be specified multiple times.

@asottile and @sigmavirus24, would greatly appreciate your input and feedback
before I proceed forward. Thanks!

主要语言
Python
星标
3.8k
派生
356
平均合并
3 小时 25 分钟
30 天内合并 PR
5

环境准备

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

PyCQA/flake8 的其他 Issue

查看 PyCQA/flake8 的全部 Issue

相似的 Issue

更多 Python Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。