def main(): parser = parse_args.make_parser() args = parser.parse_args(sys.argv[1:]) if args.version: print(io.get_pytype_version()) sys.exit(0) tool_utils.setup_logging_or_die(args.verbosity) if args.generate_config: config.generate_sample_config_or_die(args.generate_config) sys.exit(0) args.filenames = file_utils.expand_source_files(args.filenames) conf = parser.config_from_defaults() # File options overwrite defaults. file_config = config.read_config_file_or_die(args.config) parser.postprocess(file_config, from_strings=True) conf.populate_from(file_config) # Command line arguments overwrite file options. conf.populate_from(args) if not conf.pythonpath: conf.pythonpath = environment.compute_pythonpath(args.filenames) logging.info('\n '.join(['Configuration:'] + str(conf).split('\n'))) if not args.filenames: parser.parser.print_usage() sys.exit(0) # Importlab needs the python exe, so we check it as early as possible. environment.check_python_exe_or_die(conf.python_version) typeshed = environment.initialize_typeshed_or_die() env = create_importlab_environment(conf, typeshed) try: import_graph = importlab.graph.ImportGraph.create(env, args.filenames) except Exception as e: # pylint: disable=broad-except logging.critical('Cannot parse input files:\n%s', str(e)) sys.exit(1) if args.tree: print('Source tree:') importlab.output.print_tree(import_graph) sys.exit(0) if args.unresolved: print('Unresolved dependencies:') for imp in sorted(import_graph.get_all_unresolved()): print(' ', imp.name) sys.exit(0) logging.info('Source tree:\n%s', importlab.output.formatted_deps_list(import_graph)) tool_utils.makedirs_or_die(conf.output, 'Could not create output directory') deps = pytype_runner.deps_from_import_graph(import_graph) runner = pytype_runner.PytypeRunner(args.filenames, deps, conf) runner.run()
def main(): parser = parse_args.make_parser() args = parser.parse_args(sys.argv[1:]) if args.version: print(io.get_pytype_version()) sys.exit(0) tool_utils.setup_logging_or_die(args.verbosity) if args.generate_config: config.generate_sample_config_or_die(args.generate_config, parser.pytype_single_args) sys.exit(0) conf = parser.config_from_defaults() # File options overwrite defaults. file_config = config.read_config_file_or_die(args.config) parser.postprocess(file_config, from_strings=True) conf.populate_from(file_config) # Command line arguments overwrite file options. conf.populate_from(args) conf.inputs -= conf.exclude if args.no_cache: conf.output = tempfile.mkdtemp() if not conf.pythonpath: conf.pythonpath = environment.compute_pythonpath(conf.inputs) logging.info('\n '.join(['Configuration:'] + str(conf).split('\n'))) if not conf.inputs: parser.parser.error('Need an input.') # Importlab needs the python exe, so we check it as early as possible. environment.check_python_exe_or_die(conf.python_version) typeshed = environment.initialize_typeshed_or_die() env = analyze_project_env.create_importlab_environment(conf, typeshed) print('Computing dependencies') import_graph = importlab.graph.ImportGraph.create(env, conf.inputs, trim=True) if args.tree: print('Source tree:') importlab.output.print_tree(import_graph) sys.exit(0) if args.unresolved: print('Unresolved dependencies:') for imp in sorted(import_graph.get_all_unresolved()): print(' ', imp.name) sys.exit(0) # Main usage mode: analyze the project file by file in dependency order. logging.info('Source tree:\n%s', importlab.output.formatted_deps_list(import_graph)) tool_utils.makedirs_or_die(conf.output, 'Could not create output directory') deps = pytype_runner.deps_from_import_graph(import_graph) runner = pytype_runner.PytypeRunner(conf, deps) return runner.run()
def test_set_level(self): # Log level can't actually be set in a test, so we're just testing that the # code doesn't blow up. tool_utils.setup_logging_or_die(0) tool_utils.setup_logging_or_die(1) tool_utils.setup_logging_or_die(2)
def test_excessive_verbosity(self): with self.assertRaises(SystemExit): tool_utils.setup_logging_or_die(3)