def METHOD_NAME(
    subject,
    text_template,
    html_template,
    context_vars,
    users_and_watches,
    from_email=settings.TIDINGS_FROM_ADDRESS,
    default_locale=settings.WIKI_DEFAULT_LANGUAGE,
    **extra_kwargs,
):
    """Return iterable of EmailMessages with user and watch values substituted.
    A convenience function for generating emails by repeatedly
    rendering a Django template with the given ``context_vars`` plus a
    ``user`` and ``watches`` key for each pair in
    ``users_and_watches``
    :arg subject: lazy gettext subject string
    :arg text_template: path to text template file
    :arg html_template: path to html template file
    :arg context_vars: a map which becomes the Context passed in to the
        template and the subject string
    :arg from_email: the from email address
    :arg default_local: the local to default to if not user.profile.locale
    :arg extra_kwargs: additional kwargs to pass into EmailMessage constructor
    :returns: generator of EmailMessage objects
    """
    @safe_translation
    def _make_mail(locale, user, watch):
        context_vars["user"] = user
        context_vars["watch"] = watch[0]
        context_vars["watches"] = watch
        mail = make_mail(
            subject.format(**context_vars),
            text_template,
            html_template,
            context_vars,
            from_email,
            user.email,
            **extra_kwargs,
        )
        return mail
    for u, w in users_and_watches:
        if hasattr(u, "profile"):
            locale = u.profile.locale
        else:
            locale = default_locale
        yield _make_mail(locale, u, w)