The following issues were found

Lib/distutils/file_util.py
30 issues
Consider explicitly re-raising using the 'from' keyword
Error

Line: 31 Column: 13

                      try:
            fsrc = open(src, 'rb')
        except OSError as e:
            raise DistutilsFileError("could not open '%s': %s" % (src, e.strerror))

        if os.path.exists(dst):
            try:
                os.unlink(dst)
            except OSError as e:

            

Reported by Pylint.

Consider explicitly re-raising using the 'from' keyword
Error

Line: 37 Column: 17

                          try:
                os.unlink(dst)
            except OSError as e:
                raise DistutilsFileError(
                      "could not delete '%s': %s" % (dst, e.strerror))

        try:
            fdst = open(dst, 'wb')
        except OSError as e:

            

Reported by Pylint.

Consider explicitly re-raising using the 'from' keyword
Error

Line: 43 Column: 13

                      try:
            fdst = open(dst, 'wb')
        except OSError as e:
            raise DistutilsFileError(
                  "could not create '%s': %s" % (dst, e.strerror))

        while True:
            try:
                buf = fsrc.read(buffer_size)

            

Reported by Pylint.

Consider explicitly re-raising using the 'from' keyword
Error

Line: 50 Column: 17

                          try:
                buf = fsrc.read(buffer_size)
            except OSError as e:
                raise DistutilsFileError(
                      "could not read from '%s': %s" % (src, e.strerror))

            if not buf:
                break


            

Reported by Pylint.

Consider explicitly re-raising using the 'from' keyword
Error

Line: 59 Column: 17

                          try:
                fdst.write(buf)
            except OSError as e:
                raise DistutilsFileError(
                      "could not write to '%s': %s" % (dst, e.strerror))
    finally:
        if fdst:
            fdst.close()
        if fsrc:

            

Reported by Pylint.

XXX if the destination file already exists, we clobber it if
Error

Line: 93 Column: 3

                  the output file, and 'copied' is true if the file was copied (or would
    have been copied, if 'dry_run' true).
    """
    # XXX if the destination file already exists, we clobber it if
    # copying, but blow up if linking.  Hmmm.  And I don't know what
    # macostools.copyfile() does.  Should definitely be consistent, and
    # should probably blow up if destination exists and we would be
    # changing it (ie. it's not already a hard/soft link to src OR
    # (not update) and (src newer than dst).

            

Reported by Pylint.

Redefining built-in 'dir'
Error

Line: 108 Column: 9

                            "can't copy '%s': doesn't exist or not a regular file" % src)

    if os.path.isdir(dst):
        dir = dst
        dst = os.path.join(dst, os.path.basename(src))
    else:
        dir = os.path.dirname(dst)

    if update and not newer(src, dst):

            

Reported by Pylint.

Consider explicitly re-raising using the 'from' keyword
Error

Line: 121 Column: 9

                  try:
        action = _copy_action[link]
    except KeyError:
        raise ValueError("invalid value '%s' for 'link' argument" % link)

    if verbose >= 1:
        if os.path.basename(dst) == os.path.basename(src):
            log.info("%s %s -> %s", action, src, dir)
        else:

            

Reported by Pylint.

XXX I suspect this is Unix-specific -- need porting help!
Error

Line: 165 Column: 3

                  return (dst, 1)


# XXX I suspect this is Unix-specific -- need porting help!
def move_file (src, dst,
               verbose=1,
               dry_run=0):

    """Move a file 'src' to 'dst'.  If 'dst' is a directory, the file will

            

Reported by Pylint.

Possible unbalanced tuple unpacking with sequence: left side has 2 label(s), right side has 1 value(s)
Error

Line: 205 Column: 9

                  try:
        os.rename(src, dst)
    except OSError as e:
        (num, msg) = e.args
        if num == errno.EXDEV:
            copy_it = True
        else:
            raise DistutilsFileError(
                  "couldn't move '%s' to '%s': %s" % (src, dst, msg))

            

Reported by Pylint.

Lib/importlib/util.py
30 issues
Attempted relative import beyond top-level package
Error

Line: 2 Column: 1

              """Utility code for constructing importers, etc."""
from ._abc import Loader
from ._bootstrap import module_from_spec
from ._bootstrap import _resolve_name
from ._bootstrap import spec_from_loader
from ._bootstrap import _find_spec
from ._bootstrap_external import MAGIC_NUMBER
from ._bootstrap_external import _RAW_MAGIC_NUMBER
from ._bootstrap_external import cache_from_source

            

Reported by Pylint.

Attempted relative import beyond top-level package
Error

Line: 3 Column: 1

              """Utility code for constructing importers, etc."""
from ._abc import Loader
from ._bootstrap import module_from_spec
from ._bootstrap import _resolve_name
from ._bootstrap import spec_from_loader
from ._bootstrap import _find_spec
from ._bootstrap_external import MAGIC_NUMBER
from ._bootstrap_external import _RAW_MAGIC_NUMBER
from ._bootstrap_external import cache_from_source

            

Reported by Pylint.

Attempted relative import beyond top-level package
Error

Line: 4 Column: 1

              """Utility code for constructing importers, etc."""
from ._abc import Loader
from ._bootstrap import module_from_spec
from ._bootstrap import _resolve_name
from ._bootstrap import spec_from_loader
from ._bootstrap import _find_spec
from ._bootstrap_external import MAGIC_NUMBER
from ._bootstrap_external import _RAW_MAGIC_NUMBER
from ._bootstrap_external import cache_from_source

            

Reported by Pylint.

Attempted relative import beyond top-level package
Error

Line: 5 Column: 1

              from ._abc import Loader
from ._bootstrap import module_from_spec
from ._bootstrap import _resolve_name
from ._bootstrap import spec_from_loader
from ._bootstrap import _find_spec
from ._bootstrap_external import MAGIC_NUMBER
from ._bootstrap_external import _RAW_MAGIC_NUMBER
from ._bootstrap_external import cache_from_source
from ._bootstrap_external import decode_source

            

Reported by Pylint.

Attempted relative import beyond top-level package
Error

Line: 6 Column: 1

              from ._bootstrap import module_from_spec
from ._bootstrap import _resolve_name
from ._bootstrap import spec_from_loader
from ._bootstrap import _find_spec
from ._bootstrap_external import MAGIC_NUMBER
from ._bootstrap_external import _RAW_MAGIC_NUMBER
from ._bootstrap_external import cache_from_source
from ._bootstrap_external import decode_source
from ._bootstrap_external import source_from_cache

            

Reported by Pylint.

Attempted relative import beyond top-level package
Error

Line: 7 Column: 1

              from ._bootstrap import _resolve_name
from ._bootstrap import spec_from_loader
from ._bootstrap import _find_spec
from ._bootstrap_external import MAGIC_NUMBER
from ._bootstrap_external import _RAW_MAGIC_NUMBER
from ._bootstrap_external import cache_from_source
from ._bootstrap_external import decode_source
from ._bootstrap_external import source_from_cache
from ._bootstrap_external import spec_from_file_location

            

Reported by Pylint.

Attempted relative import beyond top-level package
Error

Line: 8 Column: 1

              from ._bootstrap import spec_from_loader
from ._bootstrap import _find_spec
from ._bootstrap_external import MAGIC_NUMBER
from ._bootstrap_external import _RAW_MAGIC_NUMBER
from ._bootstrap_external import cache_from_source
from ._bootstrap_external import decode_source
from ._bootstrap_external import source_from_cache
from ._bootstrap_external import spec_from_file_location


            

Reported by Pylint.

Attempted relative import beyond top-level package
Error

Line: 9 Column: 1

              from ._bootstrap import _find_spec
from ._bootstrap_external import MAGIC_NUMBER
from ._bootstrap_external import _RAW_MAGIC_NUMBER
from ._bootstrap_external import cache_from_source
from ._bootstrap_external import decode_source
from ._bootstrap_external import source_from_cache
from ._bootstrap_external import spec_from_file_location

from contextlib import contextmanager

            

Reported by Pylint.

Attempted relative import beyond top-level package
Error

Line: 10 Column: 1

              from ._bootstrap_external import MAGIC_NUMBER
from ._bootstrap_external import _RAW_MAGIC_NUMBER
from ._bootstrap_external import cache_from_source
from ._bootstrap_external import decode_source
from ._bootstrap_external import source_from_cache
from ._bootstrap_external import spec_from_file_location

from contextlib import contextmanager
import _imp

            

Reported by Pylint.

Attempted relative import beyond top-level package
Error

Line: 11 Column: 1

              from ._bootstrap_external import _RAW_MAGIC_NUMBER
from ._bootstrap_external import cache_from_source
from ._bootstrap_external import decode_source
from ._bootstrap_external import source_from_cache
from ._bootstrap_external import spec_from_file_location

from contextlib import contextmanager
import _imp
import functools

            

Reported by Pylint.

Lib/lib2to3/fixes/fix_metaclass.py
30 issues
Attempted relative import beyond top-level package
Error

Line: 21 Column: 1

              # Author: Jack Diederich

# Local imports
from .. import fixer_base
from ..pygram import token
from ..fixer_util import syms, Node, Leaf


def has_metaclass(parent):

            

Reported by Pylint.

Attempted relative import beyond top-level package
Error

Line: 22 Column: 1

              
# Local imports
from .. import fixer_base
from ..pygram import token
from ..fixer_util import syms, Node, Leaf


def has_metaclass(parent):
    """ we have to check the cls_node without changing it.

            

Reported by Pylint.

Attempted relative import beyond top-level package
Error

Line: 23 Column: 1

              # Local imports
from .. import fixer_base
from ..pygram import token
from ..fixer_util import syms, Node, Leaf


def has_metaclass(parent):
    """ we have to check the cls_node without changing it.
        There are two possibilities:

            

Reported by Pylint.

Using possibly undefined loop variable 'i'
Error

Line: 63 Column: 29

              
    # move everything into a suite node
    suite = Node(syms.suite, [])
    while cls_node.children[i+1:]:
        move_node = cls_node.children[i+1]
        suite.append_child(move_node.clone())
        move_node.remove()
    cls_node.append_child(suite)
    node = suite

            

Reported by Pylint.

Using possibly undefined loop variable 'i'
Error

Line: 64 Column: 39

                  # move everything into a suite node
    suite = Node(syms.suite, [])
    while cls_node.children[i+1:]:
        move_node = cls_node.children[i+1]
        suite.append_child(move_node.clone())
        move_node.remove()
    cls_node.append_child(suite)
    node = suite


            

Reported by Pylint.

Using possibly undefined loop variable 'node'
Error

Line: 82 Column: 5

                  else:
        return

    node.remove() # kill the semicolon
    new_expr = Node(syms.expr_stmt, [])
    new_stmt = Node(syms.simple_stmt, [new_expr])
    while stmt_node.children[semi_ind:]:
        move_node = stmt_node.children[semi_ind]
        new_expr.append_child(move_node.clone())

            

Reported by Pylint.

Using possibly undefined loop variable 'semi_ind'
Error

Line: 85 Column: 30

                  node.remove() # kill the semicolon
    new_expr = Node(syms.expr_stmt, [])
    new_stmt = Node(syms.simple_stmt, [new_expr])
    while stmt_node.children[semi_ind:]:
        move_node = stmt_node.children[semi_ind]
        new_expr.append_child(move_node.clone())
        move_node.remove()
    parent.insert_child(i, new_stmt)
    new_leaf1 = new_stmt.children[0].children[0]

            

Reported by Pylint.

Using possibly undefined loop variable 'semi_ind'
Error

Line: 86 Column: 40

                  new_expr = Node(syms.expr_stmt, [])
    new_stmt = Node(syms.simple_stmt, [new_expr])
    while stmt_node.children[semi_ind:]:
        move_node = stmt_node.children[semi_ind]
        new_expr.append_child(move_node.clone())
        move_node.remove()
    parent.insert_child(i, new_stmt)
    new_leaf1 = new_stmt.children[0].children[0]
    old_leaf1 = stmt_node.children[0].children[0]

            

Reported by Pylint.

Using possibly undefined loop variable 'node'
Error

Line: 109 Column: 42

                      raise ValueError("No class suite!")

    # look for simple_stmt[ expr_stmt[ Leaf('__metaclass__') ] ]
    for i, simple_node in list(enumerate(node.children)):
        if simple_node.type == syms.simple_stmt and simple_node.children:
            expr_node = simple_node.children[0]
            if expr_node.type == syms.expr_stmt and expr_node.children:
                # Check if the expr_node is a simple assignment.
                left_node = expr_node.children[0]

            

Reported by Pylint.

Using possibly undefined loop variable 'node'
Error

Line: 118 Column: 39

                              if isinstance(left_node, Leaf) and \
                        left_node.value == '__metaclass__':
                    # We found an assignment to __metaclass__.
                    fixup_simple_stmt(node, i, simple_node)
                    remove_trailing_newline(simple_node)
                    yield (node, i, simple_node)


def fixup_indent(suite):

            

Reported by Pylint.

Lib/compileall.py
30 issues
Redefining built-in 'dir'
Error

Line: 25 Column: 15

              
__all__ = ["compile_dir","compile_file","compile_path"]

def _walk_dir(dir, maxlevels, quiet=0):
    if quiet < 2 and isinstance(dir, os.PathLike):
        dir = os.fspath(dir)
    if not quiet:
        print('Listing {!r}...'.format(dir))
    try:

            

Reported by Pylint.

Redefining built-in 'dir'
Error

Line: 48 Column: 17

                          yield from _walk_dir(fullname, maxlevels=maxlevels - 1,
                                 quiet=quiet)

def compile_dir(dir, maxlevels=None, ddir=None, force=False,
                rx=None, quiet=0, legacy=False, optimize=-1, workers=1,
                invalidation_mode=None, *, stripdir=None,
                prependdir=None, limit_sl_dest=None, hardlink_dupes=False):
    """Byte-compile all modules in the given directory tree.


            

Reported by Pylint.

Unused variable 'head'
Error

Line: 219 Column: 9

                                  cfile = importlib.util.cache_from_source(fullname)
                    opt_cfiles[opt_level] = cfile

        head, tail = name[:-3], name[-3:]
        if tail == '.py':
            if not force:
                try:
                    mtime = int(os.stat(fullname).st_mtime)
                    expect = struct.pack('<4sll', importlib.util.MAGIC_NUMBER,

            

Reported by Pylint.

Redefining built-in 'dir'
Error

Line: 290 Column: 9

                  invalidation_mode: as for compiler_dir()
    """
    success = True
    for dir in sys.path:
        if (not dir or dir == os.curdir) and skip_curdir:
            if quiet < 2:
                print('Skipping current directory')
        else:
            success = success and compile_dir(

            

Reported by Pylint.

Argument name "rx" doesn't conform to snake_case naming style
Error

Line: 48 Column: 1

                          yield from _walk_dir(fullname, maxlevels=maxlevels - 1,
                                 quiet=quiet)

def compile_dir(dir, maxlevels=None, ddir=None, force=False,
                rx=None, quiet=0, legacy=False, optimize=-1, workers=1,
                invalidation_mode=None, *, stripdir=None,
                prependdir=None, limit_sl_dest=None, hardlink_dupes=False):
    """Byte-compile all modules in the given directory tree.


            

Reported by Pylint.

Too many arguments (10/5)
Error

Line: 48 Column: 1

                          yield from _walk_dir(fullname, maxlevels=maxlevels - 1,
                                 quiet=quiet)

def compile_dir(dir, maxlevels=None, ddir=None, force=False,
                rx=None, quiet=0, legacy=False, optimize=-1, workers=1,
                invalidation_mode=None, *, stripdir=None,
                prependdir=None, limit_sl_dest=None, hardlink_dupes=False):
    """Byte-compile all modules in the given directory tree.


            

Reported by Pylint.

Too many local variables (21/15)
Error

Line: 48 Column: 1

                          yield from _walk_dir(fullname, maxlevels=maxlevels - 1,
                                 quiet=quiet)

def compile_dir(dir, maxlevels=None, ddir=None, force=False,
                rx=None, quiet=0, legacy=False, optimize=-1, workers=1,
                invalidation_mode=None, *, stripdir=None,
                prependdir=None, limit_sl_dest=None, hardlink_dupes=False):
    """Byte-compile all modules in the given directory tree.


            

Reported by Pylint.

Variable name "ProcessPoolExecutor" doesn't conform to snake_case naming style
Error

Line: 76 Column: 5

                                 the defined path
    hardlink_dupes: hardlink duplicated pyc files
    """
    ProcessPoolExecutor = None
    if ddir is not None and (stripdir is not None or prependdir is not None):
        raise ValueError(("Destination dir (ddir) cannot be used "
                          "in combination with stripdir or prependdir"))
    if ddir is not None:
        stripdir = dir

            

Reported by Pylint.

Import outside toplevel (concurrent.futures.process._check_system_limits)
Error

Line: 88 Column: 9

                      raise ValueError('workers must be greater or equal to 0')
    if workers != 1:
        # Check if this is a system where ProcessPoolExecutor can function.
        from concurrent.futures.process import _check_system_limits
        try:
            _check_system_limits()
        except NotImplementedError:
            workers = 1
        else:

            

Reported by Pylint.

Import outside toplevel (concurrent.futures.ProcessPoolExecutor)
Error

Line: 94 Column: 13

                      except NotImplementedError:
            workers = 1
        else:
            from concurrent.futures import ProcessPoolExecutor
    if maxlevels is None:
        maxlevels = sys.getrecursionlimit()
    files = _walk_dir(dir, quiet=quiet, maxlevels=maxlevels)
    success = True
    if workers != 1 and ProcessPoolExecutor is not None:

            

Reported by Pylint.

Lib/distutils/command/bdist.py
30 issues
Unused import DistutilsFileError from wildcard import
Error

Line: 8 Column: 1

              
import os
from distutils.core import Command
from distutils.errors import *
from distutils.util import get_platform


def show_formats():
    """Print list of available formats (arguments to "--format" option).

            

Reported by Pylint.

Unused import DistutilsGetoptError from wildcard import
Error

Line: 8 Column: 1

              
import os
from distutils.core import Command
from distutils.errors import *
from distutils.util import get_platform


def show_formats():
    """Print list of available formats (arguments to "--format" option).

            

Reported by Pylint.

Unused import DistutilsClassError from wildcard import
Error

Line: 8 Column: 1

              
import os
from distutils.core import Command
from distutils.errors import *
from distutils.util import get_platform


def show_formats():
    """Print list of available formats (arguments to "--format" option).

            

Reported by Pylint.

Unused import DistutilsModuleError from wildcard import
Error

Line: 8 Column: 1

              
import os
from distutils.core import Command
from distutils.errors import *
from distutils.util import get_platform


def show_formats():
    """Print list of available formats (arguments to "--format" option).

            

Reported by Pylint.

Unused import DistutilsError from wildcard import
Error

Line: 8 Column: 1

              
import os
from distutils.core import Command
from distutils.errors import *
from distutils.util import get_platform


def show_formats():
    """Print list of available formats (arguments to "--format" option).

            

Reported by Pylint.

Unused import LinkError from wildcard import
Error

Line: 8 Column: 1

              
import os
from distutils.core import Command
from distutils.errors import *
from distutils.util import get_platform


def show_formats():
    """Print list of available formats (arguments to "--format" option).

            

Reported by Pylint.

Unused import CompileError from wildcard import
Error

Line: 8 Column: 1

              
import os
from distutils.core import Command
from distutils.errors import *
from distutils.util import get_platform


def show_formats():
    """Print list of available formats (arguments to "--format" option).

            

Reported by Pylint.

Unused import PreprocessError from wildcard import
Error

Line: 8 Column: 1

              
import os
from distutils.core import Command
from distutils.errors import *
from distutils.util import get_platform


def show_formats():
    """Print list of available formats (arguments to "--format" option).

            

Reported by Pylint.

Unused import CCompilerError from wildcard import
Error

Line: 8 Column: 1

              
import os
from distutils.core import Command
from distutils.errors import *
from distutils.util import get_platform


def show_formats():
    """Print list of available formats (arguments to "--format" option).

            

Reported by Pylint.

Unused import LibError from wildcard import
Error

Line: 8 Column: 1

              
import os
from distutils.core import Command
from distutils.errors import *
from distutils.util import get_platform


def show_formats():
    """Print list of available formats (arguments to "--format" option).

            

Reported by Pylint.

Lib/distutils/bcppcompiler.py
30 issues
XXX looks like there's a LOT of overlap between these two classes:
Error

Line: 10 Column: 3

              # This implementation by Lyle Johnson, based on the original msvccompiler.py
# module and using the directions originally published by Gordon Williams.

# XXX looks like there's a LOT of overlap between these two classes:
# someone should sit down and factor out the common code as
# WindowsCCompiler!  --GPW


import os

            

Reported by Pylint.

Method 'library_dir_option' is abstract in class 'CCompiler' but is not overridden
Error

Line: 25 Column: 1

              from distutils.dep_util import newer
from distutils import log

class BCPPCompiler(CCompiler) :
    """Concrete class that implements an interface to the Borland C/C++
    compiler, as defined by the CCompiler abstract class.
    """

    compiler_type = 'bcpp'

            

Reported by Pylint.

Method 'library_option' is abstract in class 'CCompiler' but is not overridden
Error

Line: 25 Column: 1

              from distutils.dep_util import newer
from distutils import log

class BCPPCompiler(CCompiler) :
    """Concrete class that implements an interface to the Borland C/C++
    compiler, as defined by the CCompiler abstract class.
    """

    compiler_type = 'bcpp'

            

Reported by Pylint.

Method 'runtime_library_dir_option' is abstract in class 'CCompiler' but is not overridden
Error

Line: 25 Column: 1

              from distutils.dep_util import newer
from distutils import log

class BCPPCompiler(CCompiler) :
    """Concrete class that implements an interface to the Borland C/C++
    compiler, as defined by the CCompiler abstract class.
    """

    compiler_type = 'bcpp'

            

Reported by Pylint.

XXX why do the normpath here?
Error

Line: 100 Column: 3

                              src, ext = build[obj]
            except KeyError:
                continue
            # XXX why do the normpath here?
            src = os.path.normpath(src)
            obj = os.path.normpath(obj)
            # XXX _setup_compile() did a mkpath() too but before the normpath.
            # Is it possible to skip the normpath?
            self.mkpath(os.path.dirname(obj))

            

Reported by Pylint.

XXX _setup_compile() did a mkpath() too but before the normpath.
Error

Line: 103 Column: 3

                          # XXX why do the normpath here?
            src = os.path.normpath(src)
            obj = os.path.normpath(obj)
            # XXX _setup_compile() did a mkpath() too but before the normpath.
            # Is it possible to skip the normpath?
            self.mkpath(os.path.dirname(obj))

            if ext == '.res':
                # This is already a binary file -- skip it.

            

Reported by Pylint.

Consider explicitly re-raising using the 'from' keyword
Error

Line: 115 Column: 21

                              try:
                    self.spawn (["brcc32", "-fo", obj, src])
                except DistutilsExecError as msg:
                    raise CompileError(msg)
                continue # the 'for' loop

            # The next two are both for the real compiler.
            if ext in self._c_extensions:
                input_opt = ""

            

Reported by Pylint.

Consider explicitly re-raising using the 'from' keyword
Error

Line: 139 Column: 17

                                          [input_opt, output_opt] +
                            extra_postargs + [src])
            except DistutilsExecError as msg:
                raise CompileError(msg)

        return objects

    # compile ()


            

Reported by Pylint.

XXX what goes here?
Error

Line: 160 Column: 3

                      if self._need_link (objects, output_filename):
            lib_args = [output_filename, '/u'] + objects
            if debug:
                pass                    # XXX what goes here?
            try:
                self.spawn ([self.lib] + lib_args)
            except DistutilsExecError as msg:
                raise LibError(msg)
        else:

            

Reported by Pylint.

Consider explicitly re-raising using the 'from' keyword
Error

Line: 164 Column: 17

                          try:
                self.spawn ([self.lib] + lib_args)
            except DistutilsExecError as msg:
                raise LibError(msg)
        else:
            log.debug("skipping %s (up-to-date)", output_filename)

    # create_static_lib ()


            

Reported by Pylint.

Lib/idlelib/debugobj.py
30 issues
XXX TO DO:
Error

Line: 1 Column: 3

              # XXX TO DO:
# - popup menu
# - support partial or total redisplay
# - more doc strings
# - tooltips

# object browser

# XXX TO DO:

            

Reported by Pylint.

XXX TO DO:
Error

Line: 9 Column: 3

              
# object browser

# XXX TO DO:
# - for classes/modules, add "open source" to object browser
from reprlib import Repr

from idlelib.tree import TreeItem, TreeNode, ScrolledCanvas


            

Reported by Pylint.

Redefining built-in 'object'
Error

Line: 20 Column: 35

              myrepr.maxother = 100

class ObjectTreeItem(TreeItem):
    def __init__(self, labeltext, object, setfunction=None):
        self.labeltext = labeltext
        self.object = object
        self.setfunction = setfunction
    def GetLabelText(self):
        return self.labeltext

            

Reported by Pylint.

__init__ method from base class 'TreeItem' is not called
Error

Line: 20 Column: 5

              myrepr.maxother = 100

class ObjectTreeItem(TreeItem):
    def __init__(self, labeltext, object, setfunction=None):
        self.labeltext = labeltext
        self.object = object
        self.setfunction = setfunction
    def GetLabelText(self):
        return self.labeltext

            

Reported by Pylint.

Use of possibly insecure function - consider using safer ast.literal_eval.
Security blacklist

Line: 35
Suggestion: https://bandit.readthedocs.io/en/latest/blacklists/blacklist_calls.html#b307-eval

                      return self.setfunction is not None
    def SetText(self, text):
        try:
            value = eval(text)
            self.setfunction(value)
        except:
            pass
        else:
            self.object = value

            

Reported by Bandit.

Use of eval
Error

Line: 35 Column: 21

                      return self.setfunction is not None
    def SetText(self, text):
        try:
            value = eval(text)
            self.setfunction(value)
        except:
            pass
        else:
            self.object = value

            

Reported by Pylint.

No exception type(s) specified
Error

Line: 37 Column: 9

                      try:
            value = eval(text)
            self.setfunction(value)
        except:
            pass
        else:
            self.object = value
    def IsExpandable(self):
        return not not dir(self.object)

            

Reported by Pylint.

Redefining built-in 'object'
Error

Line: 88 Column: 45

                              value = self.object[key]
            except KeyError:
                continue
            def setfunction(value, key=key, object=self.object):
                object[key] = value
            item = make_objecttreeitem("%r:" % (key,), value, setfunction)
            sublist.append(item)
        return sublist


            

Reported by Pylint.

No exception type(s) specified
Error

Line: 99 Column: 9

                      keys = list(self.object.keys())
        try:
            keys.sort()
        except:
            pass
        return keys

dispatch = {
    int: AtomicObjectTreeItem,

            

Reported by Pylint.

Redefining built-in 'object'
Error

Line: 113 Column: 36

                  type: ClassTreeItem,
}

def make_objecttreeitem(labeltext, object, setfunction=None):
    t = type(object)
    if t in dispatch:
        c = dispatch[t]
    else:
        c = ObjectTreeItem

            

Reported by Pylint.

Lib/sqlite3/test/hooks.py
30 issues
Attempted relative import beyond top-level package
Error

Line: 27 Column: 1

              import sqlite3 as sqlite

from test.support.os_helper import TESTFN, unlink
from .userfunctions import with_tracebacks

class CollationTests(unittest.TestCase):
    def test_create_collation_not_string(self):
        con = sqlite.connect(":memory:")
        with self.assertRaises(TypeError):

            

Reported by Pylint.

Statement seems to have no effect
Error

Line: 204 Column: 13

                  def test_error_in_progress_handler(self):
        con = sqlite.connect(":memory:")
        def bad_progress():
            1 / 0
        con.set_progress_handler(bad_progress, 1)
        with self.assertRaises(sqlite.OperationalError):
            con.execute("""
                create table foo(a, b)
                """)

            

Reported by Pylint.

Statement seems to have no effect
Error

Line: 216 Column: 17

                      con = sqlite.connect(":memory:")
        class BadBool:
            def __bool__(self):
                1 / 0
        def bad_progress():
            return BadBool()
        con.set_progress_handler(bad_progress, 1)
        with self.assertRaises(sqlite.OperationalError):
            con.execute("""

            

Reported by Pylint.

Possible SQL injection vector through string-based query construction.
Security injection

Line: 264
Suggestion: https://bandit.readthedocs.io/en/latest/plugins/b608_hardcoded_sql_expressions.html

                          traced_statements.append(statement)
        con.set_trace_callback(trace)
        con.execute("create table foo(x)")
        con.execute("insert into foo(x) values ('%s')" % unicode_value)
        con.commit()
        self.assertTrue(any(unicode_value in stmt for stmt in traced_statements),
                        "Unicode data %s garbled in trace callback: %s"
                        % (ascii(unicode_value), ', '.join(map(ascii, traced_statements))))


            

Reported by Bandit.

Missing module docstring
Error

Line: 1 Column: 1

              # pysqlite2/test/hooks.py: tests for various SQLite-specific hooks
#
# Copyright (C) 2006-2007 Gerhard Häring <gh@ghaering.de>
#
# This file is part of pysqlite.
#
# This software is provided 'as-is', without any express or implied
# warranty.  In no event will the authors be held liable for any damages
# arising from the use of this software.

            

Reported by Pylint.

Missing class docstring
Error

Line: 29 Column: 1

              from test.support.os_helper import TESTFN, unlink
from .userfunctions import with_tracebacks

class CollationTests(unittest.TestCase):
    def test_create_collation_not_string(self):
        con = sqlite.connect(":memory:")
        with self.assertRaises(TypeError):
            con.create_collation(None, lambda x, y: (x > y) - (x < y))


            

Reported by Pylint.

Missing function or method docstring
Error

Line: 30 Column: 5

              from .userfunctions import with_tracebacks

class CollationTests(unittest.TestCase):
    def test_create_collation_not_string(self):
        con = sqlite.connect(":memory:")
        with self.assertRaises(TypeError):
            con.create_collation(None, lambda x, y: (x > y) - (x < y))

    def test_create_collation_not_callable(self):

            

Reported by Pylint.

Missing function or method docstring
Error

Line: 35 Column: 5

                      with self.assertRaises(TypeError):
            con.create_collation(None, lambda x, y: (x > y) - (x < y))

    def test_create_collation_not_callable(self):
        con = sqlite.connect(":memory:")
        with self.assertRaises(TypeError) as cm:
            con.create_collation("X", 42)
        self.assertEqual(str(cm.exception), 'parameter must be callable')


            

Reported by Pylint.

Variable name "cm" doesn't conform to snake_case naming style
Error

Line: 37 Column: 46

              
    def test_create_collation_not_callable(self):
        con = sqlite.connect(":memory:")
        with self.assertRaises(TypeError) as cm:
            con.create_collation("X", 42)
        self.assertEqual(str(cm.exception), 'parameter must be callable')

    def test_create_collation_not_ascii(self):
        con = sqlite.connect(":memory:")

            

Reported by Pylint.

Missing function or method docstring
Error

Line: 41 Column: 5

                          con.create_collation("X", 42)
        self.assertEqual(str(cm.exception), 'parameter must be callable')

    def test_create_collation_not_ascii(self):
        con = sqlite.connect(":memory:")
        con.create_collation("collä", lambda x, y: (x > y) - (x < y))

    def test_create_collation_bad_upper(self):
        class BadUpperStr(str):

            

Reported by Pylint.

Lib/re.py
30 issues
No name 'BRANCH' in module 'sre_constants'
Error

Line: 326 Column: 9

              
class Scanner:
    def __init__(self, lexicon, flags=0):
        from sre_constants import BRANCH, SUBPATTERN
        if isinstance(flags, RegexFlag):
            flags = flags.value
        self.lexicon = lexicon
        # combine phrases into a compound pattern
        p = []

            

Reported by Pylint.

No name 'SUBPATTERN' in module 'sre_constants'
Error

Line: 326 Column: 9

              
class Scanner:
    def __init__(self, lexicon, flags=0):
        from sre_constants import BRANCH, SUBPATTERN
        if isinstance(flags, RegexFlag):
            flags = flags.value
        self.lexicon = lexicon
        # combine phrases into a compound pattern
        p = []

            

Reported by Pylint.

Unused import _locale
Error

Line: 129 Column: 5

              import sre_parse
import functools
try:
    import _locale
except ImportError:
    _locale = None


# public symbols

            

Reported by Pylint.

Access to a protected member _simple_enum of a client class
Error

Line: 146 Column: 2

              __version__ = "2.2.1"

@enum.global_enum
@enum._simple_enum(enum.IntFlag, boundary=enum.KEEP)
class RegexFlag:
    ASCII = A = sre_compile.SRE_FLAG_ASCII # assume ascii "locale"
    IGNORECASE = I = sre_compile.SRE_FLAG_IGNORECASE # ignore case
    LOCALE = L = sre_compile.SRE_FLAG_LOCALE # assume current 8-bit locale
    UNICODE = U = sre_compile.SRE_FLAG_UNICODE # assume unicode "locale"

            

Reported by Pylint.

Redefining built-in 'compile'
Error

Line: 227 Column: 1

                  Empty matches are included in the result."""
    return _compile(pattern, flags).finditer(string)

def compile(pattern, flags=0):
    "Compile a regular expression pattern, returning a Pattern object."
    return _compile(pattern, flags)

def purge():
    "Clear the regular expression caches"

            

Reported by Pylint.

Redefining name 'match' from outer scope (line 165)
Error

Line: 297 Column: 22

                  # internal: compile replacement pattern
    return sre_parse.parse_template(repl, pattern)

def _expand(pattern, match, template):
    # internal: Match.expand implementation hook
    template = sre_parse.parse_template(template, pattern)
    return sre_parse.expand_template(template, match)

def _subx(pattern, template):

            

Reported by Pylint.

Redefining name 'template' from outer scope (line 236)
Error

Line: 297 Column: 29

                  # internal: compile replacement pattern
    return sre_parse.parse_template(repl, pattern)

def _expand(pattern, match, template):
    # internal: Match.expand implementation hook
    template = sre_parse.parse_template(template, pattern)
    return sre_parse.expand_template(template, match)

def _subx(pattern, template):

            

Reported by Pylint.

Redefining name 'template' from outer scope (line 236)
Error

Line: 302 Column: 20

                  template = sre_parse.parse_template(template, pattern)
    return sre_parse.expand_template(template, match)

def _subx(pattern, template):
    # internal: Pattern.sub/subn implementation helper
    template = _compile_repl(template, pattern)
    if not template[0] and len(template[1]) == 1:
        # literal replacement
        return template[1][0]

            

Reported by Pylint.

Redefining name 'template' from outer scope (line 236)
Error

Line: 308 Column: 23

                  if not template[0] and len(template[1]) == 1:
        # literal replacement
        return template[1][0]
    def filter(match, template=template):
        return sre_parse.expand_template(template, match)
    return filter

# register myself for pickling


            

Reported by Pylint.

Redefining built-in 'filter'
Error

Line: 308 Column: 5

                  if not template[0] and len(template[1]) == 1:
        # literal replacement
        return template[1][0]
    def filter(match, template=template):
        return sre_parse.expand_template(template, match)
    return filter

# register myself for pickling


            

Reported by Pylint.

Lib/test/libregrtest/cmdline.py
30 issues
Instance of 'Namespace' has no 'nowindows' member
Error

Line: 388 Column: 8

                  if ns.pgo_extended:
        ns.pgo = True  # pgo_extended implies pgo

    if ns.nowindows:
        print("Warning: the --nowindows (-n) option is deprecated. "
              "Use -vv to display assertions in stderr.", file=sys.stderr)

    if ns.quiet:
        ns.verbose = 0

            

Reported by Pylint.

Instance of 'Namespace' has no 'use' member
Error

Line: 401 Column: 8

                      if ns.use_mp <= 0:
            # Use all cores + extras for tests that like to sleep
            ns.use_mp = 2 + (os.cpu_count() or 1)
    if ns.use:
        for a in ns.use:
            for r in a:
                if r == 'all':
                    ns.use_resources[:] = ALL_RESOURCES
                    continue

            

Reported by Pylint.

Instance of 'Namespace' has no 'use' member
Error

Line: 402 Column: 18

                          # Use all cores + extras for tests that like to sleep
            ns.use_mp = 2 + (os.cpu_count() or 1)
    if ns.use:
        for a in ns.use:
            for r in a:
                if r == 'all':
                    ns.use_resources[:] = ALL_RESOURCES
                    continue
                if r == 'none':

            

Reported by Pylint.

Instance of 'Namespace' has no 'match_filename' member
Error

Line: 428 Column: 8

                      print("WARNING: Disable --verbose3 because it's incompatible with "
              "--huntrleaks: see http://bugs.python.org/issue27103",
              file=sys.stderr)
    if ns.match_filename:
        if ns.match_tests is None:
            ns.match_tests = []
        with open(ns.match_filename) as fp:
            for line in fp:
                ns.match_tests.append(line.strip())

            

Reported by Pylint.

Instance of 'Namespace' has no 'match_filename' member
Error

Line: 431 Column: 19

                  if ns.match_filename:
        if ns.match_tests is None:
            ns.match_tests = []
        with open(ns.match_filename) as fp:
            for line in fp:
                ns.match_tests.append(line.strip())
    if ns.ignore_filename:
        if ns.ignore_tests is None:
            ns.ignore_tests = []

            

Reported by Pylint.

Instance of 'Namespace' has no 'ignore_filename' member
Error

Line: 434 Column: 8

                      with open(ns.match_filename) as fp:
            for line in fp:
                ns.match_tests.append(line.strip())
    if ns.ignore_filename:
        if ns.ignore_tests is None:
            ns.ignore_tests = []
        with open(ns.ignore_filename) as fp:
            for line in fp:
                ns.ignore_tests.append(line.strip())

            

Reported by Pylint.

Instance of 'Namespace' has no 'ignore_filename' member
Error

Line: 437 Column: 19

                  if ns.ignore_filename:
        if ns.ignore_tests is None:
            ns.ignore_tests = []
        with open(ns.ignore_filename) as fp:
            for line in fp:
                ns.ignore_tests.append(line.strip())
    if ns.forever:
        # --forever implies --failfast
        ns.failfast = True

            

Reported by Pylint.

Unused support imported from test
Error

Line: 4 Column: 1

              import argparse
import os
import sys
from test import support
from test.support import os_helper


USAGE = """\
python -m test [options] [test_name1 [test_name2 ...]]

            

Reported by Pylint.

Attribute 'args' defined outside __init__
Error

Line: 368 Column: 5

                  parser = _create_parser()
    # Issue #14191: argparse doesn't support "intermixed" positional and
    # optional arguments. Use parse_known_args() as workaround.
    ns.args = parser.parse_known_args(args=args, namespace=ns)[1]
    for arg in ns.args:
        if arg.startswith('-'):
            parser.error("unrecognized arguments: %s" % arg)
            sys.exit(1)


            

Reported by Pylint.

Attribute 'timeout' defined outside __init__
Error

Line: 396 Column: 13

                      ns.verbose = 0
    if ns.timeout is not None:
        if ns.timeout <= 0:
            ns.timeout = None
    if ns.use_mp is not None:
        if ns.use_mp <= 0:
            # Use all cores + extras for tests that like to sleep
            ns.use_mp = 2 + (os.cpu_count() or 1)
    if ns.use:

            

Reported by Pylint.