o
    ŀg8                     @   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   sd   t g dg dg dd}td}tjt|d ||  W d    d S 1 s+w   Y  d S )N)r   r      Ar   CzIndex(['a'], dtype=match)r   reescapepytestraisesKeyErrordrop_duplicates)r   dfmsg r   c/var/www/html/myenv/lib/python3.10/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sPJ | 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   int8E)r*   r)   r,   r,      r"   r   )r   r)   r.   r.   	   r	   r!   )xyr,   r	   r3   c                 s   s    | ]}|gd  V  qdS )r4   Nr   ).0ir   r   r   	<genexpr>r   s    z'test_drop_duplicates.<locals>.<genexpr>   Tignore_index)firstr&   F)r   ranger   tmassert_frame_equalloclennparrayilocastypeindexiinfoint64maxr   
duplicatedsum)r   resultexpecteddf2r5   r(   r   r   r   test_drop_duplicates   s   
	


"rQ   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,   r3   r)   )r,   r3   r*   )r   r   bcolumnsr   r!   )r   r   r@   rA   )r   result0result1	expected1r   r   r   0test_drop_duplicates_with_duplicate_column_namesy   s   "
rX   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,   r3   r)   )r   r	   r!   r.   r)   r*   )r   r?   r   rF   r@   rA   r   rN   rO   r   r   r   !test_drop_duplicates_for_take_all   s2   
	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|dksJJ t|| | jg d }| d}t|| d S )Nr   r   r    r"   )AAABr   r   r%   r]   r!   r&   r'   r)   r*   Fr   r+   )r]   r   )r   r?   r   r@   rA   rB   rC   r[   r   r   r   test_drop_duplicates_tuple   s(   
	

r`   r   rS   r
   rH   c                 C   s8   |   }t||  |  }|j dd t||  d S )NTinplace)r   r@   rA   copy)r   rN   r   r   r   test_drop_duplicates_empty   s
   re   c                  C   sf  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sZJ | 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!   r3   )r	   r,   r)   r*   )	r   rD   nanr?   r   rB   r@   rA   rC   r[   r   r   r   test_drop_duplicates_NA   sh   
	

	
ri   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   rY   r   rZ   rf   g       @r,   )r   r   r   )r   r!   r,   r.   r*   r&   r'   )r	   r3   r.   r)   r*   Fr.   r*   r   )r   r	   r.   r)   )r,   r.   r)   r*   r)   )r   rD   rh   r   rF   r@   rA   r[   r   r   r   $test_drop_duplicates_NA_for_take_all$  s.   

rj   c                  C   s  t g dg dg dtdd} |  }|jddd}| d d	 }|}t|| |d u s0J |  }|jdd
dd}| jddg }|}t|| |d u sQJ |  }|jdddd}| jg  }|}t|| t|dksrJ |d u sxJ |  }|jddgdd}| jg d }|}t|| |d u sJ |  }|jddgd
dd}| jg d }|}t|| |d u sJ |  }|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 s/J | }|jddd}|jddgdd}|}t|| |d u sRJ d S )Nr   r   r    r"   rg   r   Trb   r!   r&   )r(   rc   r)   r*   Fr   r   r+   r-   r
   r'   )r   r?   rd   r   r@   rA   rB   rC   )origr   return_valuerO   rN   orig2rP   r   r   r   test_drop_duplicates_inplaceJ  s~   	
rn   rc   TFz4origin_dict, output_dict, ignore_index, output_indexr   )r!   r!   r,   r!   r,   r	   )r!   r!   r3   )r   r   r3   c                 C   s^   t |}t ||d}| r| }|j|| d n|j|| d}t|| t|t | d S )Nra   )r=   rc   )r   rd   r   r@   rA   )rc   origin_dictoutput_dictr=   output_indexr   rO   	result_dfr   r   r   !test_drop_duplicates_ignore_index  s   rs   c                 C   s0   t d| gddggtd}| }t|| d S )Nr	   r!   r   )dtype)r   objectr   r@   rA   )nulls_fixturer   rN   r   r   r   *test_drop_duplicates_null_in_object_column  s   rw   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 ]}||g j| d	}|| j| d	}t||	  q1d S )
N)r	   r	   r	   r   r   r!   r,   three)r	   r!   r,   r3   r3   i  r	   )r   rR   cder'   )
r   rD   rh   r   r   rT   r   r@   rA   to_frame)r(   r   columndropped_framedropped_seriesr   r   r   (test_drop_duplicates_series_vs_dataframe  s$   



r   argTruec                 C   sT   t dg di}d}tjt|d |j| d W d    d S 1 s#w   Y  d S )Nr   )r	   r!   r	   r,   zC^For argument "ignore_index" expected type bool, received type .*.$r   r<   )r   r   r   
ValueErrorr   )r   r   r   r   r   r   -test_drop_duplicates_non_boolean_ignore_index  s
   "r   )r   r   numpyrD   r   pandasr   r   r   pandas._testing_testingr@   markparametrizer   rQ   rX   r\   r`   re   ri   rj   rn   rs   rw   r   r   r   r   r   r   <module>   sN    
	`$

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