- 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