
    d>                     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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d$dZe	j
                            dddg          e	j
                            dg d          e	j
                            dddg          e	j
                            dg d          d                                                 Zd  Zd! Zd" Zd# ZdS )%TestDataFrameAlignc                    t          dddd          }t          dddd          }t          t          j                            t          |          d          |          }t          t          j                            t          |          d          |          }|                    |          \  }}|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2H   z
US/Centralr   axis)r   r   nprandomrandnlenalignindexr   
tz_convertr   utc)selfidx1idx2df1df2new1new2df1_centrals           a/var/www/html/t/fyr/venv311/lib/python3.11/site-packages/pandas/tests/frame/methods/test_align.pytest_frame_align_awarez)TestDataFrameAlign.test_frame_align_aware   s   &!#,GGG&!$<HHH	D		155t<<	D		155t<<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                 t   |                     |          \  }}|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d
d          \  }}t          j        |j        |j                   |                     |j        d d df         dd
d d           \  }}t          j        |j        t          g                      |                     |j        d d df         dd
d d          \  }}t          j        |j        t          g                      d}	t          j        t           |	          5  |                     |j        dd df         dd	           d d d            n# 1 swxY w Y   |j        }
t#          t%          t'          |
                    |
          |                     d          \  }}t          j        |j        |j                   t          j        |j        |j                   t)          |t"                    sJ |                     d
          \  }}t          j        |j        |j                   fd|j        D             }t+          ||j        |j                  }t          j        ||           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 )NF)copyr   r   )r   
fill_valueright)joinr      r   innerpadr.   r   methodr.   r   r3   r,   z)No axis named 2 for object type DataFramematch   r   )broadcast_axisc                     i | ]}|S  r;   ).0css     r%   
<dictcomp>z7TestDataFrameAlign.test_align_float.<locals>.<dictcomp>s   s    666QAq666r'   r   columnsr/   r7   r   )   r      abrF   r   rG   )r   r7   r   )r   r   r   )r   _mgriloctmassert_index_equalrA   r   r.   
differencereindexvaluesallr)   r   pytestraises
ValueErrorr   ranger   
isinstancer   assert_frame_equalwhere)r   float_frameusing_copy_on_writeafbfotherjoin_idxdiff_adiff_a_valsmsgidxleftr-   expecteddfresultr>   s                   @r%   test_align_floatz#TestDataFrameAlign.test_align_float+   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""5wQu"MMB
bj%-888""Jqqq!t74D # 
 
B 	bhb		222""Jqqq!t74A # 
 
B 	bhb		222 :]: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 5S??#...!'''22e
dj+*;<<<
ek;+<===%(((((!''!'<<e
dj+*;<<<6666+"5666K-{7J
 
 
 	eX... YYYYYY7788BsGqL!q!fXaS3*EEE
fh///"S'Q,**999999==>>
fh/////s   ;(O//O36O3c                     t          t          d          g d          }|                    |ddd          \  }}t          j        |j        |j                   d S )Nr   ABCr@   r0   r/   r1   r2   )r   rS   r   rJ   rK   rA   )r   	int_framer[   rY   rZ   s        r%   test_align_intz!TestDataFrameAlign.test_align_int   sX    a///BBBW1UKKB
bj%-88888r'   c                 |    |                     |ddd          \  }}t          j        |j        |j                   d S )Nr0   r/   r1   r2   )r   rJ   rK   rA   )r   float_string_framerY   rZ   s       r%   test_align_mixed_typez(TestDataFrameAlign.test_align_mixed_type   sJ    #))W1U * 
 
B 	bj*<*DEEEEEr'   c                     t          t          d          g d          }|                    |j        d d df         ddd d          \  }}t	          j        |j        t          g                      d S Nr   rg   r@   r   r0   r/   r4   r   rS   r   rI   rJ   rK   r   r   )r   mixed_float_framer[   rY   rZ   s        r%   test_align_mixed_floatz)TestDataFrameAlign.test_align_mixed_float   sy    a///BBB"((Jqqq!t74A ) 
 
B 	bhb		22222r'   c                     t          t          d          g d          }|                    |j        d d df         ddd d          \  }}t	          j        |j        t          g                      d S rq   rr   )r   mixed_int_framer[   rY   rZ   s        r%   test_align_mixed_intz'TestDataFrameAlign.test_align_mixed_int   sy    a///BBB &&Jqqq!t74A ' 
 
B 	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 )NrD   int64dtypeaabbcacab)ordered)rh   ri   ri   r   babca)r   r   aranger   listastypepdCategoricalDtype	set_indexr   rT   r   rJ   rK   )r   	l_ordered	r_orderedrb   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 )Nr7   r   )rF   rG   r=   )namesrG   name   ry   rz   r8   ra   )r.   r-   r   r/   )r   r/   r7   r   rD         	   )r   r   r/   r/   )r   
MultiIndexfrom_productrS   r   r   r   r   r   rJ   rU   nan)r   midxr`   r    r!   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   rE   ACEr8   r/   r7   rC   ABDxr   r   r   r   r/   r   r   ABCDEr7   rC   )	r   r   r   r   r   r   rJ   rU   assert_series_equal)r   rc   r>   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 )NrB   foor   r/   r7   bar
foo_seriesr   colrD   r8   r   r   r   r   r   r   r   r   r   r   r   r   r   rJ   rU   r   r   	foo_index	bar_indexseriesrc   
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 )NrB   r   r   r/   r7   r   r/   r7   r   rC   r   r   r   rD   r8   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_left
  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 )NrB   r   r   r   r   r/   r7   r   r   r   r   r8   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rJ   rU   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_right  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 )NrB   r   r   )r/   r   rC   r   r   r   r   r   r   r8   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_both0  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 )NrB   r   r   r/   r7   r   r   r      rD   r   r8   )cfoocbarr   r   r   )r   r   r   r   r   reshaper   r   r   rA   r   r   rJ   r   rK   )r   r   r   r   rc   rb   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_colsC  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 1r5   )	r   r   r   r   r   rP   rQ   rR   r   )r   rc   r   s      r%   )test_missing_axis_specification_exceptionz<TestDataFrameAlign.test_missing_axis_specification_exceptionU  s    ry}},,W5566	!%%]:^<<< 	 	HHV	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   1BBBNc                 \   |                     ||||||          \  }}	d\  }
}||}}||dk    rM|j                            |j        |          }
|                    |
          }|                    |
          }||dk    rM|j                            |j        |          }|                    |          }|                    |          }|                    |||          }|                    |||          }t          j        ||           t          j        |	|           d S )	N)r   r.   r3   limit	fill_axis)NNr   )howr8   r/   )rA   )r   r3   r   )r   r   r.   rM   rA   fillnarJ   rU   )r   rF   rG   r   r   r   r3   r   aaab
join_indexjoin_columnseaebs                 r%   _check_alignzTestDataFrameAlign._check_align\  s2   Ds6)  
 
B $. 
LAB<4199ag377J*--B*--B<41999>>!)>==LL11BL11BYYIfEYBBYYIfEYBB
b"%%%
b"%%%%%r'   methr1   bfillax)r   r/   Nfaxr   r/   r   )r0   outerra   r-   c                 <    |}|                      |||||           d S N)_check_align_fill)r   r   r   r   r   rW   rc   s          r%   test_align_fill_methodz)TestDataFrameAlign.test_align_fill_methodt  s+    
 r3b#66666r'   c           	      0   |j         ddd df         }|j         dd dd f         }|j         d dd df         }|                     ||||||           |                     ||||||d           |                     ||||||           |                     ||||||d           |                     ||||||           |                     ||||||d           |                     ||||||           |                     ||||||d           d S )	Nr   rC   r   r7   rD   )r   r   r   r3   r/   )r   r   r   r3   r   )rI   r   )	r   framekindr   r   r   ra   r-   emptys	            r%   r   z$TestDataFrameAlign._check_align_fill|  s   z!A#ss(#
122qrr6"
2A2rr6"$B#4PTUUU%bCT$a 	 	
 	
 	

 	%R3DQUVVV5rSd4q 	 	
 	
 	

 	$B#4PTUUU%bCT$a 	 	
 	
 	

 	%R3DQUVVV5rSd4q 	 	
 	
 	
 	
 	
r'   c                     t          dddgi          }t          dgd          }|                                }|                    |d          \  }}d|j        d<   t          j        ||           d S )Nr   r/   r7   r   r   d   )r   r   r)   r   rI   rJ   r   )r   rc   serrb   rd   r[   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 )NrF   r/   r7   r   rC   r   r   r   r   r   rJ   rU   r   r   rc   r   rd   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 )NrF   r/   r7   r8   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'   r   )__name__
__module____qualname__r&   re   rl   ro   rt   rw   rP   markparametrizer   CategoricalIndexr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r;   r'   r%   r	   r	      sA       - - -4V0 V0 V0p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&? ? ?$  & & & &0 [VeW%566[T<<<00[UQF++[U$G$G$GHH7 7 IH ,+ 10 767
 
 
80 0 0" " "" " " " "r'   r	   )datetimer   numpyr   rP   pandasr   r   r   r   r   pandas._testing_testingrJ   r	   r;   r'   r%   <module>r      s                                   c" c" c" c" c" c" c" c" c" c"r'   