21 lines
516 B
Python
21 lines
516 B
Python
from my.core import __NOT_HPI_MODULE__
|
|
|
|
from itertools import chain
|
|
from typing import Iterator, Any
|
|
|
|
from more_itertools import unique_everseen
|
|
|
|
|
|
# TODO add proper Protocol for Tweet
|
|
Tweet = Any
|
|
|
|
|
|
from my.core import warn_if_empty, Res
|
|
@warn_if_empty
|
|
def merge_tweets(*sources: Iterator[Res[Tweet]]) -> Iterator[Res[Tweet]]:
|
|
def key(r: Res[Tweet]):
|
|
if isinstance(r, Exception):
|
|
return str(r)
|
|
else:
|
|
return r.id_str
|
|
yield from unique_everseen(chain(*sources), key=key)
|