summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Belopolsky <alexander.belopolsky@gmail.com>2011-01-13 21:58:44 (GMT)
committerAlexander Belopolsky <alexander.belopolsky@gmail.com>2011-01-13 21:58:44 (GMT)
commitcc75a86123eba2fdf4e35227e14f8dbf4b67ac3b (patch)
treeeec1bff211a44ba32f309d1d27867aa4f78751ba
parentd958ea70bc20a609c8d6a885998bfa8ffeff955b (diff)
downloadcpython-cc75a86123eba2fdf4e35227e14f8dbf4b67ac3b.zip
cpython-cc75a86123eba2fdf4e35227e14f8dbf4b67ac3b.tar.gz
cpython-cc75a86123eba2fdf4e35227e14f8dbf4b67ac3b.tar.bz2
Issue #9268: Documented -m pickletools usage.
Also added a source code link.
-rw-r--r--Doc/library/pickletools.rst64
1 files changed, 64 insertions, 0 deletions
diff --git a/Doc/library/pickletools.rst b/Doc/library/pickletools.rst
index 951b82d..4c0a148 100644
--- a/Doc/library/pickletools.rst
+++ b/Doc/library/pickletools.rst
@@ -5,6 +5,11 @@
:synopsis: Contains extensive comments about the pickle protocols and
pickle-machine opcodes, as well as some useful functions.
+**Source code:** :source:`Lib/pickletools.py`
+
+--------------
+
+
This module contains various constants relating to the intimate details of the
:mod:`pickle` module, some lengthy comments about the implementation, and a
few useful functions for analyzing pickled data. The contents of this module
@@ -12,6 +17,65 @@ are useful for Python core developers who are working on the :mod:`pickle`;
ordinary users of the :mod:`pickle` module probably won't find the
:mod:`pickletools` module relevant.
+Command line usage
+------------------
+
+.. versionadded:: 3.2
+
+When invoked from the command line, ``python -m pickletools`` will
+disassemble the contents of one or more pickle files. Note that if
+you want to see the Python object stored in the pickle rather than the
+details of pickle format, you may want to use ``-m pickle`` instead.
+However, when the pickle file that you want to examine comes from an
+untrusted source, ``-m pickletools`` is a safer option because it does
+not execute pickle bytecode.
+
+For example, with a tuple ``(1, 2)`` pickled in file ``x.pickle``::
+
+ $ python -m pickle x.pickle
+ (1, 2)
+
+ $ python -m pickletools x.pickle
+ 0: \x80 PROTO 3
+ 2: K BININT1 1
+ 4: K BININT1 2
+ 6: \x86 TUPLE2
+ 7: q BINPUT 0
+ 9: . STOP
+ highest protocol among opcodes = 2
+
+Command line options
+^^^^^^^^^^^^^^^^^^^^
+
+.. program:: pickletools
+
+.. cmdoption:: -a, --annotate
+
+ Annotate each line with a short opcode description.
+
+.. cmdoption:: -o, --output=<file>
+
+ Name of a file where the output should be written.
+
+.. cmdoption:: -l, --indentlevel=<num>
+
+ The number of blanks by which to indent a new MARK level.
+
+.. cmdoption:: -m, --memo
+
+ When multiple objects are disassembled, preserve memo between
+ disassemblies.
+
+.. cmdoption:: -p, --preamble=<preamble>
+
+ When more than one pickle file are specified, print given preamble
+ before each disassembly.
+
+
+
+Programmatic Interface
+----------------------
+
.. function:: dis(pickle, out=None, memo=None, indentlevel=4, annotate=0)