[compat] Allow overriding by only COLUMNS or LINES in compat_get_terminal_size
Now the semantic of this function is identical to
shutil.get_terminal_size() in Python 3.3+. The new behavior also
corresponds to the old get_term_width(), which is removed in
003c69a84b
			
			
This commit is contained in:
		
				
					committed by
					
						
						Jaime Marquínez Ferrándiz
					
				
			
			
				
	
			
			
			
						parent
						
							5495937f46
						
					
				
				
					commit
					13118a50b8
				
			@@ -416,7 +416,7 @@ if hasattr(shutil, 'get_terminal_size'):  # Python >= 3.3
 | 
			
		||||
else:
 | 
			
		||||
    _terminal_size = collections.namedtuple('terminal_size', ['columns', 'lines'])
 | 
			
		||||
 | 
			
		||||
    def compat_get_terminal_size():
 | 
			
		||||
    def compat_get_terminal_size(fallback=(80, 24)):
 | 
			
		||||
        columns = compat_getenv('COLUMNS', None)
 | 
			
		||||
        if columns:
 | 
			
		||||
            columns = int(columns)
 | 
			
		||||
@@ -428,14 +428,20 @@ else:
 | 
			
		||||
        else:
 | 
			
		||||
            lines = None
 | 
			
		||||
 | 
			
		||||
        try:
 | 
			
		||||
            sp = subprocess.Popen(
 | 
			
		||||
                ['stty', 'size'],
 | 
			
		||||
                stdout=subprocess.PIPE, stderr=subprocess.PIPE)
 | 
			
		||||
            out, err = sp.communicate()
 | 
			
		||||
            lines, columns = map(int, out.split())
 | 
			
		||||
        except Exception:
 | 
			
		||||
            pass
 | 
			
		||||
        if columns <= 0 or lines <= 0:
 | 
			
		||||
            try:
 | 
			
		||||
                sp = subprocess.Popen(
 | 
			
		||||
                    ['stty', 'size'],
 | 
			
		||||
                    stdout=subprocess.PIPE, stderr=subprocess.PIPE)
 | 
			
		||||
                out, err = sp.communicate()
 | 
			
		||||
                _columns, _lines = map(int, out.split())
 | 
			
		||||
            except Exception:
 | 
			
		||||
                _columns, _lines = _terminal_size(*fallback)
 | 
			
		||||
 | 
			
		||||
            if columns <= 0:
 | 
			
		||||
                columns = _columns
 | 
			
		||||
            if lines <= 0:
 | 
			
		||||
                lines = _lines
 | 
			
		||||
        return _terminal_size(columns, lines)
 | 
			
		||||
 | 
			
		||||
try:
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user