From a896b037ad856f60dcf149bc69f07d1948b532db Mon Sep 17 00:00:00 2001
From: "pre-commit-ci[bot]"
<66853113+pre-commit-ci[bot]@users.noreply.github.com>
Date: Mon, 14 Apr 2025 20:28:55 +0000
Subject: [PATCH 1/3] [pre-commit.ci] pre-commit autoupdate
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
updates:
- [github.com/astral-sh/ruff-pre-commit: v0.11.4 → v0.11.5](https://github.com/astral-sh/ruff-pre-commit/compare/v0.11.4...v0.11.5)
- [github.com/RobertCraigie/pyright-python: v1.1.398 → v1.1.399](https://github.com/RobertCraigie/pyright-python/compare/v1.1.398...v1.1.399)
---
.pre-commit-config.yaml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 7c55224..74fedc5 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -9,7 +9,7 @@ ci:
repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
- rev: v0.11.4
+ rev: v0.11.5
hooks:
- id: ruff
args: [--fix]
@@ -45,7 +45,7 @@ repos:
exclude: tests/(eval|autofix)_files/.*_py(310|311).py
- repo: https://github.com/RobertCraigie/pyright-python
- rev: v1.1.398
+ rev: v1.1.399
hooks:
- id: pyright
# ignore warnings about new version being available, no other warnings
From 36ed8a6c0bfe1bc3c573b2eb065d93d5f5597edb Mon Sep 17 00:00:00 2001
From: jakkdl
Date: Wed, 16 Apr 2025 16:19:07 +0200
Subject: [PATCH 2/3] fix new pyright errors
---
flake8_async/runner.py | 10 ++++----
flake8_async/visitors/visitor91x.py | 40 ++++++++++++++++++++---------
2 files changed, 33 insertions(+), 17 deletions(-)
diff --git a/flake8_async/runner.py b/flake8_async/runner.py
index 3d9a136..884be2c 100644
--- a/flake8_async/runner.py
+++ b/flake8_async/runner.py
@@ -25,18 +25,18 @@
from libcst import Module
- from .base import Error, Options
from .visitors.flake8asyncvisitor import Flake8AsyncVisitor, Flake8AsyncVisitor_cst
+from .base import Error, Options
@dataclass
class SharedState:
options: Options
- problems: list[Error] = field(default_factory=list)
- noqas: dict[int, set[str]] = field(default_factory=dict)
+ problems: list[Error] = field(default_factory=list[Error])
+ noqas: dict[int, set[str]] = field(default_factory=dict[int, set[str]])
library: tuple[str, ...] = ()
- typed_calls: dict[str, str] = field(default_factory=dict)
- variables: dict[str, str] = field(default_factory=dict)
+ typed_calls: dict[str, str] = field(default_factory=dict[str, str])
+ variables: dict[str, str] = field(default_factory=dict[str, str])
class __CommonRunner:
diff --git a/flake8_async/visitors/visitor91x.py b/flake8_async/visitors/visitor91x.py
index 853e644..43cba5b 100644
--- a/flake8_async/visitors/visitor91x.py
+++ b/flake8_async/visitors/visitor91x.py
@@ -162,13 +162,21 @@ class LoopState:
body_guaranteed_once: bool = False
has_break: bool = False
- uncheckpointed_before_continue: set[Statement] = field(default_factory=set)
- uncheckpointed_before_break: set[Statement] = field(default_factory=set)
-
- artificial_errors: set[cst.Return | cst.Yield] = field(default_factory=set)
- nodes_needing_checkpoints: list[cst.Return | cst.Yield | ArtificialStatement] = (
- field(default_factory=list)
+ uncheckpointed_before_continue: set[Statement] = field(
+ default_factory=set[Statement]
)
+ uncheckpointed_before_break: set[Statement] = field(default_factory=set[Statement])
+ # pyright emits reportUnknownVariableType, requiring the generic to default_factory
+ # to be specified.
+ # But for these we require a union, and `|` doesn't work on py39, and uses of
+ # `Union` gets autofixed by ruff.
+ # So.... let's just ignore the error for now
+ artificial_errors: set[ # pyright: ignore[reportUnknownVariableType]
+ cst.Return | cst.Yield
+ ] = field(default_factory=set)
+ nodes_needing_checkpoints: list[ # pyright: ignore[reportUnknownVariableType]
+ cst.Return | cst.Yield | ArtificialStatement
+ ] = field(default_factory=list)
def copy(self):
return LoopState(
@@ -184,10 +192,14 @@ def copy(self):
@dataclass
class TryState:
- body_uncheckpointed_statements: set[Statement] = field(default_factory=set)
- try_checkpoint: set[Statement] = field(default_factory=set)
- except_uncheckpointed_statements: set[Statement] = field(default_factory=set)
- added: set[Statement] = field(default_factory=set)
+ body_uncheckpointed_statements: set[Statement] = field(
+ default_factory=set[Statement]
+ )
+ try_checkpoint: set[Statement] = field(default_factory=set[Statement])
+ except_uncheckpointed_statements: set[Statement] = field(
+ default_factory=set[Statement]
+ )
+ added: set[Statement] = field(default_factory=set[Statement])
def copy(self):
return TryState(
@@ -202,8 +214,12 @@ def copy(self):
class MatchState:
# TryState, LoopState, and MatchState all do fairly similar things. It would be nice
# to harmonize them and share logic.
- base_uncheckpointed_statements: set[Statement] = field(default_factory=set)
- case_uncheckpointed_statements: set[Statement] = field(default_factory=set)
+ base_uncheckpointed_statements: set[Statement] = field(
+ default_factory=set[Statement]
+ )
+ case_uncheckpointed_statements: set[Statement] = field(
+ default_factory=set[Statement]
+ )
has_fallback: bool = False
def copy(self):
From 28a3cbe7b7fda03d5442e5a79ca453706f339159 Mon Sep 17 00:00:00 2001
From: jakkdl
Date: Thu, 17 Apr 2025 13:47:39 +0200
Subject: [PATCH 3/3] sort imports
---
flake8_async/runner.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/flake8_async/runner.py b/flake8_async/runner.py
index 884be2c..4562892 100644
--- a/flake8_async/runner.py
+++ b/flake8_async/runner.py
@@ -12,6 +12,7 @@
import libcst as cst
+from .base import Error, Options
from .visitors import (
ERROR_CLASSES,
ERROR_CLASSES_CST,
@@ -26,7 +27,6 @@
from libcst import Module
from .visitors.flake8asyncvisitor import Flake8AsyncVisitor, Flake8AsyncVisitor_cst
-from .base import Error, Options
@dataclass