a
    Pf8                     @   s  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 d dl	m
Z ejdddgddggdd Zd	d
 Zdd Zdd Zdd Zejde eg deg ddeg deg ddgdd Zdd Zdd Zdd Zejdddgejd d!g d"id!d#d$gidd d%gfd!g d"id!d#d$gidd d#gfg d"g d&d'd#d$gd#d(gd'dd d%gfg d"g d&d'd#d$gd#d(gd'dd d#gfgd)d* Zd+d, Zd-d. Zejd/d%gd%d0g d gd1d2 ZdS )3    )datetimeN)	DataFrameNaTconcatsubsetaBc                 C   sb   t g dg dg dd}td}tjt|d ||  W d    n1 sT0    Y  d S )N)r   r      Ar   CzIndex(['a'], dtype=match)r   reescapepytestraisesKeyErrordrop_duplicates)r   dfmsg r   h/var/www/ai-form-bot/venv/lib/python3.9/site-packages/pandas/tests/frame/methods/test_drop_duplicates.py0test_drop_duplicates_with_misspelled_column_name   s    
r   c                  C   s  t g dg dg dtdd} | d}| d d }t|| | jddd	}| jd
dg }t|| | jddd	}| jg  }t|| t|dksJ | jg d }| tddg}t|| | ddg}t|| | jddd	}| jg d }t|| | jddd	}| jdg }t|| | jd d g df }| }|ddg}t|| |jdd	}|jddgdd	}t|| |jdd	}|jddgdd	}t|| | d}| j	ddg }t|| | jddd	}| j	ddg }t|| | d 
d| d< | d}| j	ddg }t|| | jddd	}| j	ddg }t|| t g dg dd} | j| jdk }t|  | t ddgddgg} t|  |  t ddgddgg} t|  |  ttjjd d }t | |gd|d gg} t|  |  t | |g||d gg} t|  |  t dd  td!D } t| t dgdgd  ggd"d#} d$D ] }| j|d	 dksJ qd S )%Nfoobarr   r   r   r   r   r   oner   twor   r   r   r   r   r	   r	      r!   r!   r!   r	   r!      AAAr   r   Dr$   r!   lastkeep      Fr   r   r	   r!      r   )r$   r   r      r)   r*   )r$   r   r   r   Zint8E)r*   r)   r,   r,      r"   r   )r   r)   r.   r.   	   r	   r!   )xyr,   r	   r2   c                 s   s   | ]}|gd  V  qdS )r3   Nr   ).0ir   r   r   	<genexpr>r       z'test_drop_duplicates.<locals>.<genexpr>   Tignore_index)firstr&   F)r   ranger   tmassert_frame_equalloclennparrayilocZastypeindexZiinfoZint64maxr   Z
duplicatedsum)r   resultexpecteddf2r4   r(   r   r   r   test_drop_duplicates   s    	



"rM   c                  C   s\   t g dg dg dgg dd} |  }t||  | d}| d d }t|| d S )N)r	   r!   r.   )r,   r2   r)   )r,   r2   r*   )r   r   bcolumnsr   r!   )r   r   r@   rA   )r   Zresult0Zresult1Z	expected1r   r   r   0test_drop_duplicates_with_duplicate_column_namesy   s    "
rQ   c                  C   s  t g dg dg dtdd} | d}| jg d }t|| | jddd	}| jg d
 }t|| | jddd	}| jddg }t|| | ddg}| jg d }t|| | jddgdd	}| jg d }t|| | jddgdd	}| jg d }t|| d S )N)r   r   bazr   r   r   quxr   r   r    r"   r#   r$   )r   r	   r!   r)   r&   r'   )r!   r.   r)   r*   Fr!   r)   r   )r   r	   r!   r,   r2   r)   )r   r	   r!   r.   r)   r*   )r   r?   r   rF   r@   rA   r   rJ   rK   r   r   r   !test_drop_duplicates_for_take_all   s2    	
rU   c                  C   s   t g dg dg dtdd} | d}| d d }t|| | jddd	}| jd
dg }t|| | jddd	}| jg  }t|dksJ t|| | jg d }| d}t|| d S )Nr   r   r    r"   )ZAAZABr   r   r%   rV   r!   r&   r'   r)   r*   Fr   r+   )rV   r   )r   r?   r   r@   rA   rB   rC   rT   r   r   r   test_drop_duplicates_tuple   s(    	


rW   r   rO   r
   rG   c                 C   s8   |   }t||  |  }|j dd t||  d S )NTinplace)r   r@   rA   copy)r   rJ   r   r   r   test_drop_duplicates_empty   s
    r\   c                  C   sh  t g dg ddtjtjtjddddgtdd} | d}| jg d }t|| | jdd	d
}| jg d }t|| | jddd
}| jg  }t|| t|dksJ | ddg}| jg d }t|| | jddgd	d
}| jg d }t|| | jddgdd
}| jdg }t|| t g dg ddtjtjtjddddgtdd} | d}| d d }t|| | jdd	d
}| jddg }t|| | jddd
}| jg  }t|| t|dksJ | ddg}| jg d }t|| | jddgd	d
}| jg d }t|| | jddgdd
}| jdg }t|| d S )N)NNr   r   r   r   r   r   r         ?r	   r"   r   r   r   r%   r   )r   r!   r,   r&   r'   )r	   r)   r*   Fr   r   )r   r!   r,   r)   )r	   r.   r)   r*   r)   r   r   r!   r,   r*   )r   r	   r!   r2   )r	   r,   r)   r*   )	r   rD   nanr?   r   rB   r@   rA   rC   rT   r   r   r   test_drop_duplicates_NA   sh    	

	

r`   c               
   C   s  t g ddtjtjtjddddgd} | d}| jg d }t|| | jddd	}| jg d
 }t|| | jddd	}| jddg }t|| | d}| jg d }t|| | jddd	}| jg d }t|| | jddd	}| jddg }t|| d S )N)NNr   r   r   rR   r   rS   r]   g       @r,   )r   r   r   )r   r!   r,   r.   r*   r&   r'   )r	   r2   r.   r)   r*   Fr.   r*   r   )r   r	   r.   r)   )r,   r.   r)   r*   r)   )r   rD   r_   r   rF   r@   rA   rT   r   r   r   $test_drop_duplicates_NA_for_take_all$  s.    

ra   c                  C   s  t g dg dg dtdd} |  }|jddd}| d d	 }|}t|| |d u s`J |  }|jdd
dd}| jddg }|}t|| |d u sJ |  }|jdddd}| jg  }|}t|| t|dksJ |d u sJ |  }|jddgdd}| jg d }|}t|| |d u s6J |  }|jddgd
dd}| jg d }|}t|| |d u s~J |  }|jddgddd}| jdg }|}t|| |d u sJ | jd d g df  }| }|jdd}|ddg}|}t|| |d u sJ | }|jd
dd}|jddgd
d}|}t|| |d u sdJ | }|jddd}|jddgdd}|}t|| |d u sJ d S )Nr   r   r    r"   r^   r   TrY   r!   r&   )r(   rZ   r)   r*   Fr   r   r+   r-   r
   r'   )r   r?   r[   r   r@   rA   rB   rC   )origr   Zreturn_valuerK   rJ   Zorig2rL   r   r   r   test_drop_duplicates_inplaceJ  s~    	
rc   rZ   TFz4origin_dict, output_dict, ignore_index, output_indexr   )r!   r!   r,   r!   r,   r	   )r!   r!   r2   )r   r   r2   c                 C   s^   t |}t ||d}| r0| }|j|| d n|j|| d}t|| t|t | d S )NrX   )r=   rZ   )r   r[   r   r@   rA   )rZ   Zorigin_dictZoutput_dictr=   Zoutput_indexr   rK   Z	result_dfr   r   r   !test_drop_duplicates_ignore_index  s    rd   c                 C   s0   t d| gddggtd}| }t|| d S )Nr	   r!   r   )Zdtype)r   objectr   r@   rA   )Znulls_fixturer   rJ   r   r   r   *test_drop_duplicates_null_in_object_column  s    rf   c                 C   s   t g dddtjtjtjgddtjtjdgg dtdddtdddtdddttgd}|jD ]6}||g j| d	}|| j| d	}t||	  qbd S )
N)r	   r	   r	   r   r   r!   r,   three)r	   r!   r,   r2   r2   i  r	   )r   rN   cder'   )
r   rD   r_   r   r   rP   r   r@   rA   Zto_frame)r(   r   columnZdropped_frameZdropped_seriesr   r   r   (test_drop_duplicates_series_vs_dataframe  s"    



rl   argTruec                 C   sR   t dg di}d}tjt|d |j| d W d    n1 sD0    Y  d S )Nr   )r	   r!   r	   r,   zC^For argument "ignore_index" expected type bool, received type .*.$r   r<   )r   r   r   
ValueErrorr   )rm   r   r   r   r   r   -test_drop_duplicates_non_boolean_ignore_index  s    rp   )r   r   numpyrD   r   Zpandasr   r   r   Zpandas._testingZ_testingr@   markZparametrizer   rM   rQ   rU   rW   r\   r`   ra   rc   rd   rf   rl   rp   r   r   r   r   <module>   sL   
	`$


J&P**	