ó
    E>Ùj@  ã                   ój   • S r / SQr0 r0 rS rSS jrSS jrS rS rS r	SS	 jr
SS
 jrS rS rS rg)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.
)ÚgetlineÚ
clearcacheÚ
checkcacheÚ	lazycachec                  ó,   • [         R                  5         g)zClear the cache entirely.N)ÚcacheÚclear© ó    Ú&/usr/local/lib/python3.13/linecache.pyr   r      s   € ä	‡K�K…Mr
   Nc                 óZ   • [        X5      nSUs=::  a  [        U5      ::  a
  O  gX1S-
     $ 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.é   Ú )ÚgetlinesÚlen)ÚfilenameÚlinenoÚmodule_globalsÚliness       r   r   r      s4   € ô �XÓ.€EØˆFÕ ”c˜%“jÕ àð ˜a‘ZÑ Ð Ør
   c                 ó¬   • [         R                  U S5      nUb  [        U5      S:w  a  US   $  [        X5      $ ! [         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   é   )r   Úgetr   ÚupdatecacheÚMemoryErrorr   )r   r   Úentrys      r   r   r       sV   € ô �I‰I�h Ó%€EØÑœS ›Z¨1›_Ø�Q‰xˆðÜ˜8Ó4Ð4øÜó ÜŒØŠ	ðús   ¯
: ºAÁAc                 óZ   • [        U 5      nSUs=::  a  [        U5      ::  a
  O  gX!S-
     $ g)Nr   r   )Ú_getlines_from_coder   )r   r   r   s      r   Ú_getline_from_coder   /   s2   € Ü Ó)€EØˆFÕ ”c˜%“jÕ àð ˜a‘ZÑ Ð Ør
   c                 óH   • U R                   U R                  U R                  4$ ©N)Úco_filenameÚco_qualnameÚco_firstlineno)Úcodes    r   Ú	_make_keyr$   5   s!   € Ø×Ñ˜d×.Ñ.°×0CÑ0CÐDÐDr
   c                 óv   • [        U 5      n[        R                  US 5      nUb  [        U5      S:w  a  US   $ / $ )Nr   r   )r$   Ú_interactive_cacher   r   )r#   Úcode_idr   s      r   r   r   8   s;   € Ü˜‹o€GÜ×"Ñ" 7¨DÓ1€EØÑœS ›Z¨1›_Ø�Q‰xˆØ€Ir
   c                 óæ  • U c#  [         R                  5       R                  5       nOU /nU H„  n [         R                  U S5      nUb  [	        U5      S:X  a  M-  Uu  p4pVUc  M7   SSKn UR                  U5      nX8R                  :w  d  XHR                  :w  d  Mn  [         R                  U S5        M†     g! [         a       gf = f! [        [        4 a    [         R                  U S5         MÃ  f = f)zQDiscard cache entries that are out of date.
(This is not checked upon each call!)Nr   é    )r   ÚcopyÚkeysr   r   ÚosÚImportErrorÚstatÚOSErrorÚ
ValueErrorÚpopÚst_sizeÚst_mtime)	r   Ú	filenamesr   ÚsizeÚmtimer   Úfullnamer,   r.   s	            r   r   r   @   sÛ   € ð Ñä—J‘J“L×%Ñ%Ó'‰	à�Jˆ	ãˆÜ—	‘	˜( DÓ)ˆØ‰=œC ›J¨!›OáØ',Ñ$ˆ�UØ‰=Ùð	ãð	Ø—7‘7˜8Ó$ˆDð —<‘<Ó 5¯M©MÕ#9Ü�I‰I�h Ö%ò' øô ó 	Úð	ûô œÐ$ó 	Ü�I‰I�h Ô%Úð	ús$   Á$B5Á)CÂ5
CÃCÃ&C0Ã/C0c                 óü  •  SSK nSSKnSSKn[        R                  U S5      nU (       a,  U R                  S5      (       a  U R                  S5      (       a  / $ U n UR                  U5      n UR'                  U5       nUR)                  5       nSSS5        W(       d  S/nO&US   R                  S5      (       d  US==   S-  ss'   UR.                  UR0                  nnUUXæ4[        U '   U$ ! [         a    / s $ f = f! [         Ga3    U nUb  [        U5      S:X  a  UOSn	U	c  [        X5      n	U	bn   U	S   " 5       n
U
c  / s $ [        U
5      SU
R                  5        Vs/ s H  o»S-   PM	     Os  snf snU4nU[        U '   US   s $ ! [        [        4 a     Of = fUR                  R                  U 5      (       a  / s $ UR                   Hc  n UR                  R                  XÈ5      nO! [         ["        4 a     M3  f = f UR                  U5      n   GM´  ! [        [$        4 a     Ma  f = f   / s $ [$         a    / s $ f = f! , (       d  f       GNÆ= f! [        [*        [,        4 a    / s $ f = f)	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.r)   NÚ<Ú>r   Ú
r   éÿÿÿÿ)r,   ÚsysÚtokenizer-   r   r1   Ú
startswithÚendswithr.   r/   r   Ú_make_lazycache_entryÚ
splitlinesÚpathÚisabsÚjoinÚ	TypeErrorÚAttributeErrorr0   ÚopenÚ	readlinesÚUnicodeDecodeErrorÚSyntaxErrorr2   r3   )r   r   r,   r=   r>   r   r7   r.   ÚbasenameÚ
lazy_entryÚdataÚlineÚdirnameÚfpr   r5   r6   s                    r   r   r   `   sl  € ðÛÛÛô
 �I‰I�h Ó%€EÞ˜×+Ñ+¨C×0Ñ0°X×5FÑ5FÀs×5KÑ5KØˆ	à€Hð0Ø�w‰w�xÓ ˆð`Ø�]‰]˜8Ô$¨Ø—L‘L“NˆE÷ %ö Ø�‰Ø�2‰Y×Ñ ×%Ñ%Øˆb‹	�TÑ‹	Ø—,‘, §¡ˆ%€DØ˜E 5Ð2„Eˆ(�OØ€LøôK ó àŠ	ðûô ô ,Øˆð $Ñ/´C¸³JÀ!³O‘UÈˆ
ØÑÜ.¨xÓHˆJØÑ!ð Ø! !’}“�ð ‘<ð ’Iä˜“IØØ-1¯_©_Ô->Ó?Ò-> T˜D”[Ò->ùÔ?Øð	�ð #(”�h‘Ø˜Q‘x’øô  ¤Ð)ó Ùðúð$ �7‰7�=‰=˜×"Ñ"ØŠIà—x”xˆGðØŸ7™7Ÿ<™<¨Ó:‘øÜœ~Ð.ó âðúðØ—w‘w˜xÓ(�ÜøÜœZÐ(ó Úðúñ  ð ŠIÜó ØŠ	ðú÷ %Ö$ûäÔ'¬Ð5ó ØŠ	ðúsÝ   ‚C/ ÁD Á.I! Á?IÂI! Ã/C>Ã=C>Ä4IÄ6
FÅ IÅIÅ$E3
Å2IÆF ÆIÆF Æ %IÇIÇG3Ç2IÇ3HÈIÈHÈIÈH!ÈIÈ!H5È1IÈ4H5È5IÈ>IÉIÉ
IÉI! ÉI! É!I;É:I;c                 ó‚   • [         R                  U S5      nUb  [        U5      S:H  $ [        X5      nUb
  U[         U '   gg)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.
Nr   TF)r   r   r   rA   )r   r   r   rM   s       r   r   r   ´   sG   € ô �I‰I�h Ó%€EØÑÜ�5‹z˜Q‰Ðä& xÓ@€JØÑØ$Œˆh‰ØØr
   c                 ól  ^• U (       a,  U R                  S5      (       a  U R                  S5      (       a  g U(       ax  SU;   ar  UR                  S5      n[        USS 5      =(       d    US   n[        USS 5      nUc  UR                  S5      n[        USS 5      mU(       a  T(       a  U4U4S	 jjnU4$ g )
Nr9   r:   Ú__name__Ú__spec__ÚnameÚloaderÚ
__loader__Ú
get_sourcec                 ó   >• T" U /UQ70 UD6$ r   r	   )rV   ÚargsÚkwargsrY   s      €r   Ú	get_linesÚ(_make_lazycache_entry.<locals>.get_linesÙ   s   ø€ Ù! $Ð8¨Ò8°Ñ8Ð8r
   )r?   r@   r   Úgetattr)r   r   ÚspecrV   rW   r]   rY   s         @r   rA   rA   Ì   s¤   ø€ Þ˜×+Ñ+¨C×0Ñ0°X×5FÑ5FÀs×5KÑ5KØæ˜*¨Ó6Ø×!Ñ! *Ó-ˆÜ�t˜V TÓ*×H¨n¸ZÑ.HˆÜ˜˜x¨Ó.ˆØ‰>Ø#×'Ñ'¨Ó5ˆFÜ˜V \°4Ó8ˆ
æ–JØ#÷ 9à�<ÐØr
   c                 ó^  • [        U5      S UR                  5        Vs/ s H  o3S-   PM	     snU4nU /nU(       an  UR                  5       n U R                   H0  n[	        U[        U 5      5      (       d  M  UR                  U5        M2     [        U 5      nU[        U'   U(       a  Mm  g g s  snf )Nr;   )	r   rB   r1   Ú	co_constsÚ
isinstanceÚtypeÚappendr$   r&   )r#   ÚstringrV   rO   r   ÚstackÚconstÚkeys           r   Ú_register_coderj   à   s™   € Ü�‹[ØØ&,×&7Ñ&7Ô&9Ó:Ò&9˜d�TŒkÑ&9Ñ:Øð€Eð ˆF€EÞ
Ø�y‰y‹{ˆØ—^”^ˆEÜ˜%¤ d£×,Ó,Ø—‘˜UÖ#ñ $ô ˜‹oˆØ"'Ô˜3Ñ÷ Š%ùò ;s   žB*r   )Ú__doc__Ú__all__r   r&   r   r   r   r   r$   r   r   r   r   rA   rj   r	   r
   r   Ú<module>rm      sY   ðñò ?€ð
 	€ØÐ òô
ôòòEòô&ô@Qòhò0ó((r
   