-
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
Fix is_module_name()
and improve perf of is_identifier()
#3795
Fix is_module_name()
and improve perf of is_identifier()
#3795
Conversation
PR Check ResultsEcosystemℹ️ ecosystem check detected changes. (+1, -0, 0 error(s)) zulip (+1, -0)
+ zerver/management/commands/import.py:1:1: N999 Invalid module name: 'import' BenchmarkLinux
Windows
|
Looking at the ecosystem checks, I'd forgotten that I think we shipped a strict version like this in the past and it caused a ton of problems (e.g. with Django migrations), we had to release a hotfix. Let me dig up the issues. |
092b364
to
f8ff0ce
Compare
All the errors except one seem to be migrations. It could easily be ignored with |
I think I was mixing this up with the fact that we accidentally flagged modules like |
Woah, nice performance improvement. I'm surprised that it improves by so much |
Indeed, I was not expecting this. |
My only hangup here is that I'm wondering if we should special-case migration files. If users are always going to end up ignoring them, it'd be nice for us to just "do the right thing" out of the box. At the same time, it's weird to allow what is actually an invalid module name. What do you think? |
How could we avoid false negative if we ignore migration files? |
Maybe we could start checking if the path contains a component called |
I'm temped to say we just ignore anything in a |
How bout: if |
- For `is_module_name()` - Must not be a reserved keyword - use is_ascii_lowercase() and is_ascii_digit() - Improve perf of `is_indentifier()`
f8ff0ce
to
d57dbb0
Compare
d57dbb0
to
c789797
Compare
Done! |
Thanks! |
// and other frameworks. | ||
if is_migration_file(path) && is_migration_name(&module_name) { | ||
return None; | ||
} |
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.
@JonathanPlasse - What do you think about this? It lets us keep the "project convention" logic out of ruff_python_stdlib
(and keeps is_module_name
simple since it doesn't rely on directory in any way)... but it does mean we have to check the name twice for valid migrations. However, the most common path is that a module has a valid name anyway, so it may not matter in practice.
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.
It is great. Good separation of concerns.
.and_then(Path::file_name) | ||
.and_then(OsStr::to_str) | ||
.map_or(false, |parent| matches!(parent, "versions" | "migrations")) | ||
} |
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.
(E.g., to me, this check is similar to the is_module_file
check we already do here -- it feels more at-home in the rule than in the compliance utilities...)
is_module_name()
and improve perf of is_identifier()
is_migration_name(&module_name) | ||
} else { | ||
is_module_name(&module_name) | ||
}; |
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.
@JonathanPlasse - Tweaked it to do the check once like you had before, just separate functions now.
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.
Great!
[![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://togithub.com/charliermarsh/ruff) | `^0.0.260` -> `^0.0.261` | [![age](https://badges.renovateapi.com/packages/pypi/ruff/0.0.261/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/pypi/ruff/0.0.261/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/pypi/ruff/0.0.261/compatibility-slim/0.0.260)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/pypi/ruff/0.0.261/confidence-slim/0.0.260)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>charliermarsh/ruff</summary> ### [`v0.0.261`](https://togithub.com/charliermarsh/ruff/releases/tag/v0.0.261) [Compare Source](https://togithub.com/charliermarsh/ruff/compare/v0.0.260...v0.0.261) <!-- Release notes generated using configuration in .github/release.yml at main --> #### What's Changed ##### Rules - \[`flake8-simplify`] Ignore `collapsible-if` violations for `if False:` and `if True:` by [@​JonathanPlasse](https://togithub.com/JonathanPlasse) in [https://github.com/charliermarsh/ruff/pull/3732](https://togithub.com/charliermarsh/ruff/pull/3732) - \[`flake8-pie`] Extend `unncessary-generator-any-all` to set comprehensions by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/3824](https://togithub.com/charliermarsh/ruff/pull/3824) - \[`flake8-simplify`] Implement `dict-get-with-none-default` (`SIM910`) by [@​kyoto7250](https://togithub.com/kyoto7250) in [https://github.com/charliermarsh/ruff/pull/3874](https://togithub.com/charliermarsh/ruff/pull/3874) - \[`flake8-annotations`] Additional simple magic return types by [@​dhruvmanila](https://togithub.com/dhruvmanila) in [https://github.com/charliermarsh/ruff/pull/3805](https://togithub.com/charliermarsh/ruff/pull/3805) - \[`flake8-pyi`]: fix PYI015 false positive on assignment of TypeVar & friends by [@​bluetech](https://togithub.com/bluetech) in [https://github.com/charliermarsh/ruff/pull/3861](https://togithub.com/charliermarsh/ruff/pull/3861) ##### Bug Fixes - Improve robustness of argument removal for `encode` calls by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/3802](https://togithub.com/charliermarsh/ruff/pull/3802) - Fix SIM222 and SIM223 false positive by [@​JonathanPlasse](https://togithub.com/JonathanPlasse) in [https://github.com/charliermarsh/ruff/pull/3832](https://togithub.com/charliermarsh/ruff/pull/3832) - When checking module visibility, don't check entire ancestry by [@​Hnasar](https://togithub.com/Hnasar) in [https://github.com/charliermarsh/ruff/pull/3835](https://togithub.com/charliermarsh/ruff/pull/3835) - Improve top-of-file insertions for required imports by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/3779](https://togithub.com/charliermarsh/ruff/pull/3779) - Use multi-fix semantics for `inplace` removal by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/3804](https://togithub.com/charliermarsh/ruff/pull/3804) - Flag non-`Name` expressions in `duplicate-isinstance-call` by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/3817](https://togithub.com/charliermarsh/ruff/pull/3817) - Avoid `unnecessary-comprehension-any-all` for async generators by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/3823](https://togithub.com/charliermarsh/ruff/pull/3823) - Fix `is_module_name()` and improve perf of `is_identifier()` by [@​JonathanPlasse](https://togithub.com/JonathanPlasse) in [https://github.com/charliermarsh/ruff/pull/3795](https://togithub.com/charliermarsh/ruff/pull/3795) - Allow starred arguments in B030 by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/3871](https://togithub.com/charliermarsh/ruff/pull/3871) - Support mutually exclusive branches for `B031` by [@​dhruvmanila](https://togithub.com/dhruvmanila) in [https://github.com/charliermarsh/ruff/pull/3844](https://togithub.com/charliermarsh/ruff/pull/3844) - Consider logger candidate from `logging` module only by [@​dhruvmanila](https://togithub.com/dhruvmanila) in [https://github.com/charliermarsh/ruff/pull/3878](https://togithub.com/charliermarsh/ruff/pull/3878) ##### Core - Add import insertion support to autofix capabilities by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/3787](https://togithub.com/charliermarsh/ruff/pull/3787) - Generate `ImportMap` from module path to imported dependencies by [@​chanman3388](https://togithub.com/chanman3388) in [https://github.com/charliermarsh/ruff/pull/3243](https://togithub.com/charliermarsh/ruff/pull/3243) ##### Docs - Add documentation for `ruff-action` (GitHub Action!) by [@​brucearctor](https://togithub.com/brucearctor) in [https://github.com/charliermarsh/ruff/pull/3857](https://togithub.com/charliermarsh/ruff/pull/3857) #### New Contributors - [@​AetherUnbound](https://togithub.com/AetherUnbound) made their first contribution in [https://github.com/charliermarsh/ruff/pull/3806](https://togithub.com/charliermarsh/ruff/pull/3806) - [@​Hnasar](https://togithub.com/Hnasar) made their first contribution in [https://github.com/charliermarsh/ruff/pull/3835](https://togithub.com/charliermarsh/ruff/pull/3835) - [@​nvuillam](https://togithub.com/nvuillam) made their first contribution in [https://github.com/charliermarsh/ruff/pull/3848](https://togithub.com/charliermarsh/ruff/pull/3848) - [@​brucearctor](https://togithub.com/brucearctor) made their first contribution in [https://github.com/charliermarsh/ruff/pull/3857](https://togithub.com/charliermarsh/ruff/pull/3857) **Full Changelog**: astral-sh/ruff@v0.0.260...v0.0.261 </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:eyJjcmVhdGVkSW5WZXIiOiIzNS4zMi4yIiwidXBkYXRlZEluVmVyIjoiMzUuMzIuMiJ9--> 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://togithub.com/charliermarsh/ruff) | `==0.0.260` -> `==0.0.261` | [![age](https://badges.renovateapi.com/packages/pypi/ruff/0.0.261/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/pypi/ruff/0.0.261/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/pypi/ruff/0.0.261/compatibility-slim/0.0.260)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/pypi/ruff/0.0.261/confidence-slim/0.0.260)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>charliermarsh/ruff</summary> ### [`v0.0.261`](https://togithub.com/charliermarsh/ruff/releases/tag/v0.0.261) [Compare Source](https://togithub.com/charliermarsh/ruff/compare/v0.0.260...v0.0.261) <!-- Release notes generated using configuration in .github/release.yml at main --> #### What's Changed ##### Rules - \[`flake8-simplify`] Ignore `collapsible-if` violations for `if False:` and `if True:` by [@​JonathanPlasse](https://togithub.com/JonathanPlasse) in [https://github.com/charliermarsh/ruff/pull/3732](https://togithub.com/charliermarsh/ruff/pull/3732) - \[`flake8-pie`] Extend `unncessary-generator-any-all` to set comprehensions by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/3824](https://togithub.com/charliermarsh/ruff/pull/3824) - \[`flake8-simplify`] Implement `dict-get-with-none-default` (`SIM910`) by [@​kyoto7250](https://togithub.com/kyoto7250) in [https://github.com/charliermarsh/ruff/pull/3874](https://togithub.com/charliermarsh/ruff/pull/3874) - \[`flake8-annotations`] Additional simple magic return types by [@​dhruvmanila](https://togithub.com/dhruvmanila) in [https://github.com/charliermarsh/ruff/pull/3805](https://togithub.com/charliermarsh/ruff/pull/3805) - \[`flake8-pyi`]: fix PYI015 false positive on assignment of TypeVar & friends by [@​bluetech](https://togithub.com/bluetech) in [https://github.com/charliermarsh/ruff/pull/3861](https://togithub.com/charliermarsh/ruff/pull/3861) ##### Bug Fixes - Improve robustness of argument removal for `encode` calls by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/3802](https://togithub.com/charliermarsh/ruff/pull/3802) - Fix SIM222 and SIM223 false positive by [@​JonathanPlasse](https://togithub.com/JonathanPlasse) in [https://github.com/charliermarsh/ruff/pull/3832](https://togithub.com/charliermarsh/ruff/pull/3832) - When checking module visibility, don't check entire ancestry by [@​Hnasar](https://togithub.com/Hnasar) in [https://github.com/charliermarsh/ruff/pull/3835](https://togithub.com/charliermarsh/ruff/pull/3835) - Improve top-of-file insertions for required imports by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/3779](https://togithub.com/charliermarsh/ruff/pull/3779) - Use multi-fix semantics for `inplace` removal by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/3804](https://togithub.com/charliermarsh/ruff/pull/3804) - Flag non-`Name` expressions in `duplicate-isinstance-call` by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/3817](https://togithub.com/charliermarsh/ruff/pull/3817) - Avoid `unnecessary-comprehension-any-all` for async generators by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/3823](https://togithub.com/charliermarsh/ruff/pull/3823) - Fix `is_module_name()` and improve perf of `is_identifier()` by [@​JonathanPlasse](https://togithub.com/JonathanPlasse) in [https://github.com/charliermarsh/ruff/pull/3795](https://togithub.com/charliermarsh/ruff/pull/3795) - Allow starred arguments in B030 by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/3871](https://togithub.com/charliermarsh/ruff/pull/3871) - Support mutually exclusive branches for `B031` by [@​dhruvmanila](https://togithub.com/dhruvmanila) in [https://github.com/charliermarsh/ruff/pull/3844](https://togithub.com/charliermarsh/ruff/pull/3844) - Consider logger candidate from `logging` module only by [@​dhruvmanila](https://togithub.com/dhruvmanila) in [https://github.com/charliermarsh/ruff/pull/3878](https://togithub.com/charliermarsh/ruff/pull/3878) ##### Core - Add import insertion support to autofix capabilities by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/3787](https://togithub.com/charliermarsh/ruff/pull/3787) - Generate `ImportMap` from module path to imported dependencies by [@​chanman3388](https://togithub.com/chanman3388) in [https://github.com/charliermarsh/ruff/pull/3243](https://togithub.com/charliermarsh/ruff/pull/3243) ##### Docs - Add documentation for `ruff-action` (GitHub Action!) by [@​brucearctor](https://togithub.com/brucearctor) in [https://github.com/charliermarsh/ruff/pull/3857](https://togithub.com/charliermarsh/ruff/pull/3857) #### New Contributors - [@​AetherUnbound](https://togithub.com/AetherUnbound) made their first contribution in [https://github.com/charliermarsh/ruff/pull/3806](https://togithub.com/charliermarsh/ruff/pull/3806) - [@​Hnasar](https://togithub.com/Hnasar) made their first contribution in [https://github.com/charliermarsh/ruff/pull/3835](https://togithub.com/charliermarsh/ruff/pull/3835) - [@​nvuillam](https://togithub.com/nvuillam) made their first contribution in [https://github.com/charliermarsh/ruff/pull/3848](https://togithub.com/charliermarsh/ruff/pull/3848) - [@​brucearctor](https://togithub.com/brucearctor) made their first contribution in [https://github.com/charliermarsh/ruff/pull/3857](https://togithub.com/charliermarsh/ruff/pull/3857) **Full Changelog**: astral-sh/ruff@v0.0.260...v0.0.261 </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:eyJjcmVhdGVkSW5WZXIiOiIzNS4zNC4xIiwidXBkYXRlZEluVmVyIjoiMzUuMzQuMSJ9--> 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://togithub.com/charliermarsh/ruff) | `==0.0.260` -> `==0.0.261` | [![age](https://badges.renovateapi.com/packages/pypi/ruff/0.0.261/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/pypi/ruff/0.0.261/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/pypi/ruff/0.0.261/compatibility-slim/0.0.260)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/pypi/ruff/0.0.261/confidence-slim/0.0.260)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>charliermarsh/ruff</summary> ### [`v0.0.261`](https://togithub.com/charliermarsh/ruff/releases/tag/v0.0.261) [Compare Source](https://togithub.com/charliermarsh/ruff/compare/v0.0.260...v0.0.261) <!-- Release notes generated using configuration in .github/release.yml at main --> #### What's Changed ##### Rules - \[`flake8-simplify`] Ignore `collapsible-if` violations for `if False:` and `if True:` by [@​JonathanPlasse](https://togithub.com/JonathanPlasse) in [https://github.com/charliermarsh/ruff/pull/3732](https://togithub.com/charliermarsh/ruff/pull/3732) - \[`flake8-pie`] Extend `unncessary-generator-any-all` to set comprehensions by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/3824](https://togithub.com/charliermarsh/ruff/pull/3824) - \[`flake8-simplify`] Implement `dict-get-with-none-default` (`SIM910`) by [@​kyoto7250](https://togithub.com/kyoto7250) in [https://github.com/charliermarsh/ruff/pull/3874](https://togithub.com/charliermarsh/ruff/pull/3874) - \[`flake8-annotations`] Additional simple magic return types by [@​dhruvmanila](https://togithub.com/dhruvmanila) in [https://github.com/charliermarsh/ruff/pull/3805](https://togithub.com/charliermarsh/ruff/pull/3805) - \[`flake8-pyi`]: fix PYI015 false positive on assignment of TypeVar & friends by [@​bluetech](https://togithub.com/bluetech) in [https://github.com/charliermarsh/ruff/pull/3861](https://togithub.com/charliermarsh/ruff/pull/3861) ##### Bug Fixes - Improve robustness of argument removal for `encode` calls by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/3802](https://togithub.com/charliermarsh/ruff/pull/3802) - Fix SIM222 and SIM223 false positive by [@​JonathanPlasse](https://togithub.com/JonathanPlasse) in [https://github.com/charliermarsh/ruff/pull/3832](https://togithub.com/charliermarsh/ruff/pull/3832) - When checking module visibility, don't check entire ancestry by [@​Hnasar](https://togithub.com/Hnasar) in [https://github.com/charliermarsh/ruff/pull/3835](https://togithub.com/charliermarsh/ruff/pull/3835) - Improve top-of-file insertions for required imports by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/3779](https://togithub.com/charliermarsh/ruff/pull/3779) - Use multi-fix semantics for `inplace` removal by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/3804](https://togithub.com/charliermarsh/ruff/pull/3804) - Flag non-`Name` expressions in `duplicate-isinstance-call` by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/3817](https://togithub.com/charliermarsh/ruff/pull/3817) - Avoid `unnecessary-comprehension-any-all` for async generators by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/3823](https://togithub.com/charliermarsh/ruff/pull/3823) - Fix `is_module_name()` and improve perf of `is_identifier()` by [@​JonathanPlasse](https://togithub.com/JonathanPlasse) in [https://github.com/charliermarsh/ruff/pull/3795](https://togithub.com/charliermarsh/ruff/pull/3795) - Allow starred arguments in B030 by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/3871](https://togithub.com/charliermarsh/ruff/pull/3871) - Support mutually exclusive branches for `B031` by [@​dhruvmanila](https://togithub.com/dhruvmanila) in [https://github.com/charliermarsh/ruff/pull/3844](https://togithub.com/charliermarsh/ruff/pull/3844) - Consider logger candidate from `logging` module only by [@​dhruvmanila](https://togithub.com/dhruvmanila) in [https://github.com/charliermarsh/ruff/pull/3878](https://togithub.com/charliermarsh/ruff/pull/3878) ##### Core - Add import insertion support to autofix capabilities by [@​charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/charliermarsh/ruff/pull/3787](https://togithub.com/charliermarsh/ruff/pull/3787) - Generate `ImportMap` from module path to imported dependencies by [@​chanman3388](https://togithub.com/chanman3388) in [https://github.com/charliermarsh/ruff/pull/3243](https://togithub.com/charliermarsh/ruff/pull/3243) ##### Docs - Add documentation for `ruff-action` (GitHub Action!) by [@​brucearctor](https://togithub.com/brucearctor) in [https://github.com/charliermarsh/ruff/pull/3857](https://togithub.com/charliermarsh/ruff/pull/3857) #### New Contributors - [@​AetherUnbound](https://togithub.com/AetherUnbound) made their first contribution in [https://github.com/charliermarsh/ruff/pull/3806](https://togithub.com/charliermarsh/ruff/pull/3806) - [@​Hnasar](https://togithub.com/Hnasar) made their first contribution in [https://github.com/charliermarsh/ruff/pull/3835](https://togithub.com/charliermarsh/ruff/pull/3835) - [@​nvuillam](https://togithub.com/nvuillam) made their first contribution in [https://github.com/charliermarsh/ruff/pull/3848](https://togithub.com/charliermarsh/ruff/pull/3848) - [@​brucearctor](https://togithub.com/brucearctor) made their first contribution in [https://github.com/charliermarsh/ruff/pull/3857](https://togithub.com/charliermarsh/ruff/pull/3857) **Full Changelog**: astral-sh/ruff@v0.0.260...v0.0.261 </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:eyJjcmVhdGVkSW5WZXIiOiIzNS4zNC4xIiwidXBkYXRlZEluVmVyIjoiMzUuMzQuMSJ9--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
is_module_name()
is_indentifier()