- update to 0.12.10
* Preview features
* [flake8-simplify] Implement fix for maxsplit without separator (SIM905)
* [flake8-use-pathlib] Add fixes for PTH102 and PTH103
* Bug fixes
* [isort] Handle multiple continuation lines after module docstring (I002)
* [pyupgrade] Avoid reporting __future__ features as unnecessary when they are used (UP010)
* [pyupgrade] Handle nested Optionals (UP045)
* Rule changes
* [pycodestyle] Make E731 fix unsafe instead of display-only for class assignments
* [pyflakes] Add secondary annotation showing previous definition (F811)
* Documentation
* Fix description of global config file discovery strategy
* Update outdated links to https://typing.python.org/en/latest/source/stubs.html
* [flake8-annotations] Remove unused import in example (ANN401)
OBS-URL: https://build.opensuse.org/request/show/1300962
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ruff?expand=0&rev=82
* Preview features
* [flake8-simplify] Implement fix for maxsplit without separator (SIM905)
* [flake8-use-pathlib] Add fixes for PTH102 and PTH103
* Bug fixes
* [isort] Handle multiple continuation lines after module docstring (I002)
* [pyupgrade] Avoid reporting __future__ features as unnecessary when they are used (UP010)
* [pyupgrade] Handle nested Optionals (UP045)
* Rule changes
* [pycodestyle] Make E731 fix unsafe instead of display-only for class assignments
* [pyflakes] Add secondary annotation showing previous definition (F811)
* Documentation
* Fix description of global config file discovery strategy
* Update outdated links to https://typing.python.org/en/latest/source/stubs.html
* [flake8-annotations] Remove unused import in example (ANN401)
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=175
- update to 0.12.9:
* \[`airflow`\] Add check for
`airflow.secrets.cache.SecretCache` (`AIR301`)
* \[`ruff`\] Offer a safe fix for multi-digit zeros (`RUF064`)
* \[`flake8-blind-except`\] Fix `BLE001` false-positive on
`raise ... from None`
* \[`flake8-comprehensions`\] Fix false positive for `C420`
with attribute, subscript, or slice assignment targets
* \[`flake8-simplify`\] Fix handling of U+001C..U+001F
whitespace (`SIM905`)
* \[`pylint`\] Use lowercase hex characters to match the
formatter (`PLE2513`)
* [flake8-use-pathlib] Expand PTH201 to check all PurePath subclasses
* [flake8-blind-except] Change BLE001 to correctly parse exception tuples
* [flake8-errmsg] Exclude typing.cast from EM101
* [flake8-simplify] Fix raw string handling in SIM905 for embedded quotes
* [flake8-import-conventions] Avoid false positives for NFKC-normalized __debug__ import aliases in ICN001
* [isort] Fix syntax error after docstring ending with backslash (I002)
* [pylint] Mark PLC0207 fixes as unsafe when *args unpacking is present
* [pyupgrade] Prevent infinite loop with I002 (UP010, UP035)
* [ruff] Parenthesize generator expressions in f-strings (RUF010)
* [eradicate] Don't flag pyrefly pragmas as unused code (ERA001)
* Replace "associative" with "commutative" in docs for RUF036
* Fix copy and line separator colors in dark mode
* Fix link to typing documentation
* Include column numbers in GitLab output format
* Always expand tabs to four spaces in diagnostics
* Update pre-commit's ruff id
OBS-URL: https://build.opensuse.org/request/show/1299828
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ruff?expand=0&rev=81
* \[`airflow`\] Add check for
`airflow.secrets.cache.SecretCache` (`AIR301`)
* \[`ruff`\] Offer a safe fix for multi-digit zeros (`RUF064`)
* \[`flake8-blind-except`\] Fix `BLE001` false-positive on
`raise ... from None`
* \[`flake8-comprehensions`\] Fix false positive for `C420`
with attribute, subscript, or slice assignment targets
* \[`flake8-simplify`\] Fix handling of U+001C..U+001F
whitespace (`SIM905`)
* \[`pylint`\] Use lowercase hex characters to match the
formatter (`PLE2513`)
* [flake8-use-pathlib] Expand PTH201 to check all PurePath subclasses
* Bug fixes
* [flake8-blind-except] Change BLE001 to correctly parse exception tuples
* [flake8-errmsg] Exclude typing.cast from EM101
* [flake8-simplify] Fix raw string handling in SIM905 for embedded quotes
* [flake8-import-conventions] Avoid false positives for NFKC-normalized __debug__ import aliases in ICN001
* [isort] Fix syntax error after docstring ending with backslash (I002)
* [pylint] Mark PLC0207 fixes as unsafe when *args unpacking is present
* [pyupgrade] Prevent infinite loop with I002 (UP010, UP035)
* [ruff] Parenthesize generator expressions in f-strings (RUF010)
* Rule changes
* [eradicate] Don't flag pyrefly pragmas as unused code (ERA001)
* Documentation
* Replace "associative" with "commutative" in docs for RUF036
* Fix copy and line separator colors in dark mode
* Fix link to typing documentation
* Include column numbers in GitLab output format
* Always expand tabs to four spaces in diagnostics
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=173
- update to 0.12.8
* Preview features
* [flake8-use-pathlib] Expand PTH201 to check all PurePath subclasses
* Bug fixes
* [flake8-blind-except] Change BLE001 to correctly parse exception tuples
* [flake8-errmsg] Exclude typing.cast from EM101
* [flake8-simplify] Fix raw string handling in SIM905 for embedded quotes
* [flake8-import-conventions] Avoid false positives for NFKC-normalized __debug__ import aliases in ICN001
* [isort] Fix syntax error after docstring ending with backslash (I002)
* [pylint] Mark PLC0207 fixes as unsafe when *args unpacking is present
* [pyupgrade] Prevent infinite loop with I002 (UP010, UP035)
* [ruff] Parenthesize generator expressions in f-strings (RUF010)
* Rule changes
* [eradicate] Don't flag pyrefly pragmas as unused code (ERA001)
* Documentation
* Replace "associative" with "commutative" in docs for RUF036
* Fix copy and line separator colors in dark mode
* Fix link to typing documentation
* [refurb] Make more examples error out-of-the-box
* Other changes
* Include column numbers in GitLab output format
* Always expand tabs to four spaces in diagnostics
* Update pre-commit's ruff id
OBS-URL: https://build.opensuse.org/request/show/1298595
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ruff?expand=0&rev=80
* Preview features
* [flake8-use-pathlib] Expand PTH201 to check all PurePath subclasses
* Bug fixes
* [flake8-blind-except] Change BLE001 to correctly parse exception tuples
* [flake8-errmsg] Exclude typing.cast from EM101
* [flake8-simplify] Fix raw string handling in SIM905 for embedded quotes
* [flake8-import-conventions] Avoid false positives for NFKC-normalized __debug__ import aliases in ICN001
* [isort] Fix syntax error after docstring ending with backslash (I002)
* [pylint] Mark PLC0207 fixes as unsafe when *args unpacking is present
* [pyupgrade] Prevent infinite loop with I002 (UP010, UP035)
* [ruff] Parenthesize generator expressions in f-strings (RUF010)
* Rule changes
* [eradicate] Don't flag pyrefly pragmas as unused code (ERA001)
* Documentation
* Replace "associative" with "commutative" in docs for RUF036
* Fix copy and line separator colors in dark mode
* Fix link to typing documentation
* [refurb] Make more examples error out-of-the-box
* Other changes
* Include column numbers in GitLab output format
* Always expand tabs to four spaces in diagnostics
* Update pre-commit's ruff id
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=171
- update to 0.12.7:
* \[`flake8-commas`\] Add support for trailing comma checks in
type parameter lists (`COM812`, `COM819`)
* \[`pylint`\] Implement auto-fix for `missing-maxsplit-arg`
(`PLC0207`)
* \[`ruff`\] Offer fixes for `RUF039` in more cases
* Support `.pyi` files in ruff analyze graph
* \[`flake8-pyi`\] Preserve inline comment in ellipsis removal
(`PYI013`)
* \[`perflint`\] Ignore rule if target is `global` or
`nonlocal` (`PERF401`)
* \[`pyupgrade`\] Fix `UP030` to avoid modifying double curly
braces in format strings
* \[`refurb`\] Ignore decorated functions for `FURB118`
* \[`refurb`\] Mark `int` and `bool` cases for
`Decimal.from_float` as safe fixes (`FURB164`)
* \[`ruff`\] Fix `RUF033` for named default expressions
OBS-URL: https://build.opensuse.org/request/show/1296552
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ruff?expand=0&rev=79
* \[`flake8-commas`\] Add support for trailing comma checks in
type parameter lists (`COM812`, `COM819`)
* \[`pylint`\] Implement auto-fix for `missing-maxsplit-arg`
(`PLC0207`)
* \[`ruff`\] Offer fixes for `RUF039` in more cases
* Support `.pyi` files in ruff analyze graph
* \[`flake8-pyi`\] Preserve inline comment in ellipsis removal
(`PYI013`)
* \[`perflint`\] Ignore rule if target is `global` or
`nonlocal` (`PERF401`)
* \[`pyupgrade`\] Fix `UP030` to avoid modifying double curly
braces in format strings
* \[`refurb`\] Ignore decorated functions for `FURB118`
* \[`refurb`\] Mark `int` and `bool` cases for
`Decimal.from_float` as safe fixes (`FURB164`)
* \[`ruff`\] Fix `RUF033` for named default expressions
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=169
- update to 0.12.5:
* \[`flake8-use-pathlib`\] Add autofix for `PTH101`, `PTH104`,
`PTH105`, `PTH121`
* \[`ruff`\] Support byte strings (`RUF055`)
* Fix `unreachable` panic in parser
* \[`flake8-pyi`\] Skip fix if all `Union` members are `None`
(`PYI016`)
* \[`perflint`\] Parenthesize generator expressions (`PERF401`)
* \[`pylint`\] Handle empty comments after line continuation
(`PLR2044`)
allow new fixes (TC001, TC002, TC003, UP037, RUF013)
* [flake8-use-pathlib] Add autofix for PTH109
* [pylint] Detect indirect pathlib.Path usages for unspecified-encoding (PLW1514)
* [flake8-bugbear] Fix B017 false negatives for keyword exception arguments
* [flake8-use-pathlib] Fix false negative on direct Path() instantiation (PTH210)
* [flake8-django] Fix DJ008 false positive for abstract models with type-annotated abstract field
* [isort] Fix I002 import insertion after docstring with multiple string statements
* [isort] Treat form feed as valid whitespace before a semicolon
* [pydoclint] Fix SyntaxError from fixes with line continuations (D201, D202)
* [refurb] FURB164 fix should validate arguments and should usually be marked unsafe
* [flake8-use-pathlib] Skip single dots for invalid-pathlib-with-suffix (PTH210) on versions >= 3.14
* [pep8_naming] Avoid false positives on standard library functions with uppercase names (N802)
* [pycodestyle] Handle brace escapes for t-strings in logical lines
* [pylint] Extend invalid string character rules to include t-strings
* [ruff] Allow strict kwarg when checking for starmap-zip (RUF058) in Python 3.14+
* [flake8-type-checking] Make TC010 docs example more realistic
* [flake8-bugbear] Support non-context-manager calls in B017
* [flake8-use-pathlib] Add autofixes for PTH100, PTH106, PTH107, PTH108, PTH110, PTH111, PTH112, PTH113, PTH114, PTH115, PTH117, PTH119, PTH120
* [flake8-use-pathlib] Add autofixes for PTH203, PTH204, PTH205
OBS-URL: https://build.opensuse.org/request/show/1295811
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ruff?expand=0&rev=78
* \[`flake8-use-pathlib`\] Add autofix for `PTH101`, `PTH104`,
`PTH105`, `PTH121`
* \[`ruff`\] Support byte strings (`RUF055`)
* Fix `unreachable` panic in parser
* \[`flake8-pyi`\] Skip fix if all `Union` members are `None`
(`PYI016`)
* \[`perflint`\] Parenthesize generator expressions (`PERF401`)
* \[`pylint`\] Handle empty comments after line continuation
(`PLR2044`)
allow new fixes (TC001, TC002, TC003, UP037, RUF013)
* [flake8-use-pathlib] Add autofix for PTH109
* [pylint] Detect indirect pathlib.Path usages for unspecified-encoding (PLW1514)
* Bug fixes
* [flake8-bugbear] Fix B017 false negatives for keyword exception arguments
* [flake8-use-pathlib] Fix false negative on direct Path() instantiation (PTH210)
* [flake8-django] Fix DJ008 false positive for abstract models with type-annotated abstract field
* [isort] Fix I002 import insertion after docstring with multiple string statements
* [isort] Treat form feed as valid whitespace before a semicolon
* [pydoclint] Fix SyntaxError from fixes with line continuations (D201, D202)
* [refurb] FURB164 fix should validate arguments and should usually be marked unsafe
* Rule changes
* [flake8-use-pathlib] Skip single dots for invalid-pathlib-with-suffix (PTH210) on versions >= 3.14
* [pep8_naming] Avoid false positives on standard library functions with uppercase names (N802)
* [pycodestyle] Handle brace escapes for t-strings in logical lines
* [pylint] Extend invalid string character rules to include t-strings
* [ruff] Allow strict kwarg when checking for starmap-zip (RUF058) in Python 3.14+
* Documentation
* [flake8-type-checking] Make TC010 docs example more realistic
* [flake8-bugbear] Support non-context-manager calls in B017
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=167
- update to 0.12.4
* Preview features
* [flake8-type-checking, pyupgrade, ruff] Add from __future__ import annotations when it would
allow new fixes (TC001, TC002, TC003, UP037, RUF013)
* [flake8-use-pathlib] Add autofix for PTH109
* [pylint] Detect indirect pathlib.Path usages for unspecified-encoding (PLW1514)
* Bug fixes
* [flake8-bugbear] Fix B017 false negatives for keyword exception arguments
* [flake8-use-pathlib] Fix false negative on direct Path() instantiation (PTH210)
* [flake8-django] Fix DJ008 false positive for abstract models with type-annotated abstract field
* [isort] Fix I002 import insertion after docstring with multiple string statements
* [isort] Treat form feed as valid whitespace before a semicolon
* [pydoclint] Fix SyntaxError from fixes with line continuations (D201, D202)
* [refurb] FURB164 fix should validate arguments and should usually be marked unsafe
* Rule changes
* [flake8-use-pathlib] Skip single dots for invalid-pathlib-with-suffix (PTH210) on versions >= 3.14
* [pep8_naming] Avoid false positives on standard library functions with uppercase names (N802)
* [pycodestyle] Handle brace escapes for t-strings in logical lines
* [pylint] Extend invalid string character rules to include t-strings
* [ruff] Allow strict kwarg when checking for starmap-zip (RUF058) in Python 3.14+
* Documentation
* [flake8-type-checking] Make TC010 docs example more realistic
* Make more documentation examples error out-of-the-box
OBS-URL: https://build.opensuse.org/request/show/1294441
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ruff?expand=0&rev=77
* Preview features
* [flake8-type-checking, pyupgrade, ruff] Add from __future__ import annotations when it would
allow new fixes (TC001, TC002, TC003, UP037, RUF013)
* [flake8-use-pathlib] Add autofix for PTH109
* [pylint] Detect indirect pathlib.Path usages for unspecified-encoding (PLW1514)
* Bug fixes
* [flake8-bugbear] Fix B017 false negatives for keyword exception arguments
* [flake8-use-pathlib] Fix false negative on direct Path() instantiation (PTH210)
* [flake8-django] Fix DJ008 false positive for abstract models with type-annotated abstract field
* [isort] Fix I002 import insertion after docstring with multiple string statements
* [isort] Treat form feed as valid whitespace before a semicolon
* [pydoclint] Fix SyntaxError from fixes with line continuations (D201, D202)
* [refurb] FURB164 fix should validate arguments and should usually be marked unsafe
* Rule changes
* [flake8-use-pathlib] Skip single dots for invalid-pathlib-with-suffix (PTH210) on versions >= 3.14
* [pep8_naming] Avoid false positives on standard library functions with uppercase names (N802)
* [pycodestyle] Handle brace escapes for t-strings in logical lines
* [pylint] Extend invalid string character rules to include t-strings
* [ruff] Allow strict kwarg when checking for starmap-zip (RUF058) in Python 3.14+
* Documentation
* [flake8-type-checking] Make TC010 docs example more realistic
* Make more documentation examples error out-of-the-box
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=165
- update to 0.12.3:
* Preview features
* [flake8-bugbear] Support non-context-manager calls in B017
* [flake8-use-pathlib] Add autofixes for PTH100, PTH106, PTH107, PTH108, PTH110, PTH111, PTH112, PTH113, PTH114, PTH115, PTH117, PTH119, PTH120
* [flake8-use-pathlib] Add autofixes for PTH203, PTH204, PTH205
* Bug fixes
* [flake8-return] Fix false-positive for variables used inside nested functions in RET504
* Treat form feed as valid whitespace before a line continuation
* [flake8-type-checking] Fix syntax error introduced by fix (TC008)
* [pyupgrade] Keyword arguments in super should suppress the UP008 fix
* Documentation
* [flake8-pyi] Make example error out-of-the-box (PYI007, PYI008)
* [flake8-simplify] Make example error out-of-the-box (SIM116)
* [flake8-type-checking] Make example error out-of-the-box (TC001)
* [flake8-use-pathlib] Make example error out-of-the-box (PTH210)
* [pycodestyle] Make example error out-of-the-box (E272)
* [pycodestyle] Make example not raise unnecessary SyntaxError (E114)
* [pydoclint] Make example error out-of-the-box (DOC501)
* [pylint, pyupgrade] Fix syntax errors in examples (PLW1501, UP028)
* [pylint] Update missing-maxsplit-arg docs and error to suggest proper usage (PLC0207)
* [flake8-bandit] Make example error out-of-the-box (S412)
OBS-URL: https://build.opensuse.org/request/show/1292499
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ruff?expand=0&rev=76
* Preview features
* [flake8-bugbear] Support non-context-manager calls in B017
* [flake8-use-pathlib] Add autofixes for PTH100, PTH106, PTH107, PTH108, PTH110, PTH111, PTH112, PTH113, PTH114, PTH115, PTH117, PTH119, PTH120
* [flake8-use-pathlib] Add autofixes for PTH203, PTH204, PTH205
* Bug fixes
* [flake8-return] Fix false-positive for variables used inside nested functions in RET504
* Treat form feed as valid whitespace before a line continuation
* [flake8-type-checking] Fix syntax error introduced by fix (TC008)
* [pyupgrade] Keyword arguments in super should suppress the UP008 fix
* Documentation
* [flake8-pyi] Make example error out-of-the-box (PYI007, PYI008)
* [flake8-simplify] Make example error out-of-the-box (SIM116)
* [flake8-type-checking] Make example error out-of-the-box (TC001)
* [flake8-use-pathlib] Make example error out-of-the-box (PTH210)
* [pycodestyle] Make example error out-of-the-box (E272)
* [pycodestyle] Make example not raise unnecessary SyntaxError (E114)
* [pydoclint] Make example error out-of-the-box (DOC501)
* [pylint, pyupgrade] Fix syntax errors in examples (PLW1501, UP028)
* [pylint] Update missing-maxsplit-arg docs and error to suggest proper usage (PLC0207)
* [flake8-bandit] Make example error out-of-the-box (S412)
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=163
- update to 0.12.2:
* [`flake8-pyi`] Expand `Optional[A]` to `A | None`
(`PYI016`)
* [`pyupgrade`] Mark `UP008` fix safe if no comments are in
range
* [`flake8-comprehensions`] Fix `C420` to prepend whitespace
when needed
* [`perflint`] Fix `PERF403` panic on attribute or
subscription loop variable
* [`pydocstyle`] Fix `D413` infinite loop for parenthesized
docstring
* [`pylint`] Fix `PLW0108` autofix introducing a syntax error
when the lambda's body contains an assignment expression
* [`refurb`] Fix false positive on empty tuples (`FURB168`)
* [`ruff`] Allow more `field` calls from `attrs` (`RUF009`)
* [`ruff`] Fix syntax error introduced for an empty string
followed by a u-prefixed string (`UP025`)
* [flake8-errmsg] Extend EM101 to support byte strings
* [flake8-use-pathlib] Add autofix for PTH202
* [pygrep-hooks] Add AsyncMock methods to invalid-mock-access (PGH005)
* [pylint] Ignore __init__.py files in (PLC0414)
* [ruff] Trigger RUF037 for empty string and byte strings
* [formatter] Fix missing blank lines before decorated classes in .pyi files
* Avoid generating diagnostics with per-file ignores
* Handle parenthesized arguments in remove_argument
* [flake8-logging] Avoid false positive for exc_info=True outside logger.exception (LOG014)
* [flake8-pytest-style] Enforce pytest import for decorators
* [flake8-pytest-style] Mark autofix for PT001 and PT023 as unsafe if there's comments in the decorator
* [flake8-pytest-style] PT001/PT023 fix makes syntax error on parenthesized decorator
OBS-URL: https://build.opensuse.org/request/show/1290670
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ruff?expand=0&rev=75
* [`flake8-pyi`] Expand `Optional[A]` to `A | None`
(`PYI016`)
* [`pyupgrade`] Mark `UP008` fix safe if no comments are in
range
* [`flake8-comprehensions`] Fix `C420` to prepend whitespace
when needed
* [`perflint`] Fix `PERF403` panic on attribute or
subscription loop variable
* [`pydocstyle`] Fix `D413` infinite loop for parenthesized
docstring
* [`pylint`] Fix `PLW0108` autofix introducing a syntax error
when the lambda's body contains an assignment expression
* [`refurb`] Fix false positive on empty tuples (`FURB168`)
* [`ruff`] Allow more `field` calls from `attrs` (`RUF009`)
* [`ruff`] Fix syntax error introduced for an empty string
followed by a u-prefixed string (`UP025`)
* [flake8-errmsg] Extend EM101 to support byte strings
* [flake8-use-pathlib] Add autofix for PTH202
* [pygrep-hooks] Add AsyncMock methods to invalid-mock-access (PGH005)
* [pylint] Ignore __init__.py files in (PLC0414)
* [ruff] Trigger RUF037 for empty string and byte strings
* [formatter] Fix missing blank lines before decorated classes in .pyi files
* Bug fixes
* Avoid generating diagnostics with per-file ignores
* Handle parenthesized arguments in remove_argument
* [flake8-logging] Avoid false positive for exc_info=True outside logger.exception (LOG014)
* [flake8-pytest-style] Enforce pytest import for decorators
* [flake8-pytest-style] Mark autofix for PT001 and PT023 as unsafe if there's comments in the decorator
* [flake8-pytest-style] PT001/PT023 fix makes syntax error on parenthesized decorator
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=161
- update to 0.12.1
* Preview features
* [flake8-errmsg] Extend EM101 to support byte strings
* [flake8-use-pathlib] Add autofix for PTH202
* [pygrep-hooks] Add AsyncMock methods to invalid-mock-access (PGH005)
* [pylint] Ignore __init__.py files in (PLC0414)
* [ruff] Trigger RUF037 for empty string and byte strings
* [formatter] Fix missing blank lines before decorated classes in .pyi files
* Bug fixes
* Avoid generating diagnostics with per-file ignores
* Handle parenthesized arguments in remove_argument
* [flake8-logging] Avoid false positive for exc_info=True outside logger.exception (LOG014)
* [flake8-pytest-style] Enforce pytest import for decorators
* [flake8-pytest-style] Mark autofix for PT001 and PT023 as unsafe if there's comments in the decorator
* [flake8-pytest-style] PT001/PT023 fix makes syntax error on parenthesized decorator
* [flake8-raise] Make fix unsafe if it deletes comments (RSE102)
* [flake8-simplify] Fix SIM911 autofix creating a syntax error
* [flake8-simplify] Fix false negatives for shadowed bindings (SIM910, SIM911)
* [flake8-simplify] Preserve original behavior for except () and bare except (SIM105)
* [flake8-pyi] Fix PYI041's fix causing TypeError with None | None | ...
* [perflint] Fix PERF101 autofix creating a syntax error and mark autofix as unsafe if there are comments in the list call expr
* [perflint] Fix false negative in PERF401
* [pylint] Avoid flattening nested min/max when outer call has single argument (PLW3301)
* [pylint] Fix PLC2801 autofix creating a syntax error
* [pylint] Mark PLE0241 autofix as unsafe if there's comments in the base classes
* [pylint] Suppress PLE2510/PLE2512/PLE2513/PLE2514/PLE2515 autofix if the text contains an odd number of backslashes
* [refurb] Detect more exotic float literals in FURB164
* [refurb] Fix FURB163 autofix creating a syntax error for yield expressions
* [refurb] Mark FURB129 autofix as unsafe if there's comments in the readlines call
* [ruff] Fix false positives and negatives in RUF010
OBS-URL: https://build.opensuse.org/request/show/1288970
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ruff?expand=0&rev=74
* Preview features
* [flake8-errmsg] Extend EM101 to support byte strings
* [flake8-use-pathlib] Add autofix for PTH202
* [pygrep-hooks] Add AsyncMock methods to invalid-mock-access (PGH005)
* [pylint] Ignore __init__.py files in (PLC0414)
* [ruff] Trigger RUF037 for empty string and byte strings
* [formatter] Fix missing blank lines before decorated classes in .pyi files
* Bug fixes
* Avoid generating diagnostics with per-file ignores
* Handle parenthesized arguments in remove_argument
* [flake8-logging] Avoid false positive for exc_info=True outside logger.exception (LOG014)
* [flake8-pytest-style] Enforce pytest import for decorators
* [flake8-pytest-style] Mark autofix for PT001 and PT023 as unsafe if there's comments in the decorator
* [flake8-pytest-style] PT001/PT023 fix makes syntax error on parenthesized decorator
* [flake8-raise] Make fix unsafe if it deletes comments (RSE102)
* [flake8-simplify] Fix SIM911 autofix creating a syntax error
* [flake8-simplify] Fix false negatives for shadowed bindings (SIM910, SIM911)
* [flake8-simplify] Preserve original behavior for except () and bare except (SIM105)
* [flake8-pyi] Fix PYI041's fix causing TypeError with None | None | ...
* [perflint] Fix PERF101 autofix creating a syntax error and mark autofix as unsafe if there are comments in the list call expr
* [perflint] Fix false negative in PERF401
* [pylint] Avoid flattening nested min/max when outer call has single argument (PLW3301)
* [pylint] Fix PLC2801 autofix creating a syntax error
* [pylint] Mark PLE0241 autofix as unsafe if there's comments in the base classes
* [pylint] Suppress PLE2510/PLE2512/PLE2513/PLE2514/PLE2515 autofix if the text contains an odd number of backslashes
* [refurb] Detect more exotic float literals in FURB164
* [refurb] Fix FURB163 autofix creating a syntax error for yield expressions
* [refurb] Mark FURB129 autofix as unsafe if there's comments in the readlines call
* [ruff] Fix false positives and negatives in RUF010
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=159
- update to 0.11.11:
* Preview features
* [airflow] Add autofixes for AIR302 and AIR312
* [airflow] Move rules from AIR312 to AIR302
* [airflow] Update AIR301 and AIR311 with the latest Airflow implementations
* [flake8-simplify] Enable fix in preview mode (SIM117)
* Bug fixes
* Fix inconsistent formatting of match-case on [] and _
* [pylint] Fix PLW1514 not recognizing the encoding positional argument of codecs.open
* CLI
* Add full option name in formatter warning
* Documentation
* Fix rendering of admonition in docs
* [flake8-print] Improve print/pprint docs for T201 and T203
* [flake8-simplify] Add fix safety section (SIM110,SIM210)
* [pylint] Fix docs example that produced different output (PLW0603)
OBS-URL: https://build.opensuse.org/request/show/1279586
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ruff?expand=0&rev=70
* Preview features
* [airflow] Add autofixes for AIR302 and AIR312
* [airflow] Move rules from AIR312 to AIR302
* [airflow] Update AIR301 and AIR311 with the latest Airflow implementations
* [flake8-simplify] Enable fix in preview mode (SIM117)
* Bug fixes
* Fix inconsistent formatting of match-case on [] and _
* [pylint] Fix PLW1514 not recognizing the encoding positional argument of codecs.open
* CLI
* Add full option name in formatter warning
* Documentation
* Fix rendering of admonition in docs
* [flake8-print] Improve print/pprint docs for T201 and T203
* [flake8-simplify] Add fix safety section (SIM110,SIM210)
* [pylint] Fix docs example that produced different output (PLW0603)
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=151
* Preview features
* Default to latest supported Python version for version-related syntax errors
* Implement deferred annotations for Python 3.14
* [airflow] Fix SQLTableCheckOperator typo (AIR302)
* [airflow] Remove airflow.utils.dag_parsing_context.get_parsing_context (AIR301)
* [airflow] Skip attribute check in try catch block (AIR301)
* [flake8-bandit] Mark tuples of string literals as trusted input in S603
* [isort] Check full module path against project root(s) when categorizing first-party imports
* [ruff] Add new rule in-empty-collection (RUF060)
* Bug fixes
* Fix missing combine call for lint.typing-extensions setting
* [flake8-async] Fix module name in ASYNC110, ASYNC115, and ASYNC116 fixes
* [pyupgrade] Add spaces between tokens as necessary to avoid syntax errors in UP018 autofix
* [refurb] Fix false positive for float and complex numbers in FURB116
* [parser] Flag single unparenthesized generator expr with trailing comma in arguments.
* Documentation
* Add instructions on how to upgrade to a newer Rust version
* Update code of conduct email address
* Add fix safety sections to PLC2801, PLR1722, and RUF013
* Add link to check-typed-exception from S110 and S112
* Other changes
* Allow passing a virtual environment to ruff analyze graph
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=148
- update to 0.11.8
* Preview features
* \[`airflow`\] Apply auto fixes to cases where the names have changed in Airflow 3 (`AIR302`, `AIR311`)
* \[`airflow`\] Extend `AIR301` rule
* \[`airflow`\] Update existing `AIR302` rules with better suggestions
* \[`refurb`\] Mark fix as safe for `readlines-in-for` (`FURB129`)
* [syntax-errors] `nonlocal` declaration at module level
* [syntax-errors] Detect single starred expression assignment `x = *y`
* Bug fixes
* \[`flake8-pyi`\] Ensure `Literal[None,] | Literal[None,]` is not autofixed to `None | None` (`PYI061`)
* \[`flake8-use-pathlib`\] Avoid suggesting `Path.iterdir()` for `os.listdir` with file descriptor (`PTH208`)
* \[`flake8-use-pathlib`\] Fix `PTH104` false positive when `rename` is passed a file descriptor
* \[`flake8-use-pathlib`\] Fix `PTH116` false positive when `stat` is passed a file descriptor
* \[`flake8-use-pathlib`\] Fix `PTH123` false positive when `open` is passed a file descriptor from a function call
* \[`pycodestyle`\] Fix duplicated diagnostic in `E712`
* \[`pylint`\] Detect `global` declarations in module scope (`PLE0118`)
* [syntax-errors] Make `async-comprehension-in-sync-comprehension` more specific
* Configuration
* Add option to disable `typing_extensions` imports
* Documentation
* Fix example syntax for the `lint.pydocstyle.ignore-var-parameters` option
* Add fix safety sections (`ASYNC116`, `FLY002`, `D200`, `RUF005`, `RUF017`, `RUF027`, `RUF028`, `RUF057`)
* Other changes
* Add Python 3.14 to configuration options
* Make syntax error for unparenthesized except tuples version specific to before 3.14
OBS-URL: https://build.opensuse.org/request/show/1274047
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ruff?expand=0&rev=68
* Preview features
* \[`airflow`\] Apply auto fixes to cases where the names have changed in Airflow 3 (`AIR302`, `AIR311`)
* \[`airflow`\] Extend `AIR301` rule
* \[`airflow`\] Update existing `AIR302` rules with better suggestions
* \[`refurb`\] Mark fix as safe for `readlines-in-for` (`FURB129`)
* [syntax-errors] `nonlocal` declaration at module level
* [syntax-errors] Detect single starred expression assignment `x = *y`
* Bug fixes
* \[`flake8-pyi`\] Ensure `Literal[None,] | Literal[None,]` is not autofixed to `None | None` (`PYI061`)
* \[`flake8-use-pathlib`\] Avoid suggesting `Path.iterdir()` for `os.listdir` with file descriptor (`PTH208`)
* \[`flake8-use-pathlib`\] Fix `PTH104` false positive when `rename` is passed a file descriptor
* \[`flake8-use-pathlib`\] Fix `PTH116` false positive when `stat` is passed a file descriptor
* \[`flake8-use-pathlib`\] Fix `PTH123` false positive when `open` is passed a file descriptor from a function call
* \[`pycodestyle`\] Fix duplicated diagnostic in `E712`
* \[`pylint`\] Detect `global` declarations in module scope (`PLE0118`)
* [syntax-errors] Make `async-comprehension-in-sync-comprehension` more specific
* Configuration
* Add option to disable `typing_extensions` imports
* Documentation
* Fix example syntax for the `lint.pydocstyle.ignore-var-parameters` option
* Add fix safety sections (`ASYNC116`, `FLY002`, `D200`, `RUF005`, `RUF017`, `RUF027`, `RUF028`, `RUF057`)
* Other changes
* Add Python 3.14 to configuration options
* Make syntax error for unparenthesized except tuples version specific to before 3.14
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=146
- update to 0.11.7:
* \[`airflow`\] Apply auto fixes to cases where the names have
changed in Airflow 3 (`AIR301`)
* \[`perflint`\] Implement fix for `manual-dict-comprehension`
(`PERF403`)
* [syntax-errors] Make duplicate parameter names a semantic
error
* \[`flake8-type-checking`\] Visit keyword arguments in checks
involving `typing.cast`/`typing.NewType` arguments
* \[`pyupgrade`\] Preserve parenthesis when fixing native
literals containing newlines (`UP018`)
* \[`refurb`\] Mark the `FURB161` fix unsafe except for
integers and booleans
* Avoid adding whitespace to the end of a docstring after an escaped quote
* Raise syntax error when \ is at end of file
* [airflow] Add missing AIR302 attribute check
* [airflow] Expand module path check to individual symbols (AIR302)
* [airflow] Extract AIR312 from AIR302 rules (AIR302, AIR312)
* [airflow] Update oudated AIR301, AIR302 rules
* [syntax-errors] Async comprehension in sync comprehension
* [syntax-errors] Check annotations in annotated assignments
* [syntax-errors] Extend annotation checks to await
* [flake8-pie] Avoid false positive for multiple assignment with auto() (PIE796)
* [ruff] Fix RUF100 to detect unused file-level noqa directives with specific codes
* [flake8-pytest-style] Avoid false positive for legacy form of pytest.raises (PT011)
* Fix formatting of "See Style Guide" link
* [ruff] Implement invalid-rule-code as RUF102
* [syntax-errors] Detect duplicate keys in match mapping patterns
* [syntax-errors] Detect duplicate attributes in match class patterns
OBS-URL: https://build.opensuse.org/request/show/1272955
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ruff?expand=0&rev=67
* \[`airflow`\] Apply auto fixes to cases where the names have
changed in Airflow 3 (`AIR301`)
* \[`perflint`\] Implement fix for `manual-dict-comprehension`
(`PERF403`)
* [syntax-errors] Make duplicate parameter names a semantic
error
* \[`flake8-type-checking`\] Visit keyword arguments in checks
involving `typing.cast`/`typing.NewType` arguments
* \[`pyupgrade`\] Preserve parenthesis when fixing native
literals containing newlines (`UP018`)
* \[`refurb`\] Mark the `FURB161` fix unsafe except for
integers and booleans
* Avoid adding whitespace to the end of a docstring after an escaped quote
* Raise syntax error when \ is at end of file
* [airflow] Add missing AIR302 attribute check
* [airflow] Expand module path check to individual symbols (AIR302)
* [airflow] Extract AIR312 from AIR302 rules (AIR302, AIR312)
* [airflow] Update oudated AIR301, AIR302 rules
* [syntax-errors] Async comprehension in sync comprehension
* [syntax-errors] Check annotations in annotated assignments
* [syntax-errors] Extend annotation checks to await
* Bug fixes
* [flake8-pie] Avoid false positive for multiple assignment with auto() (PIE796)
* Rule changes
* [ruff] Fix RUF100 to detect unused file-level noqa directives with specific codes
* [flake8-pytest-style] Avoid false positive for legacy form of pytest.raises (PT011)
* Documentation
* Fix formatting of "See Style Guide" link
* [ruff] Implement invalid-rule-code as RUF102
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=144
- update to 0.11.4
* Preview features
* [ruff] Implement invalid-rule-code as RUF102
* [syntax-errors] Detect duplicate keys in match mapping patterns
* [syntax-errors] Detect duplicate attributes in match class patterns
* [syntax-errors] Detect invalid syntax in annotations
* [airflow] Add more autofixes for AIR302
* [airflow] Move AIR301 to AIR002
* [airflow] Move AIR302 to AIR301 and AIR303 to AIR302
* [flake8-bandit] Mark str and list[str] literals as trusted input (S603)
* [ruff] Support slices in RUF005
* [syntax-errors] Start detecting compile-time syntax errors
* [syntax-errors] Duplicate type parameter names
* [syntax-errors] Irrefutable case pattern before final case
* [syntax-errors] Multiple assignments in case pattern
* [syntax-errors] Single starred assignment target
* [syntax-errors] Starred expressions in return, yield, and for
* [syntax-errors] Store to or delete __debug__
* Bug fixes
* [syntax-errors] Fix multiple assignment error for class fields in match patterns
* Don't skip visiting non-tuple slice in typing.Annotated subscripts
* Error instead of panic! when running Ruff from a deleted directory
* [syntax-errors] Fix false positive for parenthesized tuple index
* CLI
* Check pyproject.toml correctly when it is passed via stdin
* Configuration
* [flake8-import-conventions] Add import numpy.typing as npt to default flake8-import-conventions.aliases
* Documentation
* [refurb] Document why UserDict, UserList, and UserString are preferred over dict, list, and str (FURB189)
OBS-URL: https://build.opensuse.org/request/show/1267438
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ruff?expand=0&rev=64
* Preview features
* [ruff] Implement invalid-rule-code as RUF102
* [syntax-errors] Detect duplicate keys in match mapping patterns
* [syntax-errors] Detect duplicate attributes in match class patterns
* [syntax-errors] Detect invalid syntax in annotations
* [airflow] Add more autofixes for AIR302
* [airflow] Move AIR301 to AIR002
* [airflow] Move AIR302 to AIR301 and AIR303 to AIR302
* [flake8-bandit] Mark str and list[str] literals as trusted input (S603)
* [ruff] Support slices in RUF005
* [syntax-errors] Start detecting compile-time syntax errors
* [syntax-errors] Duplicate type parameter names
* [syntax-errors] Irrefutable case pattern before final case
* [syntax-errors] Multiple assignments in case pattern
* [syntax-errors] Single starred assignment target
* [syntax-errors] Starred expressions in return, yield, and for
* [syntax-errors] Store to or delete __debug__
* Bug fixes
* [syntax-errors] Fix multiple assignment error for class fields in match patterns
* Don't skip visiting non-tuple slice in typing.Annotated subscripts
* Error instead of panic! when running Ruff from a deleted directory
* [syntax-errors] Fix false positive for parenthesized tuple index
* CLI
* Check pyproject.toml correctly when it is passed via stdin
* Configuration
* [flake8-import-conventions] Add import numpy.typing as npt to default flake8-import-conventions.aliases
* Documentation
* [refurb] Document why UserDict, UserList, and UserString are preferred over dict, list, and str (FURB189)
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=138
- update to 0.9.10
* Preview features
* [ruff] Add new rule RUF059: Unused unpacked assignment
* [syntax-errors] Detect assignment expressions before Python 3.8
* [syntax-errors] Named expressions in decorators before Python 3.9
* [syntax-errors] Parenthesized keyword argument names after Python 3.8
* [syntax-errors] Positional-only parameters before Python 3.8
* [syntax-errors] Tuple unpacking in return and yield before Python 3.8
* [syntax-errors] Type parameter defaults before Python 3.13
* [syntax-errors] Type parameter lists before Python 3.12
* [syntax-errors] except* before Python 3.11
* [syntax-errors] type statements before Python 3.12
* Bug fixes
* Escape template filenames in glob patterns in configuration
* [flake8-simplify] Exempt unittest context methods for SIM115 rule
* Formatter: Fix syntax error location in notebooks
* [pyupgrade] Do not offer fix when at least one target is global/nonlocal (UP028)
* [flake8-builtins] Ignore variables matching module attribute names (A001)
* [pylint] Convert code keyword argument to a positional argument in fix for (PLR1722)
* CLI
* Move rule code from description to check_name in GitLab output serializer
* Documentation
* [pydocstyle] Clarify that D417 only checks docstrings with an arguments section
- update to 0.9.9
* Preview features
* Fix caching of unsupported-syntax errors
* Start detecting version-related syntax errors in the parser
* Rule changes
* [pylint] Mark fix unsafe (PLW1507)
OBS-URL: https://build.opensuse.org/request/show/1251746
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ruff?expand=0&rev=60
* Preview features
* [ruff] Add new rule RUF059: Unused unpacked assignment
* [syntax-errors] Detect assignment expressions before Python 3.8
* [syntax-errors] Named expressions in decorators before Python 3.9
* [syntax-errors] Parenthesized keyword argument names after Python 3.8
* [syntax-errors] Positional-only parameters before Python 3.8
* [syntax-errors] Tuple unpacking in return and yield before Python 3.8
* [syntax-errors] Type parameter defaults before Python 3.13
* [syntax-errors] Type parameter lists before Python 3.12
* [syntax-errors] except* before Python 3.11
* [syntax-errors] type statements before Python 3.12
* Bug fixes
* Escape template filenames in glob patterns in configuration
* [flake8-simplify] Exempt unittest context methods for SIM115 rule
* Formatter: Fix syntax error location in notebooks
* [pyupgrade] Do not offer fix when at least one target is global/nonlocal (UP028)
* [flake8-builtins] Ignore variables matching module attribute names (A001)
* [pylint] Convert code keyword argument to a positional argument in fix for (PLR1722)
* CLI
* Move rule code from description to check_name in GitLab output serializer
* Documentation
* [pydocstyle] Clarify that D417 only checks docstrings with an arguments section
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=129
* Preview features
* Consider __new__ methods as special function type for enforcing class method or static method rules
* [airflow] Improve the internal logic to differentiate deprecated symbols (AIR303)
* [refurb] Manual timezone monkeypatching (FURB162)
* [ruff] Implicit class variable in dataclass (RUF045)
* [ruff] Skip singleton starred expressions for incorrectly-parenthesized-tuple-in-subscript (RUF031)
* [refurb] Check for subclasses includes subscript expressions (FURB189)
* Rule changes
* [flake8-debugger] Also flag sys.breakpointhook and sys.__breakpointhook__ (T100)
* [pycodestyle] Exempt site.addsitedir(...) calls (E402)
* Formatter
* Fix unstable formatting of trailing end-of-line comments of parenthesized attribute values
* Server
* Fix handling of requests received after shutdown message
* Ignore source.organizeImports.ruff and source.fixAll.ruff code actions for a notebook cell
* Include document specific debug info for ruff.printDebugInformation
* Update server to return the debug info as string with ruff.printDebugInformation
* CLI
* Warn on invalid noqa even when there are no diagnostics
* Better error messages while loading configuration extends
* Bug fixes
* [flake8-comprehensions] Handle trailing comma in C403 fix
* [flake8-pyi] Avoid flagging custom-typevar-for-self on metaclass methods (PYI019)
* [pydocstyle] Handle arguments with the same names as sections (D417)
* [pylint] Correct ordering of arguments in fix for if-stmt-min-max (PLR1730)
* [pylint] Do not offer fix for raw strings (PLE251)
* [pyupgrade] Do not upgrade functional TypedDicts with private field names to the class-based syntax (UP013)
* [pyupgrade] Handle micro version numbers correctly (UP036)
* [pyupgrade] Unwrap unary expressions correctly (UP018)
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=128
- Update to 0.9.7
* Consider __new__ methods as special function type for enforcing
class method or static method rules (#13305)
* [airflow] Improve the internal logic to differentiate deprecated
symbols (AIR303) (#16013)
* [refurb] Manual timezone monkeypatching (FURB162) (#16113)
* [ruff] Implicit class variable in dataclass (RUF045) (#14349)
* [ruff] Skip singleton starred expressions for incorrectly-\
parenthesized-tuple-in-subscript (RUF031) (#16083)
* [refurb] Check for subclasses includes subscript expressions (FURB189) (#16155)
* [flake8-debugger] Also flag sys.breakpointhook and
sys.__breakpointhook__ (T100) (#16191)
* [pycodestyle] Exempt site.addsitedir(...) calls (E402) (#16251)
* Fix unstable formatting of trailing end-of-line comments of
parenthesized attribute values (#16187)
* Fix handling of requests received after shutdown message (#16262)
* Ignore source.organizeImports.ruff and source.fixAll.ruff code
actions for a notebook cell (#16154)
* Include document specific debug info for ruff.printDebugInformation (#16215)
* Update server to return the debug info as string with
ruff.printDebugInformation (#16214)
* Warn on invalid noqa even when there are no diagnostics (#16178)
* Better error messages while loading configuration extends (#15658)
* [flake8-comprehensions] Handle trailing comma in C403 fix (#16110)
* [flake8-pyi] Avoid flagging custom-typevar-for-self on metaclass
methods (PYI019) (#16141)
* [pydocstyle] Handle arguments with the same names as sections (D417) (#16011)
* [pylint] Correct ordering of arguments in fix for if-stmt-min-max (PLR1730) (#16080)
* [pylint] Do not offer fix for raw strings (PLE251) (#16132)
* [pyupgrade] Do not upgrade functional TypedDicts with private field
OBS-URL: https://build.opensuse.org/request/show/1248710
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=126
- update to 0.9.6
* Preview features
* [airflow] Add external_task.{ExternalTaskMarker, ExternalTaskSensor} for AIR302
* [flake8-builtins] Make strict module name comparison optional (A005)
* [flake8-pyi] Extend fix to Python <= 3.9 for redundant-none-literal (PYI061)
* [pylint] Also report when the object isn't a literal (PLE1310)
* [ruff] Implement indented-form-feed (RUF054)
* [ruff] Skip type definitions for missing-f-string-syntax (RUF027)
* Rule changes
* [flake8-annotations] Correct syntax for typing.Union in suggested return type fixes for ANN20x rules
* [flake8-builtins] Match upstream module name comparison (A005)
* [flake8-comprehensions] Detect overshadowed list/set/dict, ignore variadics and named expressions (C417)
* [flake8-pie] Remove following comma correctly when the unpacked dictionary is empty (PIE800)
* [flake8-simplify] Only trigger SIM401 on known dictionaries
* [pylint] Do not report calls when object type and argument type mismatch, remove custom escape handling logic (PLE1310)
* [pyupgrade] Comments within parenthesized value ranges should not affect applicability (UP040)
* [pyupgrade] Don't introduce invalid syntax when upgrading old-style type aliases with parenthesized multiline values (UP040)
* [pyupgrade] Ensure we do not rename two type parameters to the same name (UP049)
* [pyupgrade] [ruff] Don't apply renamings if the new name is shadowed in a scope of one of the references to the binding (UP049, RUF052)
* [ruff] Update RUF009 to behave similar to B008 and ignore attributes with immutable types
* Server
* Root exclusions in the server to project root
* Bug fixes
* [flake8-datetime] Ignore .replace() calls while looking for .astimezone
* [flake8-type-checking] Avoid TC004 false positive where the runtime definition is provided by __getattr__
* Documentation
* Improve ruff-lsp migration document
* Undeprecate ruff.nativeServer
OBS-URL: https://build.opensuse.org/request/show/1244821
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ruff?expand=0&rev=58
* Preview features
* [airflow] Add external_task.{ExternalTaskMarker, ExternalTaskSensor} for AIR302
* [flake8-builtins] Make strict module name comparison optional (A005)
* [flake8-pyi] Extend fix to Python <= 3.9 for redundant-none-literal (PYI061)
* [pylint] Also report when the object isn't a literal (PLE1310)
* [ruff] Implement indented-form-feed (RUF054)
* [ruff] Skip type definitions for missing-f-string-syntax (RUF027)
* Rule changes
* [flake8-annotations] Correct syntax for typing.Union in suggested return type fixes for ANN20x rules
* [flake8-builtins] Match upstream module name comparison (A005)
* [flake8-comprehensions] Detect overshadowed list/set/dict, ignore variadics and named expressions (C417)
* [flake8-pie] Remove following comma correctly when the unpacked dictionary is empty (PIE800)
* [flake8-simplify] Only trigger SIM401 on known dictionaries
* [pylint] Do not report calls when object type and argument type mismatch, remove custom escape handling logic (PLE1310)
* [pyupgrade] Comments within parenthesized value ranges should not affect applicability (UP040)
* [pyupgrade] Don't introduce invalid syntax when upgrading old-style type aliases with parenthesized multiline values (UP040)
* [pyupgrade] Ensure we do not rename two type parameters to the same name (UP049)
* [pyupgrade] [ruff] Don't apply renamings if the new name is shadowed in a scope of one of the references to the binding (UP049, RUF052)
* [ruff] Update RUF009 to behave similar to B008 and ignore attributes with immutable types
* Server
* Root exclusions in the server to project root
* Bug fixes
* [flake8-datetime] Ignore .replace() calls while looking for .astimezone
* [flake8-type-checking] Avoid TC004 false positive where the runtime definition is provided by __getattr__
* Documentation
* Improve ruff-lsp migration document
* Undeprecate ruff.nativeServer
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=124
- update to 0.9.5
* Preview features
* Recognize all symbols named TYPE_CHECKING for in_type_checking_block
* [flake8-comprehensions] Handle builtins at top of file correctly for unnecessary-dict-comprehension-for-iterable (C420)
* [flake8-logging] .exception() and exc_info= outside exception handlers (LOG004, LOG014)
* [flake8-pyi] Fix incorrect behaviour of custom-typevar-return-type preview-mode autofix if typing was already imported (PYI019)
* [flake8-pyi] Fix more complex cases (PYI019)
* [flake8-pyi] Make PYI019 autofixable for .py files in preview mode as well as stubs
* [flake8-pyi] Remove type parameter correctly when it is the last (PYI019)
* [pylint] Fix missing parens in unsafe fix for unnecessary-dunder-call (PLC2801)
* [pyupgrade] Better messages and diagnostic range (UP015)
* [pyupgrade] Rename private type parameters in PEP 695 generics (UP049)
* [refurb] Also report non-name expressions (FURB169)
* [refurb] Mark fix as unsafe if there are comments (FURB171)
* [ruff] Classes with mixed type variable style (RUF053)
* [airflow] BashOperator has been moved to airflow.providers.standard.operators.bash.BashOperator (AIR302)
* [flake8-pyi] Add autofix for unused-private-type-var (PYI018)
* [flake8-pyi] Significantly improve accuracy of PYI019 if preview mode is enabled
* Rule changes
* Preserve triple quotes and prefixes for strings
* [flake8-comprehensions] Skip when TypeError present from too many (kw)args for C410,C411, and C418
* [flake8-pyi] Rename PYI019 and improve its diagnostic message
* [pep8-naming] Ignore @override methods (N803)
* [pyupgrade] Reuse replacement logic from UP046 and UP047 to preserve more comments (UP040)
* [ruff] Analyze deferred annotations before enforcing mutable-(data)class-default and function-call-in-dataclass-default-argument (RUF008,RUF009,RUF012)
* [pycodestyle] Exempt sys.path += ... calls (E402)
* Configuration
* Config error only when flake8-import-conventions alias conflicts with isort.required-imports bound name
* Workaround Even Better TOML crash related to allOf
* Bug fixes
OBS-URL: https://build.opensuse.org/request/show/1244445
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ruff?expand=0&rev=57
* Preview features
* Recognize all symbols named TYPE_CHECKING for in_type_checking_block
* [flake8-comprehensions] Handle builtins at top of file correctly for unnecessary-dict-comprehension-for-iterable (C420)
* [flake8-logging] .exception() and exc_info= outside exception handlers (LOG004, LOG014)
* [flake8-pyi] Fix incorrect behaviour of custom-typevar-return-type preview-mode autofix if typing was already imported (PYI019)
* [flake8-pyi] Fix more complex cases (PYI019)
* [flake8-pyi] Make PYI019 autofixable for .py files in preview mode as well as stubs
* [flake8-pyi] Remove type parameter correctly when it is the last (PYI019)
* [pylint] Fix missing parens in unsafe fix for unnecessary-dunder-call (PLC2801)
* [pyupgrade] Better messages and diagnostic range (UP015)
* [pyupgrade] Rename private type parameters in PEP 695 generics (UP049)
* [refurb] Also report non-name expressions (FURB169)
* [refurb] Mark fix as unsafe if there are comments (FURB171)
* [ruff] Classes with mixed type variable style (RUF053)
* [airflow] BashOperator has been moved to airflow.providers.standard.operators.bash.BashOperator (AIR302)
* [flake8-pyi] Add autofix for unused-private-type-var (PYI018)
* [flake8-pyi] Significantly improve accuracy of PYI019 if preview mode is enabled
* Rule changes
* Preserve triple quotes and prefixes for strings
* [flake8-comprehensions] Skip when TypeError present from too many (kw)args for C410,C411, and C418
* [flake8-pyi] Rename PYI019 and improve its diagnostic message
* [pep8-naming] Ignore @override methods (N803)
* [pyupgrade] Reuse replacement logic from UP046 and UP047 to preserve more comments (UP040)
* [ruff] Analyze deferred annotations before enforcing mutable-(data)class-default and function-call-in-dataclass-default-argument (RUF008,RUF009,RUF012)
* [pycodestyle] Exempt sys.path += ... calls (E402)
* Configuration
* Config error only when flake8-import-conventions alias conflicts with isort.required-imports bound name
* Workaround Even Better TOML crash related to allOf
* Bug fixes
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=122
- Update to 0.9.4
* Preview features
- [airflow] Extend airflow context parameter check for BaseOperator.execute (AIR302) (#15713)
- [airflow] Update AIR302 to check for deprecated context keys (#15144)
- [flake8-bandit] Permit suspicious imports within stub files (S4) (#15822)
- [pylint] Do not trigger PLR6201 on empty collections (#15732)
- [refurb] Do not emit diagnostic when loop variables are used outside loop body (FURB122) (#15757)
- [ruff] Add support for more re patterns (RUF055) (#15764)
- [ruff] Check for shadowed map before suggesting fix (RUF058) (#15790)
- [ruff] Do not emit diagnostic when all arguments to zip() are variadic (RUF058) (#15744)
- [ruff] Parenthesize fix when argument spans multiple lines for unnecessary-round (RUF057) (#15703)
* Rule changes
- Preserve quote style in generated code (#15726, #15778, #15794)
- [flake8-bugbear] Exempt NewType calls where the original type is immutable (B008) (#15765)
- [pylint] Honor banned top-level imports by TID253 in PLC0415. (#15628)
- [pyupgrade] Ignore is_typeddict and TypedDict for deprecated-import (UP035) (#15800)
* CLI
- Fix formatter warning message for flake8-quotes option (#15788)
- Implement tab autocomplete for ruff config (#15603)
* Bug fixes
- [flake8-comprehensions] Do not emit unnecessary-map diagnostic when lambda has different arity (C417) (#15802)
- [flake8-comprehensions] Parenthesize sorted when needed for unnecessary-call-around-sorted (C413) (#15825)
- [pyupgrade] Handle end-of-line comments for quoted-annotation (UP037) (#15824)
* Documentation
- Add missing config docstrings (#15803)
- Add references to trio.run_process and anyio.run_process (#15761)
- Use uv init --lib in tutorial (#15718)
OBS-URL: https://build.opensuse.org/request/show/1243299
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=120
- Upade to 0.9.3
* Preview features
* [airflow] Argument fail_stop in DAG has been renamed as fail_fast (AIR302)
* [airflow] Extend AIR303 with more symbols
* [flake8-bandit] Report all references to suspicious functions (S3)
* [flake8-pytest-style] Do not emit diagnostics for empty for loops (PT012, PT031)
* [flake8-simplify] Avoid double negations (SIM103)
* [pyflakes] Fix infinite loop with unused local import in __init__.py (F401)
* [pylint] Do not report methods with only one EM101-compatible raise (PLR6301)
* [pylint] Implement redefined-slots-in-subclass (W0244)
* [pyupgrade] Add rules to use PEP 695 generics in classes and functions (UP046, UP047)
* [refurb] Implement for-loop-writes (FURB122)
* [ruff] Implement needless-else clause (RUF047)
* [ruff] Implement starmap-zip (RUF058)
* Rule changes
* [flake8-bugbear] Do not raise error if keyword argument is present and target-python version is less or equals than 3.9 (B903)
* [flake8-comprehensions] strip parentheses around generators in unnecessary-generator-set (C401)
* [flake8-pytest-style] Rewrite references to .exception (PT027)
* [flake8-simplify] Mark fixes as unsafe (SIM201, SIM202)
* [flake8-type-checking] Fix some safe fixes being labeled unsafe (TC006,TC008)
* [isort] Omit trailing whitespace in unsorted-imports (I001)
* [pydoclint] Allow ignoring one line docstrings for DOC rules
* [pyflakes] Apply redefinition fixes by source code order (F811)
* [pyflakes] Avoid removing too many imports in redefined-while-unused (F811)
* [pyflakes] Group redefinition fixes by source statement (F811)
* [pylint] Include name of base class in message for redefined-slots-in-subclass (W0244)
* [ruff] Update fix for RUF055 to use var == value
* Formatter
* Fix bracket spacing for single-element tuples in f-string expressions
* Fix unstable f-string formatting for expressions containing a trailing comma
OBS-URL: https://build.opensuse.org/request/show/1240140
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ruff?expand=0&rev=55
* Preview features
* [airflow] Argument fail_stop in DAG has been renamed as fail_fast (AIR302)
* [airflow] Extend AIR303 with more symbols
* [flake8-bandit] Report all references to suspicious functions (S3)
* [flake8-pytest-style] Do not emit diagnostics for empty for loops (PT012, PT031)
* [flake8-simplify] Avoid double negations (SIM103)
* [pyflakes] Fix infinite loop with unused local import in __init__.py (F401)
* [pylint] Do not report methods with only one EM101-compatible raise (PLR6301)
* [pylint] Implement redefined-slots-in-subclass (W0244)
* [pyupgrade] Add rules to use PEP 695 generics in classes and functions (UP046, UP047)
* [refurb] Implement for-loop-writes (FURB122)
* [ruff] Implement needless-else clause (RUF047)
* [ruff] Implement starmap-zip (RUF058)
* Rule changes
* [flake8-bugbear] Do not raise error if keyword argument is present and target-python version is less or equals than 3.9 (B903)
* [flake8-comprehensions] strip parentheses around generators in unnecessary-generator-set (C401)
* [flake8-pytest-style] Rewrite references to .exception (PT027)
* [flake8-simplify] Mark fixes as unsafe (SIM201, SIM202)
* [flake8-type-checking] Fix some safe fixes being labeled unsafe (TC006,TC008)
* [isort] Omit trailing whitespace in unsorted-imports (I001)
* [pydoclint] Allow ignoring one line docstrings for DOC rules
* [pyflakes] Apply redefinition fixes by source code order (F811)
* [pyflakes] Avoid removing too many imports in redefined-while-unused (F811)
* [pyflakes] Group redefinition fixes by source statement (F811)
* [pylint] Include name of base class in message for redefined-slots-in-subclass (W0244)
* [ruff] Update fix for RUF055 to use var == value
* Formatter
* Fix bracket spacing for single-element tuples in f-string expressions
* Fix unstable f-string formatting for expressions containing a trailing comma
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=118
- update to 0.9.1
* Preview features
* [pycodestyle] Run too-many-newlines-at-end-of-file on each cell in notebooks (W391)
* [ruff] Omit diagnostic for shadowed private function parameters in used-dummy-variable (RUF052)
* Rule changes
* [flake8-bugbear] Improve assert-raises-exception message (B017)
* Formatter
* Preserve trailing end-of line comments for the last string literal in implicitly concatenated strings
* Server
* Fix a bug where the server and client notebooks were out of sync after reordering cells
* Bug fixes
* [flake8-pie] Correctly remove wrapping parentheses (PIE800)
* [pyupgrade] Handle comments and multiline expressions correctly (UP037)
OBS-URL: https://build.opensuse.org/request/show/1237200
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ruff?expand=0&rev=53
* Preview features
* [pycodestyle] Run too-many-newlines-at-end-of-file on each cell in notebooks (W391)
* [ruff] Omit diagnostic for shadowed private function parameters in used-dummy-variable (RUF052)
* Rule changes
* [flake8-bugbear] Improve assert-raises-exception message (B017)
* Formatter
* Preserve trailing end-of line comments for the last string literal in implicitly concatenated strings
* Server
* Fix a bug where the server and client notebooks were out of sync after reordering cells
* Bug fixes
* [flake8-pie] Correctly remove wrapping parentheses (PIE800)
* [pyupgrade] Handle comments and multiline expressions correctly (UP037)
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=114
- update to 0.9.0:
* This release introduces the new 2025 stable style (#13371),
stabilizing the following changes:
* Format expressions in f-string elements
* Alternate quotes for strings inside f-strings
* Preserve the casing of hex codes in f-string debug
expressions
* Choose the quote style for each string literal in an
implicitly concatenated f-string rather than for the entire
string
* Automatically join an implicitly concatenated string into a
single string literal if it fits on a single line
* Remove the `ISC001` incompatibility warning
* Prefer parenthesizing the `assert` message over breaking the
assertion expression
* Automatically parenthesize over-long `if` guards in `match`
`case` clauses
* More consistent formatting for `match` `case` patterns
* Avoid unnecessary parentheses around return type annotations
* Keep the opening parentheses on the same line as the `if`
keyword for comprehensions where the condition has a leading
comment
* More consistent formatting for `with` statements with a
single context manager for Python 3.8 or older
* Correctly calculate the line-width for code blocks in
docstrings when using `max-doc-code-line-length = "dynamic"`
- update to 0.8.6
* [format]: Preserve multiline implicit concatenated strings in docstring positions
* [ruff] Add rule to detect empty literal in deque call (RUF025)
OBS-URL: https://build.opensuse.org/request/show/1236832
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ruff?expand=0&rev=52
* This release introduces the new 2025 stable style (#13371),
stabilizing the following changes:
* Format expressions in f-string elements
* Alternate quotes for strings inside f-strings
* Preserve the casing of hex codes in f-string debug
expressions
* Choose the quote style for each string literal in an
implicitly concatenated f-string rather than for the entire
string
* Automatically join an implicitly concatenated string into a
single string literal if it fits on a single line
* Remove the `ISC001` incompatibility warning
* Prefer parenthesizing the `assert` message over breaking the
assertion expression
* Automatically parenthesize over-long `if` guards in `match`
`case` clauses
* More consistent formatting for `match` `case` patterns
* Avoid unnecessary parentheses around return type annotations
* Keep the opening parentheses on the same line as the `if`
keyword for comprehensions where the condition has a leading
comment
* More consistent formatting for `with` statements with a
single context manager for Python 3.8 or older
* Correctly calculate the line-width for code blocks in
docstrings when using `max-doc-code-line-length = "dynamic"`
- update to 0.8.6
* Preview features
* [format]: Preserve multiline implicit concatenated strings in docstring positions
* [ruff] Add rule to detect empty literal in deque call (RUF025)
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=112
- update to 0.8.3
* Preview features
* Fix fstring formatting removing overlong implicit concatenated string in expression part
* [airflow] Add fix to remove deprecated keyword arguments (AIR302)
* [airflow]: Extend rule to include deprecated names for Airflow 3.0 (AIR302)
* [flake8-bugbear] Improve error messages for except* (B025, B029, B030, B904)
* [flake8-bugbear] itertools.batched() without explicit strict (B911)
* [flake8-use-pathlib] Dotless suffix passed to Path.with_suffix() (PTH210)
* [pylint] Include parentheses and multiple comparators in check for boolean-chained-comparison (PLR1716)
* [ruff] Do not simplify round() calls (RUF046)
* [ruff] Don't emit used-dummy-variable on function parameters (RUF052)
* [ruff] Implement if-key-in-dict-del (RUF051)
* [ruff] Mark autofix for RUF052 as always unsafe
* [ruff] Teach autofix for used-dummy-variable about TypeVars etc. (RUF052)
* Rule changes
* [flake8-bugbear] Offer unsafe autofix for no-explicit-stacklevel (B028)
* [flake8-pyi] Skip all type definitions in string-or-bytes-too-long (PYI053)
* [pyupgrade] Do not report when a UTF-8 comment is followed by a non-UTF-8 one (UP009)
* [pyupgrade] Mark fixes for convert-typed-dict-functional-to-class and convert-named-tuple-functional-to-class
as unsafe if they will remove comments (UP013, UP014)
* Bug fixes
* Raise syntax error for mixing except and except*
* [flake8-bugbear] Fix B028 to allow stacklevel to be explicitly assigned as a positional argument
* [flake8-bugbear] Skip B028 if warnings.warn is called with *args or **kwargs
* [flake8-comprehensions] Skip iterables with named expressions in unnecessary-map (C417)
* [flake8-pyi] Also remove self and cls's annotation (PYI034)
* [flake8-pytest-style] Fix pytest-parametrize-names-wrong-type (PT006) to edit both argnames and argvalues if both of them are single-element tuples/lists
* [perflint] Improve autofix for PERF401
* [pylint] Fix PLW1508 false positive for default string created via a mult operation
OBS-URL: https://build.opensuse.org/request/show/1231367
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ruff?expand=0&rev=50
* Preview features
* Fix fstring formatting removing overlong implicit concatenated string in expression part
* [airflow] Add fix to remove deprecated keyword arguments (AIR302)
* [airflow]: Extend rule to include deprecated names for Airflow 3.0 (AIR302)
* [flake8-bugbear] Improve error messages for except* (B025, B029, B030, B904)
* [flake8-bugbear] itertools.batched() without explicit strict (B911)
* [flake8-use-pathlib] Dotless suffix passed to Path.with_suffix() (PTH210)
* [pylint] Include parentheses and multiple comparators in check for boolean-chained-comparison (PLR1716)
* [ruff] Do not simplify round() calls (RUF046)
* [ruff] Don't emit used-dummy-variable on function parameters (RUF052)
* [ruff] Implement if-key-in-dict-del (RUF051)
* [ruff] Mark autofix for RUF052 as always unsafe
* [ruff] Teach autofix for used-dummy-variable about TypeVars etc. (RUF052)
* Rule changes
* [flake8-bugbear] Offer unsafe autofix for no-explicit-stacklevel (B028)
* [flake8-pyi] Skip all type definitions in string-or-bytes-too-long (PYI053)
* [pyupgrade] Do not report when a UTF-8 comment is followed by a non-UTF-8 one (UP009)
* [pyupgrade] Mark fixes for convert-typed-dict-functional-to-class and convert-named-tuple-functional-to-class
as unsafe if they will remove comments (UP013, UP014)
* Bug fixes
* Raise syntax error for mixing except and except*
* [flake8-bugbear] Fix B028 to allow stacklevel to be explicitly assigned as a positional argument
* [flake8-bugbear] Skip B028 if warnings.warn is called with *args or **kwargs
* [flake8-comprehensions] Skip iterables with named expressions in unnecessary-map (C417)
* [flake8-pyi] Also remove self and cls's annotation (PYI034)
* [flake8-pytest-style] Fix pytest-parametrize-names-wrong-type (PT006) to edit both argnames and argvalues if both of them are single-element tuples/lists
* [perflint] Improve autofix for PERF401
* [pylint] Fix PLW1508 false positive for default string created via a mult operation
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=108
- update to 0.8.1
* Preview features
* Formatter: Avoid invalid syntax for format-spec with quotes for all Python versions
* Formatter: Consider quotes inside format-specs when choosing the quotes for an f-string
* Formatter: Do not consider f-strings with escaped newlines as multiline
* Formatter: Fix f-string formatting in assignment statement
* Formatter: Fix unnecessary space around power operator (**) in overlong f-string expressions
* [airflow] Avoid implicit schedule argument to DAG and @dag (AIR301)
* [flake8-builtins] Exempt private built-in modules (A005)
* [flake8-pytest-style] Fix pytest.mark.parametrize rules to check calls instead of decorators
* [flake8-type-checking] Implement runtime-cast-value (TC006)
* [flake8-type-checking] Implement unquoted-type-alias (TC007) and quoted-type-alias (TC008)
* [flake8-use-pathlib] Recommend Path.iterdir() over os.listdir() (PTH208)
* [pylint] Extend invalid-envvar-default to detect os.environ.get (PLW1508)
* [pylint] Implement len-test (PLC1802)
* [refurb] Fix bug where methods defined using lambdas were flagged by FURB118
* [ruff] Auto-add r prefix when string has no backslashes for unraw-re-pattern (RUF039)
* [ruff] Implement invalid-assert-message-literal-argument (RUF040)
* [ruff] Implement unnecessary-nested-literal (RUF041)
* [ruff] Implement unnecessary-regular-expression (RUF055)
* Rule changes
* Ignore more rules for stub files
* [pep8-naming] Eliminate false positives for single-letter names (N811, N814)
* [pyflakes] Avoid false positives in @no_type_check contexts (F821, F722)
* [ruff] Detect redirected-noqa in file-level comments (RUF101)
* [ruff] Mark fixes for unsorted-dunder-all and unsorted-dunder-slots as unsafe when there are complex comments in the sequence (RUF022, RUF023)
* Bug fixes
* Avoid fixing code to None | None for redundant-none-literal (PYI061) and never-union (RUF020) (#14583, #14589)
* [flake8-bugbear] Fix mutable-contextvar-default to resolve annotated function calls properly (B039)
* [flake8-pyi, ruff] Fix traversal of nested literals and unions (PYI016, PYI051, PYI055, PYI062, RUF041)
OBS-URL: https://build.opensuse.org/request/show/1227743
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ruff?expand=0&rev=48
* Preview features
* Formatter: Avoid invalid syntax for format-spec with quotes for all Python versions
* Formatter: Consider quotes inside format-specs when choosing the quotes for an f-string
* Formatter: Do not consider f-strings with escaped newlines as multiline
* Formatter: Fix f-string formatting in assignment statement
* Formatter: Fix unnecessary space around power operator (**) in overlong f-string expressions
* [airflow] Avoid implicit schedule argument to DAG and @dag (AIR301)
* [flake8-builtins] Exempt private built-in modules (A005)
* [flake8-pytest-style] Fix pytest.mark.parametrize rules to check calls instead of decorators
* [flake8-type-checking] Implement runtime-cast-value (TC006)
* [flake8-type-checking] Implement unquoted-type-alias (TC007) and quoted-type-alias (TC008)
* [flake8-use-pathlib] Recommend Path.iterdir() over os.listdir() (PTH208)
* [pylint] Extend invalid-envvar-default to detect os.environ.get (PLW1508)
* [pylint] Implement len-test (PLC1802)
* [refurb] Fix bug where methods defined using lambdas were flagged by FURB118
* [ruff] Auto-add r prefix when string has no backslashes for unraw-re-pattern (RUF039)
* [ruff] Implement invalid-assert-message-literal-argument (RUF040)
* [ruff] Implement unnecessary-nested-literal (RUF041)
* [ruff] Implement unnecessary-regular-expression (RUF055)
* Rule changes
* Ignore more rules for stub files
* [pep8-naming] Eliminate false positives for single-letter names (N811, N814)
* [pyflakes] Avoid false positives in @no_type_check contexts (F821, F722)
* [ruff] Detect redirected-noqa in file-level comments (RUF101)
* [ruff] Mark fixes for unsorted-dunder-all and unsorted-dunder-slots as unsafe when there are complex comments in the sequence (RUF022, RUF023)
* Bug fixes
* Avoid fixing code to None | None for redundant-none-literal (PYI061) and never-union (RUF020) (#14583, #14589)
* [flake8-bugbear] Fix mutable-contextvar-default to resolve annotated function calls properly (B039)
* [flake8-pyi, ruff] Fix traversal of nested literals and unions (PYI016, PYI051, PYI055, PYI062, RUF041)
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=104
- update to 0.7.3
* Preview features
* Formatter: Disallow single-line implicit concatenated strings
* [flake8-pyi] Include all Python file types for PYI006 and PYI066
* [flake8-simplify] Implement split-of-static-string (SIM905)
* [refurb] Implement subclass-builtin (FURB189)
* [ruff] Improve diagnostic messages and docs (RUF031, RUF032, RUF034)
* Rule changes
* Detect items that hash to same value in duplicate sets (B033, PLC0208)
* [eradicate] Better detection of IntelliJ language injection comments (ERA001)
* [flake8-pyi] Add autofix for docstring-in-stub (PYI021)
* [flake8-pyi] Update duplicate-literal-member (PYI062) to alawys provide an autofix
* [pyflakes] Detect items that hash to same value in duplicate dictionaries (F601)
* [ruff] Fix false positive for decorators (RUF028)
* Bug fixes
* Avoid parsing joint rule codes as distinct codes in # noqa
* [eradicate] ignore # language= in commented-out-code rule (ERA001)
* [flake8-bugbear] - do not run mutable-argument-default on stubs (B006)
* [flake8-builtins] Skip lambda expressions in builtin-argument-shadowing (A002)
* [flake8-comprehension] Also remove trailing comma while fixing C409 and C419
* [flake8-simplify] Allow open without context manager in return statement (SIM115)
* [pylint] Respect hash-equivalent literals in iteration-over-set (PLC0208)
* [pylint] Update known dunder methods for Python 3.13 (PLW3201)
* [pyupgrade] - ignore kwarg unpacking for UP044
* [refurb] Parse more exotic decimal strings in verbose-decimal-constructor (FURB157)
* Documentation
* Add links to missing related options within rule documentations
* Add rule short code to mkdocs tags to allow searching via rule codes
OBS-URL: https://build.opensuse.org/request/show/1223378
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ruff?expand=0&rev=46
* Preview features
* Formatter: Disallow single-line implicit concatenated strings
* [flake8-pyi] Include all Python file types for PYI006 and PYI066
* [flake8-simplify] Implement split-of-static-string (SIM905)
* [refurb] Implement subclass-builtin (FURB189)
* [ruff] Improve diagnostic messages and docs (RUF031, RUF032, RUF034)
* Rule changes
* Detect items that hash to same value in duplicate sets (B033, PLC0208)
* [eradicate] Better detection of IntelliJ language injection comments (ERA001)
* [flake8-pyi] Add autofix for docstring-in-stub (PYI021)
* [flake8-pyi] Update duplicate-literal-member (PYI062) to alawys provide an autofix
* [pyflakes] Detect items that hash to same value in duplicate dictionaries (F601)
* [ruff] Fix false positive for decorators (RUF028)
* Bug fixes
* Avoid parsing joint rule codes as distinct codes in # noqa
* [eradicate] ignore # language= in commented-out-code rule (ERA001)
* [flake8-bugbear] - do not run mutable-argument-default on stubs (B006)
* [flake8-builtins] Skip lambda expressions in builtin-argument-shadowing (A002)
* [flake8-comprehension] Also remove trailing comma while fixing C409 and C419
* [flake8-simplify] Allow open without context manager in return statement (SIM115)
* [pylint] Respect hash-equivalent literals in iteration-over-set (PLC0208)
* [pylint] Update known dunder methods for Python 3.13 (PLW3201)
* [pyupgrade] - ignore kwarg unpacking for UP044
* [refurb] Parse more exotic decimal strings in verbose-decimal-constructor (FURB157)
* Documentation
* Add links to missing related options within rule documentations
* Add rule short code to mkdocs tags to allow searching via rule codes
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=100
- update to 0.7.2
* Preview features
* Fix formatting of single with-item with trailing comment
* [pyupgrade] Add PEP 646 Unpack conversion to * with fix (UP044)
* Rule changes
* Regenerate known_stdlibs.rs with stdlibs 2024.10.25
* [flake8-no-pep420] Skip namespace package enforcement for PEP 723 scripts (INP001)
* Server
* Fix server panic when undoing an edit
* Bug fixes
* Fix issues in discovering ruff in pip build environments
* [flake8-type-checking] Fix false positive for singledispatchmethod (TCH003)
* [flake8-type-checking] Treat return type of singledispatch as runtime-required (TCH003)
* Documentation
* [flake8-simplify] Include caveats of enabling if-else-block-instead-of-if-exp (SIM108)
OBS-URL: https://build.opensuse.org/request/show/1220121
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ruff?expand=0&rev=45
* Preview features
* Fix formatting of single with-item with trailing comment
* [pyupgrade] Add PEP 646 Unpack conversion to * with fix (UP044)
* Rule changes
* Regenerate known_stdlibs.rs with stdlibs 2024.10.25
* [flake8-no-pep420] Skip namespace package enforcement for PEP 723 scripts (INP001)
* Server
* Fix server panic when undoing an edit
* Bug fixes
* Fix issues in discovering ruff in pip build environments
* [flake8-type-checking] Fix false positive for singledispatchmethod (TCH003)
* [flake8-type-checking] Treat return type of singledispatch as runtime-required (TCH003)
* Documentation
* [flake8-simplify] Include caveats of enabling if-else-block-instead-of-if-exp (SIM108)
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=97
- update to 0.7.1
* Preview features
* Fix E221 and E222 to flag missing or extra whitespace around == operator
* Formatter: Alternate quotes for strings inside f-strings in preview
* Formatter: Join implicit concatenated strings when they fit on a line
* [pylint] Restrict iteration-over-set to only work on sets of literals (PLC0208)
* Rule changes
* [flake8-type-checking] Support auto-quoting when annotations contain quotes
* Server
* Avoid indexing the workspace for single-file mode
* Bug fixes
* Make ARG002 compatible with EM101 when raising NotImplementedError
OBS-URL: https://build.opensuse.org/request/show/1218438
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ruff?expand=0&rev=44
* Preview features
* Fix E221 and E222 to flag missing or extra whitespace around == operator
* Formatter: Alternate quotes for strings inside f-strings in preview
* Formatter: Join implicit concatenated strings when they fit on a line
* [pylint] Restrict iteration-over-set to only work on sets of literals (PLC0208)
* Rule changes
* [flake8-type-checking] Support auto-quoting when annotations contain quotes
* Server
* Avoid indexing the workspace for single-file mode
* Bug fixes
* Make ARG002 compatible with EM101 when raising NotImplementedError
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=93
- update to 0.7.0
* Breaking changes
* The pytest rules PT001 and PT023 now default to omitting the decorator parentheses when there are no arguments. This was a change that we attempted to make in Ruff v0.6.0, but only partially made due to an error on our part. See the blog post for more details.
* The useless-try-except rule (in our tryceratops category) has been recoded from TRY302 to TRY203 . This ensures Ruff's code is consistent with the same rule in the tryceratops linter.
* The lint.allow-unused-imports setting has been removed . Use lint.pyflakes.allow-unused-imports instead.
* Formatter preview style
* Normalize implicit concatenated f-string quotes per part
* Preview linter features
* [refurb] implement hardcoded-string-charset (FURB156)
* [refurb] Count codepoints not bytes for slice-to-remove-prefix-or-suffix (FURB188)
* Rule changes
* [pylint] Mark PLE1141 fix as unsafe
* [flake8-async] Consider async generators to be "checkpoints" for cancel-scope-no-checkpoint (ASYNC100)
* [flake8-bugbear] Do not suggest setting parameter strict= to False in B905 diagnostic message
* [flake8-todos] Only flag the word "TODO", not words starting with "todo" (TD006)
* [pycodestyle] Fix whitespace-related false positives and false negatives inside type-parameter lists (E231, E251)
* [flake8-simplify] Stabilize preview behavior for SIM115 so that the rule can detect files being opened from a wider range of standard-library functions .
* CLI
* Add explanation of fixable in --statistics command
* Bug fixes
* [pyflakes] Allow ipytest cell magic (F401)
* [flake8-use-pathlib] Fix PTH123 false positive when open is passed a file descriptor
* [flake8-bandit] Detect patterns from multi line SQL statements (S608)
* [flake8-pyi] - Fix dropped expressions in PYI030 autofix
OBS-URL: https://build.opensuse.org/request/show/1208873
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ruff?expand=0&rev=42
* Breaking changes
* The pytest rules PT001 and PT023 now default to omitting the decorator parentheses when there are no arguments. This was a change that we attempted to make in Ruff v0.6.0, but only partially made due to an error on our part. See the blog post for more details.
* The useless-try-except rule (in our tryceratops category) has been recoded from TRY302 to TRY203 . This ensures Ruff's code is consistent with the same rule in the tryceratops linter.
* The lint.allow-unused-imports setting has been removed . Use lint.pyflakes.allow-unused-imports instead.
* Formatter preview style
* Normalize implicit concatenated f-string quotes per part
* Preview linter features
* [refurb] implement hardcoded-string-charset (FURB156)
* [refurb] Count codepoints not bytes for slice-to-remove-prefix-or-suffix (FURB188)
* Rule changes
* [pylint] Mark PLE1141 fix as unsafe
* [flake8-async] Consider async generators to be "checkpoints" for cancel-scope-no-checkpoint (ASYNC100)
* [flake8-bugbear] Do not suggest setting parameter strict= to False in B905 diagnostic message
* [flake8-todos] Only flag the word "TODO", not words starting with "todo" (TD006)
* [pycodestyle] Fix whitespace-related false positives and false negatives inside type-parameter lists (E231, E251)
* [flake8-simplify] Stabilize preview behavior for SIM115 so that the rule can detect files being opened from a wider range of standard-library functions .
* CLI
* Add explanation of fixable in --statistics command
* Bug fixes
* [pyflakes] Allow ipytest cell magic (F401)
* [flake8-use-pathlib] Fix PTH123 false positive when open is passed a file descriptor
* [flake8-bandit] Detect patterns from multi line SQL statements (S608)
* [flake8-pyi] - Fix dropped expressions in PYI030 autofix
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=89
- update to 0.6.9
* Preview features
* Fix codeblock dynamic line length calculation for indented docstring examples
* [refurb] Mark FURB118 fix as unsafe
* Rule changes
* [pydocstyle] Don't raise D208 when last line is non-empty
* [pylint] Preserve trivia (i.e. comments) in PLR5501 autofix
* Configuration
* [pyflakes] Add allow-unused-imports setting for unused-import rule (F401)
* Bug fixes
* Support ruff discovery in pip build environments
* [flake8-bugbear] Avoid short circuiting B017 for multiple context managers
* [pylint] Do not offer an invalid fix for PLR1716 when the comparisons contain parenthesis
* [pyupgrade] Fix UP043 to apply to collections.abc.Generator and collections.abc.AsyncGenerator
* [refurb] Fix handling of slices in tuples for FURB118, e.g., x[:, 1]
OBS-URL: https://build.opensuse.org/request/show/1206146
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ruff?expand=0&rev=41
* Preview features
* Fix codeblock dynamic line length calculation for indented docstring examples
* [refurb] Mark FURB118 fix as unsafe
* Rule changes
* [pydocstyle] Don't raise D208 when last line is non-empty
* [pylint] Preserve trivia (i.e. comments) in PLR5501 autofix
* Configuration
* [pyflakes] Add allow-unused-imports setting for unused-import rule (F401)
* Bug fixes
* Support ruff discovery in pip build environments
* [flake8-bugbear] Avoid short circuiting B017 for multiple context managers
* [pylint] Do not offer an invalid fix for PLR1716 when the comparisons contain parenthesis
* [pyupgrade] Fix UP043 to apply to collections.abc.Generator and collections.abc.AsyncGenerator
* [refurb] Fix handling of slices in tuples for FURB118, e.g., x[:, 1]
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=87
- update to 0.6.7:
* Add Python version support to ruff analyze CLI
* Add `exclude` support to `ruff analyze`
* Fix parentheses around return type annotations
* \[`pycodestyle`\] Fix: Don't autofix if the first line ends
in a question mark? (D400)
* Respect `lint.exclude` in ruff check `--add-noqa`
* Avoid tracking module resolver files in Salsa
- update to 0.6.6:
* \[`refurb`\] Skip `slice-to-remove-prefix-or-suffix`
(`FURB188`) when non-trivial slice steps are present
* Add a subcommand to generate dependency graphs
* Fix placement of inline parameter comments
* Fix off-by one error in the `LineIndex::offset` calculation
* \[`fastapi`\] Respect FastAPI aliases in route definitions
* \[`pydocstyle`\] Respect word boundaries when detecting
function signature in docs
* [pydoclint] Ignore DOC201 when function name is "new"
* [refurb] Implement slice-to-remove-prefix-or-suffix (FURB188)
* [eradicate] Ignore script-comments with multiple end-tags (ERA001)
was added in a newer version than specified in Ruff config (F821)
* Add support for extensionless Python files for server
* Fix configuration inheritance for configurations specified in the LSP settings
* [ruff] Handle unary operators in decimal-from-float-literal (RUF032)
* Only include rules with diagnostics in SARIF metadata
* Add "Copy as pyproject.toml/ruff.toml" and "Paste from TOML"
* Fix errors not shown for restored snippet on page load
OBS-URL: https://build.opensuse.org/request/show/1202630
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ruff?expand=0&rev=39
* Add Python version support to ruff analyze CLI
* Add `exclude` support to `ruff analyze`
* Fix parentheses around return type annotations
* \[`pycodestyle`\] Fix: Don't autofix if the first line ends
in a question mark? (D400)
* Respect `lint.exclude` in ruff check `--add-noqa`
* Avoid tracking module resolver files in Salsa
- update to 0.6.6:
* \[`refurb`\] Skip `slice-to-remove-prefix-or-suffix`
(`FURB188`) when non-trivial slice steps are present
* Add a subcommand to generate dependency graphs
* Fix placement of inline parameter comments
* Fix off-by one error in the `LineIndex::offset` calculation
* \[`fastapi`\] Respect FastAPI aliases in route definitions
* \[`pydocstyle`\] Respect word boundaries when detecting
function signature in docs
* [pydoclint] Ignore DOC201 when function name is "new"
* [refurb] Implement slice-to-remove-prefix-or-suffix (FURB188)
* Rule changes
* [eradicate] Ignore script-comments with multiple end-tags (ERA001)
was added in a newer version than specified in Ruff config (F821)
* Add support for extensionless Python files for server
* Fix configuration inheritance for configurations specified in the LSP settings
* Bug fixes
* [ruff] Handle unary operators in decimal-from-float-literal (RUF032)
* CLI
* Only include rules with diagnostics in SARIF metadata
* Add "Copy as pyproject.toml/ruff.toml" and "Paste from TOML"
* Fix errors not shown for restored snippet on page load
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=83
- update to 0.6.5:
* Preview features
* [pydoclint] Ignore DOC201 when function name is "new"
* [refurb] Implement slice-to-remove-prefix-or-suffix (FURB188)
* Rule changes
* [eradicate] Ignore script-comments with multiple end-tags (ERA001)
* [pyflakes] Improve error message for UndefinedName when a builtin
was added in a newer version than specified in Ruff config (F821)
* Server
* Add support for extensionless Python files for server
* Fix configuration inheritance for configurations specified in the LSP settings
* Bug fixes
* [ruff] Handle unary operators in decimal-from-float-literal (RUF032)
* CLI
* Only include rules with diagnostics in SARIF metadata
* Playground
* Add "Copy as pyproject.toml/ruff.toml" and "Paste from TOML"
* Fix errors not shown for restored snippet on page load
OBS-URL: https://build.opensuse.org/request/show/1201802
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ruff?expand=0&rev=38
* Preview features
* [pydoclint] Ignore DOC201 when function name is "new"
* [refurb] Implement slice-to-remove-prefix-or-suffix (FURB188)
* Rule changes
* [eradicate] Ignore script-comments with multiple end-tags (ERA001)
* [pyflakes] Improve error message for UndefinedName when a builtin
was added in a newer version than specified in Ruff config (F821)
* Server
* Add support for extensionless Python files for server
* Fix configuration inheritance for configurations specified in the LSP settings
* Bug fixes
* [ruff] Handle unary operators in decimal-from-float-literal (RUF032)
* CLI
* Only include rules with diagnostics in SARIF metadata
* Playground
* Add "Copy as pyproject.toml/ruff.toml" and "Paste from TOML"
* Fix errors not shown for restored snippet on page load
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=81
- update to 0.6.4:
* \[`flake8-builtins`\] Use dynamic builtins list based on
Python version
* \[`pydoclint`\] Permit yielding `None` in `DOC402` and
`DOC403`
* \[`pylint`\] Update diagnostic message for `PLW3201`
* \[`ruff`\] Implement `post-init-default` (`RUF033`)
* \[`ruff`\] Implement useless if-else (`RUF034`)
* \[`flake8-pyi`\] Respect `pep8_naming.classmethod-decorators`
settings when determining if a method is a classmethod in
`custom-type-var-return-type` (`PYI019`)
* \[`flake8-pyi`\] Teach various rules that annotations might
be stringized
* \[`pylint`\] Avoid `no-self-use` for `attrs`-style validators
* \[`pylint`\] Recurse into subscript subexpressions when
searching for list/dict lookups (`PLR1733`, `PLR1736`)
* \[`pyupgrade`\] Detect `aiofiles.open` calls in `UP015`
* \[`pyupgrade`\] Mark `sys.version_info[0] < 3` and similar
comparisons as outdated (`UP036`)
* [flake8-simplify] Extend open-file-with-context-handler to work with other standard-library IO modules (SIM115)
* [ruff] Avoid unused-async for functions with FastAPI route decorator (RUF029)
* [ruff] Ignore fstring-missing-syntax (RUF027) for fastAPI paths
* [ruff] Implement check for Decimal called with a float literal (RUF032)
* [flake8-simplify] Extend open-file-with-context-handler to work with dbm.sqlite3 (SIM115)
* [pycodestyle] Disable E741 in stub files (.pyi)
* [pydoclint] Avoid DOC201 on explicit returns in functions that only return None
* [flake8-bugbear] Update diagnostic message when expression is at the end of function (B015)
* [flake8-pyi] Skip type annotations in string-or-bytes-too-long (PYI053)
* [flake8-type-checking] Always recognise relative imports as first-party
OBS-URL: https://build.opensuse.org/request/show/1199612
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ruff?expand=0&rev=37
* \[`flake8-builtins`\] Use dynamic builtins list based on
Python version
* \[`pydoclint`\] Permit yielding `None` in `DOC402` and
`DOC403`
* \[`pylint`\] Update diagnostic message for `PLW3201`
* \[`ruff`\] Implement `post-init-default` (`RUF033`)
* \[`ruff`\] Implement useless if-else (`RUF034`)
* \[`flake8-pyi`\] Respect `pep8_naming.classmethod-decorators`
settings when determining if a method is a classmethod in
`custom-type-var-return-type` (`PYI019`)
* \[`flake8-pyi`\] Teach various rules that annotations might
be stringized
* \[`pylint`\] Avoid `no-self-use` for `attrs`-style validators
* \[`pylint`\] Recurse into subscript subexpressions when
searching for list/dict lookups (`PLR1733`, `PLR1736`)
* \[`pyupgrade`\] Detect `aiofiles.open` calls in `UP015`
* \[`pyupgrade`\] Mark `sys.version_info[0] < 3` and similar
comparisons as outdated (`UP036`)
* [flake8-simplify] Extend open-file-with-context-handler to work with other standard-library IO modules (SIM115)
* [ruff] Avoid unused-async for functions with FastAPI route decorator (RUF029)
* [ruff] Ignore fstring-missing-syntax (RUF027) for fastAPI paths
* [ruff] Implement check for Decimal called with a float literal (RUF032)
* [flake8-simplify] Extend open-file-with-context-handler to work with dbm.sqlite3 (SIM115)
* [pycodestyle] Disable E741 in stub files (.pyi)
* [pydoclint] Avoid DOC201 on explicit returns in functions that only return None
* Rule changes
* [flake8-bugbear] Update diagnostic message when expression is at the end of function (B015)
* [flake8-pyi] Skip type annotations in string-or-bytes-too-long (PYI053)
* [flake8-type-checking] Always recognise relative imports as first-party
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=79
- update to 0.6.3:
* Preview features
* [flake8-simplify] Extend open-file-with-context-handler to work with other standard-library IO modules (SIM115)
* [ruff] Avoid unused-async for functions with FastAPI route decorator (RUF029)
* [ruff] Ignore fstring-missing-syntax (RUF027) for fastAPI paths
* [ruff] Implement check for Decimal called with a float literal (RUF032)
* [flake8-simplify] Extend open-file-with-context-handler to work with dbm.sqlite3 (SIM115)
* [pycodestyle] Disable E741 in stub files (.pyi)
* [pydoclint] Avoid DOC201 on explicit returns in functions that only return None
* Rule changes
* [flake8-bugbear] Update diagnostic message when expression is at the end of function (B015)
* [flake8-pyi] Skip type annotations in string-or-bytes-too-long (PYI053)
* [flake8-type-checking] Always recognise relative imports as first-party
* [flake8-unused-arguments] Ignore unused arguments on stub functions (ARG001)
* [pylint] Ignore augmented assignment for self-cls-assignment (PLW0642)
* [flake8-async] Disable check for asyncio before Python 3.11 (ASYNC109)
* Bug fixes
* [pep8-naming] Don't flag from imports following conventional import names (N817)
* [pylint] - Allow __new__ methods to have cls as their first argument even if decorated with @staticmethod for bad-staticmethod-argument (PLW0211)
* [FastAPI] Avoid introducing invalid syntax in fix for fast-api-non-annotated-dependency (FAST002)
* [flake8-implicit-str-concat] Normalize octals before merging concatenated strings in single-line-implicit-string-concatenation (ISC001)
* [flake8-pytest-style] Improve help message for pytest-incorrect-mark-parentheses-style (PT023)
* [pylint] Avoid autofix for calls that aren't min or max as starred expression (PLW3301)
* [ruff] Add datetime.time, datetime.tzinfo, and datetime.timezone as immutable function calls (RUF009)
* [ruff] Extend comment deletion for RUF100 to include trailing text from noqa directives while preserving any following comments on the same line, if any
* Fix dark theme on initial page load for the Ruff playground
* Server
* Show full context in error log messages
* Documentation
* Add hyperfine installation instructions; update hyperfine code samples
OBS-URL: https://build.opensuse.org/request/show/1198261
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ruff?expand=0&rev=36
* Preview features
* [flake8-simplify] Extend open-file-with-context-handler to work with other standard-library IO modules (SIM115)
* [ruff] Avoid unused-async for functions with FastAPI route decorator (RUF029)
* [ruff] Ignore fstring-missing-syntax (RUF027) for fastAPI paths
* [ruff] Implement check for Decimal called with a float literal (RUF032)
* [flake8-simplify] Extend open-file-with-context-handler to work with dbm.sqlite3 (SIM115)
* [pycodestyle] Disable E741 in stub files (.pyi)
* [pydoclint] Avoid DOC201 on explicit returns in functions that only return None
* Rule changes
* [flake8-bugbear] Update diagnostic message when expression is at the end of function (B015)
* [flake8-pyi] Skip type annotations in string-or-bytes-too-long (PYI053)
* [flake8-type-checking] Always recognise relative imports as first-party
* [flake8-unused-arguments] Ignore unused arguments on stub functions (ARG001)
* [pylint] Ignore augmented assignment for self-cls-assignment (PLW0642)
* [flake8-async] Disable check for asyncio before Python 3.11 (ASYNC109)
* Bug fixes
* [pep8-naming] Don't flag from imports following conventional import names (N817)
* [pylint] - Allow __new__ methods to have cls as their first argument even if decorated with @staticmethod for bad-staticmethod-argument (PLW0211)
* [FastAPI] Avoid introducing invalid syntax in fix for fast-api-non-annotated-dependency (FAST002)
* [flake8-implicit-str-concat] Normalize octals before merging concatenated strings in single-line-implicit-string-concatenation (ISC001)
* [flake8-pytest-style] Improve help message for pytest-incorrect-mark-parentheses-style (PT023)
* [pylint] Avoid autofix for calls that aren't min or max as starred expression (PLW3301)
* [ruff] Add datetime.time, datetime.tzinfo, and datetime.timezone as immutable function calls (RUF009)
* [ruff] Extend comment deletion for RUF100 to include trailing text from noqa directives while preserving any following comments on the same line, if any
* Fix dark theme on initial page load for the Ruff playground
* Server
* Show full context in error log messages
* Documentation
* Add hyperfine installation instructions; update hyperfine code samples
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=77
- update to 0.5.6:
* Ruff 0.5.6 automatically enables linting and formatting of notebooks in preview mode.
* Enable notebooks by default in preview mode
* [flake8-builtins] Implement import, lambda, and module shadowing
* [pydoclint] Add docstring-missing-returns (DOC201) and docstring-extraneous-returns (DOC202)
* [flake8-return] Exempt cached properties and other property-like decorators from explicit return rule (RET501)
* Make server panic hook more error resilient
* Use $/logTrace for server trace logs in Zed and VS Code
* Keep track of deleted cells for reorder change request
* [flake8-implicit-str-concat] Always allow explicit multi-line concatenations when implicit concatenations are banned
* [flake8-async] Avoid flagging asyncio.timeouts as unused when the context manager includes asyncio.TaskGroup
* [flake8-slots] Avoid recommending __slots__ for classes that inherit from more than namedtuple
* [isort] Avoid marking required imports as unused
* [isort] Preserve trailing inline comments on import-from statements
* [pycodestyle] Add newlines before comments (E305)
* [pycodestyle] Don't attach comments with mismatched indents
* [pyflakes] Fix preview-mode bugs in F401 when attempting to autofix unused first-party submodule imports in an __init__.py file
* [pylint] Respect start index in unnecessary-list-index-lookup
* [pyupgrade] Avoid recommending no-argument super in slots=True dataclasses
* [pyupgrade] Use colon rather than dot formatting for integer-only types
* Fix NFKC normalization bug when removing unused imports
* Consider more stdlib decorators to be property-like
* Improve handling of metaclasses in various linter rules
* Improve consistency between linter rules in determining whether a function is property
OBS-URL: https://build.opensuse.org/request/show/1191718
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=73
- update to 0.5.1:
* Enable token-based rules on source with syntax errors
* \[`flake8-bandit`\] Detect `httpx` for `S113`
* \[`numpy`\] Update `NPY201` to include exception deprecations
* \[`pylint`\] Generate autofix for `duplicate-bases`
(`PLE0241`)
* Avoid syntax error notification for source code actions
* Consider the content of the new cells during notebook sync
* Fix replacement edit range computation
* Disable auto-fix when source has syntax errors
* Fix cache key collisions for paths with separators
* Make `requires-python` inference robust to `==`
* Use char-wise width instead of `str`-width
* \[`pycodestyle`\] Avoid `E275` if keyword followed by comma
* \[`pycodestyle`\] Avoid `E275` if keyword is followed by a
semicolon
* \[`pylint`\] Skip dummy variables for `PLR1704`
OBS-URL: https://build.opensuse.org/request/show/1186130
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ruff?expand=0&rev=32
* Enable token-based rules on source with syntax errors
* \[`flake8-bandit`\] Detect `httpx` for `S113`
* \[`numpy`\] Update `NPY201` to include exception deprecations
* \[`pylint`\] Generate autofix for `duplicate-bases`
(`PLE0241`)
* Avoid syntax error notification for source code actions
* Consider the content of the new cells during notebook sync
* Fix replacement edit range computation
* Disable auto-fix when source has syntax errors
* Fix cache key collisions for paths with separators
* Make `requires-python` inference robust to `==`
* Use char-wise width instead of `str`-width
* \[`pycodestyle`\] Avoid `E275` if keyword followed by comma
* \[`pycodestyle`\] Avoid `E275` if keyword is followed by a
semicolon
* \[`pylint`\] Skip dummy variables for `PLR1704`
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=69
- update to 0.5.0:
* Selecting ALL now excludes deprecated rules
* The released archives now include an extra level of nesting, which
can be removed with --strip-components=1 when untarring.
* The release artifact's file name no longer includes the version
tag. This enables users to install via /latest URLs on GitHub.
* The diagnostic ranges for some flake8-bandit rules were modified
* for details see https://github.com/astral-sh/ruff/releases/tag/0.5.0
* Implement re-lexing logic for better error recovery
* [flake8-copyright] Update CPY001 to check the first 4096 bytes instead of 1024
* [pycodestyle] Update E999 to show all syntax errors instead of just the first one
* Add tracing setup guide to Helix documentation
* Add tracing setup guide to Neovim documentation
* Defer notebook cell deletion to avoid an error message
OBS-URL: https://build.opensuse.org/request/show/1184226
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ruff?expand=0&rev=31
* Selecting ALL now excludes deprecated rules
* The released archives now include an extra level of nesting, which
can be removed with --strip-components=1 when untarring.
* The release artifact's file name no longer includes the version
tag. This enables users to install via /latest URLs on GitHub.
* The diagnostic ranges for some flake8-bandit rules were modified
* for details see https://github.com/astral-sh/ruff/releases/tag/0.5.0
* Implement re-lexing logic for better error recovery
* Rule changes
* [flake8-copyright] Update CPY001 to check the first 4096 bytes instead of 1024
* [pycodestyle] Update E999 to show all syntax errors instead of just the first one
* Add tracing setup guide to Helix documentation
* Add tracing setup guide to Neovim documentation
* Defer notebook cell deletion to avoid an error message
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=67
2024-07-01 08:23:35 +00:00
5 changed files with 348 additions and 7 deletions
Tue Jun 17 22:36:39 UTC 2025 - Ondřej Súkup <mimi.vx@gmail.com>
- update to 0.12.0
* Breaking changes
* Detection of more syntax errors
* New default Python version handling for syntax errors
* Updated f-string formatting
* rust-toolchain.toml is no longer included in source distributions
* Removed Rules
* suspicious-xmle-tree-usage (S320)
* Deprecated Rules
* pandas-df-variable-name
* Stabilization
* for-loop-writes (FURB122)
* check-and-remove-from-set (FURB132)
* verbose-decimal-constructor (FURB157)
* fromisoformat-replace-z (FURB162)
* int-on-sliced-str (FURB166)
* exc-info-outside-except-handler (LOG014)
* import-outside-top-level (PLC0415)
* unnecessary-dict-index-lookup (PLR1733)
* nan-comparison (PLW0177)
* eq-without-hash (PLW1641)
* pytest-parameter-with-default-argument (PT028)
* pytest-warns-too-broad (PT030)
* pytest-warns-with-multiple-statements (PT031)
* invalid-formatter-suppression-comment (RUF028)
* dataclass-enum (RUF049)
* class-with-mixed-type-vars (RUF053)
* unnecessary-round (RUF057)
* starmap-zip (RUF058)
* non-pep604-annotation-optional (UP045)
* non-pep695-generic-class (UP046)
* non-pep695-generic-function (UP047)
* private-type-parameter (UP049)
* collection-literal-concatenation (RUF005) now recognizes slices, in addition to list literals and variables.
* The fix for readlines-in-for (FURB129) is now marked as always safe.
* if-else-block-instead-of-if-exp (SIM108) will now further simplify expressions to use or instead of an if expression, where possible.
* unused-noqa (RUF100) now checks for file-level noqa comments as well as inline comments.
* subprocess-without-shell-equals-true (S603) now accepts literal strings, as well as lists and tuples of literal strings, as trusted input.
* boolean-type-hint-positional-argument (FBT001) now applies to types that include bool, like bool | int or typing.Optional[bool], in addition to plain bool annotations.
* non-pep604-annotation-union (UP007) has now been split into two rules. UP007 now applies only to typing.Union, while non-pep604-annotation-optional (UP045) checks for use of typing.Optional. UP045 has also been stabilized in this release, but you may need to update existing include, ignore, or noqa settings to accommodate this change.
* Preview features
* [ruff] Check for non-context-manager use of pytest.raises, pytest.warns, and pytest.deprecated_call (RUF061)
* [syntax-errors] Raise unsupported syntax error for template strings prior to Python 3.14
* Bug fixes
* Add syntax error when conversion flag does not immediately follow exclamation mark
* Add trailing space around readlines
* Fix \r and \r\n handling in t- and f-string debug texts
* Hug closing } when f-string expression has a format specifier
* [flake8-pyi] Avoid syntax error in the case of starred and keyword arguments (PYI059)
* [flake8-return] Fix RET504 autofix generating a syntax error
* [pep8-naming] Suppress fix for N804 and N805 if the recommended name is already used
* [pycodestyle] Avoid causing a syntax error in expressions spanning multiple lines (E731)
* [pyupgrade] Suppress UP008 if super is shadowed
* [refurb] Parenthesize lambda and ternary expressions (FURB122, FURB142)
* [ruff] Handle extra arguments to deque (RUF037)
* [ruff] Preserve parentheses around deque in fix for unnecessary-empty-iterable-within-deque-call (RUF037)
* [ruff] Validate arguments before offering a fix (RUF056)
* [ruff] Skip fix for RUF059 if dummy name is already bound
* [pylint] Fix PLW0128 to check assignment targets in square brackets and after asterisks
* Rule changes
* Fix false positive on mutations in return statements (B909)
* Treat ty: comments as pragma comments
* [flake8-pyi] Apply custom-typevar-for-self to string annotations (PYI019)
* [pyupgrade] Don't offer a fix for Optional[None] (UP007, UP045)
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.