U
    S³d†  ã                   @   s\   d Z ddlmZ ejdk	r$ejjZn4ddlmZ ddlmZ G dd„ dƒZG dd	„ d	ƒZdS )
a  Contains Unknown Fields APIs.

Simple usage example:
  unknown_field_set = UnknownFieldSet(message)
  for unknown_field in unknown_field_set:
    wire_type = unknown_field.wire_type
    field_number = unknown_field.field_number
    data = unknown_field.data
é    )Úapi_implementationN)Údecoder)Úwire_formatc                   @   sF   e Zd ZdZdddgZdd„ Zedd„ ƒZed	d
„ ƒZedd„ ƒZ	dS )ÚUnknownFieldzA parsed unknown field.Ú_field_numberÚ
_wire_typeÚ_datac                 C   s   || _ || _|| _d S ©N)r   r   r   )ÚselfÚfield_numberÚ	wire_typeÚdata© r   úB/tmp/pip-unpacked-wheel-1ori_g8k/google/protobuf/unknown_fields.pyÚ__init__8   s    zUnknownField.__init__c                 C   s   | j S r	   )r   ©r
   r   r   r   r   >   s    zUnknownField.field_numberc                 C   s   | j S r	   )r   r   r   r   r   r   B   s    zUnknownField.wire_typec                 C   s   | j S r	   )r   r   r   r   r   r   F   s    zUnknownField.dataN)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__r   Úpropertyr   r   r   r   r   r   r   r   2   s   


r   c                   @   s6   e Zd ZdZdgZdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚUnknownFieldSetzUnknownField container.Ú_valuesc                    sÆ   ‡ fdd„}g ˆ _ |j}|j}|jrd| ¡ jrdt ¡ }|D ]&\}}|t|ƒƒ\}}	||t	j
|	ƒ q:n^|D ]X\}
}t |
d¡\}}t	 |¡\}}|dkržtdƒ‚t t|ƒd|¡\}	}||||	ƒ qhd S )Nc                    s   t | ||ƒ}ˆ j |¡ d S r	   )r   r   Úappend)r   r   r   Zunknown_fieldr   r   r   ÚInternalAddR   s    z-UnknownFieldSet.__init__.<locals>.InternalAddr   zField number 0 is illegal.)r   Z
DESCRIPTORZ_unknown_fieldsZhas_optionsZ
GetOptionsZmessage_set_wire_formatr   ZUnknownMessageSetItemDecoderÚ
memoryviewr   ZWIRETYPE_LENGTH_DELIMITEDZ_DecodeVarintZ	UnpackTagÚRuntimeErrorZ_DecodeUnknownField)r
   Úmsgr   Zmsg_desZunknown_fieldsZlocal_decoderÚ_Úbufferr   r   Z	tag_bytesÚtagr   r   r   r   r   P   s,    ÿ  ÿzUnknownFieldSet.__init__c                 C   s>   t | jƒ}|dk r||7 }|dk s*||kr4tdjƒ‚| j| S )Nr   zindex %d out of range)Úlenr   Ú
IndexErrorÚindex)r
   r$   Úsizer   r   r   Ú__getitem__k   s    

zUnknownFieldSet.__getitem__c                 C   s
   t | jƒS r	   )r"   r   r   r   r   r   Ú__len__t   s    zUnknownFieldSet.__len__c                 C   s
   t | jƒS r	   )Úiterr   r   r   r   r   Ú__iter__w   s    zUnknownFieldSet.__iter__N)	r   r   r   r   r   r   r&   r'   r)   r   r   r   r   r   J   s   	r   )r   Zgoogle.protobuf.internalr   Z	_c_moduler   r   r   r   r   r   r   r   Ú<module>   s   

