+
    8i>                      a  0 t $ R t^ RIHt ^ RIt^ RIt^ RIt^ RIHt	 ^ RI
HtHtHtHtHtHtHtHtHtHtHtHt ]! ]P.                  ! R4      4      tR]R&   ]! R4      t]! R	4      t]! R
4      t ! R R]]]3,          4      tR# )zTools for creating and manipulating SON, the Serialized Ocument Notation.

Regular dictionaries can be used instead of SON objects, but not when the order
of keys is important. A SON object can be used just like a normal Python
dictionary.
)annotationsN)Mapping)AnyDictIterableIteratorr   OptionalPatternTupleTypeTypeVarUnioncast zType[Pattern[Any]]RE_TYPE_Key_Value_Tc                  L  a  ] tR t^3t$ RtR]R&   R1R R lltR V 3R lltR R	 ltR
 R lt	R R lt
R R ltR R ltR R ltR R ltR R ltR R ltR V 3R lltR R ltR R ltR  R! ltR1R" R# lltR1R$ R% lltR& R' ltR( R) ltR* R+ ltR, R- ltR. R/ ltR0tV ;t# )2SONzSON data.

A subclass of dict that maintains ordering of keys and provides a
few extra niceties for dealing with SON. SON provides an API
similar to collections.OrderedDict.
z	list[Any]
_SON__keysc               $    V ^8  d   QhRRRRRR/# )   datazEOptional[Union[Mapping[_Key, _Value], Iterable[Tuple[_Key, _Value]]]]kwargsr   returnNone )formats   "F/var/www/html/photoedit/myenv/lib/python3.14/site-packages/bson/son.py__annotate__SON.__annotate__=   s(      S  
	    c                	    . V n         \        P                  V 4       V P                  V4       V P                  V4       R # N)r   dict__init__update)selfr   r   s   &&,r   r&   SON.__init__=   s/    
 dDFr"   c               (    V ^8  d   QhRRRRRRRR/# )r   clszType[SON[_Key, _Value]]argsr   r   r   SON[_Key, _Value]r   )r   s   "r   r    r!   G   s*      , S C L] r"   c                	>   < \         SV `  ! V .VO5/ VB p. Vn        V# r$   )super__new__r   )r+   r,   r   instance	__class__s   &*, r   r0   SON.__new__G   s'    7?3888r"   c                   V ^8  d   QhRR/# )r   r   strr   )r   s   "r   r    r!   L   s     / /# /r"   c                	    . pV P                    F#  pVP                  R V: RW,          : R24       K%  	  RRP                  V4      ,          # )(z, )z	SON([%s]))r   appendjoin)r(   resultkeys   &  r   __repr__SON.__repr__L   sF    ;;CMMAcWBtym156 TYYv...r"   c               $    V ^8  d   QhRRRRRR/# )r   r<   r   valuer   r   r   r   )r   s   "r   r    r!   R   s!     + +t +F +t +r"   c                	    WP                   9  d   V P                   P                  V4       \        P                  WV4       R # r$   )r   r9   r%   __setitem__)r(   r<   r@   s   &&&r   rB   SON.__setitem__R   s.    kk!KKs#E*r"   c                    V ^8  d   QhRRRR/# )r   r<   r   r   r   r   )r   s   "r   r    r!   W   s     $ $t $ $r"   c                	f    V P                   P                  V4       \        P                  W4       R # r$   )r   remover%   __delitem__r(   r<   s   &&r   rG   SON.__delitem__W   s"    3#r"   c                   V ^8  d   QhRR/# )r   r   r-   r   )r   s   "r   r    r!   [   s      ' r"   c                	<    \        4       pVP                  V 4       V# r$   )r   r'   r(   others   & r   copySON.copy[   s    #&5Tr"   c                   V ^8  d   QhRR/# r   r   zIterator[_Key]r   )r   s   "r   r    r!   c   s      . r"   c              #  	:   "   V P                    R j  xL
  R #  L5ir$   )r   r(   s   &r   __iter__SON.__iter__c   s     ;;s   c                    V ^8  d   QhRRRR/# )r   r<   r   r   boolr   )r   s   "r   r    r!   f   s     " "4 "D "r"   c                	X    \         P                  ! R \        ^R7       WP                  9   # )z8SON.has_key() is deprecated, use the in operator instead
stacklevel)warningswarnDeprecationWarningr   rH   s   &&r   has_keySON.has_keyf   s&    F	

 kk!!r"   c                   V ^8  d   QhRR/# rQ   r   )r   s   "r   r    r!   n   s      . r"   c                	\    \         P                  ! R \        ^R7       V P                  4       # )z;SON.iterkeys() is deprecated, use the keys() method insteadrY   )r[   r\   r]   rT   rS   s   &r   iterkeysSON.iterkeysn   s%    I	

 }}r"   c                   V ^8  d   QhRR/# )r   r   zIterator[_Value]r   )r   s   "r   r    r!   w   s      , r"   c              #  	   "   \         P                  ! R \        ^R7       V P                  4        F	  w  rVx  K  	  R# 5i)z?SON.itervalues() is deprecated, use the values() method insteadrY   N)r[   r\   r]   itemsr(   _vs   &  r   
itervaluesSON.itervaluesw   s3     M	

 JJLDAG !s   =?c                   V ^8  d   QhRR/# )r   r   zlist[_Value]r   )r   s   "r   r    r!      s     , , ,r"   c                	V    V P                  4        UUu. uF  w  rVNK	  	  upp# u uppi r$   )rf   rg   s   &  r   values
SON.values   s"    "jjl+ldal+++s   %c                   V ^8  d   QhRR/# )r   r   r   r   )r   s   "r   r    r!      s      t r"   c                	2   < . V n         \        SV `	  4        R # r$   )r   r/   clear)r(   r2   s   &r   rr   	SON.clear   s    r"   c               $    V ^8  d   QhRRRRRR/# )r   r<   r   defaultr   r   r   )r   s   "r   r    r!      s!      d V  r"   c                	@     W,          #   \          d	    Y T&    T# i ; ir$   KeyErrorr(   r<   ru   s   &&&r   
setdefaultSON.setdefault   s*    	 9 	 I	 s   
 c               $    V ^8  d   QhRRRRRR/# )r   r<   r   r,   zUnion[_Value, _T]r   r   )r   s   "r   r    r!      s#     
 
t 
$5 
:K 
r"   c           	     	    \        V4      ^8  d,   \        R\        ^\        V4      ,           4      ,           4      h W,          pY T#   \         d    T'       d   T^ ,          u # h i ; i)   z&pop expected at most 2 arguments, got )len	TypeErrorreprrx   )r(   r<   r,   r@   s   &&* r   popSON.pop   sf    t9q=DtAPSTXPYMGZZ[[	IE
 I  	Aw	s   A	 	A)	A)'A)c                   V ^8  d   QhRR/# )r   r   zTuple[_Key, _Value]r   )r   s   "r   r    r!      s      , r"   c                	     \        \        V P                  4       4      4      w  rY Y3#   \         d    \	        R 4      Rhi ; i)zcontainer is emptyN)nextiterrf   StopIterationrx   )r(   kri   s   &  r   popitemSON.popitem   sK    	;TZZ\*+DA Gv  	;/0d:	;s	   $+ Ac               $    V ^8  d   QhRRRRRR/# )r   rM   zOptional[Any]r   r   r   r   r   )r   s   "r   r    r!      s!        M  F  t  r"   c                	   Vf   Me\        VR4      '       d   VP                  4        F	  w  r4W@V&   K  	  M5\        VR4      '       d   V F  pW,          W&   K  	  MV F	  w  r4W@V&   K  	  V'       d   V P                  V4       R # R # )Nrf   keys)hasattrrf   r'   )r(   rM   r   r   ri   s   &&,  r   r'   
SON.update   sy    =UG$$Q &UF##(  Q KK r"   c               $    V ^8  d   QhRRRRRR/# )r   r<   r   ru   zOptional[Union[_Value, _T]]r   zUnion[_Value, _T, None]r   )r   s   "r   r    r!      s$      "=	 r"   c                	:     W,          #   \          d    Tu # i ; ir$   rw   ry   s   &&&r   getSON.get   s#    	9 	N	s   
 c                    V ^8  d   QhRRRR/# r   rM   r   r   rW   r   )r   s   "r   r    r!      s     3 3C 3D 3r"   c                   \        V\        4      '       dS   \        V 4      \        V4      8H  ;'       d4    \        V P	                  4       4      \        VP	                  4       4      8H  # \        \        V P                  4       V8H  4      # )zlComparison to another SON is order-sensitive while comparison to a
regular dictionary is order-insensitive.
)
isinstancer   r   listrf   r   rW   to_dictrL   s   &&r   __eq__
SON.__eq__   s_     eS!!t9E
*XXtDJJL/AT%++-EX/XXD$,,.E122r"   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r    r!      s     ! !C !D !r"   c                	    W8X  * # r$   r   rL   s   &&r   __ne__
SON.__ne__   s      r"   c                   V ^8  d   QhRR/# )r   r   intr   )r   s   "r   r    r!      s          r"   c                	,    \        V P                  4      # r$   )r   r   rS   s   &r   __len__SON.__len__   s    4;;r"   c                   V ^8  d   QhRR/# )r   r   dict[_Key, _Value]r   )r   s   "r   r    r!      s     G G+ Gr"   c                L   a R V3R llo\        RS! \        V 4      4      4      # )zConvert a SON document to a normal Python dictionary instance.

This is trickier than just *dict(...)* because it needs to be
recursive.
c                    V ^8  d   QhRRRR/# )r   r@   r   r   r   )r   s   "r   r    !SON.to_dict.<locals>.__annotate__   s     	 	3 	3 	r"   c                   < \        V \        4      '       d   V  Uu. uF  pS! V4      NK  	  up# \        V \        4      '       d,   V P                  4        UUu/ uF  w  r!VS! V4      bK  	  upp# V # u upi u uppi r$   )r   r   _Mappingrf   )r@   ri   r   transform_values   &  r   r   $SON.to_dict.<locals>.transform_value   sk    %&&49:Eq*E::E8,,:?++-H-$!?1---HH	 ;Hs   A3A8r   )r   r%   )r(   r   s   &@r   r   SON.to_dict   s&    	 	 (/$t**EFFr"   c                    V ^8  d   QhRRRR/# )r   memozdict[int, SON[_Key, _Value]]r   r-   r   )r   s   "r   r    r!      s     
 
!= 
BS 
r"   c                	    \        4       p\        V 4      pW19   d	   W,          # W!V&   V P                  4        F5  w  rE\        V\        4      '       g   \
        P                  ! WQ4      pWRV&   K7  	  V# r$   )r   idrf   r   r   rN   deepcopy)r(   r   outval_idr   ri   s   &&    r   __deepcopy__SON.__deepcopy__   sa    !$D><VJJLDAa))MM!*F ! 
r"   )__keysr$   )__name__
__module____qualname____firstlineno____doc____annotations__r&   r0   r=   rB   rG   rN   rT   r^   rb   rj   rn   rr   rz   r   r   r'   r   r   r   r   r   r   __static_attributes____classcell__)r2   s   @r   r   r   3   s      
/+
$", 
  3! G"
 
r"   r   )__conditional_annotations__r   
__future__r   rN   rer[   collections.abcr   r   typingr   r   r   r   r   r	   r
   r   r   r   r   typecompiler   r   r   r   r   r   )r   s   @r   <module>r      s}    #  	  /   " #2::b>2	 2v		T]p$tV|
 pr"   