from anyio.functools import lru_cache from src.application.contracts.i_sender import ISender from src.infrastructure.config import settings from src.infrastructure.mail.render import TemplateRenderer from src.infrastructure.mail.sender import EmailSender @lru_cache(maxsize=1) def get_renderer() -> TemplateRenderer: return TemplateRenderer() @lru_cache(maxsize=1) def get_email_sender() -> ISender: return EmailSender( host=settings.SMTP_HOST, port=settings.SMTP_PORT, username=str(settings.SMTP_USER), password=settings.SMTP_PASSWORD, from_addr=settings.SMTP_FROM, )