
    <ej0                         	 d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZm	Z	 d dl
mZmZ  e              G d dej                  ZdS )    N)dedent)assert_python_ok)skip_if_missingtoolsdir)temp_cwdtemp_dirc                   r   e Zd Z	 ej                            edd          Zd Zd Z	d Z
d Z ej        ej                            d          d          d	             Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd  Z(d! Z)d" Z*d# Z+d$ Z,d% Z-d& Z.d'S )(Test_pygettexti18nzpygettext.pyc                     	 i }|                     d          D ]_}|r|                    d          r|                    d          }|                     dd          \  }}|                                ||<   `|S )N
)#msgidmsgstr":   )split
startswithstrip)selfdataheaderslinekeyvals         0/usr/lib/python3.11/test/test_tools/test_i18n.py
get_headerzTest_pygettext.get_header   s    HJJt$$ 	' 	'D 4??+BCC ::c??Dzz#a((HC99;;GCLL    c                    	 g }d}g }|                     d          D ]}|rk|                    d          r)|                    |                    d                     n-|                    d                    |                     g }d}o|                    d          rA|t          d          d          }|                    |                    d                     d}|r(|                    d                    |                     |S )NFr   r   zmsgid T)r   r   appendr   joinlen)r   r   msgidsreading_msgid	cur_msgidr   s         r   
get_msgidszTest_pygettext.get_msgids    s   K	JJt$$ 	4 	4D ??3'' $$TZZ__5555MM$))I"6"6777 "I$)Mx(( %CMMNN+  C111 $ 4dii	22333r   c                    	 d}t          d           5 }t          |dd          5 }|                    |           d d d            n# 1 swxY w Y   t          | j        d|           t          dd          5 }|                                }d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                     |          S )Nztest_docstrings.pywutf-8encodingz-Dmessages.pot)r   openwriter   scriptreadr'   )r   module_contentfilenamecwdfpr   s         r   extract_docstrings_from_strz*Test_pygettext.extract_docstrings_from_str8   s{   H'd^^ 	!shg666 )"((() ) ) ) ) ) ) ) ) ) ) ) ) ) )T[$999nw777 !2wwyy! ! ! ! ! ! ! ! ! ! ! ! ! ! !		! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! t$$$sW   B2AB2A	B2A	*B2:BB2B	B2"B	#B22B69B6c                    	 t          d           5 }t          | j                   t          dd          5 }|                                }d d d            n# 1 swxY w Y   |                     |          }|                     d|           |                     d|           |                     d|           |                     d|           |                     d|           |                     d	|           |                     d
|           |                     d|           |                     d|           d d d            d S # 1 swxY w Y   d S )Nr-   r*   r+   zProject-Id-VersionPOT-Creation-DatezPO-Revision-DatezLast-TranslatorzLanguage-TeamzMIME-VersionzContent-TypezContent-Transfer-EncodingzGenerated-By)r   r   r0   r.   r1   r   assertIn)r   r4   r5   r   headers        r   test_headerzTest_pygettext.test_headerC   s   	 d^^ 	2sT[)))nw777 !2wwyy! ! ! ! ! ! ! ! ! ! ! ! ! ! !__T**FMM.777MM-v666MM,f555MM+V444MM/6222MM.&111MM.&111MM5v>>>MM.&111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2s5   &EAEA	EA	 CEEEaixzbpo-29972: broken test on AIXc                    	 ddl m } t          d           5 }t          | j                   t	          dd          5 }|                                }d d d            n# 1 swxY w Y   |                     |          }|d         }|                    d          r|d t          d                    }|	                    |d           d d d            d S # 1 swxY w Y   d S )	Nr   )datetimer-   r*   r+   r8   z\nz%Y-%m-%d %H:%M%z)
r>   r   r   r0   r.   r1   r   endswithr#   strptime)r   r>   r4   r5   r   r:   creationDates          r   test_POT_Creation_Datez%Test_pygettext.test_POT_Creation_Date]   s    	J%%%%%%d^^ 	@sT[)))nw777 !2wwyy! ! ! ! ! ! ! ! ! ! ! ! ! ! !__T**F!"56L $$U++ :+Lc%jj[L9 l,>???	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@s5   &CACA"	"C%A"	&A#CCCc                     dD ]j}|                      |          5  |                     t          d|z                      }|                     d|           d d d            n# 1 swxY w Y   kd S )Nz	"""doc"""z
r'''doc'''zR'doc'zu"doc"zE                def foo(bar):
                    %s
                docsubTestr6   r   r9   r   rE   r$   s      r   test_funcdocstringz!Test_pygettext.test_funcdocstringp       B 	- 	-Cc"" - -99& B B ; ;   eV,,,- - - - - - - - - - - - - - -	- 	-   <A""A&	)A&	c                     |                      t          d                    }|                     d |D                        d S )Nz5        def foo(bar):
            b"""doc"""
        c                     g | ]}d |v |	S rE    .0r   s     r   
<listcomp>z;Test_pygettext.test_funcdocstring_bytes.<locals>.<listcomp>~       FFFEu~~%~~~r   r6   r   assertFalser   r$   s     r   test_funcdocstring_bytesz'Test_pygettext.test_funcdocstring_bytesy   S    11& : 3 3   	FFVFFFGGGGGr   c                     |                      t          d                    }|                     d |D                        d S )Nz5        def foo(bar):
            f"""doc"""
        c                     g | ]}d |v |	S rN   rO   rP   s     r   rR   z=Test_pygettext.test_funcdocstring_fstring.<locals>.<listcomp>   rS   r   rT   rV   s     r   test_funcdocstring_fstringz)Test_pygettext.test_funcdocstring_fstring   rX   r   c                     dD ]j}|                      |          5  |                     t          d|z                      }|                     d|           d d d            n# 1 swxY w Y   kd S )NrD   z@                class C:
                    %s
                rE   rF   rH   s      r   test_classdocstringz"Test_pygettext.test_classdocstring   rJ   rK   c                     |                      t          d                    }|                     d |D                        d S )Nz0        class C:
            b"""doc"""
        c                     g | ]}d |v |	S rN   rO   rP   s     r   rR   z<Test_pygettext.test_classdocstring_bytes.<locals>.<listcomp>   rS   r   rT   rV   s     r   test_classdocstring_bytesz(Test_pygettext.test_classdocstring_bytes   rX   r   c                     |                      t          d                    }|                     d |D                        d S )Nz0        class C:
            f"""doc"""
        c                     g | ]}d |v |	S rN   rO   rP   s     r   rR   z>Test_pygettext.test_classdocstring_fstring.<locals>.<listcomp>   rS   r   rT   rV   s     r   test_classdocstring_fstringz*Test_pygettext.test_classdocstring_fstring   rX   r   c                     dD ]j}|                      |          5  |                     t          d|z                      }|                     d|           d d d            n# 1 swxY w Y   kd S )NrD   z#                %s
                rE   rF   rH   s      r   test_moduledocstringz#Test_pygettext.test_moduledocstring   s    B 	- 	-Cc"" - -99& BB ; ;   eV,,,	- - - - - - - - - - - - - - -	- 	-rK   c                     |                      t          d                    }|                     d |D                        d S )Nz        b"""doc"""
        c                     g | ]}d |v |	S rN   rO   rP   s     r   rR   z=Test_pygettext.test_moduledocstring_bytes.<locals>.<listcomp>   rS   r   rT   rV   s     r   test_moduledocstring_bytesz)Test_pygettext.test_moduledocstring_bytes   S    11& : 3 3   	FFVFFFGGGGGr   c                     |                      t          d                    }|                     d |D                        d S )Nz        f"""doc"""
        c                     g | ]}d |v |	S rN   rO   rP   s     r   rR   z?Test_pygettext.test_moduledocstring_fstring.<locals>.<listcomp>   rS   r   rT   rV   s     r   test_moduledocstring_fstringz+Test_pygettext.test_moduledocstring_fstring   ri   r   c                 \    |                      d          }|                     d|           d S )Nz_("""doc""" r'str' u"ing")	docstring)r6   r9   rV   s     r   
test_msgidzTest_pygettext.test_msgid   s4    1102 2k6*****r   c                 n    |                      d          }|                     d |D                        d S )Nz_(b"""doc""")c                     g | ]}d |v |	S rN   rO   rP   s     r   rR   z3Test_pygettext.test_msgid_bytes.<locals>.<listcomp>   rS   r   r6   rU   rV   s     r   test_msgid_byteszTest_pygettext.test_msgid_bytes   >    11/BBFFVFFFGGGGGr   c                 n    |                      d          }|                     d |D                        d S )Nz_(f"""doc""")c                     g | ]}d |v |	S rN   rO   rP   s     r   rR   z5Test_pygettext.test_msgid_fstring.<locals>.<listcomp>   rS   r   rr   rV   s     r   test_msgid_fstringz!Test_pygettext.test_msgid_fstring   rt   r   c                 x    	 |                      t          d                    }|                     d|           d S )Nz9        def foo(bar: str):
            """doc"""
        rE   r6   r   r9   rV   s     r   !test_funcdocstring_annotated_argsz0Test_pygettext.test_funcdocstring_annotated_args   sG    A11& : 3 3   	eV$$$$$r   c                 x    	 |                      t          d                    }|                     d|           d S )Nz;        def foo(bar) -> str:
            """doc"""
        rE   ry   rV   s     r   #test_funcdocstring_annotated_returnz2Test_pygettext.test_funcdocstring_annotated_return   sG    H11& : 3 3   	eV$$$$$r   c                 x    	 |                      t          d                    }|                     d|           d S )Nz7        def foo(bar=()):
            """doc"""
        rE   ry   rV   s     r    test_funcdocstring_defvalue_argsz/Test_pygettext.test_funcdocstring_defvalue_args   sG    D11& : 3 3   	eV$$$$$r   c                     	 |                      t          d                    }|                     d|           |                     d|           |                     d|           d S )Nz        def foo1(bar: tuple=()) -> str:
            """doc1"""

        def foo2(bar: List[1:2]) -> (lambda x: x):
            """doc2"""

        def foo3(bar: 'func'=lambda x: x) -> {1: 2}:
            """doc3"""
        doc1doc2doc3ry   rV   s     r   !test_funcdocstring_multiple_funcsz0Test_pygettext.test_funcdocstring_multiple_funcs   ss    	 11& 	: 	3 	3 	 	 	ff%%%ff%%%ff%%%%%r   c                 x    	 |                      t          d                    }|                     d|           d S )Nz\        class D(L[1:2], F({1: 2}), metaclass=M(lambda x: x)):
            """doc"""
        rE   ry   rV   s     r   test_classdocstring_early_colonz.Test_pygettext.test_classdocstring_early_colon   sK    	 11& : 3 3   	eV$$$$$r   c                 v    |                      t          d                    }|                     d|           d S )Nz"        f"{_('foo bar')}"
        foo barry   rV   s     r   test_calls_in_fstringsz%Test_pygettext.test_calls_in_fstrings   D    11& : 3 3   	i(((((r   c                 v    |                      t          d                    }|                     d|           d S )Nz#        rf"{_('foo bar')}"
        r   ry   rV   s     r   test_calls_in_fstrings_rawz)Test_pygettext.test_calls_in_fstrings_raw   r   r   c                 v    |                      t          d                    }|                     d|           d S )Nz+        f"""{f'{_("foo bar")}'}"""
        r   ry   rV   s     r   test_calls_in_fstrings_nestedz,Test_pygettext.test_calls_in_fstrings_nested   r   r   c                 v    |                      t          d                    }|                     d|           d S )Nz&        f"{obj._('foo bar')}"
        r   ry   rV   s     r    test_calls_in_fstrings_attributez/Test_pygettext.test_calls_in_fstrings_attribute  r   r   c                 v    |                      t          d                    }|                     d|           d S )Nz*        f"{type(str)('foo bar')}"
        r   r6   r   assertNotInrV   s     r   (test_calls_in_fstrings_with_call_on_callz7Test_pygettext.test_calls_in_fstrings_with_call_on_call  sF    11& : 3 3   	F+++++r   c                 v    |                      t          d                    }|                     d|           d S )Nz6        f"{_('foo {bar}').format(bar='baz')}"
        	foo {bar}ry   rV   s     r   "test_calls_in_fstrings_with_formatz1Test_pygettext.test_calls_in_fstrings_with_format  sD    11& : 3 3   	k6*****r   c                     |                      t          d                    }|                     d |D                        d S )Nz%        f"{_(f'foo {bar}')}"
        c                     g | ]}d |v |	S )r   rO   rP   s     r   rR   zLTest_pygettext.test_calls_in_fstrings_with_wrong_input_1.<locals>.<listcomp>  s"    LLLE{e7K7K%7K7K7Kr   rT   rV   s     r   )test_calls_in_fstrings_with_wrong_input_1z8Test_pygettext.test_calls_in_fstrings_with_wrong_input_1  sS    11& : 3 3   	LLVLLLMMMMMr   c                 v    |                      t          d                    }|                     d|           d S )Nz        f"{_(1)}"
        r   r   rV   s     r   )test_calls_in_fstrings_with_wrong_input_2z8Test_pygettext.test_calls_in_fstrings_with_wrong_input_2  sF    11& : 3 3   	F#####r   c                     |                      t          d                    }|                     d|           |                     d|           d S )Nz%        f"{_('foo', 'bar')}"
        foobarr   rV   s     r   (test_calls_in_fstring_with_multiple_argsz7Test_pygettext.test_calls_in_fstring_with_multiple_args#  s\    11& : 3 3   	''''''''r   c                     |                      t          d                    }|                     d|           |                     d|           |                     d|           d S )Nz)        f"{_('foo', bar='baz')}"
        r   r   bazr   rV   s     r   'test_calls_in_fstring_with_keyword_argsz6Test_pygettext.test_calls_in_fstring_with_keyword_args*  sr    11& : 3 3   	'''''''''''r   c                     |                      t          d                    }|                     d|           |                     d|           d S )Nz*        f"{_(f'foo') + _('bar')}"
        r   r   )r6   r   r   r9   rV   s     r   5test_calls_in_fstring_with_partially_wrong_expressionzDTest_pygettext.test_calls_in_fstring_with_partially_wrong_expression2  sZ    11& : 3 3   	'''eV$$$$$r   c           	      b   	 d}d}d}t          d           5  t          d           5 }t          j        t          j                            |d                     t          t          j                            |dd          dd          5 }|                    d	|d
           d d d            n# 1 swxY w Y   t          j        t          j                            |d                     t          t          j                            |dd          dd          5 }|                    d	|d
           d d d            n# 1 swxY w Y   t          j        t          j                            |d                     t          t          j                            |dd          dd          5 }|                    d	|d
           d d d            n# 1 swxY w Y   t          | j	        |           t          dd          5 }|
                                }d d d            n# 1 swxY w Y   |                     d| d|           |                     d| d|           |                     ||           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )NzText to translate1zText to translate2zText to ignorepypkgzpymod.pyr)   r*   r+   z_()zpkg.pyz	pymod2.pyCVSz	pymod3.pyr-   zmsgid "r   )r   r   osmkdirpathr"   r.   r/   r   r0   r1   r9   r   )r   text1text2text3sdirsfiler5   r   s           r   test_files_listzTest_pygettext.test_files_list9  s   	 %$ d^^ 	* 	*Xd^^ 	*tHRW\\$00111bgll4*==s&( ( ( -+0OOOO,,,- - - - - - - - - - - - - - - HRW\\$11222bgll4;??&( ( ( -+0OOOO,,,- - - - - - - - - - - - - - - HRW\\$..///bgll4<<c&( ( ( -+0OOOO,,,- - - - - - - - - - - - - - - T[$///nw777 !2wwyy! ! ! ! ! ! ! ! ! ! ! ! ! ! !MM,E,,,d333MM,E,,,d333UD)))%	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*s   J$A$JB1%J1B55J8B59A&JE9JE		JE	A&J3GJGJ G!)J
H+J+H//J2H/3AJ J$J	J$J	J$$J(+J(N)/__name__
__module____qualname__r   r   r"   r   r0   r   r'   r6   r;   unittestskipIfsysplatformr   rB   rI   rW   r[   r]   r`   rc   re   rh   rl   ro   rs   rw   rz   r|   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rO   r   r   r
   r
      s|       )W\\(6>::F	 	 	  0	% 	% 	%2 2 24 X_S\,,U3346 6@ @6 6@"- - -H H HH H H- - -H H HH H H- - -H H HH H H+ + +
H H HH H H% % %% % %% % %& & &$% % %) ) )) ) )) ) )) ) ), , ,+ + +N N N$ $ $( ( (( ( (% % %* * * * *r   r
   )r   r   r   textwrapr   test.support.script_helperr   test.test_toolsr   r   test.support.os_helperr   r   TestCaser
   rO   r   r   <module>r      s    + 				 



        7 7 7 7 7 7 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5    B* B* B* B* B*X& B* B* B* B* B*r   