ruff/crates/ruff_linter/resources/test/fixtures
Bhuminjay Soni c722f498fe
[`flake8-bugbear`] Catch `yield` expressions within other statements (`B901`) (#21200)
## Summary

This PR re-implements [return-in-generator
(B901)](https://docs.astral.sh/ruff/rules/return-in-generator/#return-in-generator-b901)
for async generators as a semantic syntax error. This is not a syntax
error for sync generators, so we'll need to preserve both the lint rule
and the syntax error in this case.

It also updates B901 and the new implementation to catch cases where the
generator's `yield` or `yield from` expression is part of another
statement, as in:

```py
def foo():
    return (yield)
```

These were previously not caught because we only looked for
`Stmt::Expr(Expr::Yield)` in `visit_stmt` instead of visiting `yield`
expressions directly. I think this modification is within the spirit of
the rule and safe to try out since the rule is in preview.

## Test Plan

<!-- How was it tested? -->
I have written tests as directed in #17412

---------

Signed-off-by: 11happy <soni5happy@gmail.com>
Signed-off-by: 11happy <bhuminjaysoni@gmail.com>
Co-authored-by: Brent Westbrook <brentrwestbrook@gmail.com>
Co-authored-by: Brent Westbrook <36778786+ntBre@users.noreply.github.com>
2025-12-03 12:05:15 -05:00
..
airflow [`airflow`] extend deprecated argument `concurrency` in `airflow..DAG` (`AIR301`) (#21220) 2025-11-03 15:20:20 -05:00
control-flow-graph [`pylint`] Fix `unreachable` infinite loop (`PLW0101`) (#15278) 2025-01-08 09:45:04 -06:00
eradicate Don't flag `pyrefly` pragmas as unused code (`ERA001`) (#19731) 2025-08-04 10:15:37 +02:00
fastapi [`fastapi`] Handle ellipsis defaults in FAST002 autofix (`FAST002`) (#20810) 2025-10-21 02:47:13 +00:00
filesystem Rename `ruff` crate to `ruff_linter` (#7529) 2023-09-20 08:38:27 +02:00
flake8_2020 Rename `ruff` crate to `ruff_linter` (#7529) 2023-09-20 08:38:27 +02:00
flake8_annotations [`flake8-annotations`] Fix return type annotations to handle shadowed builtin symbols (`ANN201`, `ANN202`, `ANN204`, `ANN205`, `ANN206`) (#20612) 2025-10-02 22:44:06 +00:00
flake8_async [`flake8-async`] Implement `blocking-path-method` (`ASYNC240`) (#20264) 2025-09-23 08:30:47 -04:00
flake8_bandit [`flake8-bandit`] Handle string literal bindings in suspicious-url-open-usage (`S310`) (#21469) 2025-11-26 09:21:50 +00:00
flake8_blind_except [`flake8-blind-except`] Fix `BLE001` false-positive on `raise ... from None` (#19755) 2025-08-13 13:01:47 -04:00
flake8_boolean_trap FBT001: exclude boolean operators (#14203) 2024-11-10 22:40:37 +00:00
flake8_bugbear [`flake8-bugbear`] Catch `yield` expressions within other statements (`B901`) (#21200) 2025-12-03 12:05:15 -05:00
flake8_builtins [`flake8-bultins`] Detect class-scope builtin shadowing in decorators, default args, and attribute initializers (`A003`) (#20178) 2025-09-22 18:12:45 -04:00
flake8_commas Track t-strings and f-strings for token-based rules and suppression comments (#20357) 2025-09-12 13:00:12 -05:00
flake8_comprehensions [`flake8-comprehensions`] Preserve trailing commas for single-element lists (`C409`) (#19571) 2025-09-19 09:27:14 -04:00
flake8_datetimez [`flake8-datetime`] Ignore `.replace()` calls while looking for `.astimezone` (#16050) 2025-02-09 15:48:59 +00:00
flake8_debugger [`flake8-debugger`] Also flag `sys.breakpointhook` and `sys.__breakpointhook__` (`T100`) (#16191) 2025-02-16 14:50:16 -05:00
flake8_django [`flake8-django`] Apply `DJ001` to annotated fields (#20907) 2025-10-27 09:19:15 +01:00
flake8_errmsg [`flake8-errmsg`] Exclude `typing.cast` from `EM101` (#19656) 2025-08-01 13:37:44 -04:00
flake8_executable [`flake8-executable`] Allow `uvx` in shebang line (`EXE003`) (#18967) 2025-06-30 09:38:18 -04:00
flake8_fixme Fix TODO directive out of bounds acccess (#13756) 2024-10-15 10:49:53 +02:00
flake8_future_annotations [`ruff`] Extend FA102 with listed PEP 585-compatible APIs (#20659) 2025-10-03 09:45:32 -04:00
flake8_gettext [`flake8-gettext`] Resolve qualified names and built-in bindings (`INT001`, `INT002`, `INT003`) (#19045) 2025-10-20 18:24:55 -04:00
flake8_implicit_str_concat [`flake8-implicit-str-concat`] Avoid invalid fix generated by autofix (`ISC003`) (#21517) 2025-11-21 17:22:35 -08:00
flake8_import_conventions [flake8-import-conventions] Add import `numpy.typing as npt` to default `flake8-import-conventions.aliases` (#17133) 2025-04-02 09:25:46 +02:00
flake8_logging [`flake8-logging`] Avoid false positive for `exc_info=True` outside `logger.exception` (`LOG014`) (#18737) 2025-06-20 14:43:08 -04:00
flake8_logging_format [`flake8-logging-format`] Avoid dropping implicitly concatenated pieces in the `G004` fix (#20793) 2025-10-09 18:14:38 -04:00
flake8_no_pep420 Skip namespace package enforcement for PEP 723 scripts (#13974) 2024-10-29 02:11:31 +00:00
flake8_pie Fix F701 to F707 errors in tests (#19125) 2025-07-04 13:43:18 -05:00
flake8_print Rename `ruff` crate to `ruff_linter` (#7529) 2023-09-20 08:38:27 +02:00
flake8_pyi [`flake8-pyi`] Fix PYI034 to not trigger on metaclasses (`PYI034`) (#20881) 2025-10-24 13:40:26 +00:00
flake8_pytest_style Less confidently mark f-strings as empty when inferring truthiness (#20152) 2025-08-29 22:12:54 +00:00
flake8_quotes Implement template strings (#17851) 2025-05-30 15:00:56 -05:00
flake8_raise [`flake8-raise`] Make fix unsafe if it deletes comments (`RSE102`) (#18788) 2025-06-21 19:09:40 +02:00
flake8_return [`flake8-return`] Fix false-positive for variables used inside nested functions in `RET504` (#18433) 2025-07-10 16:10:22 -04:00
flake8_self [`flake8-self`] Ignore attribute accesses on instance-like variables (`SLF001`) (#16149) 2025-02-23 10:00:49 +00:00
flake8_simplify [`flake8-simplify`] Fix truthiness assumption for non-iterable arguments in tuple/list/set calls (`SIM222`, `SIM223`) (#21479) 2025-12-01 16:57:51 -05:00
flake8_slots Avoid recommending `__slots__` for classes that inherit from more than `namedtuple` (#12531) 2024-07-26 14:24:40 +00:00
flake8_tidy_imports Rename `ruff` crate to `ruff_linter` (#7529) 2023-09-20 08:38:27 +02:00
flake8_todos [`flake8-todos`] Allow VSCode GitHub PR extension style links in `missing-todo-link` (`TD003`) (#15519) 2025-01-15 23:47:33 +00:00
flake8_type_checking [`flake8-type-checking`] Fix `TC003` false positive with `future-annotations` (#21125) 2025-10-30 14:14:29 -04:00
flake8_unused_arguments Add t-string fixtures for rules that do not need to be modified (#19146) 2025-07-14 09:46:31 -05:00
flake8_use_pathlib [`flake8-use-pathlib`] Fix `PTH101`, `PTH104`, `PTH105`, `PTH121` fixes (#20143) 2025-09-18 14:17:54 +00:00
flynt [`flynt`] Fix f-string quoting for mixed quote joiners (`FLY002`) (#20662) 2025-10-03 09:15:57 -04:00
isort [`isort`] Fix inserting required imports before future imports (`I002`) (#20676) 2025-10-06 13:40:36 +00:00
mccabe Rename `ruff` crate to `ruff_linter` (#7529) 2023-09-20 08:38:27 +02:00
numpy Ignore `NPY201` inside `except` blocks for compatibility with older numpy versions (#12490) 2024-07-24 20:03:23 +00:00
pandas_vet Limit inplace diagnostics to methods that accept inplace (#9495) 2024-01-12 14:12:54 -05:00
pep8_naming [`pep8-naming`] Fix `N802` false positives for `CGIHTTPRequestHandler` and `SimpleHTTPRequestHandler` (#19432) 2025-07-23 12:04:11 -04:00
perflint [`perflint`] Handle tuples in dictionary comprehensions (`PERF403`) (#19934) 2025-08-28 21:37:40 +00:00
pycodestyle [`pycodestyle`] Fix `E301` to only trigger for functions immediately within a class (#19768) 2025-09-16 11:00:07 -04:00
pydoclint [`pydoclint`] Fix false positive when Sphinx directives follow Raises section (`DOC502`) (#20535) 2025-11-12 21:37:55 +00:00
pydocstyle [`pydoclint`] Fix `SyntaxError` from fixes with line continuations (`D201`, `D202`) (#19246) 2025-07-14 13:31:36 -04:00
pyflakes Fix syntax error false positives for `await` outside functions (#21763) 2025-12-02 21:02:02 +00:00
pygrep_hooks [`pygrep_hooks`] Add `AsyncMock` methods to `invalid-mock-access` (`PGH005`) (#18547) 2025-06-24 17:27:21 -04:00
pylint [`pylint`] Fix suppression for empty dict without tuple key annotation (`PLE1141`) (#21290) 2025-11-21 22:07:18 +00:00
pyupgrade [`pyupgrade`] Fix false positive on relative imports from local `.builtins` module (`UP029`) (#21309) 2025-11-07 16:01:52 +00:00
refurb [`refurb`] Fix `FURB103` autofix (#21454) 2025-11-16 09:32:41 +01:00
ruff Add rule to detect unnecessary class properties (#21535) 2025-11-26 09:31:22 +01:00
semantic_errors [semantic error tests]: refactor semantic error tests to separate files (#20926) 2025-10-27 21:18:11 +00:00
syntax_errors [`flake8-bugbear`] Catch `yield` expressions within other statements (`B901`) (#21200) 2025-12-03 12:05:15 -05:00
tryceratops Recode `TRY302` to `TRY203` (#13502) 2024-10-17 16:35:12 +01:00
__init__.py [`pylint`] (Re-)Implement `import-private-name` (`C2701`) (#9553) 2024-01-16 14:03:11 -05:00