Skip to content

Commit 28a7946

Browse files
committed
prefer .__next__/.__iter__
1 parent 47b35a0 commit 28a7946

File tree

5 files changed

+69
-71
lines changed

5 files changed

+69
-71
lines changed

streamable/aiterators.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -156,12 +156,12 @@ class FlattenAsyncIterator(AsyncIterator[U]):
156156
def __init__(self, iterator: AsyncIterator[Iterable[U]]) -> None:
157157
validate_aiterator(iterator)
158158
self.iterator = iterator
159-
self._current_iterator_elem: Iterator[U] = iter(tuple())
159+
self._current_iterator_elem: Iterator[U] = tuple().__iter__()
160160

161161
async def __anext__(self) -> U:
162162
while True:
163163
try:
164-
return next(self._current_iterator_elem)
164+
return self._current_iterator_elem.__next__()
165165
except StopIteration:
166166
self._current_iterator_elem = iter_wo_stopasynciteration(
167167
await self.iterator.__anext__()
@@ -275,11 +275,11 @@ def _pop_full_group(self) -> Optional[Tuple[U, List[T]]]:
275275
return None
276276

277277
def _pop_first_group(self) -> Tuple[U, List[T]]:
278-
first_key: U = next(iter(self._groups_by), cast(U, ...))
278+
first_key: U = self._groups_by.__iter__().__next__()
279279
return first_key, self._groups_by.pop(first_key)
280280

281281
def _pop_largest_group(self) -> Tuple[U, List[T]]:
282-
largest_group_key: Any = next(iter(self._groups_by), ...)
282+
largest_group_key: Any = self._groups_by.__iter__().__next__()
283283

284284
for key, group in self._groups_by.items():
285285
if len(group) > len(self._groups_by[largest_group_key]):

streamable/iterators.py

Lines changed: 59 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ def __init__(
9090
def __next__(self) -> T:
9191
while True:
9292
try:
93-
return next(self.iterator)
93+
return self.iterator.__next__()
9494
except StopIteration:
9595
if self._to_be_finally_raised:
9696
try:
@@ -119,7 +119,7 @@ def __init__(
119119

120120
def __next__(self) -> T:
121121
while True:
122-
elem = next(self.iterator)
122+
elem = self.iterator.__next__()
123123
key = self.key(elem) if self.key else elem
124124
if key not in self._already_seen:
125125
break
@@ -138,7 +138,7 @@ def __init__(
138138

139139
def __next__(self) -> T:
140140
while True:
141-
elem = next(self.iterator)
141+
elem = self.iterator.__next__()
142142
key = self.key(elem) if self.key else elem
143143
if key != self._last_key:
144144
break
@@ -150,14 +150,16 @@ class FlattenIterator(Iterator[U]):
150150
def __init__(self, iterator: Iterator[Iterable[U]]) -> None:
151151
validate_iterator(iterator)
152152
self.iterator = iterator
153-
self._current_iterator_elem: Iterator[U] = iter(tuple())
153+
self._current_iterator_elem: Iterator[U] = tuple().__iter__()
154154

155155
def __next__(self) -> U:
156156
while True:
157157
try:
158-
return next(self._current_iterator_elem)
158+
return self._current_iterator_elem.__next__()
159159
except StopIteration:
160-
self._current_iterator_elem = iter_wo_stopiteration(next(self.iterator))
160+
self._current_iterator_elem = iter_wo_stopiteration(
161+
self.iterator.__next__()
162+
)
161163

162164

163165
class AFlattenIterator(Iterator[U], GetEventLoopMixin):
@@ -175,7 +177,7 @@ def __next__(self) -> U:
175177
)
176178
except StopAsyncIteration:
177179
self._current_iterator_elem = aiter_wo_stopiteration(
178-
next(self.iterator)
180+
self.iterator.__next__()
179181
)
180182

181183

@@ -233,7 +235,7 @@ def __next__(self) -> List[T]:
233235
while len(self._current_group) < self.size and (
234236
not self._interval_seconds_have_elapsed() or not self._current_group
235237
):
236-
self._current_group.append(next(self.iterator))
238+
self._current_group.append(self.iterator.__next__())
237239
except Exception as e:
238240
if not self._current_group:
239241
raise
@@ -258,7 +260,7 @@ def __init__(
258260
self._groups_by: DefaultDict[U, List[T]] = defaultdict(list)
259261

260262
def _group_next_elem(self) -> None:
261-
elem = next(self.iterator)
263+
elem = self.iterator.__next__()
262264
self._groups_by[self.key(elem)].append(elem)
263265

264266
def _pop_full_group(self) -> Optional[Tuple[U, List[T]]]:
@@ -268,11 +270,11 @@ def _pop_full_group(self) -> Optional[Tuple[U, List[T]]]:
268270
return None
269271

270272
def _pop_first_group(self) -> Tuple[U, List[T]]:
271-
first_key: U = next(iter(self._groups_by), cast(U, ...))
273+
first_key: U = self._groups_by.__iter__().__next__()
272274
return first_key, self._groups_by.pop(first_key)
273275

274276
def _pop_largest_group(self) -> Tuple[U, List[T]]:
275-
largest_group_key: Any = next(iter(self._groups_by), ...)
277+
largest_group_key: Any = self._groups_by.__iter__().__next__()
276278

277279
for key, group in self._groups_by.items():
278280
if len(group) > len(self._groups_by[largest_group_key]):
@@ -309,11 +311,11 @@ def __next__(self) -> Tuple[U, List[T]]:
309311

310312
except StopIteration:
311313
self._is_exhausted = True
312-
return next(self)
314+
return self.__next__()
313315

314316
except Exception as e:
315317
self._to_be_raised = e
316-
return next(self)
318+
return self.__next__()
317319

318320

319321
class CountSkipIterator(Iterator[T]):
@@ -328,11 +330,11 @@ def __init__(self, iterator: Iterator[T], count: int) -> None:
328330
def __next__(self) -> T:
329331
if not self._done_skipping:
330332
while self._n_skipped < self.count:
331-
next(self.iterator)
333+
self.iterator.__next__()
332334
# do not count exceptions as skipped elements
333335
self._n_skipped += 1
334336
self._done_skipping = True
335-
return next(self.iterator)
337+
return self.iterator.__next__()
336338

337339

338340
class PredicateSkipIterator(Iterator[T]):
@@ -343,10 +345,10 @@ def __init__(self, iterator: Iterator[T], until: Callable[[T], Any]) -> None:
343345
self._done_skipping = False
344346

345347
def __next__(self) -> T:
346-
elem = next(self.iterator)
348+
elem = self.iterator.__next__()
347349
if not self._done_skipping:
348350
while not self.until(elem):
349-
elem = next(self.iterator)
351+
elem = self.iterator.__next__()
350352
self._done_skipping = True
351353
return elem
352354

@@ -364,10 +366,10 @@ def __init__(
364366
self._done_skipping = False
365367

366368
def __next__(self) -> T:
367-
elem = next(self.iterator)
369+
elem = self.iterator.__next__()
368370
if not self._done_skipping:
369371
while self._n_skipped < self.count and not self.until(elem):
370-
elem = next(self.iterator)
372+
elem = self.iterator.__next__()
371373
# do not count exceptions as skipped elements
372374
self._n_skipped += 1
373375
self._done_skipping = True
@@ -385,7 +387,7 @@ def __init__(self, iterator: Iterator[T], count: int) -> None:
385387
def __next__(self) -> T:
386388
if self._current_count == self.count:
387389
raise StopIteration()
388-
elem = next(self.iterator)
390+
elem = self.iterator.__next__()
389391
self._current_count += 1
390392
return elem
391393

@@ -400,7 +402,7 @@ def __init__(self, iterator: Iterator[T], when: Callable[[T], Any]) -> None:
400402
def __next__(self) -> T:
401403
if self._satisfied:
402404
raise StopIteration()
403-
elem = next(self.iterator)
405+
elem = self.iterator.__next__()
404406
if self.when(elem):
405407
self._satisfied = True
406408
raise StopIteration()
@@ -436,7 +438,7 @@ def _log(self) -> None:
436438

437439
def __next__(self) -> T:
438440
try:
439-
elem = next(self.iterator)
441+
elem = self.iterator.__next__()
440442
self._n_nexts += 1
441443
self._n_yields += 1
442444
return elem
@@ -472,7 +474,7 @@ def __init__(
472474

473475
def safe_next(self) -> Tuple[Optional[T], Optional[Exception]]:
474476
try:
475-
return next(self.iterator), None
477+
return self.iterator.__next__(), None
476478
except StopIteration:
477479
raise
478480
except Exception as e:
@@ -513,7 +515,7 @@ def __init__(
513515
self.iterator = iterator
514516

515517
def __next__(self) -> T:
516-
elem = next(self.iterator)
518+
elem = self.iterator.__next__()
517519
if isinstance(elem, self.ExceptionContainer):
518520
raise elem.exception
519521
return elem
@@ -566,13 +568,17 @@ def __iter__(self) -> Iterator[Union[U, _RaisingIterator.ExceptionContainer]]:
566568
# queue tasks up to buffersize
567569
with suppress(StopIteration):
568570
while len(future_results) < self.buffersize:
569-
future_results.add_future(self._launch_task(next(self.iterator)))
571+
future_results.add_future(
572+
self._launch_task(self.iterator.__next__())
573+
)
570574

571575
# wait, queue, yield
572576
while future_results:
573-
result = next(future_results)
577+
result = future_results.__next__()
574578
with suppress(StopIteration):
575-
future_results.add_future(self._launch_task(next(self.iterator)))
579+
future_results.add_future(
580+
self._launch_task(self.iterator.__next__())
581+
)
576582
yield result
577583

578584

@@ -638,16 +644,14 @@ def __init__(
638644
via: "Literal['thread', 'process']",
639645
) -> None:
640646
super().__init__(
641-
iter(
642-
_ConcurrentMapIterable(
643-
iterator,
644-
transformation,
645-
concurrency,
646-
buffersize,
647-
ordered,
648-
via,
649-
)
650-
)
647+
_ConcurrentMapIterable(
648+
iterator,
649+
transformation,
650+
concurrency,
651+
buffersize,
652+
ordered,
653+
via,
654+
).__iter__()
651655
)
652656

653657

@@ -701,14 +705,12 @@ def __init__(
701705
ordered: bool,
702706
) -> None:
703707
super().__init__(
704-
iter(
705-
_ConcurrentAMapIterable(
706-
iterator,
707-
transformation,
708-
buffersize,
709-
ordered,
710-
)
711-
)
708+
_ConcurrentAMapIterable(
709+
iterator,
710+
transformation,
711+
buffersize,
712+
ordered,
713+
).__iter__()
712714
)
713715

714716

@@ -751,7 +753,7 @@ def __iter__(self) -> Iterator[Union[T, _RaisingIterator.ExceptionContainer]]:
751753
while len(iterator_and_future_pairs) < self.buffersize:
752754
if not iterator_to_queue:
753755
try:
754-
iterable = next(self.iterables_iterator)
756+
iterable = self.iterables_iterator.__next__()
755757
except StopIteration:
756758
break
757759
try:
@@ -776,13 +778,11 @@ def __init__(
776778
buffersize: int,
777779
) -> None:
778780
super().__init__(
779-
iter(
780-
_ConcurrentFlattenIterable(
781-
iterables_iterator,
782-
concurrency,
783-
buffersize,
784-
)
785-
)
781+
_ConcurrentFlattenIterable(
782+
iterables_iterator,
783+
concurrency,
784+
buffersize,
785+
).__iter__()
786786
)
787787

788788

@@ -828,7 +828,7 @@ def __iter__(self) -> Iterator[Union[T, _RaisingIterator.ExceptionContainer]]:
828828
while len(iterator_and_future_pairs) < self.buffersize:
829829
if not iterator_to_queue:
830830
try:
831-
iterable = next(self.iterables_iterator)
831+
iterable = self.iterables_iterator.__next__()
832832
except StopIteration:
833833
break
834834
try:
@@ -859,11 +859,9 @@ def __init__(
859859
buffersize: int,
860860
) -> None:
861861
super().__init__(
862-
iter(
863-
_ConcurrentAFlattenIterable(
864-
iterables_iterator,
865-
concurrency,
866-
buffersize,
867-
)
868-
)
862+
_ConcurrentAFlattenIterable(
863+
iterables_iterator,
864+
concurrency,
865+
buffersize,
866+
).__iter__()
869867
)

streamable/util/futuretools.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ class FutureResultCollection(Iterator[T], AsyncIterator[T], Sized, ABC):
2020
def add_future(self, future: "Future[T]") -> None: ...
2121

2222
async def __anext__(self) -> T:
23-
return next(self)
23+
return self.__next__()
2424

2525

2626
class DequeFutureResultCollection(FutureResultCollection[T]):

streamable/util/iterabletools.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ def __init__(self, iterable: Iterable[T]):
2525
self.iterable = iterable
2626

2727
def __iter__(self) -> Iterator[T]:
28-
return iter(self.iterable)
28+
return self.iterable.__iter__()
2929

3030
def __aiter__(self) -> AsyncIterator[T]:
3131
return SyncToAsyncIterator(self.iterable)
@@ -36,11 +36,11 @@ def __aiter__(self) -> AsyncIterator[T]:
3636

3737
class SyncToAsyncIterator(AsyncIterator[T]):
3838
def __init__(self, iterator: Iterable[T]):
39-
self.iterator: Iterator[T] = iter(iterator)
39+
self.iterator: Iterator[T] = iterator.__iter__()
4040

4141
async def __anext__(self) -> T:
4242
try:
43-
return next(self.iterator)
43+
return self.iterator.__next__()
4444
except StopIteration as e:
4545
raise StopAsyncIteration() from e
4646

streamable/visitors/iterator.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -216,13 +216,13 @@ def visit_atruncate_stream(self, stream: ATruncateStream[T]) -> Iterator[T]:
216216

217217
def visit_stream(self, stream: Stream[T]) -> Iterator[T]:
218218
if isinstance(stream.source, Iterable):
219-
return iter(stream.source)
219+
return stream.source.__iter__()
220220
if isinstance(stream.source, AsyncIterable):
221221
return async_to_sync_iter(stream.source)
222222
if callable(stream.source):
223223
iterable = stream.source()
224224
if isinstance(iterable, Iterable):
225-
return iter(iterable)
225+
return iterable.__iter__()
226226
if isinstance(iterable, AsyncIterable):
227227
return async_to_sync_iter(iterable)
228228
raise TypeError(

0 commit comments

Comments
 (0)