-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feat: detect changes also in configuration files #4169
Feat: detect changes also in configuration files #4169
Conversation
…es are: pyproject.toml, ruff.toml,.ruff.toml
PR Check ResultsEcosystem✅ ecosystem check detected no changes. BenchmarkLinux
Windows
|
crates/ruff_cli/src/lib.rs
Outdated
.unwrap_or_default() | ||
}); | ||
if py_changed { | ||
if has_file_changed(&event?.paths) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we have to recompute most of the variables defined above starting from line 115 whenever a pyproject.toml
changes. For example, you can configure the output format in the settings and we should respect that change if we support reloading configuration files.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Absolutely! Is there now something more to be recalculated other than pyproject_strategy?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not too familiar with that code. A safe assumption would be to re-compute everything that is derived from the pyproject_strategy
(all settings that are supported in the configuration and aren't CLI options only). I wonder if we even have to be clever about it or if we can simply call check
again. The main challenge that I see with that approach is that we might mess up the printer output because watch uses write_continuously
crates/ruff_cli/src/lib.rs
Outdated
if let (Some(file_name), Some(suffix)) = (path.file_name(), path.extension()) { | ||
if let (Some(file_name), Some(suffix)) = (file_name.to_str(), suffix.to_str()) { | ||
if WATCHED_FILES.contains(&file_name) || WATCHED_FILES.contains(&suffix) { | ||
return true; | ||
} | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nit: I recommend matching on the extension or file name explicitly. E.g. we don't want to match a file named py
if let (Some(file_name), Some(suffix)) = (path.file_name(), path.extension()) { | |
if let (Some(file_name), Some(suffix)) = (file_name.to_str(), suffix.to_str()) { | |
if WATCHED_FILES.contains(&file_name) || WATCHED_FILES.contains(&suffix) { | |
return true; | |
} | |
} | |
} | |
if matches!(path.file_name(), Some("pyproject.toml" | "ruff.toml" |".ruff.toml")) { | |
true | |
} else if matches!(path.extension(), Some("py" | "pyi")) { | |
true | |
} else { false } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good catch!
* pyproject_strategy will be recalculated if configuration file has changed * refactor unit tests
crates/ruff_cli/src/lib.rs
Outdated
pub struct FileChangeDetector<'a> { | ||
extensions: Vec<&'a str>, | ||
config_files: Vec<&'a str>, | ||
has_configuration_changed: bool, | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Making this configurable seems overkill for now. I would prefer matching statically on the file name and extension. That should also allow the compiler to optimize the code better (see my original comment on how to implement it with a match).
crates/ruff_cli/src/lib.rs
Outdated
has_configuration_changed: bool, | ||
} | ||
|
||
impl FileChangeDetector<'_> { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We can keep this a standalone function and instead introduce a new tri-boolean type to signal whether to ignore the change, it's a python file, or a configuration change
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
enum ChangeKind {
Configuration,
SourceFile,
Ignore
}
fn detect_change(paths: &[PathBuf]) -> ChangeKind {
...
}
crates/ruff_cli/src/lib.rs
Outdated
pyproject_strategy = resolve::resolve( | ||
cli.isolated, | ||
cli.config.as_deref(), | ||
&overrides, | ||
cli.stdin_filename.as_deref(), | ||
)?; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Only re-computing the pyproject_strategy
, is, unfortunately, not sufficient. There are multiple derived variables on line 107-185 that need to be recomputed too
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I added a TODO for this.
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [ruff](https://github.com/charliermarsh/ruff) ([changelog](https://github.com/charliermarsh/ruff/releases)) | `^0.0.265` -> `^0.0.267` | [![age](https://badges.renovateapi.com/packages/pypi/ruff/0.0.267/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/pypi/ruff/0.0.267/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/pypi/ruff/0.0.267/compatibility-slim/0.0.265)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/pypi/ruff/0.0.267/confidence-slim/0.0.265)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>charliermarsh/ruff</summary> ### [`v0.0.267`](https://github.com/charliermarsh/ruff/releases/tag/v0.0.267) [Compare Source](https://github.com/charliermarsh/ruff/compare/v0.0.266...v0.0.267) <!-- Release notes generated using configuration in .github/release.yml at main --> #### Summary Follow-up release to v0.0.266 to fix an issue with `python -m ruff`- and `import ruff`-based workflows. (No new rules or functionality.) #### What's Changed ##### Rules - Implement `RUF010` to detect explicit type conversions within f-strings by [@​LotemAm](https://github.com/LotemAm) in [https://github.com/charliermarsh/ruff/pull/4387](https://github.com/charliermarsh/ruff/pull/4387) ##### Other Changes - Workaround for maturin bug by [@​konstin](https://github.com/konstin) in [https://github.com/charliermarsh/ruff/pull/4399](https://github.com/charliermarsh/ruff/pull/4399) #### New Contributors - [@​OMEGARAZER](https://github.com/OMEGARAZER) made their first contribution in [https://github.com/charliermarsh/ruff/pull/3938](https://github.com/charliermarsh/ruff/pull/3938) - [@​LotemAm](https://github.com/LotemAm) made their first contribution in [https://github.com/charliermarsh/ruff/pull/4387](https://github.com/charliermarsh/ruff/pull/4387) **Full Changelog**: astral-sh/ruff@v0.0.266...v0.0.267 ### [`v0.0.266`](https://github.com/charliermarsh/ruff/releases/tag/v0.0.266) [Compare Source](https://github.com/charliermarsh/ruff/compare/v0.0.265...v0.0.266) <!-- Release notes generated using configuration in .github/release.yml at main --> #### What's Changed ##### Breaking Changes - Remove deprecated `update-check` setting by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4313](https://github.com/charliermarsh/ruff/pull/4313) - JSON Emitter: Use one indexed column numbers for edits by [@​MichaReiser](https://github.com/MichaReiser) in [https://github.com/charliermarsh/ruff/pull/4007](https://github.com/charliermarsh/ruff/pull/4007) ##### Rules - \[`pygrep-hooks`] Implement pygrep-hook's Mock-mistake diagnostic by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4366](https://github.com/charliermarsh/ruff/pull/4366) - \[`pylint`] Implement `nested-min-max` (`W3301`) by [@​mccullocht](https://github.com/mccullocht) in [https://github.com/charliermarsh/ruff/pull/4200](https://github.com/charliermarsh/ruff/pull/4200) - \[`flynt`] Implement Flynt static string join transform as FLY002 by [@​akx](https://github.com/akx) in [https://github.com/charliermarsh/ruff/pull/4196](https://github.com/charliermarsh/ruff/pull/4196) - \[`pylint`] Include positional- and keyword-only arguments in too-many-arguments by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4329](https://github.com/charliermarsh/ruff/pull/4329) - \[`ruff`] Update confusable character mapping by [@​akx](https://github.com/akx) in [https://github.com/charliermarsh/ruff/pull/4274](https://github.com/charliermarsh/ruff/pull/4274) ##### Settings - Add .git-rewrite folder to default ignored folder paths by [@​jleclanche](https://github.com/jleclanche) in [https://github.com/charliermarsh/ruff/pull/4261](https://github.com/charliermarsh/ruff/pull/4261) - Feat: detect changes also in configuration files by [@​mikeleppane](https://github.com/mikeleppane) in [https://github.com/charliermarsh/ruff/pull/4169](https://github.com/charliermarsh/ruff/pull/4169) ##### Bug Fixes - Revert the B027 autofix logic by [@​aacunningham](https://github.com/aacunningham) in [https://github.com/charliermarsh/ruff/pull/4310](https://github.com/charliermarsh/ruff/pull/4310) - Consider Flask app logger as logger candidate by [@​dhruvmanila](https://github.com/dhruvmanila) in [https://github.com/charliermarsh/ruff/pull/4253](https://github.com/charliermarsh/ruff/pull/4253) - Enforce max-doc-length for multi-line docstrings by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4347](https://github.com/charliermarsh/ruff/pull/4347) - Avoid re-using imports beyond current edit site by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4378](https://github.com/charliermarsh/ruff/pull/4378) - Respect insertion location when importing symbols by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4258](https://github.com/charliermarsh/ruff/pull/4258) - Fix jemalloc page size on aarch64 by [@​MichaReiser](https://github.com/MichaReiser) in [https://github.com/charliermarsh/ruff/pull/4247](https://github.com/charliermarsh/ruff/pull/4247) - Fix replace_whitespace() tabulation to space by [@​JonathanPlasse](https://github.com/JonathanPlasse) in [https://github.com/charliermarsh/ruff/pull/4226](https://github.com/charliermarsh/ruff/pull/4226) - Avoid fixing `PD002` in a lambda expression by [@​dhruvmanila](https://github.com/dhruvmanila) in [https://github.com/charliermarsh/ruff/pull/4286](https://github.com/charliermarsh/ruff/pull/4286) - Avoid `D403` if first char cannot be uppercased by [@​dhruvmanila](https://github.com/dhruvmanila) in [https://github.com/charliermarsh/ruff/pull/4283](https://github.com/charliermarsh/ruff/pull/4283) - Avoid panics for f-string rewrites at start-of-file by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4291](https://github.com/charliermarsh/ruff/pull/4291) - Rewrite `not not a` as `bool(a)` in boolean contexts by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4294](https://github.com/charliermarsh/ruff/pull/4294) - Include static and class methods in in abstract decorator list by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4298](https://github.com/charliermarsh/ruff/pull/4298) - Specify exact command in incorrect parentheses suggestion by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4300](https://github.com/charliermarsh/ruff/pull/4300) - Ignore `TRY301` exceptions without except handlers by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4301](https://github.com/charliermarsh/ruff/pull/4301) - Preserve whitespace around `ListComp` brackets in `C419` by [@​dhruvmanila](https://github.com/dhruvmanila) in [https://github.com/charliermarsh/ruff/pull/4099](https://github.com/charliermarsh/ruff/pull/4099) - Tweak capitalization of B021 message by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4350](https://github.com/charliermarsh/ruff/pull/4350) - Avoid debug panic with empty indent replacement by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4364](https://github.com/charliermarsh/ruff/pull/4364) - Use target name in hardcoded-password diagnostics by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4365](https://github.com/charliermarsh/ruff/pull/4365) - Avoid underflow in expected-special-method-signature by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4377](https://github.com/charliermarsh/ruff/pull/4377) - Respect `__all__` imports when determining definition visibility by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4357](https://github.com/charliermarsh/ruff/pull/4357) - Ignore some methods on list in `flake8-boolean-trap` by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4385](https://github.com/charliermarsh/ruff/pull/4385) - Fix false positives in PD002 by [@​evanrittenhouse](https://github.com/evanrittenhouse) in [https://github.com/charliermarsh/ruff/pull/4337](https://github.com/charliermarsh/ruff/pull/4337) - Run autofix on initial watcher pass by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4311](https://github.com/charliermarsh/ruff/pull/4311) - Avoid SIM105 autofixes that would remove comments by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4330](https://github.com/charliermarsh/ruff/pull/4330) - Handle `.encode` calls on parenthesized expressions by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4338](https://github.com/charliermarsh/ruff/pull/4338) - Truncate `SyntaxError`s before newline character by [@​MichaReiser](https://github.com/MichaReiser) in [https://github.com/charliermarsh/ruff/pull/4124](https://github.com/charliermarsh/ruff/pull/4124) - Use non-empty ranges for logical-lines diagnostics by [@​MichaReiser](https://github.com/MichaReiser) in [https://github.com/charliermarsh/ruff/pull/4133](https://github.com/charliermarsh/ruff/pull/4133) #### New Contributors - [@​jleclanche](https://github.com/jleclanche) made their first contribution in [https://github.com/charliermarsh/ruff/pull/4261](https://github.com/charliermarsh/ruff/pull/4261) - [@​aureliojargas](https://github.com/aureliojargas) made their first contribution in [https://github.com/charliermarsh/ruff/pull/4306](https://github.com/charliermarsh/ruff/pull/4306) - [@​intgr](https://github.com/intgr) made their first contribution in [https://github.com/charliermarsh/ruff/pull/4304](https://github.com/charliermarsh/ruff/pull/4304) - [@​mikeleppane](https://github.com/mikeleppane) made their first contribution in [https://github.com/charliermarsh/ruff/pull/4169](https://github.com/charliermarsh/ruff/pull/4169) - [@​dependabot](https://github.com/dependabot) made their first contribution in [https://github.com/charliermarsh/ruff/pull/4354](https://github.com/charliermarsh/ruff/pull/4354) **Full Changelog**: astral-sh/ruff@v0.0.265...v0.0.266 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/ixm-one/pytest-cmake-presets). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS43OS4xIiwidXBkYXRlZEluVmVyIjoiMzUuNzkuMSIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==--> Signed-off-by: Renovate Bot <bot@renovateapp.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [ruff](https://github.com/charliermarsh/ruff) ([changelog](https://github.com/charliermarsh/ruff/releases)) | `==0.0.265` -> `==0.0.267` | [![age](https://badges.renovateapi.com/packages/pypi/ruff/0.0.267/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/pypi/ruff/0.0.267/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/pypi/ruff/0.0.267/compatibility-slim/0.0.265)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/pypi/ruff/0.0.267/confidence-slim/0.0.265)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>charliermarsh/ruff</summary> ### [`v0.0.267`](https://github.com/charliermarsh/ruff/releases/tag/v0.0.267) [Compare Source](https://github.com/charliermarsh/ruff/compare/v0.0.266...v0.0.267) <!-- Release notes generated using configuration in .github/release.yml at main --> #### Summary Follow-up release to v0.0.266 to fix an issue with `python -m ruff`- and `import ruff`-based workflows. (No new rules or functionality.) #### What's Changed ##### Rules - Implement `RUF010` to detect explicit type conversions within f-strings by [@​LotemAm](https://github.com/LotemAm) in [https://github.com/charliermarsh/ruff/pull/4387](https://github.com/charliermarsh/ruff/pull/4387) ##### Other Changes - Workaround for maturin bug by [@​konstin](https://github.com/konstin) in [https://github.com/charliermarsh/ruff/pull/4399](https://github.com/charliermarsh/ruff/pull/4399) #### New Contributors - [@​OMEGARAZER](https://github.com/OMEGARAZER) made their first contribution in [https://github.com/charliermarsh/ruff/pull/3938](https://github.com/charliermarsh/ruff/pull/3938) - [@​LotemAm](https://github.com/LotemAm) made their first contribution in [https://github.com/charliermarsh/ruff/pull/4387](https://github.com/charliermarsh/ruff/pull/4387) **Full Changelog**: astral-sh/ruff@v0.0.266...v0.0.267 ### [`v0.0.266`](https://github.com/charliermarsh/ruff/releases/tag/v0.0.266) [Compare Source](https://github.com/charliermarsh/ruff/compare/v0.0.265...v0.0.266) <!-- Release notes generated using configuration in .github/release.yml at main --> #### What's Changed ##### Breaking Changes - Remove deprecated `update-check` setting by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4313](https://github.com/charliermarsh/ruff/pull/4313) - JSON Emitter: Use one indexed column numbers for edits by [@​MichaReiser](https://github.com/MichaReiser) in [https://github.com/charliermarsh/ruff/pull/4007](https://github.com/charliermarsh/ruff/pull/4007) ##### Rules - \[`pygrep-hooks`] Implement pygrep-hook's Mock-mistake diagnostic by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4366](https://github.com/charliermarsh/ruff/pull/4366) - \[`pylint`] Implement `nested-min-max` (`W3301`) by [@​mccullocht](https://github.com/mccullocht) in [https://github.com/charliermarsh/ruff/pull/4200](https://github.com/charliermarsh/ruff/pull/4200) - \[`flynt`] Implement Flynt static string join transform as FLY002 by [@​akx](https://github.com/akx) in [https://github.com/charliermarsh/ruff/pull/4196](https://github.com/charliermarsh/ruff/pull/4196) - \[`pylint`] Include positional- and keyword-only arguments in too-many-arguments by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4329](https://github.com/charliermarsh/ruff/pull/4329) - \[`ruff`] Update confusable character mapping by [@​akx](https://github.com/akx) in [https://github.com/charliermarsh/ruff/pull/4274](https://github.com/charliermarsh/ruff/pull/4274) ##### Settings - Add .git-rewrite folder to default ignored folder paths by [@​jleclanche](https://github.com/jleclanche) in [https://github.com/charliermarsh/ruff/pull/4261](https://github.com/charliermarsh/ruff/pull/4261) - Feat: detect changes also in configuration files by [@​mikeleppane](https://github.com/mikeleppane) in [https://github.com/charliermarsh/ruff/pull/4169](https://github.com/charliermarsh/ruff/pull/4169) ##### Bug Fixes - Revert the B027 autofix logic by [@​aacunningham](https://github.com/aacunningham) in [https://github.com/charliermarsh/ruff/pull/4310](https://github.com/charliermarsh/ruff/pull/4310) - Consider Flask app logger as logger candidate by [@​dhruvmanila](https://github.com/dhruvmanila) in [https://github.com/charliermarsh/ruff/pull/4253](https://github.com/charliermarsh/ruff/pull/4253) - Enforce max-doc-length for multi-line docstrings by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4347](https://github.com/charliermarsh/ruff/pull/4347) - Avoid re-using imports beyond current edit site by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4378](https://github.com/charliermarsh/ruff/pull/4378) - Respect insertion location when importing symbols by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4258](https://github.com/charliermarsh/ruff/pull/4258) - Fix jemalloc page size on aarch64 by [@​MichaReiser](https://github.com/MichaReiser) in [https://github.com/charliermarsh/ruff/pull/4247](https://github.com/charliermarsh/ruff/pull/4247) - Fix replace_whitespace() tabulation to space by [@​JonathanPlasse](https://github.com/JonathanPlasse) in [https://github.com/charliermarsh/ruff/pull/4226](https://github.com/charliermarsh/ruff/pull/4226) - Avoid fixing `PD002` in a lambda expression by [@​dhruvmanila](https://github.com/dhruvmanila) in [https://github.com/charliermarsh/ruff/pull/4286](https://github.com/charliermarsh/ruff/pull/4286) - Avoid `D403` if first char cannot be uppercased by [@​dhruvmanila](https://github.com/dhruvmanila) in [https://github.com/charliermarsh/ruff/pull/4283](https://github.com/charliermarsh/ruff/pull/4283) - Avoid panics for f-string rewrites at start-of-file by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4291](https://github.com/charliermarsh/ruff/pull/4291) - Rewrite `not not a` as `bool(a)` in boolean contexts by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4294](https://github.com/charliermarsh/ruff/pull/4294) - Include static and class methods in in abstract decorator list by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4298](https://github.com/charliermarsh/ruff/pull/4298) - Specify exact command in incorrect parentheses suggestion by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4300](https://github.com/charliermarsh/ruff/pull/4300) - Ignore `TRY301` exceptions without except handlers by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4301](https://github.com/charliermarsh/ruff/pull/4301) - Preserve whitespace around `ListComp` brackets in `C419` by [@​dhruvmanila](https://github.com/dhruvmanila) in [https://github.com/charliermarsh/ruff/pull/4099](https://github.com/charliermarsh/ruff/pull/4099) - Tweak capitalization of B021 message by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4350](https://github.com/charliermarsh/ruff/pull/4350) - Avoid debug panic with empty indent replacement by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4364](https://github.com/charliermarsh/ruff/pull/4364) - Use target name in hardcoded-password diagnostics by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4365](https://github.com/charliermarsh/ruff/pull/4365) - Avoid underflow in expected-special-method-signature by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4377](https://github.com/charliermarsh/ruff/pull/4377) - Respect `__all__` imports when determining definition visibility by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4357](https://github.com/charliermarsh/ruff/pull/4357) - Ignore some methods on list in `flake8-boolean-trap` by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4385](https://github.com/charliermarsh/ruff/pull/4385) - Fix false positives in PD002 by [@​evanrittenhouse](https://github.com/evanrittenhouse) in [https://github.com/charliermarsh/ruff/pull/4337](https://github.com/charliermarsh/ruff/pull/4337) - Run autofix on initial watcher pass by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4311](https://github.com/charliermarsh/ruff/pull/4311) - Avoid SIM105 autofixes that would remove comments by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4330](https://github.com/charliermarsh/ruff/pull/4330) - Handle `.encode` calls on parenthesized expressions by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4338](https://github.com/charliermarsh/ruff/pull/4338) - Truncate `SyntaxError`s before newline character by [@​MichaReiser](https://github.com/MichaReiser) in [https://github.com/charliermarsh/ruff/pull/4124](https://github.com/charliermarsh/ruff/pull/4124) - Use non-empty ranges for logical-lines diagnostics by [@​MichaReiser](https://github.com/MichaReiser) in [https://github.com/charliermarsh/ruff/pull/4133](https://github.com/charliermarsh/ruff/pull/4133) #### New Contributors - [@​jleclanche](https://github.com/jleclanche) made their first contribution in [https://github.com/charliermarsh/ruff/pull/4261](https://github.com/charliermarsh/ruff/pull/4261) - [@​aureliojargas](https://github.com/aureliojargas) made their first contribution in [https://github.com/charliermarsh/ruff/pull/4306](https://github.com/charliermarsh/ruff/pull/4306) - [@​intgr](https://github.com/intgr) made their first contribution in [https://github.com/charliermarsh/ruff/pull/4304](https://github.com/charliermarsh/ruff/pull/4304) - [@​mikeleppane](https://github.com/mikeleppane) made their first contribution in [https://github.com/charliermarsh/ruff/pull/4169](https://github.com/charliermarsh/ruff/pull/4169) - [@​dependabot](https://github.com/dependabot) made their first contribution in [https://github.com/charliermarsh/ruff/pull/4354](https://github.com/charliermarsh/ruff/pull/4354) **Full Changelog**: astral-sh/ruff@v0.0.265...v0.0.266 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/allenporter/flux-local). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS43OS4xIiwidXBkYXRlZEluVmVyIjoiMzUuNzkuMSIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [ruff](https://github.com/charliermarsh/ruff) ([changelog](https://github.com/charliermarsh/ruff/releases)) | `==0.0.265` -> `==0.0.267` | [![age](https://badges.renovateapi.com/packages/pypi/ruff/0.0.267/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/pypi/ruff/0.0.267/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/pypi/ruff/0.0.267/compatibility-slim/0.0.265)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/pypi/ruff/0.0.267/confidence-slim/0.0.265)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>charliermarsh/ruff</summary> ### [`v0.0.267`](https://github.com/charliermarsh/ruff/releases/tag/v0.0.267) [Compare Source](https://github.com/charliermarsh/ruff/compare/v0.0.266...v0.0.267) <!-- Release notes generated using configuration in .github/release.yml at main --> #### Summary Follow-up release to v0.0.266 to fix an issue with `python -m ruff`- and `import ruff`-based workflows. (No new rules or functionality.) #### What's Changed ##### Rules - Implement `RUF010` to detect explicit type conversions within f-strings by [@​LotemAm](https://github.com/LotemAm) in [https://github.com/charliermarsh/ruff/pull/4387](https://github.com/charliermarsh/ruff/pull/4387) ##### Other Changes - Workaround for maturin bug by [@​konstin](https://github.com/konstin) in [https://github.com/charliermarsh/ruff/pull/4399](https://github.com/charliermarsh/ruff/pull/4399) #### New Contributors - [@​OMEGARAZER](https://github.com/OMEGARAZER) made their first contribution in [https://github.com/charliermarsh/ruff/pull/3938](https://github.com/charliermarsh/ruff/pull/3938) - [@​LotemAm](https://github.com/LotemAm) made their first contribution in [https://github.com/charliermarsh/ruff/pull/4387](https://github.com/charliermarsh/ruff/pull/4387) **Full Changelog**: astral-sh/ruff@v0.0.266...v0.0.267 ### [`v0.0.266`](https://github.com/charliermarsh/ruff/releases/tag/v0.0.266) [Compare Source](https://github.com/charliermarsh/ruff/compare/v0.0.265...v0.0.266) <!-- Release notes generated using configuration in .github/release.yml at main --> #### What's Changed ##### Breaking Changes - Remove deprecated `update-check` setting by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4313](https://github.com/charliermarsh/ruff/pull/4313) - JSON Emitter: Use one indexed column numbers for edits by [@​MichaReiser](https://github.com/MichaReiser) in [https://github.com/charliermarsh/ruff/pull/4007](https://github.com/charliermarsh/ruff/pull/4007) ##### Rules - \[`pygrep-hooks`] Implement pygrep-hook's Mock-mistake diagnostic by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4366](https://github.com/charliermarsh/ruff/pull/4366) - \[`pylint`] Implement `nested-min-max` (`W3301`) by [@​mccullocht](https://github.com/mccullocht) in [https://github.com/charliermarsh/ruff/pull/4200](https://github.com/charliermarsh/ruff/pull/4200) - \[`flynt`] Implement Flynt static string join transform as FLY002 by [@​akx](https://github.com/akx) in [https://github.com/charliermarsh/ruff/pull/4196](https://github.com/charliermarsh/ruff/pull/4196) - \[`pylint`] Include positional- and keyword-only arguments in too-many-arguments by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4329](https://github.com/charliermarsh/ruff/pull/4329) - \[`ruff`] Update confusable character mapping by [@​akx](https://github.com/akx) in [https://github.com/charliermarsh/ruff/pull/4274](https://github.com/charliermarsh/ruff/pull/4274) ##### Settings - Add .git-rewrite folder to default ignored folder paths by [@​jleclanche](https://github.com/jleclanche) in [https://github.com/charliermarsh/ruff/pull/4261](https://github.com/charliermarsh/ruff/pull/4261) - Feat: detect changes also in configuration files by [@​mikeleppane](https://github.com/mikeleppane) in [https://github.com/charliermarsh/ruff/pull/4169](https://github.com/charliermarsh/ruff/pull/4169) ##### Bug Fixes - Revert the B027 autofix logic by [@​aacunningham](https://github.com/aacunningham) in [https://github.com/charliermarsh/ruff/pull/4310](https://github.com/charliermarsh/ruff/pull/4310) - Consider Flask app logger as logger candidate by [@​dhruvmanila](https://github.com/dhruvmanila) in [https://github.com/charliermarsh/ruff/pull/4253](https://github.com/charliermarsh/ruff/pull/4253) - Enforce max-doc-length for multi-line docstrings by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4347](https://github.com/charliermarsh/ruff/pull/4347) - Avoid re-using imports beyond current edit site by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4378](https://github.com/charliermarsh/ruff/pull/4378) - Respect insertion location when importing symbols by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4258](https://github.com/charliermarsh/ruff/pull/4258) - Fix jemalloc page size on aarch64 by [@​MichaReiser](https://github.com/MichaReiser) in [https://github.com/charliermarsh/ruff/pull/4247](https://github.com/charliermarsh/ruff/pull/4247) - Fix replace_whitespace() tabulation to space by [@​JonathanPlasse](https://github.com/JonathanPlasse) in [https://github.com/charliermarsh/ruff/pull/4226](https://github.com/charliermarsh/ruff/pull/4226) - Avoid fixing `PD002` in a lambda expression by [@​dhruvmanila](https://github.com/dhruvmanila) in [https://github.com/charliermarsh/ruff/pull/4286](https://github.com/charliermarsh/ruff/pull/4286) - Avoid `D403` if first char cannot be uppercased by [@​dhruvmanila](https://github.com/dhruvmanila) in [https://github.com/charliermarsh/ruff/pull/4283](https://github.com/charliermarsh/ruff/pull/4283) - Avoid panics for f-string rewrites at start-of-file by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4291](https://github.com/charliermarsh/ruff/pull/4291) - Rewrite `not not a` as `bool(a)` in boolean contexts by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4294](https://github.com/charliermarsh/ruff/pull/4294) - Include static and class methods in in abstract decorator list by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4298](https://github.com/charliermarsh/ruff/pull/4298) - Specify exact command in incorrect parentheses suggestion by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4300](https://github.com/charliermarsh/ruff/pull/4300) - Ignore `TRY301` exceptions without except handlers by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4301](https://github.com/charliermarsh/ruff/pull/4301) - Preserve whitespace around `ListComp` brackets in `C419` by [@​dhruvmanila](https://github.com/dhruvmanila) in [https://github.com/charliermarsh/ruff/pull/4099](https://github.com/charliermarsh/ruff/pull/4099) - Tweak capitalization of B021 message by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4350](https://github.com/charliermarsh/ruff/pull/4350) - Avoid debug panic with empty indent replacement by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4364](https://github.com/charliermarsh/ruff/pull/4364) - Use target name in hardcoded-password diagnostics by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4365](https://github.com/charliermarsh/ruff/pull/4365) - Avoid underflow in expected-special-method-signature by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4377](https://github.com/charliermarsh/ruff/pull/4377) - Respect `__all__` imports when determining definition visibility by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4357](https://github.com/charliermarsh/ruff/pull/4357) - Ignore some methods on list in `flake8-boolean-trap` by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4385](https://github.com/charliermarsh/ruff/pull/4385) - Fix false positives in PD002 by [@​evanrittenhouse](https://github.com/evanrittenhouse) in [https://github.com/charliermarsh/ruff/pull/4337](https://github.com/charliermarsh/ruff/pull/4337) - Run autofix on initial watcher pass by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4311](https://github.com/charliermarsh/ruff/pull/4311) - Avoid SIM105 autofixes that would remove comments by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4330](https://github.com/charliermarsh/ruff/pull/4330) - Handle `.encode` calls on parenthesized expressions by [@​charliermarsh](https://github.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/4338](https://github.com/charliermarsh/ruff/pull/4338) - Truncate `SyntaxError`s before newline character by [@​MichaReiser](https://github.com/MichaReiser) in [https://github.com/charliermarsh/ruff/pull/4124](https://github.com/charliermarsh/ruff/pull/4124) - Use non-empty ranges for logical-lines diagnostics by [@​MichaReiser](https://github.com/MichaReiser) in [https://github.com/charliermarsh/ruff/pull/4133](https://github.com/charliermarsh/ruff/pull/4133) #### New Contributors - [@​jleclanche](https://github.com/jleclanche) made their first contribution in [https://github.com/charliermarsh/ruff/pull/4261](https://github.com/charliermarsh/ruff/pull/4261) - [@​aureliojargas](https://github.com/aureliojargas) made their first contribution in [https://github.com/charliermarsh/ruff/pull/4306](https://github.com/charliermarsh/ruff/pull/4306) - [@​intgr](https://github.com/intgr) made their first contribution in [https://github.com/charliermarsh/ruff/pull/4304](https://github.com/charliermarsh/ruff/pull/4304) - [@​mikeleppane](https://github.com/mikeleppane) made their first contribution in [https://github.com/charliermarsh/ruff/pull/4169](https://github.com/charliermarsh/ruff/pull/4169) - [@​dependabot](https://github.com/dependabot) made their first contribution in [https://github.com/charliermarsh/ruff/pull/4354](https://github.com/charliermarsh/ruff/pull/4354) **Full Changelog**: astral-sh/ruff@v0.0.265...v0.0.266 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/allenporter/pyrainbird). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS43OS4xIiwidXBkYXRlZEluVmVyIjoiMzUuNzkuMSIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Detect changes also in configuration files. Detected config files are: pyproject.toml, ruff.toml,.ruff.toml