Searching for open bugs in a launchpad project

The launchpad API docs are OMG terrible, and it took me way too long to work out how to do this, so I thought I’d document it for later. Here’s how you list all the open bugs in a launchpad project using the API:

    #!/usr/bin/python
    
    import argparse
    import os
    
    from launchpadlib import launchpad
    
    LP_INSTANCE = 'production'
    CACHE_DIR = os.path.expanduser('~/.launchpadlib/cache/')
    
    def main(username, project):
        lp = launchpad.Launchpad.login_with(username, LP_INSTANCE, CACHE_DIR)
        for bug in lp.projects[project].searchTasks(status=["New",
                                                            "Incomplete",
                                                            "Confirmed",
                                                            "Triaged",
                                                            "In Progress"]):
            print bug
    
    if __name__ == '__main__':
        parser = argparse.ArgumentParser(description='Fetch bugs from launchpad')
        parser.add_argument('--username')
        parser.add_argument('--project')
        args = parser.parse_args()
    
        main(args.username, args.project)