#!/home/walkers/git/creeper-adventure/.venv/bin/python3 """ collect-imports *.py collect-imports < foo.py Collect all imports from named files or stdin, and combine them into a single block of import statements. Print the result to stdout. """ # pyflyby/collect-imports # Copyright (C) 2011, 2014 Karl Chen. # License: MIT http://opensource.org/licenses/MIT from __future__ import absolute_import, division, with_statement import re import sys from pyflyby._cmdline import filename_args, hfmt, parse_args from pyflyby._importclns import ImportSet from pyflyby._importdb import ImportDB def main(): def addopts(parser): parser.add_option("--ignore-known", default=False, action='store_true', help=hfmt(''' Don't list imports already in the known-imports database.''')) parser.add_option("--no-ignore-known", dest="ignore_known", action='store_false', help=hfmt(''' (Default) List all imports, including those already in the known-imports database.''')) parser.add_option("--include", default=[], action="append", help=hfmt(''' Include only imports under the given package.''')) options, args = parse_args(addopts, import_format_params=True) filenames = filename_args(args) importset = ImportSet(filenames, ignore_nonimports=True) if options.include: regexps = [ re.escape(prefix) if prefix.endswith(".") else re.escape(prefix) + "([.]|$)" for prefix in options.include ] regexp = re.compile("|".join(regexps)) match = lambda imp: regexp.match(imp.fullname) importset = ImportSet([imp for imp in importset if match(imp)]) if options.ignore_known: db = ImportDB.get_default(".") importset = importset.without_imports(db.known_imports) sys.stdout.write(importset.pretty_print( allow_conflicts=True, params=options.params)) if __name__ == '__main__': main()