o
    i;                     @   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ejd-g d.d/d0 Zejd1d%gd%d2g d gd3d4 Zd5d6 ZdS )7    )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='object')match)r   reescapepytestraisesKeyErrordrop_duplicates)r   dfmsg r   j/var/www/edux/Edux_v2/venv/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   
	


"rR   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   rA   rB   )r   result0result1	expected1r   r   r   0test_drop_duplicates_with_duplicate_column_namesy   s   "
rY   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   rG   rA   rB   r   rO   rP   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   rA   rB   rC   rD   r\   r   r   r   test_drop_duplicates_tuple   s(   
	

ra   r   rT   r
   rI   c                 C   s8   |   }t||  |  }|j dd t||  d S )NTinplace)r   rA   rB   copy)r   rO   r   r   r   test_drop_duplicates_empty   s
   rf   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   rE   nanr@   r   rC   rA   rB   rD   r\   r   r   r   test_drop_duplicates_NA   sh   
	

	
rj   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   rZ   r   r[   rg   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   rE   ri   r   rG   rA   rB   r\   r   r   r   $test_drop_duplicates_NA_for_take_all$  s.   

rk   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"   rh   r   Trc   r!   r&   )r(   rd   r)   r*   Fr   r   r+   r-   r
   r'   )r   r@   re   r   rA   rB   rC   rD   )origr   return_valuerP   rO   orig2rQ   r   r   r   test_drop_duplicates_inplaceJ  s~   	
ro   rd   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 )Nrb   )r=   rd   )r   re   r   rA   rB   )rd   origin_dictoutput_dictr=   output_indexr   rP   	result_dfr   r   r   !test_drop_duplicates_ignore_index  s   rt   c                 C   s0   t d| gddggtd}| }t|| d S )Nr	   r!   r   )dtype)r   objectr   rA   rB   )nulls_fixturer   rO   r   r   r   *test_drop_duplicates_null_in_object_column  s   rx   r(   r>   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   rS   cder'   )
r   rE   ri   r   r   rU   r   rA   rB   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   c                  C   s   t g dg dg dd} d}tjt|d | ddgd}W d    n1 s*w   Y  t d	d
gd	dgd	dgdd	d
gd}t|| d S )N)r	   r	   r!   )r	   r	   r,   )r   rS   rz   z~In a future version of pandas all arguments of DataFrame.drop_duplicates except for the argument 'subset' will be keyword-onlyr   rS   rz   r&   r	   r!   r,   rb   )r   rA   assert_produces_warningFutureWarningr   rB   )r   r   rO   rP   r   r   r   )test_drop_duplicates_pos_args_deprecation  s   $r   )r   r   numpyrE   r   pandasr   r   r   pandas._testing_testingrA   markparametrizer   rR   rY   r]   ra   rf   rj   rk   ro   rt   rx   r   r   r   r   r   r   r   <module>   sR    
	`$

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