On Thu, May 14, 2015 at 4:34 AM, Tim Chase <python.l...@tim.thechases.com> wrote: > Usually mine look something like > > def do_real_work(options, args): > ... > def main(): > parser = [optparse,argparse,docopt].... > options, args = parser.parse_args() > do_real_work(options, args) > if __name__ == "__main__": > main() > > since my real-work function usually relies on configuration > (sometimes this also includes a config-file or environment variables > being munged into some "options" data structure). >
Sure. I rather dislike the whole duplication that that entails, though, so I try to have the functions themselves do their own argparse config. To that end, I put together a new project on PyPI, but have now deprecated it in favour of Clize; the upshot is that my main function becomes trivial again: https://github.com/Rosuav/LetMeKnow/blob/master/letmeknow.py @command def await(...): """argparse config comes from here""" if __name__ == "__main__": clize.run(commands) So it comes and goes a bit. If there's real content in your main(), then by all means, separate it out from do_real_work; but if the work is all done elsewhere, not much point with main(). ChrisA -- https://mail.python.org/mailman/listinfo/python-list