32.13. "pickletools" — Tools for pickle developers
**************************************************

New in version 2.3.

**Source code:** Lib/pickletools.py

======================================================================

This module contains various constants relating to the intimate
details of the "pickle" module, some lengthy comments about the
implementation, and a few useful functions for analyzing pickled data.
The contents of this module are useful for Python core developers who
are working on the "pickle" and "cPickle" implementations; ordinary
users of the "pickle" module probably won’t find the "pickletools"
module relevant.

pickletools.dis(pickle, out=None, memo=None, indentlevel=4)

   Outputs a symbolic disassembly of the pickle to the file-like
   object *out*, defaulting to "sys.stdout".  *pickle* can be a string
   or a file-like object. *memo* can be a Python dictionary that will
   be used as the pickle’s memo; it can be used to perform
   disassemblies across multiple pickles created by the same pickler.
   Successive levels, indicated by "MARK" opcodes in the stream, are
   indented by *indentlevel* spaces.

pickletools.genops(pickle)

   Provides an *iterator* over all of the opcodes in a pickle,
   returning a sequence of "(opcode, arg, pos)" triples.  *opcode* is
   an instance of an "OpcodeInfo" class; *arg* is the decoded value,
   as a Python object, of the opcode’s argument; *pos* is the position
   at which this opcode is located. *pickle* can be a string or a
   file-like object.

pickletools.optimize(picklestring)

   Returns a new equivalent pickle string after eliminating unused
   "PUT" opcodes. The optimized pickle is shorter, takes less
   transmission time, requires less storage space, and unpickles more
   efficiently.

   New in version 2.6.
