
    g9                     <    d Z ddlmZ ddlmZ d Z G d de      Zy)z7Contains _ExtensionDict class to represent extensions.
    )type_checkers)FieldDescriptorc           	         t        |t              st        d|z        |j                  st        d|j                  z        |j
                  st        d|j                  z        |j
                  | j                  urGt        d|j                  d|j
                  j                  d| j                  j                  d      y)	z0Verify that the given extension handle is valid.z3HasExtension() expects an extension handle, got: %sz"%s" is not an extension.z""%s" is missing a containing_type.zExtension "z" extends message type "z ", but this message is of type "z".N)
isinstancer   KeyErroris_extension	full_namecontaining_type
DESCRIPTOR)messageextension_handles     \/var/www/openai/venv/lib/python3.12/site-packages/google/protobuf/internal/extension_dict.py_VerifyExtensionHandler      s     
$o	6
H#$ % % 
	&	&
.1A1K1KK
LL		)	)
7%//0 1 1 %%W-?-??
$..$44>>&&00	2 3 3 @    c                   X    e 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d Zy)_ExtensionDictzDict-like container for Extension fields on proto instances.

  Note that in all cases we expect extension handles to be
  FieldDescriptors.
  c                     || _         y)z^
    Args:
      extended_message: Message instance for which we are the Extensions dict.
    N)_extended_message)selfextended_messages     r   __init__z_ExtensionDict.__init__0   s    
 .Dr   c                     t        | j                  |       | j                  j                  j                  |      }||S |j                  t
        j                  k(  r|j                  | j                        }n|j                  t
        j                  k(  r|j                  }t        |d      sddlm} |j                  |       t        |j                  d      s!ddlm} |j                  |j                         |j                  j                         }	 |j!                  | j                  j"                         n|j&                  S | j                  j                  j)                  ||      }|S # t$        $ r Y 3w xY w)z8Returns the current value of the given extension handle._concrete_classr   )message_factory)r   r   _fieldsgetlabelr   LABEL_REPEATED_default_constructorcpp_typeCPPTYPE_MESSAGEmessage_typehasattrgoogle.protobufr   GetMessageClassr   _SetListener_listener_for_childrenReferenceErrordefault_value
setdefault)r   r   resultr"   r   s        r   __getitem__z_ExtensionDict.__getitem__7   sK    4113CD##++//0@AFm!?!??44T5K5KLf		"	"o&E&E	E%22l\#453''5%224EF3''(8(E(EF,,<<>fD22IIJ +++ ##++66&"F M!  s   %E1 1	E=<E=c                 &   t        || j                        sy| j                  j                         }|j                  j                         }|D cg c]  }|j                  s| }}|D cg c]  }|j                  s| }}||k(  S c c}w c c}w )NF)r   	__class__r   
ListFieldsr   )r   other	my_fieldsother_fieldsfields        r   __eq__z_ExtensionDict.__eq__`   s    eT^^,&&113I**557L %.DI51C1CIID'3J|eu7I7IE|LJ$$ EJs   B	"B	,B>Bc                     | |k(   S N )r   r0   s     r   __ne__z_ExtensionDict.__ne__m   s    u}r   c                     | j                   j                         }|D cg c]  }|d   j                  s| }}t        |      S c c}w )Nr   )r   r/   r   len)r   fieldsr3   extension_fieldss       r   __len__z_ExtensionDict.__len__p   sI    ##..0F+1K6%U1X5J5J6K   Ls
   AAc                     t        d      )Nzunhashable object)	TypeErrorr   s    r   __hash__z_ExtensionDict.__hash__v   s    
'
((r   c                    t        | j                  |       |j                  t        j                  k(  s|j
                  t        j                  k(  rt        d|j                  z        t        j                  |      }|j                  |      | j                  j                  |<   | j                  j                          y)zlIf extension_handle specifies a non-repeated, scalar extension
    field, sets the value of that field.
    zKCannot assign to extension "%s" because it is a repeated or composite type.N)r   r   r   r   r   r    r!   r?   r	   r   GetTypeChecker
CheckValuer   	_Modified)r   r   valuetype_checkers       r   __setitem__z_ExtensionDict.__setitem__}   s    
 4113CD/"@"@@!!_%D%DD.889: : !//0@AL 	& 	""#34$$&r   c                 :    | j                   j                  |       y r6   )r   ClearExtension)r   r   s     r   __delitem__z_ExtensionDict.__delitem__   s    ))*:;r   c                     | j                   j                  }|j                  j                  j                  |   }|j                  |d      S )zTries to find a known extension with the specified name.

    Args:
      name: Extension full name.

    Returns:
      Extension field descriptor.
    N)r   r   filepool_extensions_by_namer   )r   name
descriptor
extensionss       r   _FindExtensionByNamez#_ExtensionDict._FindExtensionByName   s@     ''22J%%99*EJ>>$%%r   c                     | j                   j                  }|j                  j                  j                  |   }|j                  |d      S )zTries to find a known extension with the field number.

    Args:
      number: Extension field number.

    Returns:
      Extension field descriptor.
    N)r   r   rM   rN   _extensions_by_numberr   )r   numberrQ   rR   s       r   _FindExtensionByNumberz%_ExtensionDict._FindExtensionByNumber   s@     ''22J%%;;JGJ>>&$''r   c                 D    d | j                   j                         D        S )Nc              3   D   K   | ]  }|d    j                   r|d      yw)r   N)r   ).0fs     r   	<genexpr>z*_ExtensionDict.__iter__.<locals>.<genexpr>   s)      "=Qt   aD=s    )r   r/   r@   s    r   __iter__z_ExtensionDict.__iter__   s"    "$00;;= " "r   c                    t        | j                  |       || j                  j                  vry|j                  t        j
                  k(  r.t        | j                  j                  j                  |            S |j                  t        j                  k(  r7| j                  j                  j                  |      }|d uxr |j                  S y)NFT)r   r   r   r   r   r   boolr   r    r!   _is_present_in_parent)r   r   rF   s      r   __contains__z_ExtensionDict.__contains__   s    4113CDt55===!?!??$((00445EFGG  O$C$CC$$,,001ABe$>5#>#>>r   N)__name__
__module____qualname____doc__r   r,   r4   r8   r=   rA   rH   rK   rS   rW   r]   ra   r7   r   r   r   r   (   sD    .'R%!)'*<&("
r   r   N)re   google.protobuf.internalr   google.protobuf.descriptorr   r   objectr   r7   r   r   <module>ri      s%    3 632ZV Zr   