U
    T?h7                     @   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   P/var/www/html/venv/lib/python3.8/site-packages/google/protobuf/unknown_fields.py__init__!   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   +   s    zUnknownField.wire_typec                 C   s   | j S r	   )r   r   r   r   r   r   /   s    zUnknownField.dataN)
__name__
__module____qualname____doc__	__slots__r   propertyr   r   r   r   r   r   r   r      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rtdtt|d|\}	}||||	 qhd S )Nc                    s   t | ||} j| d S r	   )r   r   append)r   r   r   Zunknown_fieldr   r   r   InternalAdd;   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   9   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__T   s    

zUnknownFieldSet.__getitem__c                 C   s
   t | jS r	   )r"   r   r   r   r   r   __len__]   s    zUnknownFieldSet.__len__c                 C   s
   t | jS r	   )iterr   r   r   r   r   __iter__`   s    zUnknownFieldSet.__iter__N)	r   r   r   r   r   r   r&   r'   r)   r   r   r   r   r   3   s   	r   )r   Zgoogle.protobuf.internalr   Z	_c_moduler   r   r   r   r   r   r   r   <module>   s   

