+
    Bi6                        ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIH	t	 ^ RI
Ht ^ RIHt ] P                  t]R,           tRtRt]P&                  P)                  ]4      tR	P-                  4       t]P&                  P)                  ]4      tR
tRtRt ! R R4      t ! R R]4      t ! R R]4      t ! R R]]P>                  4      t  ! R R]]P>                  4      t! ! R R]]P>                  4      t" ! R R]]P>                  4      t# ! R R]]P>                  4      t$ ! R R4      t% ! R R 4      t& ! R! R"]P>                  4      t' ! R# R$]P>                  4      t(])R%8X  d   ]PT                  ! 4        R# R# )&    N)
ModuleSpec)support)	os_helper)assert_python_okz.missingz
!@$)(!@#_1 zlinecache abcz3
" Docstring "

def function():
    return result

z%
def f():
    return 1 + 1

a = f()

z
def f():
    return 3c                   2   a a ] tR t^+t oV 3R ltRtVtV ;t# )TempFilec                F  < \         SV `  4        \        P                  ! R R7      ;_uu_ 4       pVP                  V n        VP                  V P                  4       RRR4       V P                  \        P                  V P
                  4       R#   + '       g   i     L<; i)F)deleteN)supersetUptempfileNamedTemporaryFilename	file_namewritefile_byte_string
addCleanupr   unlink)selffp	__class__s   & */usr/lib/python3.14/test/test_linecache.pyr   TempFile.setUp-   sd    ((66"WWDNHHT**+ 7 		(($..9 76s   -BB 	)r   )__name__
__module____qualname____firstlineno__r   __static_attributes____classdictcell____classcell__r   __classdict__s   @@r   r	   r	   +   s     : :    r	   c                   >   a a ] tR t^5t oV 3R ltR tR tRtVtV ;t	# )GetLineTestsGoodDatac                   < R P                  V P                  4      P                  R4      V n        \        SV `  4        R# )r   utf-8N)join	file_listencoder   r   r   )r   r   s   &r   r   GetLineTestsGoodData.setUp8   s,     " 7 > >w Gr$   c                j   \         P                  ! V P                  4      ;_uu_ 4       p\        V4       F^  w  r#VP	                  R 4      '       g
   VR ,          p\
        P                  ! V P                  V^,           4      pV P                  W44       K`  	  RRR4       R#   + '       g   i     R# ; i
N)tokenizeopenr   	enumerateendswith	linecachegetlineassertEqual)r   r   indexlinecached_lines   &    r   test_getline!GetLineTestsGoodData.test_getline<   sv    ]]4>>**b(}}}T**DLD'//	J  3  - +***s   A.B!!B2	c                |    \         P                  ! V P                  4      pV P                  WP                  4       R # N)r4   getlinesr   r6   r*   r   liness   & r   test_getlines"GetLineTestsGoodData.test_getlinesE   s(    ""4>>2/r$   )r   )
r   r   r   r   r   r:   rA   r   r    r!   r"   s   @@r   r&   r&   5   s     40 0r$   r&   c                   ,   a  ] tR t^Jt o R tR tRtV tR# )GetLineTestsBadDatac                h    V P                  \        P                  ! V P                  ^4      R4       R# )   r   N)r6   r4   r5   r   r   s   &r   r:    GetLineTestsBadData.test_getlineM   s#    **4>>1=rBr$   c                f    V P                  \        P                  ! V P                  4      . 4       R # r=   )r6   r4   r>   r   rG   s   &r   rA   !GetLineTestsBadData.test_getlinesP   s!    ++DNN;R@r$    N)r   r   r   r   r:   rA   r   r    r#   s   @r   rD   rD   J   s     CA Ar$   rD   c                   *   a  ] tR t^Tt o . tR tRtV tR# )	EmptyFilec                l    \         P                  ! V P                  4      pV P                  VR .4       R# r.   )r4   r>   r   r6   r?   s   & r   rA   EmptyFile.test_getlinesW   s(    ""4>>2'r$   rK   N)r   r   r   r   r*   rA   r   r    rL   s   @r   rN   rN   T   s     I( (r$   rN   c                       ] tR t^\tR.tRtR# )SingleEmptyLiner/   rK   Nr   r   r   r   r*   r   rK   r$   r   rR   rR   \   s	    Ir$   rR   c                       ] tR t^`t. ROtRtR# )GoodUnicoderK   N)u   á
zb
zabcdef
u   ááááá
rS   rK   r$   r   rU   rU   `   s    ;Ir$   rU   c                       ] tR t^ctRtRtR# )BadUnicode_NoDeclarations   
abcrK   Nr   r   r   r   r   r   rK   r$   r   rW   rW   c   s    #r$   rW   c                       ] tR t^ftRtRtR# )BadUnicode_WithDeclarations   # coding=utf-8
abcrK   NrX   rK   r$   r   rZ   rZ   f   s    1r$   rZ   c                   &   a  ] tR t^jt o R tRtV tR# )
FakeLoaderc                    R V 2# )zsource for rK   r   fullnames   &&r   
get_sourceFakeLoader.get_sourcek   s    XJ''r$   rK   Nr   r   r   r   r`   r   r    rL   s   @r   r\   r\   j   s     ( (r$   r\   c                   &   a  ] tR t^ot o R tRtV tR# )NoSourceLoaderc                    R # r=   rK   r^   s   &&r   r`   NoSourceLoader.get_sourcep   s    r$   rK   Nrb   rL   s   @r   rd   rd   o   s      r$   rd   c                   z   a  ] tR t^tt o R tR tR tR tR tR t	R t
R tR	 tR
 tR tR tR tR tR tRtV tR# )LineCacheTestsc                   \         P                  pV P                  V! \        R4      \        4       V P                  V! \        R4      \        4       V P                  \        V\        R4       V P                  V! \        ^4      \        4       V P                  V! \        ^4      \        4       \         F~  p\        P                  P                  \        V4      R,           p\        VRR7      ;_uu_ 4       p\        V4       F#  w  rVV P                  Wa! W5^,           4      4       K%  	  RRR4       K  	  \         P                  ! R4      pV P                  V. 4       R#   + '       g   i     K  ; i)	   g?.pyr(   encodingNza/b/c/__init__.pyi   )r4   r5   r6   FILENAMEEMPTYassertRaises	TypeErrorINVALID_NAMEMODULESospathr)   MODULE_PATHr1   r2   r>   )r   r5   entryfilenamefiler7   r8   emptys   &       r   r:   LineCacheTests.test_getlinev   s   ## 	51592.6 	)Wh< 	*E2q159 Eww||K7%?Hh11T#,T?KE$$T78QY+GH $3 21  ""#67# 211s   :3E##E4c                |   V P                  \        P                  \        P                  4       \	        \        P                  R RR7      ;_uu_ 4       pVP                  \        4       RRR4       \        P                  ! \        P                  4      pV P                  V. RO4       R#   + '       g   i     LJ; i)wr(   rl   N)r/   z	def f():
z    return 3
)
r   r   r   TESTFNr1   r   SOURCE_3r4   r>   r6   )r   r   r@   s   &  r   test_no_ending_newline%LineCacheTests.test_no_ending_newline   st    	(()*:*:;)""C'::bHHX ;""9#3#34 FG ;:s   B++B;	c                   . p\          FV  p\        P                  P                  \        V4      R ,           pVP                  V4       \        P                  ! V^4       KX  	  V P                  V. 4       V Uu. uF  qD\        P                  9  g   K  VNK  	  ppV P                  V. 4       \        P                  ! 4        V Uu. uF  qD\        P                  9   g   K  VNK  	  ppV P                  V. 4       R# u upi u upi )rk   N)rt   ru   rv   r)   rw   appendr4   r5   assertNotEqualcacher6   
clearcache)r   cachedrx   ry   fncached_emptys   &     r   test_clearcacheLineCacheTests.test_clearcache   s    Eww||K7%?HMM(#h*  	FB'%+IVr/HVIr* 	%+EVrY__/DVEr* J
 Fs   9C>C>D"Dc                X   \         P                  p\        P                  R ,           pV P	                  \        P
                  V4       \        VRRR7      ;_uu_ 4       pVP                  \        4       RRR4       V! V^4       . p\        VRR7      ;_uu_ 4       p\        V4       F4  w  rVV P                  Wa! W%^,           4      4       VP                  V4       K6  	  RRR4       \        VRRR7      ;_uu_ 4       pVP                  \        4       RRR4       \         P                  ! R4       \        V4       F#  w  rVV P                  Wa! W%^,           4      4       K%  	  \         P                  ! V4       \        VRR7      ;_uu_ 4       p\        V4       F4  w  rVV P                  Wa! W%^,           4      4       VP                  V4       K6  	  RRR4       R#   + '       g   i     ELr; i  + '       g   i     EL; i  + '       g   i     L; i  + '       g   i     R# ; i)rk   r~   r(   rl   Ndummy)r4   r5   r   r   r   r   r1   r   SOURCE_1r2   r6   r   SOURCE_2
checkcache)r   r5   source_namesourcesource_listr7   r8   s   &      r   test_checkcacheLineCacheTests.test_checkcache   s   ##&&.	((+6+sW55LL" 6Q +00F(0  w{AI'FG""4(  1 1
 +sW55LL" 6 	W% %[1KET7;	#BC 2 	[)+00F(0  w{AI'FG""4(  1 10/ 655 100
 65 100s2   GAG1>HAHG.	1H	H	H)	c                   \         P                  ! \        4      p\         P                  ! 4        V P	                  R \         P
                  ! \        R4      4       V P	                  V\         P                  ! \        4      4       R# FN)r4   r>   ro   r   r6   	lazycacher?   s   & r   test_lazycache_no_globals(LineCacheTests.test_lazycache_no_globals   sV    ""8,	 3 3Hd CD	 2 28 <=r$   c                   \         P                  ! \        \        4       4      p\         P                  ! 4        V P                  R \         P                  ! \        \        4       4      4       V P                  ^\        \         P                  \        ,          4      4       V P                  V\         P                  ! \        4      4       R# )TN)	r4   r>   NONEXISTENT_FILENAMEglobalsr   r6   r   lenr   r?   s   & r   test_lazycache_smoke#LineCacheTests.test_lazycache_smoke   s    ""#7C)%%&:GIF	HC	0D EFG 		 2 23G HIr$   c                n   \         P                  ! 4        \         P                  ! \        \	        4       4      p\         P                  ! 4        \         P                  ! \        4       \         P
                  ! \        \	        4       4       V P                  V\         P                  ! \        4      4       R # r=   )r4   r   r>   r   r   r   r6   updatecacher?   s   & r   *test_lazycache_provide_after_failed_lookup9LineCacheTests.test_lazycache_provide_after_failed_lookup   sm    ""#7C/00')<	 5 56J KLr$   c                    \         P                  ! 4        \         P                  ! \        \	        4       4       \         P
                  ! 4        R # r=   )r4   r   r   r   r   r   rG   s   &r   test_lazycache_check#LineCacheTests.test_lazycache_check   s-    0')<r$   c                    \         P                  ! 4        V P                  R \         P                  ! R\	        4       4      4       V P                  R \         P                  ! R\	        4       4      4       R# )Fr   z<foo>N)r4   r   r6   r   r   rG   s   &r   test_lazycache_bad_filename*LineCacheTests.test_lazycache_bad_filename   sL    	 3 3B	 BC	 3 3GWY GHr$   c                D   \         P                  ! 4        \         P                  ! \        \	        4       4      pV P                  R \         P                  ! \        \	        4       4      4       V P                  ^\        \         P                  \        ,          4      4       R# r   )	r4   r   r>   r   r   r6   r   r   r   r?   s   & r   test_lazycache_already_cached,LineCacheTests.test_lazycache_already_cached   si    ""#7C 4gi@	B 	C	0D EFGr$   c                   \         P                  ! \        4      pV P                  V4       R  p\        P
                  ! \         RV4      ;_uu_ 4        \         P                  ! \        4      pRRR4       V P                  XV4       \         P                  ! 4        \        P
                  ! \         RV4      ;_uu_ 4        \         P                  ! \        4      pRRR4       V P                  X. 4       V P                  \         P                  ! \        4      V4       R#   + '       g   i     L; i  + '       g   i     La; i)c                      \         hr=   )MemoryError)argskwargss   *,r   raise_memoryerror:LineCacheTests.test_memoryerror.<locals>.raise_memoryerror   s    r$   r   N)r4   r>   ro   
assertTruer   	swap_attrr6   r   )r   r@   r   lines2lines3s   &    r   test_memoryerrorLineCacheTests.test_memoryerror   s    ""8,	y-9JKK''1F L'y-9JKK''1F L$++H5u= LK
 LKs   D"D5"D2	5E	c                    R pR\        4       \        4       3 FD  p\        P                  ! 4        RRRV/pV P	                  \        P
                  ! W4      . 4       KF  	  \        P                  ! 4        RRR\        4       /pV P	                  \        P
                  ! W4      R.4       R\        4       \        R\        4       4      3 FO  p\        P                  ! 4        RRR\        4       RV/pV P	                  \        P
                  ! W4      R.4       KQ  	  \        P                  ! 4        \        R\        4       4      pRRRVP                  RV/pV P	                  \        P
                  ! W4      R	.4       R# )
zscheme://pathNr   za.b.c
__loader__zsource for a.b.c
r   __spec__zx.y.zzsource for x.y.z
)	objectrd   r4   r   r6   r>   r\   r   loader)r   ry   r   module_globalsspecs   &    r   test_loaderLineCacheTests.test_loader  sJ   "VX~'78F  "('<HNY//I2N 9
 	$g|Z\J++HE./	1 68ZJL%ABD  "('<($0NY//I235	 C 	':<0$g|T[[$d,++HE./	1r$   c                   R pR\         /p\        P                  ! V4      pV P                  V. 4       \        P                  ! W4      pV P	                  \        V4      ^ 4       \        P                  ! V4      pV P                  WE4       \        P                  ! 4        \        P                  ! V4      pV P                  V. 4       R# )z<frozen fakemodule>__file__N)ro   r4   r>   r6   assertGreaterr   r   )r   ry   r   r{   r@   lines_cacheds   &     r   test_frozenLineCacheTests.test_frozen  s    ($h/""8,#""8<3u:q) ))(3-""8,#r$   c           	        R\         R ,           R3RRR,          R33 EF$  w  rV P                  RV 24      ;_uu_ 4        \        P                  ! 4        \        P                  ! V4      pV P                  V. 4       V P                  V\        P                  4       RRR4       VR3RV3W33 F  w  rEV P                  R	V 2WER
7      ;_uu_ 4        \        P                  ! 4        ^ R. V3\        P                  V&   \        P                  ! V4       V P                  V\        P                  4       RRR4       K  	  EK'  	  \        P                  ! 4        R#   + '       g   i     L; i  + '       g   i     K  ; i) z filename with embedded NUL bytesai@B zvery long filenamezupdatecache: Nokkeyzcheckcache: )r   r_   i  )r   zNUL bytes filename)u	   .pyz'surrogate codes (MUSICAL SYMBOL G CLEF))	r   subTestr4   r   r   assertListEqualassertNotInr   r   )r   r   descr@   r   r_   s   &     r   test_invalid_names!LineCacheTests.test_invalid_names)  sK   * BC K 9_23

JD dV455$$&!--d3$$UB/  y7	 6 $(,|!L\\L"7&) " > >((*,-tR+BIOOC(((-$$S)//:> > "M'

8 	# 65> > >s   AEA#E0	E-0Fc                    R p\        RV4      w  r#pV P                  V^ 4       V P                  VR4       V P                  VR4       R# )z1import linecache;assert len(linecache.cache) == 0z-cr$   N)r   r6   )r   cmdlineretcodestdoutstderrs   &    r   test_linecache_python_string+LineCacheTests.test_linecache_python_stringH  sH    E"24"A!$%%r$   rK   N)r   r   r   r   r:   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    rL   s   @r   rh   rh   t   s[     $2H+")B>JM
I
H>16$>& &r$   rh   c                   D   a a ] tR tRt oV 3R ltR tR tR tRtVt	V ;t
# )LineCacheInvalidationTestsiO  c                  < \         SV `  4        \        P                  ! 4        \        P
                  R ,           V n        \        P
                  R,           V n        \        P
                  R,           V n        V P                  V P                  V P                  3 F  pV P                  \        P                  V4       \        VRRR7      ;_uu_ 4       pVP                  RV R24       RRR4       V P                  V\        P                  4       \        P                  ! V4       V P!                  V\        P                  4       K  	  \"        P$                  ! V P                  4       \        V P                  RRR7      ;_uu_ 4       pVP                  R	4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)
z.1z.2z.3r~   r(   rl   zprint("I am z")Nzprint("was modified"))r   r   r4   r   r   r   deleted_filemodified_fileunchanged_filer   r   r1   r   r   r   r>   assertInru   remove)r   fnamer   r   s   &  r   r    LineCacheInvalidationTests.setUpP  sD   %,,t3&--4'..5''(())+E OOI,,e4eS733v|E7"56 4 UIOO4u%MM%1+ 			$##$$$$cG<<LL01 =< 43 =<<s   F)F<)F9<G	c                B   \         P                  ! V P                  4       V P                  V P                  \         P                  4       V P                  V P                  \         P                  4       V P                  V P                  \         P                  4       R # r=   )r4   r   r   r   r   r   r   r   rG   s   &r    test_checkcache_for_deleted_file;LineCacheInvalidationTests.test_checkcache_for_deleted_filef  s`    T../**IOO<d(()//:d))9??;r$   c                B   \         P                  ! V P                  4       V P                  V P                  \         P
                  4       V P                  V P                  \         P
                  4       V P                  V P                  \         P
                  4       R # r=   )r4   r   r   r   r   r   r   r   rG   s   &r   !test_checkcache_for_modified_file<LineCacheInvalidationTests.test_checkcache_for_modified_filel  s`    T//0d''9++Y__=d))9??;r$   c                ,   \         P                  ! 4        V P                  V P                  \         P                  4       V P                  V P
                  \         P                  4       V P                  V P                  \         P                  4       R # r=   )r4   r   r   r   r   r   r   r   rG   s   &r   !test_checkcache_with_no_parameter<LineCacheInvalidationTests.test_checkcache_with_no_parameterr  sZ    **IOO<++Y__=d))9??;r$   )r   r   r   )r   r   r   r   r   r   r   r   r   r    r!   r"   s   @@r   r   r   O  s     2,<<< <r$   r   __main__)+r4   unittestos.pathru   r   r0   importlib.machineryr   testr   test.supportr   test.support.script_helperr   r   ro   r   rs   rp   rv   dirname	TEST_PATHsplitrt   rw   r   r   r   r	   r&   rD   TestCaserN   rR   rU   rW   rZ   r\   rd   rh   r   r   mainrK   r$   r   <module>r      sl        *  " 7 *, 
GGOOH%	



!ggooh'
: :08 0*A( A($h&7&7 (*H,=,= <&(9(9 <$2H4E4E $2!4h6G6G 2( (
 
Y&X&& Y&v'<!2!2 '<T zMMO r$   