Revert "Use an enum for sentinel"

This reverts commit 35771f643d.
This commit is contained in:
Marc Mueller 2023-09-09 00:32:07 +02:00
parent 35771f643d
commit 1da54b4546
1 changed files with 4 additions and 9 deletions

View File

@ -14,7 +14,6 @@ import sys
import tokenize
import types
from collections import defaultdict
from enum import Enum
from pathlib import Path
from pathlib import PurePath
from typing import Callable
@ -54,11 +53,7 @@ PYTEST_TAG = f"{sys.implementation.cache_tag}-pytest-{version}"
PYC_EXT = ".py" + (__debug__ and "c" or "o")
PYC_TAIL = "." + PYTEST_TAG + PYC_EXT
class ScopeEndMarkerType(Enum):
"""Special marker that denotes we have just left a function or class definition."""
ScopeEndMarker = 1
_SCOPE_END_MARKER = object()
class AssertionRewritingHook(importlib.abc.MetaPathFinder, importlib.abc.Loader):
@ -733,13 +728,13 @@ class AssertionRewriter(ast.NodeVisitor):
# Collect asserts.
self.scope = (mod,)
nodes: List[Union[ast.AST, ScopeEndMarkerType]] = [mod]
nodes: List[Union[ast.AST, object]] = [mod]
while nodes:
node = nodes.pop()
if isinstance(node, (ast.FunctionDef, ast.AsyncFunctionDef, ast.ClassDef)):
self.scope = tuple((*self.scope, node))
nodes.append(ScopeEndMarkerType.ScopeEndMarker)
if node is ScopeEndMarkerType.ScopeEndMarker:
nodes.append(_SCOPE_END_MARKER)
if node == _SCOPE_END_MARKER:
self.scope = self.scope[:-1]
continue
assert isinstance(node, ast.AST)