
    0hh?                     `   S SK r S SKJrJrJrJr  S SKJrJrJ	r	  S SK
Jr  S SKrS SKrS SKrS SKrS SKr " S S\ R"                  5      rSr " S S	5      r " S
 S\ R"                  5      r " S S\\ R"                  5      r " S S\\ R"                  5      r\S:X  a  \ R2                  " 5         gg)    N)script_helpercaptured_stdoutrequires_subprocessrequires_resource)TESTFNunlinkrmtree)unloadc                       \ rS rSrS rS rS rS rS rS r	\
" 5       S 5       rS	 rS
 rS rS rS rS rS rS rS rSrg)MiscSourceEncodingTest   c                     SSK Jn  U R                  [        U5      S5        U H:  u  p#n[        R
                  " SU-   5      nU R                  XER                  5        M<     g )Nr   )test_strings   ztest.encoded_modules.module_)test.encoded_modulesr   assertGreaterEquallen	importlibimport_moduleassertEqualtest)selfr   modnameencodingteststrmods         B/opt/python-3.13.8/usr/lib/python3.13/test/test_source_encoding.pytest_import_encoded_module1MiscSourceEncodingTest.test_import_encoded_module   sX    5L 115*6&Gw)) +46=+> ?CWhh/ +7    c                 b    [        SSS5      n0 n[        X5        U R                  US   S5        g )Ns   
# coding: utf-8
u = 'ó'
dummyexecu   ócompiler#   r   r   cds      r   test_compilestring)MiscSourceEncodingTest.test_compilestring   s1    :GVLQ
3(r    c                      [        SSS5        U R                  5         g ! [         a5  nU R                  UR                  R                  S5      S5         S nAg S nAff = f)Ns   # coding: cp932
print 'N'r"   r#   
u   print '年')r'   failSyntaxErrorr   textrstrip)r   vs     r   test_issue2301%MiscSourceEncodingTest.test_issue2301   sT    	8'6J IIK  	DQVV]]402BCC	Ds     
A+AAc                 b    [        SSS5      n0 n[        X5        U R                  US   S5        g )Nu   # coding=latin-1
Æ = 'Æ'r"   r#      Ær&   r(   s      r   test_issue4626%MiscSourceEncodingTest.test_issue4626'   s1    97FKQ
6F+r    c                    [        SSS5      n0 n[        X5        U R                  US   US   5        U R                  [        US   5      [        US   5      5        U R                  [	        US   5      [	        US   5      5        g )Nu   a, b = '𐄏', '\U0001010F'r"   r#   ab)r'   r#   r   r   asciir(   s      r   test_issue3297%MiscSourceEncodingTest.test_issue3297-   su    8'6JQ
33(QsVc!C&k2qvaf6r    c                     U R                  [        [        S5        U R                  [        [        S5        U R                  [        [        S5        g )Ns    s    s    )assertRaisesr0   evalr   s    r   test_issue7820%MiscSourceEncodingTest.test_issue78205   s>     	+t[9 	+t[9 	+t_=r    c                 l   [         R                  " [        R                  [        R
                  R                  [        R
                  R                  [        5      SS5      /[         R                  S9nUR                  5       S   nU R                  UR                  S5        U R                  SU5        g )Ntokenizedatazcoding20731.py)stderrr   r   s   SyntaxError)
subprocessPopensys
executableospathjoindirname__file__PIPEcommunicater   
returncodeassertNotIn)r   suberrs      r   
test_20731!MiscSourceEncodingTest.test_20731C   s    RWW__X%>%3%57 8  *	0
 oo"+-r    c                    [        SSS5        [        SSS5        [        SSS5        U R                  [        S5         [        SSS5        S S S 5        U R                  [        S5         [        S	SS5        S S S 5        U R                  [        S
5         [        S	SS5        S S S 5        U R                  [        S5         [        SSS5        S S S 5        U R                  [        S
5         [        SSS5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nn= f! , (       d  f       g = f)Ns   # -*- coding: iso-8859-15 -*-
r"   r#   s   ﻿
s   ﻿# -*- coding: utf-8 -*-
fakes   # -*- coding: fake -*-
ziso-8859-15s!   ﻿# -*- coding: iso-8859-15 -*-
BOMs   ﻿# -*- coding: fake -*-
)r'   assertRaisesRegexr0   rC   s    r   test_error_message)MiscSourceEncodingTest.test_error_messageN   s
   2GVD!7F38'6J##K8/&A 9##K?BV% @ ##K7BV% 8 ##K8;WfM 9##K7;WfM 87 98?? 87 9877s;   D*DD'D8.E	
D
D$'
D58
E	
Ec                 *    SnU R                  U5        g )N
bad_codingverify_bad_moduler   module_names     r   test_bad_coding&MiscSourceEncodingTest.test_bad_coding_   s    "{+r    c                 *    SnU R                  U5        g )Nbad_coding2rb   rd   s     r   test_bad_coding2'MiscSourceEncodingTest.test_bad_coding2c   s    #{+r    c                 t   U R                  [        [        SU-   5        [        R                  R                  [        5      n[        R                  R                  USUS-   5      n[        US5       nUR                  5       nS S S 5        U R                  [        [        WUS5        g ! , (       d  f       N,= f)Nztest.tokenizedata.rG   .pyrbr#   )rA   r0   
__import__rM   rN   rP   rQ   rO   openreadr'   )r   re   rN   filenamefpbytess         r   rc   (MiscSourceEncodingTest.verify_bad_moduleg   s    +z3G+3UVwwx(77<<nkE6IJ(D!RGGIE "+wxH "!s   2B))
B7c                 J    0 n[        SU5        U R                  US   S5        g )Ns   # coding: cp949
a = ""
r;   u   ぇ)r#   r   )r   r*   s     r   test_exec_valid_coding-MiscSourceEncodingTest.test_exec_valid_codingp   s&    1153*r    c                    [        [        5        [        S-   n[        USSS9n[        R                  R                  S[        R                  5         U   UR                  S5        UR                  S5        UR                  S5        UR                  S	S
-  5        S S S 5        [        R                  " 5         [        [        5        [        R                  S	 [        U5        [        US-   5        [        US-   5        [        [        5        [        S5        g ! , (       d  f       N= f! [        R                  S	 [        U5        [        US-   5        [        US-   5        [        [        5        [        S5        f = f)Nrm   wcp1252)r   r   z# -*- coding: cp1252 -*-
z'''A short string
z'''
z'A very long string %s'
  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXr)   o__pycache__)r
   r   rp   rK   rN   insertrM   curdirwriter   invalidate_cachesro   r   r	   )r   rr   fs      r   test_file_parse&MiscSourceEncodingTest.test_file_parseu   s    	vE>32299%	"45-. 3zBC	  '')v88c>"8c>"6N=!  88c>"8c>"6N=!s&   D- AD,D- 
D*&D- -AFc                 <   SR                  S5      nU R                  [        5       n[        USS5        S S S 5        SnU R	                  WR
                  R                  S   R                  U5      UR
                  R                  S   S9  g ! , (       d  f       N^= f)Nu   # coding: ascii
☃zutf-8z<string>r#   zN'ascii' codec can't decode byte 0xe2 in position 16: ordinal not in range(128)r   )msg)encoderA   r0   r'   
assertTrue	exceptionargs
startswith)r   inputr)   expecteds       r   test_error_from_string-MiscSourceEncodingTest.test_error_from_string   s    .55g>{+qE:v. ,/((+66x@KK,,Q/ 	 	1	 ,+s   B
Bc                 p   [        [        S5       nUR                  S5        S S S 5         [        R                  " [        5      u  p#nU R                  US5        U R                  SU5        [        R                  " [        5        g ! , (       d  f       Nk= f! [        R                  " [        5        f = f)Nwbs   print("""
""")
r   s#   Non-UTF-8 code starting with '\xb1')	rp   r   r   r   assert_python_failureassertGreaterassertInrM   r   )r   fdretcodestdoutrH   s        r   test_file_parse_error_multiline6MiscSourceEncodingTest.test_file_parse_error_multiline   s}    &$2HH-.  	&3&I&I&&Q#GVw*MMA6JIIf   IIfs   BAB 
BB5c                    Sn[        [        S5       nUR                  SR                  U5      5        S S S 5         [        R
                  " [        5      u  p4nU R                  SU5        U R                  UR                  UR                  5       5      S5        [        R                  " [        5        g ! , (       d  f       N= f! [        R                  " [        5        f = f)Nz0b1and 2rz   z{}s$   SyntaxWarning: invalid binary literar   )rp   r   r   formatr   assert_python_okr   r   countr   rM   r   )r   sourcer   r   r   rH   s         r   ,test_tokenizer_fstring_warning_in_first_lineCMiscSourceEncodingTest.test_tokenizer_fstring_warning_in_first_line   s    &#"HHT[[() 	&3&D&DV&L#GVMMA6JV\\&--/:A>IIf  IIfs   !B6AC 6
CC# N)__name__
__module____qualname____firstlineno__r   r+   r4   r8   r>   rD   r   rX   r^   rf   rj   rc   rw   r   r   r   r   __static_attributes__r   r    r   r   r      sf    0),7> . .N",,I+
"01	r    r   i    c                       \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rSrg)AbstractSourceEncodingTest   c                 ,    SnU R                  US5        g )Ns   print(ascii("ä"))
   '\xe4'check_script_outputr   srcs     r   test_default_coding.AbstractSourceEncodingTest.test_default_coding   s    ,  j1r    c                 ,    SnU R                  US5        g )Ns&   #coding:iso8859-15
print(ascii("ä"))
   '\xc3\u20ac'r   r   s     r   test_first_coding_line1AbstractSourceEncodingTest.test_first_coding_line       -  &67r    c                 ,    SnU R                  US5        g )Ns8   #!/usr/bin/python
#coding:iso8859-15
print(ascii("ä"))
r   r   r   s     r   test_second_coding_line2AbstractSourceEncodingTest.test_second_coding_line       - 	  &67r    c                 ,    SnU R                  US5        g )Ns'   
#coding:iso8859-15
print(ascii("ä"))
r   r   r   s     r   (test_second_coding_line_empty_first_lineCAbstractSourceEncodingTest.test_second_coding_line_empty_first_line   r   r    c                 ,    SnU R                  US5        g )Ns:   #!/usr/bin/python
#
#coding:iso8859-15
print(ascii("ä"))
r   r   r   s     r   test_third_coding_line1AbstractSourceEncodingTest.test_third_coding_line   s    - 	  j1r    c                 ,    SnU R                  US5        g )Ns5   #coding:iso8859-15
#coding:latin1
print(ascii("ä"))
r   r   r   s     r   test_double_coding_line2AbstractSourceEncodingTest.test_double_coding_line   s    - 	  &67r    c                 ,    SnU R                  US5        g )Ns4   #coding:iso8859-15 coding:latin1
print(ascii("ä"))
r   r   r   s     r   test_double_coding_same_line7AbstractSourceEncodingTest.test_double_coding_same_line   r   r    c                 ,    SnU R                  US5        g )Ns0   #coding:utf-8
#coding:latin1
print(ascii("ä"))
r   r   r   s     r   test_double_coding_utf82AbstractSourceEncodingTest.test_double_coding_utf8       - 	  j1r    c                 F    SS[         -  -   S-   nU R                  US5        g )N   #    %   coding:iso8859-15
print(ascii("ä"))
r   BUFSIZr   r   s     r   test_long_first_coding_line6AbstractSourceEncodingTest.test_long_first_coding_line   s+    d6k! %- -  &67r    c                 F    SS[         -  -   S-   nU R                  US5        g )Ns   #!/usr/bin/python
#r   r   r   r   r   s     r   test_long_second_coding_line7AbstractSourceEncodingTest.test_long_second_coding_line   s2    6k"%-- 	  &67r    c                 F    SS[         -  -   S-   nU R                  US5        g )Ns   #coding:iso-8859-15r      
print(ascii("ä"))
r   r   r   s     r   test_long_coding_line0AbstractSourceEncodingTest.test_long_coding_line   s+    %V3 7- -  &67r    c                 F    SS[         -  -   S-   nU R                  US5        g )Ns   #coding:iso-8859-1-   xr   s
   '\xc3\xa4'r   r   s     r   test_long_coding_name0AbstractSourceEncodingTest.test_long_coding_name   s*    %V3 7- -  n5r    c                     SS[         S-  -  -   S-   nU R                  US5        SS[         S-  -  -   S-   nU R                  US5        g )Nr      ä      
r    s   # r   r   s     r   test_long_first_utf8_line4AbstractSourceEncodingTest.test_long_first_utf8_line   sR    [&!),,u4  c*k619--5  c*r    c                     SS[         S-  -  -   S-   nU R                  US5        SS[         S-  -  -   S-   nU R                  US5        g )Ns   
#r   r   r   r    s   
# r   r   s     r   test_long_second_utf8_line5AbstractSourceEncodingTest.test_long_second_utf8_line   sR    {FAI..6  c*VQY//%7  c*r    c                 ,    SnU R                  US5        g )Ns)   #coding:iso-8859-15 
print(ascii("ä"))
r   r   r   s     r   test_first_non_utf8_coding_line:AbstractSourceEncodingTest.test_first_non_utf8_coding_line  r   r    c                 ,    SnU R                  US5        g )Ns;   #!/usr/bin/python
#coding:iso-8859-15 
print(ascii("ä"))
r   r   r   s     r    test_second_non_utf8_coding_line;AbstractSourceEncodingTest.test_second_non_utf8_coding_line	  r   r    c                 ,    SnU R                  US5        g )Ns   ﻿print(ascii("ä"))
r   r   r   s     r   test_utf8_bom(AbstractSourceEncodingTest.test_utf8_bom  s    8  j1r    c                 ,    SnU R                  US5        g )Ns   ﻿#ä
#ä
print(ascii("ä"))
r   r   r   s     r   test_utf8_bom_utf8_comments6AbstractSourceEncodingTest.test_utf8_bom_utf8_comments  r   r    c                 ,    SnU R                  US5        g )Ns$   ﻿#coding:utf-8
print(ascii("ä"))
r   r   r   s     r   "test_utf8_bom_and_utf8_coding_line=AbstractSourceEncodingTest.test_utf8_bom_and_utf8_coding_line  s    -  j1r    c                 ,    SnU R                  US5        g )Ns&   #coding: utf8
#
#
raise RuntimeError
s6   'utf-8' codec can't decode byte|encoding problem: utf8check_script_errorr   s     r   %test_utf8_non_utf8_comment_line_error@AbstractSourceEncodingTest.test_utf8_non_utf8_comment_line_error  s     ' 	+	,r    c                 ,    SnU R                  US5        g )Ns   print(ascii("""
"""))
s   '\n'r   r   s     r   	test_crlf$AbstractSourceEncodingTest.test_crlf'  s    ,  h/r    c                 ,    SnU R                  US5        g )Ns   print(ascii("""
"""))
s   '\n\n'r   r   s     r   test_crcrlf&AbstractSourceEncodingTest.test_crcrlf+  s    .  j1r    c                 ,    SnU R                  US5        g )Ns   print(ascii("""
"""))
   '\n\n\n'r   r   s     r   test_crcrcrlf(AbstractSourceEncodingTest.test_crcrcrlf/  s    0  l3r    c                 ,    SnU R                  US5        g )Ns,   #coding:iso-8859-1
print(ascii("""
"""))
r  r   r   s     r   test_crcrcrlf2)AbstractSourceEncodingTest.test_crcrcrlf23  s    1  l3r    c                 ,    SnU R                  US5        g )Ns)   #coding:iso8859-15 


raise RuntimeError
/   source code (string )?cannot contain null bytesr   r   s     r   test_nul_in_first_coding_line8AbstractSourceEncodingTest.test_nul_in_first_coding_line8      ' 	%XYr    c                 ,    SnU R                  US5        g )Ns:   #!/usr/bin/python
#coding:iso8859-15 

raise RuntimeError
r
  r   r   s     r   test_nul_in_second_coding_line9AbstractSourceEncodingTest.test_nul_in_second_coding_line?  r  r    r   N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r   r   r    r   r   r      s    28
88288
28
88
6
++8
8222
,0244
ZZr    r   c                       \ rS rSr\R
                  " \R                  R                  S5      (       + S5      \	" S5      S 5       5       r
Srg)UTF8ValidatorTestiG  linuxz&Too slow to run on non-Linux platformscpuc                   ^ ^^ Sm[         mT R                  [        T5        UU U4S jn[        SS5       Vs/ s H  n[	        U/5      PM     nn[        SS5       Vs/ s H  n[	        U/5      PM     nn[        SS5       Vs/ s H  n[	        U/5      PM     nnX4-   U-   [        SS	5       Vs/ s H  n[	        U/5      PM     sn-   nU H  nU" U5        M     U H  nU H  n	U" X-   5        M     M     U H+  nUS S
  H  n
US S
  H  nU" X-   S-   U-   5        M     M!     M-     [        SS5       Vs/ s H  n[	        U/5      PM     sn H  n	U" SU	-   S-   5        U" SU	-   S-   5        M!     [        SS5       Vs/ s H  n[	        U/5      PM     sn H  n	U" SU	-   S-   5        U" SU	-   S-   5        M!     [        SS5       Vs/ s H  n[	        U/5      PM     sn H  n	U" SU	-   S-   5        U" SU	-   S-   5        M!     [        SS5       Vs/ s H  n[	        U/5      PM     sn H  n	U" SU	-   S-   5        U" SU	-   S-   5        M!     g s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf )Ns   


"%s"
c                   > [        TS5       nUR                  TU -  5        S S S 5        [        R                  " T5      u  p#nTR	                  US5        TR                  SU5        TR                  SU5        g ! , (       d  f       N^= f)Nr   r   s   Non-UTF-8 code starting withs	   on line 4)rp   r   r   r   r   r   )contentrs   rcr   rH   fnr   templates        r   check2UTF8ValidatorTest.test_invalid_utf8.<locals>.check\  sp    b$2G+,  !.!D!DR!HB ##B*MM96BMM,/  s   A;;
B	                                             s   s      )r   
addCleanupr   rangert   )r   r  xcontinuation_bytesinvalid_2B_seq_start_bytesinvalid_4B_seq_start_bytesinvalid_start_bytesbytesbcbcb1cb3r  r  s   `           @@r   test_invalid_utf8#UTF8ValidatorTest.test_invalid_utf8H  s    ##	0 38d2CD2CQeQCj2CD:?d:K%L:KQeQCj:K"%L:?d:K%L:KQeQCj:K"%L;&'>CD%>P)Q>P%*>P)QR 	
 (D$K ( -B(bg ) - -B)"1--bq1C"&.,- 2 . -
 (-T4'89'8!5!:'89B'"*W$%'"*W$% : (-T4'89'8!5!:'89B'"*W$%'"*W$% : (-T4'89'8!5!:'89B'"*[()'"*[() : (-T4'89'8!5!:'89B'"*[()'"*[() :A E%L%L *R : : : :s/   III0I!7I&I+I0I5r   N)r   r   r   r   unittestskipIfrK   platformr   r   r9  r   r   r    r   r  r  G  sA    __0099=?u>* ?>*r    r  c                        \ rS rSrS rS rSrg)BytesSourceEncodingTesti  c                     [        5        n[        U5        S S S 5        WR                  5       R                  S5      nU R	                  UR                  5       U5        g ! , (       d  f       NN= f)Nlatin1)r   r#   getvaluer   r   r2   )r   r   r   r   outs        r   r   +BytesSourceEncodingTest.check_script_output  sL    &I oo&&x0x0 s   A
A-c                     U R                  [        UR                  5       5       n[        U5        S S S 5        g ! , (       d  f       g = f)N)r]   r0   decoder#   )r   r   r   cms       r   r   *BytesSourceEncodingTest.check_script_error  s/    ##K1BCrI DCCs	   :
Ar   Nr   r   r   r   r   r   r   r   r    r   r?  r?    s    1r    r?  c                        \ rS rSrS rS rSrg)FileSourceEncodingTesti  c                    [         R                  " 5        n[        R                  R	                  US5      n[        US5       nUR                  U5        S S S 5        [        R                  " U5      nS S S 5        U R                  WR                  R                  5       U5        g ! , (       d  f       NW= f! , (       d  f       NJ= f)Ntest.pyr   )tempfileTemporaryDirectoryrM   rN   rO   rp   r   r   r   r   rC  r2   r   r   r   tmpdr  rs   ress          r   r   *FileSourceEncodingTest.check_script_output  s    ((*ddI.Bb$2  004C	 +
 	)84   +*s#   -B7B&B7&
B4	0B77
Cc                    [         R                  " 5        n[        R                  R	                  US5      n[        US5       nUR                  U5        S S S 5        [        R                  " U5      nS S S 5        U R                  WR                  R                  5       R                  5       S   SU-   5        g ! , (       d  f       Nk= f! , (       d  f       N^= f)NrM  r   s   SyntaxError.*?)rN  rO  rM   rN   rO   rp   r   r   r   assertRegexrW   r2   
splitlinesrP  s          r   r   )FileSourceEncodingTest.check_script_error  s    ((*ddI.Bb$2  55b9C	 +
 	)446r:<MPX<XY   +*s#   -CB:C:
C	C
Cr   NrI  r   r    r   rK  rK    s    5Zr    rK  __main__)r;  test.supportr   r   r   r   test.support.os_helperr   r   r	   test.support.import_helperr
   r   rM   rK   rI   rN  TestCaser   r   r   r  r?  rK  r   mainr   r    r   <module>r_     s     _ _ 9 9 -  	 
  `X.. `F 
RZ RZjB*)) B*J
8(:K:K 
Z79J9J Z& zMMO r    