Re: [PATCH 3/6] stg mail: make __send_message do more
- From
- Alex Chiang <achiang@hp.com>
- Date
- Nov 30, 2009, 23:59 UTC
- Message-ID
- <20091130235935.GK12733@ldl.fc.hp.com>
- In-Reply-To
- <b8197bcb0911291323l35cb3624td3cbc393bf4513b3@mail.gmail.com>
* Karl Wiberg <kha@treskal.com>:
Show 6 quoted lines
> On Sat, Nov 28, 2009 at 8:50 PM, Alex Chiang <achiang@hp.com> 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.
Show 18 quoted lines
> > + 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]Show 8 quoted lines
> > + # 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