HEX
Server: Apache
System: Linux zacp120.webway.host 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
User: govancoz (1003)
PHP: 8.3.26
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //usr/local/lib/python3.7/test/__pycache__/test_gettext.cpython-37.opt-2.pyc
B

��gy��@srddlZddlZddlZddlZddlZddlmZdZdZdZ	dZ
dZej�
dd	�Zej�
ed
�Zej�
ed�Zej�
ed�Zej�
ed
�Zej�
ed�ZGdd�dej�ZdZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGd d!�d!ej�ZGd"d#�d#e�Z Gd$d%�d%ej�Z!d&d'�Z"e#d(k�rne"�dS))�N)�supports3hIElQAAAAAGAAAAHAAAAEwAAAALAAAAfAAAAAAAAACoAAAAFQAAAKkAAAAjAAAAvwAAAKEAAADj
AAAABwAAAIUBAAALAAAAjQEAAEUBAACZAQAAFgAAAN8CAAAeAAAA9gIAAKEAAAAVAwAABQAAALcD
AAAJAAAAvQMAAAEAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABQAAAAYAAAACAAAAAFJh
eW1vbmQgTHV4dXJ5IFlhY2gtdABUaGVyZSBpcyAlcyBmaWxlAFRoZXJlIGFyZSAlcyBmaWxlcwBU
aGlzIG1vZHVsZSBwcm92aWRlcyBpbnRlcm5hdGlvbmFsaXphdGlvbiBhbmQgbG9jYWxpemF0aW9u
CnN1cHBvcnQgZm9yIHlvdXIgUHl0aG9uIHByb2dyYW1zIGJ5IHByb3ZpZGluZyBhbiBpbnRlcmZh
Y2UgdG8gdGhlIEdOVQpnZXR0ZXh0IG1lc3NhZ2UgY2F0YWxvZyBsaWJyYXJ5LgBtdWxsdXNrAG51
ZGdlIG51ZGdlAFByb2plY3QtSWQtVmVyc2lvbjogMi4wClBPLVJldmlzaW9uLURhdGU6IDIwMDAt
MDgtMjkgMTI6MTktMDQ6MDAKTGFzdC1UcmFuc2xhdG9yOiBKLiBEYXZpZCBJYsOhw7FleiA8ai1k
YXZpZEBub29zLmZyPgpMYW5ndWFnZS1UZWFtOiBYWCA8cHl0aG9uLWRldkBweXRob24ub3JnPgpN
SU1FLVZlcnNpb246IDEuMApDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9aXNvLTg4
NTktMQpDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBub25lCkdlbmVyYXRlZC1CeTogcHlnZXR0
ZXh0LnB5IDEuMQpQbHVyYWwtRm9ybXM6IG5wbHVyYWxzPTI7IHBsdXJhbD1uIT0xOwoAVGhyb2F0
d29iYmxlciBNYW5ncm92ZQBIYXkgJXMgZmljaGVybwBIYXkgJXMgZmljaGVyb3MAR3V2ZiB6YnFo
eXIgY2ViaXZxcmYgdmFncmVhbmd2YmFueXZtbmd2YmEgbmFxIHlicG55dm1uZ3ZiYQpmaGNjYmVn
IHNiZSBsYmhlIENsZ3ViYSBjZWJ0ZW56ZiBvbCBjZWJpdnF2YXQgbmEgdmFncmVzbnByIGdiIGd1
ciBUQUgKdHJnZ3JrZyB6cmZmbnRyIHBuZ255YnQgeXZvZW5lbC4AYmFjb24Ad2luayB3aW5rAA==
s3hIElQAABQAGAAAAHAAAAEwAAAALAAAAfAAAAAAAAACoAAAAFQAAAKkAAAAjAAAAvwAAAKEAAADj
AAAABwAAAIUBAAALAAAAjQEAAEUBAACZAQAAFgAAAN8CAAAeAAAA9gIAAKEAAAAVAwAABQAAALcD
AAAJAAAAvQMAAAEAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABQAAAAYAAAACAAAAAFJh
eW1vbmQgTHV4dXJ5IFlhY2gtdABUaGVyZSBpcyAlcyBmaWxlAFRoZXJlIGFyZSAlcyBmaWxlcwBU
aGlzIG1vZHVsZSBwcm92aWRlcyBpbnRlcm5hdGlvbmFsaXphdGlvbiBhbmQgbG9jYWxpemF0aW9u
CnN1cHBvcnQgZm9yIHlvdXIgUHl0aG9uIHByb2dyYW1zIGJ5IHByb3ZpZGluZyBhbiBpbnRlcmZh
Y2UgdG8gdGhlIEdOVQpnZXR0ZXh0IG1lc3NhZ2UgY2F0YWxvZyBsaWJyYXJ5LgBtdWxsdXNrAG51
ZGdlIG51ZGdlAFByb2plY3QtSWQtVmVyc2lvbjogMi4wClBPLVJldmlzaW9uLURhdGU6IDIwMDAt
MDgtMjkgMTI6MTktMDQ6MDAKTGFzdC1UcmFuc2xhdG9yOiBKLiBEYXZpZCBJYsOhw7FleiA8ai1k
YXZpZEBub29zLmZyPgpMYW5ndWFnZS1UZWFtOiBYWCA8cHl0aG9uLWRldkBweXRob24ub3JnPgpN
SU1FLVZlcnNpb246IDEuMApDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9aXNvLTg4
NTktMQpDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBub25lCkdlbmVyYXRlZC1CeTogcHlnZXR0
ZXh0LnB5IDEuMQpQbHVyYWwtRm9ybXM6IG5wbHVyYWxzPTI7IHBsdXJhbD1uIT0xOwoAVGhyb2F0
d29iYmxlciBNYW5ncm92ZQBIYXkgJXMgZmljaGVybwBIYXkgJXMgZmljaGVyb3MAR3V2ZiB6YnFo
eXIgY2ViaXZxcmYgdmFncmVhbmd2YmFueXZtbmd2YmEgbmFxIHlicG55dm1uZ3ZiYQpmaGNjYmVn
IHNiZSBsYmhlIENsZ3ViYSBjZWJ0ZW56ZiBvbCBjZWJpdnF2YXQgbmEgdmFncmVzbnByIGdiIGd1
ciBUQUgKdHJnZ3JrZyB6cmZmbnRyIHBuZ255YnQgeXZvZW5lbC4AYmFjb24Ad2luayB3aW5rAA==
s3hIElQcAAAAGAAAAHAAAAEwAAAALAAAAfAAAAAAAAACoAAAAFQAAAKkAAAAjAAAAvwAAAKEAAADj
AAAABwAAAIUBAAALAAAAjQEAAEUBAACZAQAAFgAAAN8CAAAeAAAA9gIAAKEAAAAVAwAABQAAALcD
AAAJAAAAvQMAAAEAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABQAAAAYAAAACAAAAAFJh
eW1vbmQgTHV4dXJ5IFlhY2gtdABUaGVyZSBpcyAlcyBmaWxlAFRoZXJlIGFyZSAlcyBmaWxlcwBU
aGlzIG1vZHVsZSBwcm92aWRlcyBpbnRlcm5hdGlvbmFsaXphdGlvbiBhbmQgbG9jYWxpemF0aW9u
CnN1cHBvcnQgZm9yIHlvdXIgUHl0aG9uIHByb2dyYW1zIGJ5IHByb3ZpZGluZyBhbiBpbnRlcmZh
Y2UgdG8gdGhlIEdOVQpnZXR0ZXh0IG1lc3NhZ2UgY2F0YWxvZyBsaWJyYXJ5LgBtdWxsdXNrAG51
ZGdlIG51ZGdlAFByb2plY3QtSWQtVmVyc2lvbjogMi4wClBPLVJldmlzaW9uLURhdGU6IDIwMDAt
MDgtMjkgMTI6MTktMDQ6MDAKTGFzdC1UcmFuc2xhdG9yOiBKLiBEYXZpZCBJYsOhw7FleiA8ai1k
YXZpZEBub29zLmZyPgpMYW5ndWFnZS1UZWFtOiBYWCA8cHl0aG9uLWRldkBweXRob24ub3JnPgpN
SU1FLVZlcnNpb246IDEuMApDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9aXNvLTg4
NTktMQpDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBub25lCkdlbmVyYXRlZC1CeTogcHlnZXR0
ZXh0LnB5IDEuMQpQbHVyYWwtRm9ybXM6IG5wbHVyYWxzPTI7IHBsdXJhbD1uIT0xOwoAVGhyb2F0
d29iYmxlciBNYW5ncm92ZQBIYXkgJXMgZmljaGVybwBIYXkgJXMgZmljaGVyb3MAR3V2ZiB6YnFo
eXIgY2ViaXZxcmYgdmFncmVhbmd2YmFueXZtbmd2YmEgbmFxIHlicG55dm1uZ3ZiYQpmaGNjYmVn
IHNiZSBsYmhlIENsZ3ViYSBjZWJ0ZW56ZiBvbCBjZWJpdnF2YXQgbmEgdmFncmVzbnByIGdiIGd1
ciBUQUgKdHJnZ3JrZyB6cmZmbnRyIHBuZ255YnQgeXZvZW5lbC4AYmFjb24Ad2luayB3aW5rAA==
s�3hIElQAAAAACAAAAHAAAACwAAAAFAAAAPAAAAAAAAABQAAAABAAAAFEAAAAPAQAAVgAAAAQAAABm
AQAAAQAAAAIAAAAAAAAAAAAAAAAAAAAAYWLDngBQcm9qZWN0LUlkLVZlcnNpb246IDIuMApQTy1S
ZXZpc2lvbi1EYXRlOiAyMDAzLTA0LTExIDEyOjQyLTA0MDAKTGFzdC1UcmFuc2xhdG9yOiBCYXJy
eSBBLiBXQXJzYXcgPGJhcnJ5QHB5dGhvbi5vcmc+Ckxhbmd1YWdlLVRlYW06IFhYIDxweXRob24t
ZGV2QHB5dGhvbi5vcmc+Ck1JTUUtVmVyc2lvbjogMS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFp
bjsgY2hhcnNldD11dGYtOApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA3Yml0CkdlbmVyYXRl
ZC1CeTogbWFudWFsbHkKAMKkeXoA
sL3hIElQAAAAABAAAAHAAAACQAAAADAAAALAAAAAAAAAA4AAAAeAEAADkAAAABAAAAAAAAAAAAAAAA
UHJvamVjdC1JZC1WZXJzaW9uOiBObyBQcm9qZWN0IDAuMApQT1QtQ3JlYXRpb24tRGF0ZTogV2Vk
IERlYyAxMSAwNzo0NDoxNSAyMDAyClBPLVJldmlzaW9uLURhdGU6IDIwMDItMDgtMTQgMDE6MTg6
NTgrMDA6MDAKTGFzdC1UcmFuc2xhdG9yOiBKb2huIERvZSA8amRvZUBleGFtcGxlLmNvbT4KSmFu
ZSBGb29iYXIgPGpmb29iYXJAZXhhbXBsZS5jb20+Ckxhbmd1YWdlLVRlYW06IHh4IDx4eEBleGFt
cGxlLmNvbT4KTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFy
c2V0PWlzby04ODU5LTE1CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IHF1b3RlZC1wcmludGFi
bGUKR2VuZXJhdGVkLUJ5OiBweWdldHRleHQucHkgMS4zCgA=
�xx�LC_MESSAGESz
gettext.mozgettext_bad_major_version.mozgettext_bad_minor_version.mozugettext.mozmetadata.moc@seZdZdd�Zdd�ZdS)�GettextBaseTestc	Cs�tj�t�st�t�ttd��}|�t�	t
��WdQRXttd��}|�t�	t��WdQRXtt
d��}|�t�	t��WdQRXttd��}|�t�	t��WdQRXttd��}|�t�	t��WdQRXt��|_d|jd<tj��dS)N�wbr�LANGUAGE)�os�path�isdir�	LOCALEDIR�makedirs�open�MOFILE�write�base64�decodebytes�GNU_MO_DATA�MOFILE_BAD_MAJOR_VERSION�GNU_MO_DATA_BAD_MAJOR_VERSION�MOFILE_BAD_MINOR_VERSION�GNU_MO_DATA_BAD_MINOR_VERSION�UMOFILE�UMO_DATA�MMOFILE�MMO_DATArZEnvironmentVarGuard�env�gettext�
_translations�clear)�self�fp�r!�-/usr/local/lib/python3.7/test/test_gettext.py�setUpss


zGettextBaseTest.setUpcCs(|j��|`t�tj�t�d�dS)Nr)r�__exit__rZrmtreerr	�splitr)rr!r!r"�tearDown�s
zGettextBaseTest.tearDownN)�__name__�
__module__�__qualname__r#r&r!r!r!r"rrsrs�3hIElQAAAAABAAAAHAAAACQAAAAAAAAAAAAAAAAAAAAsAAAAggAAAC0AAAAAUGx1cmFsLUZvcm1z
OiBucGx1cmFscz0yOyBwbHVyYWw9KG4gIT0gMSk7CiMtIy0jLSMtIyAgbWVzc2FnZXMucG8gKEVk
WCBTdHVkaW8pICAjLSMtIy0jLSMKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVU
Ri04CgA=
c@sDeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�GettextTestCase1cCs*t�|�tj|_t|_t�d|j�dS)Nr)	rr#r�curdir�	localedirr�mofiler�install)rr!r!r"r#�s
zGettextTestCase1.setUpcCsB|j}|td�d�|td�d�|td�d�|td�d�dS)N�	albatross�mullusk�baconzRaymond Luxury Yach-tzThroatwobbler Mangroveznudge nudgez	wink wink)�assertEqual�_)r�eqr!r!r"�test_some_translations�s
z'GettextTestCase1.test_some_translationscCsB|j}|td�d�|td�d�|td�d�|td�d�dS)Nr/r0r1zRaymond Luxury Yach-tzThroatwobbler Mangroveznudge nudgez	wink wink)r2r3)rr4r!r!r"�test_double_quotes�s
z#GettextTestCase1.test_double_quotescCsB|j}|td�d�|td�d�|td�d�|td�d�dS)Nr/r0r1zRaymond Luxury Yach-tzThroatwobbler Mangroveznudge nudgez	wink wink)r2r3)rr4r!r!r"�test_triple_single_quotes�s
z*GettextTestCase1.test_triple_single_quotescCsB|j}|td�d�|td�d�|td�d�|td�d�dS)Nr/r0r1zRaymond Luxury Yach-tzThroatwobbler Mangroveznudge nudgez	wink wink)r2r3)rr4r!r!r"�test_triple_double_quotes�s
z*GettextTestCase1.test_triple_double_quotescCs|j}|td�d�dS)Nz�This module provides internationalization and localization
support for your Python programs by providing an interface to the GNU
gettext message catalog library.z�Guvf zbqhyr cebivqrf vagreangvbanyvmngvba naq ybpnyvmngvba
fhccbeg sbe lbhe Clguba cebtenzf ol cebivqvat na vagresnpr gb gur TAH
trggrkg zrffntr pngnybt yvoenel.)r2r3)rr4r!r!r"�test_multiline_strings�sz'GettextTestCase1.test_multiline_stringsc	Cs�|j}t|jd��}t�|�}WdQRX|��|td�d�|��|td�d�ddl}|jddgd	�|t|j�||j|j�|t|j�|`|`dS)
N�rbznudge nudgez	wink winkr0r1rr�lgettext)�names)	r2r
r-r�GNUTranslationsr.r3�builtinsr;)rr4r �tr>r!r!r"�test_the_alternative_interface�sz/GettextTestCase1.test_the_alternative_interfaceN)
r'r(r)r#r5r6r7r8r9r@r!r!r!r"r*�s
r*c@s\eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�ZdS)�GettextTestCase2cCs6t�|�tj|_t�d|j�t�d�tj|_dS)Nr)	rr#rr+r,r�bindtextdomain�
textdomainr3)rr!r!r"r#�s


zGettextTestCase2.setUpcCs|�t�d�|j�dS)Nr)r2rrBr,)rr!r!r"�test_bindtextdomain�sz$GettextTestCase2.test_bindtextdomaincCs|�t��d�dS)Nr)r2rrC)rr!r!r"�test_textdomain�sz GettextTestCase2.test_textdomainc
Csjttd��V}|�t��}t�|�WdQRX|j}|�|jd�|�|j	d�|�|j
t�WdQRXdS)Nr:rzBad version number 5)r
r�assertRaises�OSErrorrr=�	exceptionr2�errno�strerror�filename)rr �cmrHr!r!r"�test_bad_major_version�sz'GettextTestCase2.test_bad_major_versionc	Cs$ttd��}t�|�WdQRXdS)Nr:)r
rrr=)rr r!r!r"�test_bad_minor_version�sz'GettextTestCase2.test_bad_minor_versioncCsJ|j}||�d�d�||�d�d�||�d�d�||�d�d�dS)Nr/r0r1zRaymond Luxury Yach-tzThroatwobbler Mangroveznudge nudgez	wink wink)r2r3)rr4r!r!r"r5�s
z'GettextTestCase2.test_some_translationscCsJ|j}||�d�d�||�d�d�||�d�d�||�d�d�dS)Nr/r0r1zRaymond Luxury Yach-tzThroatwobbler Mangroveznudge nudgez	wink wink)r2r3)rr4r!r!r"r6�s
z#GettextTestCase2.test_double_quotescCsJ|j}||�d�d�||�d�d�||�d�d�||�d�d�dS)Nr/r0r1zRaymond Luxury Yach-tzThroatwobbler Mangroveznudge nudgez	wink wink)r2r3)rr4r!r!r"r7s
z*GettextTestCase2.test_triple_single_quotescCsJ|j}||�d�d�||�d�d�||�d�d�||�d�d�dS)Nr/r0r1zRaymond Luxury Yach-tzThroatwobbler Mangroveznudge nudgez	wink wink)r2r3)rr4r!r!r"r8
s
z*GettextTestCase2.test_triple_double_quotescCs|j}||�d�d�dS)Nz�This module provides internationalization and localization
support for your Python programs by providing an interface to the GNU
gettext message catalog library.z�Guvf zbqhyr cebivqrf vagreangvbanyvmngvba naq ybpnyvmngvba
fhccbeg sbe lbhe Clguba cebtenzf ol cebivqvat na vagresnpr gb gur TAH
trggrkg zrffntr pngnybt yvoenel.)r2r3)rr4r!r!r"r9sz'GettextTestCase2.test_multiline_stringsN)
r'r(r)r#rDrErMrNr5r6r7r8r9r!r!r!r"rA�s	
rAc@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/S)0�PluralFormsTestCasecCst�|�t|_dS)N)rr#rr-)rr!r!r"r#!s
zPluralFormsTestCase.setUpcCs:|j}t�ddd�}||d�t�ddd�}||d�dS)NzThere is %s filezThere are %s files�zHay %s fichero�zHay %s ficheros)r2r�ngettext)rr4�xr!r!r"�test_plural_forms1%s

z&PluralFormsTestCase.test_plural_forms1c	Cs\|j}t|jd��}t�|�}WdQRX|�ddd�}||d�|�ddd�}||d�dS)Nr:zThere is %s filezThere are %s filesrPzHay %s ficherorQzHay %s ficheros)r2r
r-rr=rR)rr4r r?rSr!r!r"�test_plural_forms2,s
z&PluralFormsTestCase.test_plural_forms2cs:|j}t�d��d��fdd�td�D��}||d�dS)N�0�csg|]}t�|���qSr!)�str)�.0rS)�fr!r"�
<listcomp>:sz/PluralFormsTestCase.test_ja.<locals>.<listcomp>��Z�00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000)r2r�c2py�join�range)rr4�sr!)rZr"�test_ja7s
zPluralFormsTestCase.test_jacs:|j}t�d��d��fdd�td�D��}||d�dS)Nzn != 1rWcsg|]}t�|���qSr!)rX)rYrS)rZr!r"r[@sz/PluralFormsTestCase.test_de.<locals>.<listcomp>r\Z�10111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111)r2rr]r^r_)rr4r`r!)rZr"�test_de=s
zPluralFormsTestCase.test_decs:|j}t�d��d��fdd�td�D��}||d�dS)Nzn>1rWcsg|]}t�|���qSr!)rX)rYrS)rZr!r"r[Fsz/PluralFormsTestCase.test_fr.<locals>.<listcomp>r\Z�00111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111)r2rr]r^r_)rr4r`r!)rZr"�test_frCs
zPluralFormsTestCase.test_frcs:|j}t�d��d��fdd�td�D��}||d�dS)Nz)n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2rWcsg|]}t�|���qSr!)rX)rYrS)rZr!r"r[Lsz/PluralFormsTestCase.test_lv.<locals>.<listcomp>r\Z�20111111111111111111101111111110111111111011111111101111111110111111111011111111101111111110111111111011111111111111111110111111111011111111101111111110111111111011111111101111111110111111111011111111)r2rr]r^r_)rr4r`r!)rZr"�test_lvIs
zPluralFormsTestCase.test_lvcs:|j}t�d��d��fdd�td�D��}||d�dS)Nzn==1 ? 0 : n==2 ? 1 : 2rWcsg|]}t�|���qSr!)rX)rYrS)rZr!r"r[Rsz/PluralFormsTestCase.test_gd.<locals>.<listcomp>r\��20122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222)r2rr]r^r_)rr4r`r!)rZr"�test_gdOs
zPluralFormsTestCase.test_gdcs:|j}t�d��d��fdd�td�D��}||d�dS)Nzn==1 ? 0 : (n==2 ? 1 : 2)rWcsg|]}t�|���qSr!)rX)rYrS)rZr!r"r[Ysz0PluralFormsTestCase.test_gd2.<locals>.<listcomp>r\re)r2rr]r^r_)rr4r`r!)rZr"�test_gd2Us
zPluralFormsTestCase.test_gd2cs:|j}t�d��d��fdd�td�D��}||d�dS)Nz6n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < 20)) ? 1 : 2rWcsg|]}t�|���qSr!)rX)rYrS)rZr!r"r[_sz/PluralFormsTestCase.test_ro.<locals>.<listcomp>r\Z�10111111111111111111222222222222222222222222222222222222222222222222222222222222222222222222222222222111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222)r2rr]r^r_)rr4r`r!)rZr"�test_ro\s
zPluralFormsTestCase.test_rocs:|j}t�d��d��fdd�td�D��}||d�dS)NzEn%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2rWcsg|]}t�|���qSr!)rX)rYrS)rZr!r"r[esz/PluralFormsTestCase.test_lt.<locals>.<listcomp>r\Z�20111111112222222222201111111120111111112011111111201111111120111111112011111111201111111120111111112011111111222222222220111111112011111111201111111120111111112011111111201111111120111111112011111111)r2rr]r^r_)rr4r`r!)rZr"�test_ltbs
zPluralFormsTestCase.test_ltcs:|j}t�d��d��fdd�td�D��}||d�dS)NzPn%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2rWcsg|]}t�|���qSr!)rX)rYrS)rZr!r"r[ksz/PluralFormsTestCase.test_ru.<locals>.<listcomp>r\Z�20111222222222222222201112222220111222222011122222201112222220111222222011122222201112222220111222222011122222222222222220111222222011122222201112222220111222222011122222201112222220111222222011122222)r2rr]r^r_)rr4r`r!)rZr"�test_ruhs
zPluralFormsTestCase.test_rucs:|j}t�d��d��fdd�td�D��}||d�dS)Nz#(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2rWcsg|]}t�|���qSr!)rX)rYrS)rZr!r"r[qsz/PluralFormsTestCase.test_cs.<locals>.<listcomp>r\Z�20111222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222)r2rr]r^r_)rr4r`r!)rZr"�test_csns
zPluralFormsTestCase.test_cscs:|j}t�d��d��fdd�td�D��}||d�dS)Nz@n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2rWcsg|]}t�|���qSr!)rX)rYrS)rZr!r"r[wsz/PluralFormsTestCase.test_pl.<locals>.<listcomp>r\Z�20111222222222222222221112222222111222222211122222221112222222111222222211122222221112222222111222222211122222222222222222111222222211122222221112222222111222222211122222221112222222111222222211122222)r2rr]r^r_)rr4r`r!)rZr"�test_plts
zPluralFormsTestCase.test_plcs:|j}t�d��d��fdd�td�D��}||d�dS)Nz:n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3rWcsg|]}t�|���qSr!)rX)rYrS)rZr!r"r[}sz/PluralFormsTestCase.test_sl.<locals>.<listcomp>r\Z�30122333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333012233333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333)r2rr]r^r_)rr4r`r!)rZr"�test_slzs
zPluralFormsTestCase.test_slcs:|j}t�d��d��fdd�td�D��}||d�dS)NzNn==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 ? 4 : 5rWcsg|]}t�|���qSr!)rX)rYrS)rZr!r"r[�sz/PluralFormsTestCase.test_ar.<locals>.<listcomp>r\Z�01233333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444445553333333344444444444444444444444444444444444444444444444444444444444444444444444444444444444444444)r2rr]r^r_)rr4r`r!)rZr"�test_ar�s
zPluralFormsTestCase.test_arcCs�|j}|ttjd�|ttjd�|ttjd�|ttjddd�|�t�d�d�d	�|ttjd
�|ttjddddd�|�t�d
�d�d�dS)Nzos.chmod('/etc/passwd',0777)z"(eval(foo) && ""zf"{os.system('sh')}"zn+i'�nz�n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+nrP�ez�((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((n))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))�(�)z)((((((((((((((((((((n)))))))))))))))))))))rF�
ValueErrorrr]r2)rZraisesr!r!r"�
test_security�sz!PluralFormsTestCase.test_securitycs�t�d��|�d��fdd�td�D��d�t�d��|�d��fdd�td�D��d	�t�d
��|�d��fdd�td�D��d�t�d��|�d��fd
d�td�D��d�dS)Nzn == n == nrWc3s|]}t�|��VqdS)N)rX)rYrS)rZr!r"�	<genexpr>�sz>PluralFormsTestCase.test_chained_comparison.<locals>.<genexpr>�Z010z
1 < n == nc3s|]}t�|��VqdS)N)rX)rYrS)rZr!r"ru�sZ100z
n == n < 2c3s|]}t�|��VqdS)N)rX)rYrS)rZr!r"ru�sz	0 < n < 2c3s|]}t�|��VqdS)N)rX)rYrS)rZr!r"ru�sZ111)rr]r2r^r_)rr!)rZr"�test_chained_comparison�s
$
$
$
z+PluralFormsTestCase.test_chained_comparisoncCs|�t�d�d�d�dS)NZ0123rP�{)r2rr])rr!r!r"�test_decimal_number�sz'PluralFormsTestCase.test_decimal_numbercCsTddddddddd	d
ddd
ddg}x,|D]$}|�t��t�|�WdQRXq(WdS)Nzx>1z(n>1zn>1)z
42**42**42Z0xaz1.0Z1e2zn>0x1z+nz-nzn()zn(1)z1+�nnzn n)rFrsrr])rZinvalid_expressions�exprr!r!r"�test_invalid_syntax�s

z'PluralFormsTestCase.test_invalid_syntaxcCs\|�t�d�d�d�|�t�d�d�d�|�t�d�d�d�|�t�d�d�d�dS)Nz	n?1?2:3:4r�rPrQz	n?1:3?4:5)r2rr])rr!r!r"�test_nested_condition_operator�sz2PluralFormsTestCase.test_nested_condition_operatorcCs\t�d�}|�|d�d�|�|d�d�|�|d�d�|�|d�d�|�t|d�dS)	Nz2/n*3rP�rQrvr���i����)rr]r2rF�ZeroDivisionError)rrZr!r!r"�
test_division�s
z!PluralFormsTestCase.test_divisionc	Cs�t�d�}|�|d�d�|�|d�d�|�t��|�|d�d�WdQRX|�t��|�|d�d�WdQRX|�t��|�|d�d�WdQRX|�t|d�|�t|d	�|�t|g�|�t|t��dS)
Nzn != 1rPrrQg�?g@g�������?�2�2)rr]r2ZassertWarns�DeprecationWarningrF�	TypeError�object)rrZr!r!r"�test_plural_number�s
z&PluralFormsTestCase.test_plural_numberN)r'r(r)r#rTrUrarbrcrdrfrgrhrirjrkrlrmrnrtrwryr|r~r�r�r!r!r!r"rO s.	rOc@sTeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�ZdS)�LGettextTestCasecCst�|�t|_dS)N)rr#rr-)rr!r!r"r#�s
zLGettextTestCase.setUpcCsTtj}tj}|�|d�d�|�|d�d�|�|dd�d�|�|dd�d�dS)Nr0sbacon�spamsspamr)rr;�	ldgettextr2)rr;r�r!r!r"�
test_lgettext�szLGettextTestCase.test_lgettextc	CsLt|jd��}t�|�}WdQRX|j}|�|d�d�|�|d�d�dS)Nr:r0sbaconr�sspam)r
r-rr=r;r2)rr r?r;r!r!r"�test_lgettext_2�s
z LGettextTestCase.test_lgettext_2c
Cs�tj}tj}t�d�}zlt�dd�|�|d�d�d��|�|d�d�d��|�|dd�d�d��|�|dd�d�d��Wdtjd=t�d|�XdS)Nrzutf-16r0r1r�)rr;r��bind_textdomain_codesetr2�encode�_localecodesets)rr;r��
saved_codesetr!r!r"�%test_lgettext_bind_textdomain_codeset�s
z6LGettextTestCase.test_lgettext_bind_textdomain_codesetc	Csbt|jd��}t�|�}WdQRX|j}|�d�|�|d�d�d��|�|d�d�d��dS)Nr:zutf-16r0r1r�)r
r-rr=r;�set_output_charsetr2r�)rr r?r;r!r!r"�test_lgettext_output_encoding�s
z.LGettextTestCase.test_lgettext_output_encodingcCs�tj}tj}|ddd�}|�|d�|ddd�}|�|d�|ddd�}|�|d	�|ddd�}|�|d
�|dddd�}|�|d�|dddd�}|�|d�|dddd�}|�|d	�|dddd�}|�|d
�dS)NzThere is %s filezThere are %s filesrPsHay %s ficherorQsHay %s ficheroszThere is %s directoryzThere are %s directoriessThere is %s directorysThere are %s directoriesr)r�	lngettext�
ldngettextr2)rr�r�rSr!r!r"�test_lngettext�s$zLGettextTestCase.test_lngettextc	Cs�t|jd��}t�|�}WdQRX|j}|ddd�}|�|d�|ddd�}|�|d�|dd	d�}|�|d
�|dd	d�}|�|d�dS)Nr:zThere is %s filezThere are %s filesrPsHay %s ficherorQsHay %s ficheroszThere is %s directoryzThere are %s directoriessThere is %s directorysThere are %s directories)r
r-rr=r�r2)rr r?r�rSr!r!r"�test_lngettext_2	sz!LGettextTestCase.test_lngettext_2c
Cs<tj}tj}t�d�}�zt�dd�|ddd�}|�|d�d��|ddd�}|�|d�d��|d	d
d�}|�|d	�d��|d	d
d�}|�|d
�d��|dddd�}|�|d�d��|dddd�}|�|d�d��|dd	d
d�}|�|d	�d��|dd	d
d�}|�|d
�d��Wdtjd=t�d|�XdS)Nrzutf-16zThere is %s filezThere are %s filesrPzHay %s ficherorQzHay %s ficheroszThere is %s directoryzThere are %s directories)rr�r�r�r2r�r�)rr�r�r�rSr!r!r"�&test_lngettext_bind_textdomain_codesets.
z7LGettextTestCase.test_lngettext_bind_textdomain_codesetc	Cs�t|jd��}t�|�}WdQRX|j}|�d�|ddd�}|�|d�d��|ddd�}|�|d�d��|d	d
d�}|�|d	�d��|d	d
d�}|�|d
�d��dS)Nr:zutf-16zThere is %s filezThere are %s filesrPzHay %s ficherorQzHay %s ficheroszThere is %s directoryzThere are %s directories)r
r-rr=r�r�r2r�)rr r?r�rSr!r!r"�test_lngettext_output_encoding0s
z/LGettextTestCase.test_lngettext_output_encodingN)r'r(r)r#r�r�r�r�r�r�r�r�r!r!r!r"r��s
r�c@seZdZdd�ZdS)�GNUTranslationParsingTestc	CsJttd��}|�t�t��WdQRXttd��}t�|�}WdQRXdS)Nrr:)r
rrrr�GNU_MO_DATA_ISSUE_17898rr=)rr r?r!r!r"�!test_plural_form_error_issue17898@sz;GNUTranslationParsingTest.test_plural_form_error_issue17898N)r'r(r)r�r!r!r!r"r�?sr�c@s$eZdZdd�Zdd�Zdd�ZdS)�UnicodeTranslationsTestc	Cs:t�|�ttd��}t�|�|_WdQRX|jj|_dS)Nr:)rr#r
rrr=r?r3)rr r!r!r"r#Is
zUnicodeTranslationsTest.setUpcCs|�|�d�t�dS)NrW)ZassertIsInstancer3rX)rr!r!r"�test_unicode_msgidOsz*UnicodeTranslationsTest.test_unicode_msgidcCs|�|�d�d�dS)NuabÞu¤yz)r2r3)rr!r!r"�test_unicode_msgstrRsz+UnicodeTranslationsTest.test_unicode_msgstrN)r'r(r)r#r�r�r!r!r!r"r�Hsr�c@seZdZdd�Zdd�ZdS)�WeirdMetadataTestc	CsLt�|�ttd��.}yt�|�|_Wn|���YnXWdQRXdS)Nr:)rr#r
rrr=r?r&)rr r!r!r"r#Ws
zWeirdMetadataTest.setUpcCs.|j��}|�t|�d�|�|dd�dS)N�	zlast-translatorz=John Doe <jdoe@example.com>
Jane Foobar <jfoobar@example.com>)r?�infor2�len)rr�r!r!r"�test_weird_metadata`s

z%WeirdMetadataTest.test_weird_metadataN)r'r(r)r#r�r!r!r!r"r�Vs	r�c@seZdZdd�ZdS)�DummyGNUTranslationscCsdS)N�foor!)rr!r!r"r�hszDummyGNUTranslations.fooN)r'r(r)r�r!r!r!r"r�gsr�c@seZdZdd�ZdS)�GettextCacheTestCasecCs�tj|_t|_|�ttj�d�t�	d|j�}|�ttj�d�tj	d|jt
d�}|�ttj�d�|�|jt
�tj	d|jt
d�}|�ttj�d�|�|jt
�dS)NrrrP)�class_rQ)rr+r,rr-r2r�rr�translationr��	__class__)rr?r!r!r"�
test_cachems

zGettextCacheTestCase.test_cacheN)r'r(r)r�r!r!r!r"r�lsr�c@seZdZdd�ZdS)�MiscTestCasecCsddh}tj|t|d�dS)Nr]�ENOENT)�	blacklist)rZcheck__all__r)rr�r!r!r"�test__all__�szMiscTestCase.test__all__N)r'r(r)r�r!r!r!r"r��sr�cCst�t�dS)N)rZrun_unittestr'r!r!r!r"�	test_main�sr��__main__)$rrr�localeZunittestZtestrrrrrrr	r^rrrrrrZTestCaserr�r*rArOr�r�r�r�r=r�r�r�r�r'r!r!r!r"�<module>sBFJ,t	
u