Skip to content
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

Implement some rules from flake8-logging-format #2150

Conversation

edgarrmondragon
Copy link
Contributor

@edgarrmondragon edgarrmondragon force-pushed the feat/implement-flake8-logging-format branch from ba71617 to 109a746 Compare January 25, 2023 17:22
@edgarrmondragon
Copy link
Contributor Author

I don't think I'll implement G100 (extra whitelist) or G200 (exception instance used in log msg) for now, so this is ready for review :)

@edgarrmondragon edgarrmondragon marked this pull request as ready for review January 25, 2023 21:26
if checker.settings.rules.enabled(&Rule::LoggingWarn)
&& matches!(logging_level, LoggingLevel::Warn)
{
let mut diagnostic = Diagnostic::new(LoggingWarn, level_call_range);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One concern here is that PGH002 does the same thing:

resources/test/fixtures/flake8_logging_format/G010.py:3:1: PGH002 `warn` is deprecated in favor of `warning`

We could consider deprecating that rule, though, in favor of this more comprehensive plugin. We'd basically just redirect PGH002 to G010.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree that it makes sense to prefer the logging plugin for this rule. Is it just a matter of adding it in src/rule_redirects.rs?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, we'd need to delete all references to the rule (fixture files, etc.), then add the redirect to that map.


/// Check logging calls for violations
pub fn logging_call(checker: &mut Checker, func: &Expr, args: &[Expr], keywords: &[Keyword]) {
if let ExprKind::Attribute { value, attr, .. } = &func.node {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In src/rules/tryceratops/rules/error_instead_of_exception.rs, I used some heuristics to detect whether the value is that of a logger (by matching on names, like logging, logger, self.logger, foo_logger, etc.). I'd like to be consistent between that rule and here. Any opinion on what's preferable?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I followed the plugin here to just whitelist parser and warnings but it probably makes sense to make this more robust with some is_logger_candidate that incorporates your heuristic additionally. Happy to try out the refactor.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That would be great, thanks!

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@charliermarsh charliermarsh merged commit e882752 into astral-sh:main Jan 26, 2023
@edgarrmondragon edgarrmondragon deleted the feat/implement-flake8-logging-format branch January 26, 2023 18:02
renovate bot added a commit to ixm-one/pytest-cmake-presets that referenced this pull request Jan 27, 2023
[![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.235` ->
`^0.0.236` |
[![age](https://badges.renovateapi.com/packages/pypi/ruff/0.0.236/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/pypi/ruff/0.0.236/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/pypi/ruff/0.0.236/compatibility-slim/0.0.235)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/pypi/ruff/0.0.236/confidence-slim/0.0.235)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>charliermarsh/ruff</summary>

###
[`v0.0.236`](https://togithub.com/charliermarsh/ruff/releases/tag/v0.0.236)

[Compare
Source](https://togithub.com/charliermarsh/ruff/compare/v0.0.235...v0.0.236)

#### What's Changed

##### Rules

- feat: implement `TRY002` and `TRY003` by
[@&#8203;karpa4o4](https://togithub.com/karpa4o4) in
[astral-sh/ruff#2135
- Implementing `TRY400` by
[@&#8203;Flowake](https://togithub.com/Flowake) in
[astral-sh/ruff#2115
- Implement some rules from `flake8-logging-format` (`G`) by
[@&#8203;edgarrmondragon](https://togithub.com/edgarrmondragon) in
[astral-sh/ruff#2150

##### Settings

- Add strictness setting for `flake8-typing-imports` by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[astral-sh/ruff#2221
- Implement `exempt-modules` setting from flake8-type-checking by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[astral-sh/ruff#2230

##### Bug fixes

- flake8\_executable: Only match shebang at beginning of line by
[@&#8203;andersk](https://togithub.com/andersk) in
[astral-sh/ruff#2183
- Don't flag B009/B010 if identifiers would be mangled by
[@&#8203;sciyoshi](https://togithub.com/sciyoshi) in
[astral-sh/ruff#2204
- fix: --explain reporting the wrong linter by
[@&#8203;not-my-profile](https://togithub.com/not-my-profile) in
[astral-sh/ruff#2215
- Preserve indentation when fixing via LibCST by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[astral-sh/ruff#2223
- Avoid erroneous class autofixes in indented blocks by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[astral-sh/ruff#2226
- Fix range for `try-consider-else` by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[astral-sh/ruff#2228
- Avoid flagging blind exceptions with valid logging by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[astral-sh/ruff#2232
- Avoid removing trailing comments on `pass` statements by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[astral-sh/ruff#2235
- Allow `pytest` in shebang by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[astral-sh/ruff#2237
- Wrap return-bool-condition-directly fixes in bool() by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[astral-sh/ruff#2240

#### New Contributors

- [@&#8203;Flowake](https://togithub.com/Flowake) made their first
contribution in
[astral-sh/ruff#2115
- [@&#8203;henryiii](https://togithub.com/henryiii) made their first
contribution in
[astral-sh/ruff#2200
- [@&#8203;sciyoshi](https://togithub.com/sciyoshi) made their first
contribution in
[astral-sh/ruff#2204

**Full Changelog**:
astral-sh/ruff@v0.0.235...v0.0.236

</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:eyJjcmVhdGVkSW5WZXIiOiIzNC4xMTEuMSIsInVwZGF0ZWRJblZlciI6IjM0LjExMS4xIn0=-->

Signed-off-by: Renovate Bot <bot@renovateapp.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants