+
    4O|j!  ã                  ó  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# )zðTools 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ÚSONz®SON 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   "ÚAC:\Users\alokc\chatbot\backend\venv\Lib\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Ø�M‰M˜A˜c™W B t¥y¡m°1Ð5Ö6ñ à˜TŸY™Y vÓ.Õ.Ð.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.   € Ø—k‘kÔ!Ø�K‰K×Ñ˜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ÜØõ	
ð
 —k‘kÑ!Ð!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ÜØõ	
ð
 —J‘J–L‰DˆAØŒ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"   € Ø"Ÿj™jœlÔ+™l‘d�a“™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   € Üˆt‹9�qŒ=ÜÐDÄtÈAÔPSÐTXÓPYÍMÓGZÕZÓ[Ð[ð	Ø•IˆEð
 ˆIØˆøô ô 	ßØ˜A•w’Øð	ú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   € ð	;Üœ˜TŸZ™Z›\Ó*Ó+‰DˆAð ˆGØˆvˆøô ô 	;ÜÐ/Ó0°dÐ:ð	;ú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   € àŠ=ØÜ�U˜G×$Ò$ØŸ™ž‘�Ø�Q“ò &ä�U˜F×#Ò#Û�Ø�(�“ò ó ‘�Ø�Q“ñ çØ�K‰K˜Öñ 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ñ 3˜Cð 3 Dñ 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_   € ô �eœS×!Ò!Ü�t“9¤ E£
Ñ*×XÐX¬t°D·J±J³LÓ/AÄTÈ%Ï+É+Ë-Ó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      # )z‰Convert 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Ó:±E¨q™¨Ö*±EÑ:Ð:Ü˜E¤8×,Ò,Ø:?¿+¹+¼-Ô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‰Ø—J‘J–L‰DˆAÜ˜a¤×)Ò)Ü—M’M !Ó*�Ø�‹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ˆ$ˆt�Vˆ|Õ
ö pr"   