grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026a XC?hÿWã @sødZddlZddlZddlZddlZddlm Z gd¢Z d&ddd œd d „Z d'ddd œd d „Z ddœdd„Zdd„Zdd„Zdd„ZGdd„dƒZdd„ZGdd„dƒZdd„ZeeeeeeeeedƒhƒZdd „Z d(d!d"„Z!d#d$„Z"e#d%k�rôe!ƒdS))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ÚppééPFT©ÚcompactÚ sort_dictscCs"t||||||d�}| |¡dS)zAPretty-print a Python object to a stream [default is sys.stdout].)ÚstreamÚindentÚwidthÚdepthr rN)rr)Úobjectrrrrr rZprinter©rú+/opt/alt/python39/lib64/python3.9/pprint.pyr/s þrcCst|||||d� |¡S)zrr r NFTr cCs‚t|ƒ}t|ƒ}|dkr tdƒ‚|dur8|dkr8tdƒ‚|sDtdƒ‚||_||_||_|durf||_ntj|_t|ƒ|_ ||_ dS)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. rzindent must be >= 0Nzdepth must be > 0zwidth must be != 0) ÚintÚ ValueErrorÚ_depthÚ_indent_per_levelÚ_widthÚ_streamÚ_sysÚstdoutÚboolÚ_compactÚ _sort_dicts)rrrrrr rrrrr hs  zPrettyPrinter.__init__cCs&| ||jddid¡|j d¡dS)NrÚ )Ú_formatr3Úwrite©rrrrrr“szPrettyPrinter.pprintcCs"tƒ}| ||ddid¡| ¡S©Nr)Ú _StringIOr:Úgetvalue)rrZsiorrrr—szPrettyPrinter.pformatcCs| |idd¡dS)Nrr©Úformatr<rrrrœszPrettyPrinter.isrecursivecCs | |idd¡\}}}|o| Sr=r@)rrÚsÚreadableÚ recursiverrrrŸszPrettyPrinter.isreadablec CsÞt|ƒ}||vr.| t|ƒ¡d|_d|_dS| |||¡}|j||} t|ƒ| krÐ|j  t |ƒj d¡} | durœd||<| |||||||dƒ||=dSt |t ƒrÐd||<| ||||||d¡||=dS| |¡dS)NTFr )r$r;Ú _recursionÚ _recursiveÚ _readableÚ_reprr2ÚlenÚ _dispatchÚgetr#Ú__repr__Ú isinstanceÚdictÚ _pprint_dict) rrrrÚ allowanceÚcontextÚlevelÚobjidÚrepÚ max_widthÚprrrr:£s.   ÿzPrettyPrinter._formatc Csz|j}|dƒ|jdkr*||jddƒt|ƒ}|rn|jrNt| ¡td�} n| ¡} | | |||d||¡|dƒdS)NÚ{r ú ©ÚkeyÚ})r;r1rIr8ÚsortedÚitemsr-Ú_format_dict_items) rrrrrPrQrRr;Zlengthr]rrrrO½s ÿzPrettyPrinter._pprint_dictcCslt|ƒs| t|ƒ¡dS|j}| |jd¡| t| ¡ƒ||t|jƒd|d||¡| d¡dS)Nú(r ú))rIr;ÚreprÚ __class__r'r:Úlistr])rrrrrPrQrRÚclsrrrÚ_pprint_ordered_dictÎsþz"PrettyPrinter._pprint_ordered_dictcCs0| d¡| ||||d||¡| d¡dS)Nú[r ú])r;Ú _format_items©rrrrrPrQrRrrrÚ _pprint_listÛs  ÿzPrettyPrinter._pprint_listcCsH| d¡t|ƒdkrdnd}| ||||t|ƒ||¡| |¡dS)Nr_r z,)r`)r;rIrh)rrrrrPrQrRÚendcharrrrÚ _pprint_tupleãs  ÿzPrettyPrinter._pprint_tuplec Cs”t|ƒs| t|ƒ¡dS|j}|tur8| d¡d}n&| |jd¡d}|t|jƒd7}t|td�}| ||||t|ƒ||¡| |¡dS)NrWr[ú({ú})r rY) rIr;rarbÚsetr'r\rrh) rrrrrPrQrRÚtyprkrrrÚ _pprint_setìs  ÿzPrettyPrinter._pprint_setcCs´|j}t|ƒs|t|ƒƒdSg}| d¡} |dkrD|d7}|d7}|j|} } t| ƒD]à\} } t| ƒ}| t| ƒdkr‚| |8} t|ƒ| krš| |¡qZt d| ¡}|  ¡| }d}t|ƒD]h\}}||}|t|ƒdkrö| t| ƒdkrö||8}tt|ƒƒ|k�r"|�r| t|ƒ¡|}q¾|}q¾|rZ| t|ƒ¡qZt|ƒdk�rV||ƒdS|dk�rh|dƒt|ƒD],\} }| dk�r’|dd|ƒ||ƒ�qp|dk�r°|d ƒdS) NTr z\S*\s*Úr_rr9rXr`) r;rIraÚ splitlinesr2Ú enumerateÚappendÚreÚfindallÚpop)rrrrrPrQrRr;ZchunksÚlinesZ max_width1rUÚiÚlinerTÚpartsZ max_width2ÚcurrentÚjÚpartÚ candidaterrrÚ _pprint_strsT          zPrettyPrinter._pprint_strc Cs’|j}t|ƒdkr"|t|ƒƒdS|dk}|rF|d7}|d7}|dƒd} t||j||ƒD]$} || ƒ|| ƒ| s\dd|} q\|rŽ|dƒdS)Nér r_rrr9rXr`)r;rIraÚ_wrap_bytes_reprr2) rrrrrPrQrRr;ZparensÚdelimrTrrrÚ _pprint_bytes3s"  zPrettyPrinter._pprint_bytesc Cs>|j}|dƒ| t|ƒ||d|d||d¡|dƒdS)Nz bytearray(é r r`)r;r…Úbytes)rrrrrPrQrRr;rrrÚ_pprint_bytearrayHs ÿzPrettyPrinter._pprint_bytearraycCs8| d¡| | ¡||d|d||¡| d¡dS)Nz mappingproxy(é r r`)r;r:ÚcopyrirrrÚ_pprint_mappingproxyQs  ÿz"PrettyPrinter._pprint_mappingproxyc CsÒt|ƒtjurd}n|jj}|t|ƒd7}dd|}|j ¡} t| ƒd} | |d¡t | ƒD]^\} \} } | | ¡| d¡| | k}|  | ||t| ƒd|rª|nd||¡|sd| |¡qd| d¡dS)NÚ namespacer ú, rXr_ú=r`) r#Ú_typesÚSimpleNamespacerbr'rIÚ__dict__r]r;rtr:)rrrrrPrQrRÚcls_nameÚdelimnlr]Ú last_indexrzrZÚentÚlastrrrÚ_pprint_simplenamespaceYs&      þ z%PrettyPrinter._pprint_simplenamespacec Csœ|j}||j7}dd|}t|ƒd} t|ƒD]f\} \} } | | k} | | ||¡}||ƒ|dƒ| | ||t|ƒd| r€|nd||¡| s0||ƒq0dS)Nr�rXr z: r)r;r1rIrtrHr:)rr]rrrPrQrRr;r“r”rzrZr•r–rTrrrr^ts    þz PrettyPrinter._format_dict_itemscCsH|j}||j7}|jdkr,||jddƒdd|}d} |j|d} } t|ƒ} z t| ƒ} WntyvYdS0d}|�sD| }z t| ƒ} Wn&ty¸d}| |8} | |8} Yn0|j�r| |||¡}t|ƒd}| |krð| } | rð|} | |k�r| |8} || ƒd} ||ƒq||| ƒ|} |  ||||�r8|nd||¡q|dS) Nr rXr�rrFTrú, ) r;r1r2ÚiterÚnextÚ StopIterationr7rHrIr:)rr]rrrPrQrRr;r“r„rrUÚitZnext_entr–r•rTÚwrrrrh…sP           þzPrettyPrinter._format_itemscCs4| || ¡|j|¡\}}}|s&d|_|r0d|_|S)NFT)rArŠr0rGrF)rrrQrRrarCrDrrrrH®s ÿ zPrettyPrinter._reprcCst|||||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. )rr8)rrrQÚ maxlevelsrRrrrrA·szPrettyPrinter.formatc Cs‚t|ƒs| t|ƒ¡dS| |j||¡}|j}|t|jƒd7}| d|j|d|f¡| ||||d||¡| d¡dS)Nr z %s(%s, %srXr`)rIr;rarHÚdefault_factoryrbr'rO) rrrrrPrQrRZrdfrdrrrÚ_pprint_default_dict¾sz"PrettyPrinter._pprint_default_dictc CsŠt|ƒs| t|ƒ¡dS|j}| |jd¡|jdkrN| |jdd¡| ¡}| |||t|jƒd|d||¡| d¡dS)Nrmr rXrrn)rIr;rarbr'r1Ú most_commonr^) rrrrrPrQrRrdr]rrrÚ_pprint_counterËs þzPrettyPrinter._pprint_counterc Cs¸t|jƒs| t|ƒ¡dS|j}| |jd¡|t|jƒd7}t|jƒD]d\}} |t|jƒdkrŒ| | |||d||¡| d¡qN| | ||d||¡| dd|¡qNdS)Nr_r r`r�rX)rIÚmapsr;rarbr'rtr:) rrrrrPrQrRrdrzÚmrrrÚ_pprint_chain_mapÛs  zPrettyPrinter._pprint_chain_mapc Cs¸t|ƒs| t|ƒ¡dS|j}| |jd¡|t|jƒd7}| d¡|jdurz| ||||d||¡| d¡n:| |||d||¡| |j||¡}| dd||f¡dS)Nr_r rfrz])z], %smaxlen=%s)rX)rIr;rarbr'ÚmaxlenrhrH) rrrrrPrQrRrdZrmlrrrÚ _pprint_dequeìs"  ÿ  ÿzPrettyPrinter._pprint_dequec Cs| |j|||||d¡dS©Nr ©r:ÚdatarirrrÚ_pprint_user_dictszPrettyPrinter._pprint_user_dictc Cs| |j|||||d¡dSr¨r©rirrrÚ_pprint_user_listszPrettyPrinter._pprint_user_listc Cs| |j|||||d¡dSr¨r©rirrrÚ_pprint_user_string sz!PrettyPrinter._pprint_user_string)r r NN)4r'r(r)r rrrrr:rJrOrNrLreÚ _collectionsÚ OrderedDictrjrcrlÚtuplerqroÚ frozensetr�r"r…r‡rˆÚ bytearrayr‹r�ÚMappingProxyTyper—r�r^rhrHrAr Ú defaultdictr¢ÚCounterr¥ÚChainMapr§Údequer«ÚUserDictr¬ÚUserListr­Ú UserStringrrrrrgs`ÿ +      1     )       rcCsŽt|ƒ}|tvrt|ƒddfSt|ddƒ}t|tƒ�rD|tju�rD|sJdSt|ƒ}|rl||krldd||vfS||vr‚t|ƒddfSd||<d}d} g} | j } |d7}|rºt |  ¡t d�} n|  ¡} | D]b\} }t | ||||ƒ\}}}t |||||ƒ\}}}| d||fƒ|�o|�o|}|�s$|rÆd} qÆ||=d d  | ¡|| fSt|tƒ�r\|tju�stt|tƒ�rn|tju�rnt|tƒ�r�|�sŠd Sd }n"t|ƒdk�r¤d }n|�s®dSd}t|ƒ}|�rÜ||k�rÜ|dd||vfS||v�rôt|ƒddfSd||<d}d} g} | j } |d7}|D]8}t |||||ƒ\}}}| |ƒ|�sFd}|�rd} �q||=|d  | ¡|| fSt|ƒ}||�oˆ| d¡ dfS)NTFrL)z{}TFz{...}r rYz%s: %sz{%s}r˜)z[]TFz[%s]z(%s,))z()TFz(%s)z...ú<)r#Ú_builtin_scalarsraÚgetattrÚ issubclassrNrLr$rErur\r]r-rÚjoinrcr°rIÚ startswith)rrQržrRrrpÚrrSrCrDZ componentsrur]ÚkÚvZkreprZ kreadableZkrecurZvreprZ vreadableZvrecurrAÚoZoreprZ oreadableZorecurrTrrrrs„    ÿÿ  rcCsdt|ƒjt|ƒfS)Nz)r#r'r$rrrrrEZsÿrEcCs„ddl}|dur,ddddgdddœfgd }tƒ}| ¡}t|iddd ƒ| ¡}| |¡| ¡}td ||ƒtd ||ƒdS) NrÚstring)r rér‚éé)ééi †Tz _safe_repr:zpformat:)ÚtimerÚ perf_counterrrÚprint)rrËrVÚt1Út2Zt3rrrÚ _perfcheck_s rÐccsŒd}t|ƒdd}tdt|ƒdƒD]T}|||d…}||}||krP||8}tt|ƒƒ|krt|rnt|ƒV|}q$|}q$|rˆt|ƒVdS)Nór‚r)rIÚrangera)rrrPr}r–rzrr€rrrrƒls rƒÚ__main__)Nr r N)r r N)N)$r*Ú collectionsr®rvÚsysr4Útypesr�Úiorr>Ú__all__rrr rrrrr-rrr±r"r‡r²r.ÚfloatÚcomplexr6r#r¼rErÐrƒr'rrrrÚ s> ÿ ÿ -Fÿ