o
    i                  
   @   sF  d Z ddlZddlZddlmZmZ ddlmZ ej	e
eeeeeegddd Zej	e
efeefee
feefeefeefeefeefgdd d	d
d Zdd Zejddd Zejdg d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 ejd)d*dgG d+d, d,Z!dS )-zG"
Test module for testing ``pandas._testing.assert_produces_warning``.
    N)DtypeWarningPerformanceWarning)paramsc                 C      | j S )zx
    Return unique warning.

    Useful for testing behavior of tm.assert_produces_warning with various categories.
    paramrequest r
   i/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/pandas/tests/util/test_assert_produces_warning.pycategory   s   r   c                 C   s
   t | jS N)type__name__)xr
   r
   r   <lambda>/   s   
 r   )r   idsc                 C   r   )z
    Return pair or different warnings.

    Useful for testing how several different warnings are handled
    in tm.assert_produces_warning.
    r   r   r
   r
   r   pair_different_warnings$   s   r   c                   C   s   t dt t dt d S )Nf1f2)warningswarnFutureWarningRuntimeWarningr
   r
   r
   r   f;   s   r   zignore:f1:FutureWarningc               	   C   s   d} t jt| d  tt t  W d    n1 sw   Y  W d    n1 s,w   Y  tjtdd t  W d    d S 1 sGw   Y  d S )NCaused unexpected warning\(s\)matchFraise_on_extra_warnings)pytestraisesAssertionErrortmassert_produces_warningr   r   )msgr
   r
   r   *test_assert_produces_warning_honors_filter@   s   "r&   zmessage, match)) N)r'   r'   )Warning messagez.*)r(   War)r(   z
[Ww]arning)r(   age)r(   zage$)Message 12-234 with numbersz\d{2}-\d{3})r+   z^Mes.*\d{2}-\d{3})r+   z\d{2}-\d{3}\s\S+)zMessage, which we do not matchNc                 C   s@   t j| |d t||  W d    d S 1 sw   Y  d S )Nr   r#   r$   r   r   )r   messager   r
   r
   r   %test_catch_warning_category_and_matchL   s   "r.   c               	   C      t } d}d}tjt|d4 tj| |d td|  td|  W d    n1 s,w   Y  W d    d S W d    d S 1 sDw   Y  d S )NzDid not see this warningzDid not see warning 'RuntimeWarning' matching 'Did not see this warning'. The emitted warning messages are \[RuntimeWarning\('This is not a match.'\), RuntimeWarning\('Another unmatched warning.'\)\]r   This is not a match.Another unmatched warning.)r   r    r!   r"   r#   r$   r   r   r   r   	unmatchedr
   r
   r   "test_fail_to_match_runtime_warninga      "r4   c               	   C   r/   )NWarningzDid not see warning 'FutureWarning' matching 'Warning'. The emitted warning messages are \[FutureWarning\('This is not a match.'\), FutureWarning\('Another unmatched warning.'\)\]r   r0   r1   )r   r    r!   r"   r#   r$   r   r   r2   r
   r
   r   !test_fail_to_match_future_warningp   r5   r7   c               	   C   r/   )Nz\d+zDid not see warning 'ResourceWarning' matching '\\d\+'. The emitted warning messages are \[ResourceWarning\('This is not a match.'\), ResourceWarning\('Another unmatched warning.'\)\]r   r0   r1   )ResourceWarningr    r!   r"   r#   r$   r   r   r2   r
   r
   r   #test_fail_to_match_resource_warning   r5   r9   c              	   C   s   | \}}d}t jt|d, t| td| W d    n1 s$w   Y  W d    d S W d    d S 1 s<w   Y  d S )Nz%Did not see expected warning of classr   zwarning messager    r!   r"   r#   r$   r   r   )r   expected_categoryactual_categoryr   r
   r
   r   !test_fail_to_catch_actual_warning   s   "r=   c                 C   sT   | \}}t j|dd td| td| W d    d S 1 s#w   Y  d S )NFr   Expected warningzUnexpected warning OKr,   )r   r;   extra_categoryr
   r
   r   test_ignore_extra_warning   s
   "r@   c              	   C   s   | \}}d}t jt|d2 t| td| td| W d    n1 s*w   Y  W d    d S W d    d S 1 sBw   Y  d S )Nr   r   r>   zUnexpected warning NOT OKr:   )r   r;   r?   r   r
   r
   r   test_raise_on_extra_warning   s   "rA   c                  C   \   t } tj| dd td|  td|  td|  W d    d S 1 s'w   Y  d S )N^Match thisr   
Match thisDo not match thatDo not match that either)UserWarningr#   r$   r   r   r   r
   r
   r   1test_same_category_different_messages_first_match      "rI   c                  C   rB   )NrC   r   rE   rF   rD   )DeprecationWarningr#   r$   r   r   rH   r
   r
   r   0test_same_category_different_messages_last_match   rJ   rL   c                  C   sT   t tf} tj| dd tdt  tdt W d    d S 1 s#w   Y  d S )NrC   r   rD   zMatch this too)r   rG   r#   r$   r   r   rH   r
   r
   r   test_match_multiple_warnings   s
   "rM   c              	   C   s   | \}}t jtdd4 tj|dd td| td| W d    n1 s*w   Y  W d    d S W d    d S 1 sBw   Y  d S )NzDid not see warning.*matchingr   rC   zDo not match itrD   r:   )r   target_categoryother_categoryr
   r
   r   &test_right_category_wrong_match_raises   s   "rP   false_or_noneFc                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestFalseOrNoneExpectedWarningc              	   C   sx   d}t jt|d) t| t  W d    n1 sw   Y  W d    d S W d    d S 1 s5w   Y  d S )Nr   r   )r    r!   r"   r#   r$   r   )selfrQ   r%   r
   r
   r   test_raise_on_warning   s   "z4TestFalseOrNoneExpectedWarning.test_raise_on_warningc                 C   s0   t |	 W d    d S 1 sw   Y  d S r   )r#   r$   rS   rQ   r
   r
   r   test_no_raise_without_warning   s   "z<TestFalseOrNoneExpectedWarning.test_no_raise_without_warningc                 C   s:   t j|dd t  W d    d S 1 sw   Y  d S )NFr   )r#   r$   r   rU   r
   r
   r   'test_no_raise_with_false_raise_on_extra   s   "zFTestFalseOrNoneExpectedWarning.test_no_raise_with_false_raise_on_extraN)r   
__module____qualname__rT   rV   rW   r
   r
   r
   r   rR      s    rR   )"__doc__r   r    pandas.errorsr   r   pandas._testing_testingr#   fixturer   r8   rG   r   rK   r   r   r   markfilterwarningsr&   parametrizer.   r4   r7   r9   r=   r@   rA   rI   rL   rM   rP   rR   r
   r
   r
   r   <module>   sb    
	





	