Skip to content

Conversation

MichaReiser
Copy link
Member

Summary

This PR stabilizes the behavior introduced in #15985

The new behavior improves the inference of str.strip calls:

  • before: The rule only considered calls on string or byte literals ("abcd".strip)
  • now: The rule also catches calls to strip on object where the type is known to be a str or bytes (e.g. a = "abc"; a.strip("//"))

The new behavior shipped as part of Ruff 0.9.6 on the 10th of Feb which is a little more than a month ago.
There have been now new issues or PRs related to the new behavior.

@MichaReiser MichaReiser added the rule Implementing or modifying a lint rule label Mar 12, 2025
@MichaReiser MichaReiser requested a review from ntBre March 12, 2025 12:17
Copy link

codspeed-hq bot commented Mar 12, 2025

CodSpeed Performance Report

Merging #16671 will degrade performances by 4.61%

Comparing micha/pylint-str-strip-non-literals (0561c94) with micha/ruff-0.10 (6fc3434)

Summary

❌ 1 regressions
✅ 31 untouched benchmarks

⚠️ Please fix the performance issues or acknowledge them on CodSpeed.

Benchmarks breakdown

Benchmark BASE HEAD Change
red_knot_check_file[incremental] 5.2 ms 5.5 ms -4.61%

Copy link
Contributor

github-actions bot commented Mar 12, 2025

ruff-ecosystem results

Linter (stable)

✅ ecosystem check detected no linter changes.

Linter (preview)

✅ ecosystem check detected no linter changes.

@MichaReiser
Copy link
Member Author

Closing and reopening to trigger another ecosystem run

@MichaReiser MichaReiser reopened this Mar 12, 2025
@MichaReiser MichaReiser added this to the v0.10 milestone Mar 12, 2025
@MichaReiser MichaReiser mentioned this pull request Mar 13, 2025
2 tasks
@MichaReiser MichaReiser force-pushed the micha/pylint-str-strip-non-literals branch 2 times, most recently from b54018e to a972aa9 Compare March 13, 2025 08:28
@MichaReiser MichaReiser force-pushed the micha/pylint-str-strip-non-literals branch from a972aa9 to 0561c94 Compare March 13, 2025 08:29
@MichaReiser MichaReiser merged commit d622137 into micha/ruff-0.10 Mar 13, 2025
20 of 21 checks passed
@MichaReiser MichaReiser deleted the micha/pylint-str-strip-non-literals branch March 13, 2025 08:35
MichaReiser added a commit that referenced this pull request Mar 13, 2025
## Summary
This PR stabilizes the behavior introduced in
#15985

The new behavior improves the inference of `str.strip` calls:

* before: The rule only considered calls on string or byte literals
(`"abcd".strip`)
* now: The rule also catches calls to `strip` on object where the type
is known to be a `str` or `bytes` (e.g. `a = "abc"; a.strip("//")`)


The new behavior shipped as part of Ruff 0.9.6 on the 10th of Feb which
is a little more than a month ago.
There have been now new issues or PRs related to the new behavior.
MichaReiser added a commit that referenced this pull request Mar 13, 2025
## Summary
This PR stabilizes the behavior introduced in
#15985

The new behavior improves the inference of `str.strip` calls:

* before: The rule only considered calls on string or byte literals
(`"abcd".strip`)
* now: The rule also catches calls to `strip` on object where the type
is known to be a `str` or `bytes` (e.g. `a = "abc"; a.strip("//")`)


The new behavior shipped as part of Ruff 0.9.6 on the 10th of Feb which
is a little more than a month ago.
There have been now new issues or PRs related to the new behavior.
dcreager added a commit that referenced this pull request Mar 14, 2025
* main: (53 commits)
  [syntax-errors] Tuple unpacking in `for` statement iterator clause before Python 3.9 (#16558)
  Ruff v0.10 Release (#16708)
  Add new `noqa` specification to the docs (#16703)
  describe requires-python fallback in docs (#16704)
  [red-knot] handle cycles in MRO/bases resolution (#16693)
  [red-knot] Auto generate statement nodes (#16645)
  [`pylint`] Better inference for `str.strip` (`PLE310`) (#16671)
  [`pylint`] Improve `repeated-equality-comparison` fix to use a `set` when all elements are hashable (`PLR1714`) (#16685)
  [`pylint`/`pep8-naming`] Check `__new__` argument name in `bad-staticmethod-argument` and not `invalid-first-argument-name-for-class-method` (`PLW0211`/`N804`) (#16676)
  [`flake8-pyi`] Stabilize fix for `unused-private-type-var` (`PYI018`) (#16682)
  [`flake8-bandit`] Deprecate `suspicious-xmle-tree-usage` (`S320`) (#16680)
  [`flake8-simplify`] Avoid double negation in fixes (`SIM103`) (#16684)
  [`pyupgrade`]: Improve diagnostic range for `redundant-open-mode` (`UP015`) (#16672)
  Consider all `TYPE_CHECKING` symbols for type-checking blocks (#16669)
  [`pep8-naming`]: Ignore methods decorated with `@typing.override` (`invalid-argument-name`) (#16667)
  Stabilize FURB169 preview behavior (#16666)
  [`pylint`] Detect invalid default value type for `os.environ.get` (`PLW1508`) (#16674)
  [`flake8-pytest-style`] Allow for loops with empty bodies (`PT012`, `PT031`) (#16678)
  [`pyupgrade`]: Deprecate `non-pep604-isinstance` (`UP038`) (#16681)
  [`flake8-type-checking`] Stabilize `runtime-cast-value` (`TC006`) (#16637)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
rule Implementing or modifying a lint rule
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants