Server: appserver-7f0f8755-nginx-15961cad18524ec5a9db05f2a6a7e440
Current directory: /usr/lib/python2.7
Software: nginx/1.27.5
Shell Command
Create a new file
Upload file
File: pickle.py
"""Create portable serialized representations of Python objects. See module cPickle for a (much) faster implementation. See module copy_reg for a mechanism for registering custom picklers. See module pickletools source for extensive comments. Classes: Pickler Unpickler Functions: dump(object, file) dumps(object) -> string load(file) -> object loads(string) -> object Misc variables: __version__ format_version compatible_formats """ __version__ = "$Revision: 72223 $" # Code version from types import * from copy_reg import dispatch_table from copy_reg import _extension_registry, _inverted_registry, _extension_cache import marshal import sys import struct import re __all__ = ["PickleError", "PicklingError", "UnpicklingError", "Pickler", "Unpickler", "dump", "dumps", "load", "loads"] # These are purely informational; no code uses these. format_version = "2.0" # File format version we write compatible_formats = ["1.0", # Original protocol 0 "1.1", # Protocol 0 with INST added "1.2", # Original protocol 1 "1.3", # Protocol 1 with BINFLOAT added "2.0", # Protocol 2 ] # Old format versions we can read # Keep in synch with cPickle. This is the highest protocol number we # know how to read. HIGHEST_PROTOCOL = 2 # Why use struct.pack() for pickling but marshal.loads() for # unpickling? struct.pack() is 40% faster than marshal.dumps(), but # marshal.loads() is twice as fast as struct.unpack()! mloads = marshal.loads class PickleError(Exception): """A common base class for the other pickling exceptions.""" pass class PicklingError(PickleError): """This exception is raised when an unpicklable object is passed to the dump() method. """ pass class UnpicklingError(PickleError): """This exception is raised when there is a problem unpickling an object, such as a security violation. Note that other exceptions may also be raised during unpickling, including (but not necessarily limited to) AttributeError, EOFError, ImportError, and IndexError. """ pass # An instance of _Stop is raised by Unpickler.load_stop() in response to # the STOP opcode, passing the object that is the result of unpickling. class _Stop(Exception): def __init__(self, value): self.value = value # Jython has PyStringMap; it's a dict subclass with string keys try: from org.python.core import PyStringMap except ImportError: PyStringMap = None # UnicodeType may or may not be exported (normally imported from types) try: UnicodeType except NameError: UnicodeType = None # Pickle opcodes. See pickletools.py for extensive docs. The listing # here is in kind-of alphabetical order of 1-character pickle code. # pickletools groups them by purpose. MARK = '(' # push special markobject on stack STOP = '.' # every pickle ends with STOP POP = '0' # discard topmost stack item POP_MARK = '1' # discard stack top through topmost markobject DUP = '2' # duplicate top stack item FLOAT = 'F' # push float object; decimal string argument INT = 'I' # push integer or bool; decimal string argument BININT = 'J' # push four-byte signed int BININT1 = 'K' # push 1-byte unsigned int LONG = 'L' # push long; decimal string argument BININT2 = 'M' # push 2-byte unsigned int NONE = 'N' # push None PERSID = 'P' # push persistent object; id is taken from string arg BINPERSID = 'Q' # " " " ; " " " " stack REDUCE = 'R' # apply callable to argtuple, both on stack STRING = 'S' # push string; NL-terminated string argument BINSTRING = 'T' # push string; counted binary string argument SHORT_BINSTRING = 'U' # " " ; " " " " < 256 bytes UNICODE = 'V' # push Unicode string; raw-unicode-escaped'd argument BINUNICODE = 'X' # " " " ; counted UTF-8 string argument APPEND = 'a' # append stack top to list below it BUILD = 'b' # call __setstate__ or __dict__.update() GLOBAL = 'c' # push self.find_class(modname, name); 2 string args DICT = 'd' # build a dict from stack items EMPTY_DICT = '}' # push empty dict APPENDS = 'e' # extend list on stack by topmost stack slice GET = 'g' # push item from memo on stack; index is string arg BINGET = 'h' # " " " " " " ; " " 1-byte arg INST = 'i' # build & push class instance LONG_BINGET = 'j' # push item from memo on stack; index is 4-byte arg LIST = 'l' # build list from topmost stack items EMPTY_LIST = ']' # push empty list OBJ = 'o' # build & push class instance PUT = 'p' # store stack top in memo; index is string arg BINPUT = 'q' # " " " " " ; " " 1-byte arg LONG_BINPUT = 'r' # " " " " " ; " " 4-byte arg SETITEM = 's' # add key+value pair to dict TUPLE = 't' # build tuple from topmost stack items EMPTY_TUPLE = ')' # push empty tuple SETITEMS = 'u' # modify dict by adding topmost key+value pairs BINFLOAT = 'G' # push float; arg is 8-byte float encoding TRUE = 'I01\n' # not an opcode; see INT docs in pickletools.py FALSE = 'I00\n' # not an opcode; see INT docs in pickletools.py # Protocol 2 PROTO = '\x80' # identify pickle protocol NEWOBJ = '\x81' # build object by applying cls.__new__ to argtuple EXT1 = '\x82' # push object from extension registry; 1-byte index EXT2 = '\x83' # ditto, but 2-byte index EXT4 = '\x84' # ditto, but 4-byte index TUPLE1 = '\x85' # build 1-tuple from stack top TUPLE2 = '\x86' # build 2-tuple from two topmost stack items TUPLE3 = '\x87' # build 3-tuple from three topmost stack items NEWTRUE = '\x88' # push True NEWFALSE = '\x89' # push False LONG1 = '\x8a' # push long from < 256 bytes LONG4 = '\x8b' # push really big long _tuplesize2code = [EMPTY_TUPLE, TUPLE1, TUPLE2, TUPLE3] __all__.extend([x for x in dir() if re.match("[A-Z][A-Z0-9_]+$",x)]) del x # Pickling machinery class Pickler: def __init__(self, file, protocol=None): """This takes a file-like object for writing a pickle data stream. The optional protocol argument tells the pickler to use the given protocol; supported protocols are 0, 1, 2. The default protocol is 0, to be backwards compatible. (Protocol 0 is the only protocol that can be written to a file opened in text mode and read back successfully. When using a protocol higher than 0, make sure the file is opened in binary mode, both when pickling and unpickling.) Protocol 1 is more efficient than protocol 0; protocol 2 is more efficient than protocol 1. Specifying a negative protocol version selects the highest protocol version supported. The higher the protocol used, the more recent the version of Python needed to read the pickle produced. The file parameter must have a write() method that accepts a single string argument. It can thus be an open file object, a StringIO object, or any other custom object that meets this interface. """ if protocol is None: protocol = 0 if protocol < 0: protocol = HIGHEST_PROTOCOL elif not 0 <= protocol <= HIGHEST_PROTOCOL: raise ValueError("pickle protocol must be <= %d" % HIGHEST_PROTOCOL) self.write = file.write self.memo = {} self.proto = int(protocol) self.bin = protocol >= 1 self.fast = 0 def clear_memo(self): """Clears the pickler's "memo". The memo is the data structure that remembers which objects the pickler has already seen, so that shared or recursive objects are pickled by reference and not by value. This method is useful when re-using picklers. """ self.memo.clear() def dump(self, obj): """Write a pickled representation of obj to the open file.""" if self.proto >= 2: self.write(PROTO + chr(self.proto)) self.save(obj) self.write(STOP) def memoize(self, obj): """Store an object in the memo.""" # The Pickler memo is a dictionary mapping object ids to 2-tuples # that contain the Unpickler memo key and the object being memoized. # The memo key is written to the pickle and will become # the key in the Unpickler's memo. The object is stored in the # Pickler memo so that transient objects are kept alive during # pickling. # The use of the Unpickler memo length as the memo key is just a # convention. The only requirement is that the memo values be unique. # But there appears no advantage to any other scheme, and this # scheme allows the Unpickler memo to be implemented as a plain (but # growable) array, indexed by memo key. if self.fast: return assert id(obj) not in self.memo memo_len = len(self.memo) self.write(self.put(memo_len)) self.memo[id(obj)] = memo_len, obj # Return a PUT (BINPUT, LONG_BINPUT) opcode string, with argument i. def put(self, i, pack=struct.pack): if self.bin: if i < 256: return BINPUT + chr(i) else: return LONG_BINPUT + pack("
= 2 and getattr(func, "__name__", "") == "__newobj__": # A __reduce__ implementation can direct protocol 2 to # use the more efficient NEWOBJ opcode, while still # allowing protocol 0 and 1 to work normally. For this to # work, the function returned by __reduce__ should be # called __newobj__, and its first argument should be a # new-style class. The implementation for __newobj__ # should be as follows, although pickle has no way to # verify this: # # def __newobj__(cls, *args): # return cls.__new__(cls, *args) # # Protocols 0 and 1 will pickle a reference to __newobj__, # while protocol 2 (and above) will pickle a reference to # cls, the remaining args tuple, and the NEWOBJ code, # which calls cls.__new__(cls, *args) at unpickling time # (see load_newobj below). If __reduce__ returns a # three-tuple, the state from the third tuple item will be # pickled regardless of the protocol, calling __setstate__ # at unpickling time (see load_build below). # # Note that no standard __newobj__ implementation exists; # you have to provide your own. This is to enforce # compatibility with Python 2.2 (pickles written using # protocol 0 or 1 in Python 2.3 should be unpicklable by # Python 2.2). cls = args[0] if not hasattr(cls, "__new__"): raise PicklingError( "args[0] from __newobj__ args has no __new__") if obj is not None and cls is not obj.__class__: raise PicklingError( "args[0] from __newobj__ args has the wrong class") args = args[1:] save(cls) save(args) write(NEWOBJ) else: save(func) save(args) write(REDUCE) if obj is not None: # If the object is already in the memo, this means it is # recursive. In this case, throw away everything we put on the # stack, and fetch the object back from the memo. if id(obj) in self.memo: write(POP + self.get(self.memo[id(obj)][0])) else: self.memoize(obj) # More new special cases (that work with older protocols as # well): when __reduce__ returns a tuple with 4 or 5 items, # the 4th and 5th item should be iterators that provide list # items and dict items (as (key, value) tuples), or None. if listitems is not None: self._batch_appends(listitems) if dictitems is not None: self._batch_setitems(dictitems) if state is not None: save(state) write(BUILD) # Methods below this point are dispatched through the dispatch table dispatch = {} def save_none(self, obj): self.write(NONE) dispatch[NoneType] = save_none def save_bool(self, obj): if self.proto >= 2: self.write(obj and NEWTRUE or NEWFALSE) else: self.write(obj and TRUE or FALSE) dispatch[bool] = save_bool def save_int(self, obj, pack=struct.pack): if self.bin: # If the int is small enough to fit in a signed 4-byte 2's-comp # format, we can store it more efficiently than the general # case. # First one- and two-byte unsigned ints: if obj >= 0: if obj <= 0xff: self.write(BININT1 + chr(obj)) return if obj <= 0xffff: self.write("%c%c%c" % (BININT2, obj&0xff, obj>>8)) return # Next check for 4-byte signed ints: high_bits = obj >> 31 # note that Python shift sign-extends if high_bits == 0 or high_bits == -1: # All high bits are copies of bit 2**31, so the value # fits in a 4-byte signed int. self.write(BININT + pack("
= 2: bytes = encode_long(obj) n = len(bytes) if n < 256: self.write(LONG1 + chr(n) + bytes) else: self.write(LONG4 + pack("
d', obj)) else: self.write(FLOAT + repr(obj) + '\n') dispatch[FloatType] = save_float def save_string(self, obj, pack=struct.pack): if self.bin: n = len(obj) if n < 256: self.write(SHORT_BINSTRING + chr(n) + obj) else: self.write(BINSTRING + pack("
= 2: for element in obj: save(element) # Subtle. Same as in the big comment below. if id(obj) in memo: get = self.get(memo[id(obj)][0]) write(POP * n + get) else: write(_tuplesize2code[n]) self.memoize(obj) return # proto 0 or proto 1 and tuple isn't empty, or proto > 1 and tuple # has more than 3 elements. write(MARK) for element in obj: save(element) if id(obj) in memo: # Subtle. d was not in memo when we entered save_tuple(), so # the process of saving the tuple's elements must have saved # the tuple itself: the tuple is recursive. The proper action # now is to throw away everything we put on the stack, and # simply GET the tuple (it's already constructed). This check # could have been done in the "for element" loop instead, but # recursive tuples are a rare thing. get = self.get(memo[id(obj)][0]) if proto: write(POP_MARK + get) else: # proto 0 -- POP_MARK not available write(POP * (n+1) + get) return # No recursion. self.write(TUPLE) self.memoize(obj) dispatch[TupleType] = save_tuple # save_empty_tuple() isn't used by anything in Python 2.3. However, I # found a Pickler subclass in Zope3 that calls it, so it's not harmless # to remove it. def save_empty_tuple(self, obj): self.write(EMPTY_TUPLE) def save_list(self, obj): write = self.write if self.bin: write(EMPTY_LIST) else: # proto 0 -- can't use EMPTY_LIST write(MARK + LIST) self.memoize(obj) self._batch_appends(iter(obj)) dispatch[ListType] = save_list # Keep in synch with cPickle's BATCHSIZE. Nothing will break if it gets # out of synch, though. _BATCHSIZE = 1000 def _batch_appends(self, items): # Helper to batch up APPENDS sequences save = self.save write = self.write if not self.bin: for x in items: save(x) write(APPEND) return r = xrange(self._BATCHSIZE) while items is not None: tmp = [] for i in r: try: x = items.next() tmp.append(x) except StopIteration: items = None break n = len(tmp) if n > 1: write(MARK) for x in tmp: save(x) write(APPENDS) elif n: save(tmp[0]) write(APPEND) # else tmp is empty, and we're done def save_dict(self, obj): write = self.write if self.bin: write(EMPTY_DICT) else: # proto 0 -- can't use EMPTY_DICT write(MARK + DICT) self.memoize(obj) self._batch_setitems(obj.iteritems()) dispatch[DictionaryType] = save_dict if not PyStringMap is None: dispatch[PyStringMap] = save_dict def _batch_setitems(self, items): # Helper to batch up SETITEMS sequences; proto >= 1 only save = self.save write = self.write if not self.bin: for k, v in items: save(k) save(v) write(SETITEM) return r = xrange(self._BATCHSIZE) while items is not None: tmp = [] for i in r: try: tmp.append(items.next()) except StopIteration: items = None break n = len(tmp) if n > 1: write(MARK) for k, v in tmp: save(k) save(v) write(SETITEMS) elif n: k, v = tmp[0] save(k) save(v) write(SETITEM) # else tmp is empty, and we're done def save_inst(self, obj): cls = obj.__class__ memo = self.memo write = self.write save = self.save if hasattr(obj, '__getinitargs__'): args = obj.__getinitargs__() len(args) # XXX Assert it's a sequence _keep_alive(args, memo) else: args = () write(MARK) if self.bin: save(cls) for arg in args: save(arg) write(OBJ) else: for arg in args: save(arg) write(INST + cls.__module__ + '\n' + cls.__name__ + '\n') self.memoize(obj) try: getstate = obj.__getstate__ except AttributeError: stuff = obj.__dict__ else: stuff = getstate() _keep_alive(stuff, memo) save(stuff) write(BUILD) dispatch[InstanceType] = save_inst def save_global(self, obj, name=None, pack=struct.pack): write = self.write memo = self.memo if name is None: name = obj.__name__ module = getattr(obj, "__module__", None) if module is None: module = whichmodule(obj, name) try: __import__(module) mod = sys.modules[module] klass = getattr(mod, name) except (ImportError, KeyError, AttributeError): raise PicklingError( "Can't pickle %r: it's not found as %s.%s" % (obj, module, name)) else: if klass is not obj: raise PicklingError( "Can't pickle %r: it's not the same object as %s.%s" % (obj, module, name)) if self.proto >= 2: code = _extension_registry.get((module, name)) if code: assert code > 0 if code <= 0xff: write(EXT1 + chr(code)) elif code <= 0xffff: write("%c%c%c" % (EXT2, code&0xff, code>>8)) else: write(EXT4 + pack("
d', self.read(8))[0]) dispatch[BINFLOAT] = load_binfloat def load_string(self): rep = self.readline()[:-1] for q in "\"'": # double or single quote if rep.startswith(q): if len(rep) < 2 or not rep.endswith(q): raise ValueError, "insecure string pickle" rep = rep[len(q):-len(q)] break else: raise ValueError, "insecure string pickle" self.append(rep.decode("string-escape")) dispatch[STRING] = load_string def load_binstring(self): len = mloads('i' + self.read(4)) self.append(self.read(len)) dispatch[BINSTRING] = load_binstring def load_unicode(self): self.append(unicode(self.readline()[:-1],'raw-unicode-escape')) dispatch[UNICODE] = load_unicode def load_binunicode(self): len = mloads('i' + self.read(4)) self.append(unicode(self.read(len),'utf-8')) dispatch[BINUNICODE] = load_binunicode def load_short_binstring(self): len = ord(self.read(1)) self.append(self.read(len)) dispatch[SHORT_BINSTRING] = load_short_binstring def load_tuple(self): k = self.marker() self.stack[k:] = [tuple(self.stack[k+1:])] dispatch[TUPLE] = load_tuple def load_empty_tuple(self): self.stack.append(()) dispatch[EMPTY_TUPLE] = load_empty_tuple def load_tuple1(self): self.stack[-1] = (self.stack[-1],) dispatch[TUPLE1] = load_tuple1 def load_tuple2(self): self.stack[-2:] = [(self.stack[-2], self.stack[-1])] dispatch[TUPLE2] = load_tuple2 def load_tuple3(self): self.stack[-3:] = [(self.stack[-3], self.stack[-2], self.stack[-1])] dispatch[TUPLE3] = load_tuple3 def load_empty_list(self): self.stack.append([]) dispatch[EMPTY_LIST] = load_empty_list def load_empty_dictionary(self): self.stack.append({}) dispatch[EMPTY_DICT] = load_empty_dictionary def load_list(self): k = self.marker() self.stack[k:] = [self.stack[k+1:]] dispatch[LIST] = load_list def load_dict(self): k = self.marker() d = {} items = self.stack[k+1:] for i in range(0, len(items), 2): key = items[i] value = items[i+1] d[key] = value self.stack[k:] = [d] dispatch[DICT] = load_dict # INST and OBJ differ only in how they get a class object. It's not # only sensible to do the rest in a common routine, the two routines # previously diverged and grew different bugs. # klass is the class to instantiate, and k points to the topmost mark # object, following which are the arguments for klass.__init__. def _instantiate(self, klass, k): args = tuple(self.stack[k+1:]) del self.stack[k:] instantiated = 0 if (not args and type(klass) is ClassType and not hasattr(klass, "__getinitargs__")): try: value = _EmptyClass() value.__class__ = klass instantiated = 1 except RuntimeError: # In restricted execution, assignment to inst.__class__ is # prohibited pass if not instantiated: try: value = klass(*args) except TypeError, err: raise TypeError, "in constructor for %s: %s" % ( klass.__name__, str(err)), sys.exc_info()[2] self.append(value) def load_inst(self): module = self.readline()[:-1] name = self.readline()[:-1] klass = self.find_class(module, name) self._instantiate(klass, self.marker()) dispatch[INST] = load_inst def load_obj(self): # Stack is ... markobject classobject arg1 arg2 ... k = self.marker() klass = self.stack.pop(k+1) self._instantiate(klass, k) dispatch[OBJ] = load_obj def load_newobj(self): args = self.stack.pop() cls = self.stack[-1] obj = cls.__new__(cls, *args) self.stack[-1] = obj dispatch[NEWOBJ] = load_newobj def load_global(self): module = self.readline()[:-1] name = self.readline()[:-1] klass = self.find_class(module, name) self.append(klass) dispatch[GLOBAL] = load_global def load_ext1(self): code = ord(self.read(1)) self.get_extension(code) dispatch[EXT1] = load_ext1 def load_ext2(self): code = mloads('i' + self.read(2) + '\000\000') self.get_extension(code) dispatch[EXT2] = load_ext2 def load_ext4(self): code = mloads('i' + self.read(4)) self.get_extension(code) dispatch[EXT4] = load_ext4 def get_extension(self, code): nil = [] obj = _extension_cache.get(code, nil) if obj is not nil: self.append(obj) return key = _inverted_registry.get(code) if not key: raise ValueError("unregistered extension code %d" % code) obj = self.find_class(*key) _extension_cache[code] = obj self.append(obj) def find_class(self, module, name): # Subclasses may override this __import__(module) mod = sys.modules[module] klass = getattr(mod, name) return klass def load_reduce(self): stack = self.stack args = stack.pop() func = stack[-1] value = func(*args) stack[-1] = value dispatch[REDUCE] = load_reduce def load_pop(self): del self.stack[-1] dispatch[POP] = load_pop def load_pop_mark(self): k = self.marker() del self.stack[k:] dispatch[POP_MARK] = load_pop_mark def load_dup(self): self.append(self.stack[-1]) dispatch[DUP] = load_dup def load_get(self): self.append(self.memo[self.readline()[:-1]]) dispatch[GET] = load_get def load_binget(self): i = ord(self.read(1)) self.append(self.memo[repr(i)]) dispatch[BINGET] = load_binget def load_long_binget(self): i = mloads('i' + self.read(4)) self.append(self.memo[repr(i)]) dispatch[LONG_BINGET] = load_long_binget def load_put(self): self.memo[self.readline()[:-1]] = self.stack[-1] dispatch[PUT] = load_put def load_binput(self): i = ord(self.read(1)) self.memo[repr(i)] = self.stack[-1] dispatch[BINPUT] = load_binput def load_long_binput(self): i = mloads('i' + self.read(4)) self.memo[repr(i)] = self.stack[-1] dispatch[LONG_BINPUT] = load_long_binput def load_append(self): stack = self.stack value = stack.pop() list = stack[-1] list.append(value) dispatch[APPEND] = load_append def load_appends(self): stack = self.stack mark = self.marker() list = stack[mark - 1] list.extend(stack[mark + 1:]) del stack[mark:] dispatch[APPENDS] = load_appends def load_setitem(self): stack = self.stack value = stack.pop() key = stack.pop() dict = stack[-1] dict[key] = value dispatch[SETITEM] = load_setitem def load_setitems(self): stack = self.stack mark = self.marker() dict = stack[mark - 1] for i in range(mark + 1, len(stack), 2): dict[stack[i]] = stack[i + 1] del stack[mark:] dispatch[SETITEMS] = load_setitems def load_build(self): stack = self.stack state = stack.pop() inst = stack[-1] setstate = getattr(inst, "__setstate__", None) if setstate: setstate(state) return slotstate = None if isinstance(state, tuple) and len(state) == 2: state, slotstate = state if state: try: d = inst.__dict__ try: for k, v in state.iteritems(): d[intern(k)] = v # keys in state don't have to be strings # don't blow up, but don't go out of our way except TypeError: d.update(state) except RuntimeError: # XXX In restricted execution, the instance's __dict__ # is not accessible. Use the old way of unpickling # the instance variables. This is a semantic # difference when unpickling in restricted # vs. unrestricted modes. # Note, however, that cPickle has never tried to do the # .update() business, and always uses # PyObject_SetItem(inst.__dict__, key, value) in a # loop over state.items(). for k, v in state.items(): setattr(inst, k, v) if slotstate: for k, v in slotstate.items(): setattr(inst, k, v) dispatch[BUILD] = load_build def load_mark(self): self.append(self.mark) dispatch[MARK] = load_mark def load_stop(self): value = self.stack.pop() raise _Stop(value) dispatch[STOP] = load_stop # Helper class for load_inst/load_obj class _EmptyClass: pass # Encode/decode longs in linear time. import binascii as _binascii def encode_long(x): r"""Encode a long to a two's complement little-endian binary string. Note that 0L is a special case, returning an empty string, to save a byte in the LONG1 pickling context. >>> encode_long(0L) '' >>> encode_long(255L) '\xff\x00' >>> encode_long(32767L) '\xff\x7f' >>> encode_long(-256L) '\x00\xff' >>> encode_long(-32768L) '\x00\x80' >>> encode_long(-128L) '\x80' >>> encode_long(127L) '\x7f' >>> """ if x == 0: return '' if x > 0: ashex = hex(x) assert ashex.startswith("0x") njunkchars = 2 + ashex.endswith('L') nibbles = len(ashex) - njunkchars if nibbles & 1: # need an even # of nibbles for unhexlify ashex = "0x0" + ashex[2:] elif int(ashex[2], 16) >= 8: # "looks negative", so need a byte of sign bits ashex = "0x00" + ashex[2:] else: # Build the 256's-complement: (1L << nbytes) + x. The trick is # to find the number of bytes in linear time (although that should # really be a constant-time task). ashex = hex(-x) assert ashex.startswith("0x") njunkchars = 2 + ashex.endswith('L') nibbles = len(ashex) - njunkchars if nibbles & 1: # Extend to a full byte. nibbles += 1 nbits = nibbles * 4 x += 1L << nbits assert x > 0 ashex = hex(x) njunkchars = 2 + ashex.endswith('L') newnibbles = len(ashex) - njunkchars if newnibbles < nibbles: ashex = "0x" + "0" * (nibbles - newnibbles) + ashex[2:] if int(ashex[2], 16) < 8: # "looks positive", so need a byte of sign bits ashex = "0xff" + ashex[2:] if ashex.endswith('L'): ashex = ashex[2:-1] else: ashex = ashex[2:] assert len(ashex) & 1 == 0, (x, ashex) binary = _binascii.unhexlify(ashex) return binary[::-1] def decode_long(data): r"""Decode a long from a two's complement little-endian binary string. >>> decode_long('') 0L >>> decode_long("\xff\x00") 255L >>> decode_long("\xff\x7f") 32767L >>> decode_long("\x00\xff") -256L >>> decode_long("\x00\x80") -32768L >>> decode_long("\x80") -128L >>> decode_long("\x7f") 127L """ nbytes = len(data) if nbytes == 0: return 0L ashex = _binascii.hexlify(data[::-1]) n = long(ashex, 16) # quadratic time before Python 2.3; linear now if data[-1] >= '\x80': n -= 1L << (nbytes * 8) return n # Shorthands try: from cStringIO import StringIO except ImportError: from StringIO import StringIO def dump(obj, file, protocol=None): Pickler(file, protocol).dump(obj) def dumps(obj, protocol=None): file = StringIO() Pickler(file, protocol).dump(obj) return file.getvalue() def load(file): return Unpickler(file).load() def loads(str): file = StringIO(str) return Unpickler(file).load() # Doctest def _test(): import doctest return doctest.testmod() if __name__ == "__main__": _test()
.
442 Items
Change directory
Remove directory
Rename directory
..
72 Items
Change directory
Remove directory
Rename directory
BaseHTTPServer.py
22.21 KB
Edit
Delete
Copy
Move
Remame
BaseHTTPServer.pyc
21.17 KB
Edit
Delete
Copy
Move
Remame
Bastion.py
5.61 KB
Edit
Delete
Copy
Move
Remame
Bastion.pyc
6.47 KB
Edit
Delete
Copy
Move
Remame
CGIHTTPServer.py
12.78 KB
Edit
Delete
Copy
Move
Remame
CGIHTTPServer.pyc
10.73 KB
Edit
Delete
Copy
Move
Remame
ConfigParser.py
27.1 KB
Edit
Delete
Copy
Move
Remame
ConfigParser.pyc
24.51 KB
Edit
Delete
Copy
Move
Remame
Cookie.py
25.92 KB
Edit
Delete
Copy
Move
Remame
Cookie.pyc
22.05 KB
Edit
Delete
Copy
Move
Remame
DocXMLRPCServer.py
10.25 KB
Edit
Delete
Copy
Move
Remame
DocXMLRPCServer.pyc
9.57 KB
Edit
Delete
Copy
Move
Remame
HTMLParser.py
16.73 KB
Edit
Delete
Copy
Move
Remame
HTMLParser.pyc
13.34 KB
Edit
Delete
Copy
Move
Remame
LICENSE.txt
12.47 KB
Edit
Delete
Copy
Move
Remame
MimeWriter.py
6.33 KB
Edit
Delete
Copy
Move
Remame
MimeWriter.pyc
7.17 KB
Edit
Delete
Copy
Move
Remame
Queue.py
8.38 KB
Edit
Delete
Copy
Move
Remame
Queue.pyc
9.15 KB
Edit
Delete
Copy
Move
Remame
SimpleHTTPServer.py
7.81 KB
Edit
Delete
Copy
Move
Remame
SimpleHTTPServer.pyc
7.8 KB
Edit
Delete
Copy
Move
Remame
SimpleXMLRPCServer.py
25.21 KB
Edit
Delete
Copy
Move
Remame
SimpleXMLRPCServer.pyc
22.26 KB
Edit
Delete
Copy
Move
Remame
SocketServer.py
23.24 KB
Edit
Delete
Copy
Move
Remame
SocketServer.pyc
23.39 KB
Edit
Delete
Copy
Move
Remame
StringIO.py
10.41 KB
Edit
Delete
Copy
Move
Remame
StringIO.pyc
11.17 KB
Edit
Delete
Copy
Move
Remame
UserDict.py
6.89 KB
Edit
Delete
Copy
Move
Remame
UserDict.pyc
9.4 KB
Edit
Delete
Copy
Move
Remame
UserList.py
3.56 KB
Edit
Delete
Copy
Move
Remame
UserList.pyc
6.36 KB
Edit
Delete
Copy
Move
Remame
UserString.py
9.46 KB
Edit
Delete
Copy
Move
Remame
UserString.pyc
14.38 KB
Edit
Delete
Copy
Move
Remame
_LWPCookieJar.py
6.4 KB
Edit
Delete
Copy
Move
Remame
_LWPCookieJar.pyc
5.29 KB
Edit
Delete
Copy
Move
Remame
_MozillaCookieJar.py
5.66 KB
Edit
Delete
Copy
Move
Remame
_MozillaCookieJar.pyc
4.35 KB
Edit
Delete
Copy
Move
Remame
__future__.py
4.28 KB
Edit
Delete
Copy
Move
Remame
__future__.pyc
4.11 KB
Edit
Delete
Copy
Move
Remame
__phello__.foo.py
0.06 KB
Edit
Delete
Copy
Move
Remame
__phello__.foo.pyc
0.12 KB
Edit
Delete
Copy
Move
Remame
_abcoll.py
18.18 KB
Edit
Delete
Copy
Move
Remame
_abcoll.pyc
24.88 KB
Edit
Delete
Copy
Move
Remame
_osx_support.py
18.65 KB
Edit
Delete
Copy
Move
Remame
_osx_support.pyc
11.45 KB
Edit
Delete
Copy
Move
Remame
_pyio.py
67.96 KB
Edit
Delete
Copy
Move
Remame
_pyio.pyc
62.82 KB
Edit
Delete
Copy
Move
Remame
_strptime.py
20.24 KB
Edit
Delete
Copy
Move
Remame
_strptime.pyc
14.77 KB
Edit
Delete
Copy
Move
Remame
_sysconfigdata.py
0.12 KB
Edit
Delete
Copy
Move
Remame
_sysconfigdata.pyc
0.27 KB
Edit
Delete
Copy
Move
Remame
_threading_local.py
7.28 KB
Edit
Delete
Copy
Move
Remame
_threading_local.pyc
6.4 KB
Edit
Delete
Copy
Move
Remame
_weakrefset.py
5.77 KB
Edit
Delete
Copy
Move
Remame
_weakrefset.pyc
9.36 KB
Edit
Delete
Copy
Move
Remame
abc.py
6.98 KB
Edit
Delete
Copy
Move
Remame
abc.pyc
5.98 KB
Edit
Delete
Copy
Move
Remame
aifc.py
33.49 KB
Edit
Delete
Copy
Move
Remame
aifc.pyc
29.5 KB
Edit
Delete
Copy
Move
Remame
antigravity.py
0.06 KB
Edit
Delete
Copy
Move
Remame
antigravity.pyc
0.2 KB
Edit
Delete
Copy
Move
Remame
anydbm.py
2.6 KB
Edit
Delete
Copy
Move
Remame
anydbm.pyc
2.73 KB
Edit
Delete
Copy
Move
Remame
argparse.egg-info
0.21 KB
Edit
Delete
Copy
Move
Remame
argparse.py
87.04 KB
Edit
Delete
Copy
Move
Remame
argparse.pyc
62.54 KB
Edit
Delete
Copy
Move
Remame
ast.py
11.53 KB
Edit
Delete
Copy
Move
Remame
ast.pyc
12.59 KB
Edit
Delete
Copy
Move
Remame
asynchat.py
11.33 KB
Edit
Delete
Copy
Move
Remame
asynchat.pyc
8.55 KB
Edit
Delete
Copy
Move
Remame
asyncore.py
20.36 KB
Edit
Delete
Copy
Move
Remame
asyncore.pyc
18.28 KB
Edit
Delete
Copy
Move
Remame
atexit.py
1.67 KB
Edit
Delete
Copy
Move
Remame
atexit.pyc
2.14 KB
Edit
Delete
Copy
Move
Remame
audiodev.py
7.42 KB
Edit
Delete
Copy
Move
Remame
audiodev.pyc
8.22 KB
Edit
Delete
Copy
Move
Remame
base64.py
11.53 KB
Edit
Delete
Copy
Move
Remame
base64.pyc
11 KB
Edit
Delete
Copy
Move
Remame
bdb.py
21.21 KB
Edit
Delete
Copy
Move
Remame
bdb.pyc
18.53 KB
Edit
Delete
Copy
Move
Remame
binhex.py
14.35 KB
Edit
Delete
Copy
Move
Remame
binhex.pyc
15 KB
Edit
Delete
Copy
Move
Remame
bisect.py
2.53 KB
Edit
Delete
Copy
Move
Remame
bisect.pyc
2.99 KB
Edit
Delete
Copy
Move
Remame
bsddb
14 Items
Change directory
Remove directory
Rename directory
cProfile.py
6.36 KB
Edit
Delete
Copy
Move
Remame
cProfile.pyc
6.13 KB
Edit
Delete
Copy
Move
Remame
calendar.py
22.84 KB
Edit
Delete
Copy
Move
Remame
calendar.pyc
27.1 KB
Edit
Delete
Copy
Move
Remame
cgi.py
34.01 KB
Edit
Delete
Copy
Move
Remame
cgi.pyc
31.67 KB
Edit
Delete
Copy
Move
Remame
cgitb.py
11.89 KB
Edit
Delete
Copy
Move
Remame
cgitb.pyc
11.85 KB
Edit
Delete
Copy
Move
Remame
chunk.py
5.29 KB
Edit
Delete
Copy
Move
Remame
chunk.pyc
5.45 KB
Edit
Delete
Copy
Move
Remame
cmd.py
14.67 KB
Edit
Delete
Copy
Move
Remame
cmd.pyc
13.67 KB
Edit
Delete
Copy
Move
Remame
code.py
9.95 KB
Edit
Delete
Copy
Move
Remame
code.pyc
10.06 KB
Edit
Delete
Copy
Move
Remame
codecs.py
35.25 KB
Edit
Delete
Copy
Move
Remame
codecs.pyc
35.8 KB
Edit
Delete
Copy
Move
Remame
codeop.py
5.86 KB
Edit
Delete
Copy
Move
Remame
codeop.pyc
6.42 KB
Edit
Delete
Copy
Move
Remame
collections.py
27.15 KB
Edit
Delete
Copy
Move
Remame
collections.pyc
25.45 KB
Edit
Delete
Copy
Move
Remame
colorsys.py
3.6 KB
Edit
Delete
Copy
Move
Remame
colorsys.pyc
3.88 KB
Edit
Delete
Copy
Move
Remame
commands.py
2.49 KB
Edit
Delete
Copy
Move
Remame
commands.pyc
2.4 KB
Edit
Delete
Copy
Move
Remame
compileall.py
7.58 KB
Edit
Delete
Copy
Move
Remame
compileall.pyc
6.84 KB
Edit
Delete
Copy
Move
Remame
compiler
22 Items
Change directory
Remove directory
Rename directory
contextlib.py
4.32 KB
Edit
Delete
Copy
Move
Remame
contextlib.pyc
4.33 KB
Edit
Delete
Copy
Move
Remame
cookielib.py
63.48 KB
Edit
Delete
Copy
Move
Remame
cookielib.pyc
52.98 KB
Edit
Delete
Copy
Move
Remame
copy.py
11.26 KB
Edit
Delete
Copy
Move
Remame
copy.pyc
11.83 KB
Edit
Delete
Copy
Move
Remame
copy_reg.py
6.64 KB
Edit
Delete
Copy
Move
Remame
copy_reg.pyc
4.95 KB
Edit
Delete
Copy
Move
Remame
csv.py
16.32 KB
Edit
Delete
Copy
Move
Remame
csv.pyc
13.14 KB
Edit
Delete
Copy
Move
Remame
ctypes
8 Items
Change directory
Remove directory
Rename directory
curses
12 Items
Change directory
Remove directory
Rename directory
dbhash.py
0.49 KB
Edit
Delete
Copy
Move
Remame
dbhash.pyc
0.7 KB
Edit
Delete
Copy
Move
Remame
decimal.py
216.73 KB
Edit
Delete
Copy
Move
Remame
decimal.pyc
167.62 KB
Edit
Delete
Copy
Move
Remame
difflib.py
80.4 KB
Edit
Delete
Copy
Move
Remame
difflib.pyc
60.34 KB
Edit
Delete
Copy
Move
Remame
dircache.py
1.1 KB
Edit
Delete
Copy
Move
Remame
dircache.pyc
1.53 KB
Edit
Delete
Copy
Move
Remame
dis.py
6.35 KB
Edit
Delete
Copy
Move
Remame
dis.pyc
6.07 KB
Edit
Delete
Copy
Move
Remame
dist-packages
1 Items
Change directory
Remove directory
Rename directory
distutils
58 Items
Change directory
Remove directory
Rename directory
doctest.py
102.75 KB
Edit
Delete
Copy
Move
Remame
doctest.pyc
81.49 KB
Edit
Delete
Copy
Move
Remame
dumbdbm.py
8.93 KB
Edit
Delete
Copy
Move
Remame
dumbdbm.pyc
6.55 KB
Edit
Delete
Copy
Move
Remame
dummy_thread.py
4.31 KB
Edit
Delete
Copy
Move
Remame
dummy_thread.pyc
5.24 KB
Edit
Delete
Copy
Move
Remame
dummy_threading.py
2.74 KB
Edit
Delete
Copy
Move
Remame
dummy_threading.pyc
1.25 KB
Edit
Delete
Copy
Move
Remame
email
29 Items
Change directory
Remove directory
Rename directory
encodings
240 Items
Change directory
Remove directory
Rename directory
ensurepip
6 Items
Change directory
Remove directory
Rename directory
filecmp.py
9.36 KB
Edit
Delete
Copy
Move
Remame
filecmp.pyc
9.36 KB
Edit
Delete
Copy
Move
Remame
fileinput.py
13.42 KB
Edit
Delete
Copy
Move
Remame
fileinput.pyc
14.1 KB
Edit
Delete
Copy
Move
Remame
fnmatch.py
3.24 KB
Edit
Delete
Copy
Move
Remame
fnmatch.pyc
3.52 KB
Edit
Delete
Copy
Move
Remame
formatter.py
14.56 KB
Edit
Delete
Copy
Move
Remame
formatter.pyc
18.58 KB
Edit
Delete
Copy
Move
Remame
fpformat.py
4.59 KB
Edit
Delete
Copy
Move
Remame
fpformat.pyc
4.55 KB
Edit
Delete
Copy
Move
Remame
fractions.py
21.87 KB
Edit
Delete
Copy
Move
Remame
fractions.pyc
19.17 KB
Edit
Delete
Copy
Move
Remame
ftplib.py
36.87 KB
Edit
Delete
Copy
Move
Remame
ftplib.pyc
33.63 KB
Edit
Delete
Copy
Move
Remame
functools.py
4.37 KB
Edit
Delete
Copy
Move
Remame
functools.pyc
5.86 KB
Edit
Delete
Copy
Move
Remame
genericpath.py
3.13 KB
Edit
Delete
Copy
Move
Remame
genericpath.pyc
3.41 KB
Edit
Delete
Copy
Move
Remame
getopt.py
7.15 KB
Edit
Delete
Copy
Move
Remame
getopt.pyc
6.48 KB
Edit
Delete
Copy
Move
Remame
getpass.py
5.43 KB
Edit
Delete
Copy
Move
Remame
getpass.pyc
4.62 KB
Edit
Delete
Copy
Move
Remame
gettext.py
22.06 KB
Edit
Delete
Copy
Move
Remame
gettext.pyc
17.45 KB
Edit
Delete
Copy
Move
Remame
glob.py
3.04 KB
Edit
Delete
Copy
Move
Remame
glob.pyc
2.86 KB
Edit
Delete
Copy
Move
Remame
gzip.py
18.58 KB
Edit
Delete
Copy
Move
Remame
gzip.pyc
14.78 KB
Edit
Delete
Copy
Move
Remame
hashlib.py
7.66 KB
Edit
Delete
Copy
Move
Remame
hashlib.pyc
6.73 KB
Edit
Delete
Copy
Move
Remame
heapq.py
17.87 KB
Edit
Delete
Copy
Move
Remame
heapq.pyc
14.19 KB
Edit
Delete
Copy
Move
Remame
hmac.py
4.48 KB
Edit
Delete
Copy
Move
Remame
hmac.pyc
4.42 KB
Edit
Delete
Copy
Move
Remame
hotshot
8 Items
Change directory
Remove directory
Rename directory
htmlentitydefs.py
17.63 KB
Edit
Delete
Copy
Move
Remame
htmlentitydefs.pyc
6.22 KB
Edit
Delete
Copy
Move
Remame
htmllib.py
12.57 KB
Edit
Delete
Copy
Move
Remame
htmllib.pyc
19.66 KB
Edit
Delete
Copy
Move
Remame
httplib.py
49.42 KB
Edit
Delete
Copy
Move
Remame
httplib.pyc
35.64 KB
Edit
Delete
Copy
Move
Remame
ihooks.py
18.54 KB
Edit
Delete
Copy
Move
Remame
ihooks.pyc
20.74 KB
Edit
Delete
Copy
Move
Remame
imaplib.py
47.28 KB
Edit
Delete
Copy
Move
Remame
imaplib.pyc
44.07 KB
Edit
Delete
Copy
Move
Remame
imghdr.py
3.46 KB
Edit
Delete
Copy
Move
Remame
imghdr.pyc
4.69 KB
Edit
Delete
Copy
Move
Remame
importlib
2 Items
Change directory
Remove directory
Rename directory
imputil.py
25.16 KB
Edit
Delete
Copy
Move
Remame
imputil.pyc
15.18 KB
Edit
Delete
Copy
Move
Remame
inspect.py
41.62 KB
Edit
Delete
Copy
Move
Remame
inspect.pyc
38.97 KB
Edit
Delete
Copy
Move
Remame
io.py
3.24 KB
Edit
Delete
Copy
Move
Remame
io.pyc
3.5 KB
Edit
Delete
Copy
Move
Remame
json
10 Items
Change directory
Remove directory
Rename directory
keyword.py
1.95 KB
Edit
Delete
Copy
Move
Remame
keyword.pyc
2.05 KB
Edit
Delete
Copy
Move
Remame
lib-dynload
38 Items
Change directory
Remove directory
Rename directory
lib-tk
36 Items
Change directory
Remove directory
Rename directory
lib2to3
26 Items
Change directory
Remove directory
Rename directory
linecache.py
3.93 KB
Edit
Delete
Copy
Move
Remame
linecache.pyc
3.18 KB
Edit
Delete
Copy
Move
Remame
locale.py
97.19 KB
Edit
Delete
Copy
Move
Remame
locale.pyc
53.69 KB
Edit
Delete
Copy
Move
Remame
logging
6 Items
Change directory
Remove directory
Rename directory
macpath.py
6.14 KB
Edit
Delete
Copy
Move
Remame
macpath.pyc
7.46 KB
Edit
Delete
Copy
Move
Remame
macurl2path.py
2.67 KB
Edit
Delete
Copy
Move
Remame
macurl2path.pyc
2.18 KB
Edit
Delete
Copy
Move
Remame
mailbox.py
79.34 KB
Edit
Delete
Copy
Move
Remame
mailbox.pyc
74.49 KB
Edit
Delete
Copy
Move
Remame
mailcap.py
7.25 KB
Edit
Delete
Copy
Move
Remame
mailcap.pyc
6.89 KB
Edit
Delete
Copy
Move
Remame
markupbase.py
14.3 KB
Edit
Delete
Copy
Move
Remame
markupbase.pyc
9.02 KB
Edit
Delete
Copy
Move
Remame
md5.py
0.35 KB
Edit
Delete
Copy
Move
Remame
md5.pyc
0.37 KB
Edit
Delete
Copy
Move
Remame
mhlib.py
32.65 KB
Edit
Delete
Copy
Move
Remame
mhlib.pyc
32.83 KB
Edit
Delete
Copy
Move
Remame
mimetools.py
7 KB
Edit
Delete
Copy
Move
Remame
mimetools.pyc
7.97 KB
Edit
Delete
Copy
Move
Remame
mimetypes.py
20.45 KB
Edit
Delete
Copy
Move
Remame
mimetypes.pyc
17.96 KB
Edit
Delete
Copy
Move
Remame
mimify.py
14.67 KB
Edit
Delete
Copy
Move
Remame
mimify.pyc
11.69 KB
Edit
Delete
Copy
Move
Remame
modulefinder.py
23.89 KB
Edit
Delete
Copy
Move
Remame
modulefinder.pyc
18.61 KB
Edit
Delete
Copy
Move
Remame
multifile.py
4.71 KB
Edit
Delete
Copy
Move
Remame
multifile.pyc
5.26 KB
Edit
Delete
Copy
Move
Remame
multiprocessing
25 Items
Change directory
Remove directory
Rename directory
mutex.py
1.83 KB
Edit
Delete
Copy
Move
Remame
mutex.pyc
2.44 KB
Edit
Delete
Copy
Move
Remame
netrc.py
5.73 KB
Edit
Delete
Copy
Move
Remame
netrc.pyc
4.54 KB
Edit
Delete
Copy
Move
Remame
new.py
0.6 KB
Edit
Delete
Copy
Move
Remame
new.pyc
0.84 KB
Edit
Delete
Copy
Move
Remame
nntplib.py
20.97 KB
Edit
Delete
Copy
Move
Remame
nntplib.pyc
20.46 KB
Edit
Delete
Copy
Move
Remame
ntpath.py
18.97 KB
Edit
Delete
Copy
Move
Remame
ntpath.pyc
12.78 KB
Edit
Delete
Copy
Move
Remame
nturl2path.py
2.36 KB
Edit
Delete
Copy
Move
Remame
nturl2path.pyc
1.77 KB
Edit
Delete
Copy
Move
Remame
numbers.py
10.08 KB
Edit
Delete
Copy
Move
Remame
numbers.pyc
13.56 KB
Edit
Delete
Copy
Move
Remame
opcode.py
5.35 KB
Edit
Delete
Copy
Move
Remame
opcode.pyc
5.99 KB
Edit
Delete
Copy
Move
Remame
optparse.py
59.77 KB
Edit
Delete
Copy
Move
Remame
optparse.pyc
52.36 KB
Edit
Delete
Copy
Move
Remame
os.py
25.3 KB
Edit
Delete
Copy
Move
Remame
os.pyc
24.98 KB
Edit
Delete
Copy
Move
Remame
os2emxpath.py
4.53 KB
Edit
Delete
Copy
Move
Remame
os2emxpath.pyc
4.4 KB
Edit
Delete
Copy
Move
Remame
pdb.doc
7.73 KB
Edit
Delete
Copy
Move
Remame
pdb.py
45.02 KB
Edit
Delete
Copy
Move
Remame
pdb.pyc
42.42 KB
Edit
Delete
Copy
Move
Remame
pickle.py
44.42 KB
Edit
Delete
Copy
Move
Remame
pickle.pyc
37.45 KB
Edit
Delete
Copy
Move
Remame
pickletools.py
72.79 KB
Edit
Delete
Copy
Move
Remame
pickletools.pyc
55.64 KB
Edit
Delete
Copy
Move
Remame
pipes.py
9.36 KB
Edit
Delete
Copy
Move
Remame
pipes.pyc
9.06 KB
Edit
Delete
Copy
Move
Remame
pkgutil.py
19.87 KB
Edit
Delete
Copy
Move
Remame
pkgutil.pyc
18.42 KB
Edit
Delete
Copy
Move
Remame
plat-x86_64-linux-gnu
10 Items
Change directory
Remove directory
Rename directory
platform.py
51.38 KB
Edit
Delete
Copy
Move
Remame
platform.pyc
36.84 KB
Edit
Delete
Copy
Move
Remame
plistlib.py
14.83 KB
Edit
Delete
Copy
Move
Remame
plistlib.pyc
18.67 KB
Edit
Delete
Copy
Move
Remame
popen2.py
8.22 KB
Edit
Delete
Copy
Move
Remame
popen2.pyc
8.78 KB
Edit
Delete
Copy
Move
Remame
poplib.py
12.52 KB
Edit
Delete
Copy
Move
Remame
poplib.pyc
12.97 KB
Edit
Delete
Copy
Move
Remame
posixfile.py
7.82 KB
Edit
Delete
Copy
Move
Remame
posixfile.pyc
7.45 KB
Edit
Delete
Copy
Move
Remame
posixpath.py
13.61 KB
Edit
Delete
Copy
Move
Remame
posixpath.pyc
11.12 KB
Edit
Delete
Copy
Move
Remame
pprint.py
11.5 KB
Edit
Delete
Copy
Move
Remame
pprint.pyc
9.92 KB
Edit
Delete
Copy
Move
Remame
profile.py
22.25 KB
Edit
Delete
Copy
Move
Remame
profile.pyc
15.99 KB
Edit
Delete
Copy
Move
Remame
pstats.py
26.09 KB
Edit
Delete
Copy
Move
Remame
pstats.pyc
24.31 KB
Edit
Delete
Copy
Move
Remame
pty.py
4.94 KB
Edit
Delete
Copy
Move
Remame
pty.pyc
4.83 KB
Edit
Delete
Copy
Move
Remame
py_compile.py
6.14 KB
Edit
Delete
Copy
Move
Remame
py_compile.pyc
6.46 KB
Edit
Delete
Copy
Move
Remame
pyclbr.py
13.07 KB
Edit
Delete
Copy
Move
Remame
pyclbr.pyc
9.4 KB
Edit
Delete
Copy
Move
Remame
pydoc.py
93.56 KB
Edit
Delete
Copy
Move
Remame
pydoc.pyc
89.91 KB
Edit
Delete
Copy
Move
Remame
pydoc_data
4 Items
Change directory
Remove directory
Rename directory
quopri.py
6.8 KB
Edit
Delete
Copy
Move
Remame
quopri.pyc
6.4 KB
Edit
Delete
Copy
Move
Remame
random.py
31.57 KB
Edit
Delete
Copy
Move
Remame
random.pyc
24.89 KB
Edit
Delete
Copy
Move
Remame
re.py
13.11 KB
Edit
Delete
Copy
Move
Remame
re.pyc
13.06 KB
Edit
Delete
Copy
Move
Remame
repr.py
4.2 KB
Edit
Delete
Copy
Move
Remame
repr.pyc
5.23 KB
Edit
Delete
Copy
Move
Remame
rexec.py
19.68 KB
Edit
Delete
Copy
Move
Remame
rexec.pyc
23.13 KB
Edit
Delete
Copy
Move
Remame
rfc822.py
32.76 KB
Edit
Delete
Copy
Move
Remame
rfc822.pyc
30.95 KB
Edit
Delete
Copy
Move
Remame
rlcompleter.py
5.85 KB
Edit
Delete
Copy
Move
Remame
rlcompleter.pyc
5.92 KB
Edit
Delete
Copy
Move
Remame
robotparser.py
7.41 KB
Edit
Delete
Copy
Move
Remame
robotparser.pyc
7.73 KB
Edit
Delete
Copy
Move
Remame
runpy.py
10.82 KB
Edit
Delete
Copy
Move
Remame
runpy.pyc
8.56 KB
Edit
Delete
Copy
Move
Remame
sched.py
4.97 KB
Edit
Delete
Copy
Move
Remame
sched.pyc
4.86 KB
Edit
Delete
Copy
Move
Remame
sets.py
18.6 KB
Edit
Delete
Copy
Move
Remame
sets.pyc
16.39 KB
Edit
Delete
Copy
Move
Remame
sgmllib.py
17.46 KB
Edit
Delete
Copy
Move
Remame
sgmllib.pyc
14.98 KB
Edit
Delete
Copy
Move
Remame
sha.py
0.38 KB
Edit
Delete
Copy
Move
Remame
sha.pyc
0.41 KB
Edit
Delete
Copy
Move
Remame
shelve.py
7.99 KB
Edit
Delete
Copy
Move
Remame
shelve.pyc
9.96 KB
Edit
Delete
Copy
Move
Remame
shlex.py
10.9 KB
Edit
Delete
Copy
Move
Remame
shlex.pyc
7.36 KB
Edit
Delete
Copy
Move
Remame
shutil.py
18.63 KB
Edit
Delete
Copy
Move
Remame
shutil.pyc
18.12 KB
Edit
Delete
Copy
Move
Remame
site.py
19.48 KB
Edit
Delete
Copy
Move
Remame
site.pyc
19.08 KB
Edit
Delete
Copy
Move
Remame
sitecustomize.py
0.15 KB
Edit
Delete
Copy
Move
Remame
sitecustomize.pyc
0.23 KB
Edit
Delete
Copy
Move
Remame
smtpd.py
18.11 KB
Edit
Delete
Copy
Move
Remame
smtpd.pyc
15.45 KB
Edit
Delete
Copy
Move
Remame
smtplib.py
31.35 KB
Edit
Delete
Copy
Move
Remame
smtplib.pyc
29.47 KB
Edit
Delete
Copy
Move
Remame
sndhdr.py
5.83 KB
Edit
Delete
Copy
Move
Remame
sndhdr.pyc
7.16 KB
Edit
Delete
Copy
Move
Remame
socket.py
20.13 KB
Edit
Delete
Copy
Move
Remame
socket.pyc
15.71 KB
Edit
Delete
Copy
Move
Remame
sqlite3
6 Items
Change directory
Remove directory
Rename directory
sre.py
0.38 KB
Edit
Delete
Copy
Move
Remame
sre.pyc
0.5 KB
Edit
Delete
Copy
Move
Remame
sre_compile.py
19.35 KB
Edit
Delete
Copy
Move
Remame
sre_compile.pyc
12.24 KB
Edit
Delete
Copy
Move
Remame
sre_constants.py
7.03 KB
Edit
Delete
Copy
Move
Remame
sre_constants.pyc
6.04 KB
Edit
Delete
Copy
Move
Remame
sre_parse.py
28.23 KB
Edit
Delete
Copy
Move
Remame
sre_parse.pyc
19.48 KB
Edit
Delete
Copy
Move
Remame
ssl.py
36.92 KB
Edit
Delete
Copy
Move
Remame
ssl.pyc
31.47 KB
Edit
Delete
Copy
Move
Remame
stat.py
1.8 KB
Edit
Delete
Copy
Move
Remame
stat.pyc
2.67 KB
Edit
Delete
Copy
Move
Remame
statvfs.py
0.88 KB
Edit
Delete
Copy
Move
Remame
statvfs.pyc
0.6 KB
Edit
Delete
Copy
Move
Remame
string.py
21.04 KB
Edit
Delete
Copy
Move
Remame
string.pyc
19.88 KB
Edit
Delete
Copy
Move
Remame
stringold.py
12.16 KB
Edit
Delete
Copy
Move
Remame
stringold.pyc
12.2 KB
Edit
Delete
Copy
Move
Remame
stringprep.py
13.21 KB
Edit
Delete
Copy
Move
Remame
stringprep.pyc
14.11 KB
Edit
Delete
Copy
Move
Remame
struct.py
0.08 KB
Edit
Delete
Copy
Move
Remame
struct.pyc
0.23 KB
Edit
Delete
Copy
Move
Remame
subprocess.py
48.26 KB
Edit
Delete
Copy
Move
Remame
subprocess.pyc
30.8 KB
Edit
Delete
Copy
Move
Remame
sunau.py
16.82 KB
Edit
Delete
Copy
Move
Remame
sunau.pyc
17.87 KB
Edit
Delete
Copy
Move
Remame
sunaudio.py
1.37 KB
Edit
Delete
Copy
Move
Remame
sunaudio.pyc
1.93 KB
Edit
Delete
Copy
Move
Remame
symbol.py
2.01 KB
Edit
Delete
Copy
Move
Remame
symbol.pyc
2.95 KB
Edit
Delete
Copy
Move
Remame
symtable.py
7.26 KB
Edit
Delete
Copy
Move
Remame
symtable.pyc
11.41 KB
Edit
Delete
Copy
Move
Remame
sysconfig.py
24.61 KB
Edit
Delete
Copy
Move
Remame
sysconfig.pyc
18.19 KB
Edit
Delete
Copy
Move
Remame
tabnanny.py
11.07 KB
Edit
Delete
Copy
Move
Remame
tabnanny.pyc
8.01 KB
Edit
Delete
Copy
Move
Remame
tarfile.py
88.45 KB
Edit
Delete
Copy
Move
Remame
tarfile.pyc
74.02 KB
Edit
Delete
Copy
Move
Remame
telnetlib.py
26.41 KB
Edit
Delete
Copy
Move
Remame
telnetlib.pyc
22.54 KB
Edit
Delete
Copy
Move
Remame
tempfile.py
19.09 KB
Edit
Delete
Copy
Move
Remame
tempfile.pyc
19.76 KB
Edit
Delete
Copy
Move
Remame
test
8 Items
Change directory
Remove directory
Rename directory
textwrap.py
16.81 KB
Edit
Delete
Copy
Move
Remame
textwrap.pyc
11.72 KB
Edit
Delete
Copy
Move
Remame
this.py
0.98 KB
Edit
Delete
Copy
Move
Remame
this.pyc
1.19 KB
Edit
Delete
Copy
Move
Remame
threading.py
46.03 KB
Edit
Delete
Copy
Move
Remame
threading.pyc
41.44 KB
Edit
Delete
Copy
Move
Remame
timeit.py
12.49 KB
Edit
Delete
Copy
Move
Remame
timeit.pyc
11.87 KB
Edit
Delete
Copy
Move
Remame
toaiff.py
3.07 KB
Edit
Delete
Copy
Move
Remame
toaiff.pyc
3.03 KB
Edit
Delete
Copy
Move
Remame
token.py
2.85 KB
Edit
Delete
Copy
Move
Remame
token.pyc
3.72 KB
Edit
Delete
Copy
Move
Remame
tokenize.py
17.07 KB
Edit
Delete
Copy
Move
Remame
tokenize.pyc
14.13 KB
Edit
Delete
Copy
Move
Remame
trace.py
29.19 KB
Edit
Delete
Copy
Move
Remame
trace.pyc
22.19 KB
Edit
Delete
Copy
Move
Remame
traceback.py
11.02 KB
Edit
Delete
Copy
Move
Remame
traceback.pyc
11.37 KB
Edit
Delete
Copy
Move
Remame
tty.py
0.86 KB
Edit
Delete
Copy
Move
Remame
tty.pyc
1.28 KB
Edit
Delete
Copy
Move
Remame
types.py
2.04 KB
Edit
Delete
Copy
Move
Remame
types.pyc
2.65 KB
Edit
Delete
Copy
Move
Remame
unittest
20 Items
Change directory
Remove directory
Rename directory
urllib.py
58.53 KB
Edit
Delete
Copy
Move
Remame
urllib.pyc
49.71 KB
Edit
Delete
Copy
Move
Remame
urllib2.py
51.28 KB
Edit
Delete
Copy
Move
Remame
urllib2.pyc
45.92 KB
Edit
Delete
Copy
Move
Remame
urlparse.py
14.81 KB
Edit
Delete
Copy
Move
Remame
urlparse.pyc
14.13 KB
Edit
Delete
Copy
Move
Remame
user.py
1.59 KB
Edit
Delete
Copy
Move
Remame
user.pyc
1.68 KB
Edit
Delete
Copy
Move
Remame
uu.py
6.4 KB
Edit
Delete
Copy
Move
Remame
uu.pyc
4.2 KB
Edit
Delete
Copy
Move
Remame
uuid.py
22.08 KB
Edit
Delete
Copy
Move
Remame
uuid.pyc
21.95 KB
Edit
Delete
Copy
Move
Remame
warnings.py
14.4 KB
Edit
Delete
Copy
Move
Remame
warnings.pyc
13.12 KB
Edit
Delete
Copy
Move
Remame
wave.py
18.15 KB
Edit
Delete
Copy
Move
Remame
wave.pyc
19.44 KB
Edit
Delete
Copy
Move
Remame
weakref.py
13.28 KB
Edit
Delete
Copy
Move
Remame
weakref.pyc
15.37 KB
Edit
Delete
Copy
Move
Remame
webbrowser.py
22.25 KB
Edit
Delete
Copy
Move
Remame
webbrowser.pyc
19.26 KB
Edit
Delete
Copy
Move
Remame
whichdb.py
3.3 KB
Edit
Delete
Copy
Move
Remame
whichdb.pyc
2.18 KB
Edit
Delete
Copy
Move
Remame
wsgiref
12 Items
Change directory
Remove directory
Rename directory
wsgiref.egg-info
0.18 KB
Edit
Delete
Copy
Move
Remame
xdrlib.py
5.93 KB
Edit
Delete
Copy
Move
Remame
xdrlib.pyc
9.59 KB
Edit
Delete
Copy
Move
Remame
xml
6 Items
Change directory
Remove directory
Rename directory
xmllib.py
34.05 KB
Edit
Delete
Copy
Move
Remame
xmllib.pyc
26.11 KB
Edit
Delete
Copy
Move
Remame
xmlrpclib.py
50.91 KB
Edit
Delete
Copy
Move
Remame
xmlrpclib.pyc
42.8 KB
Edit
Delete
Copy
Move
Remame
zipfile.py
57.64 KB
Edit
Delete
Copy
Move
Remame
zipfile.pyc
40.52 KB
Edit
Delete
Copy
Move
Remame