From ec0cd4d930294e8abe07bba2902c1e6af8ab22b5 Mon Sep 17 00:00:00 2001 From: Alessio Bogon <778703+youtux@users.noreply.github.com> Date: Sun, 17 Mar 2024 21:32:41 +0100 Subject: [PATCH] dataclasses in `parser.py` should not be compared by their members, but only by just their identity. This fixes an issue with python 3.13 (max recursion depth when running `ScenarioTemplate.__eq__`) --- src/pytest_bdd/parser.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/pytest_bdd/parser.py b/src/pytest_bdd/parser.py index ccdaec73..533bb4ff 100644 --- a/src/pytest_bdd/parser.py +++ b/src/pytest_bdd/parser.py @@ -202,7 +202,7 @@ def parse_feature(basedir: str, filename: str, encoding: str = "utf-8") -> Featu return feature -@dataclass +@dataclass(eq=False) class Feature: scenarios: OrderedDict[str, ScenarioTemplate] filename: str @@ -214,7 +214,7 @@ class Feature: description: str -@dataclass +@dataclass(eq=False) class ScenarioTemplate: """A scenario template. @@ -278,7 +278,7 @@ def description(self): return "\n".join(self._description_lines) -@dataclass +@dataclass(eq=False) class Scenario: feature: Feature name: str @@ -288,7 +288,7 @@ class Scenario: description: list[str] = field(default_factory=list) -@dataclass +@dataclass(eq=False) class Step: type: str _name: str @@ -365,7 +365,7 @@ def replacer(m: Match): return STEP_PARAM_RE.sub(replacer, self.name) -@dataclass +@dataclass(eq=False) class Background: feature: Feature line_number: int @@ -377,7 +377,7 @@ def add_step(self, step: Step) -> None: self.steps.append(step) -@dataclass +@dataclass(eq=False) class Examples: """Example table."""