mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 05:31:20 +00:00 
			
		
		
		
	
		
			
	
	
		
			47 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			47 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|   | 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 |