
Q,Qc           @   si  d  Z  d Z d d l Z d d l Z d d l m Z d d l m Z d d l m Z e j	 Z
 e j Z e j Z e j Z d   Z e   Z d   Z d	   Z d
   Z d   Z d   Z d   Z d e f d     YZ d   Z d e f d     YZ d   Z d e f d     YZ d   Z d   Z  d   Z! d   Z" d   Z# d   Z$ d   Z% d   Z& d   Z' d S(   s   Contains helper functions used to create protocol message classes from
Descriptor objects at runtime backed by the protocol buffer C++ API.
s   petar@google.com (Petar Petrov)iN(   t   _net_proto2___python(   t   enum_type_wrapper(   t   messagec           C   s
   t  j   S(   s(   Creates a new DescriptorPool C++ object.(   R    t   NewCDescriptorPool(    (    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyt   GetDescriptorPool2   s    c         C   s   t  j |   S(   s8   Searches for a field descriptor given a full field name.(   t   _poolt   FindFieldByName(   t   full_field_name(    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyt   GetFieldDescriptor:   s    c         C   s   t  j |   d S(   sA   Registers a new proto file in the underlying C++ descriptor pool.N(   R    t	   BuildFile(   t   content(    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyR	   ?   s    c         C   s   t  j |   S(   s:   Searches for extension descriptor given a full field name.(   R   t   FindExtensionByName(   t   full_extension_name(    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyt   GetExtensionDescriptorD   s    c         C   s   t  j |   S(   s/   Creates a new C++ protocol message by its name.(   R    t   NewCMessage(   t   full_message_name(    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyR   I   s    c            s+     f d   }   f d   } t  | |  S(   s3   Returns a scalar property for the given descriptor.c            s   |  j  j    S(   N(   t   _cmsgt	   GetScalar(   t   self(   t   cdescriptor(    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyt   GetterQ   s    c            s   |  j  j   |  d  S(   N(   R   t	   SetScalar(   R   t   value(   R   (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyt   SetterT   s    (   t   property(   R   R   R   (    (   R   sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyt   ScalarPropertyN   s    c            s      f d   } t  |  S(   s4   Returns a Python property the given composite field.c            s_   |  j  j   j d   } | d  k r[ |  j j    }  j d |  } | |  j    j <n  | S(   Nt
   __cmessage(   t   _composite_fieldst   gett   namet   NoneR   t   NewSubMessaget   _concrete_class(   R   t   sub_messaget   cmessage(   R   t   message_type(    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyR   ]   s    (   R   (   R   R#   R   (    (   R   R#   sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyt   CompositePropertyZ   s    t   RepeatedScalarContainerc           B   s   e  Z d  Z d d d g Z d   Z d   Z d   Z d   Z d   Z d	   Z	 d
   Z
 d   Z d   Z d   Z d   Z d   Z d   Z RS(   s%   Container for repeated scalar fields.t   _messaget   _cfield_descriptorR   c         C   s"   | |  _  | j |  _ | |  _ d  S(   N(   R&   R   R'   (   R   t   msgt   cfield_descriptor(    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyt   __init__m   s    	c         C   s   |  j  j |  j |  d  S(   N(   R   t   AddRepeatedScalarR'   (   R   R   (    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyt   appendr   s    	c         C   s"   x | D] } |  j  |  q Wd  S(   N(   R,   (   R   t   sequencet   element(    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyt   extendv   s    c         C   s@   |  t  d  d  d   } | j | |  |  j j |  j |  d  S(   N(   t   sliceR   t   insertR   t   AssignRepeatedScalarR'   (   R   t   keyR   t   values(    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyR1   z   s    c         C   s=   |  t  d  d  d   } | j |  |  j j |  j |  d  S(   N(   R0   R   t   removeR   R2   R'   (   R   R   R4   (    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyR5      s    c         C   s:   |  t  d  d  d   } | | | <|  j j |  j |  d  S(   N(   R0   R   R   R2   R'   (   R   R3   R   R4   (    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyt   __setitem__   s    
c         C   s   |  j  j |  j |  S(   N(   R   t   GetRepeatedScalarR'   (   R   R3   (    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyt   __getitem__   s    c         C   s   |  j  j |  j |  d  S(   N(   R   t   DeleteRepeatedFieldR'   (   R   R3   (    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyt   __delitem__   s    c         C   s   t  |  t d  d  d    S(   N(   t   lenR0   R   (   R   (    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyt   __len__   s    c         C   sH   |  | k r t  St j |  s. t d   n  | |  t d  d  d   k S(   Ns:   Can only compare repeated scalar fields against sequences.(   t   Truet   operatort   isSequenceTypet	   TypeErrorR0   R   (   R   t   other(    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyt   __eq__   s    c         C   s   |  | k S(   N(    (   R   RA   (    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyt   __ne__   s    c         C   s   t  d   d  S(   Ns   unhashable object(   R@   (   R   (    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyt   __hash__   s    c         O   sH   d | k r" | j  d  | d <n  |  j j |  j t |  | |   d  S(   Nt   sort_functiont   cmp(   t   popR   R2   R'   t   sorted(   R   t   argst   kwargs(    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyt   sort   s    (   t   __name__t
   __module__t   __doc__t	   __slots__R*   R,   R/   R1   R5   R6   R8   R:   R<   RB   RC   RD   RK   (    (    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyR%   h   s   													c            s>     f d   }   f d   } d   j  } t | | d | S(   s:   Returns a Python property the given repeated scalar field.c            sJ   |  j  j   j d   } | d  k rF t |     } | |  j    j <n  | S(   N(   R   R   R   R   R%   (   R   t	   container(   R   (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyR      s
    c            s   t  d   j   d  S(   NsI   Assignment not allowed to repeated field "%s" in protocol message object.(   t   AttributeErrorR   (   R   t	   new_value(   R   (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyR      s    s/   Magic attribute generated for "%s" proto field.t   doc(   R   R   (   R   R   R   RS   (    (   R   sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyt   RepeatedScalarProperty   s    t   RepeatedCompositeContainerc           B   s   e  Z d  Z d d d d g Z d   Z d   Z d   Z d   Z d	   Z d
   Z	 d   Z
 d   Z d   Z d   Z d d e d  Z RS(   s(   Container for repeated composite fields.R&   t	   _subclassR'   R   c         C   s+   | |  _  | j |  _ | |  _ | |  _ d  S(   N(   R&   R   RV   R'   (   R   R(   R)   t   subclass(    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyR*      s    		c         K   s1   |  j  j |  j  } |  j d | d |  j |  S(   NR   t   __owner(   R   t
   AddMessageR'   RV   R&   (   R   RJ   R"   (    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyt   add   s    c         C   s(   x! | D] } |  j    j |  q Wd S(   s{   Extends by appending the given sequence of elements of the same type
    as this one, copying each individual message.
    N(   RZ   t	   MergeFrom(   R   t   elem_seqR   (    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyR/      s    c         C   s*   |  j  |  t d  d  d   j |   d  S(   N(   R:   R0   R   t   index(   R   R   (    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyR5      s    c         C   s)   x" | D] } |  j    j |  q Wd  S(   N(   RZ   R[   (   R   RA   R   (    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyR[      s    c         C   so   |  j  j |  j |  } |  j } t | t  sF | d | d |  j  Sg  | D] } | d | d |  j  ^ qM S(   NR   RX   (   R   t   GetRepeatedMessageR'   RV   t
   isinstancet   listR&   (   R   R3   t	   cmessagesRW   t   m(    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyR8      s    		c         C   s   |  j  j |  j |  d  S(   N(   R   R9   R'   (   R   R3   (    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyR:      s    	c         C   s   |  j  j |  j  S(   N(   R   t   FieldLengthR'   (   R   (    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyR<      s    c         C   sg   |  | k r t  St | |  j  s1 t d   n  |  t d d d  } | t d d d  } | | k S(   s/   Compares the current instance with another one.sS   Can only compare repeated composite fields against other repeated composite fields.N(   R=   R_   t	   __class__R@   R0   R   (   R   RA   t   messagest   other_messages(    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyRB      s    c         C   s   t  d   d  S(   Ns   unhashable object(   R@   (   R   (    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyRD      s    c   	         s   | d  k r* d | k r* | j d  } n    d  k rB  j } n    f d   } t t    } | j d | d | d |  xO t |  D]A \ } } | | k r q n   j j  j	 | |  | | | <q Wd  S(   NRE   c            s      |   S(   N(    (   t   i(   R3   R   (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyt   <lambda>  s    RF   R3   t   reverse(
   R   RG   R8   t   rangeR;   RK   t	   enumerateR   t   SwapRepeatedFieldElementsR'   (	   R   RF   R3   Ri   RJ   t	   index_keyt   indexest   destt   src(    (   R3   R   sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyRK      s    N(   RL   RM   RN   RO   R*   RZ   R/   R5   R[   R8   R:   R<   RB   RD   R   t   FalseRK   (    (    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyRU      s   											c            sA      f d   }   f d   } d   j  } t | | d | S(   sA   Returns a Python property for the given repeated composite field.c            sP   |  j  j   j d   } | d  k rL t |     j  } | |  j    j <n  | S(   N(   R   R   R   R   RU   R    (   R   RP   (   R   R#   (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyR     s    c            s   t  d   j   d  S(   NsI   Assignment not allowed to repeated field "%s" in protocol message object.(   RQ   R   (   R   RR   (   R   (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyR     s    s/   Magic attribute generated for "%s" proto field.RS   (   R   R   (   R   R#   R   R   RS   (    (   R   R#   sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyt   RepeatedCompositeProperty  s    t   ExtensionDictc           B   sM   e  Z d  Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 RS(   s4   Extension dictionary added to each protocol message.c         C   s"   | |  _  | j |  _ i  |  _ d  S(   N(   R&   R   t   _values(   R   R(   (    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyR*   (  s    	c         C   s   d d l  m } t | | j  s8 t d | f   n  | j } | j t k s_ | j t	 k rx t
 d | j f   n  |  j j | |  | |  j | <d  S(   Ni(   t
   descriptors   Bad extension %r.s1   Extension %r is repeated and/or a composite type.(   t   google.protobufRu   R_   t   FieldDescriptort   KeyErrort   _cdescriptort   labelt   _LABEL_OPTIONALt   cpp_typet   _CPPTYPE_MESSAGER@   t	   full_nameR   R   Rt   (   R   t	   extensionR   Ru   R   (    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyR6   -  s    	c         C   s   d d l  m } t | | j  s8 t d | f   n  | j } | j t k ro | j t	 k ro |  j
 j |  S|  j j | d   } | d  k	 r | S|  j |  } | |  j | <| S(   Ni(   Ru   s   Bad extension %r.(   Rv   Ru   R_   Rw   Rx   Ry   Rz   t   _LABEL_REPEATEDR|   R}   R   R   Rt   R   R   t   _CreateNewHandle(   R   R   Ru   R   t   ext(    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyR8   9  s    	c         C   sk   d d l  m } t | | j  s8 t d | f   n  |  j j | j  | |  j k rg |  j | =n  d  S(   Ni(   Ru   s   Bad extension %r.(	   Rv   Ru   R_   Rw   Rx   R   t   ClearFieldByDescriptorRy   Rt   (   R   R   Ru   (    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyt   ClearExtensionK  s    c         C   sK   d d l  m } t | | j  s8 t d | f   n  |  j j | j  S(   Ni(   Ru   s   Bad extension %r.(   Rv   Ru   R_   Rw   Rx   R   t   HasFieldByDescriptorRy   (   R   R   Ru   (    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyt   HasExtensionS  s    c         C   s   |  j  j j | d  S(   s   Tries to find a known extension with the specified name.

    Args:
      name: Extension full name.

    Returns:
      Extension field descriptor.
    N(   R&   t   _extensions_by_nameR   R   (   R   R   (    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyt   _FindExtensionByNameY  s    	c         C   s   | j  } | j t k rL | j t k rL |  j j |  } | j j d |  S| j t k r | j t k r t	 |  j
 | | j j  St |  j
 |  Sn  t s t  d  S(   NR   (   Ry   Rz   R   R|   R}   R   R   R#   R    RU   R&   R%   Rq   t   AssertionErrorR   (   R   R   R   R"   (    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyR   d  s    	(
   RL   RM   RN   R*   R6   R8   R   R   R   R   (    (    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyRs   %  s   						c         C   s+   t  | |  t | |  t | |  |  S(   s'   Creates a new protocol message *class*.(   t&   _AddClassAttributesForNestedExtensionst   _AddEnumValuest   _AddDescriptors(   t   basest   message_descriptort
   dictionary(    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyt
   NewMessagev  s    c            sM   i    _  t |     t |     t |     t j     f d    d S(   sF   Constructs a new message instance (called before instance's __init__).c            s     d |  j    f S(   N(    (   t   __getstate__(   t   obj(   t   cls(    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyRh     s    N(   R   t   _AddInitMethodt   _AddMessageMethodst   _AddPropertiesForExtensionst   copy_regt   pickle(   R   R   (    (   R   sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyt   InitMessage~  s
    	c         C   si   i  | d <x+ |  j  D]  } t | j  | d | j <q Wt | d j    d d d d d g | d <d S(	   s   Sets up a new protocol message class dictionary.

  Args:
    message_descriptor: A Descriptor instance describing this message type.
    dictionary: Class dictionary to which we'll add a '__slots__' entry.
  t   __descriptorsR   t   _ownerR   t
   Extensionst   _HACK_REFCOUNTSRO   N(   t   fieldsR   R~   R   R`   t   iterkeys(   R   R   t   field(    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyR     s    
c         C   sR   xK |  j  D]@ } t j |  | | j <x! | j D] } | j | | j <q0 Wq
 Wd S(   s   Sets class-level attributes for all enum fields defined in this message.

  Args:
    message_descriptor: Descriptor object for this message type.
    dictionary: Class dictionary that should be populated.
  N(   t
   enum_typesR   t   EnumTypeWrapperR   R4   t   number(   R   R   t	   enum_typet
   enum_value(    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyR     s    c         C   sF   |  j  } x6 | j   D]( \ } } | | k s4 t  | | | <q Wd S(   s0   Adds class attributes for the nested extensions.N(   t   extensions_by_namet	   iteritemsR   (   R   R   t   extension_dictt   extension_namet   extension_field(    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyR     s    	c            s   x   j  D] } | j | j } | j t k rb | j t k rS t | | j  } q t	 |  } n0 | j t k r t
 | | j  } n t |  } t | | j |  | j j   d } t | | | j  q
 W  f d   } d | _ d | _ | | _ d S(   s   Adds an __init__ method to cls.t   _FIELD_NUMBERc            s{  | j  d d  } | r$ | |  _ n t   j  |  _ | j  d d  } | rZ | |  _ n    j ru t |   |  _ n	 |  |  _	 i  |  _
 x | j   D] \ } } |  j j | d  } | s t d |   n  | j t k r;| j t k r"t |  |  } x: | D] } | j   j |  qWqst |  |  j |  q | j t k rct |  |  j |  q t |  | |  q Wd S(   s   Message constructor.R   RX   s#   Protocol message has no "%s" field.N(   RG   R   R   R   R~   R   t   is_extendableRs   R   R   R   R   R   R   t
   ValueErrorRz   R   R|   R}   t   getattrRZ   R[   R/   t   setattr(   R   RJ   R"   t   ownert
   field_namet   field_valuet   field_cdescriptort   val(   R   (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyt   Init  s0    			N(   R   R   R   Rz   R   R|   R}   Rr   R#   RT   R$   R   R   t   upperR   R   RM   RN   R*   (   R   R   R   R   R   t   constant_nameR   (    (   R   sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyR     s     	'		c         C   sU   |  j  oT |  j j oT |  j j   j oT |  j t k oT |  j |  j k oT |  j	 t
 k S(   s-   Checks if a field is a message set extension.(   t   is_extensiont   containing_typet   has_optionst
   GetOptionst   message_set_wire_formatt   typet   _TYPE_MESSAGER#   t   extension_scopeRz   R{   (   R   (    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyt   _IsMessageSetExtension  s    	c            s]  |  j  r d   } d   } n  d   } d   } d   } d d  } d   } d   }	 d	   }
 d
   }   f d   } d   } d   } d   }   f d   } d   } d   } d   } d   } d   } d   } xB t   j   j   D]+ \ } } | d k r t   | |  q q W  f d   } t |    _   f d   } t |    _ d S(   s-   Adds the methods to a protocol message class.c         S   s   |  j  j |  d  S(   N(   R   R   (   R   R   (    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyR      s    c         S   s   |  j  j |  S(   N(   R   R   (   R   R   (    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyR     s    c         S   s   |  j  j |  S(   N(   R   t   HasField(   R   R   (    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyR     s    c         S   s   d  } | |  j k ro |  j | } |  j | =|  j | } | j t k ro | j t k ro d  | _ | j } qo n  | d  k	 r |  j j	 | |  n |  j j	 |  d  S(   N(
   R   R   R   Rz   R   R|   R}   R   R   t
   ClearField(   R   R   t   child_cmessaget   child_fieldt   child_cdescriptor(    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyR   	  s    
	c         S   s   g  } xj |  j  j   D]Y \ } } |  j | } | j t k r | j t k r d  | _ | j	 | | j
 f  q q W|  j  j   |  j
 j |  d  S(   N(   R   R   R   Rz   R   R|   R}   R   R   R,   R   t   cleart   Clear(   R   t   cmessages_to_releaseR   R   R   (    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyR     s    	c         S   s9   |  j  j   r t S| d  k	 r5 | j |  j    n  t S(   N(   R   t   IsInitializedR=   R   R/   t   FindInitializationErrorsRq   (   R   t   errors(    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyR   '  s
    c         S   sJ   |  j    s= t j d |  j j d j |  j    f   n  |  j j   S(   Ns)   Message %s is missing required fields: %st   ,(   R   R   t   EncodeErrorR   R~   t   joinR   t   SerializeToString(   R   (    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyR   .  s
    (c         S   s   |  j  j   S(   N(   R   t   SerializePartialToString(   R   (    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyR   5  s    c         S   s   |  j    |  j |  d  S(   N(   R   t   MergeFromString(   R   t
   serialized(    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyt   ParseFromString8  s    
c         S   s4   |  j  j |  } | d k  r0 t j d   n  | S(   Ni    s   Unable to merge from string.(   R   R   R   t   DecodeError(   R   R   t	   byte_size(    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyR   <  s    c            sK   t  |    s4 t d   j t |  j f   n  |  j j | j  d  S(   NsL   Parameter to MergeFrom() must be instance of same class: expected %s got %s.(   R_   R@   RL   R   R   R[   (   R   R(   (   R   (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyR[   B  s
    c         S   s   |  j  j | j   d  S(   N(   R   t   CopyFrom(   R   R(   (    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyR   I  s    c         S   s   |  j  j   S(   N(   R   t   ByteSize(   R   (    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyR   L  s    c         S   s   |  j  j   S(   N(   R   t   SetInParent(   R   (    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyR   O  s    c            s   g  } |  j  j   }   j j } xj | D]b \ } } | rd   j | } | j | |  j | f  q( | | } | j | t |  |  f  q( W| j d d    | S(   NR3   c         S   s   |  d j  S(   Ni    (   R   (   t   item(    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyRh   ^  s    (	   R   t
   ListFieldst
   DESCRIPTORt   fields_by_nameR   R,   R   R   RK   (   R   t
   all_fieldst
   field_listR   R   R   R   t   field_descriptor(   R   (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyR   R  s    
c         S   s   |  j  j   S(   N(   R   R   (   R   (    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyR   a  s    c         S   s   |  j  j   S(   N(   R   t   DebugString(   R   (    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyt   __str__d  s    c         S   s<   |  | k r t  St | |  j  s& t S|  j   | j   k S(   N(   R=   R_   Rd   Rq   R   (   R   RA   (    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyRB   g  s
    c         S   s   |  | k S(   N(    (   R   RA   (    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyRC   n  s    c         S   s   t  d   d  S(   Ns   unhashable object(   R@   (   R   (    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyRD   q  s    c         S   s,   d d l  m } | j |  d t j d  S(   Ni(   t   text_formatt   as_utf8s   utf-8(   Rv   R   t   MessageToStringR=   t   decode(   R   R   (    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyt   __unicode__t  s    R3   R   t   __builtins__RL   RN   c            sB     j  |  _ |    j |  j <t |   r> |    j |  j j <n  d  S(   N(   R   R   R   R~   R   R#   (   t   extension_handle(   R   (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyt   RegisterExtension  s    c            s       } | j  |   | S(   N(   R   (   t   stringR(   (   R   (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyt
   FromString  s    	N(   s   keys   values   __builtins__s   __name__s   __doc__(	   R   R   t   localst   copyR   R   t   staticmethodR   R   (   R   R   R   R   R   R   R   R   R   R   R   R   R[   R   R   R   R   R   R   RB   RC   RD   R   R3   R   R   R   (    (   R   sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyR     s:    																		"c         C   sM   |  j  } x= | j   D]/ \ } } | j   d } t | | | j  q Wd S(   s=   Adds properties for all fields in this protocol message type.R   N(   R   R   R   R   R   (   R   R   R   R   R   R   (    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyR     s    	((   RN   t
   __author__R   R>   t   google.protobuf.internalR    R   Rv   R   t   LABEL_REPEATEDR   t   LABEL_OPTIONALR{   t   CPPTYPE_MESSAGER}   t   TYPE_MESSAGER   R   R   R   R	   R   R   R   R$   t   objectR%   RT   RU   Rr   Rs   R   R   R   R   R   R   R   R   R   (    (    (    sH   /usr/lib/python2.7/site-packages/google/protobuf/internal/cpp_message.pyt   <module>!   s@   												A	W	Q							F	
	