c930114ffb- update to 0.12.12: * Show fixes by default * [airflow] Convert DatasetOrTimeSchedule(datasets=...) to AssetOrTimeSchedule(assets=...) (AIR311) * [airflow] Improve the AIR002 error message * [airflow] Move airflow.operators.postgres_operator.Mapping from AIR302 to AIR301 * [flake8-async] Implement blocking-input rule (ASYNC250) * [flake8-use-pathlib] Make PTH119 and PTH120 fixes unsafe because they can change behavior * [pylint] Add U+061C to PLE2502 * [ruff] Fix false negative for empty f-strings in deque calls (RUF037) * Less confidently mark f-strings as empty when inferring truthiness * [fastapi] Fix false positive for paths with spaces around parameters (FAST003) * [flake8-comprehensions] Skip C417 when lambda contains yield/yield from * [perflint] Handle tuples in dictionary comprehensions (PERF403) - update to 0.12.11 * Preview features * [airflow] Extend AIR311 and AIR312 rules * [airflow] Replace wrong path airflow.io.storage with airflow.io.store (AIR311) * [flake8-async] Implement blocking-http-call-httpx-in-async-function (ASYNC212) * [flake8-logging-format] Add auto-fix for f-string logging calls (G004) * [flake8-use-pathlib] Add autofix for PTH211Dirk Mueller2025-09-05 09:25:05 +00:00
73c41b3e7dAccepting request 1302462 from devel:languages:pythonAna Guerrero2025-09-03 19:07:09 +00:00
5d8fda79b2Accepting request 1301841 from devel:languages:pythonAna Guerrero2025-08-29 16:34:47 +00:00
18e8d4ed54- update to 0.12.11 * Preview features * [airflow] Extend AIR311 and AIR312 rules * [airflow] Replace wrong path airflow.io.storage with airflow.io.store (AIR311) * [flake8-async] Implement blocking-http-call-httpx-in-async-function (ASYNC212) * [flake8-logging-format] Add auto-fix for f-string logging calls (G004) * [flake8-use-pathlib] Add autofix for PTH211 * [flake8-use-pathlib] Make PTH100 fix unsafe because it can change behavior * Bug fixes * [pyflakes, pylint] Fix false positives caused by __class__ cell handling (F841, PLE0117) * [pyflakes] Fix allowed-unused-imports matching for top-level modules (F401) * [ruff] Fix false positive for t-strings in default-factory-kwarg (RUF026) * [ruff] Preserve relative whitespace in multi-line expressions (RUF033) * Rule changes * [ruff] Handle empty t-strings in unnecessary-empty-iterable-within-deque-call (RUF037) * Documentation * Fix incorrect D413 links in docstrings convention FAQ * [flake8-use-pathlib] Update links to the table showing the correspondence between os and pathlibOndřej Súkup2025-08-28 22:03:24 +00:00
1e592ccd24Accepting request 1300962 from devel:languages:pythonAna Guerrero2025-08-25 18:36:09 +00:00
0f540c8d39- update to 0.12.10 * Preview features * [flake8-simplify] Implement fix for maxsplit without separator (SIM905) * [flake8-use-pathlib] Add fixes for PTH102 and PTH103 * Bug fixes * [isort] Handle multiple continuation lines after module docstring (I002) * [pyupgrade] Avoid reporting __future__ features as unnecessary when they are used (UP010) * [pyupgrade] Handle nested Optionals (UP045) * Rule changes * [pycodestyle] Make E731 fix unsafe instead of display-only for class assignments * [pyflakes] Add secondary annotation showing previous definition (F811) * Documentation * Fix description of global config file discovery strategy * Update outdated links to https://typing.python.org/en/latest/source/stubs.html * [flake8-annotations] Remove unused import in example (ANN401)Ondřej Súkup2025-08-22 11:11:20 +00:00
40aca1f0d8Accepting request 1299828 from devel:languages:pythonAna Guerrero2025-08-18 14:07:32 +00:00
1375d56cbe- update to 0.12.9: * \[airflow\] Add check for airflow.secrets.cache.SecretCache (AIR301) * \[ruff\] Offer a safe fix for multi-digit zeros (RUF064) * \[flake8-blind-except\] Fix BLE001 false-positive on raise ... from None * \[flake8-comprehensions\] Fix false positive for C420 with attribute, subscript, or slice assignment targets * \[flake8-simplify\] Fix handling of U+001C..U+001F whitespace (SIM905) * \[pylint\] Use lowercase hex characters to match the formatter (PLE2513) * [flake8-use-pathlib] Expand PTH201 to check all PurePath subclasses * Bug fixes * [flake8-blind-except] Change BLE001 to correctly parse exception tuples * [flake8-errmsg] Exclude typing.cast from EM101 * [flake8-simplify] Fix raw string handling in SIM905 for embedded quotes * [flake8-import-conventions] Avoid false positives for NFKC-normalized __debug__ import aliases in ICN001 * [isort] Fix syntax error after docstring ending with backslash (I002) * [pylint] Mark PLC0207 fixes as unsafe when *args unpacking is present * [pyupgrade] Prevent infinite loop with I002 (UP010, UP035) * [ruff] Parenthesize generator expressions in f-strings (RUF010) * Rule changes * [eradicate] Don't flag pyrefly pragmas as unused code (ERA001) * Documentation * Replace "associative" with "commutative" in docs for RUF036 * Fix copy and line separator colors in dark mode * Fix link to typing documentation * Include column numbers in GitLab output format * Always expand tabs to four spaces in diagnosticsDirk Mueller2025-08-15 12:57:39 +00:00
89b84e0753- update to 0.12.8 * Preview features * [flake8-use-pathlib] Expand PTH201 to check all PurePath subclasses * Bug fixes * [flake8-blind-except] Change BLE001 to correctly parse exception tuples * [flake8-errmsg] Exclude typing.cast from EM101 * [flake8-simplify] Fix raw string handling in SIM905 for embedded quotes * [flake8-import-conventions] Avoid false positives for NFKC-normalized __debug__ import aliases in ICN001 * [isort] Fix syntax error after docstring ending with backslash (I002) * [pylint] Mark PLC0207 fixes as unsafe when *args unpacking is present * [pyupgrade] Prevent infinite loop with I002 (UP010, UP035) * [ruff] Parenthesize generator expressions in f-strings (RUF010) * Rule changes * [eradicate] Don't flag pyrefly pragmas as unused code (ERA001) * Documentation * Replace "associative" with "commutative" in docs for RUF036 * Fix copy and line separator colors in dark mode * Fix link to typing documentation * [refurb] Make more examples error out-of-the-box * Other changes * Include column numbers in GitLab output format * Always expand tabs to four spaces in diagnostics * Update pre-commit's ruff id
devel
Ondřej Súkup2025-08-09 10:29:08 +00:00
4fb19a8662- update to 0.12.7: * \[flake8-commas\] Add support for trailing comma checks in type parameter lists (COM812, COM819) * \[pylint\] Implement auto-fix for missing-maxsplit-arg (PLC0207) * \[ruff\] Offer fixes for RUF039 in more cases * Support .pyi files in ruff analyze graph * \[flake8-pyi\] Preserve inline comment in ellipsis removal (PYI013) * \[perflint\] Ignore rule if target is global or nonlocal (PERF401) * \[pyupgrade\] Fix UP030 to avoid modifying double curly braces in format strings * \[refurb\] Ignore decorated functions for FURB118 * \[refurb\] Mark int and bool cases for Decimal.from_float as safe fixes (FURB164) * \[ruff\] Fix RUF033 for named default expressionsDirk Mueller2025-07-30 11:51:57 +00:00
9b3a588d67- update to 0.12.5: * \[flake8-use-pathlib\] Add autofix for PTH101, PTH104, PTH105, PTH121 * \[ruff\] Support byte strings (RUF055) * Fix unreachable panic in parser * \[flake8-pyi\] Skip fix if all Union members are None (PYI016) * \[perflint\] Parenthesize generator expressions (PERF401) * \[pylint\] Handle empty comments after line continuation (PLR2044) allow new fixes (TC001, TC002, TC003, UP037, RUF013) * [flake8-use-pathlib] Add autofix for PTH109 * [pylint] Detect indirect pathlib.Path usages for unspecified-encoding (PLW1514) * Bug fixes * [flake8-bugbear] Fix B017 false negatives for keyword exception arguments * [flake8-use-pathlib] Fix false negative on direct Path() instantiation (PTH210) * [flake8-django] Fix DJ008 false positive for abstract models with type-annotated abstract field * [isort] Fix I002 import insertion after docstring with multiple string statements * [isort] Treat form feed as valid whitespace before a semicolon * [pydoclint] Fix SyntaxError from fixes with line continuations (D201, D202) * [refurb] FURB164 fix should validate arguments and should usually be marked unsafe * Rule changes * [flake8-use-pathlib] Skip single dots for invalid-pathlib-with-suffix (PTH210) on versions >= 3.14 * [pep8_naming] Avoid false positives on standard library functions with uppercase names (N802) * [pycodestyle] Handle brace escapes for t-strings in logical lines * [pylint] Extend invalid string character rules to include t-strings * [ruff] Allow strict kwarg when checking for starmap-zip (RUF058) in Python 3.14+ * Documentation * [flake8-type-checking] Make TC010 docs example more realistic * [flake8-bugbear] Support non-context-manager calls in B017Dirk Mueller2025-07-25 15:53:18 +00:00
6f0be6d2bcAccepting request 1294441 from devel:languages:pythonAna Guerrero2025-07-21 17:58:40 +00:00
4a81ecdb06- update to 0.12.4 * Preview features * [flake8-type-checking, pyupgrade, ruff] Add from __future__ import annotations when it would allow new fixes (TC001, TC002, TC003, UP037, RUF013) * [flake8-use-pathlib] Add autofix for PTH109 * [pylint] Detect indirect pathlib.Path usages for unspecified-encoding (PLW1514) * Bug fixes * [flake8-bugbear] Fix B017 false negatives for keyword exception arguments * [flake8-use-pathlib] Fix false negative on direct Path() instantiation (PTH210) * [flake8-django] Fix DJ008 false positive for abstract models with type-annotated abstract field * [isort] Fix I002 import insertion after docstring with multiple string statements * [isort] Treat form feed as valid whitespace before a semicolon * [pydoclint] Fix SyntaxError from fixes with line continuations (D201, D202) * [refurb] FURB164 fix should validate arguments and should usually be marked unsafe * Rule changes * [flake8-use-pathlib] Skip single dots for invalid-pathlib-with-suffix (PTH210) on versions >= 3.14 * [pep8_naming] Avoid false positives on standard library functions with uppercase names (N802) * [pycodestyle] Handle brace escapes for t-strings in logical lines * [pylint] Extend invalid string character rules to include t-strings * [ruff] Allow strict kwarg when checking for starmap-zip (RUF058) in Python 3.14+ * Documentation * [flake8-type-checking] Make TC010 docs example more realistic * Make more documentation examples error out-of-the-boxOndřej Súkup2025-07-18 18:47:43 +00:00
62fb7bf8ddAccepting request 1292499 from devel:languages:pythonAna Guerrero2025-07-15 14:43:00 +00:00
d370fa1ba3- update to 0.12.3: * Preview features * [flake8-bugbear] Support non-context-manager calls in B017 * [flake8-use-pathlib] Add autofixes for PTH100, PTH106, PTH107, PTH108, PTH110, PTH111, PTH112, PTH113, PTH114, PTH115, PTH117, PTH119, PTH120 * [flake8-use-pathlib] Add autofixes for PTH203, PTH204, PTH205 * Bug fixes * [flake8-return] Fix false-positive for variables used inside nested functions in RET504 * Treat form feed as valid whitespace before a line continuation * [flake8-type-checking] Fix syntax error introduced by fix (TC008) * [pyupgrade] Keyword arguments in super should suppress the UP008 fix * Documentation * [flake8-pyi] Make example error out-of-the-box (PYI007, PYI008) * [flake8-simplify] Make example error out-of-the-box (SIM116) * [flake8-type-checking] Make example error out-of-the-box (TC001) * [flake8-use-pathlib] Make example error out-of-the-box (PTH210) * [pycodestyle] Make example error out-of-the-box (E272) * [pycodestyle] Make example not raise unnecessary SyntaxError (E114) * [pydoclint] Make example error out-of-the-box (DOC501) * [pylint, pyupgrade] Fix syntax errors in examples (PLW1501, UP028) * [pylint] Update missing-maxsplit-arg docs and error to suggest proper usage (PLC0207) * [flake8-bandit] Make example error out-of-the-box (S412)Ondřej Súkup2025-07-13 12:39:18 +00:00
4f8e38deb1Accepting request 1290670 from devel:languages:pythonAna Guerrero2025-07-06 15:03:57 +00:00
cff2b677ad- update to 0.12.2: * [flake8-pyi] Expand Optional[A] to A | None (PYI016) * [pyupgrade] Mark UP008 fix safe if no comments are in range * [flake8-comprehensions] Fix C420 to prepend whitespace when needed * [perflint] Fix PERF403 panic on attribute or subscription loop variable * [pydocstyle] Fix D413 infinite loop for parenthesized docstring * [pylint] Fix PLW0108 autofix introducing a syntax error when the lambda's body contains an assignment expression * [refurb] Fix false positive on empty tuples (FURB168) * [ruff] Allow more field calls from attrs (RUF009) * [ruff] Fix syntax error introduced for an empty string followed by a u-prefixed string (UP025) * [flake8-errmsg] Extend EM101 to support byte strings * [flake8-use-pathlib] Add autofix for PTH202 * [pygrep-hooks] Add AsyncMock methods to invalid-mock-access (PGH005) * [pylint] Ignore __init__.py files in (PLC0414) * [ruff] Trigger RUF037 for empty string and byte strings * [formatter] Fix missing blank lines before decorated classes in .pyi files * Bug fixes * Avoid generating diagnostics with per-file ignores * Handle parenthesized arguments in remove_argument * [flake8-logging] Avoid false positive for exc_info=True outside logger.exception (LOG014) * [flake8-pytest-style] Enforce pytest import for decorators * [flake8-pytest-style] Mark autofix for PT001 and PT023 as unsafe if there's comments in the decorator * [flake8-pytest-style] PT001/PT023 fix makes syntax error on parenthesized decoratorDirk Mueller2025-07-04 11:37:53 +00:00
79a2fd8f4aAccepting request 1288970 from devel:languages:pythonAna Guerrero2025-06-30 11:04:08 +00:00
c4da39d03e- update to 0.12.1 * Preview features * [flake8-errmsg] Extend EM101 to support byte strings * [flake8-use-pathlib] Add autofix for PTH202 * [pygrep-hooks] Add AsyncMock methods to invalid-mock-access (PGH005) * [pylint] Ignore __init__.py files in (PLC0414) * [ruff] Trigger RUF037 for empty string and byte strings * [formatter] Fix missing blank lines before decorated classes in .pyi files * Bug fixes * Avoid generating diagnostics with per-file ignores * Handle parenthesized arguments in remove_argument * [flake8-logging] Avoid false positive for exc_info=True outside logger.exception (LOG014) * [flake8-pytest-style] Enforce pytest import for decorators * [flake8-pytest-style] Mark autofix for PT001 and PT023 as unsafe if there's comments in the decorator * [flake8-pytest-style] PT001/PT023 fix makes syntax error on parenthesized decorator * [flake8-raise] Make fix unsafe if it deletes comments (RSE102) * [flake8-simplify] Fix SIM911 autofix creating a syntax error * [flake8-simplify] Fix false negatives for shadowed bindings (SIM910, SIM911) * [flake8-simplify] Preserve original behavior for except () and bare except (SIM105) * [flake8-pyi] Fix PYI041's fix causing TypeError with None | None | ... * [perflint] Fix PERF101 autofix creating a syntax error and mark autofix as unsafe if there are comments in the list call expr * [perflint] Fix false negative in PERF401 * [pylint] Avoid flattening nested min/max when outer call has single argument (PLW3301) * [pylint] Fix PLC2801 autofix creating a syntax error * [pylint] Mark PLE0241 autofix as unsafe if there's comments in the base classes * [pylint] Suppress PLE2510/PLE2512/PLE2513/PLE2514/PLE2515 autofix if the text contains an odd number of backslashes * [refurb] Detect more exotic float literals in FURB164 * [refurb] Fix FURB163 autofix creating a syntax error for yield expressions * [refurb] Mark FURB129 autofix as unsafe if there's comments in the readlines call * [ruff] Fix false positives and negatives in RUF010Ondřej Súkup2025-06-28 16:33:02 +00:00
669d424f58Accepting request 1286470 from devel:languages:pythonAna Guerrero2025-06-18 20:28:35 +00:00
f8c6ca74d0- update to 0.11.13: * \[airflow\] Add unsafe fix for module moved cases (AIR301,AIR311,AIR312,AIR302) * \[refurb\] Add coverage of set and frozenset calls (FURB171) * \[refurb\] Mark FURB180 fix unsafe when class has bases * \[fastapi\] Avoid false positive for class dependencies (FAST003) * Support Python 3.14 template strings (t-strings) in formatter and parser * [airflow] Revise fix titles (AIR3) * [pylint] Implement missing-maxsplit-arg (PLC0207) * [pyupgrade] New rule UP050 (useless-class-metaclass-type) * [flake8-use-pathlib] Replace os.symlink with Path.symlink_to (PTH211) * Bug fixes * [flake8-bugbear] Ignore __debug__ attribute in B010 * [flake8-async] Fix anyio.sleep argument name (ASYNC115, ASYNC116) * [refurb] Fix FURB129 autofix generating invalid syntax * Rule changes * [flake8-implicit-str-concat] Add autofix for ISC003 * [pycodestyle] Improve the diagnostic message for E712 * [flake8-2020] Fix diagnostic message for != comparisons (YTT201) * [pyupgrade] Make fix unsafe if it deletes comments (UP010) * Documentation * Simplify rules table to improve readability * Update editor integrations link in README * [flake8-bugbear] Add fix safety section (B006) * [airflow] Add autofixes for AIR302 and AIR312 * [airflow] Move rules from AIR312 to AIR302 * [airflow] Update AIR301 and AIR311 with the latest Airflow implementationsDirk Mueller2025-06-10 11:18:51 +00:00
2c39ccf498Accepting request 1281460 from devel:languages:pythonAna Guerrero2025-06-02 19:59:02 +00:00
bf80e846ab- update to 0.11.12: * Preview features * [airflow] Revise fix titles (AIR3) * [pylint] Implement missing-maxsplit-arg (PLC0207) * [pyupgrade] New rule UP050 (useless-class-metaclass-type) * [flake8-use-pathlib] Replace os.symlink with Path.symlink_to (PTH211) * Bug fixes * [flake8-bugbear] Ignore __debug__ attribute in B010 * [flake8-async] Fix anyio.sleep argument name (ASYNC115, ASYNC116) * [refurb] Fix FURB129 autofix generating invalid syntax * Rule changes * [flake8-implicit-str-concat] Add autofix for ISC003 * [pycodestyle] Improve the diagnostic message for E712 * [flake8-2020] Fix diagnostic message for != comparisons (YTT201) * [pyupgrade] Make fix unsafe if it deletes comments (UP010) * Documentation * Simplify rules table to improve readability * Update editor integrations link in README * [flake8-bugbear] Add fix safety section (B006)Ondřej Súkup2025-05-30 15:20:09 +00:00
5f1c99cb71Accepting request 1279586 from devel:languages:pythonAna Guerrero2025-05-26 16:32:10 +00:00
a2f3a23b2f- update to 0.11.11: * Preview features * [airflow] Add autofixes for AIR302 and AIR312 * [airflow] Move rules from AIR312 to AIR302 * [airflow] Update AIR301 and AIR311 with the latest Airflow implementations * [flake8-simplify] Enable fix in preview mode (SIM117) * Bug fixes * Fix inconsistent formatting of match-case on [] and _ * [pylint] Fix PLW1514 not recognizing the encoding positional argument of codecs.open * CLI * Add full option name in formatter warning * Documentation * Fix rendering of admonition in docs * [flake8-print] Improve print/pprint docs for T201 and T203 * [flake8-simplify] Add fix safety section (SIM110,SIM210) * [pylint] Fix docs example that produced different output (PLW0603)Ondřej Súkup2025-05-23 15:38:54 +00:00
dc1e94bdc5Accepting request 1278416 from devel:languages:pythonAna Guerrero2025-05-23 12:27:28 +00:00
631bceea45- update 0.11.10: * Preview features * [ruff] Implement a recursive check for RUF060 * [airflow] Enable autofixes for AIR301 and AIR311 * [airflow] Apply try catch guard to all AIR3 rules * [airflow] Extend AIR311 rules * Bug fixes * [flake8-bugbear] Ignore B028 if skip_file_prefixes is present * [flake8-pie] Mark autofix for PIE804 as unsafe if the dictionary contains comments * [flake8-simplify] Correct behavior for str.split/rsplit with maxsplit=0 (SIM905) * [flake8-simplify] Fix SIM905 autofix for rsplit creating a reversed list literal * [flake8-use-pathlib] Suppress diagnostics for all os.* functions that have the dir_fd parameter (PTH) * [refurb] Mark autofix as safe only for number literals (FURB116) * Rule changes * [flake8-bandit] Skip S608 for expressionless f-strings * [flake8-pytest-style] Don't recommend usefixtures for parametrize values (PT019) * [pyupgrade] Add resource.error as deprecated alias of OSError (UP024) * CLI * Disable jemalloc on Android * Documentation * Update Neovim setup docs * [flake8-simplify] Add fix safety section (SIM103) * [flake8-simplify] Add fix safety section (SIM112) * [pylint] Add fix safety section (PLC0414) * [pylint] Add fix safety section (PLE4703) * [pylint] Add fix safety section (PLW1514) * [pylint] Add fix safety section (PLW3301) * [ruff] Add fix safety section (RUF007) * [ruff] Add fix safety section (RUF033)Ondřej Súkup2025-05-19 14:20:27 +00:00
41aebfdb1b- update to 0.11.9: * Preview features * Default to latest supported Python version for version-related syntax errors * Implement deferred annotations for Python 3.14 * [airflow] Fix SQLTableCheckOperator typo (AIR302) * [airflow] Remove airflow.utils.dag_parsing_context.get_parsing_context (AIR301) * [airflow] Skip attribute check in try catch block (AIR301) * [flake8-bandit] Mark tuples of string literals as trusted input in S603 * [isort] Check full module path against project root(s) when categorizing first-party imports * [ruff] Add new rule in-empty-collection (RUF060) * Bug fixes * Fix missing combine call for lint.typing-extensions setting * [flake8-async] Fix module name in ASYNC110, ASYNC115, and ASYNC116 fixes * [pyupgrade] Add spaces between tokens as necessary to avoid syntax errors in UP018 autofix * [refurb] Fix false positive for float and complex numbers in FURB116 * [parser] Flag single unparenthesized generator expr with trailing comma in arguments. * Documentation * Add instructions on how to upgrade to a newer Rust version * Update code of conduct email address * Add fix safety sections to PLC2801, PLR1722, and RUF013 * Add link to check-typed-exception from S110 and S112 * Other changes * Allow passing a virtual environment to ruff analyze graphOndřej Súkup2025-05-13 06:44:07 +00:00
d9baf5f7d0- update to 0.11.8 * Preview features * \[airflow\] Apply auto fixes to cases where the names have changed in Airflow 3 (AIR302, AIR311) * \[airflow\] Extend AIR301 rule * \[airflow\] Update existing AIR302 rules with better suggestions * \[refurb\] Mark fix as safe for readlines-in-for (FURB129) * [syntax-errors] nonlocal declaration at module level * [syntax-errors] Detect single starred expression assignment x = *y * Bug fixes * \[flake8-pyi\] Ensure Literal[None,] | Literal[None,] is not autofixed to None | None (PYI061) * \[flake8-use-pathlib\] Avoid suggesting Path.iterdir() for os.listdir with file descriptor (PTH208) * \[flake8-use-pathlib\] Fix PTH104 false positive when rename is passed a file descriptor * \[flake8-use-pathlib\] Fix PTH116 false positive when stat is passed a file descriptor * \[flake8-use-pathlib\] Fix PTH123 false positive when open is passed a file descriptor from a function call * \[pycodestyle\] Fix duplicated diagnostic in E712 * \[pylint\] Detect global declarations in module scope (PLE0118) * [syntax-errors] Make async-comprehension-in-sync-comprehension more specific * Configuration * Add option to disable typing_extensions imports * Documentation * Fix example syntax for the lint.pydocstyle.ignore-var-parameters option * Add fix safety sections (ASYNC116, FLY002, D200, RUF005, RUF017, RUF027, RUF028, RUF057) * Other changes * Add Python 3.14 to configuration options * Make syntax error for unparenthesized except tuples version specific to before 3.14Ondřej Súkup2025-05-02 15:34:54 +00:00
4521a5465e- update to 0.11.7: * \[airflow\] Apply auto fixes to cases where the names have changed in Airflow 3 (AIR301) * \[perflint\] Implement fix for manual-dict-comprehension (PERF403) * [syntax-errors] Make duplicate parameter names a semantic error * \[flake8-type-checking\] Visit keyword arguments in checks involving typing.cast/typing.NewType arguments * \[pyupgrade\] Preserve parenthesis when fixing native literals containing newlines (UP018) * \[refurb\] Mark the FURB161 fix unsafe except for integers and booleans * Avoid adding whitespace to the end of a docstring after an escaped quote * Raise syntax error when \ is at end of file * [airflow] Add missing AIR302 attribute check * [airflow] Expand module path check to individual symbols (AIR302) * [airflow] Extract AIR312 from AIR302 rules (AIR302, AIR312) * [airflow] Update oudated AIR301, AIR302 rules * [syntax-errors] Async comprehension in sync comprehension * [syntax-errors] Check annotations in annotated assignments * [syntax-errors] Extend annotation checks to await * Bug fixes * [flake8-pie] Avoid false positive for multiple assignment with auto() (PIE796) * Rule changes * [ruff] Fix RUF100 to detect unused file-level noqa directives with specific codes * [flake8-pytest-style] Avoid false positive for legacy form of pytest.raises (PT011) * Documentation * Fix formatting of "See Style Guide" link * [ruff] Implement invalid-rule-code as RUF102Dirk Mueller2025-04-27 14:52:54 +00:00
9cebc6b947Accepting request 1271168 from devel:languages:pythonAna Guerrero2025-04-22 15:25:43 +00:00
04ca5345fb- update to 0.11.6 * Preview features * Avoid adding whitespace to the end of a docstring after an escaped quote * [airflow] Extract AIR311 from AIR301 rules (AIR301, AIR311) * Bug fixes * Raise syntax error when \ is at end of fileOndřej Súkup2025-04-21 12:51:48 +00:00
79b7886815Accepting request 1268673 from devel:languages:pythonAna Guerrero2025-04-14 10:55:37 +00:00
75b0f23e4f- update to 0.11.5 * Preview features * [airflow] Add missing AIR302 attribute check * [airflow] Expand module path check to individual symbols (AIR302) * [airflow] Extract AIR312 from AIR302 rules (AIR302, AIR312) * [airflow] Update oudated AIR301, AIR302 rules * [syntax-errors] Async comprehension in sync comprehension * [syntax-errors] Check annotations in annotated assignments * [syntax-errors] Extend annotation checks to await * Bug fixes * [flake8-pie] Avoid false positive for multiple assignment with auto() (PIE796) * Rule changes * [ruff] Fix RUF100 to detect unused file-level noqa directives with specific codes * [flake8-pytest-style] Avoid false positive for legacy form of pytest.raises (PT011) * Documentation * Fix formatting of "See Style Guide" linkOndřej Súkup2025-04-11 17:16:44 +00:00
bd434475a8Accepting request 1267438 from devel:languages:pythonAna Guerrero2025-04-08 15:50:06 +00:00
39806fad74- update to 0.11.4 * Preview features * [ruff] Implement invalid-rule-code as RUF102 * [syntax-errors] Detect duplicate keys in match mapping patterns * [syntax-errors] Detect duplicate attributes in match class patterns * [syntax-errors] Detect invalid syntax in annotations * [airflow] Add more autofixes for AIR302 * [airflow] Move AIR301 to AIR002 * [airflow] Move AIR302 to AIR301 and AIR303 to AIR302 * [flake8-bandit] Mark str and list[str] literals as trusted input (S603) * [ruff] Support slices in RUF005 * [syntax-errors] Start detecting compile-time syntax errors * [syntax-errors] Duplicate type parameter names * [syntax-errors] Irrefutable case pattern before final case * [syntax-errors] Multiple assignments in case pattern * [syntax-errors] Single starred assignment target * [syntax-errors] Starred expressions in return, yield, and for * [syntax-errors] Store to or delete __debug__ * Bug fixes * [syntax-errors] Fix multiple assignment error for class fields in match patterns * Don't skip visiting non-tuple slice in typing.Annotated subscripts * Error instead of panic! when running Ruff from a deleted directory * [syntax-errors] Fix false positive for parenthesized tuple index * CLI * Check pyproject.toml correctly when it is passed via stdin * Configuration * [flake8-import-conventions] Add import numpy.typing as npt to default flake8-import-conventions.aliases * Documentation * [refurb] Document why UserDict, UserList, and UserString are preferred over dict, list, and str (FURB189)Ondřej Súkup2025-04-06 19:01:15 +00:00
4e7e433589Accepting request 1255264 from devel:languages:pythonAna Guerrero2025-03-25 21:07:23 +00:00
f4037431cf- update to 0.11.2 * Preview features * [syntax-errors] Fix false-positive syntax errors emitted for annotations on variadic parameters before Python 3.11 * [airflow] Add chain, chain_linear and cross_downstream for AIR302 * [syntax-errors] Improve error message and range for pre-PEP-614 decorator syntax errors * [syntax-errors] PEP 701 f-strings before Python 3.12 * [syntax-errors] Parenthesized context managers before Python 3.9 * [syntax-errors] Star annotations before Python 3.11 * [syntax-errors] Star expression in index before Python 3.11 * [syntax-errors] Unparenthesized assignment expressions in sets and indexes * Bug fixes * Server: Allow FixAll action in presence of version-specific syntax errors * [flake8-bandit] Allow raw strings in suspicious-mark-safe-usage (S308) * [refurb] Avoid panicking unwrap in verbose-decimal-constructor (FURB157) * [refurb] Fix starred expressions fix (FURB161) * Fix --statistics reporting for unsafe fixes * Rule changes * [flake8-executables] Allow uv run in shebang line for shebang-missing-python (EXE003) * CLI * Add --exit-non-zero-on-format * Documentation * Update Ruff tutorial to avoid non-existent fix in __init__.py * [flake8-gettext] Swap format- and printf-in-get-text-func-call examples (INT002, INT003)Ondřej Súkup2025-03-22 14:30:24 +00:00
e5371f95b4Accepting request 1253416 from devel:languages:pythonAna Guerrero2025-03-17 21:14:57 +00:00
0116b6c39b- update to 0.11.0 - This is a follow-up to release 0.10.0. Because of a mistake in the release process, the requires-python inference changes were not included in that release. Ruff 0.11.0 now includes this change as well as the stabilization of the preview behavior for PGH004.Ondřej Súkup2025-03-15 22:52:29 +00:00
3cb75413e0- update to 0.9.10 * Preview features * [ruff] Add new rule RUF059: Unused unpacked assignment * [syntax-errors] Detect assignment expressions before Python 3.8 * [syntax-errors] Named expressions in decorators before Python 3.9 * [syntax-errors] Parenthesized keyword argument names after Python 3.8 * [syntax-errors] Positional-only parameters before Python 3.8 * [syntax-errors] Tuple unpacking in return and yield before Python 3.8 * [syntax-errors] Type parameter defaults before Python 3.13 * [syntax-errors] Type parameter lists before Python 3.12 * [syntax-errors] except* before Python 3.11 * [syntax-errors] type statements before Python 3.12 * Bug fixes * Escape template filenames in glob patterns in configuration * [flake8-simplify] Exempt unittest context methods for SIM115 rule * Formatter: Fix syntax error location in notebooks * [pyupgrade] Do not offer fix when at least one target is global/nonlocal (UP028) * [flake8-builtins] Ignore variables matching module attribute names (A001) * [pylint] Convert code keyword argument to a positional argument in fix for (PLR1722) * CLI * Move rule code from description to check_name in GitLab output serializer * Documentation * [pydocstyle] Clarify that D417 only checks docstrings with an arguments sectionOndřej Súkup2025-03-10 10:21:38 +00:00
3cba15ea19- update to 0.9.7 * Preview features * Consider __new__ methods as special function type for enforcing class method or static method rules * [airflow] Improve the internal logic to differentiate deprecated symbols (AIR303) * [refurb] Manual timezone monkeypatching (FURB162) * [ruff] Implicit class variable in dataclass (RUF045) * [ruff] Skip singleton starred expressions for incorrectly-parenthesized-tuple-in-subscript (RUF031) * [refurb] Check for subclasses includes subscript expressions (FURB189) * Rule changes * [flake8-debugger] Also flag sys.breakpointhook and sys.__breakpointhook__ (T100) * [pycodestyle] Exempt site.addsitedir(...) calls (E402) * Formatter * Fix unstable formatting of trailing end-of-line comments of parenthesized attribute values * Server * Fix handling of requests received after shutdown message * Ignore source.organizeImports.ruff and source.fixAll.ruff code actions for a notebook cell * Include document specific debug info for ruff.printDebugInformation * Update server to return the debug info as string with ruff.printDebugInformation * CLI * Warn on invalid noqa even when there are no diagnostics * Better error messages while loading configuration extends * Bug fixes * [flake8-comprehensions] Handle trailing comma in C403 fix * [flake8-pyi] Avoid flagging custom-typevar-for-self on metaclass methods (PYI019) * [pydocstyle] Handle arguments with the same names as sections (D417) * [pylint] Correct ordering of arguments in fix for if-stmt-min-max (PLR1730) * [pylint] Do not offer fix for raw strings (PLE251) * [pyupgrade] Do not upgrade functional TypedDicts with private field names to the class-based syntax (UP013) * [pyupgrade] Handle micro version numbers correctly (UP036) * [pyupgrade] Unwrap unary expressions correctly (UP018)Ondřej Súkup2025-03-04 13:47:29 +00:00
e35796caee- Update to 0.9.7 * Consider __new__ methods as special function type for enforcing class method or static method rules (#13305) * [airflow] Improve the internal logic to differentiate deprecated symbols (AIR303) (#16013) * [refurb] Manual timezone monkeypatching (FURB162) (#16113) * [ruff] Implicit class variable in dataclass (RUF045) (#14349) * [ruff] Skip singleton starred expressions for incorrectly-\ parenthesized-tuple-in-subscript (RUF031) (#16083) * [refurb] Check for subclasses includes subscript expressions (FURB189) (#16155) * [flake8-debugger] Also flag sys.breakpointhook and sys.__breakpointhook__ (T100) (#16191) * [pycodestyle] Exempt site.addsitedir(...) calls (E402) (#16251) * Fix unstable formatting of trailing end-of-line comments of parenthesized attribute values (#16187) * Fix handling of requests received after shutdown message (#16262) * Ignore source.organizeImports.ruff and source.fixAll.ruff code actions for a notebook cell (#16154) * Include document specific debug info for ruff.printDebugInformation (#16215) * Update server to return the debug info as string with ruff.printDebugInformation (#16214) * Warn on invalid noqa even when there are no diagnostics (#16178) * Better error messages while loading configuration extends (#15658) * [flake8-comprehensions] Handle trailing comma in C403 fix (#16110) * [flake8-pyi] Avoid flagging custom-typevar-for-self on metaclass methods (PYI019) (#16141) * [pydocstyle] Handle arguments with the same names as sections (D417) (#16011) * [pylint] Correct ordering of arguments in fix for if-stmt-min-max (PLR1730) (#16080) * [pylint] Do not offer fix for raw strings (PLE251) (#16132) * [pyupgrade] Do not upgrade functional TypedDicts with private fieldMarkéta Machová2025-02-26 16:17:12 +00:00
d8cd5c9e4dAccepting request 1244821 from devel:languages:pythonAna Guerrero2025-02-11 20:21:15 +00:00
ed27560117- 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.nativeServerOndřej Súkup2025-02-10 17:09:06 +00:00
16f022c319Accepting request 1244445 from devel:languages:pythonAna Guerrero2025-02-10 16:23:03 +00:00
861dc03542- 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 fixesOndřej Súkup2025-02-09 01:50:41 +00:00
b656af0850Accepting request 1243319 from devel:languages:pythonAna Guerrero2025-02-07 21:56:51 +00:00
2a3dd0bc9d- Update to 0.9.4 * Preview features - [airflow] Extend airflow context parameter check for BaseOperator.execute (AIR302) (#15713) - [airflow] Update AIR302 to check for deprecated context keys (#15144) - [flake8-bandit] Permit suspicious imports within stub files (S4) (#15822) - [pylint] Do not trigger PLR6201 on empty collections (#15732) - [refurb] Do not emit diagnostic when loop variables are used outside loop body (FURB122) (#15757) - [ruff] Add support for more re patterns (RUF055) (#15764) - [ruff] Check for shadowed map before suggesting fix (RUF058) (#15790) - [ruff] Do not emit diagnostic when all arguments to zip() are variadic (RUF058) (#15744) - [ruff] Parenthesize fix when argument spans multiple lines for unnecessary-round (RUF057) (#15703) * Rule changes - Preserve quote style in generated code (#15726, #15778, #15794) - [flake8-bugbear] Exempt NewType calls where the original type is immutable (B008) (#15765) - [pylint] Honor banned top-level imports by TID253 in PLC0415. (#15628) - [pyupgrade] Ignore is_typeddict and TypedDict for deprecated-import (UP035) (#15800) * CLI - Fix formatter warning message for flake8-quotes option (#15788) - Implement tab autocomplete for ruff config (#15603) * Bug fixes - [flake8-comprehensions] Do not emit unnecessary-map diagnostic when lambda has different arity (C417) (#15802) - [flake8-comprehensions] Parenthesize sorted when needed for unnecessary-call-around-sorted (C413) (#15825) - [pyupgrade] Handle end-of-line comments for quoted-annotation (UP037) (#15824) * Documentation - Add missing config docstrings (#15803) - Add references to trio.run_process and anyio.run_process (#15761) - Use uv init --lib in tutorial (#15718)Markéta Machová2025-02-05 11:19:56 +00:00
b69f8075ef- 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 commaOndřej Súkup2025-01-24 10:46:35 +00:00
ce6766c0afAccepting request 1238688 from devel:languages:pythonAna Guerrero2025-01-20 16:14:09 +00:00
794a8f3c19- Update to 0.9.2 * Preview features * [airflow] Fix typo "security_managr" to "security_manager" (AIR303) * [airflow] extend and fix AIR302 rules * [fastapi] Handle parameters with Depends correctly (FAST003) * [flake8-pytest-style] Implement pytest.warns diagnostics (PT029, PT030, PT031) * [flake8-pytest-style] Test function parameters with default arguments (PT028) * [flake8-type-checking] Avoid false positives for | in TC008 * Rule changes * [flake8-todos] Allow VSCode GitHub PR extension style links in missing-todo-link (TD003) * [pyflakes] Show syntax error message for F722 * Formatter * Fix curly bracket spacing around f-string expressions containing curly braces * Fix joining of f-strings with different quotes when using quote style Preserve * Server * Avoid indexing the same workspace multiple times * Display context for ruff.configuration errors * Configuration * Remove flatten to improve deserialization error messages * Bug fixes * Parse triple-quoted string annotations as if parenthesized * [fastapi] Update Annotated fixes (FAST002) * [flake8-bandit] Check for builtins instead of builtin (S102, PTH123) * [flake8-pathlib] Fix --select for os-path-dirname (PTH120) * [ruff] Fix false positive on global keyword (RUF052)Ondřej Súkup2025-01-18 13:09:00 +00:00
1b273a6992Accepting request 1237200 from devel:languages:pythonAna Guerrero2025-01-14 15:21:17 +00:00
c84eba1029- 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)Ondřej Súkup2025-01-12 22:09:20 +00:00
091bedcd6dAccepting request 1236832 from devel:languages:pythonAna Guerrero2025-01-12 10:08:44 +00:00
2153bcc2c8- 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 matchcase clauses * More consistent formatting for matchcase 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)Dirk Mueller2025-01-10 10:48:55 +00:00
e77ad89db4Accepting request 1235139 from devel:languages:pythonAna Guerrero2025-01-07 19:49:57 +00:00
4ef6714a26- 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) * [ruff] Avoid reporting when ndigits is possibly negative (RUF057) * Rule changes * [flake8-todos] remove issue code length restriction (TD003) * [pyflakes] Ignore errors in @no_type_check string annotations (F722, F821) * CLI * Show errors for attempted fixes only when passed --verbose * Bug fixes * [ruff] Avoid syntax error when removing int over multiple lines (RUF046) * [pyupgrade] Revert "Add all PEP-585 names to UP006 rule" 0.8.5 * Preview features * [airflow] Extend names moved from core to provider (AIR303) * [airflow] Extend rule to check class attributes, methods, arguments (AIR302) * [fastapi] Update FAST002 to check keyword-only arguments * [flake8-type-checking] Disable TC006 and TC007 in stub files * [pylint] Detect nested methods correctly (PLW1641) * [ruff] Detect more strict-integer expressions (RUF046) * [ruff] Implement falsy-dict-get-fallback (RUF056) * [ruff] Implement unnecessary-round (RUF057) * Rule changes * Visit PEP 764 inline TypedDict keys as non-type-expressions * [flake8-comprehensions] Skip C416 if comprehension contains unpacking * [flake8-pie] Allow cast(SomeType, ...) (PIE796) * [flake8-simplify] More precise inference for dictionaries (SIM300) * [flake8-use-pathlib] Catch redundant joins in PTH201 and avoid syntax errors * [pycodestyle] Preserve original value format (E731)Ondřej Súkup2025-01-06 10:04:56 +00:00
22c773fbe0Accepting request 1231367 from devel:languages:pythonAna Guerrero2024-12-17 18:22:20 +00:00
fd74ce92bb- 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 operationOndřej Súkup2024-12-16 10:24:23 +00:00
c5a9a34047Accepting request 1228749 from devel:languages:pythonAna Guerrero2024-12-08 10:36:25 +00:00
735b7eab27- update to 0.8.2 * Preview features * [airflow] Avoid deprecated values (AIR302) * [airflow] Extend removed names for AIR302 * [ruff] Extend unnecessary-regular-expression to non-literal strings (RUF055) * [ruff] Implement used-dummy-variable (RUF052) * [ruff] Implement unnecessary-cast-to-int (RUF046) * Rule changes * [airflow] Check AIR001 from builtin or providers operators module * [flake8-pytest-style] Remove @ in pytest.mark.parametrize rule messages * [pandas-vet] Skip rules if the panda module hasn't been seen * [pylint] Fix false negatives for ascii and sorted in len-as-condition (PLC1802) * [refurb] Guard hashlib imports and mark hashlib-digest-hex fix as safe (FURB181) * Configuration * [flake8-import-conventions] Improve syntax check for aliases supplied in configuration for unconventional-import-alias (ICN001) * Bug fixes * Revert: [pyflakes] Avoid false positives in @no_type_check contexts (F821, F722) * [pep8-naming] Avoid false positive for class Bar(type(foo)) (N804) * [pycodestyle] Handle f-strings properly for invalid-escape-sequence (W605) * [pylint] Ignore @overload in PLR0904 * [refurb] Handle non-finite decimals in verbose-decimal-constructor (FURB157) * [ruff] Avoid emitting assignment-in-assert when all references to the assigned variable are themselves inside asserts (RUF018) * Documentation * Improve docs for flake8-use-pathlib rules * Improve error messages and docs for flake8-comprehensions rules * [flake8-type-checking] Expands TC006 docs to better explain itselfOndřej Súkup2024-12-06 11:37:15 +00:00
6320a607c8Accepting request 1227743 from devel:languages:pythonAna Guerrero2024-12-03 19:45:39 +00:00
48cd084f0f- 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)Ondřej Súkup2024-12-02 11:29:19 +00:00
3065de8967Accepting request 1224610 from devel:languages:pythonAna Guerrero2024-11-18 18:57:06 +00:00
b0b437d243- update to 0.7.4 * Preview features * [flake8-datetimez] Detect usages of datetime.max/datetime.min (DTZ901) * [flake8-logging] Implement root-logger-calls (LOG015) * [flake8-no-pep420] Detect empty implicit namespace packages (INP001) * [flake8-pyi] Add "replace with Self" fix (PYI019) * [perflint] Implement quick-fix for manual-list-comprehension (PERF401) * [pylint] Implement shallow-copy-environ (W1507) * [ruff] Implement none-not-at-end-of-union (RUF036) * [ruff] Implementation unsafe-markup-call from flake8-markupsafe plugin (RUF035) * [ruff] Report problems for attrs dataclasses (RUF008, RUF009) * Rule changes * [flake8-boolean-trap] Exclude dunder methods that define operators (FBT001) * [flake8-pyi] Add "replace with Self" fix (PYI034) * [flake8-pyi] Always autofix duplicate-union-members (PYI016) * [flake8-pyi] Improve autofix for nested and mixed type unions for unnecessary-type-union (PYI055) * [flake8-pyi] Mark fix as unsafe when type annotation contains comments for duplicate-literal-member (PYI062) * Server * Use the current working directory to resolve settings from ruff.configuration * Bug fixes * Avoid conflicts between PLC014 (useless-import-alias) and I002 (missing-required-import) by considering lint.isort.required-imports for PLC014 * [flake8-type-checking] Skip quoting annotation if it becomes invalid syntax (TCH001) * [flake8-pyi] Avoid using typing.Self in stub files pre-Python 3.11 (PYI034) * [flake8-pytest-style] Flag pytest.raises call with keyword argument expected_exception (PT011) * [flake8-simplify] Infer "unknown" truthiness for literal iterables whose items are all unpacks (SIM222) * [flake8-type-checking] Fix false positives for typing.Annotated (TCH001) * [pylint] Allow await at the top-level scope of a notebook (PLE1142) * [pylint] Fix miscellaneous issues in await-outside-async detection (PLE1142) * [pyupgrade Avoid applying PEP 646 rewrites in invalid contexts ()UP044) * [pyupgrade] Detect permutations in redundant open modes (UP015)Ondřej Súkup2024-11-17 01:37:16 +00:00
c5c04be959Accepting request 1223378 from devel:languages:pythonAna Guerrero2024-11-12 18:19:49 +00:00
54f06f736d- 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 codesOndřej Súkup2024-11-11 14:16:41 +00:00
1fd039d528- 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)Ondřej Súkup2024-11-01 23:06:50 +00:00
3521b16751Accepting request 1218438 from devel:languages:pythonAna Guerrero2024-10-27 10:24:17 +00:00
b187c8528c- 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 NotImplementedErrorOndřej Súkup2024-10-25 19:58:57 +00:00
330d33f249Accepting request 1216817 from devel:languages:pythonAna Guerrero2024-10-22 12:51:01 +00:00
5289a4dc9fAccepting request 1208873 from devel:languages:pythonAna Guerrero2024-10-20 08:08:59 +00:00
708c9dacc9- 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 autofixOndřej Súkup2024-10-18 13:01:04 +00:00
5b7ac9f325Accepting request 1206146 from devel:languages:pythonAna Guerrero2024-10-08 15:16:37 +00:00
dd17e5b1cc- 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]Ondřej Súkup2024-10-07 16:58:51 +00:00
a9c5f883e7Accepting request 1203894 from devel:languages:pythonAna Guerrero2024-09-29 16:09:07 +00:00
a2aba31431- update to 0.6.8: * Preview features * Remove unnecessary parentheses around match case clauses * Parenthesize overlong if guards in match..case clauses * Detect basic wildcard imports in ruff analyze graph * [pylint] Implement boolean-chained-comparison (R1716) * Rule changes * [lake8-simplify] Detect SIM910 when using variadic keyword arguments, i.e., **kwargs * [pyupgrade] Avoid false negatives with non-reference shadowed bindings of loop variables (UP028) * Bug fixes * Detect tuples bound to variadic positional arguments i.e. *args * Exit gracefully on broken pipe errors * Avoid panic when analyze graph hits broken pipe * Performance * Reuse BTreeSets in module resolver * Skip traversal for non-compound statementsOndřej Súkup2024-09-26 13:39:56 +00:00
45a26cc8b9Accepting request 1202630 from devel:languages:pythonAna Guerrero2024-09-24 15:31:22 +00:00
6379086470- 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) * 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 loadDirk Mueller2024-09-23 12:02:23 +00:00