o
    5cl                  
   @   s"  d dl mZmZ d dlmZ d dlmZmZ d dlZ	d dl
Z
d dlmZmZ d dlm  mZ d dlZd dlmZmZmZmZmZmZmZ d dlmZ d dlmZ d dl m!Z! d d	l"m#Z# G d
d dZ$e
j%&deege
j%&de	j'd dd Z(e
j%&de!ege
j%&de	j'd dd Z)dd Z*dd Z+dd Z,e
j%&dg dg dgdd Z-dd  Z.e
j%&d!e/d"e	0d d#iej1e	0d d#d"d$gd%d& Z2d'd( Z3d)d* Z4e
j%&d+g d,d-d. Z5e
j%&d/d0gd1 d2fd0gd1 d3fg d4d3fg d4d2fgd5d6 Z6d7d8 Z7d9d: Z8d;d< Z9e
j%&d=ed>d?gd@edAd>d?gid@ee:dBee:dBgdCdD Z;e
j%&d=ed>d?gd@edAd>d?gid@ee:dBee:dBgdEdF Z<ej=e
j%&dGg dHe
j%&dIg dJdKdL Z>ej=e
j%&dGg dHe
j%&dIg dJdMdN Z?ej=dOdP Z@dS )Q    )abcdeque)Decimal)catch_warningssimplefilterN)InvalidIndexErrorPerformanceWarning)	DataFrameIndex
MultiIndexPeriodIndexSeriesconcat
date_range)SparseArray)!create_series_with_explicit_dtype)
to_decimalc                   @   s   e Zd Zdd Zdd Zdd Zdd Zej	d	d	d
g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d!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1S )2TestConcatenatec                 C   s   t dddd}t dddd}ttjd|}ttjd|}| }| }t||g}t|jt	s6J |jd |jd ksBJ d S )	Nz
12/31/1990z
12/31/1999zA-DEC)freqz
12/31/2000z
12/31/2009
   r   )
r   r   nprandomrandn	to_periodr   
isinstanceindexr   )selfd1d2s1s2result r"   ]/var/www/html/gps/gps/lib/python3.10/site-packages/pandas/tests/reshape/concat/test_concat.pytest_append_concat%   s   z"TestConcatenate.test_append_concatc                    s  t tjdd}t tjjdddddd}t dditdd	}t|||gdd
d}|jj	D ]	  j
d u s9J q0t|||gddd}|jj	D ]A  jjdkr] j
|jj	d j
u s\J qH jjdv rp j
|jj	d j
u soJ qH jtkr|r |jj	d u sJ qH j
d usJ qHt tjdd}t||||gddd}|jj	D ]M  jjdkr|rt fdd|jj	|jj	 D sJ q j
d u sJ q jjdv rۈ j
|jj	d j
u sJ q jtkrt fdd|jj	D sJ qd S )N      r   r   )size      foor   T)axiscopyFf)iuc                 3       | ]	}t  |V  qd S Nr   shares_memory.0otherarrr"   r#   	<genexpr>V   s
    

z3TestConcatenate.test_concat_copy.<locals>.<genexpr>c                 3   r1   r2   r3   r5   r8   r"   r#   r:   a   s    )r	   r   r   r   randintreshaperanger   _mgrarraysbasedtypekindobjectany)r   using_array_managerdfdf2df3r!   df4r"   r8   r#   test_concat_copy5   s@   

z TestConcatenate.test_concat_copyc                 C   sd  t tjdd}t tjdd}t||gddgd}tg dg dg}t tj|j|jf |d}t	
|| t||gddgd}tg d	g d
g}t tj|j|jf |d}t	
|| t tjdd}t tjdd}t||gddgdd}t tj|j|jf |d}t	
|| t||gddgdd}t tj|j|jf |d}t	
|| d S )Nr&   r%   r   r(   keys)r   r   r   r(   r(   r(   r(   )r   r(      r   r(   rM   r&   r+   )r   r   r   r(   r(   r(   )r   r(   rM   r   r(   rM   rL   r,   columns)r	   r   r   r   r   r   from_arraysr_valuestmassert_frame_equalc_)r   rF   rG   r!   	exp_indexexpected
exp_index2r"   r"   r#   test_concat_with_group_keysc   s(   z+TestConcatenate.test_concat_with_group_keysc                 C   s   t tjdd}|jd d ddgf |jd d dgf |jd d dgf g}g d}t|dg d|gd	gd
}t|jj	d t
|d	d t|jj	d t
g d |jjd	d gks^J d S )Nr   r%   r   r(   rM   r&   )threetwoonezero)r]   r\   r[   	group_key)r,   rL   levelsnamesname)r   r(   rM   r&   )r	   r   r   r   ilocr   rT   assert_index_equalrP   r`   r
   ra   )r   rF   pieceslevelr!   r"   r"   r#    test_concat_keys_specific_levels   s   <z0TestConcatenate.test_concat_keys_specific_levelsmappingdictc              	      s  |dkrt n|}|ttjddttjddttjddttjddd t  }t }t fdd|D |d}t	|| t dd	}t fd
d|D |dd}t	|| g d}t |d}t fdd|D |d}t	|| d S )Nrj   r%   r&   )r*   barbazquxc                       g | ]} | qS r"   r"   r6   kframesr"   r#   
<listcomp>       z7TestConcatenate.test_concat_mapping.<locals>.<listcomp>rK   r(   r,   c                    rn   r"   r"   ro   rq   r"   r#   rs      rt   rN   )rl   r*   rk   c                    rn   r"   r"   ro   rq   r"   r#   rs      rt   )
rj   r	   r   r   r   listrL   r   rT   rU   )r   ri   non_dict_mapping_subclassconstructorsorted_keysr!   rX   rL   r"   rq   r#   test_concat_mapping   s&   	z#TestConcatenate.test_concat_mappingc                 C   s$  t tjdd}t tjdd}ddgddgg}dd	g}t||||gg d
||d}t||||g}t|dgg g dg dg dg|d g d}||_t|| t||||gg d
|d}|jj	dksiJ t||||gg d
dd	gd}|jj	dksJ t
|jjd tddgdd d S )Nr(   r&   r%   r*   rl   r]   r\   firstsecond))r*   r]   )r*   r\   )rl   r]   )rl   r\   )rL   r`   ra   r   )r   r   r(   r(   )r   r(   r   r(   r   r   r   r   )r`   codesra   rL   r`   )NNNrL   ra   )r{   r|   Nrb   )r	   r   r   r   r   r   r   rT   rU   ra   re   r`   r
   )r   rF   rG   r`   ra   r!   rX   rW   r"   r"   r#   test_concat_keys_and_levels   sB   



z+TestConcatenate.test_concat_keys_and_levelsc                 C   s   t tjdddgd}t tjdddgd}d}tjt|d t||gd	d
gg dgd W d    n1 s:w   Y  d}tjt|d t||gd	d
gg dgd W d    d S 1 sbw   Y  d S )Nr(   r&   ar+   r%   bz Values not found in passed levelmatchr]   r\   )r*   rk   rl   r   zKey one not in level)r	   r   r   r   pytestraises
ValueErrorr   )r   rF   rG   msgr"   r"   r#   "test_concat_keys_levels_no_overlap   s   "z2TestConcatenate.test_concat_keys_levels_no_overlapc                 C   s<  g d}t tjg dddtjg dddtjg dddtjg dddd|d}t tjg dddtjg dddtjg dddtjg dddd|d}t||gdd}t tj|j|jgd	d
|d}t|| t tj	dddgd}t tj	dddgd}t||gddgddgd}|j
jdksJ d S )N)ABCDr(   rM   r&   r%   f8rA   i8rO   Tignore_indexr   ru   r(   r&   r   r+   r%   r   r]   r\   r{   r|   r   )r{   r|   )r	   r   arrayr   concatenaterS   rT   rU   r   r   r   ra   )r   rP   df1rG   appendedrX   rF   r!   r"   r"   r#    test_crossed_dtypes_weird_corner   s4   

z0TestConcatenate.test_crossed_dtypes_weird_cornerc                 C   s@   t dddtdd}t dddtdd}t||g|d d S )Nr*   rk   )r   r   r(   rM   r+   )r   r   sort)r	   r=   r   )r   r   r   rG   r"   r"   r#   test_with_mixed_tuples  s   z&TestConcatenate.test_with_mixed_tuplesc                 C   s  t dddd}tjddd}t||d}t||d}t|dd	|d}tt|d
dd
|ddgd}t||gd	d}t	|| tt|d
dd
|dd	gd}t||gd	d}t	|| tt|ddd|g dd}t|||gd	d}t	|| tt|ddd|g dd}t|||||gd	d}t	|| d|_
tt|ddd|g dd}t|||gd	d}t	|| d|_
tt|ddd|g dd}t|||gd	d}t	|| tt|ddd|g dd}t|||gd	dd}t	|| tt|ddd	| d dgd}t|||g}t	|| tt|ddd	dgd}t|||gdd}t	|| d S )Nz01-Jan-2013r   H)periodsr   int64r   r+   r(   rM   r   r   rP   ru   r&   r   r(   rM   r)   )r   r   r(   rM   r&   r*   )r*   r   r   rk   )r*   r   rk   T)r,   r   rO   r   )r   r   aranger   r	   r<   repeatr   rT   rU   rc   tiletolist)r   r   r9   r   r    rF   rX   r!   r"   r"   r#   test_concat_mixed_objs  sd    z&TestConcatenate.test_concat_mixed_objsc                 C   s   t dtddtjgi}t|jdg |jdg g}t|j	|j	 dd l
}t d|
ddd|
dddgi}t|jdg |jdg g}t|j	|j	 t d	d
gd gd  i}t|jdg |jdg g}t|j	|j	 d S )Ndate20130101UTCr   r(   i  i  rM   textz
some words	   )r	   pd	Timestamptz_localizeNaTr   rd   rT   assert_series_equaldtypesdatetime)r   rF   r!   r   r"   r"   r#   test_dtype_coerceionQ  s   z$TestConcatenate.test_dtype_coerceionc                 C   sN   t tjdd}t|gdgd}t||gddgd}t||d d  d S )Nr   r%   r*   rK   rk   )r	   r   r   r   r   rT   rU   )r   rF   r!   rX   r"   r"   r#   test_concat_single_with_keyg  s   z+TestConcatenate.test_concat_single_with_keyc                 C   s<   t jtdd tg  W d    d S 1 sw   Y  d S )NzNo objects to concatenater   )r   r   r   r   r   r"   r"   r#   test_concat_no_items_raisesn  s   
"z+TestConcatenate.test_concat_no_items_raisesc                 C   s   t tjdd}|d d d d |dd  g}t|}t|| tjt	dd td d g W d    d S 1 s:w   Y  d S )Nr   r%   r)   zAll objects passed were Noner   )
r	   r   r   r   r   rT   rU   r   r   r   )r   rF   rf   r!   r"   r"   r#   test_concat_exclude_noner  s   "z(TestConcatenate.test_concat_exclude_nonec                 C   s   t g dg dg dg}td ||d d |d d |d}t||d d |d d |d}t|| td ||d d |d d |gg dd}t||d d |d d |gg dd}t|| d S )N)r         rM   r(   )r   r   cde)r   r   r   r   rK   r	   r   rT   rU   )r   df0r!   rX   r"   r"   r#   test_concat_keys_with_none{  s   $""(z*TestConcatenate.test_concat_keys_with_nonec                 C   sV   t  }t  d d d }t||gddd}t||gddd}t|t|ks)J d S )NrM   outerr(   )joinr,   )rT   makeTimeSeriesr   len)r   ts1ts2leftrightr"   r"   r#   test_concat_bug_1719  s
   z$TestConcatenate.test_concat_bug_1719c                 C   s`   t td}t td}d |_|_t||gdd}t||d}ddg|_t	|| d S )Nr)   z	same namer(   ru   r   r(   )
r   r   zerosonesrc   r   r	   rP   rT   rU   )r   ts0r   r!   rX   r"   r"   r#   test_concat_bug_2972  s   
z$TestConcatenate.test_concat_bug_2972c                 C   s   t g dg dg dd}t g dg dg dd}t g dg d	g d
g dg}g d|_t||gdd}t|| d S )Nr}   )   r   r   r   )rrrr   r   r   )firmNoprc	stringvar)r   r         r   )r   miscr   )r   r   r   r   r(   r   )r   r   r   r   rM   r   )r   r   r   r   r&   r   )r   r   r   r   r%   r   )r   r   r   r   r   r   r(   ru   )r	   rP   r   rT   rU   )r   r   rG   rX   r!   r"   r"   r#   test_concat_bug_3602  s&   
z$TestConcatenate.test_concat_bug_3602c                    s   t g d t g dt g d}tt fdd| tt gdd| ttdd  fD dd| ttt fdd| G  fdd	d	}tt| dd| G  fd
ddtj}tt| dd| d S )Nr(   rM   r&   r%   r)   r   r(   rM   r&   r%   r)   r   Tr   c                 s   s    | ]}|V  qd S r2   r"   )r6   rF   r"   r"   r#   r:     s    z8TestConcatenate.test_concat_iterables.<locals>.<genexpr>c                       s(   e Zd ZdefddZ fddZdS )z>TestConcatenate.test_concat_iterables.<locals>.CustomIterator1returnc                 S   s   dS )NrM   r"   r   r"   r"   r#   __len__  s   zFTestConcatenate.test_concat_iterables.<locals>.CustomIterator1.__len__c              
      s0   z d| W S  t y } zt|d }~ww )Nr   )KeyError
IndexError)r   r   errr   rG   r"   r#   __getitem__  s   zJTestConcatenate.test_concat_iterables.<locals>.CustomIterator1.__getitem__N)__name__
__module____qualname__intr   r   r"   r   r"   r#   CustomIterator1  s    r   c                       s   e Zd Z fddZdS )z>TestConcatenate.test_concat_iterables.<locals>.CustomIterator2c                 3   s     V  V  d S r2   r"   r   r   r"   r#   __iter__  s   
zGTestConcatenate.test_concat_iterables.<locals>.CustomIterator2.__iter__N)r   r   r   r   r"   r   r"   r#   CustomIterator2  s    r   )r	   rT   rU   r   r   r   Iterable)r   rX   r   r   r"   r   r#   test_concat_iterables  s   
z%TestConcatenate.test_concat_iterablesc                 C   sV   t tdg ddg}|dd tdD 7 }t|ddj}tg d	}t|| d S )
Nr&   )r   r(   Nr   c                 S   s    g | ]}t td g ddqS )r&   )Nr(   r   r   )r	   r=   )r6   _r"   r"   r#   rs     s     z5TestConcatenate.test_concat_order.<locals>.<listcomp>d   Tr   )r(   r   N)r	   r=   r   rP   r
   rT   re   )r   dfsr!   rX   r"   r"   r#   test_concat_order  s
   z!TestConcatenate.test_concat_orderc                 C   sb   t tjddgdd}t tddg}t||gdd}t ddtdtdgtd}t|| d S )Nr(   rM   Int64r   Tr   )	r   r   r   r   r   r   rC   rT   r   )r   r   r   r!   rX   r"   r"   r#   .test_concat_different_extension_dtypes_upcasts  s
   z>TestConcatenate.test_concat_different_extension_dtypes_upcastsc                 C   sR   t ttdttdgddgd}t ttdttdd}t|| d S )Nr&   r%   FirstAnotherrK   )r   r   )r   r   r=   rT   r   )r   rX   r!   r"   r"   r#   test_concat_ordered_dict  s
   z(TestConcatenate.test_concat_ordered_dictc                 C   s   t tjdg ddgd}t tjdg ddgd}d}tjt|d t||gd	d
 W d    d S 1 s9w   Y  d S )Nr)   )r   r(   rM   r&   r&   r   r   )r   r(   rM   rM   r%   r   z8Reindexing only valid with uniquely valued Index objectsr   r(   ru   )r	   r   r   r   r   r   r   r   )r   r   rG   r   r"   r"   r#   #test_concat_duplicate_indices_raise  s   "z3TestConcatenate.test_concat_duplicate_indices_raiseN)r   r   r   r$   rJ   rZ   rh   r   markparametrizerz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r"   r"   r"   r#   r   $   s2    .
)!	E	
 	r   pdtdtfloatc                 C   sj   |t dj}|tjdg| |d|tjtjg| |d|tjdg| |dg}t|}|jj| ks3J d S )Nr   r(   rA   ndminr)   )rC   ndimr   r   nanr   rS   rA   r   r   dimsr   xr"   r"   r#   !test_concat_no_unnecessary_upcast  s   r  r   c              	   C   s   t dd9 | j}|tjdg| |d|tjtjg|d|tjdg| |dg}t|}|jjdks6J W d    d S 1 sAw   Y  d S )NT)recordr(   r   )r   r)   float64)r   r   r   r   r   r   rS   rA   r   r"   r"   r#   test_concat_will_upcast
  s   "r  c                  C   sD   t ddgi} t dg i}t ddgi}t| |g}t|| d S )Nr*   r(   g      ?r   )r   rG   rX   r!   r"   r"   r#   0test_concat_empty_and_non_empty_frame_regression  s
   r  c                  C   s\   t tg d} tddgddgddggdttjd}t| | gdd}t	
|| d S )Nr   r   r(   rM   dataru   )r   r   r	   astyper   SparseDtyper   r   r   rT   rU   )r   rX   r!   r"   r"   r#   test_concat_sparse!  s   r  c                  C   sn   t tjd } tt jdd g| d}tdgtd}tg dg dd| }t	||gdd}t
|| d S )Nr(   r   )r(   Nr(   )r   r(   r   r  r   r   ru   )r   r
  r   r  r   r?   r   r   r	  r   rT   r   )rA   r   r   rX   r!   r"   r"   r#   test_concat_dense_sparse+  s   r  rL   )r   r.   r.   )r.   r   r.   c                 C   s   t g dg dd}tg ddd}tg ddd}t|||gd	| d
}g dg dg dg}t| d df| d df| d	 df| d dfg}t ||d}t|| d S )Nr   r   r   r   )      r   r   rb   )r   r   r   r   r(   r,   rL   )r(   r%   r  r   )rM   r)   r  r   )r&   r   r   r   r   r   r   rM   rO   )r	   r   r   r   from_tuplesrT   rU   )rL   rF   r   r    r!   expected_valuesexpected_columnsrX   r"   r"   r#   test_duplicate_keys5  s   *r  c                  C   s   ddg} t g dg dd}t||gd| d}g dg dg d	g}t| d
 df| d
 df| d df| d dfg}t ||d}t  tdt t|| W d    d S 1 s\w   Y  d S )Nr   r   r   r  r(   r  )r(   r%   r(   r%   )rM   r)   rM   r)   )r&   r   r&   r   r   r   r   rO   ignore)	r	   r   r   r  r   r   r   rT   rU   )rL   rF   r!   r  r  rX   r"   r"   r#   test_duplicate_keys_same_frameD  s   *
"r  objr   r   rb   c                 C   s"   t | | g}t|t| sJ d S r2   )r   r   type)r  r!   r"   r"   r#   test_concat_preserves_subclassT  s   
r  c                  C   s   t dtjg dddi} t dtg di}t| |gdd}t dg didd}t|| t|| gdd}t dg d	idd}t|| d S )
Nr   r   r   r   r   Tr   r   )r%   r)   r   r(   rM   r&   )r	   r   r   r   r   rT   rU   r   rG   r!   rX   r"   r"   r#   (test_concat_frame_axis0_extension_dtypesb  s   r  c                  C   s^   t ddgidd} t ddgidd}t| |gdd}t dd gd dgd	dd}t|| d S )
Nr   r   r   r   r   r(   Tr   r  r   )df_adf_br!   rX   r"   r"   r#   +test_concat_preserves_extension_int64_dtypep  s
   r  zdtype1,dtype2,expected_dtype))boolr   r   )booleanr   r!  )r   r!  r!  )r!  r!  r!  c                 C   sP   t ddg| d}t ddg|d}t||gdd}t g d|d}t|| d S )NTFr   r   )TFFT)r   r   rT   r   )dtype1dtype2expected_dtypeser1ser2r!   rX   r"   r"   r#   test_concat_bool_typesy  s
   r'  )rL   	integrityredr&   TF)r)  bluer)  c                 C   sh   t ddit ddit ddig}t|| |d}tt| g d}t g d	t|d
}t|| d S )Nr   r(   r   rM   r   r&   )rL   verify_integrity)r   r   r   r   r+   )r   r   rv   zipr   r  rT   r   )rL   r(  series_listr!   tuplesrX   r"   r"   r#   test_concat_repeated_keys  s
   "r/  c                  C   s   t jdgddd} tddgi| d}td gdd	d}td gtjgd
|d}t||gdd}td | d gtd}td d gtjtjgtjdgd|d}t	|| d S )Nz2021-04-08 21:21:14+00:00zdatetime64[ns, UTC]z
Time (UTC))rA   rc   r   g!u?r  rC   zMaybe Time (UTC))r   r   rP   ru   r   r   )r   r   r   r+   )
r   DatetimeIndexr	   r
   r   r   r   rC   rT   rU   )dtir   idxr   r!   rW   rX   r"   r"   r#    test_concat_null_object_with_dti  s   r3  c                  C   sl   t ddg} tddgg| d}tdgtdd}t||g}tddgtjtjgg| d}t	|| d S )Nr   )r   r(   r(   rM   rO   r   r   )
r   r  r	   r   
RangeIndexr   r   r   rT   rU   )mir   rG   r!   rX   r"   r"   r#   ,test_concat_multiindex_with_empty_rangeindex  s   r6  c                  C   s   t g dgdgd} t g dgdgd}d}tjt|d t| |gd}W d    n1 s/w   Y  t g dg dgddgd}t|| d S )	Nr   r   r+   r   r   ziIn a future version of pandas all arguments of concat except for the argument 'objs' will be keyword-onlyr   r   )r	   rT   assert_produces_warningFutureWarningr   rU   )rF   rG   r   r!   rX   r"   r"   r#   test_concat_posargs_deprecation  s   r9  r  r(   rM   r  col1r   c                 C   sF   |   }ddi|_|   }ddi|_t||g}t|jdks!J d S )Nr(   rM   r   )r-   attrsr   r   r  r   rG   rF   r"   r"   r#   test_concat_drop_attrs     

r=  c                 C   sF   |   }ddi|_|   }ddi|_t||g}|jd dks!J d S )Nr(   )r-   r;  r   r<  r"   r"   r#   test_concat_retain_attrs  r>  r?  df_dtype)r  r   zdatetime64[ns]empty_dtype)Nr  rC   c                 C   sp   t ddgddgd|d}t ddg| d}t||g}|}|dkr0| d	kr+|d	}n|d
}t|| d S )Nr(   rM   r*   rk   r   r*   rk   )rP   rA   r   r  rC   )r	   r   r	  rT   rU   rA  r@  rF   emptyr!   rX   r"   r"   r#   %test_concat_ignore_emtpy_object_float  s   
rE  c                 C   s   t ddgddgd|d}t tjgtjgd| d}t||gdd}|dkr/| dkr-d}nd	}t g d
g d
d|d}t|| d S )Nr(   rM   rB  r   Tr   r   rC   r  )Nr(   rM   )r	   r   r   r   rT   rU   rC  r"   r"   r#   &test_concat_ignore_all_na_object_float  s   rF  c                  C   sr   t dgtdgd} t ddgi}t| |j| jdgdd}t ddgtdtjgd }} t|| d S )	Nr(   z
2012-01-01r  r   rM   rO   Tr   )	r	   r   r   r   reindexrP   r   rT   rU   r  r"   r"   r#   %test_concat_ignore_empty_from_reindex  s
   "rH  )Acollectionsr   r   decimalr   warningsr   r   numpyr   r   pandas.errorsr   r   pandas.util._test_decoratorsutil_test_decoratorstdpandasr   r	   r
   r   r   r   r   r   pandas._testing_testingrT   pandas.core.arraysr   pandas.core.constructionr   pandas.tests.extension.decimalr   r   r   r   sctypesr  r  r  r  r  r  r  SubclassedDataFramer   SubclassedSeriesr  r  r  r'  r/  r3  r6  r9  r   r=  r?  skip_array_manager_invalid_testrE  rF  rH  r"   r"   r"   r#   <module>   s    $	   Z	


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