etdSr/SQr0r0rSrS SjrS SjrSrSrSr S S jr S S jr S r S r g)zCache 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. )getline clearcache checkcache lazycachec,[R5 g)zClear the cache entirely.N)cacheclear//opt/imh/python3.13/lib/python3.13/linecache.pyrrs  KKMr NcZ[X5nSUs=::a[U5::a O gX1S- $g)zzGet a line for a Python source file from the cache. Update the cache if it doesn't contain an entry for this file already.)getlineslen)filenamelinenomodule_globalsliness r rrs4 X .EF c%j aZ  r cU[;a$[Un[U5S:wa [US$[X5$![a [ 5 /s$f=f)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)rrentrys r rr sX5h u:??1% %844   s ;AAcZ[U5nSUs=::a[U5::a O gX!S- $g)Nr r)_getlines_from_coder)rrrs r _getline_from_coder0s2  )EF c%j aZ  r cHURURUR4$N) co_filename co_qualnameco_firstlineno)codes r _make_keyr#6s!   d..0C0C DDr cx[U5nU[;a$[Un[U5S:wa [US$/$)Nr r)r#_interactive_cacher)r"code_idrs r rr9s>oG$$"7+ u:?%g.q1 1 Ir cUc#[R5R5nOU/nUHun[Un[ U5S:XaMUup4pVUcM(SSKnURU5nX8R:wdXHR:wdM_[RUS5 Mw g![a Mf=f![ a  gf=f![[4a [RUS5 Mf=f)zQDiscard cache entries that are out of date. (This is not checked upon each call!)Nr ) rcopykeysKeyErrorros ImportErrorstatOSError ValueErrorpopst_sizest_mtime) r filenamesrsizemtimerfullnamer,r.s r rrBsJJL%%' J  (OE u:? ',$U =    778$D << 5MM#9 IIh %/      $  IIh %  s5 B&B7C& B43B47 CC&C21C2c"SSKnSSKnSSKnU[;a,[ [U5S:wa[R US5 U(a,URS5(aURS5(a/$UnURU5nUR'U5n U R)5n SSS5 W (dS/n O&U SRS5(d U S==S- ss'UR.UR0pXX4[U'U $![a /s$f=f![Ga( Un[X5(az[US"5nUc/s$[ U5SUR5V s/sHoS-PM Os sn fsn U4[U'[USs$![[4a Of=fURRU5(a/s$URHcn URRX5nO![ ["4a M3f=fURU5n GM![[$4a Maf=f /s$[$a /s$f=f!,(df  GN=f![[*[,4a /s$f=f) zUpdate 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.r(Nr <> r)r,systokenizer-rrr1 startswithendswithr.r/r splitlinespathisabsjoin TypeErrorAttributeErrorr0open readlinesUnicodeDecodeError SyntaxErrorr2r3)rrr,r=r>r7r.basenamedatalinedirnamefprr5r6s r rrfse 5 uX 1 $ IIh % ++C00X5F5Fs5K5K H,wwx X ]]8 $LLNE%  2Y   % % b T ,, %52E(O LG   ( X . . *Xq)+<II-1__->?->TD[->? #h Xq)) )  " 77== " "IxxG 77<<:~.   wwx(Z(   I  % $ ' 5 s D <DI4I"0I4 DDI=F II2F I F30I2F33%II*HIHIHIH4/I4IIII II" I1,I41I44J Jc^U[;a[[U5S:XaggU(a,URS5(aURS5(agU(aSU;azUR S5n[ USS 5=(d USn[ US S 5nUcUR S 5n[ US S 5mU(aT(aU4U4S jjnU4[U'gg)aSeed 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. r TFr9r:__name____spec__nameNloader __loader__ get_sourcec>T"U/UQ70UD6$rr )rSargskwargsrVs r get_lineslazycache..get_liness!$8888r )rrr?r@getgetattr)rrspecrSrTrZrVs @r rrs5 uX 1 $ ++C00X5F5Fs5K5K*6!!*-tVT*HnZ.Hx. >#'' 5FV\48 J# 9(lE(O r cZ[U5SUR5Vs/sHo3S-PM snU4nU/nU(alUR5nURH0n[ U[ U55(dMUR U5 M2 U[[U5'U(aMkggs snf)Nr;) rrAr1 co_consts isinstancetypeappendr%r#)r"stringrSrMrstackconsts r _register_codergs [ &,&7&7&9 :&9dTk&9 :  EFE yy{^^E%d,, U#$/49T?+ %;sB(r)__doc____all__rr%rrrrr#rrrrrgr r r rjsU ?     E!&HOd"H 4r