pylint/checkers/similar.py
def stripped_lines(lines, ignore_comments, ignore_docstrings, ignore_imports):
    """return lines with leading/trailing whitespace and any ignored code
    features removed
    """
    if ignore_imports:
        tree = astroid.parse("".join(lines))
        node_is_import_by_lineno = (
            (node.lineno, isinstance(node, (astroid.Import, astroid.ImportFrom)))
            for node in tree.body
        )
        line_begins_import = {
            lineno: all(is_import for _, is_import in node_is_import_group)
            for lineno, node_is_import_group in groupby(
                node_is_import_by_lineno, key=lambda x: x[0]
            )
        }
        current_line_is_import = False

    strippedlines = []
    docstring = None
    for lineno, line in enumerate(lines, start=1):
        line = line.strip()
        if ignore_docstrings:
            if not docstring and any(
                line.startswith(i) for i in ['"""', "'''", 'r"""', "r'''"]
            ):
                docstring = line[:3]
                line = line[3:]
            if docstring:
                if line.endswith(docstring):
                    docstring = None
                line = ""
        if ignore_imports:
            current_line_is_import = line_begins_import.get(
                lineno, current_line_is_import
            )
            if current_line_is_import:
                line = ""
        if ignore_comments:
            # XXX should use regex in checkers/format to avoid cutting
            # at a "#" in a string
            line = line.split("#", 1)[0].strip()
        strippedlines.append(line)
    return strippedlines
def stripped_lines(lines, ignore_comments, ignore_docstrings, ignore_imports):
    """return lines with leading/trailing whitespace and any ignored code
    features removed
    """
    if ignore_imports:
        tree = astroid.parse("".join(lines))
        node_is_import_by_lineno = (
            (node.lineno, isinstance(node, (astroid.Import, astroid.ImportFrom)))
            for node in tree.body
        )
        line_begins_import = {
            lineno: all(is_import for _, is_import in node_is_import_group)
            for lineno, node_is_import_group in groupby(
                node_is_import_by_lineno, key=lambda x: x[0]
            )
        }
        current_line_is_import = False

    strippedlines = []
    docstring = None
    for lineno, line in enumerate(lines, start=1):
        line = line.strip()
        if ignore_docstrings:
            if not docstring and any(
                line.startswith(i) for i in ['"""', "'''", 'r"""', "r'''"]
            ):
                docstring = line[:3]
                line = line[3:]
            if docstring:
                if line.endswith(docstring):
                    docstring = None
                line = ""
        if ignore_imports:
            current_line_is_import = line_begins_import.get(
                lineno, current_line_is_import
            )
            if current_line_is_import:
                line = ""
        if ignore_comments:
            # XXX should use regex in checkers/format to avoid cutting
            # at a "#" in a string
            line = line.split("#", 1)[0].strip()
        strippedlines.append(line)
    return strippedlines
def stripped_lines ( lines , ignore_comments , ignore_docstrings , ignore_imports ) : if ignore_imports : tree = astroid . parse ( "" . join ( lines ) ) node_is_import_by_lineno = ( ( node . lineno , isinstance ( node , ( astroid . Import , astroid . ImportFrom ) ) ) for node in tree . body ) line_begins_import = { lineno : all ( is_import for _ , is_import in node_is_import_group ) for lineno , node_is_import_group in groupby ( node_is_import_by_lineno , key = lambda x : x [ 0 ] ) } current_line_is_import = False strippedlines = [ ] docstring = None for lineno , line in enumerate ( lines , start = 1 ) : line = line . strip ( ) if ignore_docstrings : if not docstring and any ( line . startswith ( i ) for i in [ '"""' , "'''" , 'r"""' , "r'''" ] ) : docstring = line [ : 3 ] line = line [ 3 : ] if docstring : if line . endswith ( docstring ) : docstring = None line = "" if ignore_imports : current_line_is_import = line_begins_import . get ( lineno , current_line_is_import ) if current_line_is_import : line = "" if ignore_comments : # XXX should use regex in checkers/format to avoid cutting # at a "#" in a string line = line . split ( "#" , 1 ) [ 0 ] . strip ( ) strippedlines . append ( line ) return strippedlines
return lines with leading/trailing whitespace and any ignored code
    features removed
return lines with leading / trailing whitespace and any ignored code features removed