
    Owg                     L   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c 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j^                  Z0 ejb                  e.e*g
      d        Z2ejb                  d        Z3d Z4d Z5dZ6dd e.fdZ7d$dZ8d$dZ9ejb                  d        Z: G d d      Z; G d d      Z<d Z= G d d      Z> G d d      Z? G d d      Z@ G d d       ZAd! ZBd" ZCd# ZDy)%    )datedatetimeN)BlockPlacement)IS64)	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    \/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/internals/test_internals.pyblock_makerr!   4   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&   <   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_equalr2   E   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)r6   arrs     r    get_numeric_matrA   M   s\    
))E!H
C66**
US\\Odc%j1n6M$M + 
dfr"   
   c                    t        |      }t        |      }|t        f}|f|z   }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   r4   z)must have only 1 num items for a tz-awarei ʚ;)tzndim)	timedeltatdm8[ns]rd   )category)
r4   r4      rf      rg   rg   rg      rh   )	category2)
arj   rj   rj   rZ   rZ   crk   rk   rY   )sparse	sparse_narB   c              3   &   K   | ]	  }|d k(    yw)r4   Nr%   ).0ss     r    	<genexpr>zcreate_block.<locals>.<genexpr>   s     .a16.s   _na        rf   rg   rh         
fill_valuezUnsupported typestr: ""	placementra   )r   r>   NrA   astyper8   reshaperavelonesbool_
startswithresearchgroupsr
   r9   _datar   r   NotImplementedErrorallendswithnanr   	sp_valuesview
ValueErrorr   )typestrr{   
item_shape
num_offsetmaker	num_itemsr6   matr+   imr_   rx   r@   s                 r    create_blockr   W   s   " y)IIIT
L:%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   r8   r9   )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   ;:rf   ,-)r   r   c                      | j                   d   S Nr   )r.   )rZ   s    r    <lambda>zcreate_mgr.<locals>.<lambda>   s    1::a= r"   )key)r|   splitstripr>   	partitionextendlistr8   r9   KeyErrorr   itemsappendr   sortedr   tuple)descrr   offset	mgr_itemsblock_placementsrY   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 )NrD   r   rf   rh   )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 )NrJ   r   )r   r,   r8   int32)self
int32blocks     r    test_constructorzTestBlock.test_constructor   s(    !$,
288+++r"   z	typ, datarD   r   rR      rU   r4   rg   r[   ru   c                 Z    t        ||      }t        t        j                  |      |       y r(   )r   r2   r)   round_trip_pickle)r   typdatablks       r    test_picklezTestBlock.test_pickle  s%     3%2//4c:r"   c                     t        |j                  t              sJ t        j                  |j                  j
                  t        j                  g dt        j                               y )Nr   r\   )	r-   r.   r   r)   r*   r/   r8   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(   )r6   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                 H    |j                         }||usJ t        ||       y r(   )r?   r2   )r   r   cops      r    	test_copyzTestBlock.test_copy  s%    kkm&   63'r"   c                    |j                         }|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                         }|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                         }|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                         }t        j                  t        d       5  |j                  d       d d d        y # 1 sw Y   y xY w)Nr   rf   rh   r\   r4   matchrg   )r?   r.   deleter)   r*   r/   r8   r   r   r+   r   r>   pytestraises
IndexError)r   r   newblocsnbs        r    test_deletezTestBlock.test_delete   s]   {{}}}[[^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   #K>>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   rI   r\   ru   rh   rd   r   r4   rf   r^   rg   )r8   r9   r~   r   r	   _mgrr   r-   r+   r   r   r>   r   )r   r@   dfr   r   s        r    test_delete_datetimelikez"TestBlock.test_delete_datetimelikeJ  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      }|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 )
Nrf   )rg   rh   )rg   r4   rv   rz   irg   r   r4   rv   )r8   randomdefault_rngstandard_normalr   r   _splitr+   r   r>   zipr2   )r   r+   r   resultexpectedresexps          r    
test_splitzTestBlock.test_split_  s    &&q)99&A.*C!L 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      sx    , [[i 1vaSM		
;;
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-2rf   rv   )r$   nblocksr>   r   r&   s     r    r   zTestBlockManager.test_attrst  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        j                  t        |      5  t        ||      }|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   r4   zGaps in blk ref_locsr   )r$   axesr   r   r8   r   r.   r   r   AssertionErrorr   _rebuild_blknos_and_blklocsiget)r   tmp_mgrr   r   msgr&   s         r    test_duplicate_ref_loc_failurez/TestBlockManager.test_duplicate_ref_loc_failurey  s    _-||W^^f+BHHaSM:q	+BHHaSM:q	 %]]>5 	.vt,C++-	. ,BHHaSM:q	+BHHaSM:q	64(	. 	.s   D  D)c                 F   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&   mgr2s      r    r   zTestBlockManager.test_pickle  s    ##C(
#((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  s       r    test_non_unique_picklez'TestBlockManager.test_non_unique_pickle  sR    $##C(
#((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   re   )r$   r)   r   r  r	   r  r   r   assert_series_equalr   _constructor_from_mgr)r   r&   r  smgrsmgr2s        r    test_categorical_block_picklez.TestBlockManager.test_categorical_block_pickle  s    '##C(
#((34995	

 !,$$T*
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abcrf   )rg   rg   rg   r\   )r+   r{   ra   )r   r   r   r4   )r   r   r8   r   r   r   r?   r   r9   r   ra   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rg   r   rY   foorg   r4   barr   r\   rf   )r$   insertr>   r   r8   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  quuxrf   )r  r>   r   r8   zerosr|   r[   r  get_locrepeatr   r,   r  consolidater   r   r   r}   rH   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                        r/|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 )NF)deepT)r?   r   r   r)   assert_equalr+   r-   r8   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}}))SZZ__<<< }}--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$   r/   r,   r8   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: f8rg   )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$   r/   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(   r>  r?  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^   r>  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]r4   zdatetime64[ns, CET]rU   )r$   r   r,   r/   r   s     r    test_as_array_datetime_tzz*TestBlockManager.test_as_array_datetime_tz0  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   r4   rf   z6a,b: object; c: bool; d: datetime; e: f4; f: f2; g: f8ignore)errorsrh   ru   rv   rg   )	r$   r8   r,   r}   r   typer  rJ  
datetime64)r   rG  r&   tmgrs       r    test_astypezTestBlockManager.test_astype6  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                 F   d }t        d      }|j                  d      } |||       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                  d      }|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                  d      }|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_blocksrZ   foundr   obs           r    _comparez/TestBlockManager.test_convert.<locals>._compareS  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: f8Tr?   za,b,foo: object; f: i8; g: f8r   1r\   r4   z2.rf   zfoo.zstring[pyarrow_numpy]rg   rh   zEa,b,foo: object; f: i4; bool: bool; dt: datetime; i: i8; g: f8; h: f2ru   rv   r      )r$   convertr  r8   r   r|   r  r   r,   rJ  r(  r   r   rN  rO  rH  )r   using_infer_stringr[  r&   rV  r,   s         r    test_convertzTestBlockManager.test_convertR  s   	0 (++4+(g 89BHHcUQYbjj9:BHHdVaZrzz:;BHHfX\<=++4+(+='2::||A$$---||A$$---||A$$---||A$$000||A$$

222S
 	BHHcUQYbjj9:BHHdVaZrzz:;BHHfX\<=++4+(||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)rE   rI   rU   r[   rR   r^   rd   za: z; b: r>  )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  rI   )za: category; b: categoryrI   )a: category; b: category2rU   )a: category2rU   )za: category2; b: category2rU   )a: f8rE   )a: f8; b: i8rE   )a: f4; b: i8rE   )a: f4; b: i8; d: objectrU   )a: bool; b: i8rU   )
a: complexrR   )a: f8; b: categoryrU   )a: M8[ns]; b: categoryrU   )a: M8[ns]; b: boolrU   )a: M8[ns]; b: i8rU   )a: m8[ns]; b: boolrU   )a: m8[ns]; b: i8rU   )a: M8[ns]; b: m8[ns]rU   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  rI   rd  rU   re  rf  rE   rg  rh  ri  rj  rk  rR   rl  rm  rn  ro  rp  rq  rr  r>  r?  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frf   rY   rZ   ghrh   r4   r   r\   )r  r   r%  r8   r   r   r   r|   r'  r   get_numeric_datar-   r   r.   r   r)   r*   r/   r9   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)rw  rk   rj   rY   r   axisrv   rf   r4   rg   )
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                    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
       |rbt        j                  |j                  |j                  j                  d            j                         t        j                  g d             y 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  ru   r4   rf   rg   r\   )rH   rD   rR   r[   rD   )      Y@g      i@g     r@Tinplace)      ?r  r  )r$   r  r8   r   r  ry  r)   r  r   r   r  r   r%  r  )r   using_copy_on_writer&   numerics       r    test_get_numeric_dataz&TestBlockManager.test_get_numeric_data  sk   A

 	BHHYbjj9:&&(
gmmU3V-WX
HHSYY&&w/0@@BLL..w78HHJ	
 	MM!!'*HH*+ 	 	

 ""**734DDF)
 ""**734DDF./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	
       |rbt        j                  |j                  |j                  j                  d            j                         t        j                  g d             y t        j                  |j                  |j                  j                  d            j                         t        j                  g d             y )Nr  r  r  rv   )TFTr\   r[   r   Tr  )TTT)r$   r  r8   r   r  get_bool_datar)   r  r   r   r  r   r%  r  r*   )r   r  r&   boolss       r    test_get_bool_dataz#TestBlockManager.test_get_bool_data  sT   A

 	BHH0

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

 	

1bhh23T
B''**623CCE+,
 ''**623CCE,-r"   c                 ,    t        t        d             y )Nu   b,א: object)reprr$   )r   s    r    test_unicode_repr_doesnt_raisez/TestBlockManager.test_unicode_repr_doesnt_raise4  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 )Nrn   )r$   r   r   r   equals)r   r  bm1bm2s       r    test_equalszTestBlockManager.test_equals7  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 )NrE   ru   )r   )rt   r         @g      @g      @)r   external_valuestolistr   s     r    test_single_mgr_ctorz%TestBlockManager.test_single_mgr_ctorS  s/    q1""$++-1JJJJr"   valuer4   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   r4   rf   r  )r$   rN  r   r   r   r   replace_list)r   r  r  r   s       r    test_validate_bool_argsz(TestBlockManager.test_validate_bool_argsW  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   r4   r   rJ  r   r\   )r   r   r   r4   rf   )r$   _iset_split_blockr8   r   r)   r*   blklocsr   blknosr>   r   r   r  s     r    test_iset_split_blockz&TestBlockManager.test_iset_split_blockb  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   rB   r  rJ  r   r\   )r   rf   rf   r4   rg   )r$   r  r8   r   r   ranger)   r*   r  r   r  r>   r   r  s     r    test_iset_split_block_valuesz-TestBlockManager.test_iset_split_block_valuesn  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   r9  r;  r8   rI  r(  r@  r   rJ  r   rB  rD  rF  rQ  ra  rc  rt  r{  r  r  r  r  r  r  r  r  r  r  r%   r"   r    r   r   s  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
"
.@6- [[13MN [[	
	&	&K [[Wq&)S&AB6 C6
#
#r"   r   c                 t    | j                   dk(  r| j                         S | j                         j                  S )Nr4   )ra   r  r/   T)r&   s    r    	_as_arrayr  {  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)TestIndexingrE   rI   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}  r4   r   Fcheck_dtype)r  r-   r8   r.  r   r>   concatenater$  r[   r   	get_slicera   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"   rf   rg   d   r4   rh   r   r\   )TTF)
ra   r  r   r8   r   r6   r   r$  r9   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*   r8   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   rg   r   r4   rf   rn   r  )r  ra   r8   r   r   r   r6   )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"   rx   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 Nrw   Fr  )	r  r   get_indexer_forr  r)   r*   algostake_ndr  )r&   r~  
new_labelsrx   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"  rg   r  rn   )r   r4   rf   r   r4   rf   )r  ra   r   r   r6   )r   rx   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  rx   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  rn   r  r  )rn   r   rn   r   r"  )rn   rn   rn   rg   r  )	r  ra   r   r8   r   r   r   r9   r6   )r   rx   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  r8   r   r  r  r%   r"   r    r  r    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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   rh   rf   rg   r4   rn   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_raisesI  s2    )]]:S1 	 3	  	  	    3<c                 l    t        ddd      }t        |      }|j                  t        dd d      k(  sJ y )Nrg   rn   r  )r   r   r  )r   r  bps      r    !test_slice_canonize_negative_stopz4TestBlockPlacement.test_slice_canonize_negative_stopO  s5    Ar2C zzU1dB////r"   NrB   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_raisesV  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_slicesl  s     "#&44444r"   zarr, slce   r  )r   ru   rB      ru      c                 8    t        |      j                  |k(  sJ y r(   )r   as_slice)r   r@   r  s      r    test_array_to_slice_conversionz1TestBlockPlacement.test_array_to_slice_conversiony  s     c"++s222r"   r@   r  )rn   r   r4   rf   )r  r   rf   rh   )r4   r   rn   )r4   r4   r4   c                 2    t        |      j                  rJ y r(   r  )r   r@   s     r    test_not_slice_like_arraysz-TestBlockPlacement.test_not_slice_like_arrays  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)rg   rf   r4   c                     t        j                  t        |      j                  t	        j
                  |t        j                               y )Nr\   )r)   r*   r   r/   r8   asarrayr   )r   r  r@   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   ru   r4   rv   rB   rf   rn   )ru   ru   ru   ru   ru   )r   r   addr  r8   r9   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  )r4   rf   rh   )         )r  r  r  )r  r     )r   r4   rg   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  ;  sL   [[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D
	
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efdZdedefdZy)TestCanHoldElementc                     | S r(   r%   r5   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}   rU   r  s    r    r   zTestCanHoldElement.<lambda>  s    ahhv& r"   c                 ,    t        j                  |       S r(   )r8   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  rB   zLvalue should be a 'Timestamp', 'NaT', or array of those. Got 'date' instead.r   )r   _can_hold_elementpdr   r+   r   NaTr8   rO  r   r   r   r   r  )r   r  r@   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)r4   rg   rh   r\   r4   rf   r`   )r8   r   r   from_breaksr   r   r   r)  )r   r,   r'  r@   iir   s         r    (test_interval_can_hold_element_emptylistz;TestCanHoldElement.test_interval_can_hold_element_emptylist  sO    hhy.&&s+.!"5A>$$R(((r"   c                 *   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              5  | j                  ||d
       d d d        |j                  |      rJ t        j                  t        d      t        d      t        d      g      } ||      }t        j                  t              5  | j                  ||d
       d d d        |j                  |      rJ t        j                  t        d      t        d      t        d      g      }	 ||	      }t        j                  t              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)r4   rg   rh   	   r\   r4   rf   r`   Trn   neither)closedFrg   rh   )r8   r   r   r/  r   r   r   check_series_setitemr)  r)   assert_produces_warningFutureWarningr   r   )
r   r,   r'  r@   r0  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|''6 	7%%dB6	7((...''1y|Yq\(RSs|''6 	7%%dB6	7((...''1y|Yq\(RSs|''6 	7%%dB6	7((....	7 	7	7 	7	7 	7s$   :G0=G= H	0G:=H	Hc                     t        ddd      }t        |j                  j                  dd      t	        dg      d      }|j                  g       sJ y )N2016rg   Yperiodsfreqr4   rf   r`   )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
              5  | j                  ||d       d d d        |j                  d	      d d } ||      }t        j                  t
              5  | j                  ||d       d d d        y # 1 sw Y   [xY w# 1 sw Y   y xY w)
Nr?  rg   r@  rA  TDrn   Frq   )r   r6  asfreqr)   r7  r8  to_timestamp)r   r'  rD  r9  pi2dtis         r    test_period_can_hold_elementz/TestCanHoldElement.test_period_can_hold_element+  s    &!#6r{!!$D1 iinSb!s|''6 	7%%dB6	7 ooc"3B's|''6 	7%%dB6	7 	7	7 	7
	7 	7s   C0CCC"r  c                     |j                   j                  d   }|r|j                  |      sJ y |j                  |      rJ y r   )r   r   r)  )r   objr9  r  r   s        r    check_can_hold_elementz)TestCanHoldElement.check_can_hold_element=  sB    hhooa ((...,,T2222r"   indexc                    |j                   j                         }t        |d      }| j                  |||       t	        |      r||d<   n||d t        |       |r|j                  |u sJ y |j                  t        k(  sJ y )NFr\  r   )	r   r?   r   rO  r   r>   r   r,   rU   )r   r9  rP  r  r@   sers         r    r6  z'TestCanHoldElement.check_series_setitemD  sy    kk Su%##Cw7T?CF#C#d)99###99&&&r"   N)r   r   r   r   fixturer'  r-  r   r   r8   rJ  uint64r(  r1  r=  rE  rL  r[   rO  r   r6  r%   r"   r    r  r    s    V^^#&#	
: [[WrxxBJJ&GH) I) [[WrxxBJJ&GH/ I/:)7$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)rX   BCr   rn   )r   r	   r   r   should_store
as_orderedr8   r
  )r   catr   r   s       r    test_should_store_categoricalz-TestShouldStore.test_should_store_categoricalV  s    /*s^ggnnQ $$$CR))) ##CNN$4555 ##BJJsO4444r"   N)r   r   r   r]  r%   r"   r    rV  rV  U  s    5r"   rV  c                      t        j                  ddg      } t        t        d            }d}t	        j
                  t        |      5  t        | |d       d d d        y # 1 sw Y   y xY w)Nr  r  rf   z:Wrong number of dimensions. values.ndim != ndim \[1 != 2\]r   r`   )r8   r   r   r   r   r   r   r   )r+   r{   r   s      r    test_validate_ndimr_  f  sV    XXsCj!FuQx(I
GC	z	- .691-. . .s   	A!!A*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   r4   rf   rg   rh   r  r   )r   r   reindexr   r   r   r.   r  )r)  rj   rZ   s      r    test_block_shaperb  o  s{    

 Cy!!#&A{9%&..s3A66==$$,,a0@0I0I0Q0QQQQr"   c           
         t         j                  j                  t        j                  ddg            } | |t        t        t        |                  |j                        }|j                  j                  dv sJ | t        u r|j                  du sJ  | |t        t        |            |j                  |j                        }|j                  j                  dv sJ |j                  du sJ  | |j                         t        t        |            |j                  |j                        }|j                  j                  dv sJ |j                  du sJ y y )Nr4   rf   r`   )r   uF)r,   ra   )r*  arraysNumpyExtensionArrayr8   r   r   r   r>   ra   r,   kindr   is_extensionto_numpy)r!   r@   r   s      r    test_make_block_no_pandas_arrayrj  w  s$   
))
'
'!Q(8
9C nU3s8_=CHHMF<<
***j ""e+++ S%C/R||  J...""e+++ LLNE#c(O399388
 ||  J...""e+++ !r"   r(   )Er   r   r  r   numpyr8   r   pandas._libs.internalsr   pandas.compatr   pandas.util._test_decoratorsutil_test_decoratorsrc   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   skip_array_manager_invalid_test
pytestmarkrS  r!   r&   r2   rA   r|   r   r   r$   r   r   r   r  r  r  r  rV  r_  rb  rj  r%   r"   r    <module>r}     sP    	   1  ) ) / 
 
 
  & & 
 
  //
 	:./ 0  Q  15) V?r<~ , ,r) r)jE# E#Pw wtO) O)dE' E'P5 5".R,r"   