From a649f157de8bc16fb99152b2f64e407f1e842692 Mon Sep 17 00:00:00 2001 From: Ran Benita Date: Sat, 16 Nov 2019 15:50:58 +0200 Subject: [PATCH] Make Source explicitly implement __iter__() Source was previously iterable because it implements `__getitem__()`, which is apparently a thing from before `__iter__()` was introduced. To reduce mypy's and my own confusion, implement `__iter__()` directly. --- src/_pytest/_code/source.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/_pytest/_code/source.py b/src/_pytest/_code/source.py index a26a70e68..d7cef683d 100644 --- a/src/_pytest/_code/source.py +++ b/src/_pytest/_code/source.py @@ -8,6 +8,7 @@ import warnings from ast import PyCF_ONLY_AST as _AST_FLAG from bisect import bisect_right from types import FrameType +from typing import Iterator from typing import List from typing import Optional from typing import Sequence @@ -73,6 +74,9 @@ class Source: newsource.lines = self.lines[key.start : key.stop] return newsource + def __iter__(self) -> Iterator[str]: + return iter(self.lines) + def __len__(self) -> int: return len(self.lines)