
    o[web'                     `    d dl Zd dlZd dlZd dlmZmZmZmZm	Z	 d dl
mZ  G d d          ZdS )    N)	DataFrame
RangeIndexSeriesconcat
date_rangec                      e Zd Zd Zd Zej                            dddg          ej                            dg g dg          d                         Zej                            d	e	j
        e	j        e	j        fe	j
        e	j        e	j        fd
e	j
        e	j        fd
e	j        e	j        fde	j
        e	j        fde	j        e	j        fddg          d             Zej                            dg d          d             Zej                            dg d          ej                            dg d          d                         Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )TestEmptyConcatc                    t          t          j                            d                              d          t          d                    }|d d                                         }d|d<   |dd         }||||dd          g}t          |d|	          }|                    g d
          }|d         	                    d          |d<   d|j
        dddf<   t          j        ||           t          dt          d          it          ddd                    }t                      }t          ||gd          }t          j        ||           t          ||gd          }t          j        ||           t          ||g          }t          j        ||           t          ||g          }t          j        ||           d S )N   )
      abcdcolumns   barfoor   )axissort)abcdr   Or   Ai'  20130101s)periodsfreqindex   r   )r   nprandomdefault_rngstandard_normallistcopyr   reindexastypeloctmassert_frame_equalranger   )	selfr   dfdfcopyemptyframes	concattedexpectedresults	            Flib/python3.11/site-packages/pandas/tests/reshape/concat/test_empty.pytest_handle_empty_objectsz)TestEmptyConcat.test_handle_empty_objects   s   I!!!$$44W==tF||
 
 
 BQBu1Q3%122/6555	::&A&A&A:BB"5/0055#(QqS%Z 
i222 %,,z*eRU'V'V'V
 
 
 U!,,,
fb)))!,,,
fb)))U$$
fb)))$$
fb)))))    c                 p   t          g dd          }t          dd          }t          ||gd          }t          g dt          j        t          j        t          j        gd	t          d
                    }t          j        ||           t          g dd          }t          dd          }d}t          j        t          |          5  t          ||gd          }d d d            n# 1 swxY w Y   t          g d          }t          j
        ||           t          g dd          }t          d d          }t          ||gd          }t          g dt          j        t          j        t          j        gdddgt          d
                    }t          j        ||           d S )Nr"   r      x)nameyfloat64)r?   dtyper"   r#   )r>   r@   r=   r    zDThe behavior of array concatenation with empty entries is deprecated)matchr   )r>   r   )r   r!   )r   r   r   r$   nanr   r-   r.   assert_produces_warningFutureWarningassert_series_equal)r0   s1s2resexpmsgs         r8   test_concat_empty_seriesz(TestEmptyConcat.test_concat_empty_series2   s   IIIC(((I...b"XA&&&))262626":;;Q--
 
 
 	c3'''IIIC(((I...T'SAAA 	+ 	+"b***C	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ YYY
sC((( IIIC(((Y///b"XA&&&)) 899!HQ--
 
 

 	c3'''''s   C22C69C6tzNUTCvaluesr<   c                    t          g d          j                            |          }|rd nt          j        }t          ||          }t          t          t          j        gt          |          z  d          j                            |          |d          }t          ||gd          }t          j        ||           d S )NM8[ns]rB   )r   r"   r"   r#   )r   dttz_localizer$   rA   r   pdNaTlenr   r-   r.   )r0   rN   rP   firstrB   secondr6   r7   s           r8   !test_concat_empty_series_timelikez1TestEmptyConcat.test_concat_empty_series_timelikeQ   s    
 r***-99"==.BJe,,,26(S[[0AAADPPQSTT 
 
 a000
fh/////r:   zleft,right,expectedm8[ns]rR   )categoryr]   r]   )r]   objectr^   c                 z    t          t          |          t          |          g          }|j        |k    sJ d S NrS   )r   r   rB   )r0   leftrightr6   r7   s        r8   test_concat_empty_series_dtypesz/TestEmptyConcat.test_concat_empty_series_dtypesc   sE    $ d+++V%-@-@-@ABB|x''''''r:   rB   )rA   int8uint8boolr\   rR   c                     t          j        |          }t          t          |          g          }|j        |k    sJ t          t          |          t          |          g          }|j        |k    sJ d S r`   )r$   rB   r   r   )r0   rB   r7   s      r8   0test_concat_empty_series_dtypes_match_roundtripsz@TestEmptyConcat.test_concat_empty_series_dtypes_match_roundtripsx   s     e,,,-..|u$$$$e,,,f5.A.A.ABCC|u$$$$$$r:   )rA   rd   re   r\   rR   dtype2c                 <   ||k    rt          j        d           d d fd}t          j        |          }t          j        |          } |||          }t	          t          |          t          |          g          j        }|j        |k    sJ d S )Nz%same dtype is not applicable for testc                     | j         |j         h}t          |h dz
            s| j         dk    s|j         dk    rdS t          |ddhz
            s| j         dk    s|j         dk    rdS d S )N>   r   iurl   rm   r   kindrX   rB   ri   typss      r8   int_result_typezSTestEmptyConcat.test_concat_empty_series_dtypes_roundtrips.<locals>.int_result_type   s    J,Dtooo-.. 
c!!V[C%7%7sc
*++ 
c!!V[C%7%7s4r:   c                 z    | j         |j         h}t          |h dz
            s| j         dk    s|j         dk    rdS d S )N>   frl   rm   rt   rn   rp   s      r8   float_result_typezUTestEmptyConcat.test_concat_empty_series_dtypes_roundtrips.<locals>.float_result_type   sL    J,Dtooo-.. 
c!!V[C%7%7s4r:   c                 H     | |          }||S  | |          }||S dS )Nr    )rB   ri   r7   ru   rr   s      r8   get_result_typezSTestEmptyConcat.test_concat_empty_series_dtypes_roundtrips.<locals>.get_result_type   sA    &&uf55F!$_UF33F!3r:   rS   )pytestskipr$   rB   r   r   ro   )r0   rB   ri   rx   r6   r7   ru   rr   s         @@r8   *test_concat_empty_series_dtypes_roundtripsz:TestEmptyConcat.test_concat_empty_series_dtypes_roundtrips   s     F??K?@@@
	 
	 
		 	 		 	 	 	 	 	 &!!"?5&11e,,,f6.B.B.BCDDJ{h&&&&&&r:   c                     t          t          d          t          t          j                  t          t          j                  g          j        t          j        k    sJ d S )NrR   rS   )r   r   r$   bool_int64rB   object_r0   s    r8   &test_concat_empty_series_dtypes_triplez6TestEmptyConcat.test_concat_empty_series_dtypes_triple   sd    h'''bh)?)?)?bhAWAWAWX z     r:   c                     t          t          t          j        g           d          t          d          g          j        dk    sJ d S )Nr]   rS   rA   )r   r   r$   arrayrB   r   s    r8   2test_concat_empty_series_dtype_category_with_arrayzBTestEmptyConcat.test_concat_empty_series_dtype_category_with_array   s]     J777i9P9P9PQ      r:   c                 ^   t          t          d                              d          t          d                              d          g          }|j        dk    sJ t          t          d                              d          t          d          g          }t	          j        t          j                  }|j        |k    sJ t          t          d                              d          t          d          g          }t	          j        d          }|j        |k    sJ d S )NrA   rS   SparsezSparse[float64]r^   )r   r   r+   rB   rV   SparseDtyper$   rA   )r0   r7   r6   s      r8   &test_concat_empty_series_dtypes_sparsez6TestEmptyConcat.test_concat_empty_series_dtypes_sparse   s*   Y'''..x88Y'''..x88
 
 |00000)$$$++H55vI7N7N7NO
 
 >"*--|x'''')$$$++H55vH7M7M7MN
 
 >(++|x''''''r:   c                     t          g dt          j        g dd          }t          |j                  }t	          ||gd          }|                    t                    }t          j        ||           d S )N)r   r"   r"   r<   )RowEmptyCol	NumberColr   r   r#   )	r   r$   rD   r   r   r+   r^   r-   r.   )r0   df_1df_2r7   r6   s        r8   !test_concat_empty_df_object_dtypez1TestEmptyConcat.test_concat_empty_df_object_dtype   su    YYYWWXX...t1---;;v&&
fh/////r:   c                 
   t          t          d                    }|d                             t          j                  |d<   |d                             t          j                  |d<   |d                             t          j                  |d<   t          ||g          }|d         j        t          j        k    sJ |d         j        t          j        k    sJ |d         j        t          j        k    sJ t          ||                    t          j                  g          }|d         j        t          j	        k    sJ |d         j        t          j        k    sJ |d         j        t          j        k    sJ d S )Nabcr   r   r   r   )
r   r(   r+   r$   r}   int32rA   r   rB   r   )r0   r1   r7   s      r8   "test_concat_empty_dataframe_dtypesz2TestEmptyConcat.test_concat_empty_dataframe_dtypes   s<   tE{{+++S'..**3S'..**3S'..,,3R!!c{ BH,,,,c{ BH,,,,c{ BJ....RYYrz22344c{ BJ....c{ BJ....c{ BJ......r:   c                 8   t                      }t          dddgiddgd          }t          dg it          d          d          }t          ||gdd          }t          j        ||           t          ||gdd	          }t          j        ||           d S )
Nr   r"   r   r   r~   )r!   rB   inner)r   joinouter)r   r   r   r-   r.   )r0   df_emptydf_adf_expectedr7   s        r8   test_concat_inner_join_emptyz,TestEmptyConcat.test_concat_inner_join_empty   s    ;;#1vq!fGDDDb	AgNNNx(qw???
fk222x(qw???
fd+++++r:   c                     t          dd gdd ggddg          }t          dd gdd ggddg          }t          ||g          }|j        }t          j        |j        |           d S )Nr"   r   r   r   )datar   r=   r   )r   r   dtypesr-   rG   )r0   df1df2r7   r6   s        r8   test_empty_dtype_coercez'TestEmptyConcat.test_empty_dtype_coerce   s}     q$i!T3c3ZHHHq$i!T3c3ZHHHc
##:
v}h77777r:   c                 v   t          ddg          }t          ddg          }t          |||g          }t          g d          }t          j        ||           t          ddg          }t          dg          }t          ||g          }t          ddg          }t          j        ||           d S )Nr   r   r   r   r   r   r   )r   r   r-   r.   )r0   r   r   r7   r6   df3df4s          r8   test_concat_empty_dataframez+TestEmptyConcat.test_concat_empty_dataframe  s    c
+++c
+++c3((___555
fh///c
+++&&&c
##c3Z000
fh/////r:   c                    t          g dg dd          }t          dg di          }t          |d d         |d d         g          }|d         j        t          j        k    sJ |d         j        t          j        k    sJ d S )Nr<   r   )r   r   r   r   r   )r   r   rB   r$   r~   r   )r0   r   r   r7   s       r8   ,test_concat_empty_dataframe_different_dtypesz<TestEmptyConcat.test_concat_empty_dataframe_different_dtypes  s    iiiooo>>??iii())RaR#bqb'*++c{ BH,,,,c{ BJ......r:   c                 V   t          dt          j        g t          j                              i          }t          dt          j        g dt          j                              i          }|                                }t          ||g          }t          j        ||           dS )z<48510 `concat` to an empty EA should maintain type EA dtype.r   rS   r<   N)r   rV   r   
Int64Dtyper)   r   r-   r.   )r0   r   df_newr6   r7   s        r8   test_concat_to_empty_eaz'TestEmptyConcat.test_concat_to_empty_ea  s    c28Bbmoo#F#F#FGHHC)))2=??!K!K!KLMM;;==6*++
fh/////r:   )__name__
__module____qualname__r9   rM   ry   markparametrizer[   r$   r}   r   r   float32r~   rc   rh   r{   r   r   r   r   r   r   r   r   r   r   rw   r:   r8   r	   r	      sV        *  *  *D( ( (> [TD%=11[XIII770 0 87 210  [ Xrx,Xrz2:.rx,rx,rx,rx,0,	
  ( (!  (
 [III % % % [W&V&V&VWW[888 &' &'	  XW
&'P
 
 

 
 
( ( (*0 0 0/ / / 
, 
, 
,8 8 80 0 0/ / /0 0 0 0 0r:   r	   )numpyr$   ry   pandasrV   r   r   r   r   r   pandas._testing_testingr-   r	   rw   r:   r8   <module>r      s                               V0 V0 V0 V0 V0 V0 V0 V0 V0 V0r:   