grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026 ”qcÀã@s£dZddlZddlZddlZddlZdddgZddd„Ziadd„Zddd „Z dd d„Z dd d „Z d d„Z dS)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Ú checkcachecCsEt||ƒ}d|ko,t|ƒknr=||dSdSdS)NéÚ)ÚgetlinesÚlen)ÚfilenameÚlinenoÚmodule_globalsÚlines©r ú./opt/alt/python35/lib64/python3.5/linecache.pyrs" cCs iadS)zClear the cache entirely.N)Úcacher r r rrsc Csi|tkr4t|}t|ƒdkr4t|dSyt||ƒSWntk rdtƒgSYnXdS)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éN)rrÚ updatecacheÚ MemoryErrorr)r r Úentryr r rr%s    rc Csé|dkr!ttjƒƒ}n|tkr9|g}ndSx¥|D]�}t|}t|ƒdkriqD|\}}}}|dkrŠqDytj|ƒ}Wntk r»t|=wDYnX||jksÚ||jkrDt|=qDWdS)zUDiscard cache entries that are out of date. (This is not checked upon each call!)Nr) ÚlistrÚkeysrÚosÚstatÚOSErrorÚst_sizeÚst_mtime)r Ú filenamesrÚsizeÚmtimer Úfullnamerr r rr5s&       c "Cs5|tkr)tt|ƒdkr)t|=| sN|jdƒrR|jdƒrRgS|}ytj|ƒ}Wn0tk r�|}t||ƒr yt|dƒ}Wnttfk r¿YnLX|dkrÐgSt|ƒddd„|j ƒDƒ|ft|rNcSsg|]}|d‘qS)Ú r )Ú.0Úliner r rú qs zupdatecache..rr!éÿÿÿÿr%)rrÚ startswithÚendswithrrrÚ lazycacheÚ ImportErrorÚ splitlinesÚpathÚisabsÚsysÚjoinÚ TypeErrorÚAttributeErrorÚtokenizeÚopenÚ readlinesrr) r r rrÚbasenameÚdataÚdirnameÚfpr rrr r rrRsV %   #      rcCsÃ|tkr*tt|ƒdkr&dSdS| sO|jdƒrS|jdƒrSdS|r¿d|kr¿|jdƒ}|d}t|dd ƒ}|r¿|r¿tj||ƒ}|ft|s      A