From: Karl Wiberg Date: Sun, 29 Nov 2009 21:54:25 GMT Subject: Re: [PATCH 5/6] stg mail: add basic support for git send-email Message-ID: In-Reply-To: <20091128195037.949.63611.stgit@bob.kio> On Sat, Nov 28, 2009 at 8:50 PM, Alex Chiang wrote: > +    # XXX: yuck, there's gotta be a more pythonic way. Ideally we'd like > +    # to use the git_opts dictionary as our mapping between stg mail and > +    # git send-email; extract k, v pairs from git_opts, and use those > +    # to iterate across options somehow. > +    git_opts = { 'to': '--to=', 'cc': '--cc=', 'bcc': '--bcc=' } > +    if options.to: > +        for a in options.to: > +            cmd.append("--to=%s" % a) > +    if options.cc: > +        for a in options.cc: > +            cmd.append("--cc=%s" % a) > +    if options.bcc: > +        for a in options.bcc: > +            cmd.append("--bcc=%s" % a) > +    if not options.auto: > +        cmd.append("--suppress-cc=body") Like this? for x in ['to', 'cc', 'bcc']: if getattr(options, x): cmd.extend('--%s=%s' % (x, a) for a in getattr(options, x)) > +    (fd, path) = mkstemp() > +    os.write(fd, msg.as_string(options.mbox)) > +    os.close(fd) > + > +    try: > +        cmd.append(path) > +        call(cmd) > +    except Exception, err: > +        os.unlink(path) > +        raise CmdException, str(err) > + > +    os.unlink(path) To avoid having to remember to call unlink in all paths, you can write try: try: cmd.append(path) call(cmd) except Exception, e: raise CmdException(str(e)) finally: os.unlink(path) (The combined try...except...finally statement didn't appear until python 2.5, but we'd like to stay compatible with 2.4.) -- Karl Wiberg, kha@treskal.com subrabbit.wordpress.com www.treskal.com/kalle