
    .ik                     .   d dl mZm Z  d dlZd dlZd dlZd dlZd dlmZ d dl	m
Z
 d dlmZ d dlmZ d dlZd dlmZmZmZmZmZmZmZmZmZ d dlmZ d dlmc mZ  d dl!m"Z"m#Z#m$Z$ d d	l%m&Z&m'Z'm(Z( d d
l)m*Z*m+Z+m,Z,  ejZ                  e,e(g      d        Z.ejZ                  d        Z/d Z0d Z1dZ2dd e,fdZ3d%dZ4d%dZ5ejZ                  d        Z6 G d d      Z7 G d d      Z8d Z9 G d d      Z: G d d      Z; G d d      Z< G d  d!      Z=d" Z>d# Z?d$ Z@y)&    )datedatetimeN)BlockPlacement)IS64)Pandas4Warning)	is_scalar)	Categorical	DataFrameDatetimeIndexIndexIntervalIndexSeries	Timedelta	Timestampperiod_range)DatetimeArraySparseArrayTimedeltaArray)BlockManagerSingleBlockManager
make_block)ensure_block_shapemaybe_coerce_values	new_blockparamsc                     | j                   S )zS
    Fixture to test both the internal new_block and pseudo-public make_block.
    param)requests    c/var/www/app/trading-bot/venv/lib/python3.12/site-packages/pandas/tests/internals/test_internals.pyblock_makerr"   0   s    
 ==    c                      t        d      S )Nza: f8; b: object; c: f8; d: object; e: f8;f: bool; g: i8; h: complex; i: datetime-1; j: datetime-2;k: M8[ns, US/Eastern]; l: M8[ns, CET];)
create_mgr r#   r!   mgrr'   8   s    	1 r#   c                 z   t        j                  | j                  |j                         | j                  |j                  k(  sJ t	        | j
                  t              sJ t	        |j
                  t              sJ t        j                  | j
                  j                  |j
                  j                         y N)tmassert_numpy_array_equalvaluesdtype
isinstancemgr_locsr   as_array)leftrights     r!   assert_block_equalr3   A   s|    U\\:::$$$dmm^444ennn555 6 68O8OPr#   c           	          t        j                  | d         }t         j                  j                  j	                  || |j
                  fdt        |       dz
  z  z         j                         S )Nr   )r      )xshapestrides)nparangelibstride_tricks
as_strideditemsizelencopy)r7   arrs     r!   get_numeric_matrB   I   s\    
))E!H
C66**
US\\Odc%j1n6M$M + 
dfr#   
   c                    t        |      }t        |      }|t        f}|g|}t        |      }| dv r|j	                  |       |z   }n| dv rd|j	                  |       |z   z  }n| dv r;t        j                  |j                         |z   D 	cg c]  }	d|	d
 c}	|      }n| dv r't        j                  |t
        j                  	      }n| d
v r|dz  j	                  d      }nm| j                  d      rt        j                  d|       }
|

J d|         |
j                         d   }|dk(  sJ d       t        t        j                  t              dz  |      j                   }t#        |t        |            }n| dv r|dz  j	                  d      }n| dv rt%        g d      }n| dv rt%        g d      }n| dv r|d   dk7  rt&        t)        d |dd D              sJ | j+                  d       rt
        j,                  }nd!}t/        ||dd"d#|d$d%|d&g
|'      }|j0                  j3                         }||dz
  z  }nt5        d(|  d)      t7        |      } |||t        |      *      S c c}	w )+a  
    Supported typestr:

        * float, f8, f4, f2
        * int, i8, i4, i2, i1
        * uint, u8, u4, u2, u1
        * complex, c16, c8
        * bool
        * object, string, O
        * datetime, dt, M8[ns], M8[ns, tz]
        * timedelta, td, m8[ns]
        * sparse (SparseArray with fill_value=0.0)
        * sparse_na (SparseArray with fill_value=np.nan)
        * category, category2

    N)floatf8f4f2inti8i4i2i1uintu8u4u2u1)complexc16c8y              ?)objectstringOAd)bboolr-   )r   dtM8[ns]g    eAr_   zM8[nszM8\[ns,\s*(\w+\/?\w*)\]zincompatible typestr -> r   r5   z)must have only 1 num items for a tz-awarei ʚ;)tzndim)	timedeltatdm8[ns]re   )category)
r5   r5      rg      rh   rh   rh      ri   )	category2)
ark   rk   rk   r[   r[   crl   rl   rZ   )sparse	sparse_narC   c              3   &   K   | ]	  }|d k(    yw)r5   Nr&   ).0ss     r!   	<genexpr>zcreate_block.<locals>.<genexpr>   s     .a16.s   _na        rg   rh   ri         
fill_valuezUnsupported typestr: ""	placementrb   )r   r?   NrB   astyper9   reshaperavelonesbool_
startswithresearchgroupsr   r:   _datar   r	   NotImplementedErrorallendswithnanr   	sp_valuesview
ValueErrorr   )typestrr|   
item_shape
num_offsetmaker	num_itemsr7   matr,   imr`   ry   rA   s                 r!   create_blockr   S   s   " y)IIIT
$$E
%
 C    G$z1	,	,G,z9:	-	-		j0HI1q1YI5Q	M	!bhh/	0	0)##H-			G	$II0':}B 8	BB}XXZ]A~JJJ~ryy|e3;AA#FU<	1	1'!!(+	M	!;<	N	"OP	+	+9?%%.5":....E"JJQ1j!Q
AN!
 ##%zA~1'!<== (F93u:>>O Js   I8c           	          |t         }t        t        | t        d|      d      t	        t        j                  |                  S )Nr   r&   )r|   r   )r}   r   r   slicer   r9   r:   )r   num_rowss     r!   create_single_mgrr      s>    Wa(:rJbii!" r#   c                 t   |t         f}d}g }i }| j                  d      D ]  }|j                         }t        |      s|j	                  d      ddd   \  }}|j                         }|j                         j                  d      }|j                  |       t        t        j                  t        |            |z         }	 ||   j                  |       |t        |      z  } t        |      }g }	d}
|j                         D ]E  \  }}|j                  d      d   }|	j                  t        ||||
             |
t        |      z  }
G t        |	d	 
      }t        t!        |      |g|D cg c]   }t        t        j                  |            " c}z         S # t        $ r |||<   Y w xY wc c}w )aU  
    Construct BlockManager from string description.

    String description syntax looks similar to np.matrix initializer.  It looks
    like this::

        a,b,c: f8; d,e,f: i8

    Rules are rather simple:

    * see list of supported datatypes in `create_block` method
    * components are semicolon-separated
    * each component is `NAME,NAME,NAME: DTYPE_ID`
    * whitespace around colons & semicolons are removed
    * components with same DTYPE_ID are combined into single block
    * to force multiple blocks with same dtype, use '-SUFFIX'::

        "a:f8-1; b:f8-2; c:f8-foobar"

    Nr   ;:rg   ,-)r   r   c                      | j                   d   S Nr   )r/   )r[   s    r!   <lambda>zcreate_mgr.<locals>.<lambda>   s    1::a= r#   )key)r}   splitstripr?   	partitionextendlistr9   r:   KeyErrorr   itemsappendr   sortedr   tuple)descrr   offset	mgr_itemsblock_placementsrZ   namesblockstrr|   blocksr   r   sblocksns                 r!   r%   r%      s   * T
FI[[ GGI1v++c*3Q3/x>>###C(3u:.78		3X&--i8 	#e*  i IFJ/557 %)..%a(zj	

 	c)n$
% V!89Gg	J?quRYYq\*?? %  	3)2X&	3( @s   F!3%F5!F21F2c                      t        dg d      S )NrE   r   rg   ri   )r   r&   r#   r!   fblockr      s    ++r#   c                       e Zd Zd Zej
                  j                  ddg dgddggddd	ggd
dggg      d        Zd Zd Z	d Z
d Zd Zd Zy)	TestBlockc                 \    t        ddg      }|j                  t        j                  k(  sJ y )NrK   r   )r   r-   r9   int32)self
int32blocks     r!   test_constructorzTestBlock.test_constructor   s(    !$,
288+++r#   z	typ, datarE   r   rS      rV   r5   rh   r\   rv   c                 \    t        ||      }t        t        j                  ||      |       y r)   )r   r3   r*   round_trip_pickle)r   typdata	temp_fileblks        r!   test_picklezTestBlock.test_pickle   s'     3%2//Y?Er#   c                     t        |j                  t              sJ t        j                  |j                  j
                  t        j                  g dt        j                               y )Nr   r]   )	r.   r/   r   r*   r+   r0   r9   arrayintpr   r   s     r!   test_mgr_locszTestBlock.test_mgr_locs  sB    &//>:::
##OO$$bhhy&H	
r#   c                     |j                   |j                  j                   k(  sJ |j                  |j                  j                  k(  sJ t        |      t        |j                        k(  sJ y r)   )r7   r,   r-   r?   r   s     r!   
test_attrszTestBlock.test_attrs  sU    ||v}}22222||v}}222226{c&--0000r#   c                 L    |j                  d      }||usJ t        ||       y )NTdeep)r@   r3   )r   r   cops      r!   	test_copyzTestBlock.test_copy  s*    kktk$&   63'r#   c                 $   |j                  d      }|j                  }|j                  d      d   }|j                  |u sJ ||usJ t        j                  |j                  j
                  t        j                  ddgt        j                               |j                  d   dk(  j                         rJ |j                  d   dk(  j                         sJ |j                  d      }|j                  }|j                  d      }t        |      dk(  sJ |j                  |u sJ t        j                  |d   j                  j
                  t        j                  dgt        j                               t        j                  |d   j                  j
                  t        j                  dgt        j                               |j                  d   dk(  j                         rJ |d   j                  d   dk(  j                         sJ |j                  d      }|j                  d      }t        |      dk(  sJ t        j                  |d   j                  j
                  t        j                  ddgt        j                               |d   j                  d   dk(  j                         sJ |j                  d      }t        j                  t        d       5  |j                  d	       d d d        y # 1 sw Y   y xY w)
NTr   r   rg   ri   r]   r5   matchrh   )r@   r/   deleter*   r+   r0   r9   r   r   r,   r   r?   pytestraises
IndexError)r   r   newblocsnbs        r!   test_deletezTestBlock.test_delete  sq   {{{%}}[[^A}}$$$~~
##KK  "((Aq6"A	
 KKNa',,...		!!&&((({{{%}}[[^2w!||}}$$$
##qENN##RXXqc%A	
 	##qENN##RXXqc%A	
 KKNa',,...1Q1$))+++{{{%[[^2w!||
##qENN##RXXq!fBGG%D	
 1Q1$))+++{{{%]]:T2 	KKN	 	 	s   +LLc                    t        j                  dd      j                  dd      j                  d      }t	        |      }|j
                  j                  d   }t        |j                  t              sJ |j                  d      }t        |      d	k(  sJ t        |d   j                  t              sJ t        |d   j                  t              sJ t	        |j                  d
            }|j
                  j                  d   }t        |j                  t              sJ |j                  ddg      }t        |      d	k(  sJ t        |d   j                  t              sJ t        |d   j                  t              sJ y )N   rJ   r]   rv   ri   re   r   r5   rg   r_   rh   )r9   r:   r   r   r
   _mgrr   r.   r,   r   r   r?   r   )r   rA   dfr   r   s        r!   test_delete_datetimelikez"TestBlock.test_delete_datetimelikeF  s1   ii$'//15::8Ds^ggnnQ#**n555ZZ]2w!||"Q%,,777"Q%,,777sxx)*ggnnQ#**m444ZZA2w!||"Q%,,666"Q%,,666r#   c                    t         j                  j                  d      j                  d      }t	        |t        g d      d      }t        |j                               }d|d d  |j                  dk(  j                         sJ t        |      dk(  sJ t	        |dg   t        dg      d      t	        |dg   t        dg      d      t	        |dg   t        d	g      d      g}t        ||      D ]  \  }}t        ||        y )
Nrg   )rh   ri   )rh   r5   rw   r{   irh   r   r5   rw   )r9   randomdefault_rngstandard_normalr   r   r   _splitr,   r   r?   zipr3   )r   r,   r   resultexpectedresexps          r!   
test_splitzTestBlock.test_split[  s    &&q)99&A.*C!Lcjjl# q	

e#((***6{afaSk^QC-@qIfaSk^QC-@qIfaSk^QC-@qI

 FH- 	)HCsC(	)r#   N)__name__
__module____qualname__r   r   markparametrizer   r   r   r   r   r   r   r&   r#   r!   r   r      sz    , [[i 1vaSM		
FF
1
(
(T7*)r#   r   c                   R   e 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d Zd Zd Zej                  j                  ddej$                  fdej&                  fg      d        Zej                  j                  ddej*                  fdej,                  fdej.                  fg      d        Zd Zd Zej                  j                  dg d      d        Zd Zd Zej                  j                  dg d      d        Zd  Zd! Z d" Z!d# Z"d$ Z#ej                  j                  dd%d&g      d'        Z$ej                  j                  dg d(      d)        Z%d* Z&ej                  j                  d+d,d-g d.d/g      d0        Z'd1 Z(d2 Z)y3)4TestBlockManagerc                 \    t        d      }|j                  dk(  sJ t        |      dk(  sJ y )Nza,b,c: f8-1; d,e,f: f8-2rg   rw   )r%   nblocksr?   r   r'   s     r!   r   zTestBlockManager.test_attrsp  s/    34{{a3x1}}r#   c                 X   t        d      }|j                  |j                  }}t        t	        j
                  dg            |d   _        t        t	        j
                  dg            |d   _        d}t        ||      }t        j                  t        |      5  |j                          d d d        t        t	        j
                  dg            |d   _        t        t	        j
                  dg            |d   _        t        ||      }|j                  d       y # 1 sw Y   uxY w)Nza:bool; a: f8r   r5   zGaps in blk ref_locsr   )r%   axesr   r   r9   r   r/   r   r   r   AssertionError_rebuild_blknos_and_blklocsiget)r   tmp_mgrr   r   msgr'   s         r!   test_duplicate_ref_loc_failurez/TestBlockManager.test_duplicate_ref_loc_failureu  s    _-||W^^f+BHHaSM:q	+BHHaSM:q	 %64(]]>5 	.++-	. ,BHHaSM:q	+BHHaSM:q	64(	. 	.s   D  D)c                 H   t        j                  ||      }t        j                  t        j                  ||j
                        t        j                  ||j
                               t        |d      sJ t        |d      sJ |j                  rJ |j                  rJ y )Nr   _is_consolidated_known_consolidated)	r*   r   assert_frame_equalr
   	_from_mgrr   hasattrr  r  )r   r'   r   mgr2s       r!   r   zTestBlockManager.test_pickle  s    ##C3
#((34995	
 t/000t2333 ((((+++++r#   
mgr_stringza,a,a:f8za: f8; a: i8c                     t        |      }t        j                  ||      }t        j                  t	        j
                  ||j                        t	        j
                  ||j                               y )Nr  )r%   r*   r   r  r
   r  r   )r   r  r   r'   r
  s        r!   test_non_unique_picklez'TestBlockManager.test_non_unique_pickle  sT    $##C3
#((34995	
r#   c                    t        d      }t        j                  ||      }t        j                  t	        j
                  ||j                        t	        j
                  ||j                               t        d      }t        j                  ||      }t        j                  t               j                  ||j                        t               j                  ||j                               y )Na: categoryr  rf   )r%   r*   r   r  r
   r  r   r   assert_series_equalr   _constructor_from_mgr)r   r   r'   r
  smgrsmgr2s         r!   test_categorical_block_picklez.TestBlockManager.test_categorical_block_pickle  s    '##C3
#((34995	

 !,$$T95
H**4dii*@H**5uzz*B	
r#   c           	         t        t        d            }t        j                  j	                  d      j                  d      }t        |j                         t        t        j                  dt        j                              |j                        }t        |f|t        t        j                  d            g      }t        j                  |j                  d      j                         |d          t        j                  |j                  d	      j                         |d	          t        j                  |j                  d      j                         |d          y )
Nabcrg   )rh   rh   rh   r]   )r,   r|   rb   r   r   r   r5   )r   r   r9   r   r   r   r@   r   r:   r   rb   r   r*   assert_almost_equalr   internal_values)r   colsr,   blockr'   s        r!   	test_igetzTestBlockManager.test_iget  s    T%[!&&q)008;;=$RYYq%@A

 5($biil8K1LM
sxx{::<fQiH
sxx{::<fQiH
sxx{::<fQiHr#   c                 z   t        dd      }|j                  t        |j                        dt	        j
                  dgdz               |j                  dt	        j
                  dgdz               t        j                  |j                  d	      j                         t	        j
                  d	gdz               t        j                  |j                  d      j                         t	        j
                  dgdz  t        j                  
             t        j                  |j                  d      j                         t	        j
                  dgdz               t        j                  |j                  d      j                         t	        j
                  dgdz  t        j                  
             y )Nz
a,b,c: intrh   r   rZ   foorh   r5   barr   r]   rg   )r%   insertr?   r   r9   r   isetr*   r+   r   r  object_r   s     r!   test_setzTestBlockManager.test_set  s(   $7

3syy>3%1(=>BHHeWq[)*
##CHHQK$?$?$A288QCRSGCTU
##HHQK'')288UGaKrzz+R	
 	##CHHQK$?$?$A288QCRSGCTU
##HHQK'')288UGaKrzz+R	
r#   c                 b   |j                  t        |j                        dt        j                  t
        t                     |j                  |j                  j                  d      t        j                  dt
                     |j                  j                  d      }|j                  |      j                  t        j                  k(  sJ |j                         }|j                  |j                  j                  d      t        j                  dt
                     |j                  j                  d      }|j                  |      j                  t        j                  k(  sJ |j                  t        |j                        dt        j                  j                  d      j!                  t
              j#                  t$                     |j                  j                  d      }|j                  |      j                  t        j                  t$              k(  sJ |j                  |j                  j                  d      t        j                  j                  d      j!                  t
                     |j                  |      j                  t        j&                  k(  sJ y )Nbazr]   r   quuxrg   )r"  r?   r   r9   zerosr}   r\   r#  get_locrepeatr   r-   r$  consolidater   r   r   r~   rI   float64)r   r'   idxr
  s       r!   test_set_change_dtypez&TestBlockManager.test_set_change_dtype  s   

3syy>5"((1D*AB""5)299UA+>?ii&xx}""bjj000 		$**$$U+RYYua-@Ajj  'yy~##rzz111

OII!!!$44Q7>>sC	

 jj  (yy~##rxx}444		JJv&		(=(=a(@(P(PQR(S	
 yy~##rzz111r#   c                 >   |j                  d      }t        |j                  |j                        D ]  \  }}t        j                  |j
                  |j
                         t        |j
                  t        j                        r9|j
                  j                  j                  |j
                  j                  u rJ |j
                  j                  j                  |j
                  j                  j                  u rJ  |j                          |j                  d      }t        |j                  |j                        D ]  \  }}|j
                  }|j
                  }t        j                  ||       t        |t        j                        r|j                  }|j                  }n,|j                  j                  }|j                  j                  }t        |t              r||||urJ t        |t        j                        s||urJ ||J  y )NFr   T)r@   r   r   r*   assert_equalr,   r.   r9   ndarraybase_ndarray_consolidate_inplacer   )	r   r'   cpr   cp_blkbvalscpvalslbaserbases	            r!   r   zTestBlockManager.test_copy  s   XX5X!szz2995 	OKCOOFMM3::6#**bjj1}}))..#**//AAA }}--22cjj6I6I6N6NNNN	O 	  "XX4X szz2995 	7KCJJE]]FOOFE*&"**-

,,++ &-0%-U%=OPP

3E)))}66)	7r#   c                 t    t        d      }|j                         j                  t        j                  k(  sJ y )Nza: sparse-1; b: sparse-2)r%   r0   r-   r9   r-  r   s     r!   test_sparsezTestBlockManager.test_sparse  s+    34||~##rzz111r#   c                 r    t        d      }t        |j                        dk(  sJ t        |t              sJ y )Nza: sparse-1; b: sparse-2; c: f8rh   )r%   r?   r   r.   r   r   s     r!   test_sparse_mixedz"TestBlockManager.test_sparse_mixed  s3    :;3::!####|,,,r#   zmgr_string, dtypezc: f4; d: f2c: f4; d: f2; e: f8c                 X    t        |      }|j                         j                  |k(  sJ y r)   r%   r0   r-   r   r  r-   r'   s       r!   test_as_array_floatz$TestBlockManager.test_as_array_float  s(    
 $||~##u,,,r#   za: bool-1; b: bool-2z%a: i8-1; b: i8-2; c: i4; d: i2; e: u1zc: i4; d: i2; e: u1c                 X    t        |      }|j                         j                  |k(  sJ y r)   rB  rC  s       r!   test_as_array_int_boolz'TestBlockManager.test_as_array_int_bool  s(     $||~##u,,,r#   c                 X    t        d      }|j                         j                  dk(  sJ y )Nzh: datetime-1; g: datetime-2r_   rB  r   s     r!   test_as_array_datetimez'TestBlockManager.test_as_array_datetime(  s'    78||~##x///r#   c                     t        d      }|j                  d      j                  dk(  sJ |j                  d      j                  dk(  sJ |j                         j                  dk(  sJ y )Nz%h: M8[ns, US/Eastern]; g: M8[ns, CET]r   zdatetime64[ns, US/Eastern]r5   zdatetime64[ns, CET]rV   )r%   r   r-   r0   r   s     r!   test_as_array_datetime_tzz*TestBlockManager.test_as_array_datetime_tz,  sa    @Axx{  $@@@@xx{  $9999||~##x///r#   t)float16float32r-  r   int64c                    t        d      }t        j                  |      }|j                  |      }|j	                  d      j                  j
                  |k(  sJ |j	                  d      j                  j
                  |k(  sJ |j	                  d      j                  j
                  |k(  sJ t        d      }t        j                  |      }|j                  |d      }|j	                  d      j                  j
                  |k(  sJ |j	                  d      j                  j
                  |k(  sJ |j	                  d	      j                  j
                  |k(  sJ |j	                  d
      j                  j
                  |k(  sJ |j	                  d      j                  j
                  t        j                  k(  sJ |j	                  d      j                  j
                  t        j                  k(  sJ |t        j                  k7  r9|j	                  d      j                  j
                  t        j                  k(  sJ y |j	                  d      j                  j
                  |k(  sJ y )Nr@  r   r5   rg   z6a,b: object; c: bool; d: datetime; e: f4; f: f2; g: f8ignore)errorsri   rv   rw   rh   )	r%   r9   r-   r~   r   typer$  rN  
datetime64)r   rK  r'   tmgrs       r!   test_astypezTestBlockManager.test_astype2  s    ./HHQKzz!}yy|!!&&!+++yy|!!&&!+++yy|!!&&!+++ QRHHQKzz!Hz-yy|!!&&!+++yy|!!&&!+++yy|!!&&!+++yy|!!&&!+++yy|!!&&"**444yy|!!&&"**444=99Q<%%**bmm;;;99Q<%%**a///r#   c                 :   d }t        d      }|j                         } |||       t        d      }|j                  dt        j                  dgt
        z  t        j                               |j                  dt        j                  dgt
        z  t        j                               |j                  d	t        j                  d
gt
        z  t        j                               |j                         }|rdnt        j                  }|j                  d      j                  |k(  sJ |j                  d      j                  |k(  sJ |j                  d	      j                  |k(  sJ |j                  d      j                  t        j                  k(  sJ |j                  d      j                  t        j                  k(  sJ t        d      }|j                  dt        j                  dgt
        z  t        j                               |j                  dt        j                  dgt
        z  t        j                               |j                  d	t        j                  d
gt
        z  t        j                               |j                         }|j                  d      j                  |k(  sJ |j                  d      j                  |k(  sJ |j                  d	      j                  |k(  sJ |j                  d      j                  t        j                  k(  sJ |j                  d      j                  t        j                  k(  sJ |j                  d      j                  j                  sJ t        j                         |j                  d      j                  t        j                  k(  sJ |j                  d      j                  t        j                  k(  sJ |j                  d      j                  t        j                  k(  sJ y )Nc                    t        | j                        }t        |j                        }t        |      t        |      k(  sJ |D ]:  }d}|D ]-  }|j                  |j                  k(  j	                         s+d} n |r:J  |D ]:  }d}|D ]-  }|j                  |j                  k(  j	                         s+d} n |r:J  y)z4compare the blocks, numeric compare ==, object don'tFTN)setr   r?   r,   r   )old_mgrnew_mgr
old_blocks
new_blocksr[   foundr   obs           r!   _comparez/TestBlockManager.test_convert.<locals>._compareO  s    W^^,JW^^,Jz?c*o555   $ BBII-224 $ u   $ BBII-224 $ ur#   zf: i8; g: f8za,b,foo: object; f: i8; g: f8r   1r]   r5   z2.rg   zfoo.strrh   ri   zEa,b,foo: object; f: i4; bool: bool; dt: datetime; i: i8; g: f8; h: f2rv   rw   r      )r%   convertr#  r9   r   r}   r$  r   r-   rN  r-  r   r   rR  rS  rL  )r   using_infer_stringr_  r'   rZ  r-   s         r!   test_convertzTestBlockManager.test_convertN  s   	0 (++-g 89BHHcUQYbjj9:BHHdVaZrzz:;BHHfX\<=++-+||A$$---||A$$---||A$$---||A$$000||A$$

222S
 	BHHcUQYbjj9:BHHdVaZrzz:;BHHfX\<=++-||A$$---||A$$---||A$$---||A$$000||A$$000||A$$))82==8)||A$$000||A$$

222||A$$

222r#   c                     dD ]_  }t        d|       }|j                         j                  |k(  sJ t        d| d|       }|j                         j                  |k(  r_J  y )N)rF   rJ   rV   r\   rS   r_   re   za: z; b: rB  )r   r-   r'   s      r!   test_interleavez TestBlockManager.test_interleave  sl    R 	1Es5']+C<<>''5000s5'ug67C<<>''5000		1r#   ))r  rJ   )za: category; b: categoryrJ   )a: category; b: category2rV   )a: category2rV   )za: category2; b: category2rV   )a: f8rF   )a: f8; b: i8rF   )a: f4; b: i8rF   )a: f4; b: i8; d: objectrV   )a: bool; b: i8rV   )
a: complexrS   )a: f8; b: categoryrV   )a: M8[ns]; b: categoryrV   )a: M8[ns]; b: boolrV   )a: M8[ns]; b: i8rV   )a: m8[ns]; b: boolrV   )a: m8[ns]; b: i8rV   )a: M8[ns]; b: m8[ns]rV   c                 D   t        d      }|j                         j                  dk(  sJ t        d      }|j                         j                  dk(  sJ t        d      }|j                         j                  dk(  sJ t        d      }|j                         j                  dk(  sJ t        d      }|j                         j                  dk(  sJ t        d	      }|j                         j                  dk(  sJ t        d
      }|j                         j                  dk(  sJ t        d      }|j                         j                  dk(  sJ t        d      }|j                         j                  dk(  sJ t        d      }|j                         j                  dk(  sJ t        d      }|j                         j                  dk(  sJ t        d      }|j                         j                  dk(  sJ t        d      }|j                         j                  dk(  sJ t        d      }|j                         j                  dk(  sJ t        d      }|j                         j                  dk(  sJ t        d      }|j                         j                  dk(  sJ y )Nr  rJ   rh  rV   ri  rj  rF   rk  rl  rm  rn  ro  rS   rp  rq  rr  rs  rt  ru  rv  rB  rC  s       r!   test_interleave_dtypez&TestBlockManager.test_interleave_dtype  sP   2 '||~##t+++45||~##x///(||~##x/// !||~##t+++(||~##t+++(||~##t+++23||~##x///)*||~##x///&||~##y000-.||~##t+++12||~##x///-.||~##x///+,||~##x///-.||~##x///+,||~##x////0||~##x///r#   c                 ^   |j                  |j                  j                  d      t        j                  j                  d      j                  t                     |j                  |j                  j                  d      t        j                  j                  d      j                  t                     |j                  |j                  j                  d      t        j                  j                  d      j                  t                     |j                  |j                  j                  d      t        j                  j                  d      j                  t                     |j                  |j                  j                  d      t        j                  j                  d      j                  t                     |j                         }|j                  dk(  sJ |j                         j                         }|j                  dk(  sJ t        |j                  d	   j                  t              sJ t        j                   |j                  d	   j                  j"                  t        j$                  t'        |j                        t        j(                  
             y )Nfrg   rZ   r[   ghri   r5   r   r]   )r#  r   r*  r9   r   r   r   r}   r,  r   get_numeric_datar.   r   r/   r   r*   r+   r0   r:   r?   r   )r   r'   conss      r!    test_consolidate_ordering_issuesz1TestBlockManager.test_consolidate_ordering_issues  s   ""3')>)>q)A)Q)QRS)TU""3')>)>q)A)Q)QRS)TU""3')>)>q)A)Q)QRS)TU""3')>)>q)A)Q)QRS)TU""3')>)>q)A)Q)QRS)TU  ||q    113||q   $++a.11>BBB
##KKN##,,biiDJJrww.W	
r#   c                 >   t        d      }|j                  g dd      }|j                         rJ t        j                  |j
                  t        g d             t        j                  |j                  d      j                         |j                  d      j                                t        j                  |j                  d      j                         |j                  d      j                                t        j                  |j                  d      j                         |j                  d      j                                t        j                  |j                  d      j                         |j                  d      j                                y )	Nz3a: f8; b: i8; c: f8; d: i8; e: f8; f: bool; g: f8-2)r{  rl   rk   rZ   r   axisrw   rg   r5   rh   )
r%   reindex_axisis_consolidatedr*   assert_index_equalr   r   r  r   r  )r   r'   	reindexeds      r!   test_reindex_itemsz#TestBlockManager.test_reindex_items  s-   NO$$%9$B	,,...
ioou5I/JK
HHQK'')9>>!+<+L+L+N	
 	HHQK'')9>>!+<+L+L+N	
 	HHQK'')9>>!+<+L+L+N	
 	HHQK'')9>>!+<+L+L+N	
r#   c                 L   t        dd      }|j                  dt        j                  g dt        j                               |j                         }t        j                  |j                  t        g d             t        j                  |j                  |j                  j                  d            j                         |j                  |j                  j                  d            j                                |j                  |j                  j                  d      t        j                  g d	      d
       t        j                  |j                  |j                  j                  d            j                         t        j                  g d             y )N[int: int; float: float; complex: complex;str: object; bool: bool; obj: object; dt: datetimer  r  rv   r5   rg   rh   r]   )rI   rE   rS   r\   rE   )      Y@g      i@g     r@Tinplace)      ?r  r  )r%   r#  r9   r   r$  r}  r*   r  r   r   r  r   r*  r  )r   r'   numerics      r!   test_get_numeric_dataz&TestBlockManager.test_get_numeric_data  s'   A

 	BHHYbjj9:&&(
gmmU3V-WX
HHSYY&&w/0@@BLL..w78HHJ	
 	MM!!'*HH*+ 	 	

 	HHSYY&&w/0@@BHH_%	
r#   c                    t        dd      }|j                  dt        j                  g dt        j                               |j                         }t        j                  |j                  t        dg             t        j                  |j                  |j                  j                  d            j                         |j                  |j                  j                  d            j                                |j                  dt        j                  g d      d	
       t        j                  |j                  |j                  j                  d            j                         t        j                  g d             y )Nr  r  r  rw   )TFTr]   r\   r   Tr  )TTT)r%   r#  r9   r   r$  get_bool_datar*   r  r   r   r  r   r*  r  r+   )r   r'   boolss      r!   test_get_bool_dataz#TestBlockManager.test_get_bool_data  s   A

 	BHH0

CD!!#
ekk5&?;
HHSYY&&v./??AJJu{{**623CCE	

 	

1bhh23T
B
##HHSYY&&v./??AHH'(	
r#   c                 ,    t        t        d             y )Nu   b,א: object)reprr%   )r   s    r!   test_unicode_repr_doesnt_raisez/TestBlockManager.test_unicode_repr_doesnt_raise"  s    Z*+,r#   a,b,c: i8-1; d,e,f: i8-2za,a,a: i8-1; b,b,b: i8-2c                     t        |      }t        |j                  d d d   |j                        }|j	                  |      sJ y )Nro   )r%   r   r   r   equals)r   r  bm1bm2s       r!   test_equalszTestBlockManager.test_equals%  s;    
 $3::dd+SXX6zz#r#   )z	a:i8;b:f8za:i8;b:f8;c:c8;d:bza:i8;e:dt;f:td;g:stringza:i8;b:category;c:category2zc:sparse;d:sparse_na;b:f8c                     t        |      }t        j                  |j                        }|D ]G  }t	        t        |      |j                        }|j                  |      sJ |j                  |      rGJ  y r)   )r%   	itertoolspermutationsr   r   r   r   r  )r   r  bmblock_permsbm_permbm_thiss         r!   (test_equals_block_order_different_dtypesz9TestBlockManager.test_equals_block_order_different_dtypes.  si     
#,,RYY7" 	&G"5>277;G99W%%%>>"%%%	&r#   c                 h    t        dd      }|j                         j                         g dk(  sJ y )NrF   rv   )r   )ru   r         @g      @g      @)r   external_valuestolistr   s     r!   test_single_mgr_ctorz%TestBlockManager.test_single_mgr_ctorA  s/    q1""$++-1JJJJr#   valuer5   Truer  g      @c                     t        d      }dt        |      j                   d}t        j                  t
        |      5  |j                  dgdg|       d d d        y # 1 sw Y   y xY w)Nr  z9For argument "inplace" expected type bool, received type .r   r5   rg   r  )r%   rR  r   r   r   r   replace_list)r   r  r  r  s       r!   test_validate_bool_argsz(TestBlockManager.test_validate_bool_argsE  sl    34!%[112!5 	 ]]:S1 	6aS1#u5	6 	6 	6s    A  A)c                    t        d      }|j                  dt        j                  dg             t	        j
                  |j                  t        j                  g dt        rdnd             t	        j
                  |j                  t        j                  g dt        rdnd             t        |j                        dk(  sJ y )	Na,b,c: i8; d: f8r   r   r   r5   r   rN  r   r]   )r   r   r   r5   rg   )r%   _iset_split_blockr9   r   r*   r+   blklocsr   blknosr?   r   r   r  s     r!   test_iset_split_blockz&TestBlockManager.test_iset_split_blockP  s    *+
Q!.
##JJW'R	
 	##IIrxxtGQ	
 299~"""r#   c                    t        d      }|j                  dt        j                  dg      t        j                  t	        t        d            g             t        j                  |j                  t        j                  g dt        rdnd             t        j                  |j                  t        j                  g dt        rdnd             t        |j                        d	k(  sJ y )
Nr  r   rC   r  rN  r   r]   )r   rg   rg   r5   rh   )r%   r  r9   r   r   ranger*   r+   r  r   r  r?   r   r  s     r!   test_iset_split_block_valuesz-TestBlockManager.test_iset_split_block_values\  s    *+
Q!rxxeBi8I/JK
##JJW'R	
 	##IIrxxtGQ	
 299~"""r#   N)*r   r   r   r   r  r   r   r   r   r  r  r  r%  r/  r   r=  r?  r9   rM  r-  rD  r   rN  r   rF  rH  rJ  rU  re  rg  rx  r  r  r  r  r  r  r  r  r  r  r  r&   r#   r!   r   r   o  s   
*, [[\J+GH
 I

I
22#7J2-
 [[
"**	%(=rzz'JK-	- [[#RXX.4bhh?"BHH-	
--00 [[S"UV0 W0693v1 [[	
.#0/.#0J
"
*
4
*- [[13MN [[	
	&	&K [[Wq&)S&AB6 C6
#
#r#   r   c                 t    | j                   dk(  r| j                         S | j                         j                  S )Nr5   )rb   r  r0   T)r'   s    r!   	_as_arrayr  i  s.    
xx1}""$$<<>r#   c            	       @   e Zd Z ede       ede       edef       edef       edef       edef      gZej                  j                  de      d	        Z
ej                  j                  de      d
        Zej                  j                  de      ej                  j                  ddej                  dg      d               Zej                  j                  de      ej                  j                  ddej                  dg      d               Zy)TestIndexingrF   rJ   za,b,c,d,e,f: f8r  za,b,c,d,e,f: i8za,b: f8; c,d: i8; e,f: stringza,b: f8; c,d: i8; e,f: f8r'   c           
      2   d }|j                   dk  sJ |j                          t        |j                         D ][  } |||t        d               |||t        d              |||t        d              |||t        dd              |||t        ddd             |j                   dk  sv |||t        j                  |j
                  |   t        j                  	              |||t        j                  |j
                  |   t        j                  	             |j
                  |   dk\  s |||t        j                  |j
                  |         dz  dk(          |||t        j                  g d
t        j                  	             ^ y )Nc           	      (   t        |       }t        |t        j                        r| j                  |   }t        |      rgt        |      r\t        |      t        |      k7  rEt        j                  |t        j                  t        |      t        |      z
  t              g      }t        |t              r| j                  ||      }n^| j                  dk(  rD|dk(  r?t        |t        j                        r%|j                  t        k(  r| j                  |      }nt        |      t        d       f|z  |fz   }t        j                   ||   t        |      d       t        j"                  | j                  |   |   |j                  |          y )Nr]   r  r5   r   Fcheck_dtype)r  r.   r9   r2  r   r?   concatenater)  r\   r   	get_slicerb   r-   get_rows_with_mask	TypeErrorr*   r+   r  )r'   r  slobjr   axsliced	mat_slobjs          r!   assert_slice_okz4TestIndexing.test_get_slice.<locals>.assert_slice_ok  s6   C.C %,XXd^r7s5zc%jCG.CNNR3u:)=T JKE %'u48AAIubjj1KK4'//6  &&t-8I''I	& 1u !!#((4."7T9JKr#   rg   rh   d   r5   ri   r   r]   )TTF)
rb   r  r   r9   r   r7   r   r)  r:   r   )r   r'   r  r  s       r!   test_get_slicezTestIndexing.test_get_slice  s:   	L@ xx1}&chh&}/ 	BCU4[1CU1X.CU3Z0CU1a[1CU1a_5xx!|  R2bhh)OPR#))B-rxx)PQ99R=A%#CRYYsyy}-E-IQ-NO#R*=RXX!N#	r#   c                 ~   d }t        |j                        D ]!  } |||t        j                  g t        j                                |||t        j                  g dt        j                                |||t        j                  t        t        |j                  |               t        j                               |j                  |   dk\  s |||t        j                  g dt        j                                |||t        j                  g dt        j                               $ y )Nc                 (   t        |       }| j                  ||      }t        j                  t	        j                  |||      t        |      d       t        j
                  | j                  |   j                  |      |j                  |          y )NFr  )r  taker*   r+   r9   r  r   )r'   r  indexerr   takens        r!   assert_take_okz.TestIndexing.test_take.<locals>.assert_take_ok  sp    C.CHHWd+E''Wd+Yu-=5 !!#((4."5"5g">

4@PQr#   r]   )r  r   r   r   rh   r   r5   rg   ro   r  )r  rb   r9   r   r   r   r7   )r   r'   r  r  s       r!   	test_takezTestIndexing.test_take  s    	R / 
	WB3BHHRrww,GH3BHHYbgg,NOR$uSYYr]/C*DBGG!T yy}!sB"''0RSsBRWW0UV
	Wr#   ry   Nr  c           
         d }t        |j                        D ]  } |||t        g       |        ||||j                  |   |        ||||j                  |   g d   |        |||t        g d      |        |||t        d|j                  |   d   dg      |       |j                  |   dk\  s ||||j                  |   d d |        ||||j                  |   dd d	   |        ||||j                  |   g d
   |        y )Nc                 4   t        |       }| j                  |   j                  |      }| j                  |||      }t	        j
                  t        j                  ||||      t        |      d       t	        j                  |j                  |   |       y Nrx   Fr  )	r  r   get_indexer_forr  r*   r+   algostake_ndr  )r'   r  
new_labelsry   r   r  r  s          r!   assert_reindex_axis_is_okzATestIndexing.test_reindex_axis.<locals>.assert_reindex_axis_is_ok  s    C.Chhtn44Z@G((Tj(QI''c7DZH)$!
 !!).."6
Cr#   r  r   r!  r'  r   r   r'  rh   r  ro   )r   r5   rg   r   r5   rg   )r  rb   r   r   r7   )r   ry   r'   r  r  s        r!   test_reindex_axiszTestIndexing.test_reindex_axis  s   
	D / 	B%c2uRy*E%c2sxx|ZH%c2sxx|I/F
S%c2u5J/KZX%Rsxx|A>? yy}!)#r388B<3DjQ)#r388B<B3GT)SXXb\*<=z	r#   c           
      V   d }t        |j                        D ]  } |||t        g       t        j                  g t        j
                        |        ||||j                  |   t        j                  |j                  |         |        |||t        dg|j                  |   z        t        j                  |j                  |         |        ||||j                  |   d d d   t        j                  |j                  |         |        ||||j                  |   t        j                  |j                  |         d d d   |        |||t        g d      t        j                  g d      |        |||t        g d      t        j                  g d      |        |||t        d|j                  |   d   d	g      t        j                  g d
      |       |j                  |   dk\  s |||t        g d      t        j                  g d      |        y )Nc                     t        |       }t        j                  ||||      }| j                  ||||      }t	        j
                  |t        |      d       t	        j                  |j                  |   |       y r  )r  r  r  reindex_indexerr*   r+   r  r   )r'   r  r  r  ry   r   reindexed_matr  s           r!   assert_reindex_indexer_is_okzGTestIndexing.test_reindex_indexer.<locals>.assert_reindex_indexer_is_ok  st    C.C!MM#wTM++GTj , I ''y3 !!).."6
Cr#   r]   r   ro   r  r  )ro   r   ro   r   r'  )ro   ro   ro   rh   r  )	r  rb   r   r9   r   r   r   r:   r7   )r   ry   r'   r  r  s        r!   test_reindex_indexerz!TestIndexing.test_reindex_indexer  s   		D / )	B(RrBHHRrww$? )R"ryy2'? )ug		"-.		#))B-( )R"dd+RYYsyy}-Ez )R"ryy2'?"'Ez )R45rxx	7JJ )R45rxx7Lj )uchhrl1ou56& yy}!,/0HHY'G)	r#   )r   r   r   r   r}   r%   MANAGERSr   r   r   r  r  r9   r   r  r  r&   r#   r!   r  r  o  s4    	$"$"$!6$!62tD.A4@H [[UH-5 .5n [[UH-W .W* [[UH-[[\D"&&%+@A B .: [[UH-[[\D"&&%+@A5 B .5r#   r  c                      e Zd Zej                  j                  d edd      df eddd      df eddd      df eddd      df eddd      dfg      d        Zej                  j                  d	 eddd       eddd      g      d
        Zd Z	ej                  j                  d	 edd       edd       eddd       eddd       edd       edd       edd       eddd       eddd       eddd      g
      d        Z
ej                  j                  d	 edd       edd       edd       eddd       eddd      g      d        Zej                  j                  ddg eddd      fdg eddd      fg d eddd      fg d eddd      fddg eddd      fddg eddd      fg      d        Zej                  j                  dg dgg ddgg dg dg dg dg      d         Zej                  j                  d edd      g df edd      g f edd      g fg      d!        Zej                  j                  d" edd      g df edd      g f edd      g f eddd      g d#fg      d$        Zd% Zej                  j                  d& edd      dg f edd      dg d'f eddd      dg d#fg d(dg d(f edd      dg f edd      dg d)f eddd      dg d*fg d(dg d+f edd      dg f edd      dg dfg d(dg d,fg      d-        Zej                  j                  d. edd      g d(g      d/        Zy)0TestBlockPlacementzslc, expectedr   ri   rg   rh   r5   ro   c                 6    t        t        |            |k(  sJ y r)   )r?   r   r   slcr   s      r!   test_slice_lenz!TestBlockPlacement.test_slice_len*  s     >#&'8333r#   r  c                 ~    d}t        j                  t        |      5  t        |       d d d        y # 1 sw Y   y xY w)Nzslice step cannot be zeror   r   r   r   r   r   r  r  s      r!   test_zero_step_raisesz(TestBlockPlacement.test_zero_step_raises7  s2    )]]:S1 	 3	  	  	    3<c                 l    t        ddd      }t        |      }|j                  t        dd d      k(  sJ y )Nrh   ro   r  )r   r   r  )r   r  bps      r!   !test_slice_canonize_negative_stopz4TestBlockPlacement.test_slice_canonize_negative_stop=  s5    Ar2C zzU1dB////r#   NrC   c                 ~    d}t        j                  t        |      5  t        |       d d d        y # 1 sw Y   y xY w)Nzunbounded slicer   r  r  s      r!   test_unbounded_slice_raisesz.TestBlockPlacement.test_unbounded_slice_raisesD  s4    $  ]]:S1 	 3	  	  	 r  r  c                 2    t        |      j                  rJ y r)   r   is_slice_like)r   r  s     r!   test_not_slice_like_slicesz-TestBlockPlacement.test_not_slice_like_slicesZ  s     "#&44444r#   zarr, slce   r  )r   rv   rC      rv      c                 8    t        |      j                  |k(  sJ y r)   )r   as_slice)r   rA   r  s      r!   test_array_to_slice_conversionz1TestBlockPlacement.test_array_to_slice_conversiong  s     c"++s222r#   rA   r  )ro   r   r5   rg   )r  r   rg   ri   )r5   r   ro   )r5   r5   r5   c                 2    t        |      j                  rJ y r)   r  )r   rA   s     r!   test_not_slice_like_arraysz-TestBlockPlacement.test_not_slice_like_arraysu  s     "#&44444r#   c                 6    t        t        |            |k(  sJ y r)   )r   r   r  s      r!   test_slice_iterz"TestBlockPlacement.test_slice_iter  s    
 N3'(H444r#   zslc, arr)rh   rg   r5   c                     t        j                  t        |      j                  t	        j
                  |t        j                               y )Nr]   )r*   r+   r   r0   r9   asarrayr   )r   r  rA   s      r!   test_slice_to_array_conversionz1TestBlockPlacement.test_slice_to_array_conversion  s1     	##3(("**S*H	
r#   c           	      l   t        t        dd            }|j                  d      j                  t        ddd      k(  sJ |j                  t	        j
                  d            j                  t        ddd      k(  sJ t        |j                  t	        j
                  ddd                  g dk(  sJ y )	Nr   rv   r5   rw   rC   rg   ro   )rv   rv   rv   rv   rv   )r   r   addr  r9   r:   r   )r   bpls     r!   test_blockplacement_addz*TestBlockPlacement.test_blockplacement_add  s    U1a[)wwqz""eAq!n444wwryy|$--q"a@@@CGGBIIaB/01_DDDr#   zval, inc, expectedr  )r5   rg   ri   )         )r  r  r  )r  r     )r   r5   rh   c                 T    t        t        |      j                  |            |k(  sJ y r)   )r   r   r  )r   valincr   s       r!   test_blockplacement_add_intz.TestBlockPlacement.test_blockplacement_add_int  s'    " N3'++C01X===r#   r  c                     d}t        j                  t        |      5  t        |      j	                  d       d d d        y # 1 sw Y   y xY w)Nziadd causes length changer   r  )r   r   r   r   r  )r   r  r  s      r!   "test_blockplacement_add_int_raisesz5TestBlockPlacement.test_blockplacement_add_int_raises  s=    )]]:S1 	)3##C(	) 	) 	)s   AA)r   r   r   r   r   r   r   r  r  r  r  r   r  r	  r  r  r  r  r  r&   r#   r!   r  r  )  sG   [[1a[!1a^Q1a^Q1a^Q1a_a 	
	4	4 [[UU1a^U1a^$DE  F 
0 [[$"dO$b!$B "dO$O"bM"dB$B"b"	
" #" 
 [[!QK#qM#sO#sB!S"	
	5	5 [[S%1a.!UE#sA&'aA'q"a)XuQS)*VU1a_%	

3
3 [[DE		
55 [[
1+y	!E!QK#4uQ{B6GH5	5 [[1a[)$1a["1a["1a_i(		



E [[1a[!R 1a[!Y'1a_a+9%1a["b!1a["l+1a_b,/L)1a["b!1a["i(I&	
 >! > [[UU1a[)$<=) >)r#   r  c            
          e Zd Z ej                  d d d d d d d d g	      d
        Zd Zej                  j                  de	j                  e	j                  e	j                  g      d        Zej                  j                  de	j                  e	j                  e	j                  g      d        Zd Zd Zd ZdefdZdedefdZy)TestCanHoldElementc                     | S r)   r&   r6   s    r!   r   zTestCanHoldElement.<lambda>  s    a r#   c                 "    | j                         S r)   )	to_seriesr   s    r!   r   zTestCanHoldElement.<lambda>  s    akkm r#   c                     | j                   S r)   )r   r   s    r!   r   zTestCanHoldElement.<lambda>  s
    agg r#   c                     t        |       S r)   )r   r   s    r!   r   zTestCanHoldElement.<lambda>  s
    d1g r#   c                 ,    | j                  t              S r)   )r~   rV   r   s    r!   r   zTestCanHoldElement.<lambda>  s    ahhv& r#   c                 ,    t        j                  |       S r)   )r9   r  r   s    r!   r   zTestCanHoldElement.<lambda>  s    bjjm r#   c                     | d   S r   r&   r   s    r!   r   zTestCanHoldElement.<lambda>  s
    ad r#   c                     | d d S r   r&   r   s    r!   r   zTestCanHoldElement.<lambda>  s    ae r#   r   c                     |j                   S )z
        Functions that take an Index and return an element that should have
        blk._can_hold_element(element) for a Block with this index's dtype.
        r   )r   r    s     r!   elementzTestCanHoldElement.element  s    " }}r#   c                 ,   t        ddg      }|j                  g       sJ t        j                  |j                  j                               }|j                  d       sJ d |d<   |d   t        j                  u sJ t        j                  d      t        ddd      g}|D ]  }|j                  |      sJ ||d<    t        ddd      }|j                  |      rJ d}t        j                  t        |      5  ||d<   d d d        y # 1 sw Y   y xY w)Nr   r   z
2010-10-10i  rC   zLvalue should be a 'Timestamp', 'NaT', or array of those. Got 'date' instead.r   )r   _can_hold_elementpdr   r,   r   NaTr9   rS  r   r   r   r   r  )r   r  rA   valsr  r  s         r!   $test_datetime_block_can_hold_elementz7TestCanHoldElement.test_datetime_block_can_hold_element  s   Z!-&&r*** hhu||))+, &&t,,,A1v l+XdB-CD 	C**3///CF	 4R **3///5 	 ]]9C0 	CF	 	 	s   ;D

Dr-   c                     t        j                  g d|      }t        j                  |      }t	        |j
                  t        dg      d      }|j                  g       sJ y )N)r5   rh   ri   r]   r5   rg   ra   )r9   r   r   from_breaksr   r   r   r,  )r   r-   r*  rA   iir   s         r!   (test_interval_can_hold_element_emptylistz;TestCanHoldElement.test_interval_can_hold_element_emptylist  sO    hhy.&&s+.!"5A>$$R(((r#   c                 6   t        j                  g d|      }t        j                  |      }t	        |j
                  t        dg      d      } ||      }| j                  ||d       |j                  |      sJ t        j                  |d d d	      } ||      }t        j                  t        d
      5  | j                  ||d       d d d        |j                  |      rJ t        j                  t        d      t        d      t        d      g      } ||      }t        j                  t        d
      5  | j                  ||d       d d d        |j                  |      rJ t        j                  t        d      t        d      t        d      g      }	 ||	      }t        j                  t        d
      5  | j                  ||d       d d d        |j                  |      rJ y # 1 sw Y   (xY w# 1 sw Y   xY w# 1 sw Y   6xY w)N)r5   rh   ri   	   r]   r5   rg   ra   Tro   neither)closedInvalid valuer   Frh   ri   )r9   r   r   r2  r   r   r   check_series_setitemr,  r   r   r  r   r   )
r   r-   r*  rA   r3  r   elemii2ii3ii4s
             r!   test_interval_can_hold_elementz1TestCanHoldElement.test_interval_can_hold_element  s   hh|51&&s+.!"5A>r{!!$D1$$T*** ''CRCs|]]9O< 	7%%dB6	7((...''1y|Yq\(RSs|]]9O< 	7%%dB6	7((...''1y|Yq\(RSs|]]9O< 	7%%dB6	7((....	7 	7	7 	7	7 	7s$   <G6HH6H HHc                     t        ddd      }t        |j                  j                  dd      t	        dg      d      }|j                  g       sJ y )N2016rh   Yperiodsfreqr5   rg   ra   )r   r   r   r   r   r,  )r   pir   s      r!   &test_period_can_hold_element_emptylistz9TestCanHoldElement.test_period_can_hold_element_emptylist  sJ    &!#6((A.s0C!L$$R(((r#   c                    t        ddd      } ||      }| j                  ||d       |j                  d      d d } ||      }t        j                  t
        d	      5  | j                  ||d
       d d d        |j                  d      d d } ||      }t        j                  t
        d	      5  | j                  ||d
       d d d        y # 1 sw Y   ]xY w# 1 sw Y   y xY w)NrA  rh   rB  rC  TDro   r9  r   Frr   )r   r:  asfreqr   r   r  to_timestamp)r   r*  rF  r;  pi2dtis         r!   test_period_can_hold_elementz/TestCanHoldElement.test_period_can_hold_element  s    &!#6r{!!$D1 iinSb!s|]]9O< 	7%%dB6	7 ooc"3B's|]]9O< 	7%%dB6	7 	7	7 	7
	7 	7s   !C4CCC&c                    t        ddd      }t        |j                  j                  dd      t	        t        d            d      }t        |ft        t        j                  d            t        dg      g	      }|j                  t        g d
      d      }t        j                  ||j                        }t        |d   |d   |d   ggg d
dg      }t        j                  ||       y )N2020rv   rB  rC  r5   rg   ra   rk   r  r   r   r  r  ri   )columnsindex)r   r   r   r   r   r   r   r   r9   r:   r  r
   r  r   r*   r  )r   rF  r   r'   r  r   r   s          r!   test_period_reindex_axisz+TestCanHoldElement.test_period_reindex_axis*  s    &!#6((A.uQx0HqQ3&biil0CUC5\/RS$$U9%5A$>	$$YY^^Dr!ubeRU34iPSuU
fh/r#   r  c                     |j                   j                  d   }|r|j                  |      sJ y |j                  |      rJ y r   )r   r   r,  )r   objr;  r  r   s        r!   check_can_hold_elementz)TestCanHoldElement.check_can_hold_element4  sB    hhooa ((...,,T2222r#   rR  c                    |j                   j                         }t        |d      }| j                  |||       t	        |      r||d<   n||d t        |       |r|j                  |u sJ y |j                  t        k(  sJ y )NF)r@   r   )	r   r@   r   rV  r   r?   _valuesr-   rV   )r   r;  rR  r  rA   sers         r!   r:  z'TestCanHoldElement.check_series_setitem;  sy    kk Su%##Cw7T?CF#C#d);;#%%%99&&&r#   N)r   r   r   r   fixturer*  r0  r   r   r9   rN  uint64r-  r4  r?  rG  rN  rS  r\   rV  r   r:  r&   r#   r!   r  r    s    V^^#&#	
: [[WrxxBJJ&GH) I) [[WrxxBJJ&GH/ I/:)7$03 3' ' 'r#   r  c                       e Zd Zd Zy)TestShouldStorec                 F   t        g d      }t        |      }|j                  j                  d   }|j	                  |      sJ |j	                  |d d       sJ |j	                  |j                               rJ |j	                  t        j                  |            rJ y )N)rY   BCr   ro   )r	   r
   r   r   should_store
as_orderedr9   r  )r   catr   r   s       r!   test_should_store_categoricalz-TestShouldStore.test_should_store_categoricalM  s    /*s^ggnnQ $$$CR))) ##CNN$4555 ##BJJsO4444r#   N)r   r   r   rd  r&   r#   r!   r]  r]  L  s    5r#   r]  c                  >   t        j                  ddg      } t        t        d            }d}d}t	        j
                  t        |      5  t        j                  t        |      5  t        | |d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr  r  rg   z:Wrong number of dimensions. values.ndim != ndim \[1 != 2\]make_block is deprecatedr   ra   )r9   r   r   r   r   r   r   r*   assert_produces_warningr   r   )r,   r|   r  depr_msgs       r!   test_validate_ndimri  ]  s    XXsCj!FuQx(I
GC)H	z	- 2''hG 	2vyq1	22 2	2 	22 2s$   B'B6BB	BBc                  Z   t        g d      } t        g d      j                  |       }t        t        g d            j                  |       }|j                  j
                  d   j                  j                  |j                  j
                  d   j                  j                  k(  sJ y )N)r   r5   rg   rh   ri   r  r   )r   r   reindexr	   r   r   r/   r  )r.  rk   r[   s      r!   test_block_shaperl  h  s{    

 Cy!!#&A{9%&..s3A66==$$,,a0@0I0I0Q0QQQQr#   c                    t         j                  j                  t        j                  ddg            }d}| t
        u rt        nd }t        j                  ||      5   | |t        t        t        |                  |j                        }d d d        j                  j                  dv sJ | t
        u r|j                  du sJ t        j                  ||      5   | |t        t        |            |j                  |j                        }d d d        |j                  j                  dv sJ |j                  du sJ t        j                  ||      5   | |j!                         t        t        |            |j                  |j                        }d d d        |j                  j                  dv sJ |j                  du sJ y y # 1 sw Y   ExY w# 1 sw Y   xY w# 1 sw Y   NxY w)	Nr5   rg   rf  r   ra   )r   uF)r-   rb   )r-  arraysNumpyExtensionArrayr9   r   r   DeprecationWarningr*   rg  r   r   r?   rb   r-   kindis_extensionto_numpy)r"   rA   rh  warnr   s        r!   test_make_block_no_pandas_arrayrv  p  s   
))
'
'!Q(8
9C)H!,
!:D 
	#	#D	9 RS.s3x"AQR<<
***j ""e+++ ''H= 	W eCHoSYYSXXVF	W||  J...""e+++ ''H= 	 c#hsyysxxF	 ||  J...""e+++# !	R R	W 	W	 	s%   1G!3GAG+GG(+G4r)   )Ar   r   r  r   numpyr9   r   pandas._libs.internalsr   pandas.compatr   pandas.errorsr   pandas.core.dtypes.commonr   pandasr-  r	   r
   r   r   r   r   r   r   r   pandas._testing_testingr*   pandas.core.algorithmscore
algorithmsr  pandas.core.arraysr   r   r   pandas.core.internalsr   r   r   pandas.core.internals.blocksr   r   r   rZ  r"   r'   r3   rB   r}   r   r   r%   r   r   r   r  r  r  r  r]  ri  rl  rv  r&   r#   r!   <module>r     s@    	   1  ( / 
 
 
  & & 
 
  	:./ 0  Q  15) V?r<~ , ,r) r)jw# w#tw wtN) N)bO' O'd5 5"2R,r#   