+
    Bi6                        R t ^ 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   ]PV                  ! 4        R# R# )&zTests for the linecache module 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)r3   getlinesr   r5   r)   r   liness   & r   test_getlines"GetLineTestsGoodData.test_getlinesE   s(    ""4>>2/r#   )r   )
r   r   r   r   r   r9   r@   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)r5   r3   r4   r   r   s   &r   r9    GetLineTestsBadData.test_getlineM   s#    **4>>1=rBr#   c                f    V P                  \        P                  ! V P                  4      . 4       R # r<   )r5   r3   r=   r   rF   s   &r   r@   !GetLineTestsBadData.test_getlinesP   s!    ++DNN;R@r#    N)r   r   r   r   r9   r@   r   r   r"   s   @r   rC   rC   J   s     CA Ar#   rC   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-   )r3   r=   r   r5   r>   s   & r   r@   EmptyFile.test_getlinesW   s(    ""4>>2'r#   rJ   N)r   r   r   r   r)   r@   r   r   rK   s   @r   rM   rM   T   s     I( (r#   rM   c                       ] tR t^\tR.tRtR# )SingleEmptyLiner.   rJ   Nr   r   r   r   r)   r   rJ   r#   r   rQ   rQ   \   s	    Ir#   rQ   c                       ] tR t^`t. ROtRtR# )GoodUnicoderJ   N)u   á
zb
zabcdef
u   ááááá
rR   rJ   r#   r   rT   rT   `   s    ;Ir#   rT   c                       ] tR t^ctRtRtR# )BadUnicode_NoDeclarations   
abcrJ   Nr   r   r   r   r   r   rJ   r#   r   rV   rV   c   s    #r#   rV   c                       ] tR t^ftRtRtR# )BadUnicode_WithDeclarations   # coding=utf-8
abcrJ   NrW   rJ   r#   r   rY   rY   f   s    1r#   rY   c                   &   a  ] tR t^jt o R tRtV tR# )
FakeLoaderc                    R V 2# )zsource for rJ   r   fullnames   &&r   
get_sourceFakeLoader.get_sourcek   s    XJ''r#   rJ   Nr   r   r   r   r_   r   r   rK   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<   rJ   r]   s   &&r   r_   NoSourceLoader.get_sourcep   s    r#   rJ   Nra   rK   s   @r   rc   rc   o   s      r#   rc   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   )r3   r4   r5   FILENAMEEMPTYassertRaises	TypeErrorINVALID_NAMEMODULESospathr(   MODULE_PATHr0   r1   r=   )r   r4   entryfilenamefiler6   r7   emptys   &       r   r9   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'   rk   N)r.   z	def f():
z    return 3
)
r   r   r   TESTFNr0   r   SOURCE_3r3   r=   r5   )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 )rj   N)rs   rt   ru   r(   rv   appendr3   r4   assertNotEqualcacher5   
clearcache)r   cachedrw   rx   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)rj   r}   r'   rk   Ndummy)r3   r4   r   r~   r   r   r0   r   SOURCE_1r1   r5   r   SOURCE_2
checkcache)r   r4   source_namesourcesource_listr6   r7   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)r3   r=   rn   r   r5   	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)	r3   r=   NONEXISTENT_FILENAMEglobalsr   r5   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<   )r3   r   r=   r   r   r   r5   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<   )r3   r   r   r   r   r   rF   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)r3   r   r5   r   r   rF   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   )	r3   r   r=   r   r   r5   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)r3   r=   rn   
assertTruer   	swap_attrr5   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
)	objectrc   r3   r   r5   r=   r[   r   loader)r   rx   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)rn   r3   r=   r5   assertGreaterr   r   )r   rx   r   rz   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   subTestr3   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   r5   )r   cmdlineretcodestdoutstderrs   &    r   test_linecache_python_string+LineCacheTests.test_linecache_python_stringH  sH    E"24"A!$%%r#   rJ   N)r   r   r   r   r9   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rK   s   @r   rg   rg   t   s[     $2H+")B>JM
I
H>16$>& &r#   rg   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'   rk   zprint("I am z")Nzprint("was modified"))r   r   r3   r   r   r~   deleted_filemodified_fileunchanged_filer   r   r0   r   r   r   r=   assertInrt   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<   )r3   r   r   r   r   r   r   r   rF   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<   )r3   r   r   r   r   r   r   r   rF   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<   )r3   r   r   r   r   r   r   r   rF   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__),__doc__r3   unittestos.pathrt   r   r/   importlib.machineryr   testr   test.supportr   test.support.script_helperr   r   rn   r   rr   ro   ru   dirname	TEST_PATHsplitrs   rv   r   r   r   r   r%   rC   TestCaserM   rQ   rT   rV   rY   r[   rc   rg   r   r   mainrJ   r#   r   <module>r      sm   &      *  " 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#   