
    .i/                     `    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y)    )timezoneN)	DataFrameIndexSeries
date_rangec            	           e Zd Zd Zd Zd Zd Zd Zd Ze	j                  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 Zd Zd Zy)TestDataFrameAlignc                    t        dddd      }t        dddd      }t        t        j                  j	                  d      j                  t        |      df      |      }t        t        j                  j	                  d      j                  t        |      df      |      }|j                  |      \  }}|j                  j                  |j                  j                  k(  sJ |j                  j                  |j                  j                  k(  sJ |j                  d	      }|j                  |      \  }}|j                  j                  t        j                  u sJ |j                  j                  t        j                  u sJ |j                  |d
   d
      \  }}|j                  j                  t        j                  u sJ |j                  j                  t        j                  u sJ |d
   j                  |d
       |j                  j                  t        j                  u sJ |j                  j                  t        j                  u sJ y )N2001   hz
US/Eastern)periodsfreqtz2h      z
US/Centralr   axis)r   r   nprandomdefault_rngstandard_normallenalignindexr   
tz_convertr   utc)selfidx1idx2df1df2new1new2df1_centrals           c/var/www/app/trading-bot/venv/lib/python3.12/site-packages/pandas/tests/frame/methods/test_align.pytest_frame_align_awarez)TestDataFrameAlign.test_frame_align_aware   s   &!#,G&!$<H		--a0@@#d)QPRVW		--a0@@#d)QPRVWYYs^
dyy||tzz}},,,yy||tzz}},,,
 nn\2YY{+
dzz}},,,zz}},,, YY{1~AY6
dzz}},,,zz}},,,A[q)zz}},,,zz}},,,    c                    |j                  |      \  }}|j                  |j                  usJ |j                  |      \  }}|j                  |j                  usJ |j                  d dd df   }|j                  |dd      \  }}t        j                  |j
                  |j
                         |j                  j                  |j                        }|j                  j                  |      }|j                  |      j                  }|dk(  j                         sJ |j                  |dd      \  }}t        j                  |j
                  |j
                         t        j                  |j                  |j                         t        j                  |j                  |j                         |j                  d dd df   j                         }|j                  |d	      \  }}t        j                  |j
                  |j
                         t        j                  |j                  |j                         |j                  j                  |j                        }|j                  j                  |      }|j                  |      j                  }|dk(  j                         sJ |j                  |d
d      \  }}t        j                  |j
                  |j
                         d}t        j                  t        |      5  |j                  |j                  dd df   d
d       d d d        y # 1 sw Y   y xY w)Nr   r   )r   
fill_valueright)joinr      r   innerz)No axis named 2 for object type DataFramematchr   )r   _mgriloctmassert_index_equalcolumnsr   r/   
differencereindexvaluesallcopypytestraises
ValueError)	r   float_frameafbfotherjoin_idxdiff_adiff_a_valsmsgs	            r'   test_align_floatz#TestDataFrameAlign.test_align_float+   s   "";/Bwwk....."";/Bwwk.....   "bqb)""5qR"@B
bjj%--8 $$))%++6""--h7jj(//r!&&(((""5wQ"?B
bjj%--8
bhh4
bhh4   "bqb)..0""5q"1B
bjj+*=*=>
bhh4 $$))%++6""--h7jj(//r!&&(((""5wQ"?B
bjj%--8 :]]:S1 	Dbgga!en7C	D 	D 	Ds   &MMc                 R   |j                   }t        t        t        |            |      }|j	                  |d      \  }}t        j                  |j                   |j                          t        j                  |j                   |j                          t        |t              sJ y )Nr   r   r   )r   r   ranger   r   r6   r7   
isinstance)r   rA   idxsleftr.   s         r'   test_align_frame_with_seriesz/TestDataFrameAlign.test_align_frame_with_seriesX   s~    5S?#.!'''2e
djj+*;*;<
ekk;+<+<=%(((r)   c                    t        g dg dd      }||d   dk(     }t        ddggdgddg	      }t        j                  ||       |j                  |d   dk(  d
      }t        g dg dd      }t        j                  ||       y )Nr0   r   r   )   r      abrW   r   r   r0   rX   r   r8   r   )r   r   r   )r   r   r   )r   r6   assert_frame_equalwhere)r   dfresultexpecteds       r'   test_align_series_conditionz.TestDataFrameAlign.test_align_series_conditionb   s    YY78BsGqL!q!fXaS3*E
fh/"S'Q,*99=>
fh/r)   c                     t        t        d      g d      }|j                  |j                  d d df   ddd      \  }}t	        j
                  |j                  t        g              y Nr   )ABCrY   r   r1   r0   )r/   r   r-   r   rL   r   r5   r6   r7   r   r   )r   mixed_float_framerD   rB   rC   s        r'   test_align_mixed_floatz)TestDataFrameAlign.test_align_mixed_floatm   s[    a/B"((JJq!t7q ) 
B 	bhhb	2r)   c                     t        t        d      g d      }|j                  |j                  d d df   ddd      \  }}t	        j
                  |j                  t        g              y ra   re   )r   mixed_int_framerD   rB   rC   s        r'   test_align_mixed_intz'TestDataFrameAlign.test_align_mixed_intu   s[    a/B &&JJq!t7q ' 
B 	bhhb	2r)   zl_ordered,r_ordered,expectedTFc           
         t        t        j                  dd      t        t	        d            j                  t        j                  t	        d      |            d      j                  d      }t        t        j                  d	d      t        t	        d
            j                  t        j                  t	        d      |            d      j                  d      }|j                  |      \  }}t        |j                  |      sJ t        |j                  |      sJ t        j                  |j                  |j                         y )NrU   int64dtypeaabbcacab)ordered)rb   rc   rc   r   babca)r   r   aranger   listastypepdCategoricalDtype	set_indexr   rM   r   r6   r7   )r   	l_ordered	r_orderedr^   df_1df_2	aligned_1	aligned_2s           r'   test_align_categoricalz)TestDataFrameAlign.test_align_categorical|   s    YYq0DN+22''UYG
 )C. 	 YYq0DM*11''UYG
 )C. 	  $zz$/	9)//8444)//8444
iooy?r)   c                 n   t         j                  j                  t        d      t        d      t        d      gd      }t	        t        d      d      }t        t        j                  dd	      |
      }t        t        j                  dd	      |
      }|j                  |d      \  }}|j                  |d      \  }}|}	t        j                  |	|       t        j                  |	|       t        ddddt        j                  t        j                  gdz  |
      }
t        j                  |
|       t        j                  |
|       |j                  |d      \  }}|j                  |d      \  }}t         j                  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                  |
|       y )Nr   r   )rW   rX   c)namesrX   name   rl   rm   rK   rP   )r/   r.   r   r0   )r   r0   r   r   rU         	   )r   r   r0   r0   )rv   
MultiIndexfrom_productrL   r   r   r   rs   r   r6   rZ   nan)r   midxrN   r"   r#   res1lres1rres2lres2rexplexprexp_idxs               r'   test_align_multiindexz(TestDataFrameAlign.test_align_multiindex   s    }}))1XuQxq*/ * 
 E!H3'		"G4DA		!733? yy6y2uyy7y3u
dE*
dE*!Q1bffbff59F
dE*
dE*yy7y3uyy6y2u--,,1XuQxq*/ - 
 1A
dE*
dE*)9
dE*
dE*r)   c                    t        g dg ddt        d            }t        g dt        d      d      }|j                  |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                  ||       |j                  |      \  }}t        j                  ||       t        j                  ||       y )N)r0   r   r   rV   ACErK   r0   r   rT   ABDxr   r   r   r   r0   r   r   ABCDEr   rT   )	r   rt   r   r   r   r   r6   rZ   assert_series_equal)r   r\   rO   res1res2exp1exp2s          r'   test_align_series_combinationsz1TestDataFrameAlign.test_align_series_combinations   s    YY7tE{K9DKc: XXaaX(
dbffa+1bffa2KLw-
 q!RVVQ/tG}3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                  j                  ||g            }t        ddgdz  |j                  d      }|j                  |d      \  }}t        j                  ||       t        j                  ||       y )NrS   foor   r0   r   bar
foo_seriesr   colrU   rK   r   r   r   r   r   r   r   rs   rv   r   r   r   r   r6   rZ   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	1a&u-	AilCBIIaL!--,,i-CD

 QFQJbhh\J
XXf1X5(
h+
x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                  j                  ||g            }t        ddgdz  |j                  d	      }|j                  |d      \  }}t        j                  ||       t        j                  ||       y )NrS   r   r   r0   r   r   r0   r   r   rT   r   r   r   rU   rK   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	1a&u-	l ?l
 BIIaL!--,,i-CD

 QFQJbhh\J
XXf1X5(
h+
x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                  j                  ||g            }t        ddt        j                  t        j                  gdz  |j                  d	      }|j                  |d      \  }}t        j                  ||       t        j                  ||       y )NrS   r   r   r   r   r0   r   r   r   r   r   rK   r   r   r   r   r   r   r   rs   rv   r   r   r   r   r   r6   rZ   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	,U3	AeQF&?lSBIIbM"--,,i-CD

 266266"Q&bhh\

  XXf1X5(
h+
x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                  j                  ||g            }t        dt        j                  dgdz  |j                  d      }|j                  |d      \  }}t        j                  ||       t        j                  ||       y )NrS   r   r   )r0   r   rT   r   r   r   r   r   r   rK   r0   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	U959
 BIIaL!--,,i-CD

 QNQ.bhh\R
XXf1X5(
h+
x4r)   c                    t        g dd      }t        ddgd      }t        ddg|d      }t        t        j                  d	      j                  d
d      t        j                  j                  ||g            }g d|_	        t        ddgdz  |j                  d      }|j                  |d      \  }}t        j                  ||       t        j                  |j                  |j                         y )NrS   r   r   r0   r   r   r   r      rU   r   rK   )cfoocbarr   r   r   )r   r   r   r   rs   reshaperv   r   r   r8   r   r   r6   r   r7   )r   r   r   r   r\   r^   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_cols  s    )%0	1a&u-	AilCIIbM!!!Q'--,,i-CD
 .
1a&1*BHH<H$&HHV!H$<!\
|X6
k112::>r)   c                    t        t        j                  d      j                  d            }t	        t        j                  d            }t        j                  t        d      5  |j                  |       d d d        y # 1 sw Y   y xY w)N2   )
   r   r   zaxis=0 or 1r2   )	r   r   rs   r   r   r>   r?   r@   r   )r   r\   r   s      r'   )test_missing_axis_specification_exceptionz<TestDataFrameAlign.test_missing_axis_specification_exception0  s`    ryy},,W56		!%]]:^< 	HHV	 	 	s   'BBc                     t        dddgi      }t        dgd      }|j                         }|j                  |d      \  }}d|j                  d<   t        j                  ||       y )Nr   r0   r   r   r   d   )r   r   r=   r   r5   r6   r   )r   r\   serr^   r]   rD   s         r'   test_align_series_check_copyz/TestDataFrameAlign.test_align_series_check_copy7  s`    Aq6{#aSq!88:1-
uh/r)   c                     t        dddgi      }t        ddg      }|j                  |d      \  }}t        j                  ||       t        j
                  ||       ||usJ ||usJ y )NrW   r0   r   r   rT   r   r   r   r   r   r6   rZ   r   r   r\   r   r]   result2s        r'   %test_align_identical_different_objectz8TestDataFrameAlign.test_align_identical_different_object@  ss    aV}%aVn((3Q(/
fb)
w,'!!!r)   c                     t        dddgi      }t        dgdg      }|j                  |d      \  }}t        j                  ||       t        j
                  ||       ||usJ ||usJ y )NrW   r0   r   rK   r   r   r   s        r'   -test_align_identical_different_object_columnsz@TestDataFrameAlign.test_align_identical_different_object_columnsJ  sv    aV}%aS&((3Q(/
fb)
w,'!!!r)   N)__name__
__module____qualname__r(   rI   rQ   r_   rg   rj   r>   markparametrizerv   CategoricalIndexr   r   r   r   r   r   r   r   r   r   r   r   r    r)   r'   r	   r	      s    -4+DZ)	033 [[&4,,-5% D% E2../		
@@0!+F*(5"5&5&5&?$0""r)   r	   )datetimer   numpyr   r>   pandasrv   r   r   r   r   pandas._testing_testingr6   r	   r   r)   r'   <module>r      s,         B" B"r)   