
    [cn#                        d dl mZ d dlmZ d dlZd dlmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZ d dlmZ d dlmZ d Zd Z G d	 d
e          Z G d de          Z G d de          Z G d de          Z G d de          Zd Zd ZdS )    )defaultdict)MappingN)merge
merge_withvalmapkeymap	update_inassocdissoc	keyfilter	valfilteritemmap
itemfilterassoc_in)identity)raisesc                     | dz   S N    xs    :lib/python3.11/site-packages/toolz/tests/test_dicttoolz.pyincr      s    q5L    c                     | dz  dk    S )N   r   r   )is    r   isevenr      s    q5A:r   c                   t    e Zd ZdZeZi 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d ZdS )TestDictzTest typical usage: dict inputs, no factory keyword.

    Class attributes:
        D: callable that inputs a dict and creates or returns a MutableMapping
        kw: kwargs dict to specify "factory" keyword (if applicable)
    c                     | j         | j        }}t           |ddd           |ddi          fi | |dddd          k    sJ d S Nr   r   r   r         r   r   r%   Dkwr   selfr)   r*   s      r   
test_mergezTestDict.test_merge   sf    2QQ1||__aaAii66266!!aA<N<N:O:OOOOOOOr   c                     | j         | j        }}t           |ddd           |ddi          gfi | |dddd          k    sJ d S r#   r(   r+   s      r   test_merge_iterable_argz TestDict.test_merge_iterable_arg!   si    2aaA!ooqq!Qyy188R88AA!a>P>P<Q<QQQQQQQr   c                    | j         | j        }} |ddd           |ddd          f}t          t          g|R i | |ddd          k    sJ t          t          g|R i | |dd	d          k    sJ  |ddd
d           |ddd          f}t          t          g|R i | |ddd
d          k    sJ t          t          g|R i | |dd	dd          k    sJ t          t                    rJ d S )Nr   r   r$   
            )r   r1   )r   r2   r%   r'   )r%   )r)   r*   r   sumtupler,   r)   r*   dictss       r   test_merge_withzTestDict.test_merge_with%   sl   2aA,,rb>>!2!22#,,,,,,bR..0A0AAAAA%.%...2..!!G4L4L2M2MMMMMaA!$$%%qqRB'8'88#,,,,,,bRA2F2F0G0GGGGG%.%...2..!!GPT4U4U2V2VVVVVc??"""""r   c                 V   | j         | j        }} |ddd           |ddd          f}t          t          g|R i | |ddd          k    sJ t          t          |fi | |ddd          k    sJ t          t          t	          |          fi | |ddd          k    sJ d S )Nr   r   r$   r1   r2   r3   r4   )r)   r*   r   r5   iterr7   s       r   test_merge_with_iterable_argz%TestDict.test_merge_with_iterable_arg1   s    2aA,,rb>>!2!22#,,,,,,bR..0A0AAAAA#u++++qqRB/@/@@@@@#tE{{11b11QQ2"~~5F5FFFFFFFr   c                     | j         | j        }}t          t           |ddd          fi | |ddd          k    sJ d S )Nr   r   r$   r%   )r)   r*   r   r   r+   s      r   test_valmapzTestDict.test_valmap8   T    2c11q\\??11b11QQ1||__DDDDDDr   c                     | j         | j        }}t          t           |ddd          fi | |ddd          k    sJ d S )Nr   r   r$   )r   r%   )r)   r*   r   r   r+   s      r   test_keymapzTestDict.test_keymap<   r?   r   c                     | j         | j        }}t          t           |ddd          fi | |ddd          k    sJ d S )Nr   r&   r$   r   )r   r&   )r)   r*   r   reversedr+   s      r   test_itemmapzTestDict.test_itemmap@   sT    2xqQ<<77B7711q\\??JJJJJJr   c                     | j         | j        }}t          t           |ddd          fi | |ddi          k    sJ d S )Nr   r%   r$   r   )r)   r*   r   r   r+   s      r   test_valfilterzTestDict.test_valfilterD   R    2qQ<<77B7711aV99DDDDDDr   c                     | j         | j        }}t          t           |ddd          fi | |ddi          k    sJ d S )Nr   r%   r$   )r)   r*   r   r   r+   s      r   test_keyfilterzTestDict.test_keyfilterH   rG   r   c                     | j         | j        }}t          d  |ddd          fi | |ddi          k    sJ t          d  |ddd          fi | |ddi          k    sJ d S )Nc                 ,    t          | d                   S )Nr   r   items    r   <lambda>z*TestDict.test_itemfilter.<locals>.<lambda>N       vd1g r   r   r%   r$   c                 ,    t          | d                   S r   rL   rM   s    r   rO   z*TestDict.test_itemfilter.<locals>.<lambda>O   rP   r   r   )r)   r*   r   r+   s      r   test_itemfilterzTestDict.test_itemfilterL   s    266aA,,NN2NNRSRSUVXYTZR[R[[[[[66aA,,NN2NNRSRSUVXYTZR[R[[[[[[[r   c                 j   | j         | j        }}t           |i           ddfi | |ddi          k    sJ t           |ddi          ddfi | |ddi          k    sJ t           |ddi          ddfi | |ddd          k    sJ  |ddi          }|}t          |ddfi | ||u sJ d S )Nar   r%   brT   rU   r   r   )r)   r*   r
   r,   r)   r*   doldds        r   
test_assoczTestDict.test_assocQ   s   2QQrUUC))b))QQQx[[8888QQQx[[#q//B//11c1X;;>>>>QQQx[[#q//B//11115E5E3F3FFFFF AsAhKKaa2Dyr   c           	      H   | j         | j        }}t           |ddi          dfi | |i           k    sJ t           |ddd          dfi | |ddi          k    sJ t           |ddd          dfi | |ddi          k    sJ t           |ddd          ddfi | |i           k    sJ t           |ddi          dfi |t          t           |ddi          dfi |dfi |k    sJ  |ddi          }|}t          |dfi |}||u sJ ||usJ d S )NrT   r   r   rV   rU   r   )r)   r*   r   r,   r)   r*   rX   rY   d2s         r   test_dissoczTestDict.test_dissoc]   s   2aaakk3--"--26666aaaa(())355"55C8DDDDaaaa(())355"55C8DDDDaaaa(())3::r::aaeeCCCCaaakk3--"--qq#q{{C8V8VSU8V8VX[1b1b_a1b1bbbbb AsAhKKAs!!b!!Dy~r   c           	         | j         | j        }}t           |ddi          dgdfi | |ddi          k    sJ t           |d |ddi          i          ddgdfi | |d |ddi          i          k    sJ t           |i           ddgdfi | |d |ddi          i          k    sJ  |ddi          }|}t          |dgdfi |}||u sJ ||usJ d S )NrT   r   r   rU   r   )r)   r*   r   r\   s         r   test_assoc_inzTestDict.test_assoc_inl   s[   23(cUA44443(CCCCCC8-..c
ADDDD33($%%& 	' 	' 	'"Sz13333qq#qq#q{{9K7L7LLLLL AsAhKKa#((R((Dy~r   c                 x   | j         | j        }}t           |ddi          dgt          fi | |ddi          k    sJ t           |ddd          dgt          fi | |ddd          k    sJ t           |d |ddi          d          ddgt          fi | |d |ddi          d          k    sJ t           |i           d	gt          d fi | |d	d
i          k    sJ t           |i           d	gt          dfi | |d	di          k    sJ t           |i           d	gd fddi| |d	di          k    sJ t           |i           ddgt          fddi| |d |ddi          i          k    sJ t           |i           ddgt          fddi| |d |ddi          i          k    sJ t           |ddd          g dt          dfi | |dd |d |ddi          i          d          k    sJ  |ddi          }|}t          |dgt          fi | ||u sJ d S )NrT   r   r   rV   rU   1)tvrd   zNonec                     | dz   S )Narr   r   s    r   rO   z)TestDict.test_update_in.<locals>.<lambda>   s
    4 r   defaultbard   1002   )foor   )rX   r   r   r2   20)ro   r   rX   r   )r)   r*   r	   r   strrW   s        r   test_update_inzTestDict.test_update_inz   s3   2C8seS77B7711c1X;;FFFF++,,seS??B??111SVEWEWCXCXXXXX!!!!!S!H++6677#sSOOBOO3(,,--. 	/ 	/ 	/ 2sD77B7711c6];K;KKKKK2sA44443(CCCC2'7'7KKKKKqqRUW\Q]^^^^ 2A>>R>2>>!!Q1a&		NBSBSSSSS2A??S?B??11aAu:EWCXCXXXXX!!Eb1122KKKbOOBOO%BQQ11aY<</@-A-ABBCCD 	E 	E 	E AsAhKK!cUC&&2&&&Dyr   c           	      *   | j         | j        c}t          t          t           ddi                     ddi                    dddk    sJ t          t          t           ddi                     ddi          d           t          t           ddd                    k    sJ t          t          t           ddi                     ddi          d           dddk    rJ t          t          fd          sJ d S )	Nr   r   r%   r$   c                  *    t          t                    S Nr   intr   r   r   rO   z'TestDict.test_factory.<locals>.<lambda>   s    k#&6&6 r   )factoryc                  *    t          t                    S ru   rv   r   r   r   rO   z'TestDict.test_factory.<locals>.<lambda>   s    +c*:*: r   c                  ^    t            ddi            ddi          t                    S )Nr   r   r%   )factoryy)r   dict)r)   s   r   rO   z'TestDict.test_factory.<locals>.<lambda>   s.    qq!Qyy!!QF))d)S)S)S r   )r)   r*   r   r   rw   r   	TypeError)r,   r*   r)   s     @r   test_factoryzTestDict.test_factory   sI   2[aaAii00!!QF))<<A!LLLLk#qq!Qyy1111aV99668 8 8CqQ<<112 	3 	3 	3 +c11aV9955qq!Qyy":":< < <CD||L 	M 	M 	Mi!S!S!S!STTTTTTTr   N)__name__
__module____qualname____doc__r|   r)   r*   r-   r/   r9   r<   r>   rA   rD   rF   rI   rR   rZ   r^   r`   rr   r~   r   r   r   r!   r!      s+         	A	BP P PR R R
# 
# 
#G G GE E EE E EK K KE E EE E E\ \ \

 
 
      .U U U U Ur   r!   c                        e Zd Z fdZ xZS )r   c                     t          t          |                               |          o$t          |t                    o| j        |j        k    S ru   )superr   __eq__
isinstance_defaultdictdefault_factory)r,   other	__class__s     r   r   zdefaultdict.__eq__   sH    k4((//66 >5,//>$(==	?r   )r   r   r   r   __classcell__)r   s   @r   r   r      s8        ? ? ? ? ? ? ? ? ?r   r   c                   2    e Zd ZdZed             Zdd iZdS )TestDefaultDictzTest defaultdict as input and factory

    Class attributes:
        D: callable that inputs a dict and creates or returns a MutableMapping
        kw: kwargs dict to specify "factory" keyword (if applicable)
    c                 ,    t          t          |           S ru   rv   )dict_s    r   r)   zTestDefaultDict.D   s    3&&&r   rx   c                  *    t          t                    S ru   rv   r   r   r   rO   zTestDefaultDict.<lambda>   s    [-- r   N)r   r   r   r   staticmethodr)   r*   r   r   r   r   r      sC          ' ' \' --	.BBBr   r   c                   `    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d ZdS )CustomMappingzCDefine methods of the MutableMapping protocol required by dicttoolzc                 (    t          |i || _        d S ru   )r|   _dr,   argskwargss      r   __init__zCustomMapping.__init__   s    '''r   c                     | j         |         S ru   r   r,   keys     r   __getitem__zCustomMapping.__getitem__   s    ws|r   c                     || j         |<   d S ru   r   )r,   r   vals      r   __setitem__zCustomMapping.__setitem__   s    r   c                     | j         |= d S ru   r   r   s     r   __delitem__zCustomMapping.__delitem__   s    GCLLLr   c                 *    t          | j                  S ru   )r;   r   r,   s    r   __iter__zCustomMapping.__iter__   s    DG}}r   c                 *    t          | j                  S ru   )lenr   r   s    r   __len__zCustomMapping.__len__   s    47||r   c                     || j         v S ru   r   r   s     r   __contains__zCustomMapping.__contains__   s    dg~r   c                 L    t          |t                    o| j        |j        k    S ru   r   r   r   r,   r   s     r   r   zCustomMapping.__eq__   s     %//GDGux4GGr   c                 N    t          |t                     p| j        |j        k    S ru   r   r   s     r   __ne__zCustomMapping.__ne__   s#    e]333Jtw%(7JJr   c                 4    | j                                         S ru   )r   keysr   s    r   r   zCustomMapping.keys   s    w||~~r   c                 4    | j                                         S ru   )r   valuesr   s    r   r   zCustomMapping.values   s    w~~r   c                 4    | j                                         S ru   )r   itemsr   s    r   r   zCustomMapping.items   s    w}}r   c                 *     | j         j        |i | d S ru   )r   updater   s      r   r   zCustomMapping.update   s!    ''''''r   N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s        MM( ( (            H H HK K K         ( ( ( ( (r   r   c                        e Zd ZdZeZdd iZdS )TestCustomMappingzTest CustomMapping as input and factory

    Class attributes:
        D: callable that inputs a dict and creates or returns a MutableMapping
        kw: kwargs dict to specify "factory" keyword (if applicable)
    rx   c                      t                      S ru   )r   r   r   r   rO   zTestCustomMapping.<lambda>   s
    ]__ r   N)r   r   r   r   r   r)   r*   r   r   r   r   r      s-          	A
,,	-BBBr   r   c                      t          t          t          j                  t          j        k    sJ t	          t          t          j                  t          j        k    sJ t          t          t          j                  t          j        k    sJ d S ru   )r   r   osenvironr   r   r   r   r   test_environr      se    (BJ''2:5555(BJ''2:55558RZ((BJ666666r   c                       G d dt                     }  | ddi          }t          |          |u st          |          ddik    sJ t          t          |          ddik    sJ d S )Nc                   &    e Zd Zd Zd Zd Zd ZdS ).test_merge_with_non_dict_mappings.<locals>.Fooc                     || _         d S ru   rX   )r,   rX   s     r   r   z7test_merge_with_non_dict_mappings.<locals>.Foo.__init__   s    DFFFr   c                 *    t          | j                  S ru   )r;   rX   r   s    r   r   z7test_merge_with_non_dict_mappings.<locals>.Foo.__iter__  s    <<r   c                     | j         |         S ru   r   r   s     r   r   z:test_merge_with_non_dict_mappings.<locals>.Foo.__getitem__  s    6#;r   c                 *    t          | j                  S ru   )r   rX   r   s    r   r   z6test_merge_with_non_dict_mappings.<locals>.Foo.__len__  s    tv;;r   N)r   r   r   r   r   r   r   r   r   r   Foor      sP        	 	 		  	  	 	 	 		 	 	 	 	r   r   r   )r   r   r   r5   )r   rX   s     r   !test_merge_with_non_dict_mappingsr      s        g    	QFA88q=.E!HHA....c1!Q''''''r   ) collectionsr   r   collections.abcr   r   toolz.dicttoolzr   r   r   r   r	   r
   r   r   r   r   r   r   toolz.functoolzr   toolz.utilsr   r   r   objectr!   r   r   r   r   r   r   r   r   <module>r      s   3 3 3 3 3 3 # # # # # # 				3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 % $ $ $ $ $          FU FU FU FU FUv FU FU FUR? ? ? ? ?, ? ? ?/ / / / /h / / /'( '( '( '( '(F '( '( '(t. . . . . . . .7 7 7( ( ( ( (r   