from .parser import parse as _parse from .preprocessor import get_preprocessor as _get_preprocessor def parse_file(filename, *, match_kind=None, get_file_preprocessor=None, ): if get_file_preprocessor is None: get_file_preprocessor = _get_preprocessor() yield from _parse_file(filename, match_kind, get_file_preprocessor) def parse_files(filenames, *, match_kind=None, get_file_preprocessor=None, ): if get_file_preprocessor is None: get_file_preprocessor = _get_preprocessor() for filename in filenames: yield from _parse_file(filename, match_kind, get_file_preprocessor) def _parse_file(filename, match_kind, get_file_preprocessor): # Preprocess the file. preprocess = get_file_preprocessor(filename) preprocessed = preprocess() if preprocessed is None: return # Parse the lines. srclines = ((l.file, l.data) for l in preprocessed if l.kind == 'source') for item in _parse(srclines): if match_kind is not None and not match_kind(item.kind): continue if not item.filename: raise NotImplementedError(repr(item)) yield item def parse_signature(text): raise NotImplementedError # aliases from .info import resolve_parsed