- 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
* 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/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
* 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/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
- update to 0.4.10
* Parser
* 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
* Server
* Add tracing setup guide to Helix documentation
* Add tracing setup guide to Neovim documentation
* Defer notebook cell deletion to avoid an error message
* Security
* Guard against malicious ecosystem comment artifacts
- update to 0.4.9:
* Preview features
+ [pylint] Implement consider-dict-items (C0206) (#11688)
+ [refurb] Implement repeated-global (FURB154) (#11187)
* Rule changes
+ [pycodestyle] Adapt fix for E203 to work identical to ruff
format (#10999)
* Formatter
+ Fix formatter instability for lines only consisting of
zero-width characters (#11748)
* Server
+ Add supported commands in server capabilities (#11850)
+ Use real file path when available in ruff server (#11800)
+ Improve error message when a command is run on an unavailable
document (#11823)
+ Introduce the ruff.printDebugInformation command (#11831)
+ Tracing system now respects log level and trace level, with
OBS-URL: https://build.opensuse.org/request/show/1182988
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ruff?expand=0&rev=30
* Parser
* 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
* Server
* Add tracing setup guide to Helix documentation
* Add tracing setup guide to Neovim documentation
* Defer notebook cell deletion to avoid an error message
* Security
* Guard against malicious ecosystem comment artifacts
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=65
* Preview features
+ [pylint] Implement consider-dict-items (C0206) (#11688)
+ [refurb] Implement repeated-global (FURB154) (#11187)
* Rule changes
+ [pycodestyle] Adapt fix for E203 to work identical to ruff
format (#10999)
* Formatter
+ Fix formatter instability for lines only consisting of
zero-width characters (#11748)
* Server
+ Add supported commands in server capabilities (#11850)
+ Use real file path when available in ruff server (#11800)
+ Improve error message when a command is run on an unavailable
document (#11823)
+ Introduce the ruff.printDebugInformation command (#11831)
+ Tracing system now respects log level and trace level, with
options to log to a file (#11747)
+ Handle non-printable characters in diff view (#11687)
* Bug fixes
+ [refurb] Avoid suggesting starmap when arguments are used
outside call (FURB140)
+ [flake8-bugbear] Avoid panic in B909 when checking large
loop blocks (#11772)
+ [refurb] Fix misbehavior of operator.itemgetter when getter
param is a tuple (FURB118) (#11774)
- update ruff:
* by refactoring the lexer and parser to maintain synchronicity between them
* Preview features
* [flake8-bugbear] Implement return-in-generator (B901)
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=64
- update ruff:
* 0.4.8
* Performance
* Linter performance has been improved by around 10% on some microbenchmarks
* by refactoring the lexer and parser to maintain synchronicity between them
* Preview features
* [flake8-bugbear] Implement return-in-generator (B901)
* [flake8-pyi] Implement PYI063
* [pygrep_hooks] Check blanket ignores via file-level pragmas (PGH004)
* Rule changes
* [pyupgrade] Update UP035 for Python 3.13 and the latest version of typing_extensions
* [numpy] Update NPY001 rule for NumPy 2.0
* Server
* Formatting a document with syntax problems no longer spams a visible error popup
* CLI
* Add RDJson support for --output-format flag
* Bug fixes
* [pyupgrade] Write empty string in lieu of panic when fixing UP032
* [flake8-simplify] Simplify double negatives in SIM103
* Ensure the expression generator adds a newline before type statements
* Respect per-file ignores for blanket and redirected noqa rules
* 0.4.7
* Preview features
* [flake8-pyi] Implement PYI064
* [flake8-pyi] Implement PYI066
* [flake8-pyi] Implement PYI057
* [pyflakes] Enable F822 in __init__.py files by default
* Formatter
* Fix incorrect placement of trailing stub function comments
* Server
OBS-URL: https://build.opensuse.org/request/show/1178989
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ruff?expand=0&rev=29
* 0.4.8
* Performance
* Linter performance has been improved by around 10% on some microbenchmarks
* by refactoring the lexer and parser to maintain synchronicity between them
* Preview features
* [flake8-bugbear] Implement return-in-generator (B901)
* [flake8-pyi] Implement PYI063
* [pygrep_hooks] Check blanket ignores via file-level pragmas (PGH004)
* Rule changes
* [pyupgrade] Update UP035 for Python 3.13 and the latest version of typing_extensions
* [numpy] Update NPY001 rule for NumPy 2.0
* Server
* Formatting a document with syntax problems no longer spams a visible error popup
* CLI
* Add RDJson support for --output-format flag
* Bug fixes
* [pyupgrade] Write empty string in lieu of panic when fixing UP032
* [flake8-simplify] Simplify double negatives in SIM103
* Ensure the expression generator adds a newline before type statements
* Respect per-file ignores for blanket and redirected noqa rules
* 0.4.7
* Preview features
* [flake8-pyi] Implement PYI064
* [flake8-pyi] Implement PYI066
* [flake8-pyi] Implement PYI057
* [pyflakes] Enable F822 in __init__.py files by default
* Formatter
* Fix incorrect placement of trailing stub function comments
* Server
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=62
- update to 0.4.4
* Preview features
* [pycodestyle] Ignore end-of-line comments when determining blank line rules
* [pylint] Detect pathlib.Path.open calls in unspecified-encoding (PLW1514)
* [flake8-pyi] Implement PYI059 (generic-not-last-base-class)
* [flake8-pyi] Implement PYI062 (duplicate-literal-member)
* Rule changes
* [flake8-boolean-trap] Allow passing booleans as positional-only arguments in code such as set(True)
* [flake8-bugbear] Ignore enum classes in cached-instance-method (B019)
* Server
* Expand tildes when resolving Ruff server configuration file
* Fix ruff server hanging after Neovim closes
* Editor settings are used by default if no file-based configuration exists
* Bug fixes
* [pylint] Consider with statements for too-many-branches (PLR0912)
* [flake8-blind-except, tryceratops] Respect logged and re-raised expressions in nested statements (BLE001, TRY201)
* Recognise assignments such as __all__ = builtins.list(["foo", "bar"]) as valid __all__ definitions
OBS-URL: https://build.opensuse.org/request/show/1173634
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ruff?expand=0&rev=28
* Preview features
* [pycodestyle] Ignore end-of-line comments when determining blank line rules
* [pylint] Detect pathlib.Path.open calls in unspecified-encoding (PLW1514)
* [flake8-pyi] Implement PYI059 (generic-not-last-base-class)
* [flake8-pyi] Implement PYI062 (duplicate-literal-member)
* Rule changes
* [flake8-boolean-trap] Allow passing booleans as positional-only arguments in code such as set(True)
* [flake8-bugbear] Ignore enum classes in cached-instance-method (B019)
* Server
* Expand tildes when resolving Ruff server configuration file
* Fix ruff server hanging after Neovim closes
* Editor settings are used by default if no file-based configuration exists
* Bug fixes
* [pylint] Consider with statements for too-many-branches (PLR0912)
* [flake8-blind-except, tryceratops] Respect logged and re-raised expressions in nested statements (BLE001, TRY201)
* Recognise assignments such as __all__ = builtins.list(["foo", "bar"]) as valid __all__ definitions
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=60
- update to 0.4.3
* Enhancements
* Add support for PEP 696 syntax
* Preview features
* [refurb] Use function range for reimplemented-operator diagnostics
* [refurb] Ignore methods in reimplemented-operator (FURB118)
* [refurb] Implement fstring-number-format (FURB116)
* [ruff] Implement redirected-noqa (RUF101)
* [pyflakes] Distinguish between first-party and third-party imports for fix suggestions
* Rule changes
* [flake8-bugbear] Ignore non-abstract class attributes when enforcing B024
* [flake8-logging] Include inline instantiations when detecting loggers
* [pylint] Also emit PLR0206 for properties with variadic parameters
* [ruff] Detect duplicate codes as part of unused-noqa (RUF100)
* [flake8-pyi] Allow for overloaded __exit__ and __aexit__ definitions (PYI036)
* [pyupgrade] Catch usages of "%s" % var and provide an unsafe fix (UP031)
* [refurb] Implement new rule that suggests min/max over sorted() (FURB192)
* Formatter
* Avoid multiline expression if format specifier is present
* LSP
* Write ruff server setup guide for Helix
* ruff server no longer hangs after shutdown
* ruff server reads from a configuration TOML file in the user configuration directory if no local configuration exists
* ruff server respects per-file-ignores configuration
* ruff server: Support a custom TOML configuration file
* ruff server: Support setting to prioritize project configuration over editor configuration
* Fix an issue with missing diagnostics for Neovim and Helix
* Implement hover documentation for noqa codes
* Introduce common Ruff configuration options with new server settings
* Bug fixes
OBS-URL: https://build.opensuse.org/request/show/1172165
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ruff?expand=0&rev=27
* Enhancements
* Add support for PEP 696 syntax
* Preview features
* [refurb] Use function range for reimplemented-operator diagnostics
* [refurb] Ignore methods in reimplemented-operator (FURB118)
* [refurb] Implement fstring-number-format (FURB116)
* [ruff] Implement redirected-noqa (RUF101)
* [pyflakes] Distinguish between first-party and third-party imports for fix suggestions
* Rule changes
* [flake8-bugbear] Ignore non-abstract class attributes when enforcing B024
* [flake8-logging] Include inline instantiations when detecting loggers
* [pylint] Also emit PLR0206 for properties with variadic parameters
* [ruff] Detect duplicate codes as part of unused-noqa (RUF100)
* [flake8-pyi] Allow for overloaded __exit__ and __aexit__ definitions (PYI036)
* [pyupgrade] Catch usages of "%s" % var and provide an unsafe fix (UP031)
* [refurb] Implement new rule that suggests min/max over sorted() (FURB192)
* Formatter
* Avoid multiline expression if format specifier is present
* LSP
* Write ruff server setup guide for Helix
* ruff server no longer hangs after shutdown
* ruff server reads from a configuration TOML file in the user configuration directory if no local configuration exists
* ruff server respects per-file-ignores configuration
* ruff server: Support a custom TOML configuration file
* ruff server: Support setting to prioritize project configuration over editor configuration
* Fix an issue with missing diagnostics for Neovim and Helix
* Implement hover documentation for noqa codes
* Introduce common Ruff configuration options with new server settings
* Bug fixes
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=58
- update to 0.4.1
* A new, hand-written parser
* A new language server in Rust
* ruff server is only in alpha, but it has a lot of features that you can try out today:
* Lints Python files automatically and shows quick-fixes when available
* Formats Python files, with support for range formatting
* Comes with commands for quickly performing actions: ruff.applyAutofix, ruff.applyFormat, and ruff.applyOrganizeImports
* Supports source.fixAll and source.organizeImports source actions
* Automatically reloads your project configuration when you change it
* To setup ruff server with your editor, refer to the README.md.
* Preview features
* [pylint] Implement invalid-hash-returned (PLE0309)
* [pylint] Implement invalid-index-returned (PLE0305)
* [pycodestyle] Do not trigger E3 rules on defs following a function/method with a dummy body
* [pylint] Implement invalid-bytes-returned (E0308)
* [pylint] Implement invalid-length-returned (E0303)
* [pylint] Implement self-cls-assignment (W0642)
* [pylint] Omit stubs from invalid-bool and invalid-str-return-type
* [ruff] New rule unused-async (RUF029) to detect unneeded async keywords on functions
* Rule changes
* [flake8-bandit] Allow urllib.request.urlopen calls with static Request argument (S310)
* [flake8-bugbear] Treat raise NotImplemented-only bodies as stub functions (B006)
* [flake8-slots] Respect same-file Enum subclasses (SLOT000)
* [pylint] Support inverted comparisons (PLR1730)
* Linter
* Improve handling of builtin symbols in linter rules
* Improve display of rules in --show-settings
* Improve inference capabilities of the BuiltinTypeChecker
* Resolve classes and functions relative to script name
* Improve performance of RuleTable::any_enabled
OBS-URL: https://build.opensuse.org/request/show/1169832
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ruff?expand=0&rev=26
* A new, hand-written parser
* A new language server in Rust
* ruff server is only in alpha, but it has a lot of features that you can try out today:
* Lints Python files automatically and shows quick-fixes when available
* Formats Python files, with support for range formatting
* Comes with commands for quickly performing actions: ruff.applyAutofix, ruff.applyFormat, and ruff.applyOrganizeImports
* Supports source.fixAll and source.organizeImports source actions
* Automatically reloads your project configuration when you change it
* To setup ruff server with your editor, refer to the README.md.
* Preview features
* [pylint] Implement invalid-hash-returned (PLE0309)
* [pylint] Implement invalid-index-returned (PLE0305)
* [pycodestyle] Do not trigger E3 rules on defs following a function/method with a dummy body
* [pylint] Implement invalid-bytes-returned (E0308)
* [pylint] Implement invalid-length-returned (E0303)
* [pylint] Implement self-cls-assignment (W0642)
* [pylint] Omit stubs from invalid-bool and invalid-str-return-type
* [ruff] New rule unused-async (RUF029) to detect unneeded async keywords on functions
* Rule changes
* [flake8-bandit] Allow urllib.request.urlopen calls with static Request argument (S310)
* [flake8-bugbear] Treat raise NotImplemented-only bodies as stub functions (B006)
* [flake8-slots] Respect same-file Enum subclasses (SLOT000)
* [pylint] Support inverted comparisons (PLR1730)
* Linter
* Improve handling of builtin symbols in linter rules
* Improve display of rules in --show-settings
* Improve inference capabilities of the BuiltinTypeChecker
* Resolve classes and functions relative to script name
* Improve performance of RuleTable::any_enabled
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=56
- update to 0.3.5
* Preview features
* [pylint] Implement modified-iterating-set (E4703)
* [refurb] Implement for-loop-set-mutations (FURB142)
* [refurb] Implement unnecessary-from-float (FURB164)
* [refurb] Implement verbose-decimal-constructor (FURB157)
* Rule changes
* [flake8-comprehensions] Handled special case for C401 which also matches C416
* [flake8-pyi] Mark unaliased-collections-abc-set-import fix as "safe" for more cases in stub files (PYI025)
* [numpy] Add row_stack to NumPy 2.0 migration rule
* [pycodestyle] Allow cell magics before an import (E402)
* [pycodestyle] Avoid blank line rules for the first logical line in cell
* Configuration
* Respected nested namespace packages
* [flake8-boolean-trap] Add setting for user defined allowed boolean trap
* Bug fixes
* Correctly handle references in __all__ definitions when renaming symbols in autofixes
* Track ranges of names inside __all__ definitions
* [flake8-bugbear] Avoid false positive for usage after continue (B031)
* [flake8-copyright] Accept commas in default copyright pattern
* [flake8-datetimez] Allow f-strings with %z for DTZ007
* [flake8-pytest-style] Fix PT014 autofix for last item in list
* [flake8-quotes] Ignore Q000, Q001 when string is inside forward ref
* [isort] Always place non-relative imports after relative imports
* [isort] Respect Unicode characters in import sorting
* [pyflakes] Fix F821 false negatives when from __future__ import annotations is active (attempt 2)
* [pyflakes] Make unnecessary-lambda an always-unsafe fix
* [pylint] Fixed false-positive on the rule PLW1641 (eq-without-hash)
* [ruff] Fix panic in unused # noqa removal with multi-byte space (RUF100)
* Documentation
OBS-URL: https://build.opensuse.org/request/show/1166515
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ruff?expand=0&rev=24
* Preview features
* [pylint] Implement modified-iterating-set (E4703)
* [refurb] Implement for-loop-set-mutations (FURB142)
* [refurb] Implement unnecessary-from-float (FURB164)
* [refurb] Implement verbose-decimal-constructor (FURB157)
* Rule changes
* [flake8-comprehensions] Handled special case for C401 which also matches C416
* [flake8-pyi] Mark unaliased-collections-abc-set-import fix as "safe" for more cases in stub files (PYI025)
* [numpy] Add row_stack to NumPy 2.0 migration rule
* [pycodestyle] Allow cell magics before an import (E402)
* [pycodestyle] Avoid blank line rules for the first logical line in cell
* Configuration
* Respected nested namespace packages
* [flake8-boolean-trap] Add setting for user defined allowed boolean trap
* Bug fixes
* Correctly handle references in __all__ definitions when renaming symbols in autofixes
* Track ranges of names inside __all__ definitions
* [flake8-bugbear] Avoid false positive for usage after continue (B031)
* [flake8-copyright] Accept commas in default copyright pattern
* [flake8-datetimez] Allow f-strings with %z for DTZ007
* [flake8-pytest-style] Fix PT014 autofix for last item in list
* [flake8-quotes] Ignore Q000, Q001 when string is inside forward ref
* [isort] Always place non-relative imports after relative imports
* [isort] Respect Unicode characters in import sorting
* [pyflakes] Fix F821 false negatives when from __future__ import annotations is active (attempt 2)
* [pyflakes] Make unnecessary-lambda an always-unsafe fix
* [pylint] Fixed false-positive on the rule PLW1641 (eq-without-hash)
* [ruff] Fix panic in unused # noqa removal with multi-byte space (RUF100)
* Documentation
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=52
- update ruff to 0.3.4
* Preview features
* [flake8-simplify] Detect implicit else cases in needless-bool (SIM103)
* [pylint] Implement nan-comparison (PLW0117)
* [pylint] Implement nonlocal-and-global (E115)
* [pylint] Implement singledispatchmethod-function (PLE5120)
* [refurb] Implement list-reverse-copy (FURB187)
* Rule changes
* [flake8-pytest-style] Add automatic fix for pytest-parametrize-values-wrong-type (PT007)
* [pycodestyle] Allow SPDX license headers to exceed the line length (E501)
* Formatter
* Fix unstable formatting for trailing subscript end-of-line comment
* Bug fixes
* Avoid code comment detection in PEP 723 script tags
* Avoid incorrect tuple transformation in single-element case (C409)
* Bug fix: Prevent fully defined links name from being reformatted
* Consider raw source code for W605
* Docs: Link inline settings when not part of options section
* Don't treat annotations as redefinitions in .pyi files
* Fix E231 bug: Inconsistent catch compared to pycodestyle, such as when dict nested in list
* Fix pylint upstream categories not showing in docs
* Add missing Options references to blank line docs
* 'Revert "F821: Fix false negatives in .py files when from __future__ import annotations is active "'
* Apply NFKC normalization to unicode identifiers in the lexer
* Avoid failures due to non-deterministic binding ordering
* [flake8-bugbear] Allow tuples of exceptions (B030)
* [flake8-quotes] Avoid syntax errors due to invalid quotes (Q000, Q002)
OBS-URL: https://build.opensuse.org/request/show/1160627
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ruff?expand=0&rev=23
* Preview features
* [flake8-simplify] Detect implicit else cases in needless-bool (SIM103)
* [pylint] Implement nan-comparison (PLW0117)
* [pylint] Implement nonlocal-and-global (E115)
* [pylint] Implement singledispatchmethod-function (PLE5120)
* [refurb] Implement list-reverse-copy (FURB187)
* Rule changes
* [flake8-pytest-style] Add automatic fix for pytest-parametrize-values-wrong-type (PT007)
* [pycodestyle] Allow SPDX license headers to exceed the line length (E501)
* Formatter
* Fix unstable formatting for trailing subscript end-of-line comment
* Bug fixes
* Avoid code comment detection in PEP 723 script tags
* Avoid incorrect tuple transformation in single-element case (C409)
* Bug fix: Prevent fully defined links name from being reformatted
* Consider raw source code for W605
* Docs: Link inline settings when not part of options section
* Don't treat annotations as redefinitions in .pyi files
* Fix E231 bug: Inconsistent catch compared to pycodestyle, such as when dict nested in list
* Fix pylint upstream categories not showing in docs
* Add missing Options references to blank line docs
* 'Revert "F821: Fix false negatives in .py files when from __future__ import annotations is active "'
* Apply NFKC normalization to unicode identifiers in the lexer
* Avoid failures due to non-deterministic binding ordering
* [flake8-bugbear] Allow tuples of exceptions (B030)
* [flake8-quotes] Avoid syntax errors due to invalid quotes (Q000, Q002)
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=50
- update to 0.3.3
* Preview features
* [flake8-bandit]: Implement S610 rule
* [pycodestyle] Implement blank-line-at-end-of-file (W391)
* [pycodestyle] Implement redundant-backslash (E502)
* [pylint] - implement redeclared-assigned-name (W0128)
* Rule changes
* [flake8_comprehensions] Handled special case for C400 which also matches C416
* [flake8-bandit] Implement upstream updates for S311, S324 and S605
* [pyflakes] Remove F401 fix for __init__ imports by default and allow opt-in to unsafe fix
* [pylint] Implement invalid-bool-return-type (E304)
* [pylint] Include builtin warnings in useless-exception-statement (PLW0133)
* CLI
* Add message on success to ruff check
* Bug fixes
* [PIE970] Allow trailing ellipsis in typing.TYPE_CHECKING
* Avoid TRIO115 if the argument is a variable
* [F811] Avoid removing shadowed imports that point to different symbols
* Fix F821 and F822 false positives in .pyi files
* Fix F821 false negatives in .py files when from __future__ import annotations is active
* Fix case where Indexer fails to identify continuation preceded by newline #10351
* Sort hash maps in Settings display
* Track conditional deletions in the semantic model
* [C413] Wrap expressions in parentheses when negating
* [pycodestyle] Do not ignore lines before the first logical line in blank lines rules.
* [pycodestyle] Do not trigger E225 and E275 when the next token is a ')'
* [pylint] Avoid false-positive slot non-assignment for __dict__ (PLE0237)
* Gate f-string struct size test for Rustc < 1.76
* Documentation
* Use ruff.toml format in README
OBS-URL: https://build.opensuse.org/request/show/1159022
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ruff?expand=0&rev=22
* Preview features
* [flake8-bandit]: Implement S610 rule
* [pycodestyle] Implement blank-line-at-end-of-file (W391)
* [pycodestyle] Implement redundant-backslash (E502)
* [pylint] - implement redeclared-assigned-name (W0128)
* Rule changes
* [flake8_comprehensions] Handled special case for C400 which also matches C416
* [flake8-bandit] Implement upstream updates for S311, S324 and S605
* [pyflakes] Remove F401 fix for __init__ imports by default and allow opt-in to unsafe fix
* [pylint] Implement invalid-bool-return-type (E304)
* [pylint] Include builtin warnings in useless-exception-statement (PLW0133)
* CLI
* Add message on success to ruff check
* Bug fixes
* [PIE970] Allow trailing ellipsis in typing.TYPE_CHECKING
* Avoid TRIO115 if the argument is a variable
* [F811] Avoid removing shadowed imports that point to different symbols
* Fix F821 and F822 false positives in .pyi files
* Fix F821 false negatives in .py files when from __future__ import annotations is active
* Fix case where Indexer fails to identify continuation preceded by newline #10351
* Sort hash maps in Settings display
* Track conditional deletions in the semantic model
* [C413] Wrap expressions in parentheses when negating
* [pycodestyle] Do not ignore lines before the first logical line in blank lines rules.
* [pycodestyle] Do not trigger E225 and E275 when the next token is a ')'
* [pylint] Avoid false-positive slot non-assignment for __dict__ (PLE0237)
* Gate f-string struct size test for Rustc < 1.76
* Documentation
* Use ruff.toml format in README
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=48
- update to 0.3.2
* Preview features
* Improve single-with item formatting for Python 3.8 or older
* Rule changes
* [pyupgrade] Allow fixes for f-string rule regardless of line length (UP032)
* [pycodestyle] Include actual conditions in E712 diagnostics
* Bug fixes
* Fix trailing kwargs end of line comment after slash
* Fix unstable with items formatting
* Avoid repeating function calls in f-string conversions
* Fix E203 false positive for slices in format strings
* Fix incorrect Parameter range for *args and **kwargs
* Treat typing.Annotated subscripts as type definitions
* 0.3.1
* Preview features
* [pycodestyle] Fix E301 not triggering on decorated methods.
* [pycodestyle] Respect isort settings in blank line rules (E3*)
* [pycodestyle] Make blank lines in typing stub files optional (E3*)
* [pylint] Implement singledispatch-method (E1519)
* [pylint] Implement useless-exception-statement (W0133)
* Rule changes
* [flake8-debugger] Check for use of debugpy and ptvsd debug modules
* [pyupgrade] Generate diagnostic for all valid f-string conversions regardless of line length (UP032)
* [pep8_naming] Add fixes for N804 and N805
* CLI
* Colorize the output of ruff format --diff
* Make --config and --isolated global flags
* Correctly expand tildes and environment variables in paths passed to --config
* Configuration
* Accept a PEP 440 version specifier for required-version
OBS-URL: https://build.opensuse.org/request/show/1156882
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ruff?expand=0&rev=21
* Preview features
* Improve single-with item formatting for Python 3.8 or older
* Rule changes
* [pyupgrade] Allow fixes for f-string rule regardless of line length (UP032)
* [pycodestyle] Include actual conditions in E712 diagnostics
* Bug fixes
* Fix trailing kwargs end of line comment after slash
* Fix unstable with items formatting
* Avoid repeating function calls in f-string conversions
* Fix E203 false positive for slices in format strings
* Fix incorrect Parameter range for *args and **kwargs
* Treat typing.Annotated subscripts as type definitions
* 0.3.1
* Preview features
* [pycodestyle] Fix E301 not triggering on decorated methods.
* [pycodestyle] Respect isort settings in blank line rules (E3*)
* [pycodestyle] Make blank lines in typing stub files optional (E3*)
* [pylint] Implement singledispatch-method (E1519)
* [pylint] Implement useless-exception-statement (W0133)
* Rule changes
* [flake8-debugger] Check for use of debugpy and ptvsd debug modules
* [pyupgrade] Generate diagnostic for all valid f-string conversions regardless of line length (UP032)
* [pep8_naming] Add fixes for N804 and N805
* CLI
* Colorize the output of ruff format --diff
* Make --config and --isolated global flags
* Correctly expand tildes and environment variables in paths passed to --config
* Configuration
* Accept a PEP 440 version specifier for required-version
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=46
Forgot to forward?
- update to 0.2.2
* Highlights include:
* Initial support formatting f-strings (in --preview).
* Support for overriding arbitrary configuration options via the CLI
through an expanded --config argument (e.g., --config "lint.isort.combine-as-imports=false").
* Significant performance improvements in Ruff's lexer, parser, and lint rules.
* Preview features
* Implement minimal f-string formatting
* [pycodestyle] Add blank line(s) rules (E301, E302, E303, E304, E305, E306)
* [refurb] Implement readlines_in_for (FURB129)
* Rule changes
* [ruff] Ensure closing parentheses for multiline sequences are always on their own line (RUF022, RUF023)
* [numpy] Add missing deprecation violations (NPY002)
* [flake8-bandit] Detect mark_safe usages in decorators
* [ruff] Expand asyncio-dangling-task (RUF006) to include new_event_loop
* [flake8-pyi] Ignore 'unused' private type dicts in class scopes
* Formatter
* Docstring formatting: Preserve tab indentation when using indent-style=tabs
* Disable top-level docstring formatting for notebooks
* Stabilize quote-style's preserve mode
* CLI
* Allow arbitrary configuration options to be overridden via the CLI
* Bug fixes
* Make show-settings filters directory-agnostic
* Respect duplicates when rewriting type aliases
* Respect tuple assignments in typing analyzer
* Use atomic write when persisting cache
* Use non-parenthesized range for DebugText
* [flake8-simplify] Avoid false positive with async for loops (SIM113)
* [flake8-trio] Respect async with in timeout-without-await
* [perflint] Catch a wider range of mutations in PERF101
* [pycodestyle] Fix E30X panics on blank lines with trailing white spaces
* [pydocstyle] Allow using parameters as a subsection header (D405)
* [pydocstyle] Fix blank-line docstring rules for module-level docstrings
* [pylint] Accept 0.0 and 1.0 as common magic values (PLR2004)
* [pylint] Avoid suggesting set rewrites for non-hashable types
* [ruff] Avoid false negatives with string literals inside of method calls (RUF027)
* [ruff] Fix panic on with f-string detection (RUF027)
* [ruff] Ignore builtins when detecting missing f-strings
* Performance
* Use memchr for string lexing
* Use memchr for tab-indentation detection
* Reduce Result<Tok, LexicalError> size by using Box<str> instead of String
* Reduce size of Expr from 80 to 64 bytes
* Improve trailing comma rule performance
* Remove unnecessary string cloning from the parser
OBS-URL: https://build.opensuse.org/request/show/1152491
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ruff?expand=0&rev=19
* Highlights include:
* Initial support formatting f-strings (in --preview).
* Support for overriding arbitrary configuration options via the CLI
through an expanded --config argument (e.g., --config "lint.isort.combine-as-imports=false").
* Significant performance improvements in Ruff's lexer, parser, and lint rules.
* Preview features
* Implement minimal f-string formatting
* [pycodestyle] Add blank line(s) rules (E301, E302, E303, E304, E305, E306)
* [refurb] Implement readlines_in_for (FURB129)
* Rule changes
* [ruff] Ensure closing parentheses for multiline sequences are always on their own line (RUF022, RUF023)
* [numpy] Add missing deprecation violations (NPY002)
* [flake8-bandit] Detect mark_safe usages in decorators
* [ruff] Expand asyncio-dangling-task (RUF006) to include new_event_loop
* [flake8-pyi] Ignore 'unused' private type dicts in class scopes
* Formatter
* Docstring formatting: Preserve tab indentation when using indent-style=tabs
* Disable top-level docstring formatting for notebooks
* Stabilize quote-style's preserve mode
* CLI
* Allow arbitrary configuration options to be overridden via the CLI
* Bug fixes
* Make show-settings filters directory-agnostic
* Respect duplicates when rewriting type aliases
* Respect tuple assignments in typing analyzer
* Use atomic write when persisting cache
* Use non-parenthesized range for DebugText
* [flake8-simplify] Avoid false positive with async for loops (SIM113)
* [flake8-trio] Respect async with in timeout-without-await
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=40
- update to 0.2.1
* This release includes support for range formatting
(i.e., the ability to format specific lines within a source file).
* Preview features
* [refurb] Implement missing-f-string-syntax (RUF027)
* Format module-level docstrings
* Formatter
* Add --range option to ruff format
* Don't trim last empty line in docstrings
* Bug fixes
* Skip empty lines when determining base indentation
* Drop __get__ and __set__ from unnecessary-dunder-call
* Respect generic Protocol in ellipsis removal
* Revert "Use publicly available Apple Silicon runners"
* Performance
* Skip LibCST parsing for standard dedent adjustments
* Remove CST-based fixer for C408
* Add our own ignored-names abstractions
* Remove CST-based fixers for C400, C401, C410, and C418
* Use AhoCorasick to speed up quote match
* Remove CST-based fixers for C405 and C409
* Add fast-path for comment detection
* Invert order of checks in zero-sleep-call
* Short-circuit typing matches based on imports
* Run dunder method rule on methods directly
* Track top-level module imports in the semantic model
* Slight speed-up for lowercase and uppercase identifier checks
* Remove LibCST-based fixer for C403
* Documentation
* Update max-pos-args example to max-positional-args
OBS-URL: https://build.opensuse.org/request/show/1144921
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ruff?expand=0&rev=18
* This release includes support for range formatting
(i.e., the ability to format specific lines within a source file).
* Preview features
* [refurb] Implement missing-f-string-syntax (RUF027)
* Format module-level docstrings
* Formatter
* Add --range option to ruff format
* Don't trim last empty line in docstrings
* Bug fixes
* Skip empty lines when determining base indentation
* Drop __get__ and __set__ from unnecessary-dunder-call
* Respect generic Protocol in ellipsis removal
* Revert "Use publicly available Apple Silicon runners"
* Performance
* Skip LibCST parsing for standard dedent adjustments
* Remove CST-based fixer for C408
* Add our own ignored-names abstractions
* Remove CST-based fixers for C400, C401, C410, and C418
* Use AhoCorasick to speed up quote match
* Remove CST-based fixers for C405 and C409
* Add fast-path for comment detection
* Invert order of checks in zero-sleep-call
* Short-circuit typing matches based on imports
* Run dunder method rule on methods directly
* Track top-level module imports in the semantic model
* Slight speed-up for lowercase and uppercase identifier checks
* Remove LibCST-based fixer for C403
* Documentation
* Update max-pos-args example to max-positional-args
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=38
- update to 0.2.0
* Breaking changes
* The NURSERY selector cannot be used anymore
* Legacy selection of nursery rules by exact codes is no longer allowed without preview enabled
* See also, the "Remapped rules" section which may result in disabled rules.
* Deprecations
* The following rules are now deprecated:
* missing-type-self (ANN101)
* missing-type-cls (ANN102)
* The following command line options are now deprecated:
* --show-source; use --output-format full instead
* --no-show-source; use --output-format concise instead
* --output-format text; use full or concise instead
* The following settings have moved and the previous name is deprecated:
* ruff.allowed-confusables → ruff.lint.allowed-confusables
* ruff.dummy-variable-rgx → ruff.lint.dummy-variable-rgx
* ruff.explicit-preview-rules → ruff.lint.explicit-preview-rules
* ruff.extend-fixable → ruff.lint.extend-fixable
* ruff.extend-ignore → ruff.lint.extend-ignore
* ruff.extend-per-file-ignores → ruff.lint.extend-per-file-ignores
* ruff.extend-safe-fixes → ruff.lint.extend-safe-fixes
* ruff.extend-select → ruff.lint.extend-select
* ruff.extend-unfixable → ruff.lint.extend-unfixable
* ruff.extend-unsafe-fixes → ruff.lint.extend-unsafe-fixes
* ruff.external → ruff.lint.external
* ruff.fixable → ruff.lint.fixable
* ruff.flake8-annotations → ruff.lint.flake8-annotations
* ruff.flake8-bandit → ruff.lint.flake8-bandit
* ruff.flake8-bugbear → ruff.lint.flake8-bugbear
* ruff.flake8-builtins → ruff.lint.flake8-builtins
OBS-URL: https://build.opensuse.org/request/show/1144159
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ruff?expand=0&rev=17
* Breaking changes
* The NURSERY selector cannot be used anymore
* Legacy selection of nursery rules by exact codes is no longer allowed without preview enabled
* See also, the "Remapped rules" section which may result in disabled rules.
* Deprecations
* The following rules are now deprecated:
* missing-type-self (ANN101)
* missing-type-cls (ANN102)
* The following command line options are now deprecated:
* --show-source; use --output-format full instead
* --no-show-source; use --output-format concise instead
* --output-format text; use full or concise instead
* The following settings have moved and the previous name is deprecated:
* ruff.allowed-confusables → ruff.lint.allowed-confusables
* ruff.dummy-variable-rgx → ruff.lint.dummy-variable-rgx
* ruff.explicit-preview-rules → ruff.lint.explicit-preview-rules
* ruff.extend-fixable → ruff.lint.extend-fixable
* ruff.extend-ignore → ruff.lint.extend-ignore
* ruff.extend-per-file-ignores → ruff.lint.extend-per-file-ignores
* ruff.extend-safe-fixes → ruff.lint.extend-safe-fixes
* ruff.extend-select → ruff.lint.extend-select
* ruff.extend-unfixable → ruff.lint.extend-unfixable
* ruff.extend-unsafe-fixes → ruff.lint.extend-unsafe-fixes
* ruff.external → ruff.lint.external
* ruff.fixable → ruff.lint.fixable
* ruff.flake8-annotations → ruff.lint.flake8-annotations
* ruff.flake8-bandit → ruff.lint.flake8-bandit
* ruff.flake8-bugbear → ruff.lint.flake8-bugbear
* ruff.flake8-builtins → ruff.lint.flake8-builtins
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=36
- update to 0.1.14
* Preview features
* [flake8-bugbear] Add fix for duplicate-value (B033)
* [flake8-simplify] Implement enumerate-for-loop (SIM113)
* [pygrep_hooks] Add fix for deprecated-log-warn (PGH002)
* [pylint] Implement import-private-name (C2701)
* [refurb] Implement regex-flag-alias with fix (FURB167)
* [ruff] Add rule and fix to sort contents of __all__ (RUF022)
* [tryceratops] Add fix for error-instead-of-exception (TRY400)
* Rule changes
* [flake8-pyi] Fix PYI047 false negatives on PEP-695 type aliases
* [flake8-pyi] Fix PYI049 false negatives on call-based TypedDicts
* [pylint] Exclude self and cls when counting method arguments (PLR0917)
* CLI
* --show-settings displays active settings in a far more readable format
* Add --extension support to the formatter
* Configuration
* Ignore preview status for fixable and unfixable selectors
* [pycodestyle] Use the configured tab size when expanding indents
* Bug fixes
* Recursively visit deferred AST nodes
* Visit deferred lambdas before type definitions
* [flake8-simplify] Avoid some more enumerate-for-loop false positives (SIM113)
* [pandas-vet] Limit inplace diagnostics to methods that accept inplace
* [pylint] Add the __prepare__ method to the list of recognized dunder method
* [pylint] Ignore unnecessary dunder calls within dunder definitions
* [refurb] Avoid bailing when reimplemented-operator is called on function (FURB118)
* [ruff] Avoid treating named expressions as static keys (RUF011)
* Documentation
* Add instructions on using noqa with isort rules
OBS-URL: https://build.opensuse.org/request/show/1140308
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ruff?expand=0&rev=15
* Preview features
* [flake8-bugbear] Add fix for duplicate-value (B033)
* [flake8-simplify] Implement enumerate-for-loop (SIM113)
* [pygrep_hooks] Add fix for deprecated-log-warn (PGH002)
* [pylint] Implement import-private-name (C2701)
* [refurb] Implement regex-flag-alias with fix (FURB167)
* [ruff] Add rule and fix to sort contents of __all__ (RUF022)
* [tryceratops] Add fix for error-instead-of-exception (TRY400)
* Rule changes
* [flake8-pyi] Fix PYI047 false negatives on PEP-695 type aliases
* [flake8-pyi] Fix PYI049 false negatives on call-based TypedDicts
* [pylint] Exclude self and cls when counting method arguments (PLR0917)
* CLI
* --show-settings displays active settings in a far more readable format
* Add --extension support to the formatter
* Configuration
* Ignore preview status for fixable and unfixable selectors
* [pycodestyle] Use the configured tab size when expanding indents
* Bug fixes
* Recursively visit deferred AST nodes
* Visit deferred lambdas before type definitions
* [flake8-simplify] Avoid some more enumerate-for-loop false positives (SIM113)
* [pandas-vet] Limit inplace diagnostics to methods that accept inplace
* [pylint] Add the __prepare__ method to the list of recognized dunder method
* [pylint] Ignore unnecessary dunder calls within dunder definitions
* [refurb] Avoid bailing when reimplemented-operator is called on function (FURB118)
* [ruff] Avoid treating named expressions as static keys (RUF011)
* Documentation
* Add instructions on using noqa with isort rules
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=32
* Bug fixes
* Include base pyproject when initializing cache settings
* [flake8-simplify] Account for possibly-empty f-string values in truthiness logic
* [pylint] Add the missing period in unnecessary-dunder-call
* [pylint] Fix __aenter__ message in unnecessary-dunder-call
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=30
- update to 0.1.11
* [pylint] Implement super-without-brackets (W0245)
* Check path string properly in python -m ruff invocations
* Documentation
* Tweak relative-imports message
* Add fix safety note for yield-in-for-loop
* 0.1.10
* Preview features
* Improve dummy_implementations preview style formatting
* Normalise Hex and unicode escape sequences in strings
* Parenthesize long type annotations in annotated assignments
* Parenthesize multi-context managers in with statements
* [flake8-pyi] Implement generator-return-from-iter-method (PYI058)
* [pylint] Implement empty-comment (PLR2044)
* [refurb] Implement bit-count (FURB161)
* [ruff] Add never-union rule to detect redundant typing.NoReturn and typing.Never
* CLI
* Add paths to TOML parse errors
* Add row and column numbers to formatter parse errors
* Improve responsiveness when invoked via Python
* Short rule messages should not end with a period
* Configuration
* Respect runtime-required decorators on functions
* Bug fixes
* Avoid asyncio-dangling-task for nonlocal and global bindings
* Escape trailing placeholders in rule documentation
* Fix continuation detection following multi-line strings
* Fix scoping for generators in named expressions in classes
* Port from obsolete wsl crate to is-wsl
* Remove special pre-visit for module docstrings
OBS-URL: https://build.opensuse.org/request/show/1137528
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ruff?expand=0&rev=12
* [pylint] Implement super-without-brackets (W0245)
* Check path string properly in python -m ruff invocations
* Documentation
* Tweak relative-imports message
* Add fix safety note for yield-in-for-loop
* 0.1.10
* Preview features
* Improve dummy_implementations preview style formatting
* Normalise Hex and unicode escape sequences in strings
* Parenthesize long type annotations in annotated assignments
* Parenthesize multi-context managers in with statements
* [flake8-pyi] Implement generator-return-from-iter-method (PYI058)
* [pylint] Implement empty-comment (PLR2044)
* [refurb] Implement bit-count (FURB161)
* [ruff] Add never-union rule to detect redundant typing.NoReturn and typing.Never
* CLI
* Add paths to TOML parse errors
* Add row and column numbers to formatter parse errors
* Improve responsiveness when invoked via Python
* Short rule messages should not end with a period
* Configuration
* Respect runtime-required decorators on functions
* Bug fixes
* Avoid asyncio-dangling-task for nonlocal and global bindings
* Escape trailing placeholders in rule documentation
* Fix continuation detection following multi-line strings
* Fix scoping for generators in named expressions in classes
* Port from obsolete wsl crate to is-wsl
* Remove special pre-visit for module docstrings
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=26
- update to 0.1.9
* Breaking changes
* Add site-packages to default exclusions
* Preview features
* Fix: Avoid parenthesizing subscript targets and values
* [pylint] Implement too-many-locals (PLR0914)
* Implement reimplemented_operator (FURB118)
* Add a rule to detect string members in runtime-evaluated unions
* Implement no_blank_line_before_class_docstring preview style
* Rule changes
* CONSTANT_CASE variables are improperly flagged for yoda violation (SIM300)
* [flake8-pyi] Cover ParamSpecs and TypeVarTuples (PYI018)
* [flake8-bugbear] Add fix for zip-without-explicit-strict (B905)
* Add fix to automatically remove print and pprint statements (T201, T203)
* Prefer Never to NoReturn in auto-typing in Python >= 3.11 (ANN201)
* Formatter
* can_omit_optional_parentheses: Exit early for unparenthesized expressions
* Fix dynamic mode with doctests so that it doesn't exceed configured line width
* Fix can_omit_optional_parentheses for expressions with a right most fstring
* Add target_version to formatter options
* CLI
* Update ruff format --check to display message for already formatted files
* Bug fixes
* Reverse order of arguments for operator.contains
* Iterate over lambdas in deferred type annotations
* Fix panic in D208 with multibyte indent
* Add support for NoReturn in auto-return-typing
* Allow removal of typing from exempt-modules
* Avoid mutable-class-default violations for Pydantic subclasses
* Fix dropped union expressions for piped non-types in PYI055 autofix
OBS-URL: https://build.opensuse.org/request/show/1134560
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ruff?expand=0&rev=11
* Breaking changes
* Add site-packages to default exclusions
* Preview features
* Fix: Avoid parenthesizing subscript targets and values
* [pylint] Implement too-many-locals (PLR0914)
* Implement reimplemented_operator (FURB118)
* Add a rule to detect string members in runtime-evaluated unions
* Implement no_blank_line_before_class_docstring preview style
* Rule changes
* CONSTANT_CASE variables are improperly flagged for yoda violation (SIM300)
* [flake8-pyi] Cover ParamSpecs and TypeVarTuples (PYI018)
* [flake8-bugbear] Add fix for zip-without-explicit-strict (B905)
* Add fix to automatically remove print and pprint statements (T201, T203)
* Prefer Never to NoReturn in auto-typing in Python >= 3.11 (ANN201)
* Formatter
* can_omit_optional_parentheses: Exit early for unparenthesized expressions
* Fix dynamic mode with doctests so that it doesn't exceed configured line width
* Fix can_omit_optional_parentheses for expressions with a right most fstring
* Add target_version to formatter options
* CLI
* Update ruff format --check to display message for already formatted files
* Bug fixes
* Reverse order of arguments for operator.contains
* Iterate over lambdas in deferred type annotations
* Fix panic in D208 with multibyte indent
* Add support for NoReturn in auto-return-typing
* Allow removal of typing from exempt-modules
* Avoid mutable-class-default violations for Pydantic subclasses
* Fix dropped union expressions for piped non-types in PYI055 autofix
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=24
- update to 0.1.7
* Preview features
* Implement multiline dictionary and list hugging for preview style
* Implement the fix_power_op_line_length preview style
* Use Python version to determine typing rewrite safety
* [flake8-annotations] Enable auto-return-type involving Optional and Union annotations
* [flake8-bandit] Implement django-raw-sql (S611)
* [flake8-bandit] Implement tarfile-unsafe-members (S202)
* [flake8-pyi] Implement fix for unnecessary-literal-union (PYI030)
* [flake8-simplify] Extend dict-get-with-none-default (SIM910) to non-literals
* [pylint] - add unnecessary-list-index-lookup (PLR1736) + autofix
* [pylint] - implement R0202 and R0203 with autofixes
* [pylint] Implement repeated-keyword (PLe1132)
* [pylint] Implement too-many-positional (PLR0917)
* [pylint] Implement unnecessary-dict-index-lookup (PLR1733)
* [refurb] Implement redundant-log-base (FURB163)
* Rule changes
* [flake8-boolean-trap] Allow booleans in @override methods
* [flake8-bugbear] Avoid B015,B018 for last expression in a cell
* [flake8-pie] Allow ellipses for enum values in stub files
* [flake8-pyi] Check PEP 695 type aliases for snake-case-type-alias and t-suffixed-type-alias
* [flake8-pyi] Check for kwarg and vararg NoReturn type annotations
* [flake8-simplify] Omit select context managers from SIM117
* [pep8-naming] Allow Django model loads in non-lowercase-variable-in-function (N806)
* [pycodestyle] Avoid E703 for last expression in a cell
* [pycodestyle] Update E402 to work at cell level for notebooks
* [pydocstyle] Avoid D100 for Jupyter Notebooks
* [pylint] Implement fix for unspecified-encoding (PLW1514)
* Formatter
* Avoid unstable formatting in ellipsis-only body with trailing comment
OBS-URL: https://build.opensuse.org/request/show/1132059
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ruff?expand=0&rev=9
* Preview features
* Implement multiline dictionary and list hugging for preview style
* Implement the fix_power_op_line_length preview style
* Use Python version to determine typing rewrite safety
* [flake8-annotations] Enable auto-return-type involving Optional and Union annotations
* [flake8-bandit] Implement django-raw-sql (S611)
* [flake8-bandit] Implement tarfile-unsafe-members (S202)
* [flake8-pyi] Implement fix for unnecessary-literal-union (PYI030)
* [flake8-simplify] Extend dict-get-with-none-default (SIM910) to non-literals
* [pylint] - add unnecessary-list-index-lookup (PLR1736) + autofix
* [pylint] - implement R0202 and R0203 with autofixes
* [pylint] Implement repeated-keyword (PLe1132)
* [pylint] Implement too-many-positional (PLR0917)
* [pylint] Implement unnecessary-dict-index-lookup (PLR1733)
* [refurb] Implement redundant-log-base (FURB163)
* Rule changes
* [flake8-boolean-trap] Allow booleans in @override methods
* [flake8-bugbear] Avoid B015,B018 for last expression in a cell
* [flake8-pie] Allow ellipses for enum values in stub files
* [flake8-pyi] Check PEP 695 type aliases for snake-case-type-alias and t-suffixed-type-alias
* [flake8-pyi] Check for kwarg and vararg NoReturn type annotations
* [flake8-simplify] Omit select context managers from SIM117
* [pep8-naming] Allow Django model loads in non-lowercase-variable-in-function (N806)
* [pycodestyle] Avoid E703 for last expression in a cell
* [pycodestyle] Update E402 to work at cell level for notebooks
* [pydocstyle] Avoid D100 for Jupyter Notebooks
* [pylint] Implement fix for unspecified-encoding (PLW1514)
* Formatter
* Avoid unstable formatting in ellipsis-only body with trailing comment
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=20
- update to 0.1.5
* Preview features
* [flake8-bandit] Implement mako-templates (S702)
* [flake8-trio] Implement TRIO105
* [flake8-trio] Implement TRIO109
* [flake8-trio] Implement TRIO110
* [flake8-trio] Implement TRIO115
* [refurb] Implement type-none-comparison (FURB169)
* Flag all comparisons against builtin types in E721
* Make SIM118 fix as safe when the expression is a known dictionary
* Formatter
* Fix multiline lambda expression statement formatting
* CLI
* Add hidden --extension to override inference of source type from file extension
* Configuration
* Account for selector specificity when merging extend_unsafe_fixes and override extend_safe_fixes
* Add support for disabling cache with RUFF_NO_CACHE environment variable
* Bug fixes
* [E721] Flag comparisons to memoryview
* Allow collapsed-ellipsis bodies in other statements
* Avoid D301 autofix for u prefixed strings
* Only flag flake8-trio rules when trio import is present
* Reject more syntactically invalid Python programs
* Avoid raising TRIO115 violations for trio.sleep(...) calls with non-number values
* Fix F841 false negative on assignment to multiple variables
* Documentation
* Fix link to isort known-first-party
* Add notes on fix safety to a few rules
* Add missing toml config tabs
* Add instructions for configuration of Emacs
OBS-URL: https://build.opensuse.org/request/show/1125607
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ruff?expand=0&rev=7
* Preview features
* [flake8-bandit] Implement mako-templates (S702)
* [flake8-trio] Implement TRIO105
* [flake8-trio] Implement TRIO109
* [flake8-trio] Implement TRIO110
* [flake8-trio] Implement TRIO115
* [refurb] Implement type-none-comparison (FURB169)
* Flag all comparisons against builtin types in E721
* Make SIM118 fix as safe when the expression is a known dictionary
* Formatter
* Fix multiline lambda expression statement formatting
* CLI
* Add hidden --extension to override inference of source type from file extension
* Configuration
* Account for selector specificity when merging extend_unsafe_fixes and override extend_safe_fixes
* Add support for disabling cache with RUFF_NO_CACHE environment variable
* Bug fixes
* [E721] Flag comparisons to memoryview
* Allow collapsed-ellipsis bodies in other statements
* Avoid D301 autofix for u prefixed strings
* Only flag flake8-trio rules when trio import is present
* Reject more syntactically invalid Python programs
* Avoid raising TRIO115 violations for trio.sleep(...) calls with non-number values
* Fix F841 false negative on assignment to multiple variables
* Documentation
* Fix link to isort known-first-party
* Add notes on fix safety to a few rules
* Add missing toml config tabs
* Add instructions for configuration of Emacs
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=16
- Update to 0.1.4
* Preview features
* [flake8-trio] Implement timeout-without-await (TRIO001)
* [numpy] Implement NumPy 2.0 migration rule (NPY200)
* [pylint] Implement bad-open-mode (W1501)
* [pylint] Implement import-outside-toplevel (C0415) rule
* [pylint] Implement useless-with-lock (W2101)
* [pyupgrade] Implement timeout-error-alias (UP041)
* [refurb] Implement isinstance-type-none (FURB168)
* Detect confusable Unicode-to-Unicode units in RUF001, RUF002, and RUF003
* Add newline after module docstrings in preview style
* Formatter
* Add a note on line-too-long to the formatter docs
* Preserve trailing statement semicolons when using fmt: skip
* Preserve trailing semicolons when using fmt: off
* Avoid duplicating linter-formatter compatibility warnings
* Avoid inserting a newline after function docstrings
* Insert newline between docstring and following own line comment
* Split tuples in return positions by comma first
* Avoid treating byte strings as docstrings
* Add --line-length option to format command
* Avoid parenthesizing unsplittable because of comments
* CLI
* Add --output-format to ruff rule and ruff linter
* Bug fixes
* Respect --force-exclude in lint.exclude and format.exclude
* Respect --extend-per-file-ignores on the CLI
* Extend bad-dunder-method-name to permit __index__
* Fix panic with 8 in octal escape
* Avoid raising D300 when both triple quote styles are present
OBS-URL: https://build.opensuse.org/request/show/1123950
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ruff?expand=0&rev=6
* Preview features
* [flake8-trio] Implement timeout-without-await (TRIO001)
* [numpy] Implement NumPy 2.0 migration rule (NPY200)
* [pylint] Implement bad-open-mode (W1501)
* [pylint] Implement import-outside-toplevel (C0415) rule
* [pylint] Implement useless-with-lock (W2101)
* [pyupgrade] Implement timeout-error-alias (UP041)
* [refurb] Implement isinstance-type-none (FURB168)
* Detect confusable Unicode-to-Unicode units in RUF001, RUF002, and RUF003
* Add newline after module docstrings in preview style
* Formatter
* Add a note on line-too-long to the formatter docs
* Preserve trailing statement semicolons when using fmt: skip
* Preserve trailing semicolons when using fmt: off
* Avoid duplicating linter-formatter compatibility warnings
* Avoid inserting a newline after function docstrings
* Insert newline between docstring and following own line comment
* Split tuples in return positions by comma first
* Avoid treating byte strings as docstrings
* Add --line-length option to format command
* Avoid parenthesizing unsplittable because of comments
* CLI
* Add --output-format to ruff rule and ruff linter
* Bug fixes
* Respect --force-exclude in lint.exclude and format.exclude
* Respect --extend-per-file-ignores on the CLI
* Extend bad-dunder-method-name to permit __index__
* Fix panic with 8 in octal escape
* Avoid raising D300 when both triple quote styles are present
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=14
- Update to 0.1.3
* Formatter
* Avoid space around pow for None, True and False
* Avoid sorting all paths in the format command
* Insert necessary blank line between class and leading comments
* Avoid introducing new parentheses in annotated assignments
* Refine the warnings about incompatible linter options
* Add test and basic implementation for formatter preview mode
* Refine warning about incompatible isort settings
* Only omit optional parentheses for starting or ending with parentheses
* Use source type to determine parser mode for formatting
* Don't warn about magic trailing comma when isort.force-single-line is true
* Use SourceKind::diff for formatter
* Fix fmt:off with trailing child comment
* Formatter parentheses support for IpyEscapeCommand
* Linter
* [pylint] Add buffer methods to bad-dunder-method-name (PLW3201) exclusions
* Match rule prefixes from external codes setting in unused-noqa
* Use line-length setting for isort in lieu of pycodestyle.max-line-length
* Update fix for unnecessary-paren-on-raise-exception to unsafe for unknown types
* Correct quick fix message for W605
* Documentation
* Fix typo in max-doc-length documentation
* Improve documentation around linter-formatter conflicts
* Fix link to error suppression documentation in unused-noqa
* Add external option to unused-noqa documentation
* Add title attribute to icons
* Clarify unsafe case in RSE102
* Fix skipping formatting examples
* docs: fix name of magic-trailing-comma option in README
OBS-URL: https://build.opensuse.org/request/show/1120740
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ruff?expand=0&rev=5
* Formatter
* Avoid space around pow for None, True and False
* Avoid sorting all paths in the format command
* Insert necessary blank line between class and leading comments
* Avoid introducing new parentheses in annotated assignments
* Refine the warnings about incompatible linter options
* Add test and basic implementation for formatter preview mode
* Refine warning about incompatible isort settings
* Only omit optional parentheses for starting or ending with parentheses
* Use source type to determine parser mode for formatting
* Don't warn about magic trailing comma when isort.force-single-line is true
* Use SourceKind::diff for formatter
* Fix fmt:off with trailing child comment
* Formatter parentheses support for IpyEscapeCommand
* Linter
* [pylint] Add buffer methods to bad-dunder-method-name (PLW3201) exclusions
* Match rule prefixes from external codes setting in unused-noqa
* Use line-length setting for isort in lieu of pycodestyle.max-line-length
* Update fix for unnecessary-paren-on-raise-exception to unsafe for unknown types
* Correct quick fix message for W605
* Documentation
* Fix typo in max-doc-length documentation
* Improve documentation around linter-formatter conflicts
* Fix link to error suppression documentation in unused-noqa
* Add external option to unused-noqa documentation
* Add title attribute to icons
* Clarify unsafe case in RSE102
* Fix skipping formatting examples
* docs: fix name of magic-trailing-comma option in README
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=12
* This release includes the Beta version of the Ruff formatter — an extremely
fast, Black-compatible Python formatter
* Preview features
* [pylint] Implement non-ascii-module-import (C2403)
* [pylint] implement non-ascii-name (C2401)
* [pylint] Implement unnecessary-lambda (W0108)
* [refurb] Implement read-whole-file (FURB101)
* Add fix for E223, E224, and E242
* Add fix for E225, E226, E227, and E228
* Add fix for E252
* Add fix for E261
* Add fix for E273 and E274
* Add fix for E275
* Update SIM401 to catch ternary operations
* Update E721 to allow is and is not for direct type comparisons
* Rule changes
* Add backports.strenum to deprecated-imports
* Update SIM112 to ignore https_proxy, http_proxy, and no_proxy
* Update fix for literal-membership (PLR6201) to be unsafe
* Update fix for mutable-argument-defaults (B006) to be unsafe
* Formatter
* Change line-ending default to auto
* Respect parenthesized generators in has_own_parentheses
* Add caching to formatter
* Remove --line-length option from format command
* Add formatter to line-length documentation
* Warn about incompatible formatter options
* Fix range of unparenthesized tuple subject in match statement
* Remove experimental formatter warning
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=9
- update to 0.1.1
* Rule changes
* Add unsafe fix for escape-sequence-in-docstring (D301)
* Configuration
* Respect #(deprecated) attribute in configuration options
* Add [format|lint].exclude options
* Respect tab-size setting in formatter
* Add lint.preview
* Preview features
* [pylint] Implement literal-membership (PLR6201)
* [pylint] Implement too-many-boolean-expressions (PLR0916)
* [pylint] Implement misplaced-bare-raise (E0704)
* [pylint] Implement global-at-module-level (W0604)
* [pylint] Implement unspecified-encoding (PLW1514)
* Add fix for triple-single-quotes (D300)
* Formatter
* New code style badge for ruff format
* Fix comments outside expression parentheses
* Add --target-version to ruff format
* Skip over parentheses when detecting in keyword
* Add --diff option to ruff format
* Insert newline after nested function or class statements
* Use pass over ellipsis in non-function/class contexts
* Bug fixes
* Lazily evaluate all PEP 695 type alias values
* Avoid failed assertion when showing fixes from stdin
* Avoid flagging HTTP and HTTPS literals in urllib-open
* Avoid flagging bad-dunder-method-name for _
* Remove Python 2-only methods from URLOpen audit
* Use set bracket replacement for iteration-over-set to preserve whitespace and comments
OBS-URL: https://build.opensuse.org/request/show/1119204
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ruff?expand=0&rev=3
* Rule changes
* Add unsafe fix for escape-sequence-in-docstring (D301)
* Configuration
* Respect #(deprecated) attribute in configuration options
* Add [format|lint].exclude options
* Respect tab-size setting in formatter
* Add lint.preview
* Preview features
* [pylint] Implement literal-membership (PLR6201)
* [pylint] Implement too-many-boolean-expressions (PLR0916)
* [pylint] Implement misplaced-bare-raise (E0704)
* [pylint] Implement global-at-module-level (W0604)
* [pylint] Implement unspecified-encoding (PLW1514)
* Add fix for triple-single-quotes (D300)
* Formatter
* New code style badge for ruff format
* Fix comments outside expression parentheses
* Add --target-version to ruff format
* Skip over parentheses when detecting in keyword
* Add --diff option to ruff format
* Insert newline after nested function or class statements
* Use pass over ellipsis in non-function/class contexts
* Bug fixes
* Lazily evaluate all PEP 695 type alias values
* Avoid failed assertion when showing fixes from stdin
* Avoid flagging HTTP and HTTPS literals in urllib-open
* Avoid flagging bad-dunder-method-name for _
* Remove Python 2-only methods from URLOpen audit
* Use set bracket replacement for iteration-over-set to preserve whitespace and comments
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=7
- update to 0.1.0
* Breaking changes
+ Unsafe fixes are no longer displayed or applied without opt-in
+ Drop formatting specific rules from the default set
+ The deprecated format setting has been removed
+ The format setting cannot be used to configure the output format, use output-format instead
+ The RUFF_FORMAT environment variable is ignored, use RUFF_OUTPUT_FORMAT instead
+ The --format option has been removed from ruff check, use --output-format instead
* Rule changes
+ Extend reimplemented-starmap (FURB140) to catch calls with a single and starred argument
+ Improve cases covered by RUF015
+ Update SIM15 to allow open followed by close
+ Respect msgspec.Struct default-copy semantics in RUF012
+ Add sqlalchemy methods to `flake8-boolean-trap`` exclusion list
+ Add fix for PLR1714
+ Add fix for PIE804
+ Add fix for PLC0208
+ Add fix for PYI055
+ Update non-pep695-type-alias to require --unsafe-fixes outside of stub files
+ Improve fix message for UP018
+ Update PLW3201 to support Enum sunder names
* Preview features
+ Only show warnings for empty preview selectors when enabling rules
+ Add unnecessary-key-check to simplify key in dct and dct[key] to dct.get(key)
+ Add assignment-in-assert to prevent walrus expressions in assert statements
+ [refurb] Add single-item-membership-test (FURB171)
+ [pylint] Add and-or-ternary (R1706)
+ New rules are added in preview.
* Configuration
+ Add unsafe-fixes setting
OBS-URL: https://build.opensuse.org/request/show/1118297
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ruff?expand=0&rev=2
* Breaking changes
+ Unsafe fixes are no longer displayed or applied without opt-in
+ Drop formatting specific rules from the default set
+ The deprecated format setting has been removed
+ The format setting cannot be used to configure the output format, use output-format instead
+ The RUFF_FORMAT environment variable is ignored, use RUFF_OUTPUT_FORMAT instead
+ The --format option has been removed from ruff check, use --output-format instead
* Rule changes
+ Extend reimplemented-starmap (FURB140) to catch calls with a single and starred argument
+ Improve cases covered by RUF015
+ Update SIM15 to allow open followed by close
+ Respect msgspec.Struct default-copy semantics in RUF012
+ Add sqlalchemy methods to `flake8-boolean-trap`` exclusion list
+ Add fix for PLR1714
+ Add fix for PIE804
+ Add fix for PLC0208
+ Add fix for PYI055
+ Update non-pep695-type-alias to require --unsafe-fixes outside of stub files
+ Improve fix message for UP018
+ Update PLW3201 to support Enum sunder names
* Preview features
+ Only show warnings for empty preview selectors when enabling rules
+ Add unnecessary-key-check to simplify key in dct and dct[key] to dct.get(key)
+ Add assignment-in-assert to prevent walrus expressions in assert statements
+ [refurb] Add single-item-membership-test (FURB171)
+ [pylint] Add and-or-ternary (R1706)
+ New rules are added in preview.
* Configuration
+ Add unsafe-fixes setting
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-ruff?expand=0&rev=5
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.