
    .i1                     p    d dl 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 G d d      Zy)    N)
ArrowDtype	DataFrame
MultiIndexSeriesc                   R   e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zej                  j!                  dddg      d        Zd Zd Zd Zd Zej                  j!                  ddej.                  g      d        Zd Zej                  j5                  d      d        Zy)TestMultiLevelc                    |}|j                  d      j                         }|j                  |j                  d      }|j                  d      j	                  d      }t        j                  ||       |d   j                  |j                  d      }|d   j                  d      j	                  d      }t        j                  ||d       y )Nmonth   levelsumAFcheck_names)groupbyr   reindexindex	transformtmassert_frame_equalassert_series_equal)self/multiindex_year_month_day_dataframe_random_dataymd
month_sumsresultexpecteds         Z/var/www/app/trading-bot/venv/lib/python3.12/site-packages/pandas/tests/test_multilevel.pytest_reindex_levelz!TestMultiLevel.test_reindex_level   s    =[[)--/
##CIIQ#7;;W;-77>
fh/ C((!(<s8##'#2<<UC
vxUC    c                 x    |}|j                   ddg   }|j                  ddg   }t        j                  ||       y )Nr      fooonebarr&   )iloclocr   r   )r    multiindex_dataframe_random_dataframer   	reindexeds        r   test_reindexzTestMultiLevel.test_reindex    s<    0::q!f%II~~>?	
i2r!   c                    |}|j                   d d d   }|j                  |      }|j                   j                  |      sJ |j                  |   }|j                   j	                  |      sJ |j
                  }|j                  |      }|j                  j                  |      sJ |j                  d d |f   }|j                  j	                  |      sJ y )N
   columns)r   r   is_r*   equalsTr2   )r   r   r   	new_indexchunkymdTs         r   test_reindex_preserve_levelsz+TestMultiLevel.test_reindex_preserve_levels'   s     >IIddO	I&{{y)))	"{{!!),,,uuY/}}  +++I&}}##I...r!   c                    |}|d   }|j                   j                  d      }|j                  |d      }|j                  d       }|j	                  d       }|j                  |j                         }t        j                  ||d       y )Nr   r   F)
group_keysc                     | dz  S N    xs    r   <lambda>z7TestMultiLevel.test_groupby_transform.<locals>.<lambda>B   s
    !a% r!   c                     | dz  S r=   r?   r@   s    r   rB   z7TestMultiLevel.test_groupby_transform.<locals>.<lambda>C   s
    q1u r!   r   )r   get_level_valuesr   applyr   r   r   r   )	r   r+   r,   sgroupergroupedappliedr   r   s	            r   test_groupby_transformz%TestMultiLevel.test_groupby_transform:   sx    0#J''**1-))G)6--0$$_50
vxUCr!   c                     t        dgdgdggdgdgdggg d      }t        t        j                  j	                  d      j                  d      gg d	|
      }|j                  d       y )Nr%   r(   bazr   )r&   twothreelevelscodesnamesr>      abcd)r2   r   rN   r   )r   r   nprandomdefault_rngr   )r   midxdfs      r   test_groupby_cornerz"TestMultiLevel.test_groupby_cornerG   sp    GeWug.3aS/)

 YY""1%,,Q/0(
 	


!r!   c                     |}|d d j                   }|d   |d<   t        |j                  t              sJ |d   |d   k(  j	                         sJ y )N   )  r      )ra   r   r0   )r5   
isinstancer2   r   all)r   r   r   r]   s       r   .test_setitem_with_expansion_multiindex_columnsz=TestMultiLevel.test_setitem_with_expansion_multiindex_columnsU   sX     >!WYYZ.;"**j111;2j>166888r!   c                 8   t        g dt        j                  g d            }t        g dt        j                  g d            }||z
  }|j                  j	                  |j                        }|j                  |      |j                  |      z
  }t        j                  ||       |d d d   |d d d   z
  }|j                  j	                  |j                        }|j                  |      |j                  |      z
  }t        j                  ||       y )Nr   r>   r#   ))r   r   )r   r>   Br#   datar   )rS   r`      ))Zr   )rm   r>   rh   )r   r   from_tuplesr   unionr   r   r   )r   rA   yres	exp_indexexps         r   test_alignmentzTestMultiLevel.test_alignment_   s    *"8"89W"X
 *"8"89W"X
 !eGGMM!''*	ii	"QYYy%99
sC( "g$B$GGMM!''*	ii	"QYYy%99
sC(r!   c                 $   |}|j                  ddg      j                         }|j                  j                  d      }|j                  j                  d      }|j                  ||g      j                         }t	        j
                  ||       |j                  j                  |j                  j                  d d k(  sJ |j                  |j                  j                  d d       j                         }t	        j
                  ||       y )Nr   r   r   r>   )r   meanr   rD   r   r   rR   )r   r   r   r   k1k2r   result2s           r   test_groupby_multilevelz&TestMultiLevel.test_groupby_multilevels   s    =Aq6*//1YY''*YY''*;;Bx(--/
fh/||!!SYY__Ra%8888++CIIOOBQ$7+8==?
fg.r!   c                     t        j                  g d      }t        t        j                  j                  d      j                  d      ||      }|j                  d      |d<   |j                         }y )N)r$   )r%   rM   r'   )r(   rM   r>   )rS   rS   r   r2   r   )axis)Totals )	r   ro   r   rY   rZ   r[   standard_normalr   _consolidate)r   r   r]   s      r   test_multilevel_consolidatez*TestMultiLevel.test_multilevel_consolidate   se    &&L
 II!!!$44V<ESX
 66q6><__r!   c                    t        g dddggg dg dg      }t        t        j                  j	                  d      j                  d      |	      }t        t        j                  j	                  d      j                  d
      |	      }|d   }|j                  d   }|d d }|j                  j                  d      |_        t        j                  ||       t        j                  ||       t        j                  t        d      5  |d    d d d        |j                  d   }|j                  d      }|d d }|j                  j                  d      |_        t        j                   ||       t        j                   ||       t        g dddggg dg dg      }t        t        j                  j	                  d      j                  d      |	      }t        t        j                  j	                  d      j                  d
      |	      }|d   }|j                  d   }|d d }|j                  j                  d      |_        t        j                  ||       t        j                  ||       |j                  d   }|j                  d      }|d d }|j                  j                  d      |_        t        j                   ||       t        j                   ||       y # 1 sw Y   xY w)N)r%   r(   r   )r%   rL   r   )r%   quxr   r   r   )r   r   r   r   r>   r>   )r   r   r   r   r   r   )rP   rQ   r>   rl   r   )rl   rS   r   z^\(\('foo', 'bar', 0\), 2\)$)match)r   r>   )r%   r(   )r%   rL   )r%   r   r   )r   r   rY   rZ   r[   r   r   r*   r   	droplevelr   r   pytestraisesKeyErrorxsr   )r   r   seriesr,   r   rz   r   s          r   test_level_with_tuplesz%TestMultiLevel.test_level_with_tuples   s   MPQSTvV%'9:

 		--a0@@C5Q"))//2BB6JRWX)***./"1:!11!4
vx0
w1]]8+JK 	)'(	) ,-((,-!9!11!4
fh/
gx0Dq!fM%'9:

 		--a0@@C5Q"))//2BB6JRWX'**^,"1:!11!4
vx0
w1>*((>*!9!11!4
fh/
gx0=	) 	)s   K--K7c                 &   |}|j                  ddgd      }|j                  g d   }t        j                  ||       |j                  j                  ddgdd      }t        j                  ||j                         |j
                  ddg   }t        j                  ||       |d   j
                  ddg   }t        j                  ||d          |j                  j
                  d d ddgf   }t        j                  ||j                         y )	Nr%   r   r   r   )r   r   r>   rb      	   r   )r~   r   r   )r   r)   r   r   r5   r*   r   )r   r+   r,   r   r   s        r   $test_reindex_level_partial_selectionz3TestMultiLevel.test_reindex_level_partial_selection   s    0u~Q7::01
fh/%aqA
fhjj1E5>*
fh/s/
vx}5Q./
fhjj1r!   rX   rS   c                    g d}t        dgdgdg|gd      }||j                  dk(     j                  |      }|j                         j                  }t        dgdgdggg g g gg d      }t        j                  ||       y )N)rU   rV   rW   r   r>   r#   rT   rO   )r   rU   r   firstr   r   r   assert_index_equal)r   rX   r;   r]   gr   r   s          r   +test_empty_frame_groupby_dtypes_consistencyz:TestMultiLevel.test_empty_frame_groupby_dtypes_consistency   s     %
aSs!A3?@rttqyM!!*-C!qc?2r2,o
 	fh/r!   c                     g d}g d}t        j                  |ddg      }t        ||      }|j                  |j                        j                         }t        |      dk(  sJ y )N))60080920061231r   20070331)r   20070630r   )demor   r   r   STK_IDRPT_DaterR   r   r#   )r   ro   r   r   r   r   len)r   idx_tpdtidxrF   r   s         r   test_duplicate_groupby_issuesz,TestMultiLevel.test_duplicate_groupby_issues   s`    
 .$$VHj3IJ2S!177#))+6{ar!   c                 $   ddgg}ddt         j                  fdg}t        |t        j                  |            }|j
                  j                  j                  }|j                  j                  j
                  }t        j                  ||       y )NrA   r   rU   rV   )rU   rW           r1   )
rY   nanr   r   ro   dtypesrU   rV   r   r   )r   rk   r2   r]   r   r   s         r   test_subsets_multiindex_dtypez,TestMultiLevel.test_subsets_multiindex_dtype   sk    azbff%7tZ%;%;G%DE99;;==
vx0r!   c                 *   dt        j                  ddd      fddddt        j                  ddd      fdd	ddt        j                  ddd      fdd
ddt        j                  ddd      fdddi}t        j                  |d      }g dg dd}g dt        j                  ddd      t        j                  ddd      t        j                  ddd      t        j                  ddd      gg}t        ||      }t	        j
                  ||       y )Nr   i  r#   r   r0   )r   ri   rS   r>            r   )orient)r   r>   r#   rS   )r0   r   r   r   )r   r   r   r   rj   )datetimedater   	from_dictr   r   )r   data_dicr   rk   r   r   s         r   test_datetime_object_multiindexz.TestMultiLevel.test_datetime_object_multiindex   s   dAq)*!",=dAq)*!",=dAq)*!",=dAq)*!",=	
 $$Xg>!(89dAq)dAq)dAq)dAq)	
 $e4
fh/r!   c           	      X   t        dt        j                  ddgg dg dgg d      j                  dd	g      }d
|j                  d<   t        dt        j                  ddgg dg dddt        j                  d
ggg d      j                  dd	g      }t        j                  ||       y )Nr   Gz?=
ףp=@)r   Gr   r   )r   Dg=
ףp#@gGz%@)pivot_0pivot_1col_1col_2r1   r   r   r   ))r   Fr   r   )r   rY   r   	set_indexatr   r   )r   r]   r   s      r   test_multiindex_with_naz&TestMultiLevel.test_multiindex_with_na  s    bffdD)&'
 =
 )Y	*
+ 	 &)!"bffdD)&'c2663'	 =
 )Y	*
+ 	 	b(+r!   naNc                     t        dgdgdgg      }d||df<   t        j                  ||   t        dgdg             y )Nr   r   ri   r1   r   )r   r   r   )r   r   r]   s      r   $test_multiindex_insert_level_with_naz3TestMultiLevel.test_multiindex_insert_level_with_na$  sF     scUSEN32s7
bficU&CDr!   c                    t        dt        j                  dt        j                  gdt        j                  dt        j                  gt        j                  dt        j                  dgt        j                  dt        j                  dggt        g d	t        d
      t        j                  ddgt        j                  ddd      t        j                  ddd      ggd dg            }|j                         }||j                  d      }t        g d	d
t        j                  f      }t        j                  ||       y )Nr   r`   r>   rl   r#   rb   rS   r   rT   sub)dtypenamevalue1value2i  r   Dater   r}   r   )r   )r   rY   r   r   objectr   from_productr   reset_indexr2   r   r   )r   r]   r   r   s       r   test_multiindex_dt_with_nanz*TestMultiLevel.test_multiindex_dt_with_nan+  s    BFFArvv&BFFArvv&BFFA&BFFA&	 -V%H++x(&&tR3X5F5FtRQR5ST Vn
  ^^BJJqM".eRVV_E
vx0r!   z0ignore:Passing a BlockManager:DeprecationWarningc           	         t        j                  d      }t        g dg dd      j                  t	        |j                  |j                         |j                                     dd      }|j                  ddg      }t        t        j                  g dg dgddg      	      }t        j                  ||d
d
       y )Npyarrowr   ri   Crg   )string_columnnumber_columnzfloat[pyarrow]r   r   r   r   F)check_index_typecheck_column_type)r   importorskipr   astyper   
dictionaryint32stringr   r   from_arraysr   r   )r   par]   df_expecteds       r   (test_multiindex_with_pyarrow_categoricalz7TestMultiLevel.test_multiindex_with_pyarrow_categoricalB  s       +-	J

&!+BMM"((*biik,R!S!1
 	 \\?O<=(( ),_o4V

 	"#		
r!   )__name__
__module____qualname__r    r.   r9   rJ   r^   re   ru   r{   r   r   r   r   markparametrizer   r   r   r   r   rY   r   r   r   filterwarningsr   r?   r!   r   r   r      s    D3/&D"9)(/ .1`2& [[S1c(+0 ,0 10,,0 [[TD"&&>2E 3E1. [[ RS
 T
r!   r   c                       e Zd ZdZd Zy)
TestSortedz+everything you wanted to test about sortingc                    t        g dg dgg dg dg      }t        dt        t        |            i|d      }|j                  j
                  du sJ |j                         }|j                  j
                  d	u sJ t        dg d
it        j                  g d      d      }|j                  t        j                  ddddf   d d f   }t        j                  ||       y )Nr   )rW   rV   rU   )r   r   r>   r   r   r>   )r   r>   r   r   r   r>   colint64)r   r   FT)r   rS   r`   r>   ))ri   rU   )ri   rW   )r   rU   )r   rV   ri   r   rU   rW   )r   r   ranger   r   is_monotonic_increasing
sort_indexro   r*   pd
IndexSlicer   r   )r   r   r]   sortedr   r   s         r   test_sort_non_lexsortedz"TestSorted.test_sort_non_lexsortedb  s     o.1CEW0X
 uSX/s'Jxx//5888||33t;;;L!((@ 
 BMM#c'3s7*:;Q>?
fh/r!   N)r   r   r   __doc__r   r?   r!   r   r   r   _  s
    50r!   r   )r   numpyrY   r   pandasr   r   r   r   r   pandas._testing_testingr   r   r   r?   r!   r   <module>r      s7         L
 L
^
0 0r!   