mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 05:53:43 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			49 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
from __future__ import print_function
 | 
						|
from __future__ import absolute_import
 | 
						|
 | 
						|
import subprocess
 | 
						|
 | 
						|
from .printer import print_err, colors
 | 
						|
 | 
						|
from typing import Any, Dict, List
 | 
						|
 | 
						|
suppress_patterns = [
 | 
						|
    (b'', b'imported but unused'),
 | 
						|
    (b'', b'redefinition of unused'),
 | 
						|
 | 
						|
    # Our ipython startup pythonrc file intentionally imports *
 | 
						|
    (b"scripts/lib/pythonrc.py",
 | 
						|
     b" import *' used; unable to detect undefined names"),
 | 
						|
 | 
						|
    # Special dev_settings.py import
 | 
						|
    (b'', b"from .prod_settings_template import *"),
 | 
						|
 | 
						|
    (b"settings.py", b"settings import *' used; unable to detect undefined names"),
 | 
						|
    (b"settings.py", b"may be undefined, or defined from star imports"),
 | 
						|
 | 
						|
    # Sphinx adds `tags` specially to the environment when running conf.py.
 | 
						|
    (b"docs/conf.py", b"undefined name 'tags'"),
 | 
						|
]
 | 
						|
 | 
						|
def suppress_line(line: str) -> bool:
 | 
						|
    for file_pattern, line_pattern in suppress_patterns:
 | 
						|
        if file_pattern in line and line_pattern in line:
 | 
						|
            return True
 | 
						|
    return False
 | 
						|
 | 
						|
def check_pyflakes(options, by_lang):
 | 
						|
    # type: (Any, Dict[str, List[str]]) -> bool
 | 
						|
    if len(by_lang['py']) == 0:
 | 
						|
        return False
 | 
						|
    failed = False
 | 
						|
    color = next(colors)
 | 
						|
    pyflakes = subprocess.Popen(['pyflakes'] + by_lang['py'],
 | 
						|
                                stdout=subprocess.PIPE,
 | 
						|
                                stderr=subprocess.PIPE)
 | 
						|
    assert pyflakes.stdout is not None  # Implied by use of subprocess.PIPE
 | 
						|
    for ln in pyflakes.stdout.readlines() + pyflakes.stderr.readlines():
 | 
						|
        if options.full or not suppress_line(ln):
 | 
						|
            print_err('pyflakes', color, ln)
 | 
						|
            failed = True
 | 
						|
    return failed
 |