mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 11:49:12 +00:00 
			
		
		
		
	Like #28744 but for the Tools directory. [skip issue] Opening a related issue is pending python/psf-infra-meta#130 Automerge-Triggered-By: GH:pablogsal
		
			
				
	
	
		
			42 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
import logging
 | 
						|
 | 
						|
 | 
						|
logger = logging.getLogger(__name__)
 | 
						|
 | 
						|
 | 
						|
def unrepr(value):
 | 
						|
    raise NotImplementedError
 | 
						|
 | 
						|
 | 
						|
def parse_entries(entries, *, ignoresep=None):
 | 
						|
    for entry in entries:
 | 
						|
        if ignoresep and ignoresep in entry:
 | 
						|
            subentries = [entry]
 | 
						|
        else:
 | 
						|
            subentries = entry.strip().replace(',', ' ').split()
 | 
						|
        for item in subentries:
 | 
						|
            if item.startswith('+'):
 | 
						|
                filename = item[1:]
 | 
						|
                try:
 | 
						|
                    infile = open(filename)
 | 
						|
                except FileNotFoundError:
 | 
						|
                    logger.debug(f'ignored in parse_entries(): +{filename}')
 | 
						|
                    return
 | 
						|
                with infile:
 | 
						|
                    # We read the entire file here to ensure the file
 | 
						|
                    # gets closed sooner rather than later.  Note that
 | 
						|
                    # the file would stay open if this iterator is never
 | 
						|
                    # exhausted.
 | 
						|
                    lines = infile.read().splitlines()
 | 
						|
                for line in _iter_significant_lines(lines):
 | 
						|
                    yield line, filename
 | 
						|
            else:
 | 
						|
                yield item, None
 | 
						|
 | 
						|
 | 
						|
def _iter_significant_lines(lines):
 | 
						|
    for line in lines:
 | 
						|
        line = line.partition('#')[0]
 | 
						|
        if not line.strip():
 | 
						|
            continue
 | 
						|
        yield line
 |