From 4c202cc4170cb1db0bf21ea02d917f4ec226e9f5 Mon Sep 17 00:00:00 2001 From: DudeNr33 <3929834+DudeNr33@users.noreply.github.com> Date: Mon, 28 Mar 2022 15:45:05 +0200 Subject: [PATCH 1/3] Move ``await-outside-async`` check to correct checker class --- pylint/checkers/typecheck.py | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/pylint/checkers/typecheck.py b/pylint/checkers/typecheck.py index cd5b210a21..5c3196a399 100644 --- a/pylint/checkers/typecheck.py +++ b/pylint/checkers/typecheck.py @@ -1953,6 +1953,20 @@ def visit_for(self, node: nodes.For) -> None: self.add_message("dict-iter-missing-items", node=node) + @check_messages("await-outside-async") + def visit_await(self, node: nodes.Await) -> None: + self._check_await_outside_coroutine(node) + + def _check_await_outside_coroutine(self, node: nodes.Await) -> None: + node_scope = node.scope() + while not isinstance(node_scope, nodes.Module): + if isinstance(node_scope, nodes.AsyncFunctionDef): + return + if isinstance(node_scope, nodes.FunctionDef): + break + node_scope = node_scope.parent.scope() + self.add_message("await-outside-async", node=node) + class IterableChecker(BaseChecker): """Checks for non-iterables used in an iterable context. @@ -2064,20 +2078,6 @@ def visit_generatorexp(self, node: nodes.GeneratorExp) -> None: for gen in node.generators: self._check_iterable(gen.iter, check_async=gen.is_async) - @check_messages("await-outside-async") - def visit_await(self, node: nodes.Await) -> None: - self._check_await_outside_coroutine(node) - - def _check_await_outside_coroutine(self, node: nodes.Await) -> None: - node_scope = node.scope() - while not isinstance(node_scope, nodes.Module): - if isinstance(node_scope, nodes.AsyncFunctionDef): - return - if isinstance(node_scope, nodes.FunctionDef): - break - node_scope = node_scope.parent.scope() - self.add_message("await-outside-async", node=node) - def register(linter: "PyLinter") -> None: linter.register_checker(TypeChecker(linter)) From e16cddec23a0dd73e2c36960d62499395f6993a4 Mon Sep 17 00:00:00 2001 From: DudeNr33 <3929834+DudeNr33@users.noreply.github.com> Date: Mon, 28 Mar 2022 15:45:39 +0200 Subject: [PATCH 2/3] Add examples and link to PEP for ``await-outside-async`` --- doc/data/messages/a/await-outside-async/bad.py | 5 +++++ doc/data/messages/a/await-outside-async/good.py | 5 +++++ doc/data/messages/a/await-outside-async/related.rst | 1 + 3 files changed, 11 insertions(+) create mode 100644 doc/data/messages/a/await-outside-async/bad.py create mode 100644 doc/data/messages/a/await-outside-async/good.py create mode 100644 doc/data/messages/a/await-outside-async/related.rst diff --git a/doc/data/messages/a/await-outside-async/bad.py b/doc/data/messages/a/await-outside-async/bad.py new file mode 100644 index 0000000000..35fd8c3439 --- /dev/null +++ b/doc/data/messages/a/await-outside-async/bad.py @@ -0,0 +1,5 @@ +import asyncio + + +def main(): + await asyncio.sleep(1) # [await-outside-async] diff --git a/doc/data/messages/a/await-outside-async/good.py b/doc/data/messages/a/await-outside-async/good.py new file mode 100644 index 0000000000..231794be5e --- /dev/null +++ b/doc/data/messages/a/await-outside-async/good.py @@ -0,0 +1,5 @@ +import asyncio + + +async def main(): + await asyncio.sleep(1) diff --git a/doc/data/messages/a/await-outside-async/related.rst b/doc/data/messages/a/await-outside-async/related.rst new file mode 100644 index 0000000000..6cc66c6863 --- /dev/null +++ b/doc/data/messages/a/await-outside-async/related.rst @@ -0,0 +1 @@ +- `PEP 492 `_ From bf2b303b89519f4af009e4c759cfe028a2607152 Mon Sep 17 00:00:00 2001 From: DudeNr33 <3929834+DudeNr33@users.noreply.github.com> Date: Mon, 28 Mar 2022 15:50:34 +0200 Subject: [PATCH 3/3] Add ChangeLog entry --- ChangeLog | 1 + 1 file changed, 1 insertion(+) diff --git a/ChangeLog b/ChangeLog index d4c184705a..e7a9cb06e1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -26,6 +26,7 @@ Release date: TBA Closes #1555 +* Fix bug where specifically enabling just ``await-outside-async`` was not possible. .. Insert your changelog randomly, it will reduce merge conflicts