
    h                        S SK r S SKJr  S SKrSSKJr  SSKJr  SSKJ	r	  SSK
Jr  / r\R                   HB  rSR                  \" S	5       V s/ s H  n \< U < 3PM     sn 5      r\R%                  \5        MD     S
R                  \5      r\" 5          " S S\ R&                  5      r\S:X  a  \ R,                  " 5         ggs  sn f )    N)StringIO   )Scanning)ModuleScope)StringParseContext)init_thread 
   
c                   &    \ rS rSrS rS rS rSrg)TestScanning   c                     [         R                  " S[        5      n[        [        5      n[	        S5      n[        SS S 5      n[         R                  " X!XCS9$ )Nz	fake codezfake contextfake_module)scopecontext)r   StringSourceDescriptorcoder   r   r   PyrexScanner)selfsourcebufr   r   s        \/var/www/fran/franai/venv/lib/python3.13/site-packages/Cython/Compiler/Tests/TestScanning.pymake_scannerTestScanning.make_scanner   sH    00dCtn$^4M46$$SOO    c                    U R                  5       nU R                  UR                  S5        U R                  UR                  S5        UR	                  5         U R                  UR                  S5        U R                  UR                  S5        UR
                  nU R                  USS  S5        UR                  5       nU R                  X!R
                  5        UR	                  5         U R                  X1R                  UR                  45        UR                  S:w  a"  UR	                  5         UR                  S:w  a  M"  / n/ n/ nUR	                  5         UR                  S:w  as  UR                  UR                  5        UR                  UR                  5        UR                  UR
                  5        UR	                  5         UR                  S:w  a  Ms  [        US S S2   US S S2   US S S2   5       H  u  pxn	UR                  XxU	5        M     Sn
UR                  S:w  a  U R                  UR                  XJ   5        U R                  UR                  XZ   5        U R                  UR
                  Xj   5        UR	                  5         U
S-  n
UR                  S:w  a  M  U R                  U
[        U5      5        g )	NIDENTa0a1   )r!      NEWLINEr   )r   assertEqualsysystringnextlast_token_position_tuplepeekappendzipput_backlen)r   scannera1posa2peekline_syline_systringline_posr&   r'   posns              r   test_put_back_positions$TestScanning.test_put_back_positions   sC   ##%W-))40W-))4011qrF+ A AB**g.>.>!?@ jjI%LLN jjI% jjI%NN7::&  !1!12OOG==>LLN	 jjI% "%DbDM=2.2"
B# R3/"

 jjI%WZZ4W--}/?@W>>LLLNFA jjI% 	CM*r   c                 	   U R                  5       n[        R                  " U5       nUR                  S:w  a"  UR	                  5         UR                  S:w  a  M"  S S S 5        U R                  W5        UR	                  5         U R                  UR                  S5        UR                  n[        R                  " U5       nUR                  S:w  aD  UR	                  5         UR                  S:X  a  UR                  S5        OUR                  S:w  a  MD  S S S 5        U R                  U5        U R                  UR                  S5        U R                  UR                  U5        UR	                  5         U R                  UR                  S5        UR	                  5         U R                  UR                  S5        [        R                  " U5       nUR                  S5        S S S 5        U R                  UR                  S5        UR	                  5         U R                  UR                  S5        UR                  UR                  peUR                  n[        R                  " U5         UR	                  5         UR                  UR                  pUR                  n
[        R                  " U5         [        R                  " U5         UR	                  5         UR	                  5         UR                  S	5        S S S 5        U R                  UR                  UR                  4X45        S S S 5        U R                  UR                  UR                  4X45        UR                  S
5        S S S 5        U R                  UR                  UR                  4XV45        [        R                  " U5         UR	                  5         UR	                  5         [        R                  " U5         UR	                  5         S S S 5        UR	                  5         UR                  S5        S S S 5        U R                  UR                  UR                  4XV45        g ! , (       d  f       GN= f! , (       d  f       GNc= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN{= f! , (       d  f       GNK= f! , (       d  f       N= f! , (       d  f       N= f)Nr#   b0b7zOh no not b7!b1b2z0Something has gone wrong with the current symbolb3OoopseeeOooops)r   r   tentatively_scanr&   r(   assertFalser%   r'   r)   error
assertTrue)r   r/   errorsr5   rD   sy1	systring1pos1sy2	systring2pos2s              r   test_tentatively_scan"TestScanning.test_tentatively_scanJ   s}   ##%&&w/6**	) **	) 0 	 ))40//&&w/6**	)##t+MM/2	 **	) 0 	))40::C@))40))40&&w/5MMLM 0))40))40 !W%5%5Y00&&w/LLN$ZZ)9)944D**73..w7LLNLLNMM'* 8   '**g.>.>!?#AQR 4 gjj'*:*:;c=MNMM%  0 	'**g&6&67#9IJ&&w/LLNLLN**73 4 LLNMM(# 0 	'**g&6&67#9IJi 0/ 0/ 0/ 87 43	 0/  43 0/s   1Q AQ2R0A
R::R(2R1R(4AR:=7S4S)S 
Q/2
R
R
R% R((
R7	2R::
S	
S	S
S+ N)__name__
__module____qualname____firstlineno__r   r7   rM   __static_attributes__rO   r   r   r   r      s    P++Z6Kr   r   __main__)unittestior   string r   Symtabr   TreeFragmentr   Errorsr   r   ascii_lowercasechjoinrangeliner+   TestCaser   rP   main)r6   s   0r   <module>rd      s          -   


 
 B88uRy9y!r1%y9:DKK ! yy lK8$$ lKb zMMO q :s   C
