o
    dj                  
   @   s  d dl mZmZ d dlmZ d dl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$ G dd dZ%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 0d#e1d d$ie j2e1d d$d#d%gd&d' Z3d(d) Z4d*d+ Z5ej&'d,g d-d.d/ Z6ej&'d0d1gd2 d3fd1gd2 d4fg d5d4fg d5d3fgd6d7 Z7d8d9 Z8d:d; Z9ej&'d<ed=d>gd?ed@d=d>gid?ee:dAee:dAgdBdC Z;ej&'d<ed=d>gd?ed@d=d>gid?ee:dAee:dAgdDdE Z<ej=ej&'dFg dGej&'dHg dIdJdK Z>ej=ej&'dFg dGej&'dHg dIdLdM Z?ej=dNdO Z@dS )P    )abcdeque)datetime)Decimal)Iterator)catch_warningssimplefilterN)InvalidIndexErrorPerformanceWarning)	DataFrameIndex
MultiIndexPeriodIndexSeriesconcat
date_range)SparseArray)
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#   l/var/www/html/visualizacion-main/env/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}|s=|jj	D ]	  j
d u s;J q2n|jj	D ]	  j
d usJJ qAt|||gddd}|jj	D ]A  jjdkrn j
|jj	d j
u smJ qY jjdv r j
|jj	d j
u sJ qY jtkr|r |jj	d u sJ qY j
d usJ qYt tjdd}t||||gddd}|jj	D ]Q  jjdkr|s|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rt fdd|jj	D sJ 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>[   s
    

z3TestConcatenate.test_concat_copy.<locals>.<genexpr>c                 3   r2   r3   r4   r6   r9   r#   r$   r;   f   s    )r   r   r   r   randintreshaperanger   _mgrarraysbasedtypekindobjectany)r   using_array_managerusing_copy_on_writedfdf2df3r"   df4r#   r9   r$   test_concat_copy6   sH   
 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)   rO   r'   r,   )r   r   r   r)   r)   r)   )r   r)   rO   r   r)   rO   rN   r-   columns)r   r   r   r   r   r   from_arraysr_valuestmassert_frame_equalc_)r   rH   rI   r"   	exp_indexexpected
exp_index2r#   r#   r$   test_concat_with_group_keysh   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)   rO   r'   )threetwoonezero)r_   r^   r]   	group_key)r-   rN   levelsnamesname)r   r)   rO   r'   )r   r   r   r   ilocr   rV   assert_index_equalrR   rb   r   rc   )r   rH   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 )Nrl   r&   r'   )r+   barbazquxc                       g | ]} | qS r#   r#   r7   kframesr#   r$   
<listcomp>       z7TestConcatenate.test_concat_mapping.<locals>.<listcomp>rM   r)   r-   c                    rp   r#   r#   rq   rs   r#   r$   ru      rv   rP   )rn   r+   rm   c                    rp   r#   r#   rq   rs   r#   r$   ru      rv   )
rl   r   r   r   r   listrN   r   rV   rW   )r   rk   non_dict_mapping_subclassconstructorsorted_keysr"   rZ   rN   r#   rs   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+   rn   r_   r^   firstsecond))r+   r_   )r+   r^   )rn   r_   )rn   r^   )rN   rb   rc   r   )r   r   r)   r)   )r   r)   r   r)   r   r   r   r   )rb   codesrc   rN   rb   )NNNrN   rc   )r}   r~   Nrd   )r   r   r   r   r   r   r   rV   rW   rc   rg   rb   r   )r   rH   rI   rb   rc   r"   rZ   rY   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+   rm   rn   r   zKey one not in level)r   r   r   r   pytestraises
ValueErrorr   )r   rH   rI   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)   rO   r'   r&   f8rB   i8rQ   Tignore_indexr   rw   r)   r'   r   r,   r&   r   r_   r^   r}   r~   r   )r}   r~   )r   r   arrayr   concatenaterU   rV   rW   r   r   r   rc   )r   rR   df1rI   appendedrZ   rH   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+   rm   )r   r   r)   rO   r,   )r   r   sort)r   r>   r   )r   r   r   rI   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)   rO   r   r   rR   rw   r'   r   r)   rO   r*   )r   r   r)   rO   r'   r+   )r+   r   r   rm   )r+   r   rm   T)r-   r   rQ   r   )r   r   aranger   r   r=   repeatr   rV   rW   re   tiletolist)r   r   r:   r    r!   rH   rZ   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	 t dt
dddt
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  rO   textz
some words	   )r   pd	Timestamptz_localizeNaTr   rf   rV   assert_series_equaldtypesr   )r   rH   r"   r#   r#   r$   test_dtype_coerceionU  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+   rM   rm   )r   r   r   r   r   rV   rW   )r   rH   r"   rZ   r#   r#   r$   test_concat_single_with_keyf  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_raisesm  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   rV   rW   r   r   r   )r   rH   rh   r"   r#   r#   r$   test_concat_exclude_noneq  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         rO   r)   )r   r   cde)r   r   r   r   rM   r   r   rV   rW   )r   df0r"   rZ   r#   r#   r$   test_concat_keys_with_nonez  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 )NrO   outerr)   )joinr-   )rV   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)   rw   r   r)   )
r   r   zerosonesre   r   r   rR   rV   rW   )r   ts0r   r"   rZ   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   rO   r   )r   r   r   r   r'   r   )r   r   r   r   r&   r   )r   r   r   r   r   r   r)   rw   )r   rR   r   rV   rW   )r   r   rI   rZ   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)   rO   r'   r&   r*   r   r)   rO   r'   r&   r*   r   Tr   c                 s   s    | ]}|V  qd S r3   r#   )r7   rH   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 )NrO   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   rI   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def fddZdS )z>TestConcatenate.test_concat_iterables.<locals>.CustomIterator2r   c                 3   s     V  V  d S r3   r#   r   r   r#   r$   __iter__  s   
zGTestConcatenate.test_concat_iterables.<locals>.CustomIterator2.__iter__N)r   r   r   r   r   r#   r   r#   r$   CustomIterator2  s    r   )r   rV   rW   r   r   r   Iterable)r   rZ   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>   )r7   _r#   r#   r$   ru     s     z5TestConcatenate.test_concat_order.<locals>.<listcomp>d   Tr   )r)   r   N)r   r>   r   rR   r   rV   rg   )r   dfsr"   rZ   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)   rO   Int64r   Tr   )	r   r   r   r   r   r   rD   rV   r   )r   r   r   r"   rZ   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AnotherrM   )r   r   )r   r   r>   rV   r   )r   rZ   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)   rO   r'   r'   r   r   )r   r)   rO   rO   r&   r   z8Reindexing only valid with uniquely valued Index objectsr   r)   rw   )r   r   r   r   r   r   r	   r   )r   r   rI   r   r#   r#   r$   #test_concat_duplicate_indices_raise  s   "z3TestConcatenate.test_concat_duplicate_indices_raiseN)r   r   r   r%   rL   r\   rj   r   markparametrizer|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r#   r#   r#   r$   r   %   s2    2
)!	D	
 	r   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)   rB   ndminr*   )rD   ndimr   r   nanr   rU   rB   )r   frame_or_seriesdimsr   xr#   r#   r$   !test_concat_no_unnecessary_upcast  s   r  pdtr   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   rU   rB   )r   r  r   r   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   rI   rZ   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)   rO   datarw   )r   r   r   astyper   SparseDtyper   r   r   rV   rW   )r   rZ   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   rw   )r   r  r   r  r   r@   r   r   r
  r   rV   r   )rB   r   r   rZ   r"   r#   r#   r$   test_concat_dense_sparse(  s   r  rN   )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   rd   )r   r   r   r   r)   r-   rN   )r)   r&   r  r   )rO   r*   r  r   )r'   r   r   r   r   r   r   rO   rQ   )r   r   r   r   from_tuplesrV   rW   )rN   rH   r    r!   r"   expected_valuesexpected_columnsrZ   r#   r#   r$   test_duplicate_keys2  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&   )rO   r*   rO   r*   )r'   r   r'   r   r   r   r   rQ   ignore)	r   r   r   r  r   r   r
   rV   rW   )rN   rH   r"   r  r  rZ   r#   r#   r$   test_duplicate_keys_same_frameA  s   *
"r  objr   r   rd   c                 C   s"   t | | g}t|t| sJ d S r3   )r   r   type)r  r"   r#   r#   r$   test_concat_preserves_subclassQ  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)   rO   r'   )r   r   r   r   r   rV   rW   r   rI   r"   rZ   r#   r#   r$   (test_concat_frame_axis0_extension_dtypes_  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"   rZ   r#   r#   r$   +test_concat_preserves_extension_int64_dtypem  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   rV   r   )dtype1dtype2expected_dtypeser1ser2r"   rZ   r#   r#   r$   test_concat_bool_typesv  s
   r(  )rN   	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   rO   r   r'   )rN   verify_integrity)r   r   r   r   r,   )r   r   rx   zipr   r  rV   r   )rN   r)  series_listr"   tuplesrZ   r#   r#   r$   test_concat_repeated_keys  s
   "r0  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))rB   re   r   g!u?r  rD   zMaybe Time (UTC))r   r   rR   rw   r   r   )r   r   r   r,   )
r   DatetimeIndexr   r   r   r   r   rD   rV   rW   )dtir   idxr   r"   rY   rZ   r#   r#   r$    test_concat_null_object_with_dti  s   r4  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)   rO   rQ   r   r   )
r   r  r   r   
RangeIndexr   r   r   rV   rW   )mir   rI   r"   rZ   r#   r#   r$   ,test_concat_multiindex_with_empty_rangeindex  s   r7  r	  r)   rO   r  col1r   c                 C   sF   |   }ddi|_|   }ddi|_t||g}t|jdks!J d S )Nr)   rO   r   )r.   attrsr   r   r	  r   rI   rH   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.   r9  r   r:  r#   r#   r$   test_concat_retain_attrs  r<  r=  df_dtype)r  r   zdatetime64[ns]empty_dtype)Nr  rD   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)   rO   r+   rm   r   r+   rm   )rR   rB   r   r  rD   )r   r   r
  rV   rW   r?  r>  rH   emptyr"   rZ   r#   r#   r$   %test_concat_ignore_empty_object_float  s   
rC  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)   rO   r@  r   Tr   r   rD   r  )Nr)   rO   )r   r   r   r   rV   rW   rA  r#   r#   r$   &test_concat_ignore_all_na_object_float  s   rD  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   rO   rQ   Tr   )	r   r   r   r   reindexrR   r   rV   rW   r  r#   r#   r$   %test_concat_ignore_empty_from_reindex  s
   "rF  )Acollectionsr   r   r   decimalr   typingr   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_testingrV   pandas.core.arraysr   pandas.tests.extension.decimalr   r   r   r   sctypesr  r  r  r  r  r  r  SubclassedDataFramer   SubclassedSeriesr  r  r   r(  r0  r4  r7  r   r;  r=  skip_array_manager_invalid_testrC  rD  rF  r#   r#   r#   r$   <module>   s    $	   W
	


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