3
Šãde²  ã               @   sÎ  d Z dZddlZddlmZ ddlZddlZddlmZ ddl	Z	ddl
Z
ddlmZ ddlmZ ddlmZ d	ZeejjejjejjejjgƒZeejjejjgƒZeejjejjgƒZd
ZdZdZe	jdƒZ e	jdƒZ!G dd„ de"ƒZ#G dd„ de#ƒZ$G dd„ de#ƒZ%d>dd„Z&d?dd„Z'dd„ Z(G dd„ de)ƒZ*dd „ Z+d!d"„ Z,d#d$„ Z-d@d%d&„Z.dAd'd(„Z/e0e1fZ2G d)d*„ d*e)ƒZ3dBd+d,„Z4d-d.„ Z5d/d0„ Z6d1d2„ Z7d3d4gd5d6gd5d6gd7d8gd9d:gd5d6gd;d<gd=œZ8dS )Cat  Contains routines for printing protocol messages in JSON format.

Simple usage example:

  # Create a proto object and serialize it to a json format string.
  message = my_proto_pb2.MyMessage(foo='bar')
  json_string = json_format.MessageToJson(message)

  # Parse a json format string to proto object.
  message = json_format.Parse(json_string, my_proto_pb2.MyMessage())
zjieluo@google.com (Jie Luo)é    N)ÚOrderedDict)Úmethodcaller)Útype_checkers)Ú
descriptor)Úsymbol_databasez%Y-%m-%dT%H:%M:%SÚInfinityz	-InfinityÚNaNu.   [í €-í¯¿](?![í°€-í¿¿])|(?<![í €-í¯¿])[í°€-í¿¿]z\[[a-zA-Z0-9\._]*\]$c               @   s   e Zd ZdZdS )ÚErrorz'Top-level module error for json_format.N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__© r   r   úR/var/www/agendate/envp3/lib/python3.6/site-packages/google/protobuf/json_format.pyr	   N   s   r	   c               @   s   e Zd ZdZdS )ÚSerializeToJsonErrorz&Thrown if serialization to JSON fails.N)r
   r   r   r   r   r   r   r   r   R   s   r   c               @   s   e Zd ZdZdS )Ú
ParseErrorz Thrown in case of parsing error.N)r
   r   r   r   r   r   r   r   r   V   s   r   Fé   c       	      C   s    t |||||d�}|j| ||ƒS )aR  Converts protobuf message to JSON format.

  Args:
    message: The protocol buffers message instance to serialize.
    including_default_value_fields: If True, singular primitive fields,
        repeated fields, and map fields will always be serialized.  If
        False, only serialize non-empty fields.  Singular message fields
        and oneof fields are not affected by this option.
    preserving_proto_field_name: If True, use the original proto field
        names as defined in the .proto file. If False, convert the field
        names to lowerCamelCase.
    indent: The JSON object will be pretty-printed with this indent level.
        An indent level of 0 or negative will only insert newlines.
    sort_keys: If True, then the output will be sorted by field names.
    use_integers_for_enums: If true, print integers instead of enum names.
    descriptor_pool: A Descriptor Pool for resolving types. If None use the
        default.
    float_precision: If set, use this to specify float field valid digits.

  Returns:
    A string containing the JSON formatted protocol buffer message.
  )Úfloat_precision)Ú_PrinterÚToJsonString)	ÚmessageÚincluding_default_value_fieldsÚpreserving_proto_field_nameÚindentÚ	sort_keysÚuse_integers_for_enumsÚdescriptor_poolr   Úprinterr   r   r   ÚMessageToJsonZ   s    r   c             C   s   t |||||d�}|j| ƒS )a¿  Converts protobuf message to a dictionary.

  When the dictionary is encoded to JSON, it conforms to proto3 JSON spec.

  Args:
    message: The protocol buffers message instance to serialize.
    including_default_value_fields: If True, singular primitive fields,
        repeated fields, and map fields will always be serialized.  If
        False, only serialize non-empty fields.  Singular message fields
        and oneof fields are not affected by this option.
    preserving_proto_field_name: If True, use the original proto field
        names as defined in the .proto file. If False, convert the field
        names to lowerCamelCase.
    use_integers_for_enums: If true, print integers instead of enum names.
    descriptor_pool: A Descriptor Pool for resolving types. If None use the
        default.
    float_precision: If set, use this to specify float field valid digits.

  Returns:
    A dict representation of the protocol buffer message.
  )r   )r   Ú_MessageToJsonObject)r   r   r   r   r   r   r   r   r   r   ÚMessageToDict‚   s    r    c             C   s"   | j tjjko | jjo | jjƒ jS )N)Útyper   ÚFieldDescriptorZTYPE_MESSAGEÚmessage_typeZhas_optionsZ
GetOptionsZ	map_entry)Úfieldr   r   r   Ú_IsMapEntry¨   s    r%   c               @   sj   e Zd ZdZd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 )r   z)JSON format printer for protocol message.FNc             C   s4   || _ || _|| _|| _|r*dj|ƒ| _nd | _d S )Nz.{}g)r   r   r   r   ÚformatÚfloat_format)Úselfr   r   r   r   r   r   r   r   Ú__init__±   s    z_Printer.__init__c             C   s   | j |ƒ}tj|||d�S )N)r   r   )r   ÚjsonÚdumps)r(   r   r   r   Újsr   r   r   r   Á   s    
z_Printer.ToJsonStringc             C   sL   |j }|j}t|ƒr| j|ƒS |tkr<tt| d |ƒ| ƒS i }| j||ƒS )zEConverts message to an object according to Proto3 JSON Specification.r   )Ú
DESCRIPTORÚ	full_nameÚ_IsWrapperMessageÚ_WrapperMessageToJsonObjectÚ_WKTJSONMETHODSr   Ú_RegularMessageToJsonObject)r(   r   Úmessage_descriptorr.   r,   r   r   r   r   Å   s    
z_Printer._MessageToJsonObjectc                sà  |j ƒ }�yšxä|D ]Ü\‰ }ˆjr(ˆ j}nˆ j}tˆ ƒr”ˆ jjd }i }xB|D ]:}t|tƒrj|rdd}	qrd}	nt	|ƒ}	ˆj
||| ƒ||	< qLW |||< qˆ jtjjkr¼‡ ‡fdd„|D ƒ||< qˆ jrÞdˆ j }ˆj
ˆ |ƒ||< qˆj
ˆ |ƒ||< qW ˆj�r¢|j}
x |
jD ]–‰ ˆ jtjjk�r,ˆ jtjjk�sˆ j�r8�qˆj�rHˆ j}nˆ j}||k�r\�qtˆ ƒ�rpi ||< n,ˆ jtjjk�rŠg ||< nˆj
ˆ ˆ jƒ||< �qW W n6 tk
�rÚ } ztdjˆ j|ƒƒ‚W Y dd}~X nX |S )	z?Converts normal message according to Proto3 JSON Specification.ÚvalueÚtrueÚfalsec                s   g | ]}ˆj ˆ |ƒ‘qS r   )Ú_FieldToJsonObject)Ú.0Úk)r$   r(   r   r   ú
<listcomp>ë   s   z8_Printer._RegularMessageToJsonObject.<locals>.<listcomp>z[%s]z#Failed to serialize {0} field: {1}.N)Ú
ListFieldsr   ÚnameÚ	json_namer%   r#   Úfields_by_nameÚ
isinstanceÚboolÚstrr7   Úlabelr   r"   ÚLABEL_REPEATEDÚis_extensionr.   r   r-   ÚfieldsÚcpp_typeÚCPPTYPE_MESSAGEÚcontaining_oneofÚdefault_valueÚ
ValueErrorr   r&   )r(   r   r,   rE   r4   r<   Zv_fieldZjs_mapÚkeyZrecorded_keyr3   Úer   )r$   r(   r   r2   Ð   s\    







"z$_Printer._RegularMessageToJsonObjectc             C   sB  |j tjjkr| j|ƒS |j tjjkrx| jr0|S |jjdkr@dS |jj	j
|dƒ}|dk	r^|jS |jjdkrn|S tdƒ‚nÆ|j tjjkrª|jtjjkr¤tj|ƒjdƒS |S n”|j tjjkrÀt|ƒS |j tkrÒt|ƒS |j tk�r>tj|ƒ� rü|dk � røtS tS tj|ƒ�rtS |j tjj k�r>| j!�r4t"t#|| j!ƒƒS t$j%|ƒS |S )z<Converts field value according to Proto3 JSON Specification.zgoogle.protobuf.NullValueNÚproto3zKEnum field contains an integer value which can not mapped to an enum value.zutf-8g        )&rF   r   r"   rG   r   ÚCPPTYPE_ENUMr   Ú	enum_typer.   Úvalues_by_numberÚgetr<   ÚfileÚsyntaxr   ÚCPPTYPE_STRINGr!   Ú
TYPE_BYTESÚbase64Ú	b64encodeÚdecodeÚCPPTYPE_BOOLr@   Ú_INT64_TYPESrA   Ú_FLOAT_TYPESÚmathÚisinfÚ_NEG_INFINITYÚ	_INFINITYÚisnanÚ_NANÚCPPTYPE_FLOATr'   Úfloatr&   r   ZToShortestFloat)r(   r$   r4   Ú
enum_valuer   r   r   r7     sB    




z_Printer._FieldToJsonObjectc             C   s�   |j ƒ si S tƒ }|j}||d< t|| jƒ}|j|jƒ |j}|j}t	|ƒr^| j
|ƒ|d< |S |tkr„tt| d |ƒ| ƒ|d< |S | j||ƒS )z<Converts Any message according to Proto3 JSON Specification.z@typer4   r   )r;   r   Útype_urlÚ_CreateMessageFromTypeUrlr   ZParseFromStringr4   r-   r.   r/   r0   r1   r   r2   )r(   r   r,   re   Úsub_messager3   r.   r   r   r   Ú_AnyMessageToJsonObject;  s"    z _Printer._AnyMessageToJsonObjectc             C   s   |j ƒ S )z8Converts message according to Proto3 JSON Specification.)r   )r(   r   r   r   r   Ú_GenericMessageToJsonObjectP  s    z$_Printer._GenericMessageToJsonObjectc             C   sd   |j dƒ}|dks|dkrdS |dkr2| j|jƒS |dkrB|j}n
t||ƒ}|jj| }| j||ƒS )z>Converts Value message according to Proto3 JSON Specification.ÚkindNÚ
null_valueÚ
list_valueÚstruct_value)Z
WhichOneofÚ_ListValueMessageToJsonObjectrl   rm   Úgetattrr-   r>   r7   )r(   r   Úwhichr4   Zoneof_descriptorr   r   r   Ú_ValueMessageToJsonObjectV  s    

z"_Printer._ValueMessageToJsonObjectc                s   ‡ fdd„|j D ƒS )zBConverts ListValue message according to Proto3 JSON Specification.c                s   g | ]}ˆ j |ƒ‘qS r   )rq   )r8   r4   )r(   r   r   r:   h  s   z:_Printer._ListValueMessageToJsonObject.<locals>.<listcomp>)Úvalues)r(   r   r   )r(   r   rn   f  s    
z&_Printer._ListValueMessageToJsonObjectc             C   s.   |j }i }x|D ]}| j|| ƒ||< qW |S )z?Converts Struct message according to Proto3 JSON Specification.)rE   rq   )r(   r   rE   ÚretrK   r   r   r   Ú_StructMessageToJsonObjectk  s
    
z#_Printer._StructMessageToJsonObjectc             C   s   | j |jjd |jƒS )Nr4   )r7   r-   r>   r4   )r(   r   r   r   r   r0   s  s    z$_Printer._WrapperMessageToJsonObject)FFFNN)r
   r   r   r   r)   r   r   r2   r7   rh   ri   rq   rn   rt   r0   r   r   r   r   r   ®   s        

@+r   c             C   s   | j jdkS )Nzgoogle/protobuf/wrappers.proto)rR   r<   )r3   r   r   r   r/   x  s    r/   c             C   s8   i }x.| D ]&\}}||kr(t dj|ƒƒ‚|||< q
W |S )Nz'Failed to load JSON: duplicate key {0}.)r   r&   )r,   Úresultr<   r4   r   r   r   Ú_DuplicateChecker|  s    rv   c             C   sj   t jƒ }|dkr|jn|}| jdƒd }y|j|ƒ}W n" tk
rX   tdj| ƒƒ‚Y nX |j|ƒ}|ƒ S )z"Creates a message from a type URL.Nú/é   z1Can not find message descriptor by type_url: {0}.éÿÿÿÿ)	r   ZDefaultÚpoolÚsplitZFindMessageTypeByNameÚKeyErrorÚ	TypeErrorr&   ZGetPrototype)re   r   Údbrz   Ú	type_namer3   Zmessage_classr   r   r   rf   …  s    
rf   c             C   sj   t | tƒs| jdƒ} ytj| td�}W n4 tk
rZ } ztdjt|ƒƒƒ‚W Y dd}~X nX t	||||ƒS )a¿  Parses a JSON representation of a protocol message into a message.

  Args:
    text: Message JSON representation.
    message: A protocol buffer message to merge into.
    ignore_unknown_fields: If True, do not raise errors for unknown fields.
    descriptor_pool: A Descriptor Pool for resolving types. If None use the
        default.

  Returns:
    The same message passed as argument.

  Raises::
    ParseError: On JSON parsing problems.
  zutf-8)Úobject_pairs_hookzFailed to load JSON: {0}.N)
r?   rA   rX   r*   Úloadsrv   rJ   r   r&   Ú	ParseDict)Útextr   Úignore_unknown_fieldsr   r,   rL   r   r   r   ÚParse“  s    

$r…   c             C   s   t ||ƒ}|j| |ƒ |S )a‰  Parses a JSON dictionary representation into a message.

  Args:
    js_dict: Dict representation of a JSON message.
    message: A protocol buffer message to merge into.
    ignore_unknown_fields: If True, do not raise errors for unknown fields.
    descriptor_pool: A Descriptor Pool for resolving types. If None use the
      default.

  Returns:
    The same message passed as argument.
  )Ú_ParserÚConvertMessage)Zjs_dictr   r„   r   Úparserr   r   r   r‚   ¬  s    
r‚   c               @   s`   e Zd 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S )r†   z(JSON format parser for protocol message.c             C   s   || _ || _d S )N)r„   r   )r(   r„   r   r   r   r   r)   Ç  s    z_Parser.__init__c             C   sT   |j }|j}t|ƒr"| j||ƒ n.|tkrDtt| d ||ƒ| ƒ n| j||ƒ dS )zÒConvert a JSON object into a message.

    Args:
      value: A JSON object.
      message: A WKT or regular protocol message to record the data.

    Raises:
      ParseError: In case of convert problems.
    rx   N)r-   r.   r/   Ú_ConvertWrapperMessager1   r   Ú_ConvertFieldValuePair)r(   r4   r   r3   r.   r   r   r   r‡   Ë  s    
z_Parser.ConvertMessagec             C   s   g }|j }tdd„ |jD ƒƒ}�xÚ|D �]Ð}�y|j|dƒ}|sN|jj|dƒ}| r´tj|ƒr´|jsttdj	|j
ƒƒ‚|dd… }|jj|ƒ}|s´dj|jdƒdd… ƒ}|jj|ƒ}|sà| jrÀw&tdj	|j
|dd	„ |jD ƒƒƒ‚||k� rþtd
j	|j j
|ƒƒ‚|j|ƒ || }	|jdk	�rV|	dk	�rV|jj}
|
|k�rLtdj	|j j
|
ƒƒ‚|j|
ƒ |	dk�rÎ|jtjjk�r’|jj
dk�r’t||jƒ}d|_n:|jtjjk�rÀ|jj
dk�rÀt||jdƒ n|j|jƒ w&t|ƒ�rö|j|jƒ | j|	||ƒ �nF|j tjj!k�rÈ|j|jƒ t"|	t#ƒ�s.tdj	||	ƒƒ‚|jtjjk�rŒx†|	D ]B}t||jƒj$ƒ }|dk�rx|j j
dk�rxtdƒ‚| j%||ƒ �qDW n:x®|	D ]0}|dk�r¨tdƒ‚t||jƒjt&||ƒƒ �q’W nt|jtjjk�r|j'�rì|j| }nt||jƒ}|j(ƒ  | j%|	|ƒ n.|j'�r(t&|	|ƒ|j|< nt||jt&|	|ƒƒ W q& tk
�r’ } z6|�rv|jdk�rvtdj	||ƒƒ‚ntt)|ƒƒ‚W Y dd}~X q& t*k
�rÄ } ztdj	||ƒƒ‚W Y dd}~X q& t+k
�rö } ztdj	||ƒƒ‚W Y dd}~X q&X q&W dS )zöConvert field value pairs into regular message.

    Args:
      js: A JSON object to convert the field value pairs.
      message: A regular protocol message to record the data.

    Raises:
      ParseError: In case of problems converting.
    c             s   s   | ]}|j |fV  qd S )N)r=   )r8   Úfr   r   r   ú	<genexpr>ê  s   z1_Parser._ConvertFieldValuePair.<locals>.<genexpr>Nz)Message type {0} does not have extensionsrx   Ú.zVMessage type "{0}" has no field named "{1}".
 Available Fields(except extensions): {2}c             S   s   g | ]
}|j ‘qS r   )r=   )r8   r‹   r   r   r   r:     s    z2_Parser._ConvertFieldValuePair.<locals>.<listcomp>z9Message type "{0}" should not have multiple "{1}" fields.z?Message type "{0}" should not have multiple "{1}" oneof fields.zgoogle.protobuf.Valuer   zgoogle.protobuf.NullValuez.repeated field {0} must be in [] which is {1}.zAnull is not allowed to be used as an element in a repeated field.zFailed to parse {0} field: {1}.ry   ry   ),r-   ÚdictrE   rQ   r>   Ú_VALID_EXTENSION_NAMEÚmatchZis_extendabler   r&   r.   Z
ExtensionsZ_FindExtensionByNameÚjoinr{   r„   ÚappendrH   r<   rF   r   r"   rG   r#   ro   rk   rN   rO   ÚsetattrÚ
ClearFieldr%   Ú_ConvertMapFieldValuerB   rC   r?   ÚlistÚaddr‡   Ú_ConvertScalarFieldValuerD   ZSetInParentrA   rJ   r}   )r(   r,   r   Únamesr3   Zfields_by_json_namer<   r$   Ú
identifierr4   Z
oneof_namerg   ÚitemrL   r   r   r   rŠ   Þ  s¦    












 z_Parser._ConvertFieldValuePairc             C   sÄ   t |tƒr| rdS y|d }W n tk
r<   tdƒ‚Y nX t|| jƒ}|j}|j}t|ƒrp| j	|d |ƒ n@|t
kr–tt
| d |d |ƒ| ƒ n|d= | j||ƒ ||d< |jƒ |_||_dS )z/Convert a JSON representation into Any message.Nz@typez*@type is missing when parsing any message.r4   rx   )r?   rŽ   r|   r   rf   r   r-   r.   r/   r‰   r1   r   rŠ   ZSerializeToStringr4   re   )r(   r4   r   re   rg   r3   r.   r   r   r   Ú_ConvertAnyMessageT  s&    
z_Parser._ConvertAnyMessagec             C   s>   y|j |ƒ W n* tk
r8 } zt|ƒ‚W Y dd}~X nX dS )z?Convert a JSON representation into message with FromJsonString.N)ZFromJsonStringrJ   r   )r(   r4   r   rL   r   r   r   Ú_ConvertGenericMessagem  s    z_Parser._ConvertGenericMessagec             C   s’   t |tƒr| j||jƒ ntt |tƒr4| j||jƒ nZ|dkrDd|_nJt |tƒrV||_	n8t |t
ƒrh||_n&t |tƒrz||_ntdj|t|ƒƒƒ‚dS )z1Convert a JSON representation into Value message.Nr   z"Value {0} has unexpected type {1}.)r?   rŽ   Ú_ConvertStructMessagerm   r–   Ú_ConvertListValueMessagerl   rk   r@   Z
bool_valuerA   Zstring_valueÚ_INT_OR_FLOATZnumber_valuer   r&   r!   )r(   r4   r   r   r   r   Ú_ConvertValueMessagev  s    




z_Parser._ConvertValueMessagec             C   sF   t |tƒstdj|ƒƒ‚|jdƒ x|D ]}| j||jjƒ ƒ q(W dS )z5Convert a JSON representation into ListValue message.z%ListValue must be in [] which is {0}.rr   N)r?   r–   r   r&   r”   r¡   rr   r—   )r(   r4   r   r›   r   r   r   rŸ   ˆ  s    


z _Parser._ConvertListValueMessagec             C   sH   t |tƒstdj|ƒƒ‚|jƒ  x"|D ]}| j|| |j| ƒ q&W dS )z2Convert a JSON representation into Struct message.z&Struct must be in a dict which is {0}.N)r?   rŽ   r   r&   ZClearr¡   rE   )r(   r4   r   rK   r   r   r   rž   ‘  s    

z_Parser._ConvertStructMessagec             C   s"   |j jd }t|dt||ƒƒ dS )z3Convert a JSON representation into Wrapper message.r4   N)r-   r>   r“   r˜   )r(   r4   r   r$   r   r   r   r‰   �  s    z_Parser._ConvertWrapperMessagec             C   s˜   t |tƒstdj|j|ƒƒ‚|jjd }|jjd }x^|D ]V}t||dƒ}|jt	j
jkrv| j|| t||jƒ| ƒ q:t|| |ƒt||jƒ|< q:W dS )a5  Convert map field value for a message map field.

    Args:
      value: A JSON object to convert the map field value.
      message: A protocol message to record the converted data.
      field: The descriptor of the map field to be converted.

    Raises:
      ParseError: In case of convert problems.
    z-Map field {0} must be in a dict which is {1}.rK   r4   TN)r?   rŽ   r   r&   r<   r#   r>   r˜   rF   r   r"   rG   r‡   ro   )r(   r4   r   r$   Z	key_fieldZvalue_fieldrK   Ú	key_valuer   r   r   r•   ¢  s    

z_Parser._ConvertMapFieldValueN)r
   r   r   r   r)   r‡   rŠ   rœ   r�   r¡   rŸ   rž   r‰   r•   r   r   r   r   r†   Ä  s   v		r†   c             C   sZ  |j tkrt| ƒS |j tkr&t| |ƒS |j tjjkr>t| |ƒS |j tjj	kr®|j
tjjkr–t| tƒrp| jdƒ}n| }|ddt|ƒd    }tj|ƒS tj| ƒr¨tdƒ‚| S n¨|j tjjk�rV|jjj| dƒ}|dk�rPyt| ƒ}|jjj|dƒ}W n* tk
�r   tdj| |jjƒƒ‚Y nX |dk�rP|jjdk�r<|S tdj| |jjƒƒ‚|j S dS )aB  Convert a single scalar field value.

  Args:
    value: A scalar value to convert the scalar field value.
    field: The descriptor of the field to convert.
    require_str: If True, the field value must be a str.

  Returns:
    The converted scalar field value

  Raises:
    ParseError: In case of convert problems.
  zutf-8ó   =é   zUnpaired surrogateNz)Invalid enum value {0} for enum type {1}.rM   )!rF   Ú
_INT_TYPESÚ_ConvertIntegerr[   Ú_ConvertFloatr   r"   rY   Ú_ConvertBoolrT   r!   rU   r?   rA   ÚencodeÚlenrV   Úurlsafe_b64decodeÚ_UNPAIRED_SURROGATE_PATTERNÚsearchr   rN   rO   Zvalues_by_namerQ   ÚintrP   rJ   r&   r.   rR   rS   Únumber)r4   r$   Úrequire_strÚencodedZpadded_valuerd   r¯   r   r   r   r˜   ½  s>    








r˜   c             C   sh   t | tƒr"| jƒ  r"tdj| ƒƒ‚t | tƒrH| jdƒdkrHtdj| ƒƒ‚t | tƒr`tdj| ƒƒ‚t| ƒS )z§Convert an integer.

  Args:
    value: A scalar value to convert.

  Returns:
    The integer value.

  Raises:
    ParseError: If an integer couldn't be consumed.
  zCouldn't parse integer: {0}.ú rx   zCouldn't parse integer: "{0}".z3Bool value {0} is not acceptable for integer field.ry   )	r?   rc   Ú
is_integerr   r&   rA   Úfindr@   r®   )r4   r   r   r   r¦   ó  s    
r¦   c             C   sâ   t | tƒrrtj| ƒrtdƒ‚tj| ƒr@| dkr8tdƒ‚ntdƒ‚|jtjj	krr| t
jkr`tdƒ‚| t
jk rrtdƒ‚| dkr‚tdƒ‚yt| ƒS  tk
rÜ   | tkrªtd	ƒS | tkrºtd
ƒS | tkrÊtdƒS tdj| ƒƒ‚Y nX dS )z!Convert an floating point number.z-Couldn't parse NaN, use quoted "NaN" instead.r   zJCouldn't parse Infinity or value too large, use quoted "Infinity" instead.zLCouldn't parse -Infinity or value too small, use quoted "-Infinity" instead.zFloat value too largezFloat value too smallÚnanz.Couldn't parse float "nan", use "NaN" instead.z-infÚinfzCouldn't parse float: {0}.N)r?   rc   r\   r`   r   r]   rF   r   r"   rb   r   Z
_FLOAT_MAXZ
_FLOAT_MINrJ   r^   r_   ra   r&   )r4   r$   r   r   r   r§     s0    





r§   c             C   s@   |r*| dkrdS | dkrdS t dj| ƒƒ‚t| tƒs<t dƒ‚| S )zÞConvert a boolean value.

  Args:
    value: A scalar value to convert.
    require_str: If True, value must be a str.

  Returns:
    The bool parsed.

  Raises:
    ParseError: If a boolean value couldn't be consumed.
  r5   Tr6   Fz$Expected "true" or "false", not {0}.z&Expected true or false without quotes.)r   r&   r?   r@   )r4   r°   r   r   r   r¨   0  s    
r¨   rh   rœ   ri   r�   rn   rŸ   rt   rž   rq   r¡   )zgoogle.protobuf.Anyzgoogle.protobuf.Durationzgoogle.protobuf.FieldMaskzgoogle.protobuf.ListValuezgoogle.protobuf.Structzgoogle.protobuf.Timestampzgoogle.protobuf.Value)FFr   FFNN)FFFNN)FN)FN)F)9r   Ú
__author__rV   Úcollectionsr   r*   r\   Úoperatorr   ÚreÚsysZgoogle.protobuf.internalr   Zgoogle.protobufr   r   Z_TIMESTAMPFOMATÚ	frozensetr"   ZCPPTYPE_INT32ZCPPTYPE_UINT32ZCPPTYPE_INT64ZCPPTYPE_UINT64r¥   rZ   rb   ZCPPTYPE_DOUBLEr[   r_   r^   ra   Úcompiler¬   r�   Ú	Exceptionr	   r   r   r   r    r%   Úobjectr   r/   rv   rf   r…   r‚   r®   rc   r    r†   r˜   r¦   r§   r¨   r1   r   r   r   r   Ú<module>)   sŽ   
      
"    
  K	
 
 z
6$