*j@jSr/SQr0r0rSrSSjrSSjrSrSrSr SS jr SS jr S r S r S rg)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)cacheclear0/opt/alt/python313/lib64/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 c[RUS5nUb[U5S:waUS$[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.Nr )rgetr updatecache MemoryErrorr)rrentrys r rr sV IIh %E SZ1_Qx844   s :AAcZ[U5nSUs=::a[U5::a O gX!S- $g)Nr r)_getlines_from_coder)rrrs r _getline_from_coder/s2  )EF c%j aZ  r cHURURUR4$N) co_filename co_qualnameco_firstlineno)codes r _make_keyr$5s!   d..0C0C DDr cv[U5n[RUS5nUb[U5S:waUS$/$)Nr r)r$_interactive_cacherr)r#code_idrs r rr8s;oG  " "7D 1E SZ1_Qx Ir cUc#[R5R5nOU/nUHn[RUS5nUb[ U5S:XaM-Uup4pVUcM7SSKnURU5nX8R:wdXHR:wdMn[RUS5 M g![ a  gf=f![[4a [RUS5 Mf=f)zQDiscard cache entries that are out of date. (This is not checked upon each call!)Nr ) rcopykeysrros ImportErrorstatOSError ValueErrorpopst_sizest_mtime) r filenamesrsizemtimerfullnamer,r.s r rr@sJJL%%' J  (D) =CJ!O ',$U =    778$D << 5MM#9 IIh %'   $  IIh %  s$$B5)C5 CC&C0/C0cSSKnSSKnSSKn[R US5nU(a,UR S5(aURS5(a/$UnURU5nUR'U5n U R)5nSSS5 W(dS/nO&USRS5(d US==S- ss'UR.UR0nnUUX4[U'U$![a /s$f=f![Ga3 UnUb[U5S:XaUOSn U c [X5n U bnU S"5n U c/s$[U 5SU R5V s/sHoS-PM Os sn fsn U4nU[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)N<>r  r)r,systokenizer-rr1 startswithendswithr.r/r_make_lazycache_entry splitlinespathisabsjoin TypeErrorAttributeErrorr0open readlinesUnicodeDecodeError SyntaxErrorr2r3)rrr,r=r>rr7r.basename lazy_entrydatalinedirnamefprr5r6s r rr`sl IIh %E ++C00X5F5Fs5K5K H0wwx ` ]]8 $LLNE%  2Y   % % b T ,, %DE52E(O LK   ,$/CJ!OU  .xHJ  ! !!}<II-1__->?->TD[->?  #(hQx )  $ 77== " "IxxG 77<<:~.   wwx(Z(   I  % $ ' 5 s C/D.I!?II!/ C>=C>4I 6 F I I $E3 2I  F I F  %I I G32I 3HI HI  H!I !H51I 4H55I > I  I  II!I!!I;:I;c[RUS5nUb[U5S:H$[X5nUb U[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. Nr TF)rrrrA)rrrrMs r rrsG IIh %E 5zQ&x@J$h r cl^U(a,URS5(aURS5(agU(axSU;arURS5n[USS5=(d USn[USS5nUcURS5n[USS5mU(aT(a U4U4S jjnU4$g) Nr9r:__name____spec__nameloader __loader__ get_sourcec>T"U/UQ70UD6$rr )rVargskwargsrYs r get_lines(_make_lazycache_entry..get_liness!$8888r )r?r@rgetattr)rrspecrVrWr]rYs @r rArAs ++C00X5F5Fs5K5K*6!!*-tVT*HnZ.Hx. >#'' 5FV\48 J# 9<  r c^[U5SUR5Vs/sHo3S-PM snU4nU/nU(anUR5nURH0n[ U[ U55(dMUR U5 M2 [U5nU[U'U(aMmggs snf)Nr;) rrBr1 co_consts isinstancetypeappendr$r&)r#stringrVrOrstackconstkeys r _register_coderjs [ &,&7&7&9 :&9dTk&9 :  EFE yy{^^E%d,, U#$o"'3 %;sB*r)__doc____all__rr&rrrrr$rrrrrArjr r r rmsY ?    E&@Qh0( (r