From: Alex Chiang Date: Mon, 30 Nov 2009 23:59:35 GMT Subject: Re: [PATCH 3/6] stg mail: make __send_message do more Message-ID: <20091130235935.GK12733@ldl.fc.hp.com> In-Reply-To: * Karl Wiberg : > On Sat, Nov 28, 2009 at 8:50 PM, Alex Chiang wrote: > > > Factor out the common code required to send either a cover mail > > or patch, and implement it in __send_message. > > Nice code size reduction. Thanks. > > +    msg_id = email.Utils.make_msgid('stgit') > > +    build = { 1: __build_cover, 4: __build_message } > > +    msg = build[len(args)](tmpl, msg_id, options, *args) > > + > > +    from_addr, to_addrs = __parse_addresses(msg) > > +    msg_str = msg.as_string(options.mbox) > > +    if options.mbox: > > +        out.stdout_raw(msg_str + '\n') > > +        return msg_id > > + > > +    outstr = { 1: 'the cover message', 4: 'patch "%s"' % args[0] } > > +    out.start('Sending ' + outstr[len(args)]) > > You could consolidate the two dictionaries like this, to avoid making > the same choice twice and make the code more pleasant to read: > > (build, outstr) = { 1: (__build_cover, 'the cover message'), 4: > (__build_message, 'patch "%s"' % args[0]) } Hm, I don't think that's valid. I ended up doing something like this: d = { 'cover': (__build_cover, 'the cover message'), 'patch': (__build_message, 'patch "%s"' % args[0]) } (build, outstr) = d[type] > > +    # give recipients a chance of receiving related patches in correct order > > +    #                                       patch_nr < total_nr > > +    if len(args) == 1 or (len(args) == 4 and args[1] < args[2]): > > +        sleep = options.sleep or config.getint('stgit.smtpdelay') > > +        time.sleep(sleep) > > Hmm. I must say I find all the args[x] a bit hard to read. I'd prefer > symbolic names. Ok, I changed this up. Thanks for the review. /ac