o
    ‹¨ÊhZ¶  ã                   @   sú  d Z dZddlZddlZddlZzddlZW n ey#   ddlZY nw ddlm	Z	 ddlm
Z
 ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ G dd„ deƒZG dd„ deejƒZG dd„ deejƒZG dd„ deejƒZ G dd„ deƒZ!G dd „ d eƒZ"G d!d"„ d"eƒZ#G d#d$„ d$eƒZ$G d%d&„ d&eƒZ%G d'd(„ d(eƒZ&G d)d*„ d*eƒZ'G d+d,„ d,ejƒZ(e!d-d.e#e"d/d0gƒe#e"d1d2gƒe#d3e"d4d5gƒid6e$d7d3d8ƒfd9e&d:d;ƒfgƒd<œd6e$d7d3d=ƒfd9e&d:d>ƒfd?e%d@dAƒfgƒdBœd6e$d7d3dCƒfdDe%d:dEƒfgdFdG�e#e"dHdIgƒe#e"dJdKgƒe#d3e"dLdMgƒid6e$d7d3dNƒfd9e&d:dOƒfgƒd<œd6e$d7d3dPƒfd9e&d:dQƒfd?e%d@dAƒfgƒdBœd6e$d7d3dRƒfdDe%d:dEƒfgƒdSœƒZ)e!dTd.dUe#e"dVdWgƒe#e"dXdYgƒe#d3e"dZd[gƒid6e$d7d3d\ƒfd9e&d:d]ƒfgƒd<œd6e$d7d3d^ƒfd9e&d:d_ƒfd?e%d@dAƒfgƒdBœd6e$d7d3d`ƒfdDe%d:dEƒfgdae'dbdcƒfgdd�id-degdegdf�Z*e+dgk�rûe ,¡  dS dS )hz*Tests for google.protobuf.descriptor_pool.z"matthewtoia@google.com (Matt Toia)é    N)Úunittest_import_pb2)Úunittest_import_public_pb2)Úunittest_pb2)Údescriptor_pb2)Úapi_implementation)Údescriptor_pool_test1_pb2)Údescriptor_pool_test2_pb2)Úfactory_test1_pb2)Úfactory_test2_pb2)Úfile_options_test_pb2)Úmore_messages_pb2)Úno_package_pb2)Ú
descriptor)Údescriptor_database)Údescriptor_pool)Úmessage_factory)Úsymbol_databasec                   @   sÄ   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/S )0ÚDescriptorPoolTestBasec                 C   s”   d}| j  |¡}|  |tj¡ |  ||j¡ |  d|j¡ |  d|j	¡ d}| j  |¡}|  |tj¡ |  ||j¡ |  d|j¡ |  d|j	¡ d S )Nú,google/protobuf/internal/factory_test1.protoúgoogle.protobuf.python.internalÚFactory1Messageú,google/protobuf/internal/factory_test2.protoÚFactory2Message)
ÚpoolÚFindFileByNameÚassertIsInstancer   ÚFileDescriptorÚassertEqualÚnameÚpackageÚassertInÚmessage_types_by_name)ÚselfÚname1Ú
file_desc1Úname2Ú
file_desc2© r'   ú_/var/www/html/env/lib/python3.10/site-packages/google/protobuf/internal/descriptor_pool_test.pyÚtestFindFileByNameD   s   z)DescriptorPoolTestBase.testFindFileByNamec                 C   ó<   |   t¡� | j d¡ W d   ƒ d S 1 sw   Y  d S ©NúDoes not exist)ÚassertRaisesÚKeyErrorr   r   ©r"   r'   r'   r(   ÚtestFindFileByNameFailureS   ó   "ÿz0DescriptorPoolTestBase.testFindFileByNameFailurec           	      C   sÄ  | j  d¡}|  |tj¡ |  d|j¡ |  d|j¡ |  d|j	¡ | j  d¡}|  |tj¡ |  d|j¡ |  d|j¡ |  d|j	¡ | j  d¡}|  |tj¡ |  d|j¡ | j  d	¡}|  |tj¡ |  d|j¡ | j  d
¡}|  |tj¡ |  d|j¡ t
 ¡  d	¡s‰J ‚t
 ¡  d¡s’J ‚t
 ¡  d
¡s›J ‚| j  d¡}|  |tj¡ |  d|j¡ | j  d¡}|  |tj¡ |  d|j¡ | j  d¡}|  |tj¡ |  d|j¡ |  t| j jd¡ d S )Nú/google.protobuf.python.internal.Factory1Messager   r   r   ú/google.protobuf.python.internal.Factory2Messager   r   ú-google.protobuf.python.internal.another_fieldú>google.protobuf.python.internal.Factory2Message.one_more_fieldúprotobuf_unittest.TestServiceúgoogle/protobuf/unittest.protoú:google.protobuf.python.internal.Factory1Message.list_valuez1google.protobuf.python.internal.FACTORY_1_VALUE_0z"protobuf_unittest.TestAllTypes.FOOz:google.protobuf.python.internal.Factory1Message.none_field)r   ÚFindFileContainingSymbolr   r   r   r   r   r   r    r!   r   ÚDefaultr-   r.   )	r"   r$   r&   Ú
file_desc3Ú
file_desc4Ú
file_desc5Ú
file_desc6Ú
file_desc7Ú
file_desc8r'   r'   r(   ÚtestFindFileContainingSymbolW   s�   ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿz3DescriptorPoolTestBase.testFindFileContainingSymbolc                 C   r*   r+   )r-   r.   r   r9   r/   r'   r'   r(   Ú#testFindFileContainingSymbolFailure�   r1   z:DescriptorPoolTestBase.testFindFileContainingSymbolFailurec           	      C   sô  | j  d¡}|  |tj¡ |  d|j¡ |  d|j¡ |  d |j¡ |  	|j
¡ |jd }|  d|j¡ |  ||j¡ |jd }|  d|j¡ |  ||j¡ |  ||jd j¡ |  ||jd j¡ | j  d¡}|  |tj¡ |  d	|j¡ |  d|j¡ |  |j¡ |jd }|  d
|j¡ |  ||j¡ |jd }|  d|j¡ |  ||j¡ |  ||jd j¡ |  ||jd j¡ |  |jd j¡ |  d|jd j¡ |  |jd j¡ |  d|jd j¡ |  |jd j¡ |  d|jd j¡ |  |jd j¡ |  	|jd j¡ |  |jd j¡ |  d|jd j¡ | j  d¡}|  ||¡ |  |jd j¡ |  d|jd j¡ |  dt|jƒ¡ |  dt|jƒ¡ |  dt|jd jƒ¡ dD ]}|  |jd |j| j¡ |  |j| |jd j¡ �qZd S )Nr2   r   r   ÚNestedFactory1MessageÚNestedFactory1EnumÚnested_factory_1_messageÚnested_factory_1_enumr3   r   ÚNestedFactory2MessageÚNestedFactory2EnumÚnested_factory_2_messageÚnested_factory_2_enumÚint_with_defaultið  Údouble_with_defaultg{®Gáú#@Ústring_with_defaultzhello worldÚbool_with_defaultÚenum_with_defaulté   zEgoogle.protobuf.python.internal.Factory2Message.NestedFactory2MessageÚbytes_with_defaults   aû cé   )Ú	oneof_intÚoneof_string)r   ÚFindMessageTypeByNamer   r   Ú
Descriptorr   r   Ú	full_nameÚcontaining_typeÚassertFalseÚhas_optionsÚnested_typesÚ
enum_typesÚfields_by_nameÚmessage_typeÚ	enum_typeÚassertIsNoneÚ
assertTrueÚhas_default_valueÚdefault_valueÚlenÚoneofsÚoneofs_by_nameÚfieldsÚcontaining_oneofr    )	r"   Úmsg1Únested_msg1Únested_enum1Úmsg2Únested_msg2Únested_enum2Úmsg3r   r'   r'   r(   ÚtestFindMessageTypeByName¡   s¶   ÿÿ


ÿÿ
ÿÿÿÿ


ÿÿ
ÿÿÿ
ÿÿ
ÿÿÿÿ
þ
ÿýz0DescriptorPoolTestBase.testFindMessageTypeByNamec                 C   sð   |   t| jjd¡ |   t| jjd¡ t ¡ dkrt}nt}|   || jj	d¡ |   || jj
d¡ |   || jjd¡ |   || jjd¡ |   || jjd¡ |   || jjd¡ |   || jjd¡ |   || jjd¡ t ¡ dkrmt}|   || jjd¡ d S )NÚ Úcppr   Úpython)r-   Ú	TypeErrorr   ÚFindExtensionByNumberr.   ÚFindMethodByNamer   ÚTypeÚAttributeErrorrU   ÚFindFieldByNameÚFindExtensionByNameÚFindEnumTypeByNameÚFindOneofByNameÚFindServiceByNamer9   r   )r"   Ú
error_typer'   r'   r(   ÚtestFindTypeErrorsó   s    z)DescriptorPoolTestBase.testFindTypeErrorsc                 C   r*   r+   )r-   r.   r   rU   r/   r'   r'   r(   Ú testFindMessageTypeByNameFailure  r1   z7DescriptorPoolTestBase.testFindMessageTypeByNameFailurec                 C   s  | j  d¡}|  |tj¡ |  d|jd j¡ |  d|jd j¡ |  |j	¡ | j  d¡}|  |tj¡ |  d|jd j¡ |  d|jd j¡ | j  d	¡}|  |tj¡ |  d|jd
 j¡ |  d|jd j¡ | j  d¡}|  |tj¡ |  d|jd j¡ |  d|jd j¡ d S )Nz,google.protobuf.python.internal.Factory1Enumr   ÚFACTORY_1_VALUE_0rP   ÚFACTORY_1_VALUE_1zBgoogle.protobuf.python.internal.Factory1Message.NestedFactory1EnumÚNESTED_FACTORY_1_VALUE_0ÚNESTED_FACTORY_1_VALUE_1z,google.protobuf.python.internal.Factory2EnumÚFACTORY_2_VALUE_0ÚFACTORY_2_VALUE_1zBgoogle.protobuf.python.internal.Factory2Message.NestedFactory2EnumÚNESTED_FACTORY_2_VALUE_0ÚNESTED_FACTORY_2_VALUE_1)
r   r{   r   r   ÚEnumDescriptorr   Úvalues_by_nameÚnumberrY   rZ   )r"   Úenum1rk   Úenum2rn   r'   r'   r(   ÚtestFindEnumTypeByName  sB   ÿÿÿÿÿÿÿÿz-DescriptorPoolTestBase.testFindEnumTypeByNamec                 C   r*   r+   )r-   r.   r   r{   r/   r'   r'   r(   ÚtestFindEnumTypeByNameFailure*  r1   z4DescriptorPoolTestBase.testFindEnumTypeByNameFailurec                 C   sr   | j  d¡}|  |jd¡ |  |j|j¡ |  |j¡ |  t	¡� | j  d¡ W d   ƒ d S 1 s2w   Y  d S )Nr8   Ú
list_valuer,   )
r   ry   r   r   ÚlabelÚLABEL_REPEATEDrY   rZ   r-   r.   )r"   Úfieldr'   r'   r(   ÚtestFindFieldByName.  s   ÿ"ÿz*DescriptorPoolTestBase.testFindFieldByNamec                 C   sV   | j  d¡}|  |jd¡ |  t¡� | j  d¡ W d   ƒ d S 1 s$w   Y  d S )Nz;google.protobuf.python.internal.Factory2Message.oneof_fieldÚoneof_fieldr,   )r   r|   r   r   r-   r.   )r"   Úoneofr'   r'   r(   ÚtestFindOneofByName8  s   ÿ"ÿz*DescriptorPoolTestBase.testFindOneofByNamec                 C   s~   | j  d¡}|  |jd¡ | j  d¡}|  |jd¡ |  |jd¡ |  t¡� | j  d¡ W d   ƒ d S 1 s8w   Y  d S )Nr5   Úone_more_fieldr4   Úanother_fieldéê  r,   )r   rz   r   r   r‹   r-   r.   ry   )r"   Ú	extensionr'   r'   r(   ÚtestFindExtensionByName?  s   ÿÿ"ÿz.DescriptorPoolTestBase.testFindExtensionByNamec                 C   s¢   | j  d¡}| j  d¡}|jd }| j  |¡ | j  d¡}|jd }| j  |¡ | j  |¡}t||gƒ}|  |t|ƒ¡ | d¡ | j  |¡}|  |t|ƒ¡ d S )Nr2   r3   r˜   r   r™   Úunexpected_element)	r   rU   Úextensions_by_nameÚAddExtensionDescriptorr   ÚFindAllExtensionsÚsetr   Úappend)r"   Úfactory1_messageÚfactory2_messager˜   Úfactory_test2r™   Ú
extensionsÚexpected_extension_numbersr'   r'   r(   ÚtestFindAllExtensionsL  s&   ÿÿ
ÿ

z,DescriptorPoolTestBase.testFindAllExtensionsc                 C   sÆ   | j  d¡}| j  d¡}|jd }| j  |¡ | j  d¡}|jd }| j  |¡ | j  |d¡}|  |jd¡ | j  |d¡}|  |jd¡ |  t	¡� | j  |d¡}W d   ƒ d S 1 s\w   Y  d S )	Nr2   r3   r˜   r   r™   éé  rš   i‡Ö )
r   rU   rž   rŸ   r   ru   r   r   r-   r.   )r"   r£   r¤   r˜   r¥   r™   r›   r'   r'   r(   ÚtestFindExtensionByNumberd  s(   ÿÿ
ÿ
"ÿz0DescriptorPoolTestBase.testFindExtensionByNumberc                 C   s¨   |   t¡� | j d¡ W d   ƒ n1 sw   Y  |   t¡� | j d¡ W d   ƒ n1 s1w   Y  |   t¡� | j d¡ W d   ƒ d S 1 sMw   Y  d S )Nr4   r5   r8   )r-   r.   r   ry   rz   r/   r'   r'   r(   ÚtestExtensionsAreNotFields{  s   ÿÿÿÿ"ÿz1DescriptorPoolTestBase.testExtensionsAreNotFieldsc                 C   s¦   | j  d¡}|  |jd¡ |  t¡� | j  d¡ W d   ƒ n1 s#w   Y  | j  d¡}|  |j|¡ |  t¡� | j  d¡ W d   ƒ d S 1 sLw   Y  d S )Nr6   r,   z!protobuf_unittest.TestService.Fooz*protobuf_unittest.TestService.Doesnotexist)	r   r}   r   rW   r-   r.   rv   ÚassertIsÚcontaining_service)r"   ÚserviceÚmethodr'   r'   r(   ÚtestFindService…  s   ÿ"ÿz&DescriptorPoolTestBase.testFindServicec                 C   s8   t  ¡ }t |¡| _| | j¡ | | j¡ |  ¡  d S ©N)	r   ÚDescriptorDatabaser   ÚDescriptorPoolr   ÚAddÚfactory_test1_fdÚfactory_test2_fdrp   ©r"   Údbr'   r'   r(   ÚtestUserDefinedDB�  s
   z(DescriptorPoolTestBase.testUserDefinedDBc                 C   sT   t | tƒrt ¡ dkrd S t ¡ | _| j | j 	¡ ¡ | j | j
 	¡ ¡ |  ¡  d S ©Nrr   )Ú
isinstanceÚ#SecondaryDescriptorFromDescriptorDBr   rw   r   r³   r   ÚAddSerializedFilerµ   ÚSerializeToStringr¶   rp   r/   r'   r'   r(   ÚtestAddSerializedFile—  s   

z,DescriptorPoolTestBase.testAddSerializedFilec                    sŠ   ‡ fdd„}|t jƒ t ¡ j d¡}ˆ  |t j¡ ||ƒ tˆ tƒr+t	 
¡ dkr+dS tj t jj¡}ˆ j |¡ ˆ j d¡}||ƒ dS )z:Test the default value of enums which don't start at zero.c                    s&   | j d jd j}ˆ  |tjj¡ d S )NÚDescriptorPoolTest1Únested_enum)r!   r]   rc   r   r   rÀ   ÚBETA)Úfile_descriptorrc   r/   r'   r(   Ú_CheckDefaultValue¦  s   ÿþýÿzGDescriptorPoolTestBase.testEnumDefaultValue.<locals>._CheckDefaultValueú4google/protobuf/internal/descriptor_pool_test1.protorr   N)r   Ú
DESCRIPTORr   r:   r   r   r¬   r»   r¼   r   rw   r   ÚFileDescriptorProtoÚ
FromStringÚserialized_pbr´   )r"   rÄ   rÃ   Údescriptor_protor'   r/   r(   ÚtestEnumDefaultValue¤  s$   

ÿ
ÿÿz+DescriptorPoolTestBase.testEnumDefaultValuec                    s˜   ‡fdd„‰ ‡ fdd„}|t  ¡ ƒ t ¡ }| tj tj	j
¡¡ | tj tj	j
¡¡ | tj t j	j
¡¡ t |¡ | t jj	j¡¡}||ƒ ƒ dS )z0Check the value returned by non-existent fields.c                    s   ˆ   | |¡ ˆ  | |¡ d S r±   )r   r   )ÚvalueÚexpected_valueÚexpected_typer/   r'   r(   Ú_CheckValueAndTypeÆ  s   zTDescriptorPoolTestBase.testDefaultValueForCustomMessages.<locals>._CheckValueAndTypec                    sÂ   zt }W n ty   t}Y nw zt}W n ty   t}Y nw ˆ | jdtƒ ˆ | jd|tfƒ ˆ | jdttfƒ ˆ | j	dttfƒ ˆ | j
dtƒ ˆ | jd|ƒ ˆ | jdtƒ ˆ | j| jtƒ d S )Nr   Frq   ó    )ÚlongÚ	NameErrorÚintÚunicodeÚstrÚoptional_int32Úoptional_uint64Úoptional_floatÚfloatÚoptional_doubleÚoptional_boolÚboolÚoptional_stringÚoptional_bytesÚbytesÚoptional_nested_enumÚFOO)ÚmsgÚint64Úunicode_type)rÏ   r'   r(   Ú_CheckDefaultValuesÊ  s$   ÿÿzUDescriptorPoolTestBase.testDefaultValueForCustomMessages.<locals>._CheckDefaultValuesN)r   ÚTestAllTypesr   r³   r´   r   rÇ   rÈ   r   rÆ   rÉ   r   r   ÚMessageFactoryÚGetPrototyperU   rW   )r"   rå   r   Úmessage_classr'   )rÏ   r"   r(   Ú!testDefaultValueForCustomMessagesÄ  s&   
ÿ
ÿ
ÿ
ÿÿz8DescriptorPoolTestBase.testDefaultValueForCustomMessagesc                 C   sF   t | tƒrt ¡ dkrd S tjdd�}| j |¡ | j | 	¡ ¡ d S )Nrr   úsome/file.proto©r   )
r»   r¼   r   rw   r   rÇ   r   r´   r½   r¾   )r"   Ú	file_descr'   r'   r(   ÚtestAddFileDescriptorê  s   
z,DescriptorPoolTestBase.testAddFileDescriptorc                 C   sŽ   t | tƒrt ¡ dkrd S tj tjj	¡}tj t
jj	¡}tj tjj	¡}| j |¡ | j |¡ | j |¡ t | | j¡ t | | j¡ d S rº   )r»   r¼   r   rw   r   rÇ   rÈ   r   rÆ   rÉ   r   r   r   r´   Ú
TEST1_FILEÚ	CheckFileÚ
TEST2_FILE)r"   Úmore_messages_descÚ
test1_descÚ
test2_descr'   r'   r(   ÚtestComplexNestingõ  s"   
ÿÿÿz)DescriptorPoolTestBase.testComplexNestingc                 C   s`  t | tƒrt ¡ dkrd S tj tjj	¡}t
 |¡}d|_t ¡ dkr%d S tjdd��{}t d¡ t
 | j¡}tj}| |jd ¡ | |jd ¡ | |jd ¡ | |jd	 ¡ |  t|ƒd
¡ | |¡ | |¡ | |j¡ | |j¡ |  t|ƒ¡ |  |d
 jt ¡ |  !dt"|d
 j#ƒ¡ |  !dt"|d
 j#ƒ¡ W d   ƒ d S 1 s©w   Y  d S )Nrr   Ú
other_fileT)ÚrecordÚalwaysræ   ÚForeignEnumÚTestServiceÚoptional_int32_extensionr   z)Conflict register for file "other_file": z8already defined in file "google/protobuf/unittest.proto")$r»   r¼   r   rw   r   rÇ   rÈ   r   rÆ   rÉ   ÚcopyÚdeepcopyr   ÚwarningsÚcatch_warningsÚsimplefilterr   ÚAddDescriptorr!   ÚAddEnumDescriptorÚenum_types_by_nameÚAddServiceDescriptorÚservices_by_namerŸ   rž   r   rd   r´   r   ra   r¬   ÚcategoryÚRuntimeWarningr    rÕ   Úmessage)r"   Úunittest_fdÚconflict_fdÚwr   rÃ   r'   r'   r(   ÚtestConflictRegister  sP   
ÿ

ÿÿÿÿ

ÿþ"èz+DescriptorPoolTestBase.testConflictRegisterN)Ú__name__Ú
__module__Ú__qualname__r)   r0   rA   rB   rp   r   r€   rŽ   r�   r”   r—   rœ   r¨   rª   r«   r°   r¹   r¿   rË   rê   rî   rõ   r  r'   r'   r'   r(   r   B   s0    FR

 &r   c                   @   ó   e Zd Zdd„ Zdd„ ZdS )ÚDefaultDescriptorPoolTestc                 C   s2   t  ¡ | _tj tjj¡| _	tj t
jj¡| _d S r±   )r   r:   r   r   rÇ   rÈ   r	   rÆ   rÉ   rµ   r
   r¶   r/   r'   r'   r(   ÚsetUp5  s   
ÿ
ÿzDefaultDescriptorPoolTest.setUpc                 C   s¾   |   | j d¡tj¡ |   | j d¡tjj¡ |   | j d¡tjjjd ¡ |   | j 	d¡tj
j¡ |   | j d¡tjjd ¡ |   | j d¡tjjjd	 ¡ |   | j d
¡tjjd ¡ d S )Nr7   úprotobuf_unittest.TestAllTypesz-protobuf_unittest.TestAllTypes.optional_int32rÖ   úprotobuf_unittest.ForeignEnumz*protobuf_unittest.optional_int32_extensionrû   z*protobuf_unittest.TestAllTypes.oneof_fieldr•   r6   rú   )r¬   r   r   r   rÆ   rU   ræ   ry   r]   r{   rù   rz   rž   r|   rf   r}   r  r/   r'   r'   r(   ÚtestFindMethods<  s@   
þ
þÿý
þÿ
ý
þ

þz)DefaultDescriptorPoolTest.testFindMethodsN)r  r  r  r  r  r'   r'   r'   r(   r  3  s    r  c                   @   ó   e Zd Zdd„ ZdS )ÚCreateDescriptorPoolTestc                 C   s®   t  ¡ | _tj tjj¡| _	tj t
jj¡| _| j | j	¡ | j | j¡ | j tj tjj¡¡ | j tj tjj¡¡ | j tj tjj¡¡ | j tj tjj¡¡ d S r±   )r   r³   r   r   rÇ   rÈ   r	   rÆ   rÉ   rµ   r
   r¶   r´   r   r   r   r   r/   r'   r'   r(   r  X  s*   
ÿÿÿÿÿ
ÿzCreateDescriptorPoolTest.setUpN©r  r  r  r  r'   r'   r'   r(   r  V  s    r  c                   @   r  )r¼   c                 C   s®   t j tjj¡| _t j tjj¡| _t	 
¡ }| | j¡ | | j¡ | t j tjj¡¡ | t j tjj¡¡ | t j tjj¡¡ | t j tjj¡¡ tj|d�| _d S )N)Údescriptor_db)r   rÇ   rÈ   r	   rÆ   rÉ   rµ   r
   r¶   r   r²   r´   r   r   r   r   r   r³   r   r·   r'   r'   r(   r  n  s,   ÿÿ
ÿ
ÿ
ÿ
ÿz)SecondaryDescriptorFromDescriptorDB.setUpNr  r'   r'   r'   r(   r¼   k  s    r¼   c                   @   s"   e Zd Z		ddd„Zdd„ ZdS )Ú	ProtoFileNc                 C   s*   || _ || _|| _|pg | _|pg | _d S r±   )r   r   ÚmessagesÚdependenciesÚpublic_dependencies)r"   r   r   r  r  r  r'   r'   r(   Ú__init__ƒ  s
   
zProtoFile.__init__c                 C   s�   |  | j¡}| | j|j¡ | | j|j¡ dd„ |jD ƒ}| | j|¡ dd„ |jD ƒ}| | j|¡ | j ¡ D ]\}}| |d ||¡ q9d S )Nc                 S   ó   g | ]}|j ‘qS r'   rì   ©Ú.0Úfr'   r'   r(   Ú
<listcomp>�  ó    z'ProtoFile.CheckFile.<locals>.<listcomp>c                 S   r  r'   rì   r   r'   r'   r(   r#  ‘  r$  )	r   r   r   r   r  r  r  ÚitemsÚ	CheckType)r"   Útestr   rí   Údependencies_namesÚpublic_dependencies_namesr   Úmsg_typer'   r'   r(   rð   ‹  s   ÿzProtoFile.CheckFile)NN)r  r  r  r  rð   r'   r'   r'   r(   r  �  s
    
ÿr  c                   @   r  )ÚEnumTypec                 C   s
   || _ d S r±   )Úvalues)r"   r,  r'   r'   r(   r  ™  s   
zEnumType.__init__c                 C   s¾   |j | }| ||j¡ d |j|g¡}| ||j¡ | ||j¡ | ||j¡ t| jƒD ].\}\}}	|j	| }
| ||
j¡ | ||
j
¡ | |	|
j¡ | ||
j¡ | ||j¡ q.d S ©NÚ.)r  r   r   ÚjoinrW   rX   ÚfileÚ	enumerater,  rŠ   Úindexr‹   Útyper    Úenum_values_by_name)r"   r'  Úmsg_descr   rí   Ú	enum_descÚexpected_enum_full_namer2  rÌ   r‹   Ú
value_descr'   r'   r(   r&  œ  s   

úzEnumType.CheckTypeN©r  r  r  r  r&  r'   r'   r'   r(   r+  —  s    r+  c                   @   s"   e Zd Z		ddd„Zdd„ ZdS )ÚMessageTypeFNc                 C   s    || _ || _|| _|pg | _d S r±   )Ú	type_dictÚ
field_listÚis_extendabler¦   )r"   r;  r<  r=  r¦   r'   r'   r(   r  ®  s   zMessageType.__init__c           
      C   s  |d u r|j | }d |j|g¡}n|j| }d |j|g¡}| ||j¡ | ||j¡ | ||j¡ | |j|¡ | | j	|j	¡ | j
 ¡ D ]\}}| ||||¡ qHt| jƒD ]\}\}}	|	 |||||¡ qZt| jƒD ]\}\}}	|	 |||||¡ qod S r-  )r!   r/  r   Únested_types_by_namerW   r   r   rX   r0  r=  r;  r%  r&  r1  r<  Ú
CheckFieldr¦   )
r"   r'  Úcontaining_type_descr   rí   ÚdescÚexpected_full_nameÚsubtyper2  r“   r'   r'   r(   r&  µ  s"   

ÿzMessageType.CheckType)FNr9  r'   r'   r'   r(   r:  ¬  s
    
ÿr:  c                   @   r  )Ú	EnumFieldc                 C   s   || _ || _|| _d S r±   )r‹   Ú	type_namerc   )r"   r‹   rE  rc   r'   r'   r(   r  Î  s   
zEnumField.__init__c           	      C   sê   |j | }|j| j }| ||j¡ d |j|g¡}| ||j¡ | ||j¡ | | j|j¡ | t	j
j|j¡ | t	j
j|j¡ | |j¡ | |j| j j|j¡ | |j| j j¡ | ||j¡ | ||j¡ | ||j¡ d S r-  )r]   r  rE  r   r   r/  rW   r2  r‹   r   ÚFieldDescriptorÚ	TYPE_ENUMr3  ÚCPPTYPE_ENUMÚcpp_typera   rb   rŠ   rc   rY   rZ   rX   r_   r0  )	r"   r'  r5  r   r2  rí   Ú
field_descr6  Úexpected_field_full_namer'   r'   r(   r?  Ó  s&   

ÿÿzEnumField.CheckFieldN©r  r  r  r  r?  r'   r'   r'   r(   rD  Ì  s    rD  c                   @   r  )ÚMessageFieldc                 C   ó   || _ || _d S r±   )r‹   rE  )r"   r‹   rE  r'   r'   r(   r  é  ó   
zMessageField.__init__c           	      C   sÌ   |j | }|j| j }| ||j¡ d |j|g¡}| ||j¡ | ||j¡ | | j|j¡ | t	j
j|j¡ | t	j
j|j¡ | |j¡ | ||j¡ | ||j¡ | ||j¡ | |jd ¡ d S r-  )r]   r>  rE  r   r   r/  rW   r2  r‹   r   rF  ÚTYPE_MESSAGEr3  ÚCPPTYPE_MESSAGErI  rY   rb   rX   r^   r0  rc   )	r"   r'  r5  r   r2  rí   rJ  Úfield_type_descrK  r'   r'   r(   r?  í  s    

ÿzMessageField.CheckFieldNrL  r'   r'   r'   r(   rM  ç  ó    rM  c                   @   r  )ÚStringFieldc                 C   rN  r±   )r‹   rc   )r"   r‹   rc   r'   r'   r(   r    rO  zStringField.__init__c                 C   s¦   |j | }| ||j¡ d |j|g¡}| ||j¡ | ||j¡ | | j|j¡ | tjj	|j
¡ | tjj|j¡ | |j¡ | | j|j¡ | ||j¡ d S r-  )r]   r   r   r/  rW   r2  r‹   r   rF  ÚTYPE_STRINGr3  ÚCPPTYPE_STRINGrI  ra   rb   rc   r0  ©r"   r'  r5  r   r2  rí   rJ  rK  r'   r'   r(   r?    s   

ÿzStringField.CheckFieldNrL  r'   r'   r'   r(   rT  ÿ  rS  rT  c                   @   r  )ÚExtensionFieldc                 C   rN  r±   )r‹   Úextended_type)r"   r‹   rY  r'   r'   r(   r    rO  zExtensionField.__init__c                 C   sÐ   |j | }| ||j¡ d |j|g¡}| ||j¡ | | j|j¡ | ||j¡ | tjj	|j
¡ | tjj|j¡ | |j¡ | |j¡ | ||j¡ | ||j¡ | | j|jj¡ | ||j¡ d S r-  )rž   r   r   r/  rW   r‹   r2  r   rF  rP  r3  rQ  rI  rY   rb   ra   Úis_extensionÚextension_scoper^   rY  rX   r0  rW  r'   r'   r(   r?    s    

ÿzExtensionField.CheckFieldNrL  r'   r'   r'   r(   rX    rS  rX  c                   @   s¬   e Zd Zdd„ Ze e ¡ dkd¡dd„ ƒZdd„ Z	e e ¡ dkd¡d	d
„ ƒZ
e e ¡ dkd¡dd„ ƒZe e ¡ dkd¡dd„ ƒZdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚAddDescriptorTestc                 C   s¾   t  ¡ }| tjj¡ |  d| |d ¡j¡ |  	t
¡� | |d ¡ W d   ƒ n1 s.w   Y  | tjjj¡ |  d| |d ¡j¡ |  d| d¡j¡ |  d| |d ¡j¡ d S )Nr  z,protobuf_unittest.TestAllTypes.NestedMessager7   )r   r³   r  r   ræ   rÆ   r   rU   rW   r-   r.   ÚNestedMessager   r   r9   ©r"   Úprefixr   r'   r'   r(   Ú_TestMessage.  óH   ÿýÿÿÿýÿýÿýzAddDescriptorTest._TestMessagerr   z7With the cpp implementation, Add() must be called firstc                 C   ó   |   d¡ |   d¡ d S ©Nrq   r.  )r`  r/   r'   r'   r(   ÚtestMessageL  ó   
zAddDescriptorTest.testMessagec                 C   s¾   t  ¡ }| tjj¡ |  d| |d ¡j¡ |  	t
¡� | |d ¡ W d   ƒ n1 s.w   Y  | tjjj¡ |  d| |d ¡j¡ |  d| d¡j¡ |  d| |d ¡j¡ d S )Nr  z(protobuf_unittest.ForeignEnum.NestedEnumz)protobuf_unittest.TestAllTypes.NestedEnumr7   )r   r³   r  r   rù   rÆ   r   r{   rW   r-   r.   ræ   Ú
NestedEnumr   r   r9   r^  r'   r'   r(   Ú	_TestEnumR  ra  zAddDescriptorTest._TestEnumc                 C   rb  rc  )rg  r/   r'   r'   r(   ÚtestEnump  re  zAddDescriptorTest.testEnumc                 C   s`   t  ¡ }|  t¡� | d¡ W d   ƒ n1 sw   Y  | tj¡ |  d| d¡j	¡ d S )Nr6   )
r   r³   r-   r.   r}   r  r   Ú_TESTSERVICEr   rW   ©r"   r   r'   r'   r(   ÚtestServicev  s   ÿ
þzAddDescriptorTest.testServicec                 C   sb   t  ¡ }| tj¡ |  d| d¡j¡ |  t	¡� | 
d¡ W d   ƒ d S 1 s*w   Y  d S )Nr7   r  )r   r³   ÚAddFileDescriptorr   rÆ   r   r   r   r-   r.   r9   rj  r'   r'   r(   ÚtestFile�  s   ÿýÿ"ÿzAddDescriptorTest.testFilec                 C   sR   t  ¡ }tjj}|  t|j|¡ t ¡ }tj 	|¡ | 
|¡ |  | |¡¡ d S r±   )r   r³   r   rÆ   r   r-   r.   r   rÇ   ÚCopyToProtor´   ra   )r"   r   Úproto_file_namerÃ   r'   r'   r(   ÚtestEmptyDescriptorPool‘  s   
z)AddDescriptorTest.testEmptyDescriptorPoolc                 C   s
  t  ¡ }tjddd�}|jjdd� | |¡ |  | d¡j	d¡ |  | 
d¡j	d¡ tjdd�}|jjdd�}|jjd	d
tjjtjjd� |jjdd�}|jjddd� |jjdd� t  ¡ }| |¡ |  d| 
d¡j	¡ |  d| d¡j	¡ |  d| d¡j	¡ d S )Nrë   r   )r   r   ÚMessagerì   zpackage.Messagezsome/filename/container.protoÚ
TopMessageÚbbrP   )r   r‹   r3  r‘   ÚTopEnumÚFOREIGN_FOOé   )r   r‹   Ú
TopService)r   r³   r   rÇ   r^   Úaddr´   r   r   r   rU   r“   ÚFieldDescriptorProtoÚ
TYPE_INT32ÚLABEL_OPTIONALr_   rÌ   r®   r{   r}   )r"   r   rí   Ú
file_protoÚmessage_protoÚ
enum_protor'   r'   r(   ÚtestCustomDescriptorPool�  sD   ÿ
ÿÿÿÿü

ÿz*AddDescriptorTest.testCustomDescriptorPoolc                 C   sp   t  ¡ }d}tj|d�}tj}d|jj| _| 	|¡ | 
|¡}| ¡ }|  d|j| j¡ |  || ¡ ¡ d S )Nz9file_descriptor_options_with_custom_descriptor_pool.protorì   Úfoo)r   r³   r   rÇ   r   Úfoo_optionsÚoptionsÚ
ExtensionsÚfoo_namer´   r   Ú
GetOptionsr   r¬   )r"   r   Ú	file_nameÚfile_descriptor_protoÚextension_idrÃ   r‚  r'   r'   r(   Ú1testFileDescriptorOptionsWithCustomDescriptorPool¼  s   

zCAddDescriptorTest.testFileDescriptorOptionsWithCustomDescriptorPoolc                 C   s  t  ¡ }|  t¡� | d¡ W d   ƒ n1 sw   Y  |  t¡� | d¡ W d   ƒ n1 s3w   Y  |  t¡� | d¡ W d   ƒ n1 sMw   Y  |  t¡� | d¡ W d   ƒ n1 sgw   Y  |  t¡� | d¡ W d   ƒ d S 1 s‚w   Y  d S )Nr   )	r   r³   r-   rt   r  r  r  rŸ   rl  rj  r'   r'   r(   ÚtestAddTypeErrorÍ  s    ÿÿÿÿ"ÿz"AddDescriptorTest.testAddTypeErrorN)r  r  r  r`  ÚunittestÚskipIfr   rw   rd  rg  rh  rk  rm  rp  r  r‰  rŠ  r'   r'   r'   r(   r\  ,  s.    ÿ
ÿ
ÿ
	ÿ
r\  rÅ   r   )ÚALPHArP   )rÂ   rR   )ÚEPSILONé   )ÚZETAé   rf  )ÚETAé   )ÚTHETAé   rÁ   rP   r’  Únested_fieldrR   Útheta)rf  ÚDeepNestedMessager�  ÚbetaÚdeep_nested_messageé   r˜  )rf  r]  rÂ   Únested_messager]  T)r=  )ÚGAMMAr›  )ÚDELTArv  )ÚIOTAé	   )ÚKAPPAé
   )ÚLAMBDAé   )ÚMUé   r¥  ÚlambdarŸ  Údeltar�  )rÀ   ÚDescriptorPoolTest2z4google/protobuf/internal/descriptor_pool_test2.protoÚDescriptorPoolTest3)ÚNUé   )ÚXIé   )ÚOMICRONé   )ÚPIé   )ÚRHOé   )ÚSIGMAé   r³  Úsigmar±  Únur­  Údescriptor_pool_testr©   rÀ   )r¦   z,google/protobuf/internal/more_messages.proto)r  r  Ú__main__)-Ú__doc__Ú
__author__rü   Úosrþ   Ú	unittest2r‹  ÚImportErrorÚgoogle.protobufr   r   r   r   Úgoogle.protobuf.internalr   r   r   r	   r
   r   r   r   r   r   r   r   r   Úobjectr   ÚTestCaser  r  r¼   r  r+  r:  rD  rM  rT  rX  r\  rï   rñ   r  Úmainr'   r'   r'   r(   Ú<module>   s
   ÿ   t#ÿ  0

ÿþþþ	ýøþþî

ÿþþþ	ýøþþñëý.

ÿþþþ	ýøþþÿÿîÿÿã
 ÿ