U
    _{f2                     @   s4  d dl Zd dlmZ d dlZd dlZd dlZd dlm	Z	m
Z
mZmZmZmZ d dlmZ ejjejddedd ejddd	d
gejdddgejdddgdd Zdd Zdd Zdd Zdd Zejddddgedeedgdedgejdgdddd fdddged!ddeed!ddgdedgejdgdddd fdddd"d"ged!ddeed!ddeed!ddgdeddgejdd"gdddd fddddd"ged!ddeed!ddeed!ddgdeddgejdd"gdddd fgd#d$ Zd%d& Zd'd( Zd)d* Z dS )+    N)ascii_lowercase)	DataFrame
MultiIndexNaTSeries	Timestamp
date_rangen
         md   i  sortFTdropnac                    s  d fdd	}t ddd}ttjtt| tj|| tjd|| d}||d	g ||d	d
g d |jdd dd	f< d |jdd dd
f< d |jdd ddf< d |jdd ddf< d |jdd ddf< ||d	g ||d	d
g ||d	gdd ||d	d
gdd d S )NTc                    s   |   }| j||d}|d j d}| j||d}|d jtj d}|s\|jdd}|rrtj||dd ntj||dd t| | d S )N)as_indexr   julier   T)dropF)Zcheck_names)	copygroupbynuniqueapplyr   Zreset_indextmassert_series_equalassert_frame_equal)dfkeysr   Zoriginal_dfgrleftrightr   r    `/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/pandas/tests/groupby/test_nunique.pycheck_nunique   s    z2test_series_groupby_nunique.<locals>.check_nuniquez
2015-08-23r
   )Zperiodsr   )jimjoer   r%   r&            %         r      	   Fr   )T)	r   r   nprandomchoicelistr   randintloc)r	   r   r   r   r$   daysframer"   r!   r#   test_series_groupby_nunique   s&    r8   c                  C   s  t tdtdtdd} t tddddgdddgd}| jdd	d
 }t|| td|_d|j_|jdd}| d }t|| | 	dd idjd	d}t|| t dgd dgd dtdd}d|j_| 	dd id }t|| d S )NZabbaccZabxaccZabbacx)ABCabcr'   r   r9   Fr/   columnsxr   r)   )r:   r;   )index)
r   r3   r   r   r   r   r@   namer   replace)r   expectedresultr"   r"   r#   test_nuniqueB   s     
"rE   c                  C   s   t dddgdddgddd	gd
ddgdddggdddgd} | ddgd  }t| j| jg}tdgd d|d}t	|| d S )Nr   r'   ZAlice   r   ZBobi,  r)   ZCharlieip   ZDani     ZEdithamountidrA   r=   )rA   r@   )
r   r   r   r   Zfrom_arraysrJ   rI   r   r   r   )datarD   r@   rC   r"   r"   r#   test_nunique_with_object[   s    rL   c                  C   s8   t dtd} | jdd }t ddd}t|| d S )NrA   )rA   dtyper   )levelint64)r   objectr   r   r   r   )rK   rD   rC   r"   r"   r#   test_nunique_with_empty_seriesn   s    rQ   c                  C   st   t tdtdtdgdddgdd} | tjd	d
d  }| tjd	d
d tj}t	
|| d S )Nz2016-06-28 09:35:35z2016-06-28 16:09:30z2016-06-28 16:46:28123)timerK   rU   h)freqrK   )r   r   Z	set_indexr   pdZGrouperr   r   r   r   r   testrD   rC   r"   r"   r#   test_nunique_with_timegrouperv   s    	
r[   zkey, data, dropna, expectedr?   z
2019-01-01r'   keyrA   rK   )r@   rA   i  yc                 C   s6   t | |d}|dgd j|d}t|| d S )N)r\   rK   r\   rK   r   )r   r   r   r   r   )r\   rK   r   rC   r   rD   r"   r"   r#   test_nunique_with_NaT   s    r_   c                  C   s\   t dddgtjdgddd} | dddg }t dgtdg| jd}t	|| d S )	Nr'   r   r9   Zlevel_0r]   r=   r   )r@   r>   )
r   rX   Indexr   r   r0   arrayr>   r   r   rY   r"   r"   r#   )test_nunique_preserves_column_level_names   s    rb   c                  C   sP   t tdddgd} | dddgd d}tdddgdd	}t|| d S )
Nz
2008-12-31z
2009-01-02dater=   r   r'   r   r   r]   )r   r   r   Z	transformr   r   r   )r   rD   rC   r"   r"   r#   $test_nunique_transform_with_datetime   s    rd   c                 C   sn   t dgd}|d d }|j|| d}| }| rNt g |d d dd}nt dg|dd}t|| d S )Nr'   categoryr   )observedrO   )r@   rM   )r   Zastyper   r   r   r   )rf   catZsergbrD   rC   r"   r"   r#   test_empty_categorical   s    ri   )!datetimedtstringr   numpyr0   ZpytestZpandasrX   r   r   r   r   r   r   Zpandas._testingZ_testingr   markZslowZparametrizeZaranger8   rE   rL   rQ   r[   r`   rc   r_   rb   rd   ri   r"   r"   r"   r#   <module>   sX    ***
