�`^c@sdZddlZddlZyddlmZWn!ek
rUddlmZnXdddddd gZd
j Z
eZe
ZeZddddd
�Zdddd�Zd�Zd�Zd�Zd�Zd dd��YZd�Zd�Zdd�Zedkre�ndS(s/Support to pretty-print lists, tuples, & dictionaries recursively.
Very simple, but useful, especially in debugging data structures.
Classes
-------
PrettyPrinter()
Handle pretty-printing operations onto a stream using a configured
set of formatting parameters.
Functions
---------
pformat()
Format a Python object into a pretty-printed representation.
pprint()
Pretty-print a Python object to a stream [default is sys.stdout].
saferepr()
Generate a 'standard' repr()-like value, but protect against recursive
data structures.
i�N(tStringIOtpprinttpformatt
isreadabletisrecursivetsafereprt
PrettyPrinters, iiPc Cs2td|d|d|d|�}|j|�dS(sAPretty-print a Python object to a stream [default is sys.stdout].tstreamtindenttwidthtdepthN(RR(tobjectRRR R
tprinter((s'/usr/stallion/src/cpython/Lib/pprint.pyR7scCs"td|d|d|�j|�S(s<Format a Python object into a pretty-printed representation.RR R
(RR(RRR R
((s'/usr/stallion/src/cpython/Lib/pprint.pyR=scCst|idd�dS(s=Version of repr() which can handle recursive data structures.iN(t
_safe_reprtNone(R((s'/usr/stallion/src/cpython/Lib/pprint.pyRAscCst|idd�dS(s4Determine if saferepr(object) is readable by eval().iiN(R
R(R((s'/usr/stallion/src/cpython/Lib/pprint.pyREscCst|idd�dS(s8Determine if object requires a recursive representation.iiN(R
R(R((s'/usr/stallion/src/cpython/Lib/pprint.pyRIscCs@tj��tjr,tjddt�nt|�SWdQXdS(Ntignores%comparing unequal types not supported(twarningstcatch_warningst_systpy3kwarningtfilterwarningstDeprecationWarningtsorted(titerable((s'/usr/stallion/src/cpython/Lib/pprint.pyt_sortedMs
cBs\eZddd
d
d�Zd�Zd�Zd�Zd�Zd�Zd�Z d �Z
RS(iiPcCs�t|�}t|�}|dks0td��|dksT|dksTtd��|sftd��||_||_||_|dk r�||_ntj|_dS(s�Handle pretty printing operations onto a stream using a set of
configured parameters.
indent
Number of spaces to indent for each level of nesting.
width
Attempted maximum number of columns in the output.
depth
The maximum depth to print out nested structures.
stream
The desired output stream. If omitted (or false), the standard
output stream available at construction will be used.
isindent must be >= 0sdepth must be > 0swidth must be != 0N( tinttAssertionErrorRt_deptht_indent_per_levelt_widtht_streamRtstdout(tselfRR R
R((s'/usr/stallion/src/cpython/Lib/pprint.pyt__init__Us$ cCs3|j||jddid�|jjd�dS(Nis
(t_formatRtwrite(R R((s'/usr/stallion/src/cpython/Lib/pprint.pyRtscCs/t�}|j||ddid�|j�S(Ni(t _StringIOR"tgetvalue(R Rtsio((s'/usr/stallion/src/cpython/Lib/pprint.pyRxs cCs|j|idd�dS(Nii(tformat(R R((s'/usr/stallion/src/cpython/Lib/pprint.pyR}scCs,|j|idd�\}}}|o+|S(Ni(R'(R Rtstreadablet recursive((s'/usr/stallion/src/cpython/Lib/pprint.pyR�s!cCs�|d}t|�}||krK|jt|��t|_t|_dS|j|||d�}t|�} t |�|j
d||k}
|j}|jr�||jkr�||�dSt| dd�}t| t�r�|tjkr�|d�|jdkr!||jdd�nt |�}
|
rvd||<||j}t|j��}|d\}}|j|||�}||�|d�|j|||t |�d|d||�|
dkr_x�|dD]~\}}|j|||�}|
r|dd||f�n|d |�|j|||t |�d|d||�q�Wn||j}||=n|d
�dSt| t�r�|tjks�| t�r�|tjks�| t�r�|tjks�| t�r�|tjkr�t |�}
t| t�r*|d�d}nvt| t�rL|d
�d}nT|
s`||�dS|| j�|d�d}|t| j�d7}t|�}|jdkr�|
r�||jdd�n|
r�d||<||j}|j|d|||d||�|
dkrwxZ|dD]K}|
rF|dd|�n
|d�|j||||d||�q%Wn||j}||=nt| t�r�|
dkr�|d�n||�dS||�dS(Nit__repr__t{t is: is,
%s%s: s, %s: t}t[t]t(t)s([s])s,
s, t,(t_idR#t
_recursiontTruet
_recursivetFalset _readablet_reprt_typet_lenRRtgetattrRt
issubclasstdictR+RRtitemsR"tlistttupletsett frozensett__name__tlen(R RRRt allowancetcontexttleveltobjidtrepttyptsepLinesR#trtlengthR@tkeytenttendchar((s'/usr/stallion/src/cpython/Lib/pprint.pyR"�s�
!
cCsR|j||j�|j|�\}}}|s<t|_n|rNt|_n|S(N(R'tcopyRR8R9R6R7(R RRHRItreprR)R*((s'/usr/stallion/src/cpython/Lib/pprint.pyR:�scCst||||�S(s�Format object for a specific context, returning a string
and flags indicating whether the representation is 'readable'
and whether the object represents a recursive construct.
(R
(R RRHt maxlevelsRI((s'/usr/stallion/src/cpython/Lib/pprint.pyR'�sN(REt
__module__RR!RRRRR"R:R'(((s'/usr/stallion/src/cpython/Lib/pprint.pyRTs \ c Cs<t|�}|tkrdtjkr:t|�ttfSd|krhd|krhd}idd6}nd}idd6}|j}t�}|j } xG|D]?}
|
j
�r�| |
�q�| ||
t|
�dd!��q�Wd||j�|fttfSt|d d�}t|t�r�|tjkr�|sCd
ttfSt|�}|rt||krtdt||kfS||kr�t|�ttfSd||<t}
t}g}|j}|d7}t}x�t|j��D]�\}}|||||�\}}}|||||�\}}}|d||f�|
oF|oF|}
|sU|r�t}q�q�W||=d
t|�|
|fSt|t�r�|tjks�t|t�r|tjkrt|t�r�s�dttfSd}n4t|�dkrd}n|sdttfSd}t|�}|rP||krP|dt||kfS||krot|�ttfSd||<t}
t}g}|j}|d7}xT|D]L}t||||�\}}}||�|s�}
n|r�t}q�q�W||=|t|�|
|fSt|�}||o5|jd�tfS(Ntlocalet't"s\"s\'ii�s%s%s%sR+s{}s{...}s%s: %ss{%s}s[]s[%s]s(%s,)s()s(%s)s...t<(R;tstrRtmodulesRTR6R8tgetR$R#tisalphaR%R=RR>R?R+R4R5tappendR
RR@t
_commajoinRARBR<t
startswith( RRHRURIRLtclosuretquotestqgetR&R#tcharRNRJR)R*t
componentsR_Rtktvtkreprt kreadabletkrecurtvreprt vreadabletvrecurR'totoreprt oreadabletorecurRK((s'/usr/stallion/src/cpython/Lib/pprint.pyR
�s�
$
cCsdt|�jt|�fS(Ns<Recursion on %s with id=%s>(R;RER4(R((s'/usr/stallion/src/cpython/Lib/pprint.pyR5GscCs�ddl}|dkrHddddgidd6d d
6fgd}nt�}|j�}t|idd�|j�}|j|�|j�}d
G||GHdG||GHdS(Ni�tstringiiiiiiiii�is_safe_repr:spformat:(ii(ttimeRRR
R(RRttptt1tt2tt3((s'/usr/stallion/src/cpython/Lib/pprint.pyt
_perfcheckLs0
t__main__((t__doc__tsysRRt cStringIORR$tImportErrort__all__tjoinR`tidR4RFR<ttypeR;RRRRRRRRR
R5RyRE(((s'/usr/stallion/src/cpython/Lib/pprint.pyt<module>#s0
�T
|