a
     dn#                     @   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   s   | d S N    xr   r   c/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/toolz/tests/test_dicttoolz.pyinc   s    r   c                 C   s   | d dkS )N   r   r   )ir   r   r   iseven   s    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sFJ 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sHJ 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sRJ ttg|R i ||dd	dkszJ |ddd
d|dddf}ttg|R i ||ddd
dksJ ttg|R i ||dd	ddksJ ttrJ 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sRJ tt|fi ||dddksvJ ttt|fi ||dddksJ d S )Nr   r   r   r)   r*   r+   r,   )r#   r$   r   r-   iterr/   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   s    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<   s    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@   s    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   s    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   s    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snJ d S )Nc                 S   s   t | d S )Nr   r   itemr   r   r   <lambda>N       z*TestDict.test_itemfilter.<locals>.<lambda>r   r   r   c                 S   s   t | d S r   r9   r:   r   r   r   r<   O   r=   r   )r#   r$   r   r%   r   r   r   test_itemfilterL   s    0zTestDict.test_itemfilterc                 C   s   | j | j }}t|i ddfi ||ddiks6J t|ddiddfi ||ddiksbJ t|ddiddfi ||dddksJ |ddi}|}t|ddfi | ||u sJ d S )Nar   r   br?   r@   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s4J t|ddddfi ||ddiks`J t|ddddfi ||ddiksJ t|dddddfi ||i ksJ t|ddidfi |tt|ddidfi |dfi |ksJ |ddi}|}t|dfi |}||u s,J ||us:J d S )Nr?   r   r   rA   r@   r   )r#   r$   r
   r&   r#   r$   rC   rD   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sJ |ddi}|}t|dgdfi |}||u sJ ||usJ d S )Nr?   r   r   r@   r   )r#   r$   r   rF   r   r   r   test_assoc_inl   s    .&4zTestDict.test_assoc_inc              	   C   s6  | 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snJ t|d|ddidddgtfi ||d|ddidksJ t|i d	gtd fi ||d	d
iksJ t|i d	gtdfi ||d	diksJ t|i d	gd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szJ 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 s2J d S )Nr?   r   r   rA   r@   1)tvrK   zNonec                 S   s   | d S )Narr   r   r   r   r   r<      r=   z)TestDict.test_update_in.<locals>.<lambda>defaultbard   Z1002   )foor   )rC   r   r   r*   Z20)rT   r   rC   r   )r#   r$   r   r   strrB   r   r   r   test_update_inz   s$    .2(,.4::"
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rJ tt fd	dsJ d S )
Nr   r   r   r   c                   S   s   t tS Nr   intr   r   r   r   r<      r=   z'TestDict.test_factory.<locals>.<lambda>)factoryc                   S   s   t tS rW   rX   r   r   r   r   r<      r=   c                      s   t  ddi dditdS )Nr   r   r   )Zfactoryy)r   dictr   r#   r   r   r<      r=   )r#   r$   r   r   rY   r   	TypeError)r&   r$   r   r\   r   test_factory   s    .zTestDict.test_factoryN)__name__
__module____qualname____doc__r[   r#   r$   r'   r(   r0   r2   r3   r4   r6   r7   r8   r>   rE   rG   rH   rV   r^   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 rW   )superr   __eq__
isinstance_defaultdictdefault_factoryr&   other	__class__r   r   rd      s
    
zdefaultdict.__eq__)r_   r`   ra   rd   __classcell__r   r   rj   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 rW   rX   )Zdict_r   r   r   r#      s    zTestDefaultDict.DrZ   c                   C   s   t tS rW   rX   r   r   r   r   r<      r=   zTestDefaultDict.<lambda>N)r_   r`   ra   rb   staticmethodr#   r$   r   r   r   r   rm      s   
rm   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 rW   )r[   _dr&   argskwargsr   r   r   __init__   s    zCustomMapping.__init__c                 C   s
   | j | S rW   rp   r&   keyr   r   r   __getitem__   s    zCustomMapping.__getitem__c                 C   s   || j |< d S rW   ru   )r&   rw   valr   r   r   __setitem__   s    zCustomMapping.__setitem__c                 C   s   | j |= d S rW   ru   rv   r   r   r   __delitem__   s    zCustomMapping.__delitem__c                 C   s
   t | jS rW   )r1   rp   r&   r   r   r   __iter__   s    zCustomMapping.__iter__c                 C   s
   t | jS rW   )lenrp   r|   r   r   r   __len__   s    zCustomMapping.__len__c                 C   s
   || j v S rW   ru   rv   r   r   r   __contains__   s    zCustomMapping.__contains__c                 C   s   t |to| j|jkS rW   re   ro   rp   rh   r   r   r   rd      s    zCustomMapping.__eq__c                 C   s   t |t p| j|jkS rW   r   rh   r   r   r   __ne__   s    zCustomMapping.__ne__c                 C   s
   | j  S rW   )rp   keysr|   r   r   r   r      s    zCustomMapping.keysc                 C   s
   | j  S rW   )rp   valuesr|   r   r   r   r      s    zCustomMapping.valuesc                 C   s
   | j  S rW   )rp   itemsr|   r   r   r   r      s    zCustomMapping.itemsc                 O   s   | j j|i | d S rW   )rp   updaterq   r   r   r   r      s    zCustomMapping.updateN)r_   r`   ra   rb   rt   rx   rz   r{   r}   r   r   rd   r   r   r   r   r   r   r   r   r   ro      s   ro   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)
    rZ   c                   C   s   t  S rW   )ro   r   r   r   r   r<      r=   zTestCustomMapping.<lambda>N)r_   r`   ra   rb   ro   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sBJ d S rW   )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sRJ 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 rW   rC   )r&   rC   r   r   r   rt      s    z7test_merge_with_non_dict_mappings.<locals>.Foo.__init__c                 S   s
   t | jS rW   )r1   rC   r|   r   r   r   r}     s    z7test_merge_with_non_dict_mappings.<locals>.Foo.__iter__c                 S   s
   | j | S rW   r   rv   r   r   r   rx     s    z:test_merge_with_non_dict_mappings.<locals>.Foo.__getitem__c                 S   s
   t | jS rW   )r~   rC   r|   r   r   r   r     s    z6test_merge_with_non_dict_mappings.<locals>.Foo.__len__N)r_   r`   ra   rt   r}   rx   r   r   r   r   r   Foo   s   r   r   )r   r   r   r-   )r   rC   r   r   r   !test_merge_with_non_dict_mappings   s     r   ) collectionsr   rf   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   rm   ro   r   r   r   r   r   r   r   <module>   s   8 
: