
    bMhF                     h    d dl mZ d dlZd dlZd dlZd dlmZmZm	Z	m
Z
 d dlmZ  G d d          ZdS )    )timezoneN)	DataFrameIndexSeries
date_rangec                      e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zej                            d
ddej        gddegddegddej        gg          d             Zd Zd Zd Zd Zd Zd Zd Zd Zej                            dddg          ej                            dg d          ej                            dddg          ej                            dg d          ej                            d  ed!           ed"          g ed           ed          gg          ej                            d# ed$d%           ed&d%          g ed           ed          gg          ej                            d'dd%g          d(                                                                                     Zd) Zd* Zd+ Zd%S ),TestDataFrameAlignc                 b   t          ddt          j        dgi          }d}d}t          j        t
          |          5  t          j        t          |          5  |	                    |j
        d d d         d	           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )
NA      zInvalid fill methodz/The 'method', 'limit', and 'fill_axis' keywordsmatchasfreq)method)r   npnanpytestraises
ValueErrortmassert_produces_warningFutureWarningaligniloc)selfdfmsgmsg2s       e/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pandas/tests/frame/methods/test_align.pytest_align_asfreq_method_raisesz2TestDataFrameAlign.test_align_asfreq_method_raises   s,   a^,--#@]:S111 	9 	9+MFFF 9 92x8889 9 9 9 9 9 9 9 9 9 9 9 9 9 9	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9s5   B$&B B$B	B$B	B$$B(+B(c                 :   t          dddd          }t          dddd          }t          t          j                            d                              t          |          df          |          }t          t          j                            d                              t          |          df          |          }|                    |          \  }}|j        j	        |j        j	        k    sJ |j        j	        |j        j	        k    sJ |
                    d	          }|                    |          \  }}|j        j	        t          j        u sJ |j        j	        t          j        u sJ |                    |d
         d
          \  }}|j        j	        t          j        u sJ |j        j	        t          j        u sJ |d
                             |d
           |j        j	        t          j        u sJ |j        j	        t          j        u sJ d S )N2001   hz
US/Eastern)periodsfreqtz2hr      z
US/Centralr   axis)r   r   r   randomdefault_rngstandard_normallenr   indexr)   
tz_convertr   utc)r   idx1idx2df1df2new1new2df1_centrals           r!   test_frame_align_awarez)TestDataFrameAlign.test_frame_align_aware   s   &!#,GGG&!$<HHH	--a00@@#d))QPPRVWW	--a00@@#d))QPPRVWWYYs^^
dy|tz},,,,y|tz},,,,
 nn\22YY{++
dz},,,,z},,,, YY{1~AY66
dz},,,,z},,,,A[q)))z},,,,z},,,,,,    c                 	   |                     |          \  }}|j        |j        usJ |                     |d          \  }}|s|j        |j        u sJ n|j        |j        usJ |j        d dd df         }|                     |dd          \  }}t          j        |j        |j                   |j                            |j                  }|j                            |          }|	                    |          j
        }|dk                                    sJ |                     |dd	          \  }}t          j        |j        |j                   t          j        |j        |j                   t          j        |j        |j                   |j        d dd df                                         }|                     |d
          \  }}t          j        |j        |j                   t          j        |j        |j                   |j                            |j                  }|j                            |          }|	                    |          j
        }|dk                                    sJ |                     |dd
	          \  }}t          j        |j        |j                   d}	t          j        t          |	          5  |                     |dd
d          \  }}d d d            n# 1 swxY w Y   t          j        |j        |j                   d}	t          j        t          |	          5  |                     |j        d d df         dd
d d           \  }}d d d            n# 1 swxY w Y   t          j        |j        t          g                               |j        j                             d}	t          j        t          |	          5  |                     |j        d d df         dd
d d          \  }}d d d            n# 1 swxY w Y   t          j        |j        t          g                               |j        j                             d}	t%          j        t(          |	          5  |                     |j        dd df         dd	           d d d            d S # 1 swxY w Y   d S )NF)copyr+   r   r   )r-   
fill_valueright)joinr-   r   r,   innerQThe 'method', 'limit', and 'fill_axis' keywords in DataFrame.align are deprecatedr   padrC   r-   r   rC   r-   r   rA   z)No axis named 2 for object type DataFramer   )r   _mgrr   r   assert_index_equalcolumnsr2   rC   
differencereindexvaluesallr?   r   r   r   astypedtyper   r   r   )
r   float_frameusing_copy_on_writeafbfotherjoin_idxdiff_adiff_a_valsr   s
             r!   test_align_floatz#TestDataFrameAlign.test_align_float3   s   "";//Bwk....."";U";;B" 	37k......7+"22222  "bqb)""5qR"@@B
bj%-888 $))%+66"--h77jj((/r!&&(((((""5wQ"??B
bj%-888
bh444
bh444  "bqb)..00""5q"11B
bj+*=>>>
bh444 $))%+66"--h77jj((/r!&&(((((""5wQ"??B
bj%-888 	 'SAAA 	R 	R &&u75&QQFB	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R
bj%-888 	 'SAAA 	 	 &&
111a4 wQtPT '  FB	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	bhb		(8(8(H(HIII 	 'SAAA 	 	 &&
111a4 wQtPQ '  FB	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	bhb		(8(8(H(HIII :]:S111 	D 	Dbga!en7CCC	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	DsH   LL	L	-NN	N.-P''P+.P+(SSSc                    |j         }t          t          t          |                    |          |                    d          \  }}t          j        |j         |j                    t          j        |j         |j                    t          |t                    sJ d}t          j        t          |          5  |                    d          \  }}d d d            n# 1 swxY w Y   t          j        |j         |j                    fd|j
        D             }t          ||j         |j
        	          }t          j        ||           d S )
Nr2   r   r,   z=The 'broadcast_axis' keyword in DataFrame.align is deprecatedr   r   )broadcast_axisc                     i | ]}|S  r_   ).0css     r!   
<dictcomp>zCTestDataFrameAlign.test_align_frame_with_series.<locals>.<dictcomp>   s    666QAq666r=   r2   rK   )r2   r   ranger1   r   r   rJ   
isinstancer   r   rK   r   assert_frame_equal)r   rR   idxleftrB   r   expectedrb   s          @r!   test_align_frame_with_seriesz/TestDataFrameAlign.test_align_frame_with_series   s   5S??#...!'''22e
dj+*;<<<
ek;+<===%(((((M'SAAA 	A 	A%++Aa+@@KD%	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A
dj+*;<<<6666+"5666K-{7J
 
 
 	eX.....s    C''C+.C+c                 F   t          g dg dd          }||d         dk             }t          ddggdgddg	          }t          j        ||           |                    |d         dk    d
          }t          g dg dd          }t          j        ||           d S )Nr   r   r+   )   r%      abrq   r   r%   r   rr   rd   r   )r   r   r   )r   r%   r   )r   r   rg   where)r   r   resultrj   s       r!   test_align_series_conditionz.TestDataFrameAlign.test_align_series_condition   s    YYYYYY7788BsGqL!q!fXaS3*EEE
fh///"S'Q,**999999==>>
fh/////r=   c                 &   t          t          d          g d          }d}t          j        t          |          5  |                    |ddd	          \  }}d d d            n# 1 swxY w Y   t          j        |j        |j                   d S )
Nr%   r   BCrd   rE   r   rD   r   rF   rG   )r   re   r   r   r   r   rJ   rK   )r   	int_framerV   r   rT   rU   s         r!   test_align_intz!TestDataFrameAlign.test_align_int   s    a///BBB 	 'SAAA 	P 	P__Uq_OOFB	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P
bj%-88888s   A''A+.A+c                     d}t          j        t          |          5  |                    |ddd          \  }}d d d            n# 1 swxY w Y   t          j        |j        |j                   d S )NrE   r   rD   r   rF   rG   )r   r   r   r   rJ   rK   )r   float_string_framer   rT   rU   s        r!   test_align_mixed_typez(TestDataFrameAlign.test_align_mixed_type   s     	 'SAAA 	 	'--"q .  FB	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	bj*<*DEEEEEs   AAAc                 V   t          t          d          g d          }d}t          j        t          |          5  |                    |j        d d df         ddd d	          \  }}d d d            n# 1 swxY w Y   t          j        |j        t          g                      d S 
Nr%   rw   rd   rE   r   r   rD   r   rH   
r   re   r   r   r   r   r   rJ   r2   r   )r   mixed_float_framerV   r   rT   rU   s         r!   test_align_mixed_floatz)TestDataFrameAlign.test_align_mixed_float   s    a///BBB 	 'SAAA 	 	&,,
111a4 wQtPQ -  FB	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	bhb		22222   -A77A;>A;c                 V   t          t          d          g d          }d}t          j        t          |          5  |                    |j        d d df         ddd d	          \  }}d d d            n# 1 swxY w Y   t          j        |j        t          g                      d S r   r   )r   mixed_int_framerV   r   rT   rU   s         r!   test_align_mixed_intz'TestDataFrameAlign.test_align_mixed_int   s    a///BBB 	 'SAAA 	 	$**
111a4 wQtPQ +  FB	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	bhb		22222r   zl_ordered,r_ordered,expectedTFc           
         t          t          j        dd          t          t	          d                                        t          j        t	          d          |                    d                              d          }t          t          j        d	d          t          t	          d
                                        t          j        t	          d          |                    d                              d          }|	                    |          \  }}t          |j        |          sJ t          |j        |          sJ t          j        |j        |j                   d S )Nro   int64rQ   aabbcacab)ordered)r   rx   rx   r%   babca)r   r   aranger   listrP   pdCategoricalDtype	set_indexr   rf   r2   r   rJ   )r   	l_ordered	r_orderedrj   df_1df_2	aligned_1	aligned_2s           r!   test_align_categoricalz)TestDataFrameAlign.test_align_categorical   sU    Yq000DNN++22'UYGGG  
 
 )C.. 	 Yq000DMM**11'UYGGG  
 
 )C.. 	  $zz$//	9)/844444)/844444
ioy?????r=   c                    t           j                            t          d          t          d          t          d          gd          }t	          t          d          d          }t          t          j        dd	          |
          }t          t          j        dd	          |
          }|                    |d          \  }}|                    |d          \  }}|}	t          j
        |	|           t          j
        |	|           t          ddddt          j        t          j        gdz  |
          }
t          j
        |
|           t          j
        |
|           |                    |d          \  }}|                    |d          \  }}t           j                            t          d          t          d          t          d          gd          }t          g d|
          }	t          j
        |	|           t          j
        |	|           t          g ddz  |
          }
t          j
        |
|           t          j
        |
|           d S )Nr   r+   )rq   rr   ra   )namesrr   name   r   r   r\   ri   )rC   rB   r   r   )r   r   r   r+   ro         	   )r   r   r   r   )r   
MultiIndexfrom_productre   r   r   r   r   r   r   rg   r   )r   midxrh   r7   r8   res1lres1rres2lres2rexplexprexp_idxs               r!   test_align_multiindexz(TestDataFrameAlign.test_align_multiindex   s;    }))1XXuQxxq*/ * 
 
 E!HH3'''	"G444DAAA	!73333??? yy6y22uyy7y33u
dE***
dE***!Q1bfbf59FFF
dE***
dE***yy7y33uyy6y22u-,,1XXuQxxq*/ - 
 
 111AAA
dE***
dE***)999
dE***
dE*****r=   c                    t          g dg ddt          d                    }t          g dt          d          d          }|                    |d	
          \  }}t          dt          j        dt          j        dgdt          j        dt          j        dgdt          d                    }t          ddt          j        dt          j        gt          d          d          }t          j        ||           t          j        ||           |                    |          \  }}t          j        ||           t          j        ||           d S )N)r   r+   r%   rp   ACEr\   r   r   rn   ABDxr2   r   r   r,   r   r+   r%   ABCDEr   rn   )	r   r   r   r   r   r   r   rg   assert_series_equal)r   r   rb   res1res2exp1exp2s          r!   test_align_series_combinationsz1TestDataFrameAlign.test_align_series_combinations  s;   YYYYYY77tE{{KKK999DKKc::: XXaaX((
dbfa+1bfa2KLLw--
 
 
 q!RVQ/tG}}3OOO
dD)))
tT*** WWR[[
d
tT***
dD)))))r=   c                    t          g dd          }t          ddgd          }t          ddg|d          }t          d	t          j        d
          it
          j                            ||g                    }t          ddgdz  |j        d          }|	                    |d          \  }}t          j        ||           t          j        ||           d S )Nrm   foor   r   r   bar
foo_seriesr   colro   r\   r+   r   r,   r   r   r   r   r   r   r   r   r2   r   r   rg   r   r   	foo_index	bar_indexseriesr   
expected_rresult_lresult_rs           r!   7test_multiindex_align_to_series_with_common_index_levelzJTestDataFrameAlign.test_multiindex_align_to_series_with_common_index_level(  s    )))%000	1a&u---	AilCCCBIaLL!-,,i-CDD
 
 

 QFQJbh\JJJ
XXf1X55(
h+++
x44444r=   c                    t          g dd          }t          ddgd          }t          g dt          g dd          d	          }t          d
t          j        d          it
          j                            ||g                    }t          ddgdz  |j        d	          }|	                    |d          \  }}t          j        ||           t          j        ||           d S )Nrm   r   r   r   r   r   r   r   r+   rn   r   r   r   ro   r\   r+   r   r,   r   r   s           r!   Gtest_multiindex_align_to_series_with_common_index_level_missing_in_leftzZTestDataFrameAlign.test_multiindex_align_to_series_with_common_index_level_missing_in_left9  s   )))%000	1a&u---	LLlll ? ? ?l
 
 
 BIaLL!-,,i-CDD
 
 

 QFQJbh\JJJ
XXf1X55(
h+++
x44444r=   c                    t          g dd          }t          g dd          }t          ddgt          ddgd          d	          }t          d
t          j        d          it
          j                            ||g                    }t          ddt          j        t          j        gdz  |j	        d	          }|
                    |d          \  }}t          j        ||           t          j        ||           d S )Nrm   r   r   r   r   r   r   r   r   r   r   r\   r+   r   r,   r   r   r   r   r   r   r   r   r   r2   r   r   rg   r   r   s           r!   Htest_multiindex_align_to_series_with_common_index_level_missing_in_rightz[TestDataFrameAlign.test_multiindex_align_to_series_with_common_index_level_missing_in_rightL  s   )))%000	,,,U333	AeQF&?&?&?lSSSBIbMM"-,,i-CDD
 
 

 2626"Q&bh\
 
 

  XXf1X55(
h+++
x44444r=   c                    t          g dd          }t          g dd          }t          g dt          g dd          d          }t          d	t          j        d
          it
          j                            ||g                    }t          dt          j        dgdz  |j	        d          }|
                    |d          \  }}t          j        ||           t          j        ||           d S )Nrm   r   r   )r   r+   rn   r   r   r   r   r   r   r\   r   r+   r   r,   r   r   s           r!   Gtest_multiindex_align_to_series_with_common_index_level_missing_in_bothzZTestDataFrameAlign.test_multiindex_align_to_series_with_common_index_level_missing_in_both_  s   )))%000	)))%000	IIU9995999
 
 
 BIaLL!-,,i-CDD
 
 

 QNQ.bh\RRR
XXf1X55(
h+++
x44444r=   c                    t          g dd          }t          ddgd          }t          ddg|d          }t          t          j        d	                              d
d          t          j                            ||g                    }g d|_	        t          ddgdz  |j
        d          }|                    |d          \  }}t          j        ||           t          j        |j	        |j	                   d S )Nrm   r   r   r   r   r   r   r      ro   r+   r\   )cfoocbarr   r   r,   )r   r   r   r   r   reshaper   r   r   rK   r2   r   r   r   rJ   )r   r   r   r   r   rj   result_leftresult_rights           r!   Gtest_multiindex_align_to_series_with_common_index_level_non_unique_colszZTestDataFrameAlign.test_multiindex_align_to_series_with_common_index_level_non_unique_colsr  s   )))%000	1a&u---	AilCCCIbMM!!!Q''-,,i-CDD
 
 
 .--
1a&1*BH<HHH$&HHV!H$<$<!\
|X666
k12:>>>>>r=   c                 B   t          t          j        d                              d                    }t	          t          j        d                    }t          j        t          d          5  |                    |           d d d            d S # 1 swxY w Y   d S )N2   )
   r%   r%   zaxis=0 or 1r   )	r   r   r   r   r   r   r   r   r   )r   r   r   s      r!   )test_missing_axis_specification_exceptionz<TestDataFrameAlign.test_missing_axis_specification_exception  s    ry}},,W5566	!%%]:^<<< 	 	HHV	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   1BBBr   rF   bfillr-   )r   r   N	fill_axisr   r   how)rD   outerri   rB   
left_slicern   r   right_slicer   Nro   limitc	           	         |}	|	j         |d         |d         f         }
|	j         |d         |d         f         }d}t          j        t          |          5  |
                    ||||||          \  }}d d d            n# 1 swxY w Y   d\  }}|
|}}||dk    rM|
j                            |j        |          }|                    |          }|                    |          }||dk    rM|
j                            |j        |          }|                    |	          }|                    |	          }d
}t          j        t          |          5  |	                    |||          }|	                    |||          }d d d            n# 1 swxY w Y   t          j
        ||           t          j
        ||           d S )Nr   r   rE   r   )r-   rC   r   r   r   )NN)r   r\   )rK   z,DataFrame.fillna with 'method' is deprecated)r-   r   r   )r   r   r   r   r   r2   rC   rM   rK   fillnarg   )r   r   r   r-   r   rR   r   r   r   frameri   rB   r   aaab
join_indexjoin_columnseaebs                      r!   test_align_fill_methodz)TestDataFrameAlign.test_align_fill_method  sm   , z*Q-A67
;q>;q>9: 	
 'SAAA 	 	ZZ#    FB	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 $. 
LuB<4199#>>J*--B*--B<4199<,,U],DDLL11BL11B<'SAAA 	G 	G	&FFB	&FFB	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	b"%%%
b"%%%%%s$   BBB1FF Fc                     t          dddgi          }t          dgd          }|                                }|                    |d          \  }}d|j        d<   t          j        ||           d S )Nr   r   r   r   r,   d   )r   r   r?   r   r   r   r   )r   r   serrj   rt   rV   s         r!   test_align_series_check_copyz/TestDataFrameAlign.test_align_series_check_copy  su    Aq6{##aSq!!!88::1--
uh/////r=   c                     t          dddgi          }t          ddg          }|                    |d          \  }}t          j        ||           t          j        ||           ||usJ ||usJ d S )Nrq   r   r   r+   rn   r   r,   r   r   r   r   rg   r   r   r   r   rt   result2s        r!   %test_align_identical_different_objectz8TestDataFrameAlign.test_align_identical_different_object  s    aV}%%aVnn((3Q(//
fb)))
w,,,'!!!!!!r=   c                     t          dddgi          }t          dgdg          }|                    |d          \  }}t          j        ||           t          j        ||           ||usJ ||usJ d S )Nrq   r   r   r\   r,   r   r   s        r!   -test_align_identical_different_object_columnsz@TestDataFrameAlign.test_align_identical_different_object_columns  s    aV}%%aS&&&((3Q(//
fb)))
w,,,'!!!!!!r=   ) __name__
__module____qualname__r"   r<   rZ   rk   ru   r{   r~   r   r   r   markparametrizer   CategoricalIndexr   r   r   r   r   r   r   r   r   r   slicer   r   r   r   r_   r=   r!   r	   r	      s&       9 9 9- - -4JD JD JDX/ / /(	0 	0 	0
9 
9 
9	F 	F 	F3 3 33 3 3 [&4,-5% D% E2./		
 @ @ @0!+ !+ !+F* * *(5 5 5"5 5 5&5 5 5&5 5 5&? ? ?$   [Xw'788[V\\\22[[1a&11[U$G$G$GHH[U1XXuuRyy!U1XXuuQxx 	
  [U1d^^UU1d^^,U1XXuuQxx 	
  [Wq$i00)& )& 10   IH 21 32 98&)&V0 0 0" " "" " " " "r=   r	   )datetimer   numpyr   r   pandasr   r   r   r   r   pandas._testing_testingr   r	   r_   r=   r!   <module>r     s                                   T" T" T" T" T" T" T" T" T" T"r=   