add typing to imap_recent_messages

This commit is contained in:
Daniel 2023-12-08 16:02:04 +01:00
parent 4b619b564c
commit f9ca93bfe6

View file

@ -5,9 +5,11 @@ import os
import re
from datetime import datetime, timedelta
from pathlib import Path
from typing import Protocol, TypedDict
import pytest
from dotenv import dotenv_values
from icecream import ic
from imbox import Imbox # type: ignore
from playwright.sync_api import BrowserContext, expect
from pytest import Parser
@ -116,16 +118,37 @@ def imap_client() -> None:
imbox.logout()
class Body(TypedDict):
plain: list
html: list
class Message(Protocol):
sent_from: list
sent_to: list
subject: str
headers: list
date: str
body: Body
@pytest.fixture
def imap_recent_messages(imap_client: Imbox, n_minutes: int):
def imap_recent_messages(imap_client: Imbox) -> list[Message]:
"""Get all messages from [n_minutes] ago till now.
# iterate with
for uid, message in messages:
print(uid, message.subject, message.date)"""
n_minutes_ago = datetime.now() - timedelta(minutes=n_minutes)
uids_and_messages = imap_client.messages(date__gt=n_minutes_ago)
uids, messages = zip(*uids_and_messages)
print(type(messages))
N_MINUTES = 30
n_minutes_ago = datetime.now() - timedelta(minutes=N_MINUTES)
uids: list[bytes] = []
messages: list[Message] = []
# for uid, message in imap_client.messages(date__gt=n_minutes_ago):
for uid, message in imap_client.messages():
ic("one time")
uids.append(uid)
messages.append(message)
return messages