✘✘ GRAYBYTE WORDPRESS FILE MANAGER ✘✘

​🇳​​🇦​​🇲​​🇪♯➤ beluga.o2switch.net ​🇻​♯➤ 4.18.0-553.123.2.lve.el8.x86_64 #1 SMP 🇾​♯➤ 2026

𝗛𝗢𝗠𝗘 𝗜𝗗 ♯➤ 185.154.139.77 ♯➤ 𝗔𝗗𝗠𝗜𝗡 𝗜𝗗 216.73.216.84
𝗢𝗣𝗧𝗜𝗢𝗡𝗦 ♯ CRL ♯➤ 𝗢𝗞 ┃ WGT ♯➤ 𝗢𝗞 ┃ SDO ♯➤ 𝗢𝗙𝗙 ┃ PKEX ♯➤ 𝗢𝗙𝗙
𝗗𝗘𝗔𝗖𝗧𝗜𝗩𝗔𝗧𝗘𝗗 ♯➤ 𝗔𝗟𝗟 𝗪𝗢𝗥𝗞𝗜𝗡𝗚....
𝗖𝗨𝗥𝗥𝗘𝗡𝗧 𝗙𝗜𝗟𝗘 : /opt/alt/python311/lib64/python3.11/test//test_ftplib.py
"""Test script for ftplib module."""

# Modified by Giampaolo Rodola' to test FTP class, IPv6 and TLS
# environment

import ftplib
import socket
import io
import errno
import os
import threading
import time
import unittest
try:
    import ssl
except ImportError:
    ssl = None

from unittest import mock, TestCase, skipUnless
from test import support
from test.support import threading_helper
from test.support import socket_helper
from test.support import warnings_helper
from test.support.socket_helper import HOST, HOSTv6


asynchat = warnings_helper.import_deprecated('asynchat')
asyncore = warnings_helper.import_deprecated('asyncore')


support.requires_working_socket(module=True)

TIMEOUT = support.LOOPBACK_TIMEOUT
DEFAULT_ENCODING = 'utf-8'
# the dummy data returned by server over the data channel when
# RETR, LIST, NLST, MLSD commands are issued
RETR_DATA = 'abcde\xB9\xB2\xB3\xA4\xA6\r\n' * 1000
LIST_DATA = 'foo\r\nbar\r\n non-ascii char \xAE\r\n'
NLST_DATA = 'foo\r\nbar\r\n non-ascii char \xAE\r\n'
MLSD_DATA = ("type=cdir;perm=el;unique==keVO1+ZF4; test\r\n"
             "type=pdir;perm=e;unique==keVO1+d?3; ..\r\n"
             "type=OS.unix=slink:/foobar;perm=;unique==keVO1+4G4; foobar\r\n"
             "type=OS.unix=chr-13/29;perm=;unique==keVO1+5G4; device\r\n"
             "type=OS.unix=blk-11/108;perm=;unique==keVO1+6G4; block\r\n"
             "type=file;perm=awr;unique==keVO1+8G4; writable\r\n"
             "type=dir;perm=cpmel;unique==keVO1+7G4; promiscuous\r\n"
             "type=dir;perm=;unique==keVO1+1t2; no-exec\r\n"
             "type=file;perm=r;unique==keVO1+EG4; two words\r\n"
             "type=file;perm=r;unique==keVO1+IH4;  leading space\r\n"
             "type=file;perm=r;unique==keVO1+1G4; file1\r\n"
             "type=dir;perm=cpmel;unique==keVO1+7G4; incoming\r\n"
             "type=file;perm=r;unique==keVO1+1G4; file2\r\n"
             "type=file;perm=r;unique==keVO1+1G4; file3\r\n"
             "type=file;perm=r;unique==keVO1+1G4; file4\r\n"
             "type=dir;perm=cpmel;unique==SGP1; dir \xAE non-ascii char\r\n"
             "type=file;perm=r;unique==SGP2; file \xAE non-ascii char\r\n")


def default_error_handler():
    # bpo-44359: Silently ignore socket errors. Such errors occur when a client
    # socket is closed, in TestFTPClass.tearDown() and makepasv() tests, and
    # the server gets an error on its side.
    pass


class DummyDTPHandler(asynchat.async_chat):
    dtp_conn_closed = False

    def __init__(self, conn, baseclass):
        asynchat.async_chat.__init__(self, conn)
        self.baseclass = baseclass
        self.baseclass.last_received_data = bytearray()
        self.encoding = baseclass.encoding

    def handle_read(self):
        new_data = self.recv(1024)
        self.baseclass.last_received_data += new_data

    def handle_close(self):
        # XXX: this method can be called many times in a row for a single
        # connection, including in clear-text (non-TLS) mode.
        # (behaviour witnessed with test_data_connection)
        if not self.dtp_conn_closed:
            self.baseclass.push('226 transfer complete')
            self.close()
            self.dtp_conn_closed = True

    def push(self, what):
        if self.baseclass.next_data is not None:
            what = self.baseclass.next_data
            self.baseclass.next_data = None
        if not what:
            return self.close_when_done()
        super(DummyDTPHandler, self).push(what.encode(self.encoding))

    def handle_error(self):
        default_error_handler()


class DummyFTPHandler(asynchat.async_chat):

    dtp_handler = DummyDTPHandler

    def __init__(self, conn, encoding=DEFAULT_ENCODING):
        asynchat.async_chat.__init__(self, conn)
        # tells the socket to handle urgent data inline (ABOR command)
        self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_OOBINLINE, 1)
        self.set_terminator(b"\r\n")
        self.in_buffer = []
        self.dtp = None
        self.last_received_cmd = None
        self.last_received_data = bytearray()
        self.next_response = ''
        self.next_data = None
        self.rest = None
        self.next_retr_data = RETR_DATA
        self.push('220 welcome')
        self.encoding = encoding
        # We use this as the string IPv4 address to direct the client
        # to in response to a PASV command.  To test security behavior.
        # https://bugs.python.org/issue43285/.
        self.fake_pasv_server_ip = '252.253.254.255'

    def collect_incoming_data(self, data):
        self.in_buffer.append(data)

    def found_terminator(self):
        line = b''.join(self.in_buffer).decode(self.encoding)
        self.in_buffer = []
        if self.next_response:
            self.push(self.next_response)
            self.next_response = ''
        cmd = line.split(' ')[0].lower()
        self.last_received_cmd = cmd
        space = line.find(' ')
        if space != -1:
            arg = line[space + 1:]
        else:
            arg = ""
        if hasattr(self, 'cmd_' + cmd):
            method = getattr(self, 'cmd_' + cmd)
            method(arg)
        else:
            self.push('550 command "%s" not understood.' %cmd)

    def handle_error(self):
        default_error_handler()

    def push(self, data):
        asynchat.async_chat.push(self, data.encode(self.encoding) + b'\r\n')

    def cmd_port(self, arg):
        addr = list(map(int, arg.split(',')))
        ip = '%d.%d.%d.%d' %tuple(addr[:4])
        port = (addr[4] * 256) + addr[5]
        s = socket.create_connection((ip, port), timeout=TIMEOUT)
        self.dtp = self.dtp_handler(s, baseclass=self)
        self.push('200 active data connection established')

    def cmd_pasv(self, arg):
        with socket.create_server((self.socket.getsockname()[0], 0)) as sock:
            sock.settimeout(TIMEOUT)
            port = sock.getsockname()[1]
            ip = self.fake_pasv_server_ip
            ip = ip.replace('.', ','); p1 = port / 256; p2 = port % 256
            self.push('227 entering passive mode (%s,%d,%d)' %(ip, p1, p2))
            conn, addr = sock.accept()
            self.dtp = self.dtp_handler(conn, baseclass=self)

    def cmd_eprt(self, arg):
        af, ip, port = arg.split(arg[0])[1:-1]
        port = int(port)
        s = socket.create_connection((ip, port), timeout=TIMEOUT)
        self.dtp = self.dtp_handler(s, baseclass=self)
        self.push('200 active data connection established')

    def cmd_epsv(self, arg):
        with socket.create_server((self.socket.getsockname()[0], 0),
                                  family=socket.AF_INET6) as sock:
            sock.settimeout(TIMEOUT)
            port = sock.getsockname()[1]
            self.push('229 entering extended passive mode (|||%d|)' %port)
            conn, addr = sock.accept()
            self.dtp = self.dtp_handler(conn, baseclass=self)

    def cmd_echo(self, arg):
        # sends back the received string (used by the test suite)
        self.push(arg)

    def cmd_noop(self, arg):
        self.push('200 noop ok')

    def cmd_user(self, arg):
        self.push('331 username ok')

    def cmd_pass(self, arg):
        self.push('230 password ok')

    def cmd_acct(self, arg):
        self.push('230 acct ok')

    def cmd_rnfr(self, arg):
        self.push('350 rnfr ok')

    def cmd_rnto(self, arg):
        self.push('250 rnto ok')

    def cmd_dele(self, arg):
        self.push('250 dele ok')

    def cmd_cwd(self, arg):
        self.push('250 cwd ok')

    def cmd_size(self, arg):
        self.push('250 1000')

    def cmd_mkd(self, arg):
        self.push('257 "%s"' %arg)

    def cmd_rmd(self, arg):
        self.push('250 rmd ok')

    def cmd_pwd(self, arg):
        self.push('257 "pwd ok"')

    def cmd_type(self, arg):
        self.push('200 type ok')

    def cmd_quit(self, arg):
        self.push('221 quit ok')
        self.close()

    def cmd_abor(self, arg):
        self.push('226 abor ok')

    def cmd_stor(self, arg):
        self.push('125 stor ok')

    def cmd_rest(self, arg):
        self.rest = arg
        self.push('350 rest ok')

    def cmd_retr(self, arg):
        self.push('125 retr ok')
        if self.rest is not None:
            offset = int(self.rest)
        else:
            offset = 0
        self.dtp.push(self.next_retr_data[offset:])
        self.dtp.close_when_done()
        self.rest = None

    def cmd_list(self, arg):
        self.push('125 list ok')
        self.dtp.push(LIST_DATA)
        self.dtp.close_when_done()

    def cmd_nlst(self, arg):
        self.push('125 nlst ok')
        self.dtp.push(NLST_DATA)
        self.dtp.close_when_done()

    def cmd_opts(self, arg):
        self.push('200 opts ok')

    def cmd_mlsd(self, arg):
        self.push('125 mlsd ok')
        self.dtp.push(MLSD_DATA)
        self.dtp.close_when_done()

    def cmd_setlongretr(self, arg):
        # For testing. Next RETR will return long line.
        self.next_retr_data = 'x' * int(arg)
        self.push('125 setlongretr ok')


class DummyFTPServer(asyncore.dispatcher, threading.Thread):

    handler = DummyFTPHandler

    def __init__(self, address, af=socket.AF_INET, encoding=DEFAULT_ENCODING):
        threading.Thread.__init__(self)
        asyncore.dispatcher.__init__(self)
        self.daemon = True
        self.create_socket(af, socket.SOCK_STREAM)
        self.bind(address)
        self.listen(5)
        self.active = False
        self.active_lock = threading.Lock()
        self.host, self.port = self.socket.getsockname()[:2]
        self.handler_instance = None
        self.encoding = encoding

    def start(self):
        assert not self.active
        self.__flag = threading.Event()
        threading.Thread.start(self)
        self.__flag.wait()

    def run(self):
        self.active = True
        self.__flag.set()
        while self.active and asyncore.socket_map:
            self.active_lock.acquire()
            asyncore.loop(timeout=0.1, count=1)
            self.active_lock.release()
        asyncore.close_all(ignore_all=True)

    def stop(self):
        assert self.active
        self.active = False
        self.join()

    def handle_accepted(self, conn, addr):
        self.handler_instance = self.handler(conn, encoding=self.encoding)

    def handle_connect(self):
        self.close()
    handle_read = handle_connect

    def writable(self):
        return 0

    def handle_error(self):
        default_error_handler()


if ssl is not None:

    CERTFILE = os.path.join(os.path.dirname(__file__), "certdata", "keycert3.pem")
    CAFILE = os.path.join(os.path.dirname(__file__), "certdata", "pycacert.pem")

    class SSLConnection(asyncore.dispatcher):
        """An asyncore.dispatcher subclass supporting TLS/SSL."""

        _ssl_accepting = False
        _ssl_closing = False

        def secure_connection(self):
            context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
            context.load_cert_chain(CERTFILE)
            socket = context.wrap_socket(self.socket,
                                         suppress_ragged_eofs=False,
                                         server_side=True,
                                         do_handshake_on_connect=False)
            self.del_channel()
            self.set_socket(socket)
            self._ssl_accepting = True

        def _do_ssl_handshake(self):
            try:
                self.socket.do_handshake()
            except ssl.SSLError as err:
                if err.args[0] in (ssl.SSL_ERROR_WANT_READ,
                                   ssl.SSL_ERROR_WANT_WRITE):
                    return
                elif err.args[0] == ssl.SSL_ERROR_EOF:
                    return self.handle_close()
                # TODO: SSLError does not expose alert information
                elif "SSLV3_ALERT_BAD_CERTIFICATE" in err.args[1]:
                    return self.handle_close()
                raise
            except OSError as err:
                if err.args[0] == errno.ECONNABORTED:
                    return self.handle_close()
            else:
                self._ssl_accepting = False

        def _do_ssl_shutdown(self):
            self._ssl_closing = True
            try:
                self.socket = self.socket.unwrap()
            except ssl.SSLError as err:
                if err.args[0] in (ssl.SSL_ERROR_WANT_READ,
                                   ssl.SSL_ERROR_WANT_WRITE):
                    return
            except OSError:
                # Any "socket error" corresponds to a SSL_ERROR_SYSCALL return
                # from OpenSSL's SSL_shutdown(), corresponding to a
                # closed socket condition. See also:
                # http://www.mail-archive.com/openssl-users@openssl.org/msg60710.html
                pass
            self._ssl_closing = False
            if getattr(self, '_ccc', False) is False:
                super(SSLConnection, self).close()
            else:
                pass

        def handle_read_event(self):
            if self._ssl_accepting:
                self._do_ssl_handshake()
            elif self._ssl_closing:
                self._do_ssl_shutdown()
            else:
                super(SSLConnection, self).handle_read_event()

        def handle_write_event(self):
            if self._ssl_accepting:
                self._do_ssl_handshake()
            elif self._ssl_closing:
                self._do_ssl_shutdown()
            else:
                super(SSLConnection, self).handle_write_event()

        def send(self, data):
            try:
                return super(SSLConnection, self).send(data)
            except ssl.SSLError as err:
                if err.args[0] in (ssl.SSL_ERROR_EOF, ssl.SSL_ERROR_ZERO_RETURN,
                                   ssl.SSL_ERROR_WANT_READ,
                                   ssl.SSL_ERROR_WANT_WRITE):
                    return 0
                raise

        def recv(self, buffer_size):
            try:
                return super(SSLConnection, self).recv(buffer_size)
            except ssl.SSLError as err:
                if err.args[0] in (ssl.SSL_ERROR_WANT_READ,
                                   ssl.SSL_ERROR_WANT_WRITE):
                    return b''
                if err.args[0] in (ssl.SSL_ERROR_EOF, ssl.SSL_ERROR_ZERO_RETURN):
                    self.handle_close()
                    return b''
                raise

        def handle_error(self):
            default_error_handler()

        def close(self):
            if (isinstance(self.socket, ssl.SSLSocket) and
                    self.socket._sslobj is not None):
                self._do_ssl_shutdown()
            else:
                super(SSLConnection, self).close()


    class DummyTLS_DTPHandler(SSLConnection, DummyDTPHandler):
        """A DummyDTPHandler subclass supporting TLS/SSL."""

        def __init__(self, conn, baseclass):
            DummyDTPHandler.__init__(self, conn, baseclass)
            if self.baseclass.secure_data_channel:
                self.secure_connection()


    class DummyTLS_FTPHandler(SSLConnection, DummyFTPHandler):
        """A DummyFTPHandler subclass supporting TLS/SSL."""

        dtp_handler = DummyTLS_DTPHandler

        def __init__(self, conn, encoding=DEFAULT_ENCODING):
            DummyFTPHandler.__init__(self, conn, encoding=encoding)
            self.secure_data_channel = False
            self._ccc = False

        def cmd_auth(self, line):
            """Set up secure control channel."""
            self.push('234 AUTH TLS successful')
            self.secure_connection()

        def cmd_ccc(self, line):
            self.push('220 Reverting back to clear-text')
            self._ccc = True
            self._do_ssl_shutdown()

        def cmd_pbsz(self, line):
            """Negotiate size of buffer for secure data transfer.
            For TLS/SSL the only valid value for the parameter is '0'.
            Any other value is accepted but ignored.
            """
            self.push('200 PBSZ=0 successful.')

        def cmd_prot(self, line):
            """Setup un/secure data channel."""
            arg = line.upper()
            if arg == 'C':
                self.push('200 Protection set to Clear')
                self.secure_data_channel = False
            elif arg == 'P':
                self.push('200 Protection set to Private')
                self.secure_data_channel = True
            else:
                self.push("502 Unrecognized PROT type (use C or P).")


    class DummyTLS_FTPServer(DummyFTPServer):
        handler = DummyTLS_FTPHandler


class TestFTPClass(TestCase):

    def setUp(self, encoding=DEFAULT_ENCODING):
        self.server = DummyFTPServer((HOST, 0), encoding=encoding)
        self.server.start()
        self.client = ftplib.FTP(timeout=TIMEOUT, encoding=encoding)
        self.client.connect(self.server.host, self.server.port)

    def tearDown(self):
        self.client.close()
        self.server.stop()
        # Explicitly clear the attribute to prevent dangling thread
        self.server = None
        asyncore.close_all(ignore_all=True)

    def check_data(self, received, expected):
        self.assertEqual(len(received), len(expected))
        self.assertEqual(received, expected)

    def test_getwelcome(self):
        self.assertEqual(self.client.getwelcome(), '220 welcome')

    def test_sanitize(self):
        self.assertEqual(self.client.sanitize('foo'), repr('foo'))
        self.assertEqual(self.client.sanitize('pass 12345'), repr('pass *****'))
        self.assertEqual(self.client.sanitize('PASS 12345'), repr('PASS *****'))

    def test_exceptions(self):
        self.assertRaises(ValueError, self.client.sendcmd, 'echo 40\r\n0')
        self.assertRaises(ValueError, self.client.sendcmd, 'echo 40\n0')
        self.assertRaises(ValueError, self.client.sendcmd, 'echo 40\r0')
        self.assertRaises(ftplib.error_temp, self.client.sendcmd, 'echo 400')
        self.assertRaises(ftplib.error_temp, self.client.sendcmd, 'echo 499')
        self.assertRaises(ftplib.error_perm, self.client.sendcmd, 'echo 500')
        self.assertRaises(ftplib.error_perm, self.client.sendcmd, 'echo 599')
        self.assertRaises(ftplib.error_proto, self.client.sendcmd, 'echo 999')

    def test_all_errors(self):
        exceptions = (ftplib.error_reply, ftplib.error_temp, ftplib.error_perm,
                      ftplib.error_proto, ftplib.Error, OSError,
                      EOFError)
        for x in exceptions:
            try:
                raise x('exception not included in all_errors set')
            except ftplib.all_errors:
                pass

    def test_set_pasv(self):
        # passive mode is supposed to be enabled by default
        self.assertTrue(self.client.passiveserver)
        self.client.set_pasv(True)
        self.assertTrue(self.client.passiveserver)
        self.client.set_pasv(False)
        self.assertFalse(self.client.passiveserver)

    def test_voidcmd(self):
        self.assertEqual(self.client.voidcmd('echo 200'), '200')
        self.assertEqual(self.client.voidcmd('echo 299'), '299')
        self.assertRaises(ftplib.error_reply, self.client.voidcmd, 'echo 199')
        self.assertRaises(ftplib.error_reply, self.client.voidcmd, 'echo 300')

    def test_login(self):
        self.client.login()

    def test_acct(self):
        self.client.acct('passwd')

    def test_rename(self):
        self.client.rename('a', 'b')
        self.server.handler_instance.next_response = '200'
        self.assertRaises(ftplib.error_reply, self.client.rename, 'a', 'b')

    def test_delete(self):
        self.client.delete('foo')
        self.server.handler_instance.next_response = '199'
        self.assertRaises(ftplib.error_reply, self.client.delete, 'foo')

    def test_size(self):
        self.client.size('foo')

    def test_mkd(self):
        dir = self.client.mkd('/foo')
        self.assertEqual(dir, '/foo')

    def test_rmd(self):
        self.client.rmd('foo')

    def test_cwd(self):
        dir = self.client.cwd('/foo')
        self.assertEqual(dir, '250 cwd ok')

    def test_pwd(self):
        dir = self.client.pwd()
        self.assertEqual(dir, 'pwd ok')

    def test_quit(self):
        self.assertEqual(self.client.quit(), '221 quit ok')
        # Ensure the connection gets closed; sock attribute should be None
        self.assertEqual(self.client.sock, None)

    def test_abort(self):
        self.client.abort()

    def test_retrbinary(self):
        received = []
        self.client.retrbinary('retr', received.append)
        self.check_data(b''.join(received),
                        RETR_DATA.encode(self.client.encoding))

    def test_retrbinary_rest(self):
        for rest in (0, 10, 20):
            received = []
            self.client.retrbinary('retr', received.append, rest=rest)
            self.check_data(b''.join(received),
                            RETR_DATA[rest:].encode(self.client.encoding))

    def test_retrlines(self):
        received = []
        self.client.retrlines('retr', received.append)
        self.check_data(''.join(received), RETR_DATA.replace('\r\n', ''))

    def test_storbinary(self):
        f = io.BytesIO(RETR_DATA.encode(self.client.encoding))
        self.client.storbinary('stor', f)
        self.check_data(self.server.handler_instance.last_received_data,
                        RETR_DATA.encode(self.server.encoding))
        # test new callback arg
        flag = []
        f.seek(0)
        self.client.storbinary('stor', f, callback=lambda x: flag.append(None))
        self.assertTrue(flag)

    def test_storbinary_rest(self):
        data = RETR_DATA.replace('\r\n', '\n').encode(self.client.encoding)
        f = io.BytesIO(data)
        for r in (30, '30'):
            f.seek(0)
            self.client.storbinary('stor', f, rest=r)
            self.assertEqual(self.server.handler_instance.rest, str(r))

    def test_storlines(self):
        data = RETR_DATA.replace('\r\n', '\n').encode(self.client.encoding)
        f = io.BytesIO(data)
        self.client.storlines('stor', f)
        self.check_data(self.server.handler_instance.last_received_data,
                        RETR_DATA.encode(self.server.encoding))
        # test new callback arg
        flag = []
        f.seek(0)
        self.client.storlines('stor foo', f, callback=lambda x: flag.append(None))
        self.assertTrue(flag)

        f = io.StringIO(RETR_DATA.replace('\r\n', '\n'))
        # storlines() expects a binary file, not a text file
        with warnings_helper.check_warnings(('', BytesWarning), quiet=True):
            self.assertRaises(TypeError, self.client.storlines, 'stor foo', f)

    def test_nlst(self):
        self.client.nlst()
        self.assertEqual(self.client.nlst(), NLST_DATA.split('\r\n')[:-1])

    def test_dir(self):
        l = []
        self.client.dir(l.append)
        self.assertEqual(''.join(l), LIST_DATA.replace('\r\n', ''))

    def test_mlsd(self):
        list(self.client.mlsd())
        list(self.client.mlsd(path='/'))
        list(self.client.mlsd(path='/', facts=['size', 'type']))

        ls = list(self.client.mlsd())
        for name, facts in ls:
            self.assertIsInstance(name, str)
            self.assertIsInstance(facts, dict)
            self.assertTrue(name)
            self.assertIn('type', facts)
            self.assertIn('perm', facts)
            self.assertIn('unique', facts)

        def set_data(data):
            self.server.handler_instance.next_data = data

        def test_entry(line, type=None, perm=None, unique=None, name=None):
            type = 'type' if type is None else type
            perm = 'perm' if perm is None else perm
            unique = 'unique' if unique is None else unique
            name = 'name' if name is None else name
            set_data(line)
            _name, facts = next(self.client.mlsd())
            self.assertEqual(_name, name)
            self.assertEqual(facts['type'], type)
            self.assertEqual(facts['perm'], perm)
            self.assertEqual(facts['unique'], unique)

        # plain
        test_entry('type=type;perm=perm;unique=unique; name\r\n')
        # "=" in fact value
        test_entry('type=ty=pe;perm=perm;unique=unique; name\r\n', type="ty=pe")
        test_entry('type==type;perm=perm;unique=unique; name\r\n', type="=type")
        test_entry('type=t=y=pe;perm=perm;unique=unique; name\r\n', type="t=y=pe")
        test_entry('type=====;perm=perm;unique=unique; name\r\n', type="====")
        # spaces in name
        test_entry('type=type;perm=perm;unique=unique; na me\r\n', name="na me")
        test_entry('type=type;perm=perm;unique=unique; name \r\n', name="name ")
        test_entry('type=type;perm=perm;unique=unique;  name\r\n', name=" name")
        test_entry('type=type;perm=perm;unique=unique; n am  e\r\n', name="n am  e")
        # ";" in name
        test_entry('type=type;perm=perm;unique=unique; na;me\r\n', name="na;me")
        test_entry('type=type;perm=perm;unique=unique; ;name\r\n', name=";name")
        test_entry('type=type;perm=perm;unique=unique; ;name;\r\n', name=";name;")
        test_entry('type=type;perm=perm;unique=unique; ;;;;\r\n', name=";;;;")
        # case sensitiveness
        set_data('Type=type;TyPe=perm;UNIQUE=unique; name\r\n')
        _name, facts = next(self.client.mlsd())
        for x in facts:
            self.assertTrue(x.islower())
        # no data (directory empty)
        set_data('')
        self.assertRaises(StopIteration, next, self.client.mlsd())
        set_data('')
        for x in self.client.mlsd():
            self.fail("unexpected data %s" % x)

    def test_makeport(self):
        with self.client.makeport():
            # IPv4 is in use, just make sure send_eprt has not been used
            self.assertEqual(self.server.handler_instance.last_received_cmd,
                                'port')

    def test_makepasv(self):
        host, port = self.client.makepasv()
        conn = socket.create_connection((host, port), timeout=TIMEOUT)
        conn.close()
        # IPv4 is in use, just make sure send_epsv has not been used
        self.assertEqual(self.server.handler_instance.last_received_cmd, 'pasv')

    def test_makepasv_issue43285_security_disabled(self):
        """Test the opt-in to the old vulnerable behavior."""
        self.client.trust_server_pasv_ipv4_address = True
        bad_host, port = self.client.makepasv()
        self.assertEqual(
                bad_host, self.server.handler_instance.fake_pasv_server_ip)
        # Opening and closing a connection keeps the dummy server happy
        # instead of timing out on accept.
        socket.create_connection((self.client.sock.getpeername()[0], port),
                                 timeout=TIMEOUT).close()

    def test_makepasv_issue43285_security_enabled_default(self):
        self.assertFalse(self.client.trust_server_pasv_ipv4_address)
        trusted_host, port = self.client.makepasv()
        self.assertNotEqual(
                trusted_host, self.server.handler_instance.fake_pasv_server_ip)
        # Opening and closing a connection keeps the dummy server happy
        # instead of timing out on accept.
        socket.create_connection((trusted_host, port), timeout=TIMEOUT).close()

    def test_with_statement(self):
        self.client.quit()

        def is_client_connected():
            if self.client.sock is None:
                return False
            try:
                self.client.sendcmd('noop')
            except (OSError, EOFError):
                return False
            return True

        # base test
        with ftplib.FTP(timeout=TIMEOUT) as self.client:
            self.client.connect(self.server.host, self.server.port)
            self.client.sendcmd('noop')
            self.assertTrue(is_client_connected())
        self.assertEqual(self.server.handler_instance.last_received_cmd, 'quit')
        self.assertFalse(is_client_connected())

        # QUIT sent inside the with block
        with ftplib.FTP(timeout=TIMEOUT) as self.client:
            self.client.connect(self.server.host, self.server.port)
            self.client.sendcmd('noop')
            self.client.quit()
        self.assertEqual(self.server.handler_instance.last_received_cmd, 'quit')
        self.assertFalse(is_client_connected())

        # force a wrong response code to be sent on QUIT: error_perm
        # is expected and the connection is supposed to be closed
        try:
            with ftplib.FTP(timeout=TIMEOUT) as self.client:
                self.client.connect(self.server.host, self.server.port)
                self.client.sendcmd('noop')
                self.server.handler_instance.next_response = '550 error on quit'
        except ftplib.error_perm as err:
            self.assertEqual(str(err), '550 error on quit')
        else:
            self.fail('Exception not raised')
        # needed to give the threaded server some time to set the attribute
        # which otherwise would still be == 'noop'
        time.sleep(0.1)
        self.assertEqual(self.server.handler_instance.last_received_cmd, 'quit')
        self.assertFalse(is_client_connected())

    def test_source_address(self):
        self.client.quit()
        port = socket_helper.find_unused_port()
        try:
            self.client.connect(self.server.host, self.server.port,
                                source_address=(HOST, port))
            self.assertEqual(self.client.sock.getsockname()[1], port)
            self.client.quit()
        except OSError as e:
            if e.errno == errno.EADDRINUSE:
                self.skipTest("couldn't bind to port %d" % port)
            raise

    def test_source_address_passive_connection(self):
        port = socket_helper.find_unused_port()
        self.client.source_address = (HOST, port)
        try:
            with self.client.transfercmd('list') as sock:
                self.assertEqual(sock.getsockname()[1], port)
        except OSError as e:
            if e.errno == errno.EADDRINUSE:
                self.skipTest("couldn't bind to port %d" % port)
            raise

    def test_parse257(self):
        self.assertEqual(ftplib.parse257('257 "/foo/bar"'), '/foo/bar')
        self.assertEqual(ftplib.parse257('257 "/foo/bar" created'), '/foo/bar')
        self.assertEqual(ftplib.parse257('257 ""'), '')
        self.assertEqual(ftplib.parse257('257 "" created'), '')
        self.assertRaises(ftplib.error_reply, ftplib.parse257, '250 "/foo/bar"')
        # The 257 response is supposed to include the directory
        # name and in case it contains embedded double-quotes
        # they must be doubled (see RFC-959, chapter 7, appendix 2).
        self.assertEqual(ftplib.parse257('257 "/foo/b""ar"'), '/foo/b"ar')
        self.assertEqual(ftplib.parse257('257 "/foo/b""ar" created'), '/foo/b"ar')

    def test_line_too_long(self):
        self.assertRaises(ftplib.Error, self.client.sendcmd,
                          'x' * self.client.maxline * 2)

    def test_retrlines_too_long(self):
        self.client.sendcmd('SETLONGRETR %d' % (self.client.maxline * 2))
        received = []
        self.assertRaises(ftplib.Error,
                          self.client.retrlines, 'retr', received.append)

    def test_storlines_too_long(self):
        f = io.BytesIO(b'x' * self.client.maxline * 2)
        self.assertRaises(ftplib.Error, self.client.storlines, 'stor', f)

    def test_encoding_param(self):
        encodings = ['latin-1', 'utf-8']
        for encoding in encodings:
            with self.subTest(encoding=encoding):
                self.tearDown()
                self.setUp(encoding=encoding)
                self.assertEqual(encoding, self.client.encoding)
                self.test_retrbinary()
                self.test_storbinary()
                self.test_retrlines()
                new_dir = self.client.mkd('/non-ascii dir \xAE')
                self.check_data(new_dir, '/non-ascii dir \xAE')
        # Check default encoding
        client = ftplib.FTP(timeout=TIMEOUT)
        self.assertEqual(DEFAULT_ENCODING, client.encoding)


@skipUnless(socket_helper.IPV6_ENABLED, "IPv6 not enabled")
class TestIPv6Environment(TestCase):

    def setUp(self):
        self.server = DummyFTPServer((HOSTv6, 0),
                                     af=socket.AF_INET6,
                                     encoding=DEFAULT_ENCODING)
        self.server.start()
        self.client = ftplib.FTP(timeout=TIMEOUT, encoding=DEFAULT_ENCODING)
        self.client.connect(self.server.host, self.server.port)

    def tearDown(self):
        self.client.close()
        self.server.stop()
        # Explicitly clear the attribute to prevent dangling thread
        self.server = None
        asyncore.close_all(ignore_all=True)

    def test_af(self):
        self.assertEqual(self.client.af, socket.AF_INET6)

    def test_makeport(self):
        with self.client.makeport():
            self.assertEqual(self.server.handler_instance.last_received_cmd,
                                'eprt')

    def test_makepasv(self):
        host, port = self.client.makepasv()
        conn = socket.create_connection((host, port), timeout=TIMEOUT)
        conn.close()
        self.assertEqual(self.server.handler_instance.last_received_cmd, 'epsv')

    def test_transfer(self):
        def retr():
            received = []
            self.client.retrbinary('retr', received.append)
            self.assertEqual(b''.join(received),
                             RETR_DATA.encode(self.client.encoding))
        self.client.set_pasv(True)
        retr()
        self.client.set_pasv(False)
        retr()


@skipUnless(ssl, "SSL not available")
class TestTLS_FTPClassMixin(TestFTPClass):
    """Repeat TestFTPClass tests starting the TLS layer for both control
    and data connections first.
    """

    def setUp(self, encoding=DEFAULT_ENCODING):
        self.server = DummyTLS_FTPServer((HOST, 0), encoding=encoding)
        self.server.start()
        self.client = ftplib.FTP_TLS(timeout=TIMEOUT, encoding=encoding)
        self.client.connect(self.server.host, self.server.port)
        # enable TLS
        self.client.auth()
        self.client.prot_p()


@skipUnless(ssl, "SSL not available")
class TestTLS_FTPClass(TestCase):
    """Specific TLS_FTP class tests."""

    def setUp(self, encoding=DEFAULT_ENCODING):
        self.server = DummyTLS_FTPServer((HOST, 0), encoding=encoding)
        self.server.start()
        self.client = ftplib.FTP_TLS(timeout=TIMEOUT)
        self.client.connect(self.server.host, self.server.port)

    def tearDown(self):
        self.client.close()
        self.server.stop()
        # Explicitly clear the attribute to prevent dangling thread
        self.server = None
        asyncore.close_all(ignore_all=True)

    def test_control_connection(self):
        self.assertNotIsInstance(self.client.sock, ssl.SSLSocket)
        self.client.auth()
        self.assertIsInstance(self.client.sock, ssl.SSLSocket)

    def test_data_connection(self):
        # clear text
        with self.client.transfercmd('list') as sock:
            self.assertNotIsInstance(sock, ssl.SSLSocket)
            self.assertEqual(sock.recv(1024),
                             LIST_DATA.encode(self.client.encoding))
        self.assertEqual(self.client.voidresp(), "226 transfer complete")

        # secured, after PROT P
        self.client.prot_p()
        with self.client.transfercmd('list') as sock:
            self.assertIsInstance(sock, ssl.SSLSocket)
            # consume from SSL socket to finalize handshake and avoid
            # "SSLError [SSL] shutdown while in init"
            self.assertEqual(sock.recv(1024),
                             LIST_DATA.encode(self.client.encoding))
        self.assertEqual(self.client.voidresp(), "226 transfer complete")

        # PROT C is issued, the connection must be in cleartext again
        self.client.prot_c()
        with self.client.transfercmd('list') as sock:
            self.assertNotIsInstance(sock, ssl.SSLSocket)
            self.assertEqual(sock.recv(1024),
                             LIST_DATA.encode(self.client.encoding))
        self.assertEqual(self.client.voidresp(), "226 transfer complete")

    def test_login(self):
        # login() is supposed to implicitly secure the control connection
        self.assertNotIsInstance(self.client.sock, ssl.SSLSocket)
        self.client.login()
        self.assertIsInstance(self.client.sock, ssl.SSLSocket)
        # make sure that AUTH TLS doesn't get issued again
        self.client.login()

    def test_auth_issued_twice(self):
        self.client.auth()
        self.assertRaises(ValueError, self.client.auth)

    def test_context(self):
        self.client.quit()
        ctx = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
        ctx.check_hostname = False
        ctx.verify_mode = ssl.CERT_NONE
        self.assertRaises(ValueError, ftplib.FTP_TLS, keyfile=CERTFILE,
                          context=ctx)
        self.assertRaises(ValueError, ftplib.FTP_TLS, certfile=CERTFILE,
                          context=ctx)
        self.assertRaises(ValueError, ftplib.FTP_TLS, certfile=CERTFILE,
                          keyfile=CERTFILE, context=ctx)

        self.client = ftplib.FTP_TLS(context=ctx, timeout=TIMEOUT)
        self.client.connect(self.server.host, self.server.port)
        self.assertNotIsInstance(self.client.sock, ssl.SSLSocket)
        self.client.auth()
        self.assertIs(self.client.sock.context, ctx)
        self.assertIsInstance(self.client.sock, ssl.SSLSocket)

        self.client.prot_p()
        with self.client.transfercmd('list') as sock:
            self.assertIs(sock.context, ctx)
            self.assertIsInstance(sock, ssl.SSLSocket)

    def test_ccc(self):
        self.assertRaises(ValueError, self.client.ccc)
        self.client.login(secure=True)
        self.assertIsInstance(self.client.sock, ssl.SSLSocket)
        self.client.ccc()
        self.assertRaises(ValueError, self.client.sock.unwrap)

    @skipUnless(False, "FIXME: bpo-32706")
    def test_check_hostname(self):
        self.client.quit()
        ctx = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
        self.assertEqual(ctx.verify_mode, ssl.CERT_REQUIRED)
        self.assertEqual(ctx.check_hostname, True)
        ctx.load_verify_locations(CAFILE)
        self.client = ftplib.FTP_TLS(context=ctx, timeout=TIMEOUT)

        # 127.0.0.1 doesn't match SAN
        self.client.connect(self.server.host, self.server.port)
        with self.assertRaises(ssl.CertificateError):
            self.client.auth()
        # exception quits connection

        self.client.connect(self.server.host, self.server.port)
        self.client.prot_p()
        with self.assertRaises(ssl.CertificateError):
            with self.client.transfercmd("list") as sock:
                pass
        self.client.quit()

        self.client.connect("localhost", self.server.port)
        self.client.auth()
        self.client.quit()

        self.client.connect("localhost", self.server.port)
        self.client.prot_p()
        with self.client.transfercmd("list") as sock:
            pass


class TestTimeouts(TestCase):

    def setUp(self):
        self.evt = threading.Event()
        self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.sock.settimeout(20)
        self.port = socket_helper.bind_port(self.sock)
        self.server_thread = threading.Thread(target=self.server)
        self.server_thread.daemon = True
        self.server_thread.start()
        # Wait for the server to be ready.
        self.evt.wait()
        self.evt.clear()
        self.old_port = ftplib.FTP.port
        ftplib.FTP.port = self.port

    def tearDown(self):
        ftplib.FTP.port = self.old_port
        self.server_thread.join()
        # Explicitly clear the attribute to prevent dangling thread
        self.server_thread = None

    def server(self):
        # This method sets the evt 3 times:
        #  1) when the connection is ready to be accepted.
        #  2) when it is safe for the caller to close the connection
        #  3) when we have closed the socket
        self.sock.listen()
        # (1) Signal the caller that we are ready to accept the connection.
        self.evt.set()
        try:
            conn, addr = self.sock.accept()
        except TimeoutError:
            pass
        else:
            conn.sendall(b"1 Hola mundo\n")
            conn.shutdown(socket.SHUT_WR)
            # (2) Signal the caller that it is safe to close the socket.
            self.evt.set()
            conn.close()
        finally:
            self.sock.close()

    def testTimeoutDefault(self):
        # default -- use global socket timeout
        self.assertIsNone(socket.getdefaulttimeout())
        socket.setdefaulttimeout(30)
        try:
            ftp = ftplib.FTP(HOST)
        finally:
            socket.setdefaulttimeout(None)
        self.assertEqual(ftp.sock.gettimeout(), 30)
        self.evt.wait()
        ftp.close()

    def testTimeoutNone(self):
        # no timeout -- do not use global socket timeout
        self.assertIsNone(socket.getdefaulttimeout())
        socket.setdefaulttimeout(30)
        try:
            ftp = ftplib.FTP(HOST, timeout=None)
        finally:
            socket.setdefaulttimeout(None)
        self.assertIsNone(ftp.sock.gettimeout())
        self.evt.wait()
        ftp.close()

    def testTimeoutValue(self):
        # a value
        ftp = ftplib.FTP(HOST, timeout=30)
        self.assertEqual(ftp.sock.gettimeout(), 30)
        self.evt.wait()
        ftp.close()

        # bpo-39259
        with self.assertRaises(ValueError):
            ftplib.FTP(HOST, timeout=0)

    def testTimeoutConnect(self):
        ftp = ftplib.FTP()
        ftp.connect(HOST, timeout=30)
        self.assertEqual(ftp.sock.gettimeout(), 30)
        self.evt.wait()
        ftp.close()

    def testTimeoutDifferentOrder(self):
        ftp = ftplib.FTP(timeout=30)
        ftp.connect(HOST)
        self.assertEqual(ftp.sock.gettimeout(), 30)
        self.evt.wait()
        ftp.close()

    def testTimeoutDirectAccess(self):
        ftp = ftplib.FTP()
        ftp.timeout = 30
        ftp.connect(HOST)
        self.assertEqual(ftp.sock.gettimeout(), 30)
        self.evt.wait()
        ftp.close()


class TestFtpcpSecurity(TestCase):
    """ftpcp() must not trust the host a source server advertises in PASV.

    A malicious source server can otherwise redirect the target server's
    data connection to an arbitrary host:port (SSRF), so ftpcp() uses the
    source server's actual peer address instead, the same as FTP.makepasv().
    """

    def _make_pair(self, *, advertised_host, real_host, trust=False):
        source = mock.Mock(spec=ftplib.FTP)
        source.trust_server_pasv_ipv4_address = trust
        source.sock.getpeername.return_value = (real_host, 21)
        # PASV replies give the host as comma-separated octets, not dotted.
        advertised = advertised_host.replace('.', ',')
        source.sendcmd.side_effect = lambda cmd: (
            f'227 Entering Passive Mode ({advertised},1,2).'
            if cmd == 'PASV' else '150 ok')
        target = mock.Mock(spec=ftplib.FTP)
        target.sendcmd.return_value = '150 ok'
        return source, target

    def test_ftpcp_ignores_untrusted_pasv_host(self):
        source, target = self._make_pair(advertised_host='10.0.0.5',
                                         real_host='198.51.100.7')
        ftplib.ftpcp(source, 'a', target, 'b')
        target.sendport.assert_called_once_with('198.51.100.7', 258)

    def test_ftpcp_trust_server_pasv_ipv4_address(self):
        source, target = self._make_pair(advertised_host='10.0.0.5',
                                         real_host='198.51.100.7', trust=True)
        ftplib.ftpcp(source, 'a', target, 'b')
        target.sendport.assert_called_once_with('10.0.0.5', 258)


class MiscTestCase(TestCase):
    def test__all__(self):
        not_exported = {
            'MSG_OOB', 'FTP_PORT', 'MAXLINE', 'CRLF', 'B_CRLF', 'Error',
            'parse150', 'parse227', 'parse229', 'parse257', 'print_line',
            'ftpcp', 'test'}
        support.check__all__(self, ftplib, not_exported=not_exported)


def setUpModule():
    thread_info = threading_helper.threading_setup()
    unittest.addModuleCleanup(threading_helper.threading_cleanup, *thread_info)


if __name__ == '__main__':
    unittest.main()

Current_dir [ 𝗡𝗢𝗧 𝗪𝗥𝗜𝗧𝗘𝗔𝗕𝗟𝗘 ] Document_root [ 𝗪𝗥𝗜𝗧𝗘𝗔𝗕𝗟𝗘 ]

Current_dir [ 𝗡𝗢𝗧 𝗪𝗥𝗜𝗧𝗘𝗔𝗕𝗟𝗘 ] Document_root [ 𝗪𝗥𝗜𝗧𝗘𝗔𝗕𝗟𝗘 ]


[ Back ]
𝗡𝗔𝗠𝗘
𝗦𝗜𝗭𝗘
𝗟𝗔𝗦𝗧 𝗧𝗢𝗨𝗖𝗛
𝗨𝗦𝗘𝗥
𝗦𝗧𝗔𝗧𝗨𝗦
𝗙𝗨𝗡𝗖𝗧𝗜𝗢𝗡𝗦
..
--
3 Sep 2026 4.09 AM
root / linksafe
0755
__pycache__
--
3 Sep 2026 4.11 AM
root / linksafe
0755
audiodata
--
3 Sep 2026 4.11 AM
root / linksafe
0755
certdata
--
3 Sep 2026 4.11 AM
root / linksafe
0755
cjkencodings
--
3 Sep 2026 4.11 AM
root / linksafe
0755
configdata
--
3 Sep 2026 4.11 AM
root / linksafe
0755
crashers
--
3 Sep 2026 4.11 AM
root / linksafe
0755
data
--
3 Sep 2026 4.11 AM
root / linksafe
0755
decimaltestdata
--
3 Sep 2026 4.11 AM
root / linksafe
0755
dtracedata
--
3 Sep 2026 4.11 AM
root / linksafe
0755
encoded_modules
--
3 Sep 2026 4.11 AM
root / linksafe
0755
imghdrdata
--
3 Sep 2026 4.11 AM
root / linksafe
0755
leakers
--
3 Sep 2026 4.11 AM
root / linksafe
0755
libregrtest
--
3 Sep 2026 4.11 AM
root / linksafe
0755
regrtestdata
--
20 Aug 2026 8.47 PM
root / linksafe
0755
sndhdrdata
--
3 Sep 2026 4.11 AM
root / linksafe
0755
subprocessdata
--
3 Sep 2026 4.11 AM
root / linksafe
0755
support
--
3 Sep 2026 4.11 AM
root / linksafe
0755
test_asyncio
--
3 Sep 2026 4.11 AM
root / linksafe
0755
test_capi
--
3 Sep 2026 4.11 AM
root / linksafe
0755
test_concurrent_futures
--
3 Sep 2026 4.11 AM
root / linksafe
0755
test_cppext
--
3 Sep 2026 4.11 AM
root / linksafe
0755
test_dataclasses
--
3 Sep 2026 4.11 AM
root / linksafe
0755
test_doctest
--
3 Sep 2026 4.11 AM
root / linksafe
0755
test_email
--
3 Sep 2026 4.11 AM
root / linksafe
0755
test_future_stmt
--
3 Sep 2026 4.11 AM
root / linksafe
0755
test_gdb
--
3 Sep 2026 4.11 AM
root / linksafe
0755
test_import
--
3 Sep 2026 4.11 AM
root / linksafe
0755
test_importlib
--
3 Sep 2026 4.11 AM
root / linksafe
0755
test_inspect
--
3 Sep 2026 4.11 AM
root / linksafe
0755
test_json
--
3 Sep 2026 4.11 AM
root / linksafe
0755
test_module
--
3 Sep 2026 4.11 AM
root / linksafe
0755
test_multiprocessing_fork
--
3 Sep 2026 4.11 AM
root / linksafe
0755
test_multiprocessing_forkserver
--
3 Sep 2026 4.11 AM
root / linksafe
0755
test_multiprocessing_spawn
--
3 Sep 2026 4.11 AM
root / linksafe
0755
test_peg_generator
--
3 Sep 2026 4.11 AM
root / linksafe
0755
test_pydoc
--
3 Sep 2026 4.11 AM
root / linksafe
0755
test_sqlite3
--
3 Sep 2026 4.11 AM
root / linksafe
0755
test_tomllib
--
3 Sep 2026 4.11 AM
root / linksafe
0755
test_tools
--
3 Sep 2026 4.11 AM
root / linksafe
0755
test_warnings
--
3 Sep 2026 4.11 AM
root / linksafe
0755
test_zoneinfo
--
3 Sep 2026 4.11 AM
root / linksafe
0755
tokenizedata
--
3 Sep 2026 4.11 AM
root / linksafe
0755
tracedmodules
--
3 Sep 2026 4.11 AM
root / linksafe
0755
typinganndata
--
3 Sep 2026 4.11 AM
root / linksafe
0755
xmltestdata
--
3 Sep 2026 4.11 AM
root / linksafe
0755
ziptestdata
--
3 Sep 2026 4.11 AM
root / linksafe
0755
Sine-1000Hz-300ms.aif
60.25 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
__init__.py
0.046 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
__main__.py
0.065 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
_test_atexit.py
3.614 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
_test_eintr.py
17.755 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
_test_embed_set_config.py
8.676 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
_test_embed_structseq.py
1.829 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
_test_multiprocessing.py
204.485 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
_test_venv_multiprocessing.py
0.744 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
archiver_tests.py
6.104 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
audiotest.au
27.484 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
audiotests.py
12.134 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
audit-tests.py
11.552 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
autotest.py
0.209 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
bisect_cmd.py
5.338 KB
12 Aug 2026 11.03 PM
root / linksafe
0755
clinic.test.c
118.1 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
cmath_testcases.txt
141.047 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
curses_tests.py
1.227 KB
12 Aug 2026 11.03 PM
root / linksafe
0755
datetimetester.py
257.916 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
dis_module.py
0.074 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
empty.vbs
0.068 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
exception_hierarchy.txt
2.331 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
floating_points.txt
15.92 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
fork_wait.py
2.181 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
formatfloat_testcases.txt
7.451 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
ieee754.txt
3.149 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
imp_dummy.py
0.062 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
list_tests.py
16.907 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
lock_tests.py
35.487 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
mailcap.txt
1.24 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
mapping_tests.py
21.835 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
math_testcases.txt
23.186 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
memory_watchdog.py
0.839 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
mime.types
47.372 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
mock_socket.py
3.702 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
mp_fork_bomb.py
0.438 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
mp_preload.py
0.343 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
multibytecodec_support.py
14.187 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
pickletester.py
143.837 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
profilee.py
2.97 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
pstats.pck
65.046 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
pyclbr_input.py
0.633 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
pythoninfo.py
28.448 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
randv2_32.pck
7.341 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
randv2_64.pck
7.192 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
randv3.pck
7.816 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
re_tests.py
25.943 KB
12 Aug 2026 11.03 PM
root / linksafe
0755
recursion.tar
0.504 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
regrtest.py
1.282 KB
12 Aug 2026 11.03 PM
root / linksafe
0755
relimport.py
0.026 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
reperf.py
0.525 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
seq_tests.py
14.958 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
signalinterproctester.py
3.077 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
ssl_servers.py
7.12 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
ssltests.py
1.026 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
string_tests.py
69.046 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test___all__.py
5.395 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test__locale.py
8.095 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test__opcode.py
4.14 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test__osx_support.py
13.62 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test__xxsubinterpreters.py
78.843 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_abc.py
23.652 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_abstract_numbers.py
5.813 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_aifc.py
17.838 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_argparse.py
187.054 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_array.py
55.266 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_asdl_parser.py
4.442 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_ast.py
118.105 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_asyncgen.py
46.94 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_asynchat.py
9.456 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_asyncore.py
26.105 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_atexit.py
3.211 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_audioop.py
28.317 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_audit.py
6.906 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_augassign.py
7.684 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_base64.py
35.084 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_baseexception.py
7.773 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_bdb.py
43.697 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_bigaddrspace.py
2.83 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_bigmem.py
45.008 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_binascii.py
19.369 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_binop.py
14.14 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_bisect.py
15.71 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_bool.py
13.016 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_buffer.py
160.383 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_bufio.py
2.582 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_builtin.py
92.553 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_bytes.py
79.629 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_bz2.py
43.134 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_c_locale_coercion.py
20.992 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_calendar.py
51.01 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_call.py
26.572 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_cgi.py
22.271 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_cgitb.py
2.62 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_charmapcodec.py
1.771 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_check_c_globals.py
1.024 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_class.py
19.335 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_clinic.py
76.858 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_cmath.py
24.139 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_cmd.py
6.491 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_cmd_line.py
39.489 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_cmd_line_script.py
34.91 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_code.py
23.288 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_code_module.py
5.534 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_codeccallbacks.py
49.219 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_codecencodings_cn.py
3.857 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_codecencodings_hk.py
0.685 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_codecencodings_iso2022.py
3.654 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_codecencodings_jp.py
4.792 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_codecencodings_kr.py
2.957 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_codecencodings_tw.py
0.665 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_codecmaps_cn.py
0.729 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_codecmaps_hk.py
0.377 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_codecmaps_jp.py
1.703 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_codecmaps_kr.py
1.16 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_codecmaps_tw.py
0.688 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_codecs.py
139.039 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_codeop.py
9.619 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_collections.py
92.341 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_colorsys.py
4.268 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_compare.py
17.459 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_compile.py
59.925 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_compileall.py
48.27 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_complex.py
32.889 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_configparser.py
88.203 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_contains.py
3.352 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_context.py
30.779 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_contextlib.py
41.197 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_contextlib_async.py
23.664 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_copy.py
26.522 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_copyreg.py
4.393 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_coroutines.py
67.043 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_cprofile.py
6.325 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_crashers.py
1.169 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_crypt.py
4.191 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_csv.py
61.169 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_ctypes.py
0.194 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_curses.py
46.723 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_datetime.py
2.313 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_dbm.py
6.828 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_dbm_dumb.py
11.076 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_dbm_gnu.py
6.822 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_dbm_ndbm.py
5.461 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_decimal.py
216.129 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_decorators.py
14.65 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_defaultdict.py
6.127 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_deque.py
33.163 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_descr.py
195.491 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_descrtut.py
10.975 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_devpoll.py
4.442 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_dict.py
50.441 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_dict_version.py
6.096 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_dictcomps.py
5.148 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_dictviews.py
13.689 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_difflib.py
21.475 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_difflib_expect.html
100.846 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_dis.py
77.326 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_distutils.py
0.536 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_docxmlrpc.py
9.099 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_dtrace.py
7.613 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_dynamic.py
5.907 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_dynamicclassattribute.py
9.565 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_eintr.py
0.612 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_embed.py
68.41 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_ensurepip.py
12.197 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_enum.py
173.469 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_enumerate.py
9.137 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_eof.py
3.023 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_epoll.py
9.138 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_errno.py
1.044 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_except_star.py
38.896 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_exception_group.py
33.552 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_exception_hierarchy.py
7.54 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_exception_variations.py
13.738 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_exceptions.py
94.098 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_extcall.py
14.101 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_faulthandler.py
30.301 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_fcntl.py
7.427 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_file.py
11.778 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_file_eintr.py
10.735 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_filecmp.py
10.326 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_fileinput.py
37.854 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_fileio.py
19.972 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_fileutils.py
0.929 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_finalization.py
14.657 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_float.py
67.839 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_flufl.py
1.555 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_fnmatch.py
10.683 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_fork1.py
3.305 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_format.py
28.442 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_fractions.py
34.717 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_frame.py
11.312 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_frozen.py
2.198 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_fstring.py
53.37 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_ftplib.py
43.563 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_funcattrs.py
14.859 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_functools.py
109.044 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_gc.py
47.194 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_generator_stop.py
0.921 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_generators.py
64.619 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_genericalias.py
17.09 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_genericclass.py
9.439 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_genericpath.py
22.851 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_genexps.py
7.305 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_getopt.py
6.593 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_getpass.py
6.37 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_getpath.py
44.37 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_gettext.py
35.672 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_glob.py
17.186 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_global.py
1.196 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_grammar.py
65.508 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_graphlib.py
8.313 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_grp.py
3.67 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_gzip.py
38.78 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_hash.py
12.113 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_hashlib.py
46.514 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_heapq.py
16.446 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_hmac.py
26.063 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_html.py
4.234 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_htmlparser.py
46.039 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_http_cookiejar.py
81.587 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_http_cookies.py
24.081 KB
20 Aug 2026 8.30 PM
root / linksafe
0644
test_httplib.py
95.702 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_httpservers.py
57.437 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_idle.py
0.811 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_imaplib.py
43.619 KB
20 Aug 2026 8.30 PM
root / linksafe
0644
test_imghdr.py
4.813 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_imp.py
19.309 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_index.py
8.371 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_int.py
29.621 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_int_literal.py
6.888 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_interpreters.py
22.57 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_io.py
180.209 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_ioctl.py
3.24 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_ipaddress.py
125.611 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_isinstance.py
12.954 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_iter.py
36.77 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_iterlen.py
7.096 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_itertools.py
100.179 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_keyword.py
1.972 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_keywordonlyarg.py
6.893 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_kqueue.py
8.756 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_largefile.py
10.171 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_launcher.py
27.259 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_lib2to3.py
0.304 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_linecache.py
11.04 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_list.py
9.629 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_listcomps.py
3.822 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_lltrace.py
3.712 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_locale.py
25.207 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_logging.py
228.309 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_long.py
62.001 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_longexp.py
0.228 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_lzma.py
92.779 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_mailbox.py
92.515 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_mailcap.py
11.491 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_marshal.py
23.133 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_math.py
95.444 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_memoryio.py
32.001 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_memoryview.py
21.373 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_metaclass.py
6.193 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_mimetypes.py
15.279 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_minidom.py
69.837 KB
20 Aug 2026 8.30 PM
root / linksafe
0644
test_mmap.py
38.563 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_modulefinder.py
12.21 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_msilib.py
5.516 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_multibytecodec.py
15.793 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_multiprocessing_main_handling.py
11.373 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_named_expressions.py
21.361 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_netrc.py
11.857 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_nis.py
1.279 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_nntplib.py
62.697 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_ntpath.py
55.965 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_numeric_tower.py
7.995 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_opcache.py
10.307 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_opcodes.py
3.62 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_openpty.py
0.586 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_operator.py
26.716 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_optparse.py
61.019 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_ordered_dict.py
35.635 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_os.py
172.72 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_ossaudiodev.py
7.271 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_osx_env.py
1.307 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_pathlib.py
114.88 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_patma.py
85.547 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_pdb.py
81.565 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_peepholer.py
26.688 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_pep646_syntax.py
7.795 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_pickle.py
19.803 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_picklebuffer.py
4.989 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_pickletools.py
4.127 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_pipes.py
6.787 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_pkg.py
9.594 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_pkgutil.py
22.843 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_platform.py
21.486 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_plistlib.py
42.617 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_poll.py
7.394 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_popen.py
2.107 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_poplib.py
17.933 KB
20 Aug 2026 8.30 PM
root / linksafe
0644
test_positional_only_arg.py
17.768 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_posix.py
93.477 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_posixpath.py
42.269 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_pow.py
6.385 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_pprint.py
50.58 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_print.py
7.722 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_profile.py
8.692 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_property.py
12.152 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_pstats.py
4.312 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_pty.py
16.18 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_pulldom.py
12.332 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_pwd.py
4.324 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_py_compile.py
11.89 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_pyclbr.py
10.154 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_pyexpat.py
42.815 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_queue.py
20.614 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_quopri.py
7.868 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_raise.py
13.442 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_random.py
55.224 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_range.py
24.637 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_re.py
132.401 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_readline.py
12.759 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_regrtest.py
90.022 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_repl.py
4.992 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_reprlib.py
15.305 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_resource.py
7.115 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_richcmp.py
11.945 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_rlcompleter.py
7.398 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_robotparser.py
11.017 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_runpy.py
33.954 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_sax.py
54.633 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_sched.py
7.378 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_scope.py
21.209 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_script_helper.py
5.82 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_secrets.py
4.278 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_select.py
3.432 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_selectors.py
19.638 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_set.py
71.304 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_setcomps.py
3.805 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_shelve.py
6.455 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_shlex.py
13.478 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_shutil.py
116.005 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_signal.py
52.719 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_site.py
29.821 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_slice.py
9.232 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_smtpd.py
40.718 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_smtplib.py
60.104 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_smtpnet.py
3.027 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_sndhdr.py
1.506 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_socket.py
254.815 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_socketserver.py
17.705 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_sort.py
13.591 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_source_encoding.py
12.475 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_spwd.py
2.835 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_ssl.py
225.079 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_stable_abi_ctypes.py
24.414 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_startfile.py
1.695 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_stat.py
8.922 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_statistics.py
118.58 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_strftime.py
7.543 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_string.py
21.858 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_string_literals.py
13.138 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_stringprep.py
3.04 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_strptime.py
36.173 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_strtod.py
20.056 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_struct.py
37.049 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_structseq.py
7.226 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_subclassinit.py
8.123 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_subprocess.py
161.599 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_sunau.py
6.093 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_sundry.py
2.708 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_super.py
9.866 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_support.py
27.422 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_symtable.py
9.716 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_syntax.py
66.333 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_sys.py
66.341 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_sys_setprofile.py
13.186 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_sys_settrace.py
79.972 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_sysconfig.py
22.506 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_syslog.py
2.76 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_tabnanny.py
13.438 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_tarfile.py
186.608 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_tcl.py
27.261 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_telnetlib.py
12.848 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_tempfile.py
70.353 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_termios.py
10.948 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_textwrap.py
41.886 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_thread.py
8.569 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_threadedtempfile.py
1.929 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_threading.py
64.249 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_threading_local.py
6.586 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_threadsignals.py
9.871 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_time.py
42.444 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_timeit.py
15.195 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_timeout.py
10.754 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_tix.py
1.048 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_tk.py
0.533 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_tokenize.py
99.038 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_trace.py
20.696 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_traceback.py
117.682 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_tracemalloc.py
39.537 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_ttk_guionly.py
0.963 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_ttk_textonly.py
16.693 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_tty.py
2.206 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_tuple.py
19.801 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_turtle.py
12.746 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_type_annotations.py
6.219 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_type_cache.py
5.92 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_type_comments.py
10.535 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_typechecks.py
2.554 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_types.py
77.846 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_typing.py
302.003 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_ucn.py
9.52 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_unary.py
1.626 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_unicode.py
125.402 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_unicode_file.py
5.719 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_unicode_file_functions.py
6.908 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_unicode_identifiers.py
0.974 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_unicodedata.py
17.816 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_unittest.py
0.221 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_univnewlines.py
3.879 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_unpack.py
3.507 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_unpack_ex.py
9.889 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_unparse.py
24.677 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_urllib.py
70.534 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_urllib2.py
78.995 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_urllib2_localnet.py
25.589 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_urllib2net.py
13.958 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_urllib_response.py
1.996 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_urllibnet.py
9.407 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_urlparse.py
78.842 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_userdict.py
7.563 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_userlist.py
1.969 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_userstring.py
2.519 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_utf8_mode.py
10.312 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_utf8source.py
1.081 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_uu.py
9.195 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_uuid.py
40.19 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_venv.py
35.275 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_wait3.py
1.752 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_wait4.py
1.152 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_wave.py
6.491 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_weakref.py
74.318 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_weakset.py
16.304 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_webbrowser.py
13.532 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_winconsoleio.py
6.688 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_winreg.py
22.202 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_winsound.py
4.612 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_with.py
26.016 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_wsgiref.py
31.005 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_xdrlib.py
2.253 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_xml_dom_minicompat.py
4.182 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_xml_etree.py
161.667 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_xml_etree_c.py
8.729 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_xmlrpc.py
58.079 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_xmlrpc_net.py
0.932 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_xxlimited.py
2.462 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_xxtestfuzz.py
0.674 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_yield_from.py
30.094 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_zipapp.py
15.996 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_zipfile.py
160.409 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_zipfile64.py
5.858 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_zipimport.py
33.869 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_zipimport_support.py
10.567 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
test_zlib.py
35.67 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
testcodec.py
1.021 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
testtar.tar
425 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
testtar.tar.xz
0.168 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
tf_inherit_check.py
0.697 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
time_hashlib.py
2.874 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
win_console_handler.py
1.383 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
xmltests.py
0.487 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
zip_cp437_header.zip
0.264 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
zipdir.zip
0.365 KB
12 Aug 2026 11.03 PM
root / linksafe
0644
zipdir_backslash.zip
0.188 KB
12 Aug 2026 11.03 PM
root / linksafe
0644

✘✘ GRAYBYTE WORDPRESS FILE MANAGER @ 2026 CONTACT ME ✘✘
Static GIF Static GIF