
    )'hW                         d Z 	 	 ddlmZ dZ	 e  G d de
e      Z G d	 d
e      Zy# e$ r	 ddlmZ Y *w xY w# e$ r ddlmZ dZY ;w xY w# e	$ r d ZY Fw xY w)zvDrop-in replacement for collections.AttributedDict by Raymond Hettinger

http://code.activestate.com/recipes/576693/

    )MutableMapping   )	DictMixin   c                     | D ]  }|r y y)NFT )seqelems     f/home/kushmeetdev/Regenta/Chatbot/venv/lib/python3.12/site-packages/dirtyjson/attributed_containers.pyallr      s     	D	     c                        e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
dd	Zd
 Zd Zej                  Zej                   Zej"                  Zej$                  Zej&                  Zd Zd Zedd       Zd Zd Z xZS )AttributedDictc                 X    t         t        |           i | _        | j	                          y N)superr   __init___AttributedDict__attributesclearself	__class__s    r   r   zAttributedDict.__init__    s!    nd,.

r   c                 ^    g x| _         }|d ||gz  }i | _        t        j                  |        y r   )_AttributedDict__end_AttributedDict__mapdictr   )r   ends     r   r   zAttributedDict.clear&   s2    
Sc3


4r   c                 F    | j                  ||       || j                  |<   y r   )__setitem__r   )r   keyvalue
attributess       r   add_with_attributesz"AttributedDict.add_with_attributes,   s"    e$!+#r   c                 8    | j                   j                  |      S r   )r   get)r   r    s     r   r"   zAttributedDict.attributes0   s      $$S))r   c                     || vr-| j                   }|d   }|||gx|d<   x|d<   | j                  |<   t        j                  | ||       y )N   r   )r   r   r   r   )r   r    r!   r   currs        r   r   zAttributedDict.__setitem__3   sS    d?**Cq6D25tS1AADGAc!ftzz#sE*r   c                     t         j                  | |       | j                  j                  |      \  }}}||d<   ||d<   y )Nr   r'   )r   __delitem__r   pop)r   r    prev
next_entrys       r   r*   zAttributedDict.__delitem__:   s=    s# $

s 3T:Q
1r   c              #   Z   K   | j                   }|d   }||ur|d    |d   }||ury y w)Nr   r   r   r   r   r(   s      r   __iter__zAttributedDict.__iter__@   :     jj1v#oq'M7D #o   &++c              #   Z   K   | j                   }|d   }||ur|d    |d   }||ury y w)Nr'   r   r/   r0   s      r   __reversed__zAttributedDict.__reversed__G   r2   r3   c                    | st        d      t        dk(  r6|rt        |       j                         }nEt	        |       j                         }n+|rt        t        |             }nt        t	        |             }| j                  |      }||fS )Nzdictionary is emptyr   )KeyErrorpy_levelreversednextiterr+   )r   lastr    r!   s       r   popitemzAttributedDict.popitemN   sw    011 q=tn))+ 4joo'8D>*4:&Ezr   c                     | D cg c]	  }|| |   g }}| j                   | j                  f}| ` | `t        |       j                         }|\  | _         | _        |r| j                  |f|fS | j                  |ffS c c}w r   )r   r   varscopyr   )r   kitemstmp	inst_dicts        r   
__reduce__zAttributedDict.__reduce__b   s    '+,!!T!W,,jj$**$J
JOO%	!$
DJ>>E8Y66~~x'' -s   A:c                     t        |       S r   )listr   s    r   keyszAttributedDict.keysl   s    Dzr   c                     | s| j                   j                  dS | j                   j                  dt        | j                               dS )Nz()())r   __name__rG   rB   rH   s    r   __repr__zAttributedDict.__repr__u   s8    !^^4466>>22D4FGGr   c                 $    | j                  |       S r   r   rH   s    r   r@   zAttributedDict.copyz   s    ~~d##r   c                 ,     |        }|D ]  }|||<   	 |S r   r   )clsiterabler!   dr    s        r   fromkeyszAttributedDict.fromkeys~   s&    E 	CAcF	r   c           
         t        |t              rct        |       t        |      k(  xrJ t        d t	        t        | j                               t        |j                                     D              S t        j                  | |      S )Nc              3   ,   K   | ]  \  }}||k(    y wr   r   ).0pqs      r   	<genexpr>z(AttributedDict.__eq__.<locals>.<genexpr>   s      3U1aQ3Us   )	
isinstancer   lenr   zipsortedrB   r   __eq__r   others     r   r`   zAttributedDict.__eq__   sm    e^,t9E
* Us 3U#&vdjjl';VEKKM=R#S3U 0U U{{4''r   c                     | |k(   S r   r   ra   s     r   __ne__zAttributedDict.__ne__   s    5=  r   )Tr   )rM   
__module____qualname__r   r   r#   r"   r   r*   r1   r5   r=   rE   rI   r   
setdefaultupdater+   valuesrB   rN   r@   classmethodrU   r`   rd   __classcell__rP   s   @r   r   r      s    ,*+(( %%JF
--CFOOEH
$  (!r   r   c                   0     e Zd Z fdZd fd	Zd Z xZS )AttributedListc                 8    t         t        |           g | _        y r   )r   rm   r   _AttributedList__attributesr   s    r   r   zAttributedList.__init__   s    nd,.r   c                 b    t         t        |   |       | j                  j                  |       y r   )r   rm   appendro   )r   r!   r"   r   s      r   rq   zAttributedList.append   s&    nd*51  ,r   c                      | j                   |   S r   )ro   )r   indexs     r   r"   zAttributedList.attributes   s      ''r   r   )rM   re   rf   r   rq   r"   rk   rP   s   @r   rm   rm      s    -(r   rm   N)__doc__collections.abcr   r   ImportErrorcollectionsr8   UserDictr   	NameErrorr   r   rG   rm   r   r   r   <module>rz      s   
	<? H	m!T9 m!`
(T 
(M  <;<  "H  s4   ( 9 A 69 69 A	A	AA