Ë
    òT•j^^  ã                   óê   — d Z ddlZddlZddlZddlZddlZ	ddl
mZ g d¢Zdddddœd„Zdddddœd	„Zdd
œd„Zd„ Zd„ Zd„ Z G d„ d«      Zd„ Z G d„ d«      Z eeeeeee ed«      h«      Zd„ Z d„ Z!y)a/  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.

é    N)ÚStringIO)ÚpprintÚpformatÚ
isreadableÚisrecursiveÚsafereprÚPrettyPrinterÚppFT©ÚcompactÚ
sort_dictsÚunderscore_numbersc          	      óJ   — t        |||||||¬«      }|j                  | «       y)zAPretty-print a Python object to a stream [default is sys.stdout].)ÚstreamÚindentÚwidthÚdepthr   r   r   N)r	   r   )	Úobjectr   r   r   r   r   r   r   Úprinters	            ú/usr/lib/python3.12/pprint.pyr   r   0   s-   € ô Ø˜f¨E¸Ø JØ-ô/€Gð ‡N�N�6Õó    c                óB   — t        ||||||¬«      j                  | «      S )z<Format a Python object into a pretty-printed representation.)r   r   r   r   r   r   )r	   r   )r   r   r   r   r   r   r   s          r   r   r   9   s*   € ô  ¨e¸5Ø!(°ZØ,>ô@ç@GÁÈÃðPr   )r   c                ó&   — t        | g|¢­d|i|¤Ž y)zPretty-print a Python objectr   N)r   )r   r   ÚargsÚkwargss       r   r
   r
   @   s   € ä
ˆ6Ð:�DÒ: ZÐ:°6Ó:r   c                 ó@   — t        «       j                  | i dd«      d   S )z=Version of repr() which can handle recursive data structures.Nr   ©r	   Ú
_safe_repr©r   s    r   r   r   D   ó    € ä‹?×%Ñ% f¨b°$¸Ó:¸1Ñ=Ð=r   c                 ó@   — t        «       j                  | i dd«      d   S )z4Determine if saferepr(object) is readable by eval().Nr   é   r   r   s    r   r   r   H   r    r   c                 ó@   — t        «       j                  | i dd«      d   S )z8Determine if object requires a recursive representation.Nr   é   r   r   s    r   r   r   L   r    r   c                   ó"   — e Zd ZdZdgZd„ Zd„ Zy)Ú	_safe_keyaU  Helper function for key functions when sorting unorderable objects.

    The wrapped-object will fallback to a Py2.x style comparison for
    unorderable types (sorting first comparing the type name and then by
    the obj ids).  Does not work recursively, so dict.items() must have
    _safe_key applied to both the key and the value.

    Úobjc                 ó   — || _         y ©N)r'   )Úselfr'   s     r   Ú__init__z_safe_key.__init__\   s	   € Øˆ�r   c                 ó"  — 	 | j                   |j                   k  S # t        $ rj t        t        | j                   «      «      t	        | j                   «      ft        t        |j                   «      «      t	        |j                   «      fk  cY S w xY wr)   )r'   Ú	TypeErrorÚstrÚtypeÚid)r*   Úothers     r   Ú__lt__z_safe_key.__lt___   sm   € ð	;Ø—8‘8˜eŸi™iÑ'Ð'øÜò 	;Üœ˜dŸh™h›Ó(¬"¨T¯X©X«,Ð7Üœ˜eŸi™i›Ó)¬2¨e¯i©i«=Ð9ñ:ò ;ð	;ús   ‚ ›A0BÂBN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__r+   r2   © r   r   r&   r&   P   s   „ ñð �€Iòó;r   r&   c                 ó:   — t        | d   «      t        | d   «      fS )z&Helper function for comparing 2-tuplesr   r"   )r&   )Úts    r   Ú_safe_tupler;   f   s   € ä�Q�q‘T‹?œI a¨¡d›OÐ+Ð+r   c                   ó´  — e Zd Zd#ddddœd„Zd„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Z	i Z
d„ Zee
ej                  <   d„ Zee
ej                   j                  <   d„ Zee
ej                  <   d„ Zee
ej                  <   d„ Zee
ej                  <   ee
ej                  <   d„ Zee
ej                  <   d„ Zee
ej                  <   d„ Zee
ej                  <   d„ Zee
ej@                  j                  <   d„ Z!e!e
ejD                  j                  <   d„ Z#d„ Z$d„ Z%d„ Z&d„ Z'd„ Z(e(e
ejR                  j                  <   d„ Z*e*e
ejV                  j                  <   d„ Z,e,e
ejZ                  j                  <   d„ Z.e.e
ej^                  j                  <   d„ Z0e0e
ejb                  j                  <   d „ Z2e2e
ejf                  j                  <   d!„ Z4e4e
ejj                  j                  <   d"„ Z6y)$r	   NFTr   c                ó2  — t        |«      }t        |«      }|dk  rt        d«      ‚|�|dk  rt        d«      ‚|st        d«      ‚|| _        || _        || _        |�|| _        nt        j                  | _        t        |«      | _	        || _
        || _        y)aá  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.

        compact
            If true, several items will be combined in one line.

        sort_dicts
            If true, dict keys are sorted.

        underscore_numbers
            If true, digit groups are separated with underscores.

        r   zindent must be >= 0Nzdepth must be > 0zwidth must be != 0)ÚintÚ
ValueErrorÚ_depthÚ_indent_per_levelÚ_widthÚ_streamÚ_sysÚstdoutÚboolÚ_compactÚ_sort_dictsÚ_underscore_numbers)r*   r   r   r   r   r   r   r   s           r   r+   zPrettyPrinter.__init__k   s™   € ô8 �V“ˆÜ�E“
ˆØ�AŠ:ÜÐ2Ó3Ð3ØÐ ¨!¢ÜÐ0Ó1Ð1ÙÜÐ1Ó2Ð2ØˆŒØ!'ˆÔØˆŒØÐØ!ˆD�LäŸ;™;ˆDŒLÜ˜W›ˆŒØ%ˆÔØ#5ˆÕ r   c                 ó”   — | j                   �<| j                  || j                   ddi d«       | j                   j                  d«       y y )Nr   ú
)rC   Ú_formatÚwrite©r*   r   s     r   r   zPrettyPrinter.pprintš   s=   € Ø�<‰<Ð#Ø�L‰L˜ §¡¨q°!°R¸Ô;Ø�L‰L×Ñ˜tÕ$ð $r   c                 ób   — t        «       }| j                  ||ddi d«       |j                  «       S ©Nr   )Ú	_StringIOrL   Úgetvalue)r*   r   Úsios      r   r   zPrettyPrinter.pformatŸ   s+   € Ü‹kˆØ�‰�V˜S ! Q¨¨AÔ.Ø�|‰|‹~Ðr   c                 ó0   — | j                  |i dd«      d   S )Nr   r$   ©ÚformatrN   s     r   r   zPrettyPrinter.isrecursive¤   s   € Ø�{‰{˜6 2 q¨!Ó,¨QÑ/Ð/r   c                 ó@   — | j                  |i dd«      \  }}}|xr | S rP   rU   )r*   r   ÚsÚreadableÚ	recursives        r   r   zPrettyPrinter.isreadable§   s*   € Ø!%§¡¨V°R¸¸AÓ!>Ñˆˆ8�YØÒ) 	˜MÐ)r   c           
      ó¼  — t        |«      }||v r)|j                  t        |«      «       d| _        d| _        y | j                  |||«      }| j                  |z
  |z
  }	t        |«      |	kD  rà| j                  j                  t        |«      j                  d «      }
|
�d||<    |
| ||||||dz   «       ||= y t        j                  |«      r€t        |t        «      sp|j                  j                   rZt#        |j                  d«      rDd|j                  j$                  j&                  v r"d||<   | j)                  ||||||dz   «       ||= y |j                  |«       y )NTFr"   Ú__wrapped__Ú__create_fn__)r0   rM   Ú
_recursionÚ
_recursiveÚ	_readableÚ_reprrB   ÚlenÚ	_dispatchÚgetr/   Ú__repr__Ú_dataclassesÚis_dataclassÚ
isinstanceÚ__dataclass_params__ÚreprÚhasattrr\   r5   Ú_pprint_dataclass)r*   r   r   r   Ú	allowanceÚcontextÚlevelÚobjidÚrepÚ	max_widthÚps              r   rL   zPrettyPrinter._format«   sA  € Ü�6“
ˆØ�GÑØ�L‰Lœ FÓ+Ô,Ø"ˆDŒOØ"ˆDŒNØØ�j‰j˜ ¨%Ó0ˆØ—K‘K &Ñ(¨9Ñ4ˆ	Üˆs‹8�iÒØ—‘×"Ñ"¤4¨£<×#8Ñ#8¸$Ó?ˆAØˆ}Ø!"�˜‘Ù�$˜ ¨°	¸7ÀEÈAÁIÔNØ˜E�NØÜ×+Ñ+¨FÔ3Ü  ¬Ô.Ø×-Ñ-×2Ò2ä˜&Ÿ/™/¨=Ô9Ø! V§_¡_×%@Ñ%@×%MÑ%MÑMØ!"�˜‘Ø×&Ñ& v¨v°v¸yÈ'ÐSXÐ[\ÑS\Ô]Ø˜E�NØØ�‰�SÕr   c                 óp  — |j                   j                  }|t        |«      dz   z  }t        j                  |«      D �cg c]1  }|j
                  sŒ|j                  t        ||j                  «      f‘Œ3 }	}|j                  |dz   «       | j                  |	|||||«       |j                  d«       y c c}w )Nr"   ú(ú))
Ú	__class__r3   rb   rf   Úfieldsrj   ÚnameÚgetattrrM   Ú_format_namespace_items)
r*   r   r   r   rm   rn   ro   Úcls_nameÚfÚitemss
             r   rl   zPrettyPrinter._pprint_dataclassÇ   s�   € Ø×#Ñ#×,Ñ,ˆØ”#�h“- !Ñ#Ñ#ˆÜ<H×<OÑ<OÐPVÓ<WÖb°qÐ[\×[aÓ[a�!—&‘&œ' &¨!¯&©&Ó1Ò2ÐbˆÐbØ�‰�X ‘^Ô$Ø×$Ñ$ U¨F°F¸IÀwÐPUÔVØ�‰�SÕùò cs   ¿B3Á$B3c                 óN  — |j                   } |d«       | j                  dkD  r || j                  dz
  dz  «       t        |«      }|rU| j                  r t	        |j                  «       t        ¬«      }	n|j                  «       }	| j                  |	|||dz   ||«        |d«       y )Nú{r"   ú ©Úkeyú})rM   rA   rb   rH   Úsortedr~   r;   Ú_format_dict_items)
r*   r   r   r   rm   rn   ro   rM   Úlengthr~   s
             r   Ú_pprint_dictzPrettyPrinter._pprint_dictÑ   s�   € Ø—‘ˆÙˆcŒ
Ø×!Ñ! AÒ%Ù�4×)Ñ)¨AÑ-°Ñ4Ô5Ü�V“ˆÙØ×ÒÜ˜vŸ|™|›~´;Ô?‘àŸ™›�Ø×#Ñ# E¨6°6¸9Àq¹=Ø$+¨Uô4áˆc�
r   c                 óX  — t        |«      s|j                  t        |«      «       y |j                  }|j                  |j                  dz   «       | j                  t        |j                  «       «      ||t        |j                  «      z   dz   |dz   ||«       |j                  d«       y )Nru   r"   rv   )rb   rM   rj   rw   r3   rL   Úlistr~   )r*   r   r   r   rm   rn   ro   Úclss           r   Ú_pprint_ordered_dictz"PrettyPrinter._pprint_ordered_dictâ   s†   € Ü�6Œ{Ø�L‰Lœ˜f›Ô&ØØ×ÑˆØ�‰�S—\‘\ CÑ'Ô(Ø�‰”T˜&Ÿ,™,›.Ó)¨6Øœc #§,¡,Ó/Ñ/°!Ñ3°YÀ±]Ø˜eô	%ð 	�‰�SÕr   c                 óz   — |j                  d«       | j                  ||||dz   ||«       |j                  d«       y )Nú[r"   ú])rM   Ú_format_items©r*   r   r   r   rm   rn   ro   s          r   Ú_pprint_listzPrettyPrinter._pprint_listï   s9   € Ø�‰�SÔØ×Ñ˜6 6¨6°9¸q±=Ø" Eô	+à�‰�SÕr   c           	      ó°   — |j                  d«       t        |«      dk(  rdnd}| j                  ||||t        |«      z   ||«       |j                  |«       y )Nru   r"   z,)rv   )rM   rb   r�   )r*   r   r   r   rm   rn   ro   Úendchars           r   Ú_pprint_tuplezPrettyPrinter._pprint_tuple÷   sP   € Ø�‰�SÔÜ˜f›+¨Ò*‘$°ˆØ×Ñ˜6 6¨6°9¼sÀ7»|Ñ3KØ" Eô	+à�‰�WÕr   c           	      óž  — t        |«      s|j                  t        |«      «       y |j                  }|t        u r|j                  d«       d}n;|j                  |j
                  dz   «       d}|t        |j
                  «      dz   z  }t        |t        ¬«      }| j                  ||||t        |«      z   ||«       |j                  |«       y )Nr€   r„   ú({ú})r"   r‚   )	rb   rM   rj   rw   Úsetr3   r…   r&   r�   )	r*   r   r   r   rm   rn   ro   Útypr”   s	            r   Ú_pprint_setzPrettyPrinter._pprint_set   s­   € Ü�6Œ{Ø�L‰Lœ˜f›Ô&ØØ×ÑˆØ”#‰:Ø�L‰L˜ÔØ‰Gà�L‰L˜Ÿ™¨Ñ,Ô-ØˆGØ”c˜#Ÿ,™,Ó'¨!Ñ+Ñ+ˆFÜ˜¤IÔ.ˆØ×Ñ˜6 6¨6°9¼sÀ7»|Ñ3KØ" Eô	+à�‰�WÕr   c                 óº  — |j                   }t        |«      s |t        |«      «       y g }|j                  d«      }	|dk(  r
|dz  }|dz  }| j                  |z
  x}
}t        |	«      D �]  \  }}t        |«      }|t        |	«      dz
  k(  r|
|z  }
t        |«      |
k  r|j                  |«       ŒHt        j                  d|«      }|sJ ‚|d   rJ ‚|j                  «        |}d}t        |«      D ]i  \  }}||z   }|t        |«      dz
  k(  r|t        |	«      dz
  k(  r||z  }t        t        |«      «      |kD  r|r|j                  t        |«      «       |}Œh|}Œk |sŒ÷|j                  t        |«      «       �Œ t        |«      dk(  r	 |«       y |dk(  r |d«       t        |«      D ]   \  }}|dkD  r |dd	|z  z   «        ||«       Œ" |dk(  r	 |d
«       y y )NTr"   z\S*\s*éÿÿÿÿÚ ru   r   rK   r�   rv   )
rM   rb   rj   Ú
splitlinesrB   Ú	enumerateÚappendÚreÚfindallÚpop)r*   r   r   r   rm   rn   ro   rM   ÚchunksÚlinesÚ
max_width1rr   ÚiÚlinerq   ÚpartsÚ
max_width2ÚcurrentÚjÚpartÚ	candidates                        r   Ú_pprint_strzPrettyPrinter._pprint_str  sì  € Ø—‘ˆÜ�6Œ{Ù”$�v“,ÔØØˆØ×!Ñ! $Ó'ˆØ�AŠ:Ø�a‰KˆFØ˜‰NˆIØ!%§¡¨vÑ!5Ð5ˆ
�YÜ  Ó'ó 	1‰GˆAˆtÜ�t“*ˆCØ”C˜“J ‘NÒ"Ø˜iÑ'�
Ü�3‹x˜:Ò%Ø—‘˜cÕ"ô Ÿ
™
 9¨dÓ3�Ù��uØ  š9Ð$�}Ø—	‘	”Ø&�
Ø�Ü(¨Ó/ò 	,‘G�A�tØ '¨$¡�IØœC ›J¨™NÒ*¨q´C¸³JÀ±NÒ/BØ" iÑ/˜
Üœ4 	›?Ó+¨jÒ8Ù"Ø"ŸM™M¬$¨w«-Ô8Ø"&™à"+™ð	,ò Ø—M‘M¤$ w£-Ö0ð3	1ô4 ˆv‹;˜!ÒÙ�#ŒJØØ�AŠ:Ù�#ŒJÜ Ó'ò 	‰FˆAˆsØ�1ŠuÙ�d˜S ™ZÑ'Ô(Ù�#�Jð	ð �AŠ:Ù�#�Jð r   c                 ó  — |j                   }t        |«      dk  r |t        |«      «       y |dk(  }|r|dz  }|dz  } |d«       d}	t        || j                  |z
  |«      D ]  }
 ||	«        ||
«       |	rŒdd|z  z   }	Œ |r	 |d«       y y )Né   r"   ru   rž   rK   r�   rv   )rM   rb   rj   Ú_wrap_bytes_reprrB   )r*   r   r   r   rm   rn   ro   rM   ÚparensÚdelimrq   s              r   Ú_pprint_byteszPrettyPrinter._pprint_bytesG  s¡   € Ø—‘ˆÜˆv‹;˜!ÒÙ”$�v“,ÔØØ˜!‘ˆÙØ�a‰KˆFØ˜‰NˆIÙ�#ŒJØˆÜ# F¨D¯K©K¸&Ñ,@À)ÓLò 	*ˆCÙ�%ŒLÙ�#ŒJÚØ˜s 6™zÑ)‘ð		*ñ
 Ù�#�Jð r   c           	      óŒ   — |j                   } |d«       | j                  t        |«      ||dz   |dz   ||dz   «        |d«       y )Nz
bytearray(é
   r"   rv   )rM   r¶   Úbytes)r*   r   r   r   rm   rn   ro   rM   s           r   Ú_pprint_bytearrayzPrettyPrinter._pprint_bytearray\  sE   € Ø—‘ˆÙˆlÔØ×Ñœ5 ›=¨&°&¸2±+Ø$ q™=¨'°5¸1±9ô	>áˆc�
r   c                 óœ   — |j                  d«       | j                  |j                  «       ||dz   |dz   ||«       |j                  d«       y )Nzmappingproxy(é   r"   rv   )rM   rL   Úcopyr‘   s          r   Ú_pprint_mappingproxyz"PrettyPrinter._pprint_mappingproxye  sA   € Ø�‰�_Ô%Ø�‰�V—[‘[“] F¨F°R©K¸ÀQ¹Ø˜eô	%à�‰�SÕr   c                 ó8  — t        |«      t        j                  u rd}n|j                  j                  }|t        |«      dz   z  }|j                  j                  «       }|j                  |dz   «       | j                  ||||||«       |j                  d«       y )NÚ	namespacer"   ru   rv   )
r/   Ú_typesÚSimpleNamespacerw   r3   rb   Ú__dict__r~   rM   r{   )	r*   r   r   r   rm   rn   ro   r|   r~   s	            r   Ú_pprint_simplenamespacez%PrettyPrinter._pprint_simplenamespacem  s†   € Ü�‹<œ6×1Ñ1Ñ1ð #‰Hà×'Ñ'×0Ñ0ˆHØ”#�h“- !Ñ#Ñ#ˆØ—‘×%Ñ%Ó'ˆØ�‰�X ‘^Ô$Ø×$Ñ$ U¨F°F¸IÀwÐPUÔVØ�‰�SÕr   c           	      óJ  — |j                   }|| j                  z  }dd|z  z   }t        |«      dz
  }	t        |«      D ]d  \  }
\  }}|
|	k(  }| j	                  |||«      } ||«        |d«       | j                  |||t        |«      z   dz   |r|nd||«       |rŒ] ||«       Œf y )Nú,
r�   r"   ú: r$   )rM   rA   rb   r    ra   rL   )r*   r~   r   r   rm   rn   ro   rM   ÚdelimnlÚ
last_indexr¨   rƒ   ÚentÚlastrq   s                  r   r†   z PrettyPrinter._format_dict_items|  s³   € à—‘ˆØ�$×(Ñ(Ñ(ˆØ˜# ™,Ñ&ˆÜ˜“Z !‘^ˆ
Ü& uÓ-ò 		‰MˆA‰z��SØ˜
‘?ˆDØ—*‘*˜S '¨5Ó1ˆCÙ�#ŒJÙ�$ŒKØ�L‰L˜˜f f¬s°3«xÑ&7¸!Ñ&;Ù&*™°Ø  %ô)ò Ù�g•ñ		r   c           	      ó2  — |j                   }dd|z  z   }t        |«      dz
  }	t        |«      D ]g  \  }
\  }}|
|	k(  } ||«        |d«       t        |«      |v r	 |d«       n)| j	                  |||t        |«      z   dz   |r|nd||«       |rŒ` ||«       Œi y )NrÆ   r�   r"   ú=ú...)rM   rb   r    r0   rL   )r*   r~   r   r   rm   rn   ro   rM   rÈ   rÉ   r¨   rƒ   rÊ   rË   s                 r   r{   z%PrettyPrinter._format_namespace_items�  s¦   € Ø—‘ˆØ˜# ™,Ñ&ˆÜ˜“Z !‘^ˆ
Ü& uÓ-ò 	‰MˆA‰z��SØ˜
‘?ˆDÙ�#ŒJÙ�#ŒJÜ�#‹w˜'Ñ!ñ �e•à—‘˜S &¨&´3°s³8Ñ*;¸aÑ*?Ù*.™Y°AØ$ eô-ò Ù�g•ñ	r   c                 ód  — |j                   }|| j                  z  }| j                  dkD  r || j                  dz
  dz  «       dd|z  z   }d}	| j                  |z
  dz   x}
}t        |«      }	 t	        |«      }d}|s‹|}	 t	        |«      }| j                  rI| j                  |||«      }t        |«      dz   }|
|k  r|}
|	r|}	|
|k\  r|
|z  }
 ||	«       d}	 ||«       Œe ||	«       |}	| j                  ||||r|nd||«       |sŒŠy y # t
        $ r Y y w xY w# t
        $ r d}||z  }|
|z  }
Y Œ¤w xY w)	Nr"   r�   rÆ   rž   FTr$   ú, )
rM   rA   rB   ÚiterÚnextÚStopIterationrG   ra   rb   rL   )r*   r~   r   r   rm   rn   ro   rM   rÈ   rµ   r   rr   ÚitÚnext_entrË   rÊ   rq   Úws                     r   r�   zPrettyPrinter._format_items   sn  € Ø—‘ˆØ�$×(Ñ(Ñ(ˆØ×!Ñ! AÒ%Ù�4×)Ñ)¨AÑ-°Ñ4Ô5Ø˜# ™,Ñ&ˆØˆØ ŸK™K¨&Ñ0°1Ñ4Ð4ˆ�	Ü�%‹[ˆð	Ü˜B“xˆHð ˆÙØˆCð#Ü ›8�ð
 �}Š}Ø—j‘j  g¨uÓ5�Ü˜“H˜q‘L�Ø˜1’9Ø%�EÙØ '˜Ø˜A’:Ø˜Q‘J�EÙ˜%”LØ �EÙ˜#”JØÙ�%ŒLØˆEØ�L‰L˜˜f fÙ&*™°Ø  %ô)ô/ øô ò 	Ùð	ûô !ò #Ø�Ø˜YÑ&�	Ø˜Ñ"’ð#ús$   Á-D Á?D Ä	DÄDÄD/Ä.D/c                 óŠ   — | j                  ||j                  «       | j                  |«      \  }}}|sd| _        |rd| _        |S )NFT)rV   r½   r@   r`   r_   )r*   r   rn   ro   rj   rY   rZ   s          r   ra   zPrettyPrinter._reprÉ  sD   € Ø$(§K¡K°¸¿¹»Ø04·±¸Uó%DÑ!ˆˆh˜	áØ"ˆDŒNÙØ"ˆDŒOØˆr   c                 ó*   — | j                  ||||«      S )zÈ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*   r   rn   Ú	maxlevelsro   s        r   rV   zPrettyPrinter.formatÒ  s   € ð
 �‰˜v w°	¸5ÓAÐAr   c                 óx  — t        |«      s|j                  t        |«      «       y | j                  |j                  ||«      }|j
                  }|t        |j                  «      dz   z  }|j                  |j                  ›d|›dd|z  ›�«       | j                  ||||dz   ||«       |j                  d«       y )Nr"   ru   rÆ   r�   rv   )rb   rM   rj   ra   Údefault_factoryrw   r3   rˆ   )	r*   r   r   r   rm   rn   ro   Úrdfr‹   s	            r   Ú_pprint_default_dictz"PrettyPrinter._pprint_default_dictÙ  sš   € Ü�6Œ{Ø�L‰Lœ˜f›Ô&ØØ�j‰j˜×/Ñ/°¸%Ó@ˆØ×ÑˆØ”#�c—l‘lÓ# aÑ'Ñ'ˆØ�‰ S§\£\²3¸¸fºÐEÔFØ×Ñ˜& &¨&°)¸a±-ÀÈ%ÔPØ�‰�SÕr   c                 óª  — t        |«      s|j                  t        |«      «       y |j                  }|j                  |j                  dz   «       | j
                  dkD  r!|j                  | j
                  dz
  dz  «       |j                  «       }| j                  |||t        |j                  «      z   dz   |dz   ||«       |j                  d«       y )Nr—   r"   r�   r$   r˜   )rb   rM   rj   rw   r3   rA   Úmost_commonr†   )	r*   r   r   r   rm   rn   ro   r‹   r~   s	            r   Ú_pprint_counterzPrettyPrinter._pprint_counteræ  sµ   € Ü�6Œ{Ø�L‰Lœ˜f›Ô&ØØ×ÑˆØ�‰�S—\‘\ DÑ(Ô)Ø×!Ñ! AÒ%Ø�L‰L˜$×0Ñ0°1Ñ4¸Ñ;Ô<Ø×"Ñ"Ó$ˆØ×Ñ  vØ &¬¨S¯\©\Ó):Ñ :¸QÑ >À	ÈAÁØ '¨ô	0ð 	�‰�TÕr   c           	      ó  — t        |j                  «      s|j                  t        |«      «       y |j                  }|j                  |j
                  dz   «       |t        |j
                  «      dz   z  }t        |j                  «      D ]x  \  }}	|t        |j                  «      dz
  k(  r+| j                  |	|||dz   ||«       |j                  d«       ŒL| j                  |	||d||«       |j                  dd|z  z   «       Œz y )Nru   r"   rv   rÆ   r�   )rb   ÚmapsrM   rj   rw   r3   r    rL   )
r*   r   r   r   rm   rn   ro   r‹   r¨   Úms
             r   Ú_pprint_chain_mapzPrettyPrinter._pprint_chain_mapö  sÜ   € Ü�6—;‘;ÔØ�L‰Lœ˜f›Ô&ØØ×ÑˆØ�‰�S—\‘\ CÑ'Ô(Ø”#�c—l‘lÓ# aÑ'Ñ'ˆÜ˜fŸk™kÓ*ò 	3‰DˆAˆqØ”C˜Ÿ™Ó$ qÑ(Ò(Ø—‘˜Q ¨°	¸A±¸wÈÔNØ—‘˜SÕ!à—‘˜Q ¨°°7¸EÔBØ—‘˜U S¨6¡\Ñ1Õ2ñ	3r   c                 ó  — t        |«      s|j                  t        |«      «       y |j                  }|j                  |j                  dz   «       |t        |j                  «      dz   z  }|j                  d«       |j
                  €+| j                  ||||dz   ||«       |j                  d«       y | j                  |||d||«       | j                  |j
                  ||«      }|j                  dd|z  ›d|›d	�«       y )
Nru   r"   rŽ   r$   z])z],
r�   zmaxlen=rv   )rb   rM   rj   rw   r3   Úmaxlenr�   ra   )	r*   r   r   r   rm   rn   ro   r‹   Úrmls	            r   Ú_pprint_dequezPrettyPrinter._pprint_deque  sÛ   € Ü�6Œ{Ø�L‰Lœ˜f›Ô&ØØ×ÑˆØ�‰�S—\‘\ CÑ'Ô(Ø”#�c—l‘lÓ# aÑ'Ñ'ˆØ�‰�SÔØ�=‰=Ð Ø×Ñ˜v v¨v°yÀ1±}Ø&¨ô/à�L‰L˜Õà×Ñ˜v v¨v°qØ&¨ô/à—*‘*˜VŸ]™]¨G°UÓ;ˆCØ�LŠL¨s°V«|ºSÐAÕBr   c           	      óJ   — | j                  |j                  |||||dz
  «       y ©Nr"   ©rL   Údatar‘   s          r   Ú_pprint_user_dictzPrettyPrinter._pprint_user_dict  ó    € Ø�‰�V—[‘[ &¨&°)¸WÀeÈaÁiÕPr   c           	      óJ   — | j                  |j                  |||||dz
  «       y rê   rë   r‘   s          r   Ú_pprint_user_listzPrettyPrinter._pprint_user_list   rî   r   c           	      óJ   — | j                  |j                  |||||dz
  «       y rê   rë   r‘   s          r   Ú_pprint_user_stringz!PrettyPrinter._pprint_user_string%  rî   r   c                 ój  — t        |«      }|t        v rt        |«      ddfS t        |dd «      }t	        |t
        «      r3|t
        j                  u r!| j                  r|d›ddfS t        |«      ddfS t	        |t        «      �r
|t        j                  u rø|syt        |«      }|r||k\  rdd||v fS ||v rt        |«      ddfS d||<   d}d}	g }
|
j                  }|dz  }| j                  r t        |j                  «       t        ¬«      }n|j                  «       }|D ]S  \  }}| j!                  ||||«      \  }}}| j!                  ||||«      \  }}} ||›d	|›�«       |xr |xr |}|s|sŒRd}	ŒU ||= d
dj#                  |
«      z  ||	fS t	        |t$        «      r|t$        j                  u s"t	        |t&        «      rÒ|t&        j                  u rÀt	        |t$        «      r|syd}nt)        |«      dk(  rd}n|syd}t        |«      }|r||k\  r
|dz  d||v fS ||v rt        |«      ddfS d||<   d}d}	g }
|
j                  }|dz  }|D ]+  }| j!                  ||||«      \  }}} ||«       |sd}|sŒ*d}	Œ- ||= |dj#                  |
«      z  ||	fS t        |«      }||xr |j+                  d«       dfS )NTFre   Ú_d)z{}TFz{...}r"   r‚   rÇ   z{%s}rÐ   )z[]TFz[%s]z(%s,))z()TFz(%s)rÎ   ú<)r/   Ú_builtin_scalarsrj   rz   Ú
issubclassr>   re   rI   Údictr0   r^   r¡   rH   r…   r~   r;   rV   ÚjoinrŠ   Útuplerb   Ú
startswith)r*   r   rn   rÙ   ro   rš   Úrrp   rY   rZ   Ú
componentsr¡   r~   ÚkÚvÚkreprÚ	kreadableÚkrecurÚvreprÚ	vreadableÚvrecurrV   ÚoÚoreprÚ	oreadableÚorecurrq   s                              r   r   zPrettyPrinter._safe_repr*  s  € ä�6‹lˆØÔ"Ñ"Ü˜“<  uÐ,Ð,ä�C˜ TÓ*ˆä�cœ3Ô A¬¯©Ñ$5Ø×'Ò'Ø  ˜ t¨UÐ2Ð2ä˜F“| T¨5Ð0Ð0ä�cœ4Õ  Q¬$¯-©-Ñ%7ÙØ(Ü�v“JˆEÙ˜U iÒ/Ø  u°Ð'7Ð7Ð7Ø˜ÑÜ! &Ó)¨5°$Ð6Ð6ØˆG�E‰NØˆHØˆIØˆJØ×&Ñ&ˆFØ�Q‰JˆEØ×ÒÜ˜vŸ|™|›~´;Ô?‘àŸ™›�Øò %‘��1Ø+/¯;©;Ø�w 	¨5ó,2Ñ(��y &à+/¯;©;Ø�w 	¨5ó,2Ñ(��y &á¢5©%Ð0Ô1Ø#Ò?¨	Ò?°i�ÙšVØ $‘Ið%ð ˜�Ø˜DŸI™I jÓ1Ñ1°8¸YÐFÐFä�sœDÔ! a¬4¯=©=Ñ&8Ü�sœEÔ" q¬E¯N©NÑ':Ü˜#œtÔ$ÙØ,Ø‘Ü�V“ Ò!Ø ‘áØ,Ø�Ü�v“JˆEÙ˜U iÒ/Ø ‘~ u¨e°wÐ.>Ð>Ð>Ø˜ÑÜ! &Ó)¨5°$Ð6Ð6ØˆG�E‰NØˆHØˆIØˆJØ×&Ñ&ˆFØ�Q‰JˆEØò %�Ø+/¯;©;Ø�w 	¨5ó,2Ñ(��y &á�u”Ù Ø$�HÚØ $‘Ið%ð ˜�Ø˜DŸI™I jÓ1Ñ1°8¸YÐFÐFä�6‹lˆØ�SÒ4 §¡°Ó!4Ð4°uÐ<Ð<r   )r"   éP   NN)7r3   r4   r5   r+   r   r   r   r   rL   rl   rc   rˆ   rø   re   rŒ   Ú_collectionsÚOrderedDictr’   rŠ   r•   rú   r›   r™   Ú	frozensetr°   r.   r¶   r¹   rº   Ú	bytearrayr¾   rÁ   ÚMappingProxyTyperÄ   rÂ   r†   r{   r�   ra   rV   rÝ   Údefaultdictrà   ÚCounterrä   ÚChainMaprè   Údequerí   ÚUserDictrð   ÚUserListrò   Ú
UserStringr   r8   r   r   r	   r	   j   s.  „ ð-6Ø¨4ÀEô-6ò^%ò
ò
0ò*òò8ð €Iòð  ,€Iˆd�m‰mÑò	ð 4H€Iˆl×&Ñ&×/Ñ/Ñ0òð  ,€Iˆd�m‰mÑòð !.€Iˆe�n‰nÑòð" *€Iˆc�l‰lÑØ$/€Iˆi× Ñ Ñ!ò/ðb *€Iˆc�l‰lÑòð& !.€Iˆe�n‰nÑòð %6€Iˆi× Ñ Ñ!òð 3G€Iˆf×%Ñ%×.Ñ.Ñ/òð 2I€Iˆf×$Ñ$×-Ñ-Ñ.òò"ò&')òRòBò	ð 4H€Iˆl×&Ñ&×/Ñ/Ñ0òð 0?€Iˆl×"Ñ"×+Ñ+Ñ,ò3ð 1B€Iˆl×#Ñ#×,Ñ,Ñ-òCð$ .;€Iˆl× Ñ ×)Ñ)Ñ*òQð 1B€Iˆl×#Ñ#×,Ñ,Ñ-òQð 1B€Iˆl×#Ñ#×,Ñ,Ñ-òQð 3F€Iˆl×%Ñ%×.Ñ.Ñ/óO=r   r	   c                 óL   — dt        | «      j                  ›dt        | «      ›d�S )Nz<Recursion on z	 with id=ú>)r/   r3   r0   r   s    r   r^   r^   ~  s   � ä�F‹|×$Ó$¤b¨¥jð2ð 3r   c              #   ó  K  — d}t        | «      dz  dz  }t        dt        | «      d«      D ]D  }| ||dz    }||z   }||k(  r||z  }t        t        |«      «      |kD  r|rt        |«      –— |}ŒC|}ŒF |rt        |«      –— y y ­w)Nr   r²   r   )rb   Úrangerj   )r   r   rm   r¬   rË   r¨   r®   r¯   s           r   r³   r³   ƒ  sŸ   è ø€ Ø€GÜˆv‹;˜!Ñ˜aÑ€DÜ�1”c˜&“k 1Ó%ò 
 ˆØ�a˜˜1™ˆ~ˆØ˜d‘Nˆ	Ø�Š9Ø�YÑˆEÜŒt�I‹Ó %Ò'ÙÜ˜7“mÒ#Ø‰Gà‰Gð
 ñ Ü�7‹mÓð ùs   ‚BB)Nr"   r
  N)r"   r
  N)"r6   Úcollectionsr  Údataclassesrf   r¢   ÚsysrD   ÚtypesrÁ   Úior   rQ   Ú__all__r   r   r
   r   r   r   r&   r;   r	   r  r.   r¹   r  ÚfloatÚcomplexrF   r/   rö   r^   r³   r8   r   r   ú<module>r#     s­   ðñó4 #Û "Û 	Û Û Ý $ò"€ðØ T¸eôðPØ d¸uôPð "'ô ;ò>ò>ò>÷;ñ ;ò,,÷O=ñ O=ñb ˜c 5¨)°U¸GØ"¡D¨£Jð0ó 1Ð ò3ó
r   