Your IP : 216.73.216.213


Current Path : /opt/alt/python39/lib64/python3.9/test/test_tools/__pycache__/
Upload File :
Current File : //opt/alt/python39/lib64/python3.9/test/test_tools/__pycache__/test_i18n.cpython-39.pyc

a

XC?hV#�@spdZddlZddlZddlZddlmZddlmZddlm	Z	m
Z
ddlmZm
Z
e	�Gdd�dej�ZdS)	z%Tests to cover the Tools/i18n package�N)�dedent)�assert_python_ok)�skip_if_missing�toolsdir)�temp_cwd�temp_dirc@s�eZdZdZej�edd�Zdd�Z	dd�Z
dd	�Zd
d�Ze
�ej�d�d
�dd��Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Z d,d-�Z!d.S)/�Test_pygettextzTests for the pygettext.py toolZi18nzpygettext.pycCsNi}|�d�D]:}|r|�d�r"q|�d�}|�dd�\}}|��||<q|S)z: utility: return the header of a .po file as a dictionary �
)�#�msgidZmsgstr�"�:�)�split�
startswith�strip)�self�dataZheaders�line�key�val�r�>/opt/alt/python39/lib64/python3.9/test/test_tools/test_i18n.py�
get_headers
zTest_pygettext.get_headercCs�g}d}g}|�d�D]l}|rT|�d�r:|�|�d��n|�d�|��g}d}q|�d�r|td�d�}|�|�d��d}q|r�|�d�|��|S)z= utility: return all msgids in .po file as a list of strings Fr	rzmsgid NT)rr�appendr�join�len)rr�msgidsZ
reading_msgidZ	cur_msgidrrrr�
get_msgids s$

zTest_pygettext.get_msgidsc	Cs�d}td���}t|d��}|�|�Wd�n1s80Yt|jd|�td��}|��}Wd�n1sv0YWd�n1s�0Y|�|�S)z: utility: return all msgids extracted from module_content ztest_docstrings.pyN�wz-D�messages.pot)r�open�writer�script�readr)rZmodule_content�filename�cwd�fprrrr�extract_docstrings_from_str8s
(
Dz*Test_pygettext.extract_docstrings_from_strc	Cs�td���}t|j�td��}|��}Wd�n1s:0Y|�|�}|�d|�|�d|�|�d|�|�d|�|�d|�|�d|�|�d	|�|�d
|�|�d|�Wd�n1s�0YdS)z�Make sure the required fields are in the header, according to:
           http://www.gnu.org/software/gettext/manual/gettext.html#Header-Entry
        Nr zProject-Id-Version�POT-Creation-DatezPO-Revision-DatezLast-Translatorz
Language-TeamzMIME-VersionzContent-TypezContent-Transfer-EncodingzGenerated-By)rrr#r!r$r�assertIn)rr&r'r�headerrrr�test_headerCs


&
zTest_pygettext.test_headerZaixzbpo-29972: broken test on AIXc	Cs�ddlm}td���}t|j�td��}|��}Wd�n1sF0Y|�|�}|d}|�d�r~|dtd��}|�	|d�Wd�n1s�0YdS)z; Match the date format from xgettext for POT-Creation-Date r)�datetimeNr r)z\nz%Y-%m-%d %H:%M%z)
r-rrr#r!r$r�endswithr�strptime)rr-r&r'rr+ZcreationDaterrr�test_POT_Creation_Date]s


&

z%Test_pygettext.test_POT_Creation_Datec	CsVdD]L}|�|��.|�td|��}|�d|�Wd�q1sF0YqdS)N�z	"""doc"""z
r'''doc'''zR'doc'zu"doc"zE                def foo(bar):
                    %s
                �doc�ZsubTestr(rr*�rr2rrrr�test_funcdocstringps�z!Test_pygettext.test_funcdocstringcCs&|�td��}|�dd�|D��dS)Nz5        def foo(bar):
            b"""doc"""
        cSsg|]}d|vr|�qS�r2r��.0rrrr�
<listcomp>~�z;Test_pygettext.test_funcdocstring_bytes.<locals>.<listcomp>�r(r�assertFalse�rrrrr�test_funcdocstring_bytesysz'Test_pygettext.test_funcdocstring_bytescCs&|�td��}|�dd�|D��dS)Nz5        def foo(bar):
            f"""doc"""
        cSsg|]}d|vr|�qSr6rr7rrrr9�r:z=Test_pygettext.test_funcdocstring_fstring.<locals>.<listcomp>r;r=rrr�test_funcdocstring_fstring�sz)Test_pygettext.test_funcdocstring_fstringc	CsVdD]L}|�|��.|�td|��}|�d|�Wd�q1sF0YqdS)Nr1z@                class C:
                    %s
                r2r3r4rrr�test_classdocstring�s�z"Test_pygettext.test_classdocstringcCs&|�td��}|�dd�|D��dS)Nz0        class C:
            b"""doc"""
        cSsg|]}d|vr|�qSr6rr7rrrr9�r:z<Test_pygettext.test_classdocstring_bytes.<locals>.<listcomp>r;r=rrr�test_classdocstring_bytes�sz(Test_pygettext.test_classdocstring_bytescCs&|�td��}|�dd�|D��dS)Nz0        class C:
            f"""doc"""
        cSsg|]}d|vr|�qSr6rr7rrrr9�r:z>Test_pygettext.test_classdocstring_fstring.<locals>.<listcomp>r;r=rrr�test_classdocstring_fstring�sz*Test_pygettext.test_classdocstring_fstringcCs|�d�}|�d|�dS)Nz_("""doc""" r'str' u"ing")Z	docstring)r(r*r=rrr�
test_msgid�s�zTest_pygettext.test_msgidcCs"|�d�}|�dd�|D��dS)Nz
_(b"""doc""")cSsg|]}d|vr|�qSr6rr7rrrr9�r:z3Test_pygettext.test_msgid_bytes.<locals>.<listcomp>�r(r<r=rrr�test_msgid_bytes�s
zTest_pygettext.test_msgid_bytescCs"|�d�}|�dd�|D��dS)Nz
_(f"""doc""")cSsg|]}d|vr|�qSr6rr7rrrr9�r:z5Test_pygettext.test_msgid_fstring.<locals>.<listcomp>rDr=rrr�test_msgid_fstring�s
z!Test_pygettext.test_msgid_fstringcCs|�td��}|�d|�dS)z3 Test docstrings for functions with annotated args z9        def foo(bar: str):
            """doc"""
        r2N�r(rr*r=rrr�!test_funcdocstring_annotated_args�sz0Test_pygettext.test_funcdocstring_annotated_argscCs|�td��}|�d|�dS)z: Test docstrings for functions with annotated return type z;        def foo(bar) -> str:
            """doc"""
        r2NrGr=rrr�#test_funcdocstring_annotated_return�sz2Test_pygettext.test_funcdocstring_annotated_returncCs|�td��}|�d|�dS)z6 Test docstring for functions with default arg values z7        def foo(bar=()):
            """doc"""
        r2NrGr=rrr� test_funcdocstring_defvalue_args�sz/Test_pygettext.test_funcdocstring_defvalue_argscCs6|�td��}|�d|�|�d|�|�d|�dS)z� Test docstring extraction for multiple functions combining
        annotated args, annotated return types and default arg values
        z�        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"""
        Zdoc1Zdoc2Zdoc3NrGr=rrr�!test_funcdocstring_multiple_funcs�s
z0Test_pygettext.test_funcdocstring_multiple_funcscCs|�td��}|�d|�dS)ze Test docstring extraction for a class with colons occurring within
        the parentheses.
        z\        class D(L[1:2], F({1: 2}), metaclass=M(lambda x: x)):
            """doc"""
        r2NrGr=rrr�test_classdocstring_early_colon�sz.Test_pygettext.test_classdocstring_early_colonc
Cs�d}d}d}td����td����}t�tj�|d��ttj�|dd�d��"}|�d|�d	��Wd�n1sv0Yt�tj�|d
��ttj�|d
d�d��"}|�d|�d	��Wd�n1s�0Yt�tj�|d��ttj�|dd
�d��"}|�d|�d	��Wd�n1�s00Yt|j	|�td��}|�
�}Wd�n1�sn0Y|�d|�d�|�|�d|�d�|�|�||�Wd�n1�s�0YWd�n1�s�0YdS)zVMake sure the directories are inspected for source files
           bpo-31920
        zText to translate1zText to translate2zText to ignoreNZpypkgzpymod.pyrz_(�)zpkg.pyz	pymod2.pyZCVSz	pymod3.pyr zmsgid "r)
rr�os�mkdir�pathrr!r"rr#r$r*ZassertNotIn)rZtext1Ztext2Ztext3ZsdirZsfiler'rrrr�test_files_list�s&002
(zTest_pygettext.test_files_listN)"�__name__�
__module__�__qualname__�__doc__rNrPrrr#rrr(r,�unittestZskipIf�sys�platformrr0r5r>r?r@rArBrCrErFrHrIrJrKrLrQrrrrrs2�
		
r)rUrNrWrV�textwraprZtest.support.script_helperrZtest.test_toolsrrZtest.supportrrZTestCaserrrrr�<module>s