
``pickletools`` --- Tools for pickle developers
***********************************************

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``; 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.
