Ë ‚Ö¦i¨ãó`—dZddlZddlZddlZddlZgd¢ZiZd„Zd d„Zd d„Z d d„Z d d„Z d „Z y) zÃCache lines from Python source files. This is intended to read lines from modules imported -- hence if a filename is not found, it will look down the module search path for a file by that name. éN)ÚgetlineÚ clearcacheÚ checkcacheÚ lazycachecó,—tj«y)zClear the cache entirely.N)ÚcacheÚclear©óú"/usr/lib64/python3.12/linecache.pyrrs €ä ‡K�K…Mr cóZ—t||«}d|cxkrt|«kr ny||dz Sy)z~Get a line for a Python source file from the cache. Update the cache if it doesn't contain an entry for this file already.éÚ)ÚgetlinesÚlen)ÚfilenameÚlinenoÚmodule_globalsÚliness r rrs8€ô �X˜~Ó .€E؈FÔ ”c˜%“jÔ à ð�V˜a‘ZÑ Ð Ø r có¨—|tvr#t|}t|«dk7r t|dS t||«S#t$rt «gcYSwxYw)z�Get the lines for a Python source file from the cache. Update the cache if it doesn't contain an entry for this file already.ré)rrÚ updatecacheÚ MemoryErrorr)rrÚentrys r rr$sZ€ð”5ÑÜ�h‘ˆÜ ˆu‹:˜Š?ܘ‘? 1Ñ%Ð %ðܘ8 ^Ó4Ð4øÜ òÜŒ ØŠ ðús­ 9¹AÁAcó²—|€#tj«j«}n|g}|D]p} t|}t |«dk(rŒ|\}}}}|€Œ& t j |«}||jk7s||jk7sŒ[tj|d«Œry#t$rYŒwxYw#ttf$rtj|d«YŒªwxYw)zUDiscard cache entries that are out of date. (This is not checked upon each call!)Nr) rÚcopyÚkeysÚKeyErrorrÚosÚstatÚOSErrorÚ ValueErrorÚpopÚst_sizeÚst_mtime)rÚ filenamesrÚsizeÚmtimerÚfullnamer s r rr4s×€ðÐä—J‘J“L×%Ñ%Ó'‰ à�Jˆ ãˆð ܘ(‘OˆEô ˆu‹:˜Š?à Ø',Ñ$ˆˆe�U˜HØ ˆ=Ø ð Ü—7‘7˜8Ó$ˆDð �4—<‘<Ò  5¨D¯M©MÓ#9Ü �I‰I�h Õ %ñ%øôò Ù ð ûôœÐ$ò Ü �I‰I�h Ô %Ù ð ús#¯ BÁB. B+Â*B+Â.%CÃCcó¦—|tvr+tt|«dk7rtj|d«|r"|jd«r|j d«rgS|} t j |«} t%j&|«5}|j)«} ddd« r!| dj d«s | dxxdz cc<|j.|j0} } | | | |ft|<| S#t$�r&|}t||«ru t|d«}|€gcYSt|«d|j«D�cgc]}|dz‘Œ ncc}wc}|ft|<t|dcYS#ttf$rYnwxYwt jj|«rgcYStjD]e} t jj||«}n#tt f$rYŒ6wxYw t j |«}n#tt"f$rYŒcwxYwgcYSY�Œ¨t"$rgcYSwxYw#1swY�Œ“xYw#tt*t,f$rgcYSwxYw) z”Update a cache entry and return its list of lines. If something's wrong, print a message, discard the cache entry, and return an empty list.rNÚ<Ú>rÚ réÿÿÿÿ)rrr#Ú startswithÚendswithrr r!rÚ splitlinesÚ ImportErrorÚpathÚisabsÚsysÚjoinÚ TypeErrorÚAttributeErrorr"ÚtokenizeÚopenÚ readlinesÚUnicodeDecodeErrorÚ SyntaxErrorr$r%) rrr)r ÚbasenameÚdataÚlineÚdirnameÚfprr'r(s r rrSs>€ð ”5ÑÜ Œu�X‰Ó  1Ò $Ü �I‰I�h Ô %Ù ˜×+Ñ+¨CÔ0°X×5FÑ5FÀsÔ5K؈ à€Hð,Ü�w‰w�xÓ ˆðXÜ �]‰]˜8Ô $¨Ø—L‘L“NˆE÷%ñ �U˜2‘Y×'Ñ'¨Ô-Ø ˆb‹ �TÑ‹ Ø—,‘, § ¡ ˆ%€DؘE 5¨(Ð2„Eˆ(�OØ €Løôi ó(؈ô �X˜~Ô .ð *ܘX‘ qÑ)Ó+�ð�<ð’I䘓IØØ-1¯_©_Ô->Ó?Ñ-> T�T˜D“[Ñ->ùÔ?Øð #”�h‘ô ˜X‘ qÑ)Ò)øô ¤Ð)ò Ùð úô" �7‰7�=‰=˜Ô "ØŠIä—x”xˆGð ÜŸ7™7Ÿ<™<¨°Ó:‘øÜœ~Ð.ò áð úð Ü—w‘w˜xÓ(�ÙøÜœZÐ(ò Ùð úð ðŠIò ô òØŠ ðú÷%Ñ $ûä Ô'¬Ð 5òØŠ ðúsÆÁC+Á3H7ÂH*ÂH7Ã+H'ÄE#ÄH'ÄH'Ä7 E ÅH'Å#E5Å2H'Å4E5Å5$H'ÆH'Æ/ GÇH'ÇG"ÇH'Ç!G"Ç"H'Ç&G=Ç;H'Ç=HÈ H'ÈHÈH'È H'È&H'È*H4È/H7È7IÉIcó†—|tvrtt|«dk(ryy|r"|jd«r|jd«ry|r{d|vrw|j d«}t |dd «xs|d}t |d d «}|€|j d «}t |d d «}|r#|r!t j||«}|ft|<yy) aîSeed the cache for filename with module_globals. The module loader will be asked for the source only when getlines is called, not immediately. If there is an entry in the cache already, it is not altered. :return: True if a lazy load is registered in the cache, otherwise False. To register such a load a module loader with a get_source method must be found, the filename must be a cacheable filename, and the filename must not be already cached. rTFr+r,Ú__name__Ú__spec__ÚnameNÚloaderÚ __loader__Ú get_source)rrr/r0ÚgetÚgetattrÚ functoolsÚpartial)rrÚspecrFrGrIÚ get_liness r rr˜s΀ð”5ÑÜ Œu�X‰Ó  1Ò $ØàÙ ˜×+Ñ+¨CÔ0°X×5FÑ5FÀsÔ5KØá˜*¨Ñ6Ø×!Ñ! *Ó-ˆÜ�t˜V TÓ*ÒH¨n¸ZÑ.HˆÜ˜˜x¨Ó.ˆØ ˆ>Ø#×'Ñ'¨ Ó5ˆFܘV \°4Ó8ˆ á ‘JÜ!×)Ñ)¨*°dÓ;ˆIØ(˜lŒE�(‰OØØ r )N) Ú__doc__rLr5rr9Ú__all__rrrrrrrr r r ÚrRsDðñóÛ Û Ûâ >€ð €òó ó ó &ó>BóJ!r