The following issues were found

Lib/socketserver.py
49 issues
Instance of 'BaseServer' has no 'socket' member
Error

Line: 280 Column: 19

                      """
        # Support people who used socket.settimeout() to escape
        # handle_request before self.timeout was available.
        timeout = self.socket.gettimeout()
        if timeout is None:
            timeout = self.timeout
        elif self.timeout is not None:
            timeout = min(timeout, self.timeout)
        if timeout is not None:

            

Reported by Pylint.

Instance of 'BaseServer' has no 'get_request' member
Error

Line: 311 Column: 39

                      blocking in get_request().
        """
        try:
            request, client_address = self.get_request()
        except OSError:
            return
        if self.verify_request(request, client_address):
            try:
                self.process_request(request, client_address)

            

Reported by Pylint.

Cannot import 'traceback' due to syntax error 'invalid syntax (<unknown>, line 576)'
Error

Line: 379 Column: 1

                      print('-'*40, file=sys.stderr)
        print('Exception occurred during processing of request from',
            client_address, file=sys.stderr)
        import traceback
        traceback.print_exc()
        print('-'*40, file=sys.stderr)

    def __enter__(self):
        return self

            

Reported by Pylint.

Unnecessary pass statement
Error

Line: 213 Column: 9

                      May be overridden.

        """
        pass

    def serve_forever(self, poll_interval=0.5):
        """Handle one request at a time until shutdown.

        Polls for shutdown every poll_interval seconds. Ignores

            

Reported by Pylint.

XXX: Consider using another file descriptor or connecting to the
Error

Line: 224 Column: 3

                      """
        self.__is_shut_down.clear()
        try:
            # XXX: Consider using another file descriptor or connecting to the
            # socket to wake this up instead of polling. Polling reduces our
            # responsiveness to a shutdown request and wastes cpu at all other
            # times.
            with _ServerSelector() as selector:
                selector.register(self, selectors.EVENT_READ)

            

Reported by Pylint.

Unnecessary pass statement
Error

Line: 260 Column: 9

                      May be overridden by a subclass / Mixin to implement any code that
        needs to be run during the loop.
        """
        pass

    # The distinction between handling, getting, processing and finishing a
    # request is fairly arbitrary.  Remember:
    #
    # - handle_request() is the top-level call.  It calls selector.select(),

            

Reported by Pylint.

Catching too general exception Exception
Error

Line: 317 Column: 20

                      if self.verify_request(request, client_address):
            try:
                self.process_request(request, client_address)
            except Exception:
                self.handle_error(request, client_address)
                self.shutdown_request(request)
            except:
                self.shutdown_request(request)
                raise

            

Reported by Pylint.

Unnecessary pass statement
Error

Line: 331 Column: 9

              
        Overridden by ForkingMixIn.
        """
        pass

    def verify_request(self, request, client_address):
        """Verify the request.  May be overridden.

        Return True if we should proceed with this request.

            

Reported by Pylint.

Unused argument 'request'
Error

Line: 333 Column: 30

                      """
        pass

    def verify_request(self, request, client_address):
        """Verify the request.  May be overridden.

        Return True if we should proceed with this request.

        """

            

Reported by Pylint.

Unused argument 'client_address'
Error

Line: 333 Column: 39

                      """
        pass

    def verify_request(self, request, client_address):
        """Verify the request.  May be overridden.

        Return True if we should proceed with this request.

        """

            

Reported by Pylint.

Modules/_decimal/libmpdec/literature/fnt.py
49 issues
Redefining name 'F' from outer scope (line 95)
Error

Line: 57 Column: 10

              # For a prime field, r is a primitive root if and only if for all prime
# factors f of p-1, r**((p-1)/f) =/= 1  (mod p).
#
def prod(F, E):
    """Check that the factorization of P-1 is correct. F is the list of
       factors of P-1, E lists the number of occurrences of each factor."""
    x = 1
    for y, z in zip(F, E):
        x *= y**z

            

Reported by Pylint.

Redefining name 'E' from outer scope (line 96)
Error

Line: 57 Column: 13

              # For a prime field, r is a primitive root if and only if for all prime
# factors f of p-1, r**((p-1)/f) =/= 1  (mod p).
#
def prod(F, E):
    """Check that the factorization of P-1 is correct. F is the list of
       factors of P-1, E lists the number of occurrences of each factor."""
    x = 1
    for y, z in zip(F, E):
        x *= y**z

            

Reported by Pylint.

Statement seems to have no effect
Error

Line: 107 Column: 1

              m2 = (MPD_MAXTRANSFORM_2N * 3) // 2 # Maximum length of the smaller array.
M1 = M2 = RADIX-1                   # Maximum value per single word.
L = m2 * M1 * M2
P[0] * P[1] * P[2] > 2 * L


# Primitive roots of F(P1), F(P2) and F(P3):
w = [7, 10, 19]


            

Reported by Pylint.

Statement seems to have no effect
Error

Line: 147 Column: 1

              m2 = (MPD_MAXTRANSFORM_2N * 3) // 2 # Maximum length of the smaller array.
M1 = M2 = RADIX-1                   # Maximum value per single word.
L = m2 * M1 * M2
P[0] * P[1] * P[2] > 2 * L


# Primitive roots of F(P1), F(P2) and F(P3):
w = [5, 31, 13]


            

Reported by Pylint.

Redefining built-in 'dir'
Error

Line: 163 Column: 14

              #                 Example transform using a single prime
# ======================================================================

def ntt(lst, dir):
    """Perform a transform on the elements of lst. len(lst) must
       be 2**n or 3 * 2**n, where n <= 25. This is the slow DFT."""
    p = 2113929217             # prime
    d = len(lst)               # transform length
    d_prime = pow(d, (p-2), p) # inverse of d

            

Reported by Pylint.

Redefining name 'w' from outer scope (line 111)
Error

Line: 170 Column: 5

                  d = len(lst)               # transform length
    d_prime = pow(d, (p-2), p) # inverse of d
    xi = (p-1)//d
    w = 5                         # primitive root of F(p)
    r = pow(w, xi, p)             # primitive root of the subfield
    r_prime = pow(w, (p-1-xi), p) # inverse of r
    if dir == 1:      # forward transform
        a = lst       # input array
        A = [0] * d   # transformed values

            

Reported by Pylint.

Redefining name 'a' from outer scope (line 204)
Error

Line: 174 Column: 9

                  r = pow(w, xi, p)             # primitive root of the subfield
    r_prime = pow(w, (p-1-xi), p) # inverse of r
    if dir == 1:      # forward transform
        a = lst       # input array
        A = [0] * d   # transformed values
        for i in range(d):
            s = 0
            for j in range(d):
                s += a[j] * pow(r, i*j, p)

            

Reported by Pylint.

Redefining name 'i' from outer scope (line 114)
Error

Line: 176 Column: 13

                  if dir == 1:      # forward transform
        a = lst       # input array
        A = [0] * d   # transformed values
        for i in range(d):
            s = 0
            for j in range(d):
                s += a[j] * pow(r, i*j, p)
            A[i] = s % p
        return A

            

Reported by Pylint.

Redefining name 'b' from outer scope (line 205)
Error

Line: 192 Column: 22

                          a[j] = (d_prime * s) % p
        return a

def ntt_convolute(a, b):
    """convolute arrays a and b."""
    assert(len(a) == len(b))
    x = ntt(a, 1)
    y = ntt(b, 1)
    for i in range(len(a)):

            

Reported by Pylint.

Redefining name 'a' from outer scope (line 204)
Error

Line: 192 Column: 19

                          a[j] = (d_prime * s) % p
        return a

def ntt_convolute(a, b):
    """convolute arrays a and b."""
    assert(len(a) == len(b))
    x = ntt(a, 1)
    y = ntt(b, 1)
    for i in range(len(a)):

            

Reported by Pylint.

Lib/mailcap.py
49 issues
Starting a process with a shell, possible injection detected, security issue.
Security injection

Line: 173
Suggestion: https://bandit.readthedocs.io/en/latest/plugins/b605_start_process_with_a_shell.html

                  for e in entries:
        if 'test' in e:
            test = subst(e['test'], filename, plist)
            if test and os.system(test) != 0:
                continue
        command = subst(e[key], MIMEtype, filename, plist)
        return command, e
    return None, None


            

Reported by Bandit.

Starting a process with a shell, possible injection detected, security issue.
Security injection

Line: 253
Suggestion: https://bandit.readthedocs.io/en/latest/plugins/b605_start_process_with_a_shell.html

                          print("No viewer found for", type)
        else:
            print("Executing:", command)
            sts = os.system(command)
            sts = os.waitstatus_to_exitcode(sts)
            if sts:
                print("Exit status:", sts)

def show(caps):

            

Reported by Bandit.

Module 'os' has no 'waitstatus_to_exitcode' member
Error

Line: 254 Column: 19

                      else:
            print("Executing:", command)
            sts = os.system(command)
            sts = os.waitstatus_to_exitcode(sts)
            if sts:
                print("Exit status:", sts)

def show(caps):
    print("Mailcap files:")

            

Reported by Pylint.

Dangerous default value [] as argument
Error

Line: 159 Column: 1

              
# Part 3: using the database.

def findmatch(caps, MIMEtype, key='view', filename="/dev/null", plist=[]):
    """Find a match for a mailcap entry.

    Return a tuple containing the command line, and the mailcap entry
    used; (None, None) if no match is found.  This may invoke the
    'test' command of several matching entries before deciding which

            

Reported by Pylint.

XXX This code should somehow check for the needsterminal flag.
Error

Line: 169 Column: 3

              
    """
    entries = lookup(caps, MIMEtype, key)
    # XXX This code should somehow check for the needsterminal flag.
    for e in entries:
        if 'test' in e:
            test = subst(e['test'], filename, plist)
            if test and os.system(test) != 0:
                continue

            

Reported by Pylint.

Redefining name 'test' from outer scope (line 235)
Error

Line: 172 Column: 13

                  # XXX This code should somehow check for the needsterminal flag.
    for e in entries:
        if 'test' in e:
            test = subst(e['test'], filename, plist)
            if test and os.system(test) != 0:
                continue
        command = subst(e[key], MIMEtype, filename, plist)
        return command, e
    return None, None

            

Reported by Pylint.

Dangerous default value [] as argument
Error

Line: 192 Column: 1

                  entries = sorted(entries, key=lineno_sort_key)
    return entries

def subst(field, MIMEtype, filename, plist=[]):
    # XXX Actually, this is Unix-specific
    res = ''
    i, n = 0, len(field)
    while i < n:
        c = field[i]; i = i+1

            

Reported by Pylint.

XXX Actually, this is Unix-specific
Error

Line: 193 Column: 3

                  return entries

def subst(field, MIMEtype, filename, plist=[]):
    # XXX Actually, this is Unix-specific
    res = ''
    i, n = 0, len(field)
    while i < n:
        c = field[i]; i = i+1
        if c != '%':

            

Reported by Pylint.

XXX To do:
Error

Line: 217 Column: 3

                              name = field[start:i]
                i = i+1
                res = res + findparam(name, plist)
            # XXX To do:
            # %n == number of parts if type is multipart/*
            # %F == list of alternating type and filename for parts
            else:
                res = res + '%' + c
    return res

            

Reported by Pylint.

Unused variable 'e'
Error

Line: 248 Column: 18

                          return
        MIMEtype = args[0]
        file = args[1]
        command, e = findmatch(caps, MIMEtype, 'view', file)
        if not command:
            print("No viewer found for", type)
        else:
            print("Executing:", command)
            sts = os.system(command)

            

Reported by Pylint.

Lib/test/test_asyncio/functional.py
49 issues
Unused argument 'loop'
Error

Line: 21 Column: 38

                  def run_loop_briefly(self, *, delay=0.01):
        self.loop.run_until_complete(asyncio.sleep(delay))

    def loop_exception_handler(self, loop, context):
        self.__unhandled_exceptions.append(context)
        self.loop.default_exception_handler(context)

    def setUp(self):
        self.loop = self.new_loop()

            

Reported by Pylint.

Access to a protected member _get_running_loop of a client class
Error

Line: 33 Column: 38

                      self.__unhandled_exceptions = []

        # Disable `_get_running_loop`.
        self._old_get_running_loop = asyncio.events._get_running_loop
        asyncio.events._get_running_loop = lambda: None

    def tearDown(self):
        try:
            self.loop.close()

            

Reported by Pylint.

Access to a protected member _get_running_loop of a client class
Error

Line: 34 Column: 9

              
        # Disable `_get_running_loop`.
        self._old_get_running_loop = asyncio.events._get_running_loop
        asyncio.events._get_running_loop = lambda: None

    def tearDown(self):
        try:
            self.loop.close()


            

Reported by Pylint.

Access to a protected member _get_running_loop of a client class
Error

Line: 46 Column: 13

                              self.fail('unexpected calls to loop.call_exception_handler()')

        finally:
            asyncio.events._get_running_loop = self._old_get_running_loop
            asyncio.set_event_loop(None)
            self.loop = None

    def tcp_server(self, server_prog, *,
                   family=socket.AF_INET,

            

Reported by Pylint.

Attribute '_active' defined outside __init__
Error

Line: 166 Column: 9

              class SocketThread(threading.Thread):

    def stop(self):
        self._active = False
        self.join()

    def __enter__(self):
        self.start()
        return self

            

Reported by Pylint.

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

Line: 179 Column: 5

              
class TestThreadedClient(SocketThread):

    def __init__(self, test, sock, prog, timeout):
        threading.Thread.__init__(self, None, None, 'test-client')
        self.daemon = True

        self._timeout = timeout
        self._sock = sock

            

Reported by Pylint.

__init__ method from a non direct base class 'Thread' is called
Error

Line: 180 Column: 9

              class TestThreadedClient(SocketThread):

    def __init__(self, test, sock, prog, timeout):
        threading.Thread.__init__(self, None, None, 'test-client')
        self.daemon = True

        self._timeout = timeout
        self._sock = sock
        self._active = True

            

Reported by Pylint.

Catching too general exception Exception
Error

Line: 192 Column: 16

                  def run(self):
        try:
            self._prog(TestSocketWrapper(self._sock))
        except Exception as ex:
            self._test._abort_socket_test(ex)


class TestThreadedServer(SocketThread):


            

Reported by Pylint.

Access to a protected member _abort_socket_test of a client class
Error

Line: 193 Column: 13

                      try:
            self._prog(TestSocketWrapper(self._sock))
        except Exception as ex:
            self._test._abort_socket_test(ex)


class TestThreadedServer(SocketThread):

    def __init__(self, test, sock, prog, timeout, max_clients):

            

Reported by Pylint.

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

Line: 198 Column: 5

              
class TestThreadedServer(SocketThread):

    def __init__(self, test, sock, prog, timeout, max_clients):
        threading.Thread.__init__(self, None, None, 'test-server')
        self.daemon = True

        self._clients = 0
        self._finished_clients = 0

            

Reported by Pylint.

Lib/email/_parseaddr.py
49 issues
bad operand type for unary -: NoneType
Error

Line: 166 Column: 24

                  if tzoffset:
        if tzoffset < 0:
            tzsign = -1
            tzoffset = -tzoffset
        else:
            tzsign = 1
        tzoffset = tzsign * ( (tzoffset//100)*3600 + (tzoffset % 100)*60)
    # Daylight Saving Time flag is set to -1, since DST is unknown.
    return [yy, mm, dd, thh, tmm, tss, 0, 1, -1, tzoffset]

            

Reported by Pylint.

bad operand type for unary -: NoneType
Error

Line: 166 Column: 24

                  if tzoffset:
        if tzoffset < 0:
            tzsign = -1
            tzoffset = -tzoffset
        else:
            tzsign = 1
        tzoffset = tzsign * ( (tzoffset//100)*3600 + (tzoffset % 100)*60)
    # Daylight Saving Time flag is set to -1, since DST is unknown.
    return [yy, mm, dd, thh, tmm, tss, 0, 1, -1, tzoffset]

            

Reported by Pylint.

Redefining built-in 'str'
Error

Line: 193 Column: 11

                      return t - data[9]


def quote(str):
    """Prepare string to be used in a quoted string.

    Turns backslash and double quote characters into quoted pairs.  These
    are the only characters that need to be quoted inside a quoted string.
    Does not add the surrounding double quotes.

            

Reported by Pylint.

Redefining name 'quote' from outer scope (line 193)
Error

Line: 429 Column: 9

                          return ''

        slist = ['']
        quote = False
        self.pos += 1
        while self.pos < len(self.field):
            if quote:
                slist.append(self.field[self.pos])
                quote = False

            

Reported by Pylint.

Multiple imports on one line (time, calendar)
Error

Line: 16 Column: 1

                  'quote',
    ]

import time, calendar

SPACE = ' '
EMPTYSTRING = ''
COMMASPACE = ', '


            

Reported by Pylint.

Either all return statements in a function should return an expression, or none of them should.
Error

Line: 45 Column: 1

                            }


def parsedate_tz(data):
    """Convert a date string to a time tuple.

    Accounts for military timezones.
    """
    res = _parsedate_tz(data)

            

Reported by Pylint.

Too many statements (87/50)
Error

Line: 57 Column: 1

                      res[9] = 0
    return tuple(res)

def _parsedate_tz(data):
    """Convert date to extended time tuple.

    The last (additional) element is the time zone offset in seconds, except if
    the timezone was specified as -0000.  In that case the last element is
    None.  This indicates a UTC timestamp that explicitly declaims knowledge of

            

Reported by Pylint.

Too many branches (36/12)
Error

Line: 57 Column: 1

                      res[9] = 0
    return tuple(res)

def _parsedate_tz(data):
    """Convert date to extended time tuple.

    The last (additional) element is the time zone offset in seconds, except if
    the timezone was specified as -0000.  In that case the last element is
    None.  This indicates a UTC timestamp that explicitly declaims knowledge of

            

Reported by Pylint.

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

Line: 84 Column: 9

                      if len(stuff) == 3:
            data = stuff + data[1:]
    if len(data) == 4:
        s = data[3]
        i = s.find('+')
        if i == -1:
            i = s.find('-')
        if i > 0:
            data[3:] = [s[:i], s[i:]]

            

Reported by Pylint.

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

Line: 95 Column: 22

                  if len(data) < 5:
        return None
    data = data[:5]
    [dd, mm, yy, tm, tz] = data
    mm = mm.lower()
    if mm not in _monthnames:
        dd, mm = mm, dd.lower()
        if mm not in _monthnames:
            return None

            

Reported by Pylint.

Lib/test/inspect_fodder.py
49 issues
Unused argument 'a'
Error

Line: 8 Column: 10

              # line 5

# line 7
def spam(a, /, b, c, d=3, e=4, f=5, *g, **h):
    eggs(b + d, c + f)

# line 11
def eggs(x, y):
    "A docstring."

            

Reported by Pylint.

Keyword argument before variable positional arguments list in the definition of spam function
Error

Line: 8 Column: 1

              # line 5

# line 7
def spam(a, /, b, c, d=3, e=4, f=5, *g, **h):
    eggs(b + d, c + f)

# line 11
def eggs(x, y):
    "A docstring."

            

Reported by Pylint.

Unused argument 'g'
Error

Line: 8 Column: 1

              # line 5

# line 7
def spam(a, /, b, c, d=3, e=4, f=5, *g, **h):
    eggs(b + d, c + f)

# line 11
def eggs(x, y):
    "A docstring."

            

Reported by Pylint.

Unused argument 'h'
Error

Line: 8 Column: 1

              # line 5

# line 7
def spam(a, /, b, c, d=3, e=4, f=5, *g, **h):
    eggs(b + d, c + f)

# line 11
def eggs(x, y):
    "A docstring."

            

Reported by Pylint.

Unused argument 'e'
Error

Line: 8 Column: 27

              # line 5

# line 7
def spam(a, /, b, c, d=3, e=4, f=5, *g, **h):
    eggs(b + d, c + f)

# line 11
def eggs(x, y):
    "A docstring."

            

Reported by Pylint.

Global variable 'fr' undefined at the module level
Error

Line: 14 Column: 5

              # line 11
def eggs(x, y):
    "A docstring."
    global fr, st
    fr = inspect.currentframe()
    st = inspect.stack()
    p = x
    q = y / 0


            

Reported by Pylint.

Global variable 'st' undefined at the module level
Error

Line: 14 Column: 5

              # line 11
def eggs(x, y):
    "A docstring."
    global fr, st
    fr = inspect.currentframe()
    st = inspect.stack()
    p = x
    q = y / 0


            

Reported by Pylint.

Unused variable 'p'
Error

Line: 17 Column: 5

                  global fr, st
    fr = inspect.currentframe()
    st = inspect.stack()
    p = x
    q = y / 0

# line 20
class StupidGit:
    """A longer,

            

Reported by Pylint.

Unused variable 'q'
Error

Line: 18 Column: 5

                  fr = inspect.currentframe()
    st = inspect.stack()
    p = x
    q = y / 0

# line 20
class StupidGit:
    """A longer,


            

Reported by Pylint.

No exception type(s) specified
Error

Line: 44 Column: 9

                  def argue(self, a, b, c):
        try:
            spam(a, b, c)
        except:
            self.ex = sys.exc_info()
            self.tr = inspect.trace()

    @property
    def contradiction(self):

            

Reported by Pylint.

Lib/tkinter/test/support.py
49 issues
Instance of 'AbstractDefaultRootTest' has no 'assertIsNotNone' member
Error

Line: 56 Column: 9

                  def _test_widget(self, constructor):
        # no master passing
        x = constructor()
        self.assertIsNotNone(tkinter._default_root)
        self.assertIs(x.master, tkinter._default_root)
        self.assertIs(x.tk, tkinter._default_root.tk)
        x.destroy()
        destroy_default_root()
        tkinter.NoDefaultRoot()

            

Reported by Pylint.

Instance of 'AbstractDefaultRootTest' has no 'assertIs' member
Error

Line: 57 Column: 9

                      # no master passing
        x = constructor()
        self.assertIsNotNone(tkinter._default_root)
        self.assertIs(x.master, tkinter._default_root)
        self.assertIs(x.tk, tkinter._default_root.tk)
        x.destroy()
        destroy_default_root()
        tkinter.NoDefaultRoot()
        self.assertRaises(RuntimeError, constructor)

            

Reported by Pylint.

Instance of 'AbstractDefaultRootTest' has no 'assertIs' member
Error

Line: 58 Column: 9

                      x = constructor()
        self.assertIsNotNone(tkinter._default_root)
        self.assertIs(x.master, tkinter._default_root)
        self.assertIs(x.tk, tkinter._default_root.tk)
        x.destroy()
        destroy_default_root()
        tkinter.NoDefaultRoot()
        self.assertRaises(RuntimeError, constructor)
        self.assertFalse(hasattr(tkinter, '_default_root'))

            

Reported by Pylint.

Instance of 'AbstractDefaultRootTest' has no 'assertRaises' member
Error

Line: 62 Column: 9

                      x.destroy()
        destroy_default_root()
        tkinter.NoDefaultRoot()
        self.assertRaises(RuntimeError, constructor)
        self.assertFalse(hasattr(tkinter, '_default_root'))


def destroy_default_root():
    if getattr(tkinter, '_default_root', None):

            

Reported by Pylint.

Instance of 'AbstractDefaultRootTest' has no 'assertFalse' member
Error

Line: 63 Column: 9

                      destroy_default_root()
        tkinter.NoDefaultRoot()
        self.assertRaises(RuntimeError, constructor)
        self.assertFalse(hasattr(tkinter, '_default_root'))


def destroy_default_root():
    if getattr(tkinter, '_default_root', None):
        tkinter._default_root.update_idletasks()

            

Reported by Pylint.

Unable to import '_tkinter'
Error

Line: 81 Column: 1

                  widget.event_generate('<ButtonRelease-1>', x=x, y=y)


import _tkinter
tcl_version = tuple(map(int, _tkinter.TCL_VERSION.split('.')))

def requires_tcl(*version):
    if len(version) <= 2:
        return unittest.skipUnless(tcl_version >= version,

            

Reported by Pylint.

Access to a protected member _support_default_root of a client class
Error

Line: 10 Column: 41

              
    @classmethod
    def setUpClass(cls):
        cls._old_support_default_root = tkinter._support_default_root
        destroy_default_root()
        tkinter.NoDefaultRoot()
        cls.root = tkinter.Tk()
        cls.wantobjects = cls.root.wantobjects()
        # De-maximize main window.

            

Reported by Pylint.

Access to a protected member _default_root of a client class
Error

Line: 28 Column: 9

                      cls.root.update_idletasks()
        cls.root.destroy()
        del cls.root
        tkinter._default_root = None
        tkinter._support_default_root = cls._old_support_default_root

    def setUp(self):
        self.root.deiconify()


            

Reported by Pylint.

Access to a protected member _support_default_root of a client class
Error

Line: 29 Column: 9

                      cls.root.destroy()
        del cls.root
        tkinter._default_root = None
        tkinter._support_default_root = cls._old_support_default_root

    def setUp(self):
        self.root.deiconify()

    def tearDown(self):

            

Reported by Pylint.

Access to a protected member _support_default_root of a client class
Error

Line: 43 Column: 42

              class AbstractDefaultRootTest:

    def setUp(self):
        self._old_support_default_root = tkinter._support_default_root
        destroy_default_root()
        tkinter._support_default_root = True
        self.wantobjects = tkinter.wantobjects

    def tearDown(self):

            

Reported by Pylint.

Lib/quopri.py
49 issues
Redefining built-in 'input'
Error

Line: 44 Column: 12

              


def encode(input, output, quotetabs, header=False):
    """Read 'input', apply quoted-printable encoding, and write to 'output'.

    'input' and 'output' are binary file objects. The 'quotetabs' flag
    indicates whether embedded tabs and spaces should be quoted. Note that
    line-ending tabs and spaces are always encoded, as per RFC 1521.

            

Reported by Pylint.

Redefining built-in 'input'
Error

Line: 117 Column: 12

              


def decode(input, output, header=False):
    """Read 'input', apply quoted-printable decoding, and write to 'output'.
    'input' and 'output' are binary file objects.
    If 'header' is true, decode underscore as space (per RFC 1522)."""

    if a2b_qp is not None:

            

Reported by Pylint.

Unused variable 'a'
Error

Line: 209 Column: 12

                      sys.exit(2)
    deco = False
    tabs = False
    for o, a in opts:
        if o == '-t': tabs = True
        if o == '-d': deco = True
    if tabs and deco:
        sys.stdout = sys.stderr
        print("-t and -d are mutually exclusive")

            

Reported by Pylint.

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

Line: 21 Column: 1

                  b2a_qp = None


def needsquoting(c, quotetabs, header):
    """Decide whether a particular byte ordinal needs to be quoted.

    The 'quotetabs' flag indicates whether embedded tabs and spaces should be
    quoted.  Note that line-ending tabs and spaces are always encoded, as per
    RFC 1521.

            

Reported by Pylint.

Use of assert detected. The enclosed code will be removed when compiling to optimised byte code.
Security

Line: 28
Suggestion: https://bandit.readthedocs.io/en/latest/plugins/b101_assert_used.html

                  quoted.  Note that line-ending tabs and spaces are always encoded, as per
    RFC 1521.
    """
    assert isinstance(c, bytes)
    if c in b' \t':
        return quotetabs
    # if header, we have to escape _ because _ is used to escape space
    if c == b'_':
        return header

            

Reported by Bandit.

Unnecessary parens after 'not' keyword
Error

Line: 34 Column: 1

                  # if header, we have to escape _ because _ is used to escape space
    if c == b'_':
        return header
    return c == ESCAPE or not (b' ' <= c <= b'~')

def quote(c):
    """Quote a single character."""
    assert isinstance(c, bytes) and len(c)==1
    c = ord(c)

            

Reported by Pylint.

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

Line: 36 Column: 1

                      return header
    return c == ESCAPE or not (b' ' <= c <= b'~')

def quote(c):
    """Quote a single character."""
    assert isinstance(c, bytes) and len(c)==1
    c = ord(c)
    return ESCAPE + bytes((HEX[c//16], HEX[c%16]))


            

Reported by Pylint.

Use of assert detected. The enclosed code will be removed when compiling to optimised byte code.
Security

Line: 38
Suggestion: https://bandit.readthedocs.io/en/latest/plugins/b101_assert_used.html

              
def quote(c):
    """Quote a single character."""
    assert isinstance(c, bytes) and len(c)==1
    c = ord(c)
    return ESCAPE + bytes((HEX[c//16], HEX[c%16]))




            

Reported by Bandit.

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

Line: 59 Column: 5

                      output.write(odata)
        return

    def write(s, output=output, lineEnd=b'\n'):
        # RFC 1521 requires that the line ending in a space or tab must have
        # that trailing character encoded.
        if s and s[-1:] in b' \t':
            output.write(s[:-1] + quote(s[-1:]) + lineEnd)
        elif s == b'.':

            

Reported by Pylint.

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

Line: 59 Column: 5

                      output.write(odata)
        return

    def write(s, output=output, lineEnd=b'\n'):
        # RFC 1521 requires that the line ending in a space or tab must have
        # that trailing character encoded.
        if s and s[-1:] in b' \t':
            output.write(s[:-1] + quote(s[-1:]) + lineEnd)
        elif s == b'.':

            

Reported by Pylint.

Lib/distutils/command/bdist_rpm.py
48 issues
Starting a process with a shell, possible injection detected, security issue.
Security injection

Line: 340
Suggestion: https://bandit.readthedocs.io/en/latest/plugins/b605_start_process_with_a_shell.html

                      q_cmd = r"rpm -q --qf '%s %s\n' --specfile '%s'" % (
            src_rpm, non_src_rpm, spec_path)

        out = os.popen(q_cmd)
        try:
            binary_rpms = []
            source_rpm = None
            while True:
                line = out.readline()

            

Reported by Bandit.

Value 'self.doc_files' doesn't support membership test
Error

Line: 220 Column: 61

                      self.ensure_string_list('doc_files')
        if isinstance(self.doc_files, list):
            for readme in ('README', 'README.txt'):
                if os.path.exists(readme) and readme not in self.doc_files:
                    self.doc_files.append(readme)

        self.ensure_string('release', "1")
        self.ensure_string('serial')   # should it be an int?


            

Reported by Pylint.

Wildcard import distutils.errors
Error

Line: 10 Column: 1

              from distutils.core import Command
from distutils.debug import DEBUG
from distutils.file_util import write_file
from distutils.errors import *
from distutils.sysconfig import get_python_version
from distutils import log

class bdist_rpm(Command):


            

Reported by Pylint.

Unused import DistutilsByteCompileError from wildcard import
Error

Line: 10 Column: 1

              from distutils.core import Command
from distutils.debug import DEBUG
from distutils.file_util import write_file
from distutils.errors import *
from distutils.sysconfig import get_python_version
from distutils import log

class bdist_rpm(Command):


            

Reported by Pylint.

Unused import UnknownFileError from wildcard import
Error

Line: 10 Column: 1

              from distutils.core import Command
from distutils.debug import DEBUG
from distutils.file_util import write_file
from distutils.errors import *
from distutils.sysconfig import get_python_version
from distutils import log

class bdist_rpm(Command):


            

Reported by Pylint.

Unused import LinkError from wildcard import
Error

Line: 10 Column: 1

              from distutils.core import Command
from distutils.debug import DEBUG
from distutils.file_util import write_file
from distutils.errors import *
from distutils.sysconfig import get_python_version
from distutils import log

class bdist_rpm(Command):


            

Reported by Pylint.

Unused import LibError from wildcard import
Error

Line: 10 Column: 1

              from distutils.core import Command
from distutils.debug import DEBUG
from distutils.file_util import write_file
from distutils.errors import *
from distutils.sysconfig import get_python_version
from distutils import log

class bdist_rpm(Command):


            

Reported by Pylint.

Unused import CompileError from wildcard import
Error

Line: 10 Column: 1

              from distutils.core import Command
from distutils.debug import DEBUG
from distutils.file_util import write_file
from distutils.errors import *
from distutils.sysconfig import get_python_version
from distutils import log

class bdist_rpm(Command):


            

Reported by Pylint.

Unused import PreprocessError from wildcard import
Error

Line: 10 Column: 1

              from distutils.core import Command
from distutils.debug import DEBUG
from distutils.file_util import write_file
from distutils.errors import *
from distutils.sysconfig import get_python_version
from distutils import log

class bdist_rpm(Command):


            

Reported by Pylint.

Unused import CCompilerError from wildcard import
Error

Line: 10 Column: 1

              from distutils.core import Command
from distutils.debug import DEBUG
from distutils.file_util import write_file
from distutils.errors import *
from distutils.sysconfig import get_python_version
from distutils import log

class bdist_rpm(Command):


            

Reported by Pylint.

Lib/unittest/test/test_break.py
48 issues
Instance of 'TestResult' has no 'breakCaught' member
Error

Line: 69 Column: 25

                          test(result)
        except KeyboardInterrupt:
            self.fail("KeyboardInterrupt not handled")
        self.assertTrue(result.breakCaught)


    def testSecondInterrupt(self):
        # Can't use skipIf decorator because the signal handler may have
        # been changed after defining this method.

            

Reported by Pylint.

Instance of 'TestResult' has no 'breakCaught' member
Error

Line: 95 Column: 25

                          pass
        else:
            self.fail("Second KeyboardInterrupt not raised")
        self.assertTrue(result.breakCaught)


    def testTwoResults(self):
        unittest.installHandler()


            

Reported by Pylint.

Access to a protected member _results of a client class
Error

Line: 23 Column: 9

              
    def tearDown(self):
        signal.signal(signal.SIGINT, self._default_handler)
        unittest.signals._results = weakref.WeakKeyDictionary()
        unittest.signals._interrupt_handler = None


    def testInstallHandler(self):
        default_handler = signal.getsignal(signal.SIGINT)

            

Reported by Pylint.

Access to a protected member _interrupt_handler of a client class
Error

Line: 24 Column: 9

                  def tearDown(self):
        signal.signal(signal.SIGINT, self._default_handler)
        unittest.signals._results = weakref.WeakKeyDictionary()
        unittest.signals._interrupt_handler = None


    def testInstallHandler(self):
        default_handler = signal.getsignal(signal.SIGINT)
        unittest.installHandler()

            

Reported by Pylint.

Access to a protected member _interrupt_handler of a client class
Error

Line: 38 Column: 25

                      except KeyboardInterrupt:
            self.fail("KeyboardInterrupt not handled")

        self.assertTrue(unittest.signals._interrupt_handler.called)

    def testRegisterResult(self):
        result = unittest.TestResult()
        self.assertNotIn(result, unittest.signals._results)


            

Reported by Pylint.

Access to a protected member _results of a client class
Error

Line: 42 Column: 34

              
    def testRegisterResult(self):
        result = unittest.TestResult()
        self.assertNotIn(result, unittest.signals._results)

        unittest.registerResult(result)
        try:
            self.assertIn(result, unittest.signals._results)
        finally:

            

Reported by Pylint.

Access to a protected member _results of a client class
Error

Line: 46 Column: 35

              
        unittest.registerResult(result)
        try:
            self.assertIn(result, unittest.signals._results)
        finally:
            unittest.removeResult(result)

    def testInterruptCaught(self):
        default_handler = signal.getsignal(signal.SIGINT)

            

Reported by Pylint.

Unused argument 'result'
Error

Line: 111 Column: 18

              
        result3 = unittest.TestResult()

        def test(result):
            pid = os.getpid()
            os.kill(pid, signal.SIGINT)

        try:
            test(result)

            

Reported by Pylint.

Access to a protected member _results of a client class
Error

Line: 154 Column: 31

                      runner = unittest.TextTestRunner(stream=io.StringIO())

        result = runner.run(unittest.TestSuite())
        self.assertIn(result, unittest.signals._results)

    def testWeakReferences(self):
        # Calling registerResult on a result should not keep it alive
        result = unittest.TestResult()
        unittest.registerResult(result)

            

Reported by Pylint.

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

Line: 204 Column: 13

                              return result

        class Program(unittest.TestProgram):
            def __init__(self, catchbreak):
                self.exit = False
                self.verbosity = verbosity
                self.failfast = failfast
                self.catchbreak = catchbreak
                self.tb_locals = False

            

Reported by Pylint.