"pickletools" --- Tools for pickle developers
*********************************************

**소스 코드:** Lib/pickletools.py

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

이 모듈은 "pickle" 모듈의 깊은 세부 사항과 관련된 다양한 상수, 구현에
대한 긴 주석, 그리고 피클 된 데이터를 분석하기 위한 몇 가지 유용한 함
수를 포함합니다. 이 모듈의 내용은 "pickle"에서 작업하는 파이썬 코어 개
발자에게 유용합니다; 아마도 "pickle" 모듈의 일반 사용자는
"pickletools" 모듈을 적절한 용도를 찾지 못할 것입니다.


명령 줄 사용법
==============

버전 3.2에 추가.

명령 줄에서 호출될 때, "python -m pickletools"는 하나 이상의 피클 파일
의 내용을 역 어셈블합니다. 피클 형식의 세부 사항이 아닌 피클에 저장된
파이썬 객체를 보려면, 대신 "-m pickle"을 사용하는 것이 좋습니다. 그러
나, 검사하려는 피클 파일이 신뢰할 수 없는 소스에서 왔을 때, 피클 바이
트 코드를 실행하지 않으므로 "-m pickletools"가 더 안전한 옵션입니다.

예를 들어, 튜플 "(1, 2)"가 파일 "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


명령 줄 옵션
------------

-a, --annotate

   각 줄에 짧은 opcode 설명으로 주석을 답니다.

-o, --output=<file>

   출력이 기록되어야 하는 파일의 이름.

-l, --indentlevel=<num>

   새 MARK 수준을 들여쓰기하는 공백의 수.

-m, --memo

   여러 객체가 역 어셈블될 때, 역 어셈블리 간에 메모를 보존합니다.

-p, --preamble=<preamble>

   하나 이상의 피클 파일이 지정될 때, 각 역 어셈블리 전에 주어진 프리
   앰블을 인쇄합니다.


프로그래밍 인터페이스
=====================

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

   피클의 기호적인 역 어셈블리를 기본값이 "sys.stdout"인 파일류 객체
   *out*으로 출력합니다. *pickle*는 문자열이나 파일류 객체가 될 수 있
   습니다. *memo*는 피클의 메모로 사용될 파이썬 딕셔너리일 수 있습니다
   ; 같은 피클러로 만들어진 여러 피클에 걸쳐 역 어셈블리를 수행하는 데
   사용할 수 있습니다. 스트림의 "MARK" 옵코드로 표시된 연속 수준은
   *indentlevel*개의 스페이스로 들여쓰기 됩니다. 0이 아닌 값이
   *annotate*에 주어지면, 출력의 각 옵코드에 짧은 설명이 주석으로 표시
   됩니다. *annotate* 값은 주석을 시작해야 하는 열의 힌트로 사용됩니다
   .

   버전 3.2에서 변경: *annotate* 인자를 추가했습니다.

pickletools.genops(pickle)

   피클의 모든 옵코드에 대해 "(opcode, arg, pos)" 트리플을 반환하는 *
   이터레이터*를 제공합니다. *opcode*는 "OpcodeInfo" 클래스의 인스턴스
   입니다; *arg*는 옵코드 인자의 파이썬 객체로 디코딩된 값입니다;
   *pos*는 이 옵코드의 위치입니다. *pickle*은 문자열이나 파일류 객체가
   될 수 있습니다.

pickletools.optimize(picklestring)

   사용되지 않는 "PUT" 옵코드를 제거한 후 새로운 동등한 피클 문자열을
   반환합니다. 최적화된 피클은 더 짧고, 전송 시간이 덜 걸리며, 저장 공
   간이 덜 필요하고, 역 피클이 더 효율적입니다.
