o
    Nrfn#                     @   s   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d Zd	d
 ZG dd deZG dd deZG dd deZG dd deZG dd deZdd Zdd ZdS )    )defaultdict)MappingN)merge
merge_withvalmapkeymap	update_inassocdissoc	keyfilter	valfilteritemmap
itemfilterassoc_in)identity)raisesc                 C      | d S N    xr   r   c/var/www/html/software/conda/envs/catlas/lib/python3.10/site-packages/toolz/tests/test_dicttoolz.pyinc   s   r   c                 C   s   | d dkS )N   r   r   )ir   r   r   iseven      r   c                   @   s   e Zd ZdZeZi Zdd Zdd Zdd Z	dd	 Z
d
d Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd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                 C   sJ   | 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&   r   r   r   
test_merge   s   <zTestDict.test_mergec                 C   sL   | j | j}}t|ddd|ddigfi ||ddddks$J d S r   r$   r'   r   r   r   test_merge_iterable_arg!   s   >z TestDict.test_merge_iterable_argc                 C   s   | 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saJ ttg|R i ||dd	ddksvJ ttr|J d S )Nr   r   r    
            )r   r+   )r   r,   r!   r#   )r!   )r%   r&   r   sumtupler(   r%   r&   Zdictsr   r   r   test_merge_with%   s   ((**zTestDict.test_merge_withc                 C   s   | 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sOJ d S )Nr   r   r    r+   r,   r-   r.   )r%   r&   r   r/   iterr1   r   r   r   test_merge_with_iterable_arg1   s
   ($,z%TestDict.test_merge_with_iterable_argc                 C   s@   | 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   r   r   test_valmap8      2zTestDict.test_valmapc                 C   s@   | 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'   r   r   r   test_keymap<   r6   zTestDict.test_keymapc                 C   s@   | 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'   r   r   r   test_itemmap@   r6   zTestDict.test_itemmapc                 C   s>   | 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'   r   r   r   test_valfilterD      0zTestDict.test_valfilterc                 C   s>   | 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   r   r   test_keyfilterH   r;   zTestDict.test_keyfilterc                 C   sr   | j | j}}tdd |dddfi ||ddiksJ tdd |dddfi ||ddiks7J d S )Nc                 S      t | d S )Nr   r   itemr   r   r   <lambda>N       z*TestDict.test_itemfilter.<locals>.<lambda>r   r!   r    c                 S   r=   r   r>   r?   r   r   r   rA   O   rB   r   )r%   r&   r   r'   r   r   r   test_itemfilterL   s   04zTestDict.test_itemfilterc                 C   s   | 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s1J t|ddiddfi ||dddksHJ |ddi}|}t|ddfi | ||u s`J d S )Nar   r!   brD   rE   r   r   )r%   r&   r	   r(   r%   r&   dolddr   r   r   
test_assocQ   s   (,.zTestDict.test_assocc                 C   s:  | j | j}}t|ddidfi ||i ksJ t|ddddfi ||ddiks0J t|ddddfi ||ddiksFJ 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 sJ ||usJ d S )NrD   r   r   rF   rE   r   )r%   r&   r
   r(   r%   r&   rH   rI   Zd2r   r   r   test_dissoc]   s   &,,*FzTestDict.test_dissocc                 C   s   | 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sXJ |ddi}|}t|dgdfi |}||u sqJ ||uswJ d S )NrD   r   r   rE   r   )r%   r&   r   rK   r   r   r   test_assoc_inl   s   .&4zTestDict.test_assoc_inc              	   C   s,  | 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s7J t|d|ddidddgtfi ||d|ddidksYJ t|i d	gtd fi ||d	d
iksoJ t|i d	gtdfi ||d	diksJ t|i d	gdd fddi||d	diksJ t|i ddgtfddi||d|ddiiksJ t|i ddgtfddi||d|ddiiksJ t|dddg dtdfi ||dd|d|ddiidksJ |ddi}|}t|dgtfi | ||u sJ d S )NrD   r   r   rF   rE   1)tvrP   zNonec                 S   r   )Narr   r   r   r   r   rA          z)TestDict.test_update_in.<locals>.<lambda>defaultbard   1002   )foor   )rH   r   r   r,   Z20)r[   r   rH   r   )r%   r&   r   r   strrG   r   r   r   test_update_inz   s$   .2(,,288"zTestDict.test_update_inc                    s   | j | j }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d dtt dddks>J ttt ddi ddidd ddddkrYJ tt fd	dsdJ d S )
Nr   r   r!   r    c                   S      t tS Nr   intr   r   r   r   rA      rT   z'TestDict.test_factory.<locals>.<lambda>)factoryc                   S   r^   r_   r`   r   r   r   r   rA      rT   c                      s   t  ddi dditdS )Nr   r   r!   )Zfactoryy)r   dictr   r%   r   r   rA      s    )r%   r&   r   r   ra   r   	TypeError)r(   r&   r   rd   r   test_factory   s   .zTestDict.test_factoryN)__name__
__module____qualname____doc__rc   r%   r&   r)   r*   r2   r4   r5   r7   r9   r:   r<   rC   rJ   rL   rM   r]   rf   r   r   r   r   r      s&    r   c                       s   e Zd Z fddZ  ZS )r   c                    s&   t t| |ot|to| j|jkS r_   )superr   __eq__
isinstance_defaultdictdefault_factoryr(   other	__class__r   r   rl      s
   
zdefaultdict.__eq__)rg   rh   ri   rl   __classcell__r   r   rr   r   r      s    r   c                   @   s(   e Zd ZdZedd Zd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                 C   s
   t t| S r_   r`   )Zdict_r   r   r   r%      s   
zTestDefaultDict.Drb   c                   C   r^   r_   r`   r   r   r   r   rA      rT   zTestDefaultDict.<lambda>N)rg   rh   ri   rj   staticmethodr%   r&   r   r   r   r   ru      s
    
ru   c                   @   sx   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd ZdS )CustomMappingzCDefine methods of the MutableMapping protocol required by dicttoolzc                 O   s   t |i || _d S r_   )rc   _dr(   argskwargsr   r   r   __init__   s   zCustomMapping.__init__c                 C   
   | j | S r_   rx   r(   keyr   r   r   __getitem__      
zCustomMapping.__getitem__c                 C   s   || j |< d S r_   r~   )r(   r   valr   r   r   __setitem__   s   zCustomMapping.__setitem__c                 C   s   | j |= d S r_   r~   r   r   r   r   __delitem__   r   zCustomMapping.__delitem__c                 C   
   t | jS r_   )r3   rx   r(   r   r   r   __iter__   r   zCustomMapping.__iter__c                 C   r   r_   )lenrx   r   r   r   r   __len__   r   zCustomMapping.__len__c                 C   s
   || j v S r_   r~   r   r   r   r   __contains__   r   zCustomMapping.__contains__c                 C   s   t |to
| j|jkS r_   rm   rw   rx   rp   r   r   r   rl         zCustomMapping.__eq__c                 C   s   t |t p| j|jkS r_   r   rp   r   r   r   __ne__   s   zCustomMapping.__ne__c                 C   
   | j  S r_   )rx   keysr   r   r   r   r      r   zCustomMapping.keysc                 C   r   r_   )rx   valuesr   r   r   r   r      r   zCustomMapping.valuesc                 C   r   r_   )rx   itemsr   r   r   r   r      r   zCustomMapping.itemsc                 O   s   | j j|i | d S r_   )rx   updatery   r   r   r   r      r   zCustomMapping.updateN)rg   rh   ri   rj   r|   r   r   r   r   r   r   rl   r   r   r   r   r   r   r   r   r   rw      s    rw   c                   @   s    e Zd ZdZeZd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)
    rb   c                   C   s   t  S r_   )rw   r   r   r   r   rA      s    zTestCustomMapping.<lambda>N)rg   rh   ri   rj   rw   r%   r&   r   r   r   r   r      s    r   c                   C   sF   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 r_   )r   r   osenvironr   r   r   r   r   r   test_environ   s   r   c                  C   sV   G d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                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
z.test_merge_with_non_dict_mappings.<locals>.Fooc                 S   s
   || _ d S r_   rH   )r(   rH   r   r   r   r|      r   z7test_merge_with_non_dict_mappings.<locals>.Foo.__init__c                 S   r   r_   )r3   rH   r   r   r   r   r     r   z7test_merge_with_non_dict_mappings.<locals>.Foo.__iter__c                 S   r}   r_   r   r   r   r   r   r     r   z:test_merge_with_non_dict_mappings.<locals>.Foo.__getitem__c                 S   r   r_   )r   rH   r   r   r   r   r     r   z6test_merge_with_non_dict_mappings.<locals>.Foo.__len__N)rg   rh   ri   r|   r   r   r   r   r   r   r   Foo   s
    r   r   )r   r   r   r/   )r   rH   r   r   r   !test_merge_with_non_dict_mappings   s    r   ) collectionsr   rn   collections.abcr   r   Ztoolz.dicttoolzr   r   r   r   r   r	   r
   r   r   r   r   r   Ztoolz.functoolzr   Ztoolz.utilsr   r   r   objectr   ru   rw   r   r   r   r   r   r   r   <module>   s     8 
: