Ë ‚Ö¦i^^ã óê—dZddlZddlZddlZddlZddlZ ddl m Z gd¢Z dddddœd„Zdddddœd „Zdd œd „Zd „Zd „Zd„ZGd„d«Zd„ZGd„d«Zeeeeeeeed«h«Zd„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 rN)r r) Úobjectrrrrr r rÚprinters ú/usr/lib64/python3.12/pprint.pyrr0s-€ôؘf¨E¸Ø JØ-ô/€Gð ‡N�N�6ÕócóB—t||||||¬«j|«S)zô @ç@GÁÈÃðPr)r có&—t|g|¢­d|i|¤Žy)zPretty-print a Python objectr N)r)rr ÚargsÚkwargss rr r @s€ä ˆ6Ð:�DÒ: ZÐ:°6Ó:rcó@—t«j|idd«dS)z=Version of repr() which can handle recursive data structures.Nr©r Ú _safe_repr©rs rrrDó €ä ‹?× %Ñ % f¨b°$¸Ó :¸1Ñ =Ð=rcó@—t«j|idd«dS)z4Determine if saferepr(object) is readable by eval().Nrérrs rrrHr rcó@—t«j|idd«dS)z8Determine if object requires a recursive representation.Nrérrs rrrLr rcó"—eZdZdZdgZd„Zd„Zy)Ú _safe_keyaUHelper 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 €Øˆ�rcó"— |j|jkS#t$rjtt|j««t |j«ftt|j««t |j«fkcYSwxYwr))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 BN)Ú__name__Ú __module__Ú __qualname__Ú__doc__Ú __slots__r+r2©rrr&r&Ps„ñð�€Iòó;rr&có:—t|d«t|d«fS)z&Helper function for comparing 2-tuplesrr")r&)Úts rÚ _safe_tupler;fs€ä �Q�q‘T‹?œI a¨¡d›OÐ +Ð+rcó´—eZdZd#ddddœd„Zd„Zd„Zd„Zd „Zd „Zd „Z iZ d „Z e e e j<d „Zee ej j<d„Zee ej<d„Zee ej<d„Zee ej<ee ej<d„Zee ej<d„Zee ej<d„Zee ej<d„Zee ej@j<d„Z!e!e ejDj<d„Z#d„Z$d„Z%d„Z&d„Z'd„Z(e(e ejRj<d„Z*e*e ejVj<d„Z,e,e ejZj<d„Z.e.e ej^j<d„Z0e0e ejbj<d „Z2e2e ejfj<d!„Z4e4e ejjj<d"„Z6y)$r NFTr có2—t|«}t|«}|dkr td«‚|�|dkr td«‚|s td«‚||_||_||_|�||_nt 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. rzindent must be >= 0Nzdepth must be > 0zwidth must be != 0) ÚintÚ ValueErrorÚ_depthÚ_indent_per_levelÚ_widthÚ_streamÚ_sysÚstdoutÚboolÚ_compactÚ _sort_dictsÚ_underscore_numbers)r*rrrrr r rs rr+zPrettyPrinter.__init__ks™€ô8�V“ˆÜ�E“ ˆØ �AŠ:ÜÐ2Ó3Ð 3Ø Ð  ¨!¢ÜÐ0Ó1Ð 1ÙÜÐ1Ó2Ð 2؈Œ Ø!'ˆÔ؈Œ Ø Ð Ø!ˆD�LäŸ;™;ˆDŒLܘW› ˆŒ Ø%ˆÔØ#5ˆÕ rcó”—|j�<|j||jddid«|jjd«yy)NrÚ )rCÚ_formatÚwrite©r*rs rrzPrettyPrinter.pprintšs=€Ø �<‰<Ð #Ø �L‰L˜ §¡¨q°!°R¸Ô ;Ø �L‰L× Ñ ˜tÕ $ð $rcób—t«}|j||ddid«|j«S©Nr)Ú _StringIOrLÚgetvalue)r*rÚsios rrzPrettyPrinter.pformatŸs+€Ü‹kˆØ � ‰ �V˜S ! Q¨¨AÔ.Ø�|‰|‹~Ðrcó0—|j|idd«dS)Nrr$©ÚformatrNs rrzPrettyPrinter.isrecursive¤s€Ø�{‰{˜6 2 q¨!Ó,¨QÑ/Ð/rcó@—|j|idd«\}}}|xr| SrPrU)r*rÚsÚreadableÚ recursives rrzPrettyPrinter.isreadable§s*€Ø!%§¡¨V°R¸¸AÓ!>шˆ8�YØÒ)  ˜MÐ)rc ó¼—t|«}||vr)|jt|««d|_d|_y|j |||«}|j |z |z } t|«| kDrà|jjt|«jd«} | �d||<| |||||||dz«||=ytj|«r€t|t«sp|jj rZt#|jd«rDd|jj$j&vr"d||<|j)||||||dz«||=y|j|«y)NTFr"Ú __wrapped__Ú __create_fn__)r0rMÚ _recursionÚ _recursiveÚ _readableÚ_reprrBÚlenÚ _dispatchÚgetr/Ú__repr__Ú _dataclassesÚ is_dataclassÚ isinstanceÚ__dataclass_params__ÚreprÚhasattrr\r5Ú_pprint_dataclass) r*rrrÚ allowanceÚcontextÚlevelÚobjidÚrepÚ max_widthÚps rrLzPrettyPrinter._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Õrcóp—|jj}|t|«dzz }tj|«D�cgc]1}|j sŒ|j t||j «f‘Œ3} }|j|dz«|j| |||||«|jd«ycc}w)Nr"Ú(Ú)) Ú __class__r3rbrfÚfieldsrjÚnameÚgetattrrMÚ_format_namespace_items) r*rrrrmrnroÚcls_nameÚfÚitemss rrlzPrettyPrinter._pprint_dataclassÇs €Ø×#Ñ#×,Ñ,ˆØ”#�h“- !Ñ#Ñ#ˆÜá ˆc� rcóœ—|jd«|j|j«||dz|dz||«|jd«y)Nz mappingproxy(é r"rv)rMrLÚcopyr‘s rÚ_pprint_mappingproxyz"PrettyPrinter._pprint_mappingproxyesA€Ø� ‰ �_Ô%Ø � ‰ �V—[‘[“] F¨F°R©K¸ÀQ¹Ø˜eô %à� ‰ �SÕrcó8—t|«tjurd}n|jj}|t |«dzz }|j j«}|j|dz«|j||||||«|jd«y)NÚ namespacer"rurv) r/Ú_typesÚSimpleNamespacerwr3rbÚ__dict__r~rMr{) r*rrrrmrnror|r~s rÚ_pprint_simplenamespacez%PrettyPrinter._pprint_simplenamespacems†€Ü �‹<œ6×1Ñ1Ñ 1ð#‰Hà×'Ñ'×0Ñ0ˆHØ”#�h“- !Ñ#Ñ#ˆØ—‘×%Ñ%Ó'ˆØ� ‰ �X ‘^Ô$Ø ×$Ñ$ U¨F°F¸IÀwÐPUÔVØ� ‰ �SÕrc óJ—|j}||jz }dd|zz}t|«dz } t|«D]d\} \} } | | k(} |j | ||«}||«|d«|j | ||t|«zdz| r|nd||«| rŒ]||«Œfy)Nú, r�r"ú: r$)rMrArbr rarL)r*r~rrrmrnrorMÚdelimnlÚ last_indexr¨rƒÚentÚlastrqs rr†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•ñ.rc ó2—|j}dd|zz}t|«dz } t|«D]g\} \} } | | k(} || «|d«t| «|vr |d«n)|j | ||t| «zdz| r|nd||«| rŒ`||«Œiy)NrÆr�r"Ú=ú...)rMrbr r0rL)r*r~rrrmrnrorMrÈrÉr¨rƒrÊrËs rr{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•ñ.rcód—|j}||jz }|jdkDr||jdz dz«dd|zz}d} |j|z dzx} } t|«} t | «} d}|s‹| } t | «} |j rI|j|||«}t|«dz}| |kr| } | r|} | |k\r| |z} || «d} ||«Œe|| «|} |j||||r|nd||«|sŒŠyy#t $rYywxYw#t $rd}| |z} | |z} YŒ¤wxYw) Nr"r�rÆržFTr$ú, ) rMrArBÚiterÚnextÚ StopIterationrGrarbrL)r*r~rrrmrnrorMrÈrµrrrÚitÚnext_entrËrÊrqÚws rr�zPrettyPrinter._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|«\}}}|sd|_|rd|_|S)NFT)rVr½r@r`r_)r*rrnrorjrYrZs rrazPrettyPrinter._reprÉsD€Ø$(§K¡K°¸¿ ¹ »Ø04· ± ¸Uó%DÑ!ˆˆh˜ áØ"ˆDŒNÙ Ø"ˆDŒO؈ rcó*—|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*rrnÚ maxlevelsros rrVzPrettyPrinter.formatÒs€ð �‰˜v w° ¸5ÓAÐArcóx—t|«s|jt|««y|j|j||«}|j }|t|j «dzz }|j|j ›d|›dd|z›�«|j||||dz||«|jd«y)Nr"rurÆr�rv)rbrMrjraÚdefault_factoryrwr3rˆ) r*rrrrmrnroÚ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Õrcóª—t|«s|jt|««y|j}|j|jdz«|j dkDr!|j|j dz dz«|j «}|j|||t|j«zdz|dz||«|jd«y)Nr—r"r�r$r˜)rbrMrjrwr3rAÚ most_commonr†) r*rrrrmrnror‹r~s rÚ_pprint_counterzPrettyPrinter._pprint_counteræsµ€Ü�6Œ{Ø �L‰Lœ˜f›Ô &Ø Ø×шØ� ‰ �S—\‘\ DÑ(Ô)Ø × !Ñ ! AÒ %Ø �L‰L˜$×0Ñ0°1Ñ4¸Ñ;Ô <Ø×"Ñ"Ó$ˆØ ×Ñ  vØ &¬¨S¯\©\Ó):Ñ :¸QÑ >À ÈAÁ Ø '¨ô 0ð � ‰ �TÕrc ó—t|j«s|jt|««y|j}|j|j dz«|t|j «dzz }t |j«D]x\}} |t|j«dz k(r+|j| |||dz||«|jd«ŒL|j| ||d||«|jdd|zz«Œzy)Nrur"rvrÆr�)rbÚmapsrMrjrwr3r rL) r*rrrrmrnror‹r¨Úms rÚ_pprint_chain_mapzPrettyPrinter._pprint_chain_mapös×€Ü�6—;‘;ÔØ �L‰Lœ˜f›Ô &Ø Ø×шØ� ‰ �S—\‘\ CÑ'Ô(Ø”#�c—l‘lÓ# aÑ'Ñ'ˆÜ˜fŸk™kÖ*‰DˆAˆqØ”C˜Ÿ ™ Ó$ qÑ(Ò(Ø— ‘ ˜Q ¨° ¸A± ¸wÈÔNØ— ‘ ˜SÕ!à— ‘ ˜Q ¨°°7¸EÔBØ— ‘ ˜U S¨6¡\Ñ1Õ2ñ +rcó—t|«s|jt|««y|j}|j|jdz«|t|j«dzz }|jd«|j €+|j ||||dz||«|jd«y|j |||d||«|j|j ||«}|jdd|z›d|›d �«y) Nrur"rŽr$z])z], r�zmaxlen=rv)rbrMrjrwr3Úmaxlenr�ra) r*rrrrmrnror‹Úrmls rÚ _pprint_dequezPrettyPrinter._pprint_dequesÛ€Ü�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Õ Brc óJ—|j|j|||||dz «y©Nr"©rLÚdatar‘s rÚ_pprint_user_dictzPrettyPrinter._pprint_user_dictó €Ø � ‰ �V—[‘[ &¨&°)¸WÀeÈaÁiÕPrc óJ—|j|j|||||dz «yrêrër‘s rÚ_pprint_user_listzPrettyPrinter._pprint_user_list rîrc óJ—|j|j|||||dz «yrêrër‘s rÚ_pprint_user_stringz!PrettyPrinter._pprint_user_string%rîrcój—t|«}|tvrt|«ddfSt|dd«}t |t «r3|t j ur!|jr|d›ddfSt|«ddfSt |t«�r |tj urø|syt|«}|r ||k\rdd||vfS||vrt|«ddfSd||<d}d} g} | j} |dz }|jr t|j«t¬«} n|j«} | D]S\} }|j!| |||«\}}}|j!||||«\}}}| |›d |›�«|xr|xr|}|s|sŒRd} ŒU||=d d j#| «z|| fSt |t$«r|t$j us"t |t&«rÒ|t&j urÀt |t$«r|sy d }nt)|«dk(rd}n|syd}t|«}|r||k\r |dzd||vfS||vrt|«ddfSd||<d}d} g} | j} |dz }|D]+}|j!||||«\}}}| |«|sd}|sŒ*d} Œ-||=|d j#| «z|| fSt|«}||xr|j+d« dfS)NTFreÚ_d)z{}TFz{...}r"r‚rÇz{%s}rÐ)z[]TFz[%s]z(%s,))z()TFz(%s)rÎÚ<)r/Ú_builtin_scalarsrjrzÚ issubclassr>rerIÚdictr0r^r¡rHr…r~r;rVÚjoinrŠÚtuplerbÚ startswith)r*rrnrÙroršÚrrprYrZÚ componentsr¡r~ÚkÚvÚkreprÚ kreadableÚkrecurÚvreprÚ vreadableÚvrecurrVÚoÚoreprÚ oreadableÚorecurrqs rrzPrettyPrinter._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/r3r0rs rr^r^~s�ä�F‹|×$Ó$¤b¨¥jð 2ð3rc#ó K—d}t|«dzdz}tdt|«d«D]D}|||dz}||z}||k(r||z}tt|««|kDr|r t|«–—|}ŒC|}ŒF|rt|«–—yy­w)Nrr²r)rbÚrangerj)rrrmr¬rËr¨r®r¯s rr³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‚BB)Nr"r N)r"r N)"r6Ú collectionsr Ú dataclassesrfr¢ÚsysrDÚtypesrÁÚiorrQÚ__all__rrr rrrr&r;r r r.r¹rÚfloatÚcomplexrFr/rör^r³r8rrÚr#s­ðñó4#Û"Û ÛÛÝ$ò "€ðØ T¸eôðPØ d¸uôPð"'ô;ò>ò>ò>÷;ñ;ò,,÷O=ñO=ñb˜c 5¨)°U¸GØ"¡D¨£Jð0ó1Ðò3ó r