
    bMh                     b   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j1        e.e*g
          d             Z2ej1        d             Z3d Z4d Z5dZ6dd e.fdZ7d$dZ8d$dZ9ej1        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# ZDdS )%    )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    e/var/www/html/test/jupyter/venv/lib/python3.11/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                 *   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                   d S N)tmassert_numpy_array_equalvaluesdtype
isinstancemgr_locsr   as_array)leftrights     r    assert_block_equalr2   E   s    U\::::$$$$dm^44444enn55555 68OPPPPPr"   c           	          t          j        | d                   }t           j        j                            || |j        fdt          |           dz
  z  z                                             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6**
US\Odc%jj1n6M$M +  
dffr"   
   c                    t          |          }t          |          }|t          f}|f|z   }t          |          }| dv r|                    |           |z   }nH| dv rd|                    |           |z   z  }n'| dv r6t          j        d |                                |z   D             |          }n| dv r"t          j        |t
          j	                  }n| d	v r|d
z                      d          }n| 
                    d          rt          j        d|           }	|	J d|              |	                                d         }
|dk    s
J d            t          t          j        t                    dz  |
          j        }t#          |t          |                    }n| dv r|dz                      d          }n| dv rt%          g d          }n| dv rt%          g d          }n| dv r|d         dk    rt&          t)          d |dd         D                       sJ |                     d          rt
          j        }nd }t/          ||dd!d"|d#d$|d%g
|&          }|j                                        }||dz
  z  }nt5          d'|  d(          t7          |          } |||t          |          )          S )*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Oc                     g | ]}d |d	S )Adr%   ).0is     r    
<listcomp>z create_block.<locals>.<listcomp>   s     III1YYYYIIIr"   )bboolr,   )r   dtM8[ns]g    eArb   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]rh   )category)
r4   r4      rj      rk   rk   rk      rl   )	category2)
arn   rn   rn   r^   r^   cro   ro   rZ   )sparse	sparse_narB   c              3   "   K   | ]
}|d k    V  dS )r4   Nr%   )r[   ss     r    	<genexpr>zcreate_block.<locals>.<genexpr>   s&      ..a16......r"   _na        rj   rk   rl         
fill_valuezUnsupported typestr: ""	placementre   )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+   mrc   r{   r@   s                r    create_blockr   W   s)   " y))IIIT
L:%E
%
 
 C     G$$z1	,	,	,G,,z9:	-	-	-II		j0HIII5QQ	M	!	!bh///	0	0	0)##H--			G	$	$ >I0'::}}BBB}}}XXZZ]A~~~J~~~ry||e3;;;A#FU<<<	1	1	1'!!(++	M	!	!;;;<<	N	"	"OOOPP	+	+	+9??%%..5":........E"" 	JJJQ1j!Q
AN!
 
 
 ##%%zA~<'<<<=== ((F593u::>>>>r"   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      sP    Wa(:(:rJJJbi!!""  r"   c           	         |t           f}d}g }i }|                     d          D ]}|                                }t          |          s'|                    d          ddd         \  }}|                                }|                                                    d          }|                    |           t          t          j        t          |                    |z             }	 ||                             |           n# t          $ r |||<   Y nw xY w|t          |          z  }t          |          }g }	d}
|                                D ]X\  }}|                    d          d         }|	                    t          ||||
                     |
t          |          z  }
Yt          |	d	 
          }t          t!          |          |gd |D             z             S )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   ;:rj   ,-)r   r   c                     | j         d         S Nr   )r.   )r^   s    r    <lambda>zcreate_mgr.<locals>.<lambda>   s    1:a= r"   )keyc                 P    g | ]#}t          t          j        |                    $S r%   )r   r8   r9   )r[   ns     r    r]   zcreate_mgr.<locals>.<listcomp>   s(    ???quRYq\\**???r"   )r   splitstripr>   	partitionextendlistr8   r9   KeyErrorr   itemsappendr   sortedr   tuple)descrr   offset	mgr_itemsblock_placementsrZ   namesblockstrr~   blocksr   r   sblockss                r    r$   r$      s   * T
FI[[  GGII1vv 	++c**33Q3/x>>####C((3u::..788		3X&--i8888 	3 	3 	3)2X&&&	3#e**i  IFJ/5577 % %)..%%a(zj  	
 	
 	

 	c)nn$

V!8!8999Gg	??J????  s   0DDDc                  &    t          dg d          S )NrD   r   rj   rl   )r   r%   r"   r    fblockr      s    +++r"   c                       e Zd Zd Ze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dS )	TestBlockc                 V    t          ddg          }|j        t          j        k    sJ d S )NrJ   r   )r   r,   r8   int32)self
int32blocks     r    test_constructorzTestBlock.test_constructor   s/    !$,,
28++++++r"   z	typ, datarD   r   rR      rU   r4   rk   r_   rx   c                 j    t          ||          }t          t          j        |          |           d S r(   )r   r2   r)   round_trip_pickle)r   typdatablks       r    test_picklezTestBlock.test_pickle  s4     3%%2/44c:::::r"   c                     t          |j        t                    sJ t          j        |j        j        t          j        g dt          j                             d S )Nr   r`   )	r-   r.   r   r)   r*   r/   r8   arrayintpr   r   s     r    test_mgr_locszTestBlock.test_mgr_locs  sX    &/>:::::
#O$bhyyy&H&H&H	
 	
 	
 	
 	
r"   c                     |j         |j        j         k    sJ |j        |j        j        k    sJ t          |          t          |j                  k    sJ d S r(   )r6   r+   r,   r>   r   s     r    
test_attrszTestBlock.test_attrs  sY    |v}22222|v}222226{{c&-00000000r"   c                 Z    |                                 }||usJ t          ||           d S r(   )r?   r2   )r   r   cops      r    	test_copyzTestBlock.test_copy  s6    kkmm&    63'''''r"   c                    |                                 }|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    
                                rJ |j	        d         dk    
                                s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    
                                rJ |d         j	        d         dk    
                                sJ |                                 }|                    d          }t          |          dk    sJ t          j        |d         j        j        t          j        ddgt          j                             |d         j	        d         dk    
                                sJ |                                 }t          j        t          d           5  |                    d           d d d            d S # 1 swxY w Y   d S )Nr   rj   rl   r`   r4   matchrk   )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}$$$$~~~~
#K "(Aq6"A"A"A	
 	
 	
 KNa',,.....	!!&&((((({{}}}[[^^2ww!||||}$$$$
#qEN#RXqc%A%A%A	
 	
 	
 	#qEN#RXqc%A%A%A	
 	
 	
 KNa',,.....1Q1$))+++++{{}}[[^^2ww!||||
#qEN#RXq!fBG%D%D%D	
 	
 	
 1Q1$))+++++{{}}]:T222 	 	KKNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   K99K= K=c                 V   t          j        dd                              dd                              d          }t	          |          }|j        j        d         }t          |j        t                    sJ |
                    d          }t          |          d	k    sJ t          |d         j        t                    sJ t          |d         j        t                    sJ t	          |                    d
                    }|j        j        d         }t          |j        t                    sJ |
                    ddg          }t          |          d	k    sJ t          |d         j        t                    sJ t          |d         j        t                    sJ d S )N   rI   r`   rx   rl   rh   r   r4   rj   rb   rk   )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  sd   i$'''//155::8DDs^^gnQ#*n55555ZZ]]2ww!||||"Q%,77777"Q%,77777sxx))**gnQ#*m44444ZZA2ww!||||"Q%,66666"Q%,6666666r"   c                 ~   t           j                            d                              d          }t	          |t          g d          d          }|                                }d|d d <   |j        dk                                    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          ||           d S )
Nrj   )rk   rl   )rk   r4   ry   r}   irk   r   r4   ry   )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A.*C*C!LLL qqq	
e#((*****6{{afaSk^QC-@-@qIIIfaSk^QC-@-@qIIIfaSk^QC-@-@qIII

 FH-- 	) 	)HCsC((((	) 	)r"   N)__name__
__module____qualname__r   r   markparametrizer   r   r   r   r   r   r   r%   r"   r    r   r      s        , , , [iii 1vaSM		
 ; ; ;
 
 
1 1 1
( ( (
( ( (T7 7 7*) ) ) ) )r"   r   c                   B   e Zd Zd Zd Zd Zej                            dddg          d             Z	d Z
d	 Zd
 Zd Zd Zd Zd Zej                            ddej        fdej        fg          d             Zej                            ddej        fdej        fdej        fg          d             Zd Zd Zej                            dg d          d             Zd Zd Zej                            dg d          d             Zd  Zd! Z d" Z!d# Z"d$ Z#ej                            dd%d&g          d'             Z$ej                            dg d(          d)             Z%d* Z&ej                            d+d,d-g d.d/g          d0             Z'd1 Z(d2 Z)d3S )4TestBlockManagerc                 h    t          d          }|j        dk    sJ t          |          dk    sJ d S )Nza,b,c: f8-1; d,e,f: f8-2rj   ry   )r$   nblocksr>   r   r&   s     r    r   zTestBlockManager.test_attrst  s:    344{a3xx1}}}}}}r"   c                    t          d          }|j        |j        }}t          t	          j        dg                    |d         _        t          t	          j        dg                    |d         _        d}t          j        t          |          5  t          ||          }|                                 d d d            n# 1 swxY w Y   t          t	          j        dg                    |d         _        t          t	          j        dg                    |d         _        t          ||          }|                    d           d S )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  sJ   _--|W^f+BHaSMM::q	+BHaSMM::q	 %]>555 	. 	.vt,,C++---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. ,BHaSMM::q	+BHaSMM::q	64((s   %CC
C
c                 (   t          j        |          }t          j        t          j        ||j                  t          j        ||j                             t          |d          sJ t          |d          sJ |j        rJ |j        rJ d S )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3349555	
 	
 	
 t/00000t233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                             d S )Nr  )r$   r)   r   r  r	   r  r   )r   r
  r&   r	  s       r    test_non_unique_picklez'TestBlockManager.test_non_unique_pickle  sh    $$#C((
#(33349555	
 	
 	
 	
 	
r"   c                    t          d          }t          j        |          }t          j        t	          j        ||j                  t	          j        ||j                             t          d          }t          j        |          }t          j        t                      
                    ||j                  t                      
                    ||j                             d S )Na: categoryr  ri   )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3349555	
 	
 	

 !,,$T**
HH**4di*@@HH**5uz*BB	
 	
 	
 	
 	
r"   c           	      0   t          t          d                    }t          j                            d                              d          }t          |                                t          t          j        dt          j	                            |j
                  }t          |f|t          t          j        d                    g          }t          j        |                    d                                          |d                    t          j        |                    d	                                          |d	                    t          j        |                    d                                          |d                    d S )
Nabcrj   )rk   rk   rk   r`   )r+   r~   re   )r   r   r   r4   )r   r   r8   r   r   r   r?   r   r9   r   re   r   r)   assert_almost_equalr   internal_values)r   colsr+   blockr&   s        r    	test_igetzTestBlockManager.test_iget  s0   T%[[!!&&q))0088;;==$RYq%@%@%@AA
 
 

 5($bill8K8K1LMMM
sxx{{::<<fQiHHH
sxx{{::<<fQiHHH
sxx{{::<<fQiHHHHHr"   c                    t          dd          }|                    t          |j                  dt	          j        dgdz                       |                    dt	          j        dgdz                       t          j        |	                    d	          
                                t	          j        d	gdz                       t          j        |	                    d          
                                t	          j        dgdz  t          j        
                     t          j        |	                    d          
                                t	          j        dgdz                       t          j        |	                    d          
                                t	          j        dgdz  t          j        
                     d S )Nz
a,b,c: intrk   r   rZ   foork   r4   barr   r`   rj   )r$   insertr>   r   r8   r   isetr)   r*   r   r  object_r   s     r    test_setzTestBlockManager.test_set  st   $777

3sy>>3%1(=(=>>>BHeWq[))***
#CHHQKK$?$?$A$A28QCRSGCTCTUUU
#HHQKK''))28UGaKrz+R+R+R	
 	
 	
 	#CHHQKK$?$?$A$A28QCRSGCTCTUUU
#HHQKK''))28UGaKrz+R+R+R	
 	
 	
 	
 	
r"   c                    |                     t          |j                  dt          j        t
          t                               |                    |j                            d          t          j	        dt
                               |j                            d          }|
                    |          j        t          j        k    sJ |                                }|                    |j                            d          t          j	        dt
                               |j                            d          }|
                    |          j        t          j        k    sJ |                     t          |j                  dt          j                            d                              t
                                        t$                               |j                            d          }|
                    |          j        t          j        t$                    k    sJ |                    |j                            d          t          j                            d                              t
                               |
                    |          j        t          j        k    sJ d S )Nbazr`   r  quuxrj   )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
   

3sy>>5"(1D*A*A*ABBB""5))29UA+>+>???i&&xx}}"bj0000  		$*$$U++RYua-@-@AAAj  ''yy~~#rz1111
OOI!!!$$44Q77>>sCC	
 	
 	

 j  ((yy~~#rx}}4444		Jv&&	(=(=a(@(@(P(PQR(S(S	
 	
 	
 yy~~#rz111111r"   c                 V   |                     d          }t          |j        |j                  D ]\  }}t          j        |j        |j                   t          |j        t          j                  r|j        j	        |j        j	        u sJ ^|j        j
        j	        |j        j
        j	        u s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sJ t          |t          j                  s||usJ ||J d S )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!!sz2955 	O 	OKCOFM3:666#*bj11 O})SZ_<<<<< }-2cj6I6NNNNNN 	  """XX4X  sz2955 	7 	7KCJE]FOFE***&"*-- ,
,+ &-00 7%-U%=O=O=O=O
33 7E)))))})	7 	7r"   c                 v    t          d          }|                                j        t          j        k    sJ d S )Nza: sparse-1; b: sparse-2)r$   r/   r,   r8   r+  r   s     r    test_sparsezTestBlockManager.test_sparse  s4    344||~~#rz111111r"   c                     t          d          }t          |j                  dk    sJ t          |t                    sJ d S )Nza: sparse-1; b: sparse-2; c: f8rk   )r$   r>   r   r-   r   r   s     r    test_sparse_mixedz"TestBlockManager.test_sparse_mixed  sE    :;;3:!#####|,,,,,,,r"   zmgr_string, dtypezc: f4; d: f2c: f4; d: f2; e: f8c                 b    t          |          }|                                j        |k    sJ d S r(   r$   r/   r,   r   r
  r,   r&   s       r    test_as_array_floatz$TestBlockManager.test_as_array_float  s3    
 $$||~~#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                 b    t          |          }|                                j        |k    sJ d S r(   rA  rB  s       r    test_as_array_int_boolz'TestBlockManager.test_as_array_int_bool   s3     $$||~~#u,,,,,,r"   c                 b    t          d          }|                                j        dk    sJ d S )Nzh: datetime-1; g: datetime-2rb   rA  r   s     r    test_as_array_datetimez'TestBlockManager.test_as_array_datetime,  s2    788||~~#x//////r"   c                     t          d          }|                    d          j        dk    sJ |                    d          j        dk    sJ |                                j        dk    sJ d S )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  sp    @AAxx{{ $@@@@@xx{{ $99999||~~#x//////r"   t)float16float32r+  r   int64c                 x   t          d          }t          j        |          }|                    |          }|                    d          j        j        |k    sJ |                    d          j        j        |k    sJ |                    d          j        j        |k    sJ t          d          }t          j        |          }|                    |d          }|                    d          j        j        |k    sJ |                    d          j        j        |k    sJ |                    d	          j        j        |k    sJ |                    d
          j        j        |k    sJ |                    d          j        j        t          j        k    sJ |                    d          j        j        t          j        k    sJ |t          j        k    r1|                    d          j        j        t          j        k    sJ d S |                    d          j        j        |k    sJ d S )Nr?  r   r4   rj   z6a,b: object; c: bool; d: datetime; e: f4; f: f2; g: f8ignore)errorsrl   rx   ry   rk   )	r$   r8   r,   r   r   typer"  rM  
datetime64)r   rJ  r&   tmgrs       r    test_astypezTestBlockManager.test_astype6  s    .//HQKKzz!}}yy||!&!++++yy||!&!++++yy||!&!++++ QRRHQKKzz!Hz--yy||!&!++++yy||!&!++++yy||!&!++++yy||!&!++++yy||!&"*4444yy||!&"*4444==99Q<<%*bm;;;;;;99Q<<%*a//////r"   c                 0   d }t          d          }|                    d          } |||           t          d          }|                    dt          j        dgt
          z  t          j                             |                    d	t          j        d
gt
          z  t          j                             |                    dt          j        dgt
          z  t          j                             |                    d          }|rdnt          j        }|                    d          j        |k    sJ |                    d	          j        |k    sJ |                    d          j        |k    sJ |                    d          j        t          j	        k    sJ |                    d          j        t          j
        k    sJ t          d          }|                    dt          j        dgt
          z  t          j                             |                    d	t          j        d
gt
          z  t          j                             |                    dt          j        dgt
          z  t          j                             |                    d          }|                    d          j        |k    sJ |                    d	          j        |k    sJ |                    d          j        |k    sJ |                    d          j        t          j        k    sJ |                    d          j        t          j        k    sJ |                    d          j        j        sJ t          j                    |                    d          j        t          j	        k    sJ |                    d          j        t          j
        k    sJ |                    d          j        t          j        k    sJ d S )Nc                 r   t          | j                  }t          |j                  }t          |          t          |          k    sJ |D ]3}d}|D ](}|j        |j        k                                    rd} n)|sJ 4|D ]3}d}|D ](}|j        |j        k                                    rd} n)|sJ 4dS )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>._compareS  s   W^,,JW^,,Jz??c*oo5555    $  BBI-2244  $   $  BBI-2244  $  r"   zf: i8; g: f8Tr?   za,b,foo: object; f: i8; g: f8r   1r`   r4   z2.rj   zfoo.strrk   rl   zEa,b,foo: object; f: i4; bool: bool; dt: datetime; i: i8; g: f8; h: f2rx   ry   r      )r$   convertr!  r8   r   r   r"  r   r,   rM  r+  r   r   rQ  rR  rK  )r   using_infer_stringr^  r&   rY  r,   s         r    test_convertzTestBlockManager.test_convertR  sa   	 	 	0 ((++4+((g 899BHcUQYbj999:::BHdVaZrz:::;;;BHfX\<<<===++4+((+;||A$----||A$----||A$----||A$0000||A$
2222S
 
 	BHcUQYbj999:::BHdVaZrz:::;;;BHfX\<<<===++4+((||A$----||A$----||A$----||A$0000||A$0000||A$)882=888||A$0000||A$
2222||A$
222222r"   c                     dD ]g}t          d|           }|                                j        |k    sJ t          d| d|           }|                                j        |k    sJ hd S )N)rE   rI   rU   r_   rR   rb   rh   za: z; b: rA  )r   r,   r&   s      r    test_interleavez TestBlockManager.test_interleave  s    R 	1 	1E]5]]++C<<>>'500006566u6677C<<>>'500000		1 	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                    t          d          }|                                j        dk    sJ t          d          }|                                j        dk    sJ t          d          }|                                j        dk    sJ t          d          }|                                j        dk    sJ t          d          }|                                j        dk    sJ t          d	          }|                                j        dk    sJ t          d
          }|                                j        dk    sJ t          d          }|                                j        dk    sJ t          d          }|                                j        dk    sJ t          d          }|                                j        dk    sJ t          d          }|                                j        dk    sJ t          d          }|                                j        dk    sJ t          d          }|                                j        dk    sJ t          d          }|                                j        dk    sJ t          d          }|                                j        dk    sJ t          d          }|                                j        dk    sJ d S )Nr  rI   rh  rU   ri  rj  rE   rk  rl  rm  rn  ro  rR   rp  rq  rr  rs  rt  ru  rv  rA  rB  s       r    test_interleave_dtypez&TestBlockManager.test_interleave_dtype  s   2 ''||~~#t++++455||~~#x////((||~~#x//// !!||~~#t++++((||~~#t++++((||~~#t++++233||~~#x////)**||~~#x////&&||~~#y0000-..||~~#t++++122||~~#x////-..||~~#x////+,,||~~#x////-..||~~#x////+,,||~~#x/////00||~~#x//////r"   c                    |                     |j                            d          t          j                            d                              t                               |                     |j                            d          t          j                            d                              t                               |                     |j                            d          t          j                            d                              t                               |                     |j                            d          t          j                            d                              t                               |                     |j                            d          t          j                            d                              t                               |                                }|j	        dk    s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        
                     d S )Nfrj   rZ   r^   ghrl   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)A)Q)QRS)T)TUUU""3'')>)>q)A)A)Q)QRS)T)TUUU""3'')>)>q)A)A)Q)QRS)T)TUUU""3'')>)>q)A)A)Q)QRS)T)TUUU""3'')>)>q)A)A)Q)QRS)T)TUUU   |q      1133|q    $+a.1>BBBBB
#KN#,biDJrw.W.W.W	
 	
 	
 	
 	
r"   c                    t          d          }|                    g dd          }|                                rJ t          j        |j        t          g d                     t          j        |                    d          	                                |                    d          	                                           t          j        |                    d          	                                |                    d          	                                           t          j        |                    d          	                                |                    d          	                                           t          j        |                    d          	                                |                    d          	                                           d S )	Nz3a: f8; b: i8; c: f8; d: i8; e: f8; f: bool; g: f8-2)r{  ro   rn   rZ   r   axisry   rj   r4   rk   )
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O$$%9%9%9$BB	 ,,.....
iou5I5I5I/J/JKKK
HHQKK''))9>>!+<+<+L+L+N+N	
 	
 	
 	HHQKK''))9>>!+<+<+L+L+N+N	
 	
 	
 	HHQKK''))9>>!+<+<+L+L+N+N	
 	
 	
 	HHQKK''))9>>!+<+<+L+L+N+N	
 	
 	
 	
 	
r"   c                 T   t          dd          }|                    dt          j        g dt          j                             |                                }t          j        |j        t          g d                     t          j
        |                    |j                            d                                                    |                    |j                            d                                                               |                    |j                            d          t          j        g d	          d
           |rht          j
        |                    |j                            d                                                    t          j        g d                     d S t          j
        |                    |j                            d                                                    t          j        g d	                     d S )N[int: int; float: float; complex: complex;str: object; bool: bool; obj: object; dt: datetimer  r  rx   r4   rj   rk   r`   )rH   rD   rR   r_   rD   )      Y@g      i@g     r@Tinplace)      ?r  r  )r$   r!  r8   r   r"  r}  r)   r  r   r   r  r   r(  r  )r   using_copy_on_writer&   numerics       r    test_get_numeric_dataz&TestBlockManager.test_get_numeric_data  s   A
 
 

 	BHYYYbj999:::&&((
gmU3V3V3V-W-WXXX
HHSY&&w//00@@BBLL..w7788HHJJ	
 	
 	
 	M!!'**H***++ 	 	
 	
 	

  		"**73344DDFF))    
 "**73344DDFF...//    r"   c                 "   t          dd          }|                    dt          j        g dt          j                             |                                }t          j        |j        t          dg                     t          j
        |                    |j                            d                                                    |                    |j                            d                                                               |                    dt          j        g d          d	
           |rht          j        |                    |j                            d                                                    t          j        g d                     d S t          j        |                    |j                            d                                                    t          j        g d                     d S )Nr  r  r  ry   )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  s   A
 
 

 	BH000
CCCDDD!!##
ek5&??;;;
HHSY&&v..//??AAJJu{**62233CCEE	
 	
 	

 	

1bh22233T
BBB 		'**62233CCEE+++,,    
 '**62233CCEE,,,--    r"   c                 >    t          t          d                     d S )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                  }|                    |          sJ d S )Nrr   )r$   r   r   r   equals)r   r
  bm1bm2s       r    test_equalszTestBlockManager.test_equals7  sK    
 $$3:ddd+SX6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 ]R}t	          t          |          |j                  }|                    |          sJ |                    |          sJ Sd S 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@  s     
##,RY77" 	& 	&G"5>>27;;G99W%%%%%>>"%%%%%%	& 	&r"   c                     t          dd          }|                                                                g dk    sJ d S )NrE   rx   )r   )rw   r         @g      @g      @)r   external_valuestolistr   s     r    test_single_mgr_ctorz%TestBlockManager.test_single_mgr_ctorS  sJ    q111""$$++--1J1J1JJJJJJJr"   valuer4   Truer  g      @c                     t          d          }dt          |          j         d}t          j        t
          |          5  |                    dgdg|           d d d            d S # 1 swxY w Y   d S )Nr  z9For argument "inplace" expected type bool, received type .r   r4   rj   r  )r$   rQ  r   r   r   r   replace_list)r   r  r  r   s       r    test_validate_bool_argsz(TestBlockManager.test_validate_bool_argsW  s    3445!%[[15 5 5 	 ]:S111 	6 	6aS1#u555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6s   A++A/2A/c                    t          d          }|                    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 d S )	Na,b,c: i8; d: f8r   r   r   r4   r   rM  r   r`   )r   r   r   r4   rj   )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!...
#J5QWW'RRR	
 	
 	
 	#Irxt4PGGQQQ	
 	
 	
 29~~""""""r"   c                    t          d          }|                    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 d S )
Nr  r   rB   r  rM  r   r`   )r   rj   rj   r4   rk   )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!rxeBii8I/J/JKKK
#J5QWW'RRR	
 	
 	
 	#Irxt4PGGQQQ	
 	
 	
 29~~""""""r"   N)*r   r   r   r   r  r   r   r   r   r  r  r  r#  r-  r   r<  r>  r8   rL  r+  rC  r   rM  r   rE  rG  rI  rT  re  rg  rx  r  r  r  r  r  r  r  r  r  r  r  r%   r"   r    r   r   s  sn         
  *, , , [\J+GHH
 
 IH

 
 
I I I
 
 
2 2 22#7 #7 #7J2 2 2- - -
 [
"*	%(=rz'JK - -	 - [#RX.4bh?"BH-	
 - - -0 0 00 0 0 [S"U"U"UVV0 0 WV0693 93 93v1 1 1 [	
 	
 	
 .#0 #0/ .#0J
 
 
"
 
 
.  @  6- - - [13MN    [	
 	
 	
	 	& &	 	&K K K [Wq&)))S&ABB6 6 CB6
# 
# 
#
# 
# 
# 
# 
#r"   r   c                 r    | j         dk    r|                                 S |                                 j        S )Nr4   )re   r  r/   T)r&   s    r    	_as_arrayr  {  s0    
x1}}""$$$<<>>r"   c            	       j   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        	                    de          d	             Z
ej        	                    de          d
             Zej        	                    de          ej        	                    ddej        dg          d                         Zej        	                    de          ej        	                    ddej        dg          d                         ZdS )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           
      H   d }|j         dk    sJ |j                     t          |j                   D ]n} |||t          d                       |||t          d                      |||t          d                      |||t          dd                      |||t          ddd                     |j         dk     r |||t          j        |j        |         t          j        	                      |||t          j        |j        |         t          j        	                     |j        |         dk    r^ |||t          j        |j        |                   dz  dk                |||t          j	        g d
t          j        	                     pd S )Nc           	         t          |           }t          |t          j                  r| j        |         }t          |          r{t          |          rlt          |          t          |          k    rLt          j        |t          j        t          |          t          |          z
  t                    g          }t          |t                    r| 
                    ||          }n`| j        dk    rF|dk    r@t          |t          j                  r&|j        t          k    r|                     |          }nt          |          t          d           f|z  |fz   }t          j        ||         t          |          d           t          j        | j        |         |         |j        |                    d S )Nr`   r  r4   r   Fcheck_dtype)r  r-   r8   r1  r   r>   concatenater'  r_   r   	get_slicere   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  s   C..C %,, Xd^r77 s5zz c%jjCGG.C.CNR3u::)=T J J JK E %'' 'u488AAIIubj11 K4''//66  &&&t-8I'I	& 1 1u    !#(4."7T9JKKKKKr"   rj   rk   d   r4   rl   r   r`   )TTF)
re   r  r   r8   r   r6   r   r'  r9   r   )r   r&   r  r  s       r    test_get_slicezTestIndexing.test_get_slice  s   	L 	L 	L@ x1}}}ch}}}// 	 	BOCU4[[111OCU1XX...OCU3ZZ000OCU1a[[111OCU1a__555x!||  R2bh)O)O)OPPPR#)B-rx)P)P)PQQQ9R=A%%#OCRYsy}-E-E-IQ-NOOO#OR*=*=*=RX!N!N!N  #	 	r"   c                 n   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    r\ |||t          j        g dt          j                              |||t          j        g dt          j                             d S )Nc                 <   t          |           }|                     ||          }t          j        t	          j        |||          t          |          d           t          j        | j        |                             |          |j        |                    d S )NFr  )r  taker)   r*   r8   r  r   )r&   r  indexerr   takens        r    assert_take_okz.TestIndexing.test_take.<locals>.assert_take_ok  s    C..CHHWd++E'Wd++Yu-=-=5    !#(4."5"5g">">
4@PQQQQQr"   r`   )r  r   r   r   rk   r   r4   rj   rr   r  )r  re   r8   r   r   r   r6   )r   r&   r  r  s       r    	test_takezTestIndexing.test_take  sB   	R 	R 	R // 
	W 
	WBN3BHRrw,G,G,GHHHHN3BHYYYbg,N,N,NOOOONR$uSYr]/C/C*D*DBG!T!T!T    y}!!sB"'0R0R0RSSSSsBRW0U0U0UVVVV
	W 
	Wr"   r{   Nr  c           
      j   d }t          |j                  D ]} |||t          g           |            ||||j        |         |            ||||j        |         g d         |            |||t          g d          |            |||t          d|j        |         d         dg          |           |j        |         dk    rd ||||j        |         d d         |            ||||j        |         dd d	         |            ||||j        |         g d
         |           d S )Nc                 H   t          |           }| j        |                             |          }|                     |||          }t	          j        t          j        ||||          t          |          d           t	          j        |j        |         |           d S Nrz   Fr  )	r  r   get_indexer_forr  r)   r*   algostake_ndr  )r&   r  
new_labelsr{   r   r  r  s          r    assert_reindex_axis_is_okzATestIndexing.test_reindex_axis.<locals>.assert_reindex_axis_is_ok  s    C..Chtn44Z@@G((Tj(QQI'c7DZHHH)$$!   
 !)."6
CCCCCr"   r  r  r  r%  r  r   r%  rk   r  rr   )r   r4   rj   r   r4   rj   )r  re   r   r   r6   )r   r{   r&   r  r  s        r    test_reindex_axiszTestIndexing.test_reindex_axis  s   
	D 
	D 
	D // 	 	B%%c2uRyy*EEE%%c2sx|ZHHH%%c2sx|III/F
SSS%%c2u5J5J5J/K/KZXXX%%Rsx|A>??   y}!!))#r38B<3DjQQQ))#r38B<B3GTTT))SXb\*<*<*<=z  	 	r"   c           
         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    r2 |||t          g d          t          j        g d          |           )d S )Nc                    t          |           }t          j        ||||          }|                     ||||          }t	          j        |t          |          d           t	          j        |j        |         |           d S r  )r  r  r  reindex_indexerr)   r*   r  r   )r&   r  r  r  r{   r   reindexed_matr  s           r    assert_reindex_indexer_is_okzGTestIndexing.test_reindex_indexer.<locals>.assert_reindex_indexer_is_ok  s    C..C!M#wTTTM++GTj ,  I 'y33    !)."6
CCCCCr"   r`   r  rr   r  r  )rr   r   rr   r   r%  )rr   rr   rr   rk   r  )	r  re   r   r8   r   r   r   r9   r6   )r   r{   r&   r  r  s        r    test_reindex_indexerz!TestIndexing.test_reindex_indexer  s   		D 		D 		D // )	 )	B((RrBHRrw$?$?$?   )(R"ry2'?'?   )(ug	"-..	#)B-((   )(R"ddd+RYsy}-E-Ez   )(R"ry2'?'?"'Ez   )(R44455rx			7J7JJ   )(R44455rx7L7Lj   )(uchrl1ou566&&   y}!!,,///00HYYY''  G)	 )	r"   )r   r   r   r   r   r$   MANAGERSr   r   r   r  r  r8   r   r  r  r%   r"   r    r  r    s        	$""$""
$!666
$!666
2tDDD
.A4@@@H [UH--5 5 .-5n [UH--W W .-W* [UH--[\D"&%+@AA  BA .-: [UH--[\D"&%+@AA5 5 BA .-5 5 5r"   r  c                      e Zd Ze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                            d	 eddd           eddd          g          d
             Zd Z	e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                            d	 edd           edd           edd           eddd           eddd          g          d             Ze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                            dg dgg ddgdgg dg dg dg dg	          d              Zej                            d edd          g df edd          g f edd          g fg          d!             Ze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                            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                            d. edd          g d(g          d/             ZdS )0TestBlockPlacementzslc, expectedr   rl   rj   rk   r4   rr   c                 J    t          t          |                    |k    sJ d S r(   )r>   r   r   slcr   s      r    test_slice_lenz!TestBlockPlacement.test_slice_len<  s+     >#&&''8333333r"   r  c                     d}t          j        t          |          5  t          |           d d d            d S # 1 swxY w Y   d S )Nzslice step cannot be zeror   r   r   r   r   r   r  r   s      r    test_zero_step_raisesz(TestBlockPlacement.test_zero_step_raisesI  s    )]:S111 	  	 3	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	    ;??c                 ~    t          ddd          }t          |          }|j        t          dd d          k    sJ d S )Nrk   rr   r  )r   r   r  )r   r  bps      r    !test_slice_canonize_negative_stopz4TestBlockPlacement.test_slice_canonize_negative_stopO  sE    Ar2C  zU1dB////////r"   NrB   c                     d}t          j        t          |          5  t          |           d d d            d S # 1 swxY w Y   d S )Nzunbounded slicer   r  r  s      r    test_unbounded_slice_raisesz.TestBlockPlacement.test_unbounded_slice_raisesV  s    $  ]:S111 	  	 3	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 r  r  c                 2    t          |          j        rJ d S 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44r"   zarr, slce   r  )r   rx   rB      rx      c                 :    t          |          j        |k    sJ d S r(   )r   as_slice)r   r@   r  s      r    test_array_to_slice_conversionz1TestBlockPlacement.test_array_to_slice_conversiony  s&     c""+s222222r"   r@   r  )rr   r   r4   rj   )r  r   rj   rl   )r4   r   rr   )r4   r4   r4   c                 2    t          |          j        rJ d S r(   r  )r   r@   s     r    test_not_slice_like_arraysz-TestBlockPlacement.test_not_slice_like_arrays  s!     "#&&444444r"   c                 J    t          t          |                    |k    sJ d S r(   )r   r   r  s      r    test_slice_iterz"TestBlockPlacement.test_slice_iter  s+    
 N3''((H444444r"   zslc, arr)rk   rj   r4   c                     t          j        t          |          j        t	          j        |t          j                             d S )Nr`   )r)   r*   r   r/   r8   asarrayr   )r   r  r@   s      r    test_slice_to_array_conversionz1TestBlockPlacement.test_slice_to_array_conversion  sD     	#3("*S*H*H*H	
 	
 	
 	
 	
r"   c           	         t          t          dd                    }|                    d          j        t          ddd          k    sJ |                    t	          j        d                    j        t          ddd          k    sJ t          |                    t	          j        ddd                              g dk    sJ d S )	Nr   rx   r4   ry   rB   rj   rr   )rx   rx   rx   rx   rx   )r   r   addr  r8   r9   r   )r   bpls     r    test_blockplacement_addz*TestBlockPlacement.test_blockplacement_add  s    U1a[[))wwqzz"eAq!nn4444wwry||$$-q"a@@@@CGGBIaB//0011___DDDDDDr"   zval, inc, expectedr  )r4   rj   rl   )         )r  r  r  )r  r     )r   r4   rk   c                 p    t          t          |                              |                    |k    sJ d S r(   )r   r   r  )r   valincr   s       r    test_blockplacement_add_intz.TestBlockPlacement.test_blockplacement_add_int  s9    " N3''++C0011X======r"   r  c                     d}t          j        t          |          5  t          |                              d           d d d            d S # 1 swxY w Y   d S )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11 	) 	)3##C(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s   #A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  ;  s        [U1a[[!U1a^^QU1a^^QU1a^^QU1a__a 	
	 	4 4	 	4 [UUU1a^^UU1a^^$DEE    FE 
0 0 0 [E$E"dOOE$b!!E$B E"dOOE$OOE"bMME"dBE$BE"b"	
 "   # " 
 [E!QKKE#qMME#sOOE#sBE!S"	
	 	5 5	 	5 [S%%1a..!UEE#sA&&'YYaA'ZZq"a)XuuQS))*VUU1a__%	

 
3 3
 
3 [DLLEDMMMMJJII
	
 5 5 5 [
%1++yyy	!EE!QKK#4uuQ{{B6GH 5 5	 5 [U1a[[)))$U1a[["U1a[["U1a__iii(		
 
 
 

E E E [U1a[[!R U1a[[!YYY'U1a__a+YY999%U1a[["b!U1a[["lll+U1a__b,,,/YYLLL)U1a[["b!U1a[["iii(YYIII&	
  > >!  > [UUU1a[[)))$<==) ) >=) ) )r"   r  c            
       h   e Zd Z ej        d d d d d d d d g	          d
             Zd Zej                            de	j
        e	j        e	j        g          d             Ze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dS )TestCanHoldElementc                     | S r(   r%   r5   s    r    r   zTestCanHoldElement.<lambda>  s    a r"   c                 *    |                                  S r(   )	to_seriesr!  s    r    r   zTestCanHoldElement.<lambda>  s    akkmm r"   c                     | j         S r(   )r   r!  s    r    r   zTestCanHoldElement.<lambda>  s    ag r"   c                      t          |           S r(   )r   r!  s    r    r   zTestCanHoldElement.<lambda>  s    d1gg r"   c                 6    |                      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    bjmm 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                 b   t          ddg          }|                    g           sJ t          j        |j                                                  }|                    d           sJ d |d<   |d         t          j        u sJ t          j        d          t          ddd          g}|D ]}|                    |          sJ ||d<   t          ddd          }|                    |          rJ d}t          j        t          |          5  ||d<   d d d            d S # 1 swxY w Y   d S )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   rR  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***** hu|))++,, &&t,,,,,A1v l++XdB-C-CD 	 	C**3/////CFF4R  **3/////5 	 ]9C000 	 	CF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   D$$D(+D(r,   c                     t          j        g d|          }t          j        |          }t	          |j        t          dg          d          }|                    g           sJ d S )N)r4   rk   rl   r`   r4   rj   rd   )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  sj    hyyy...&s++.!"5"5A>>>$$R(((((((r"   c                    t          j        g d|          }t          j        |          }t	          |j        t          dg          d          } ||          }|                     ||d           |                    |          sJ t          j        |d d         d	          } ||          }t          j
        t                    5  |                     ||d
           d d d            n# 1 swxY w Y   |                    |          rJ t          j        t          d          t          d          t          d          g          } ||          }t          j
        t                    5  |                     ||d
           d d d            n# 1 swxY w Y   |                    |          rJ t          j        t          d          t          d          t          d          g          }	 ||	          }t          j
        t                    5  |                     ||d
           d d d            n# 1 swxY w Y   |                    |          rJ d S )N)r4   rk   rl   	   r`   r4   rj   rd   Trr   neither)closedFrk   rl   )r8   r   r   r3  r   r   r   check_series_setitemr-  r)   assert_produces_warningFutureWarningr   r   )
r   r,   r+  r@   r4  r   elemii2ii3ii4s
             r    test_interval_can_hold_elementz1TestCanHoldElement.test_interval_can_hold_element  s   h|||5111&s++.!"5"5A>>>wr{{!!$D111$$T***** 'CRCCCCws||'66 	7 	7%%dB666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7((.....'1y||Yq\\(RSSws||'66 	7 	7%%dB666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7((.....'1y||Yq\\(RSSws||'66 	7 	7%%dB666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7((.......s6   C11C58C55FF FIIIc                     t          ddd          }t          |j                            dd          t	          dg          d          }|                    g           sJ d S )N2016rk   Yperiodsfreqr4   rj   rd   )r   r   r   r   r   r-  )r   pir   s      r    &test_period_can_hold_element_emptylistz9TestCanHoldElement.test_period_can_hold_element_emptylist%  sf    &!#666((A..s0C0C!LLL$$R(((((((r"   c                 0   t          ddd          } ||          }|                     ||d           |                    d          d d         } ||          }t          j        t
                    5  |                     ||d           d d d            n# 1 swxY w Y   |                    d	          d d         } ||          }t          j        t
                    5  |                     ||d           d d d            d S # 1 swxY w Y   d S )
NrC  rk   rD  rE  TDrr   Frt   )r   r:  asfreqr)   r;  r<  to_timestamp)r   r+  rH  r=  pi2dtis         r    test_period_can_hold_elementz/TestCanHoldElement.test_period_can_hold_element+  s   &!#666wr{{!!$D111 iinnSbS!ws||'66 	7 	7%%dB666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 ooc""3B3'ws||'66 	7 	7%%dB666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s$   6BB!B&DDDr  c                     |j         j        d         }|r|                    |          sJ d S |                    |          rJ d S r   )r   r   r-  )r   objr=  r  r   s        r    check_can_hold_elementz)TestCanHoldElement.check_can_hold_element=  sX    hoa  	3((.......,,T2222222r"   indexc                    |j                                         }t          |d          }|                     |||           t	          |          r||d<   n||d t          |          <   |r|j        |u sJ d S |j        t          k    sJ d S )NFr_  r   )	r   r?   r   rS  r   r>   r   r,   rU   )r   r=  rT  r  r@   sers         r    r:  z'TestCanHoldElement.check_series_setitemD  s    k  Su%%%##Cw777T?? 	$CFF#C#d)) 	'9######9&&&&&&r"   N)r   r   r   r   fixturer+  r1  r   r   r8   rM  uint64r+  r5  rA  rI  rP  r_   rS  r   r:  r%   r"   r    r  r    sW       V^K##&&##NO	
      : [WrxBJ&GHH) ) IH) [WrxBJ&GHH/ / IH/:) ) )7 7 7$3 3 3 3 3' ' ' ' ' ' ' 'r"   r  c                       e Zd Zd ZdS )TestShouldStorec                 z   t          g d          }t          |          }|j        j        d         }|                    |          sJ |                    |d d                   sJ |                    |                                          rJ |                    t          j        |                    rJ d S )N)rY   BCr   rr   )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^^gnQ $$$$$CRC))))) ##CNN$4$455555 ##BJsOO4444444r"   N)r   r   r   ra  r%   r"   r    rZ  rZ  U  s#        5 5 5 5 5r"   rZ  c                      t          j        ddg          } t          t          d                    }d}t	          j        t          |          5  t          | |d           d d d            d S # 1 swxY w Y   d S )Nr  r  rj   z:Wrong number of dimensions. values.ndim != ndim \[1 != 2\]r   rd   )r8   r   r   r   r   r   r   r   )r+   r~   r   s      r    test_validate_ndimrc  f  s    XsCj!!FuQxx((I
GC	z	-	-	- . .691----. . . . . . . . . . . . . . . . . .s   A00A47A4c                  J   t          g d          } t          g d                              |           }t          t          g d                                        |           }|j        j        d         j        j        |j        j        d         j        j        k    sJ d S )N)r   r4   rj   rk   rl   r  r   )r   r   reindexr   r   r   r.   r  )r,  rn   r^   s      r    test_block_shaperf  o  s    

 
 Cyyy!!#&&A{999%%&&..s33A6=$,a0@0I0QQQQQQQr"   c           
         t           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  | |                                t          t          |                    |j	        |j                  }|j	        j
        dv sJ |j        du sJ d S d S )Nr4   rj   rd   )r\   uF)r,   re   )r.  arraysNumpyExtensionArrayr8   r   r   r   r>   re   r,   kindr   is_extensionto_numpy)r!   r@   r   s      r    test_make_block_no_pandas_arrayrn  w  sQ   
)
'
'!Q(8(8
9
9C [nU3s88__==CHMMMF<
****j  "e++++ S%C//RRR| J...."e++++ LLNNE#c((OO3938
 
 
 | J...."e++++ !  ,+r"   r(   )Er   r   r  r   numpyr8   r   pandas._libs.internalsr   pandas.compatr   pandas.util._test_decoratorsutil_test_decoratorsrg   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
pytestmarkrW  r!   r&   r2   rA   r   r   r   r$   r   r   r   r  r  r  r  rZ  rc  rf  rn  r%   r"   r    <module>r     s6              				      1 1 1 1 1 1       ) ) ) ) ) ) ) ) ) / / / / / /    
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
       & & & & & & & & &         
         
          /
 	:.///  0/   Q Q Q    15) V? V? V? V?r   < < < <~ , , ,r) r) r) r) r) r) r) r)jE# E# E# E# E# E# E# E#P  w w w w w w w wtO) O) O) O) O) O) O) O)dE' E' E' E' E' E' E' E'P5 5 5 5 5 5 5 5". . .R R R, , , , ,r"   