<commit_before>import argparse
import smtplib
import os
import getpass
from email.mime.text import MIMEText

import sys
sys.path.insert(0, '..')
from conf import work_dir
from options import cfg2dict
from build_template import _from_template


args = None
password = <PASSWORD>


def parse_args():
    parser = argparse.ArgumentParser(description="Invite reviewers.")
    parser.add_argument('--send', action='store_true')
    parser.add_argument('--template', default=None)

    global args
    args = parser.parse_args()
    args.dry_run = not args.send

    if args.dry_run:
        print('*** This is a dry run.  Use --send to send emails.')

    return args


def load_config(conf_file):
    return cfg2dict(conf_file)


def get_password(sender):
    global password<commit_msg>adds function to generate nice-looking email greeting to mailer utilities<commit_after>import argparse
import smtplib
import os
import getpass
from email.mime.text import MIMEText

import sys
sys.path.insert(0, '..')
from conf import work_dir
from options import cfg2dict
from build_template import _from_template


args = None
password = <PASSWORD>

def author_greeting(names):
    if len(names) == 1:
        return names[0]
    else:
        return ', '.join(names[:-1]) + ', and ' + names[-1]

def parse_args():
    parser = argparse.ArgumentParser(description="Invite reviewers.")
    parser.add_argument('--send', action='store_true')
    parser.add_argument('--template', default=None)

    global args
    args = parser.parse_args()
    args.dry_run = not args.send

    if args.dry_run:
        print('*** This is a dry run.  Use --send to send emails.')

    return args


def load_config(conf_file):
    return cfg2dict(conf_file)


def get_password(sender):
    global password
{'fraction_non_alphanumeric': 0.1038374717832957, 'fraction_numerical': 0.0056433408577878106, 'mean_word_length': 3.7661290322580645, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5077670', 'n_tokens_mistral': 560, 'n_tokens_neox': 540, 'n_words': 160}