\section{\module{pickletools} --- pickle 開発者のためのツール群}

\versionadded{2.3}

\declaremodule{standard}{pickletools}
\modulesynopsis{pickle プロトコルと pickle マシン opcode に関する詳しい
コメントと、有用な関数がいくつかが入っています。}

このモジュールには、\refmodule{pickle} モジュールの詳細に関わる
様々な定数や実装に関する長大なコメント、そして pickle 化されたデータ
を解析する上で有用な関数をいくつか定義しています。このモジュールの内容は
\module{pickle} および \module{cPickle} の実装に関わっている Python
core 開発者にとって有用なものです; 普通の \module{pickle} 利用者に
とっては、\module{pickletools} モジュールはおそらく関係ないものでしょう。

\begin{funcdesc}{dis}{pickle\optional{, out=None, memo=None, indentlevel=4}}
pickle をシンボル分解 (symbolic disassembly) した内容を
ファイル類似オブジェクト\var{out} (デフォルトでは\code{sys.stdout}) 
に出力します。\var{pickle} は文字列にもファイル類似オブジェクトにも
できます。\var{memo} は Python 辞書型で、 pickle のメモに使われます。
同じ pickler の生成した複数の pickle 間にわたってシンボル分解を行う
場合に使われます。ストリーム中で\code{MARK} opcode で表される
継続レベル (successive level) は\var{indentlevel} に指定したスペース
分インデントされます。
\end{funcdesc}

\begin{funcdesc}{genops}{pickle}
pickle 内の全ての opcode を取り出すイテレータを返します。このイテレータは
\code{(\var{opcode}, \var{arg}, \var{pos})} の三つ組みからなる配列を
返します。
\var{opcode} は \class{OpcodeInfo} クラスのインスタンスのクラスです。
\var{arg} は \var{opcode} の引数としてデコードされた Python オブジェクトの
値です。\var{pos} は \var{opcode} の場所を表す値です。
\var{pickle} は文字列でもファイル類似オブジェクトでもかまいません。
\end{funcdesc}

