git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 3/6] stg mail: make __send_message do more

From
ACAlex 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

Previous: Karl WibergNext: Karl Wiberg
Message 8 of 18 in “add support for git send-email”
  1. 0/6 add support for git send-emailAlex Chiang, Nov 28, 2009
  2. 1/6 stg mail: Refactor __send_message and friendsAlex Chiang, Nov 28, 2009
  3. Karl WibergNov 29, 2009
  4. Alex ChiangNov 30, 2009
  5. 2/6 stg mail: reorder __build_[message|cover] parametersAlex Chiang, Nov 28, 2009
  6. 3/6 stg mail: make __send_message do moreAlex Chiang, Nov 28, 2009
  7. Karl WibergNov 29, 2009
  8. Alex ChiangNov 30, 2009
  9. Karl WibergDec 1, 2009
  10. 4/6 stg mail: factor out __update_headerAlex Chiang, Nov 28, 2009
  11. 5/6 stg mail: add basic support for git send-emailAlex Chiang, Nov 28, 2009
  12. Karl WibergNov 29, 2009
  13. Alex ChiangDec 1, 2009
  14. Karl WibergDec 1, 2009
  15. 6/6 stg mail: don't parse To/Cc/Bcc in --git modeAlex Chiang, Nov 28, 2009
  16. Karl WibergNov 29, 2009
  17. Alex ChiangDec 1, 2009
  18. Karl WibergDec 1, 2009

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.