
    biM#                         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
      Z G d de      Z G d de      Z G d d      Z G d de      Zd Zd Zy)    )defaultdict)MappingN)merge
merge_withvalmapkeymap	update_inassocdissoc	keyfilter	valfilteritemmap
itemfilterassoc_in)identity)raisesc                     | dz   S N    xs    U/home/cdr/jupyterlab/.venv/lib/python3.12/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                   r    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y)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 y Nr   r   r   r         r   r   r%   Dkwr   selfr)   r*   s      r   
test_mergezTestDict.test_merge   sI    2Q1|_aAi626!aA<N:OOOOr   c                     | j                   | j                  }}t         |ddd       |ddi      gfi | |dddd      k(  sJ y r#   r(   r+   s      r   test_merge_iterable_argz TestDict.test_merge_iterable_arg!   sL    2aA!oq!Qy18R8A!a>P<QQQQr   c                    | j                   | j                  }} |ddd       |ddd      f}t        t        g|i | |ddd      k(  sJ t        t        g|i | |dd	d      k(  sJ  |ddd
d       |ddd      f}t        t        g|i | |ddd
d      k(  sJ t        t        g|i | |dd	dd      k(  sJ t        t              rJ y )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%   s    2aA,rb>!22#,,,bR.0AAAA%.%.2.!G4L2MMMMaA!$%qRB'88#,,,bRA2F0GGGG%.%.2.!GPT4U2VVVVc?""?r   c                 0   | j                   | j                  }} |ddd       |ddd      f}t        t        g|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 y )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#,,,bR.0AAAA#u++qRB/@@@@#tE{1b1Q2"~5FFFFr   c                     | j                   | j                  }}t        t         |ddd      fi | |ddd      k(  sJ y )Nr   r   r$   r%   )r)   r*   r   r   r+   s      r   test_valmapzTestDict.test_valmap8   =    2c1q\?1b1Q1|_DDDr   c                     | j                   | j                  }}t        t         |ddd      fi | |ddd      k(  sJ y )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 y )Nr   r&   r$   r   )r   r&   )r)   r*   r   reversedr+   s      r   test_itemmapzTestDict.test_itemmap@   s=    2xqQ<7B71q\?JJJr   c                     | j                   | j                  }}t        t         |ddd      fi | |ddi      k(  sJ y )Nr   r%   r$   r   )r)   r*   r   r   r+   s      r   test_valfilterzTestDict.test_valfilterD   =    2qQ<7B71aV9DDDr   c                     | j                   | j                  }}t        t         |ddd      fi | |ddi      k(  sJ y )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 y )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   ss    26aA,N2NRSUVXYTZR[[[[6aA,N2NRSUVXYTZR[[[[r   c                 D   | 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 y )Nar   r%   brT   rU   r   r   )r)   r*   r
   r,   r)   r*   doldds        r   
test_assoczTestDict.test_assocQ   s    2QrUC)b)QQx[888QQx[#q/B/1c1X;>>>QQx[#q/B/1115E3FFFF sAhKaa2Dyyr   c           	         | 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 y )NrT   r   r   rV   rU   r   )r)   r*   r   r,   r)   r*   rX   rY   d2s         r   test_dissoczTestDict.test_dissoc]   s=   2aak3-"-2666aaa()35"5C8DDDaaa()35"5C8DDDaaa()3:r:aeCCCaak3-"-q#q{C8VSU8VX[1b_a1bbbb sAhKAs!b!Dyy~~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 y )NrT   r   r   rU   r   )r)   r*   r   r\   s         r   test_assoc_inzTestDict.test_assoc_inl   s   23(cUA443(CCCCC8-.c
ADD33($%& 	' &"Sz133q#q#q{9K7LLLL sAhKa#(R(Dyy~~r   c                    | 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 y )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   sG   2C8seS7B71c1X;FFF+,seS?B?11SVEWCXXXX!!!S!H+67#sSOBO3(,-. 	/ . 2sD7B71c6];KKKK2sA443(CCC2'7KKKqRUW\Q]^^^ 2A>R>2>!Q1a&	NBSSSS2A?S?B?1aAu:EWCXXXX!Eb12KbOBO%BQ1aY</@-ABCD 	E D sAhK!cUC&2&Dyyr   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 y )	Nr   r   r%   r$   c                       t        t              S Nr   intr   r   r   rO   z'TestDict.test_factory.<locals>.<lambda>   s    k#&6 r   )factoryc                       t        t              S ru   rv   r   r   r   rO   z'TestDict.test_factory.<locals>.<lambda>   s    +c*: r   c                  H    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     q!Qy!QF)d)S r   )r)   r*   r   r   rw   r   	TypeError)r,   r*   r)   s     @r   test_factoryzTestDict.test_factory   s    2[aAi0!QF)<A!LLLk#q!Qy11aV968CqQ<12 	3 2 +c1aV95q!Qy":<CD|L 	M Mi!S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!      sh     	A	BPR
#GEEKEE\

.Ur   r!   c                        e Zd Z fdZ xZS )r   c                 |    t         |   |      xr+ t        |t              xr | j                  |j                  k(  S ru   )super__eq__
isinstance_defaultdictdefault_factory)r,   other	__class__s     r   r   zdefaultdict.__eq__   s<    u% >5,/>$$(=(==	?r   )r   r   r   r   __classcell__)r   s   @r   r   r      s    ? ?r   r   c                   *    e Zd ZdZed        Zdd iZy)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      s(     ' ' -	.Br   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y)CustomMappingzCDefine methods of the MutableMapping protocol required by dicttoolzc                 $    t        |i || _        y 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    wws|r   c                 "    || j                   |<   y ru   r   )r,   r   vals      r   __setitem__zCustomMapping.__setitem__   s    r   c                     | j                   |= y ru   r   r   s     r   __delitem__zCustomMapping.__delitem__   s    GGCLr   c                 ,    t        | j                        S ru   )r;   r   r,   s    r   __iter__zCustomMapping.__iter__   s    DGG}r   c                 ,    t        | j                        S ru   )lenr   r   s    r   __len__zCustomMapping.__len__   s    477|r   c                     || j                   v S ru   r   r   s     r   __contains__zCustomMapping.__contains__   s    dgg~r   c                 X    t        |t              xr | j                  |j                  k(  S ru   r   r   r   r,   r   s     r   r   zCustomMapping.__eq__   s!    %/GDGGuxx4GGr   c                 Z    t        |t               xs | j                  |j                  k7  S ru   r   r   s     r   __ne__zCustomMapping.__ne__   s$    e]33Jtww%((7JJr   c                 6    | j                   j                         S ru   )r   keysr   s    r   r   zCustomMapping.keys   s    ww||~r   c                 6    | j                   j                         S ru   )r   valuesr   s    r   r   zCustomMapping.values   s    ww~~r   c                 6    | j                   j                         S ru   )r   itemsr   s    r   r   zCustomMapping.items   s    ww}}r   c                 <     | j                   j                  |i | y 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      sH    M(HK (r   r   c                       e Zd ZdZeZdd iZy)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
,	-Br   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 y ru   )r   r   osenvironr   r   r   r   r   test_environr      sY    (BJJ'2::555(BJJ'2::5558RZZ(BJJ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 y )Nc                   $    e Zd Zd Zd Zd Zd Zy).test_merge_with_non_dict_mappings.<locals>.Fooc                     || _         y ru   rX   )r,   rX   s     r   r   z7test_merge_with_non_dict_mappings.<locals>.Foo.__init__   s	    DFr   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    66#;r   c                 ,    t        | j                        S ru   )r   rX   r   s    r   r   z6test_merge_with_non_dict_mappings.<locals>.Foo.__len__  s    tvv;r   N)r   r   r   r   r   r   r   r   r   r   Foor      s    		 		r   r   r   )r   r   r   r5   )r   rX   s     r   !test_merge_with_non_dict_mappingsr      sV    g  	QFA8q=E!H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   r!   r   r   r   r   r   r   r   r   <module>r      s|    3 # 	3 3 3 3 % FU FUR?, ?/h /'( '(t. .7(r   