mirror of
https://github.com/astral-sh/ruff.git
synced 2025-09-28 04:45:01 +00:00
New pycodestyle.max-line-length
option (#8039)
## Summary This PR introduces a new `pycodestyl.max-line-length` option that allows overriding the global `line-length` option for `E501` only. This is useful when using the formatter and `E501` together, where the formatter uses a lower limit and `E501` is only used to catch extra-long lines. Closes #7644 ## Considerations ~~Our fix infrastructure asserts in some places that the fix doesn't exceed the configured `line-width`. With this change, the question is whether it should use the `pycodestyle.max-line-width` or `line-width` option to make that decision. I opted for the global `line-width` for now, considering that it should be the lower limit. However, this constraint isn't enforced and users not using the formatter may only specify `pycodestyle.max-line-width` because they're unaware of the global option (and it solves their need).~~ ~~I'm interested to hear your thoughts on whether we should use `pycodestyle.max-line-width` or `line-width` to decide on whether to emit a fix or not.~~ Edit: The linter users `pycodestyle.max-line-width`. The `line-width` option has been removed from the `LinterSettings` ## Test Plan Added integration test. Built the documentation and verified that the links are correct.
This commit is contained in:
parent
2587aef1ea
commit
9feb86caa4
17 changed files with 125 additions and 28 deletions
|
@ -21,6 +21,7 @@ use ruff_linter::line_width::{LineLength, TabSize};
|
|||
use ruff_linter::registry::RuleNamespace;
|
||||
use ruff_linter::registry::{Rule, RuleSet, INCOMPATIBLE_CODES};
|
||||
use ruff_linter::rule_selector::{PreviewOptions, Specificity};
|
||||
use ruff_linter::rules::pycodestyle;
|
||||
use ruff_linter::settings::rule_table::RuleTable;
|
||||
use ruff_linter::settings::types::{
|
||||
FilePattern, FilePatternSet, PerFileIgnore, PreviewMode, PythonVersion, SerializationFormat,
|
||||
|
@ -183,6 +184,8 @@ impl Configuration {
|
|||
let lint = self.lint;
|
||||
let lint_preview = lint.preview.unwrap_or(global_preview);
|
||||
|
||||
let line_length = self.line_length.unwrap_or_default();
|
||||
|
||||
Ok(Settings {
|
||||
cache_dir: self
|
||||
.cache_dir
|
||||
|
@ -225,7 +228,6 @@ impl Configuration {
|
|||
.unwrap_or_else(|| DUMMY_VARIABLE_RGX.clone()),
|
||||
external: FxHashSet::from_iter(lint.external.unwrap_or_default()),
|
||||
ignore_init_module_imports: lint.ignore_init_module_imports.unwrap_or_default(),
|
||||
line_length: self.line_length.unwrap_or_default(),
|
||||
tab_size: self.tab_size.unwrap_or_default(),
|
||||
namespace_packages: self.namespace_packages.unwrap_or_default(),
|
||||
per_file_ignores: resolve_per_file_ignores(
|
||||
|
@ -346,10 +348,14 @@ impl Configuration {
|
|||
.map(Pep8NamingOptions::try_into_settings)
|
||||
.transpose()?
|
||||
.unwrap_or_default(),
|
||||
pycodestyle: lint
|
||||
.pycodestyle
|
||||
.map(PycodestyleOptions::into_settings)
|
||||
.unwrap_or_default(),
|
||||
pycodestyle: if let Some(pycodestyle) = lint.pycodestyle {
|
||||
pycodestyle.into_settings(line_length)
|
||||
} else {
|
||||
pycodestyle::settings::Settings {
|
||||
max_line_length: line_length,
|
||||
..pycodestyle::settings::Settings::default()
|
||||
}
|
||||
},
|
||||
pydocstyle: lint
|
||||
.pydocstyle
|
||||
.map(PydocstyleOptions::into_settings)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue