
    d                     z   d Z ddlZddlZddlmZ ddlmZmZ ddl	m
Z
 ddlmZ d Zej        d             Zej        d	             Zej        d
             Zej        d             Zej        d             Zej        d             Zej        d             Z G d d          Z G d deej                  Z G d deej                  Z G d deej                  Z G d deej                  Z G d dej                  Z  G d deej!                  Z" G d deej#                  Z$ G d d ej%                  Z& G d! d"eej'                  Z( G d# d$eej)                  Z* G d% d&eej+                  Z, G d' d(eej-                  Z. G d) d*eej/                  Z0 G d+ d,eej1                  Z2dS )-aj  
This file contains a minimal set of tests for compliance with the extension
array interface test suite, and should contain no other tests.
The test suite for the full functionality of the array is located in
`pandas/tests/arrays/`.

The tests in this file are inherited from the BaseExtensionTests, and only
minimal tweaks should be applied to get the tests passing (by overwriting a
parent method).

Additional tests should either be added to one of the BaseExtensionTests
classes (if they are relevant for the extension interface for all dtypes), or
be added to the array-specific tests in `pandas/tests/arrays/`.

    NIntervalDtype)IntervalSeries)IntervalArray)basec                      d} t           j                            |                                           }|t           j                            |           z   }d t	          ||          D             S )Nd   )sizec                 4    g | ]\  }}t          ||          S  )r   ).0leftrights      `/var/www/html/t/fyr/venv311/lib/python3.11/site-packages/pandas/tests/extension/test_interval.py
<listcomp>zmake_data.<locals>.<listcomp>!   s&    RRRkdEHT5!!RRR    )nprandomuniformcumsumzip)N
left_arrayright_arrays      r   	make_datar      sf    A"""**1133Jry00a0888KRRS[5Q5QRRRRr   c                      t                      S Nr   r   r   r   dtyper   $   s    ??r   c                  8    t          t                                S )z*Length-100 PeriodArray for semantics test.)r   r   r   r   r   datar!   )   s     %%%r   c                  .    t          j        ddg          S )zLength 2 array with [NA, Valid]Nr      r   from_tuplesr   r   r   data_missingr'   /   s     $dF^444r   c                  .    t          j        g d          S )N)r$      r*      r#   r%   r   r   r   data_for_sortingr-   5   s    $%=%=%=>>>r   c                  .    t          j        g d          S )N)r)   Nr#   r%   r   r   r   data_missing_for_sortingr/   :   s    $%;%;%;<<<r   c                      t           j        S r   )r   nanr   r   r   na_valuer2   ?   s	    6Mr   c            
      F    d} d}d}t          j        ||d d | | ||g          S )Nr#   r)   r+   r%   )abcs      r   data_for_groupingr7   D   s3    AAA$aD$1a%CDDDr   c                       e Zd ZdS )BaseIntervalN__name__
__module____qualname__r   r   r   r9   r9   L           Dr   r9   c                       e Zd ZdS )	TestDtypeNr:   r   r   r   r@   r@   P   r>   r   r@   c                       e Zd ZdS )TestCastingNr:   r   r   r   rB   rB   T   r>   r   rB   c                       e Zd ZdS )TestConstructorsNr:   r   r   r   rD   rD   X   r>   r   rD   c                       e Zd ZdS )TestGetitemNr:   r   r   r   rF   rF   \   r>   r   rF   c                       e Zd ZdS )	TestIndexNr:   r   r   r   rH   rH   `   r>   r   rH   c                       e Zd ZdS )TestGroupingNr:   r   r   r   rJ   rJ   d   r>   r   rJ   c                       e Zd ZdS )TestInterfaceNr:   r   r   r   rL   rL   h   r>   r   rL   c                   d     e Zd Zej                            dddg           fd            Z xZS )
TestReduceskipnaTFc                     |}t          |          }|dv r> t          ||          |          |v sJ  t          ||          |          |v sJ d S t                                          |||           d S )N)minmax)rO   )r   getattrsupertest_reduce_series_numeric)selfr!   all_numeric_reductionsrO   op_nameser	__class__s         r   rU   z%TestReduce.test_reduce_series_numericm   s    (Tlln$$(73((7774????)74))888D@@@@F**41GPPPPPr   )r;   r<   r=   pytestmarkparametrizerU   __classcell__rZ   s   @r   rN   rN   l   sb        [Xe}55
Q 
Q 
Q 
Q 65
Q 
Q 
Q 
Q 
Qr   rN   c                        e Zd Zej                            d           fd            Zej                            d           fd            Z xZS )TestMethodsz%addition is not defined for intervalsreasonc                 J    t                                          |           d S r   )rT   test_combine_add)rV   data_repeatedrZ   s     r   re   zTestMethods.test_combine_add|   s!      /////r   zdRaises with incorrect message bc it disallows *all* listlikes instead of just wrong-length listlikesc                 J    t                                          |           d S r   )rT   test_fillna_length_mismatch)rV   r'   rZ   s     r   rh   z'TestMethods.test_fillna_length_mismatch   s#    
 	++L99999r   )	r;   r<   r=   r[   r\   xfailre   rh   r^   r_   s   @r   ra   ra   {   s        [EFF0 0 0 0 GF0 [1   : : : :	 : : : : :r   ra   c                        e Zd Zej                            d          Ze fd            Ze fd            Ze fd            Z	e fd            Z
e fd            Zd Z xZS )	TestMissingz'Unsupported fillna option for Interval.rb   c                 H    t                                                       d S r   )rT   test_fillna_limit_padrV   rZ   s    r   rm   z!TestMissing.test_fillna_limit_pad   s    %%'''''r   c                 H    t                                                       d S r   )rT   test_fillna_series_methodrn   s    r   rp   z%TestMissing.test_fillna_series_method   s    ))+++++r   c                 H    t                                                       d S r   )rT   test_fillna_limit_backfillrn   s    r   rr   z&TestMissing.test_fillna_limit_backfill   s    **,,,,,r   c                 H    t                                                       d S r   )rT   test_fillna_no_op_returns_copyrn   s    r   rt   z*TestMissing.test_fillna_no_op_returns_copy   s    ..00000r   c                 H    t                                                       d S r   )rT   test_fillna_seriesrn   s    r   rv   zTestMissing.test_fillna_series   s    ""$$$$$r   c                     d}t          j        t          |          5  |                    ddg           d d d            d S # 1 swxY w Y   d S )Nz=can only insert Interval objects and NA into an IntervalArraymatchr$   )r[   raises	TypeErrorfillna)rV   r'   msgs      r   test_fillna_non_scalar_raisesz)TestMissing.test_fillna_non_scalar_raises   s    M]9C000 	( 	(A'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s   AA
A)r;   r<   r=   r[   r\   ri   unsupported_fillrm   rp   rr   rt   rv   r~   r^   r_   s   @r   rk   rk      s        {((8 )   ( ( ( ( ( , , , , , - - - - - 1 1 1 1 1 % % % % %( ( ( ( ( ( (r   rk   c                       e Zd ZdS )TestReshapingNr:   r   r   r   r   r      r>   r   r   c                       e Zd ZdS )TestSetitemNr:   r   r   r   r   r      r>   r   r   c                   `     e Zd Zej                            d           fd            Z xZS )TestPrintingzInterval has custom reprrb   c                 H    t                                                       d S r   )rT   test_array_repr)rV   r!   r   rZ   s      r   r   zTestPrinting.test_array_repr   s    !!!!!r   )r;   r<   r=   r[   r\   ri   r   r^   r_   s   @r   r   r      sW        [899" " " " :9" " " " "r   r   c                   d     e Zd Zej                            dddg           fd            Z xZS )TestParsingenginer6   pythonc                     d}t          j        t          |          5  t                                          ||           d d d            d S # 1 swxY w Y   d S )Nz,.*must implement _from_sequence_of_strings.*rx   )r[   rz   NotImplementedErrorrT   test_EA_types)rV   r   r!   expected_msgrZ   s       r   r   zTestParsing.test_EA_types   s    F].lCCC 	0 	0GG!!&$///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s   #AAA)r;   r<   r=   r[   r\   r]   r   r^   r_   s   @r   r   r      sY        [XX770 0 0 0 870 0 0 0 0r   r   )3__doc__numpyr   r[   pandas.core.dtypes.dtypesr   pandasr   r   pandas.core.arraysr   pandas.tests.extensionr   r   fixturer   r!   r'   r-   r/   r2   r7   r9   BaseDtypeTestsr@   BaseCastingTestsrB   BaseConstructorsTestsrD   BaseGetitemTestsrF   BaseIndexTestsrH   BaseGroupbyTestsrJ   BaseInterfaceTestsrL   BaseNoReduceTestsrN   BaseMethodsTestsra   BaseMissingTestsrk   BaseReshapingTestsr   BaseSetitemTestsr   BasePrintingTestsr   BaseParsingTestsr   r   r   r   <module>r      s/         3 3 3 3 3 3        - , , , , , ' ' ' ' ' 'S S S    & & &
 5 5 5
 ? ? ? = = =    E E E	 	 	 	 	 	 	 		 	 	 	 	d1 	 	 		 	 	 	 	, 5 	 	 		 	 	 	 	|T%? 	 	 		 	 	 	 	, 5 	 	 		 	 	 	 	# 	 	 		 	 	 	 	<!6 	 	 		 	 	 	 	L$"9 	 	 	Q Q Q Q Q' Q Q Q
: 
: 
: 
: 
:, 5 
: 
: 
:( ( ( ( (, 5 ( ( (B	 	 	 	 	L$"9 	 	 		 	 	 	 	, 5 	 	 	" " " " "<!7 " " "0 0 0 0 0, 5 0 0 0 0 0r   