o 0¦i|_ã @südZddlZddlZddlZddlZddlZ ddl m Z gd¢Z d$dddd œd d „Zd%dddd œd d „Zddœdd„Zdd„Zdd„Zdd„ZGdd„dƒZdd„ZGdd„dƒZeeeeeeeedƒhƒZdd„Z d&dd „Z!d!d"„Z"e#d#kr|e!ƒdSdS)'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_dictsÚunderscore_numbersc Cs$t|||||||d�}| |¡dS)zAPretty-print a Python object to a stream [default is sys.stdout].)ÚstreamÚindentÚwidthÚdepthr rrN)rr) Úobjectrrrrr rrZprinter©rú-/opt/alt/python310/lib64/python3.10/pprint.pyr0s ýrcCst||||||d� |¡S)z„Z2e2e ej3j <d?d@„Z4e4e ej5j <dAdB„Z6dS)Drr r NFTr cCsˆt|ƒ}t|ƒ}|dkrtdƒ‚|dur|dkrtdƒ‚|s"tdƒ‚||_||_||_|dur3||_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Ú_underscore_numbers)r"rrrrr rrrrrr#ks"  zPrettyPrinter.__init__cCs&| ||jddid¡|j d¡dS)NrÚ )Ú_formatr6Úwrite©r"rrrrr—szPrettyPrinter.pprintcCs"tƒ}| ||ddid¡| ¡S©Nr)Ú _StringIOr>Úgetvalue)r"rZsiorrrr›szPrettyPrinter.pformatcCs| |idd¡dS)Nrr©Úformatr@rrrr szPrettyPrinter.isrecursivecCs | |idd¡\}}}|o| SrArD)r"rÚsÚreadableÚ recursiverrrr£s zPrettyPrinter.isreadablec Cs t|ƒ}||vr| t|ƒ¡d|_d|_dS| |||¡}|j||} t|ƒ| kr~|j  t |ƒj d¡} | durNd||<| |||||||dƒ||=dSt   |¡r~t|t ƒs~|jjr~t|j dƒr~d|j jjvr~d||<| ||||||d¡||=dS| |¡dS)NTFr Ú __wrapped__Z __create_fn__)r'r?Ú _recursionÚ _recursiveÚ _readableÚ_reprr5ÚlenÚ _dispatchÚgetr&Ú__repr__Ú _dataclassesZ is_dataclassÚ isinstanceZ__dataclass_params__ÚreprÚhasattrrIr,Ú_pprint_dataclass) r"rrrÚ allowanceÚcontextÚlevelÚobjidÚrepÚ max_widthÚprrrr>§s8  ÿþ üzPrettyPrinter._formatc s`ˆjj}|t|ƒd7}‡fdd„t ˆ¡Dƒ}| |d¡| ||||||¡| d¡dS)Nr cs$g|]}|jr|jtˆ|jƒf‘qSr)rTÚnameÚgetattr)Ú.0ÚfrrrÚ Æs$z3PrettyPrinter._pprint_dataclass..ú(ú))Ú __class__r*rNrRZfieldsr?Ú_format_namespace_items© r"rrrrWrXrYÚcls_nameÚitemsrrrrVÃs zPrettyPrinter._pprint_dataclassc Csz|j}|dƒ|jdkr||jddƒt|ƒ}|r7|jr't| ¡td�} n| ¡} | | |||d||¡|dƒdS)NÚ{r ú ©ÚkeyÚ})r?r4rNr;Úsortedrir0Ú_format_dict_items) r"rrrrWrXrYr?ZlengthrirrrÚ _pprint_dictÍs ÿ zPrettyPrinter._pprint_dictcCslt|ƒs | t|ƒ¡dS|j}| |jd¡| t| ¡ƒ||t|jƒd|d||¡| d¡dS)Nrcr rd)rNr?rTrer*r>Úlistri)r"rrrrWrXrYÚclsrrrÚ_pprint_ordered_dictÞsþz"PrettyPrinter._pprint_ordered_dictcCs0| d¡| ||||d||¡| d¡dS)Nú[r ú])r?Ú _format_items©r"rrrrWrXrYrrrÚ _pprint_listës ÿzPrettyPrinter._pprint_listcCsH| d¡t|ƒdkr dnd}| ||||t|ƒ||¡| |¡dS)Nrcr z,)rd)r?rNrw)r"rrrrWrXrYÚendcharrrrÚ _pprint_tupleós ÿzPrettyPrinter._pprint_tuplec Cs”t|ƒs | t|ƒ¡dS|j}|tur| d¡d}n| |jd¡d}|t|jƒd7}t|td�}| ||||t|ƒ||¡| |¡dS)Nrjrnú({ú})r rl) rNr?rTreÚsetr*rorrw) r"rrrrWrXrYÚtyprzrrrÚ _pprint_setüs  ÿzPrettyPrinter._pprint_setcCsª|j}t|ƒs|t|ƒƒdSg}| d¡} |dkr"|d7}|d7}|j|} } t| ƒD]n\} } t| ƒ}| t| ƒdkrA| |8} t|ƒ| krM| |¡q-t d| ¡}|  ¡| }d}t|ƒD]2\}}||}|t|ƒdkr{| t| ƒdkr{||8}tt|ƒƒ|kr�|rŒ| t|ƒ¡|}q_|}q_|r›| t|ƒ¡q-t|ƒdkr¨||ƒdS|dkr°|dƒt|ƒD]\} }| dkrÄ|dd|ƒ||ƒq´|dkrÓ|d ƒdSdS) NTr z\S*\s*Úrcrr=rkrd) r?rNrTÚ splitlinesr5Ú enumerateÚappendÚreÚfindallÚpop)r"rrrrWrXrYr?ZchunksÚlinesZ max_width1r\ÚiÚliner[ÚpartsZ max_width2ÚcurrentÚjÚpartÚ candidaterrrÚ _pprint_strsX      €   ÿzPrettyPrinter._pprint_strc Cs–|j}t|ƒdkr|t|ƒƒdS|dk}|r#|d7}|d7}|dƒd} t||j||ƒD]} || ƒ|| ƒ| s@dd|} q.|rI|dƒdSdS)Nér rcr�r=rkrd)r?rNrTÚ_wrap_bytes_reprr5) r"rrrrWrXrYr?ZparensÚdelimr[rrrÚ _pprint_bytesCs&   € ÿzPrettyPrinter._pprint_bytesc Cs>|j}|dƒ| t|ƒ||d|d||d¡|dƒdS)Nz bytearray(é r rd)r?r”Úbytes)r"rrrrWrXrYr?rrrÚ_pprint_bytearrayXs ÿ zPrettyPrinter._pprint_bytearraycCs8| d¡| | ¡||d|d||¡| d¡dS)Nz mappingproxy(é r rd)r?r>ÚcopyrxrrrÚ_pprint_mappingproxyas ÿz"PrettyPrinter._pprint_mappingproxyc Csft|ƒtjur d}n|jj}|t|ƒd7}|j ¡}| |d¡|  ||||||¡| d¡dS)NÚ namespacer rcrd) r&Ú_typesÚSimpleNamespacerer*rNÚ__dict__rir?rfrgrrrÚ_pprint_simplenamespaceis z%PrettyPrinter._pprint_simplenamespacec Csœ|j}||j7}dd|}t|ƒd} t|ƒD]3\} \} } | | k} | | ||¡}||ƒ|dƒ| | ||t|ƒd| r@|nd||¡| sK||ƒqdS)Nú, rkr z: r)r?r4rNrƒrMr>)r"rirrrWrXrYr?ÚdelimnlÚ last_indexr‰rmÚentÚlastr[rrrrpxs"    þ€÷z PrettyPrinter._format_dict_itemsc Csš|j}dd|}t|ƒd} t|ƒD]7\} \} } | | k} || ƒ|dƒt| ƒ|vr0|dƒn| | ||t| ƒd| r?|nd||¡| sJ||ƒqdS)Nr rkr ú=ú...)r?rNrƒr'r>)r"rirrrWrXrYr?r¡r¢r‰rmr£r¤rrrrf‰s"     þ€óz%PrettyPrinter._format_namespace_itemscCsF|j}||j7}|jdkr||jddƒdd|}d} |j|d} } t|ƒ} zt| ƒ} Wn ty;YdSwd}|s¡| }zt| ƒ} Wnty[d}| |8} | |8} Ynw|jr‰| |||¡}t|ƒd}| |krv| } | rv|} | |kr‰| |8} || ƒd} ||ƒq>|| ƒ|} |  ||||r˜|nd||¡|r@dSdS) Nr rkr r�FTrú, ) r?r4r5ÚiterÚnextÚ StopIterationr:rMrNr>)r"rirrrWrXrYr?r¡r“rr\ÚitZnext_entr¤r£r[ÚwrrrrwœsV     ÿ   ý   þ ézPrettyPrinter._format_itemscCs4| || ¡|j|¡\}}}|sd|_|rd|_|S)NFT)rEr™r3rLrK)r"rrXrYrTrGrHrrrrMÅs  ÿzPrettyPrinter._reprcCs| ||||¡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"rrXÚ maxlevelsrYrrrrEÎszPrettyPrinter.formatc Cs‚t|ƒs | t|ƒ¡dS| |j||¡}|j}|t|jƒd7}| d|j|d|f¡| ||||d||¡| d¡dS)Nr z %s(%s, %srkrd)rNr?rTrMÚdefault_factoryrer*rq) r"rrrrWrXrYZrdfrsrrrÚ_pprint_default_dictÕsz"PrettyPrinter._pprint_default_dictc CsŠt|ƒs | t|ƒ¡dS|j}| |jd¡|jdkr'| |jdd¡| ¡}| |||t|jƒd|d||¡| d¡dS)Nr|r rkrr})rNr?rTrer*r4Ú most_commonrp) r"rrrrWrXrYrsrirrrÚ_pprint_counterâs þzPrettyPrinter._pprint_counterc Cs¸t|jƒs| t|ƒ¡dS|j}| |jd¡|t|jƒd7}t|jƒD]2\}} |t|jƒdkrF| | |||d||¡| d¡q'| | ||d||¡| dd|¡q'dS)Nrcr rdr rk)rNÚmapsr?rTrer*rƒr>) r"rrrrWrXrYrsr‰ÚmrrrÚ_pprint_chain_mapòs  úzPrettyPrinter._pprint_chain_mapc Csºt|ƒs | t|ƒ¡dS|j}| |jd¡|t|jƒd7}| d¡|jdur>| ||||d||¡| d¡dS| |||d||¡| |j||¡}| dd||f¡dS)Nrcr rurz])z], %smaxlen=%s)rk)rNr?rTrer*ÚmaxlenrwrM) r"rrrrWrXrYrsZrmlrrrÚ _pprint_deques"  ÿ ÿzPrettyPrinter._pprint_dequec Có| |j|||||d¡dS©Nr ©r>ÚdatarxrrrÚ_pprint_user_dictózPrettyPrinter._pprint_user_dictc Cr·r¸r¹rxrrrÚ_pprint_user_listr¼zPrettyPrinter._pprint_user_listc Cr·r¸r¹rxrrrÚ_pprint_user_string!r¼z!PrettyPrinter._pprint_user_stringcCs¬t|ƒ}|tvrt|ƒddfSt|ddƒ}t|tƒr0|tjur0|jr)|d›ddfSt|ƒddfSt|tƒr¹|tjur¹|s>dSt |ƒ}|rO||krOdd||vfS||vrZt |ƒddfSd||<d}d} g} | j } |d7}|j rwt | ¡td�} n| ¡} | D].\} }| | |||¡\}}}| ||||¡\}}}| d ||fƒ|o¤|o¤|}|s©|r«d} q}||=d d  | ¡|| fSt|tƒrÃ|tjusÏt|tƒ�rF|tju�rFt|tƒrÛ|sØd Sd }nt|ƒdkräd}n|sèdSd}t |ƒ}|rý||krý|dd||vfS||v�r t |ƒddfSd||<d}d} g} | j } |d7}|D]}| ||||¡\}}}| |ƒ|�s2d}|�r7d} �q||=|d  | ¡|| fSt|ƒ}||�oS| d¡ dfS)NTFrQZ_d)z{}TFz{...}r rlz%s: %sz{%s}r§)z[]TFz[%s]z(%s,))z()TFz(%s)r¦ú<)r&Ú_builtin_scalarsrTr_Ú issubclassr1rQr<Údictr'rJr„r;rorir0rEÚjoinrrÚtuplerNÚ startswith)r"rrXr­rYrÚrrZrGrHZ componentsr„riÚkÚvZkreprZ kreadableZkrecurZvreprZ vreadableZvrecurrEÚoZoreprZ oreadableZorecurr[rrrr&sš    ÿ ÿ €ÿ      ÿ€zPrettyPrinter._safe_repr)r r NN)7r*r+r,r#rrrrr>rVrOrqrÂrQrtÚ _collectionsÚ OrderedDictryrrr{rÄr€r~Ú frozensetr�r%r”r–r—Ú bytearrayršrœÚMappingProxyTyperŸr�rprfrwrMrEr¯Ú defaultdictr±ÚCounterr´ÚChainMapr¶Údequer»ÚUserDictr½ÚUserListr¾Ú UserStringrrrrrrjsh ÿ,       1    )         rcCsdt|ƒjt|ƒfS)Nz)r&r*r'rrrrrJzsÿrJcCs†ddl}|durddddgdddœfgd }tƒ}| ¡}| |iddd ¡| ¡}| |¡| ¡}td ||ƒtd ||ƒdS) NrÚstring)r rér‘éé)ééi †Tz _safe_repr:zpformat:)ÚtimerÚ perf_counterrrÚprint)rrÜr]Út1Út2Zt3rrrÚ _perfchecks ráccs’�d}t|ƒdd}tdt|ƒdƒD]*}|||d…}||}||kr)||8}tt|ƒƒ|kr;|r8t|ƒV|}q|}q|rGt|ƒVdSdS)Nór‘r)rNÚrangerT)rrrWrŒr¤r‰rŽr�rrrr’Œs € ÿr’Ú__main__)Nr r N)r r Nr!)$r-Ú collectionsrÊZ dataclassesrRr…Úsysr7ÚtypesrœÚiorrBÚ__all__rrr rrrrr0rrÌr%r–rÍÚfloatÚcomplexr9r&rÀrJrár’r*rrrrÚsD   ÿ  ÿ ÿ   ÿ