U
    ¾mœdàÂ  ã                   @   sÚ  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  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   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- ej.Z/ej0e-e*gd
�dd„ ƒZ1ej0dd„ ƒZ2dd„ Z3dd„ Z4dZ5dd e-fdd„Z6d0dd„Z7d1dd„Z8ej0dd„ ƒZ9G dd„ dƒZ:G dd„ dƒZ;d d!„ Z<G d"d#„ d#ƒZ=G d$d%„ d%ƒZ>G d&d'„ d'ƒZ?G d(d)„ d)ƒZ@d*d+„ ZAd,d-„ ZBd.d/„ ZCdS )2é    )Ú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Ú	new_block©Úparamsc                 C   s   | j S )zS
    Fixture to test both the internal new_block and pseudo-public make_block.
    ©Úparam)Úrequest© r   ú^/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/pandas/tests/internals/test_internals.pyÚblock_maker3   s    r   c                   C   s   t dƒS )Nz‰a: 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_mgrr   r   r   r   Úmgr;   s    ÿr!   c                 C   sX   t  | j|j¡ | j|jks t‚t| jtƒs0t‚t|jtƒs@t‚t  | jj|jj¡ d S ©N)	ÚtmÚassert_numpy_array_equalÚvaluesÚdtypeÚAssertionErrorÚ
isinstanceÚmgr_locsr   Úas_array)ÚleftÚrightr   r   r   Úassert_block_equalD   s
    r-   c                 C   s:   t  | d ¡}t jjj|| |jfdt| ƒd   d� ¡ S )Nr   )r   é   )ÚxÚshapeÚstrides)ÚnpÚarangeÚlibZstride_tricksZ
as_stridedÚitemsizeÚlenÚcopy)r0   Úarrr   r   r   Úget_numeric_matL   s      ÿr9   é
   c                 C   sX  t |ƒ}t|ƒ}|dkrtf}|f| }t|ƒ}| dkrJ| | ¡| }�nü| dkrhd| | ¡|  }�nÞ| dkr’t dd„ | ¡ | D ƒ|¡}�n´| dkr®tj|tj	d	�}�n˜| d
krÈ|d  d¡}�n~|  
d¡�r@t d| ¡}	|	dk	sötd| › �ƒ‚|	 ¡ d }
|dk�stdƒ‚tt t¡d |
d�j}t|t|ƒd�}�n| dk�rZ|d  d¡}nì| dk�r‚tddddddddddg
ƒ}nÄ| dk�rªtdddddddddd g
ƒ}nœ| d!k�r6|d" d#k�rÆt‚td$d%„ |dd"… D ƒƒ�sæt‚|  d&¡�rútj}nd'}t||ddd|dd(|d)g
|d*�}|j ¡ }||d 7 }ntd+| › d,�ƒ‚|||t|ƒd-�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Úf8Zf4Úf2ÚintÚi8Úi4Úi2Úi1ZuintÚu8Zu4Úu2Úu1)ÚcomplexZc16Zc8y              ð?)ÚobjectÚstringÚOc                 S   s   g | ]}d |d›�‘qS )ÚAÚdr   )Ú.0Úir   r   r   Ú
<listcomp>…   s     z create_block.<locals>.<listcomp>)ÚbÚbool©r&   )r   ÚdtúM8[ns]g    eÍÍArS   zM8[nszM8\[ns,\s*(\w+\/?\w*)\]zincompatible typestr -> r   r.   z)must have only 1 num items for a tz-awarei Êš;)Útz©Úndim)Ú	timedeltaÚtdúm8[ns]rY   )Úcategoryé   é   é   )Z	category2ÚarO   ÚcrK   )ÚsparseZ	sparse_naéÿÿÿÿr:   c                 s   s   | ]}|d kV  qdS )r.   Nr   )rL   Úsr   r   r   Ú	<genexpr>�   s     zcreate_block.<locals>.<genexpr>Ú_naç        é   é   ©Ú
fill_valuezUnsupported typestr: "ú"©Ú	placementrV   )r   r6   ÚNr9   Úastyper2   ÚreshapeÚravelÚonesÚbool_Ú
startswithÚreÚsearchr'   Úgroupsr	   r3   Ú_datar   r   ÚNotImplementedErrorÚallÚendswithÚnanr   Z	sp_valuesÚviewÚ
ValueError)Útypestrrl   Ú
item_shapeÚ
num_offsetÚmakerÚ	num_itemsr0   Úmatr%   ÚmrT   ri   r8   r   r   r   Úcreate_blockV   sX    
"



 þ
r…   c                 C   s0   |d krt }tt| td|ƒdd�tt |¡ƒƒS )Nr   r   )rl   r   )rm   r   r…   Úslicer
   r2   r3   )r~   Únum_rowsr   r   r   Úcreate_single_mgr®   s    þrˆ   c              	   C   sF  |dkrt f}d}g }i }|  d¡D ] }| ¡ }t|ƒs:q$| d¡ddd… \}}| ¡ }| ¡  d¡}| |¡ tt t|ƒ¡| ƒ}z||  |¡ W n t	k
r¶   |||< Y nX |t|ƒ7 }q$t
|ƒ}g }	d}
| ¡ D ]8\}}| d¡d }|	 t||||
d�¡ |
t|ƒ7 }
qÞt|	d	d
„ d�}tt|ƒ|gdd„ |D ƒ ƒ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   ú;ú:r[   ú,ú-)r   r€   c                 S   s
   | j d S ©Nr   )r)   )rO   r   r   r   Ú<lambda>ð   ó    zcreate_mgr.<locals>.<lambda>)Úkeyc                 S   s   g | ]}t t |¡ƒ‘qS r   )r
   r2   r3   )rL   Únr   r   r   rN   ó   s     zcreate_mgr.<locals>.<listcomp>)rm   ÚsplitÚstripr6   Ú	partitionÚextendÚlistr2   r3   ÚKeyErrorr
   ÚitemsÚappendr…   Úsortedr   Útuple)Údescrr   ÚoffsetZ	mgr_itemsZblock_placementsrK   ÚnamesZblockstrrl   Úblocksr€   r~   Zsblocksr   r   r   r    ¸   sL    
   ÿÿþr    c                   C   s   t ddddgƒS )Nr;   r   r[   r]   )r…   r   r   r   r   Úfblock÷   s    r    c                   @   s€   e Zd Zdd„ Zej dddddggdd	ggd
ddggddggg¡dd„ ƒZdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ ZdS )Ú	TestBlockc                 C   s    t ddgƒ}|jtjkst‚d S )Nr@   r   )r…   r&   r2   Úint32r'   )ÚselfZ
int32blockr   r   r   Útest_constructorý   s    zTestBlock.test_constructorz	typ, datar;   r   r[   r]   rF   é   rG   r.   r\   rP   rf   c                 C   s   t ||ƒ}tt |¡|ƒ d S r"   )r…   r-   r#   Úround_trip_pickle)r£   ÚtypÚdataÚblkr   r   r   Útest_pickle  s    

zTestBlock.test_picklec                 C   s6   t |jtƒst‚t |jjtjdddgtj	d�¡ d S )Nr   r[   r]   rQ   )
r(   r)   r   r'   r#   r$   r*   r2   ÚarrayÚintp©r£   r    r   r   r   Útest_mgr_locs  s
     ÿzTestBlock.test_mgr_locsc                 C   s>   |j |jj kst‚|j|jjks$t‚t|ƒt|jƒks:t‚d S r"   )r0   r%   r'   r&   r6   r­   r   r   r   Ú
test_attrs  s    zTestBlock.test_attrsc                 C   s"   |  ¡ }||k	st‚t||ƒ d S r"   )r7   r'   r-   )r£   r    Úcopr   r   r   Ú	test_copy  s    zTestBlock.test_copyc              	   C   sÄ  |  ¡ }|j}| d¡d }|j|ks*t‚||k	s6t‚t |jjtjddgtj	d�¡ |j
d dk ¡ rlt‚|j
d dk ¡ s‚t‚|  ¡ }|j}| d¡}t|ƒdksªt‚|j|ks¸t‚t |d jjtjdgtj	d�¡ t |d jjtjdgtj	d�¡ |j
d dk ¡ �rt‚|d j
d dk ¡ �s0t‚|  ¡ }| d¡}t|ƒdk�sTt‚t |d jjtjddgtj	d�¡ |d j
d dk ¡ �s”t‚|  ¡ }tjtd d�� | d¡ W 5 Q R X d S )Nr   r[   r]   rQ   r.   ©Úmatchr\   )r7   r)   Údeleter'   r#   r$   r*   r2   r«   r¬   r%   ry   r6   ÚpytestÚraisesÚ
IndexError)r£   r    ZnewbZlocsÚnbr   r   r   Útest_delete  sJ     ÿ

 ÿ
 ÿ

 ÿzTestBlock.test_deletec                 C   sö   t jddd� dd¡ d¡}t|ƒ}|jjd }t|jt	ƒs@t
‚| d¡}t|ƒd	ksZt
‚t|d jt	ƒsnt
‚t|d jt	ƒs‚t
‚t| d
¡ƒ}|jjd }t|jtƒs¬t
‚| ddg¡}t|ƒd	ksÊt
‚t|d jtƒsÞt
‚t|d jtƒsòt
‚d S )Né   r?   rQ   rf   r]   rY   r   r.   r[   rS   r\   )r2   r3   ro   r|   r   Ú_mgrrŸ   r(   r%   r   r'   r´   r6   r   )r£   r8   Údfr©   r¸   r   r   r   Útest_delete_datetimelikeH  s    
z"TestBlock.test_delete_datetimelikec                 C   sº   t j dd¡}t|dddgdd�}| ¡ }d|d d …< |jdk ¡ sHt‚t|ƒdksXt‚t|dg dgdd�t|dg dgdd�t|dg dgdd�g}t	||ƒD ]\}}t
||ƒ q¢d S )	Nr\   r]   r.   rg   r[   rk   iñØÿÿr   )r2   ÚrandomÚrandnr   Ú_splitr%   ry   r'   r6   Úzipr-   )r£   r%   r©   ÚresultÚexpectedÚresÚexpr   r   r   Ú
test_split]  s    ýzTestBlock.test_splitN)Ú__name__Ú
__module__Ú__qualname__r¤   rµ   ÚmarkÚparametrizerª   r®   r¯   r±   r¹   r½   rÆ   r   r   r   r   r¡   ü   s    
üþ	
*r¡   c                   @   sê  e Zd Zdd„ Zdd„ Zdd„ Zej ddd	g¡d
d„ ƒZ	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zej ddejfdejfg¡dd„ ƒZej ddejfd ejfd!ejfg¡d"d#„ ƒZd$d%„ Zd&d'„ Zej d(d)d*d+d,d-g¡d.d/„ ƒZd0d1„ Zd2d3„ Zd4d5„ Zej dd6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGg¡dHdI„ ƒZdJdK„ Z dLdM„ Z!dNdO„ Z"dPdQ„ Z#dRdS„ Z$ej ddTdUg¡dVdW„ ƒZ%ej ddXdYdZd[d\g¡d]d^„ ƒZ&d_d`„ Z'ej dadbdcdbdddegdfg¡dgdh„ ƒZ(didj„ Z)dkdl„ Z*dmS )nÚTestBlockManagerc                 C   s*   t dƒ}|jdkst‚t|ƒdks&t‚d S )Nza,b,c: f8-1; d,e,f: f8-2r[   rg   )r    Únblocksr'   r6   ©r£   r!   r   r   r   r¯   r  s    zTestBlockManager.test_attrsc              	   C   s¶   t dƒ}|j|j }}tt dg¡ƒ|d _tt dg¡ƒ|d _d}tjt	|d�� t
||ƒ}| ¡  W 5 Q R X tt dg¡ƒ|d _tt dg¡ƒ|d _t
||ƒ}| d¡ d S )Nza:bool; a: f8r   r.   zGaps in blk ref_locsr²   )r    ÚaxesrŸ   r   r2   r«   r)   rµ   r¶   r'   r   Z_rebuild_blknos_and_blklocsÚiget)r£   Ztmp_mgrrÏ   rŸ   Úmsgr!   r   r   r   Útest_duplicate_ref_loc_failurew  s    

z/TestBlockManager.test_duplicate_ref_loc_failurec                 C   sR   t  |¡}t  t|ƒt|ƒ¡ t|dƒs,t‚t|dƒs:t‚|jrDt‚|jrNt‚d S )NÚ_is_consolidatedÚ_known_consolidated)r#   r¦   Úassert_frame_equalr   Úhasattrr'   rÓ   rÔ   )r£   r!   Úmgr2r   r   r   rª   Œ  s    

zTestBlockManager.test_pickleÚ
mgr_stringza,a,a:f8za: f8; a: i8c                 C   s*   t |ƒ}t |¡}t t|ƒt|ƒ¡ d S r"   )r    r#   r¦   rÕ   r   )r£   rØ   r!   r×   r   r   r   Útest_non_unique_pickle˜  s    
z'TestBlockManager.test_non_unique_picklec                 C   sP   t dƒ}t |¡}t t|ƒt|ƒ¡ tdƒ}t |¡}t t|ƒt|ƒ¡ d S )Núa: categoryrZ   )r    r#   r¦   rÕ   r   rˆ   Zassert_series_equalr   )r£   r!   r×   ZsmgrZsmgr2r   r   r   Útest_categorical_block_picklež  s    

z.TestBlockManager.test_categorical_block_picklec                 C   s¨   t tdƒƒ}tj dd¡}t| ¡ tjdtjd�|j	d�}t
|f|t t d¡ƒgd�}t | d¡ ¡ |d ¡ t | d¡ ¡ |d ¡ t | d¡ ¡ |d ¡ d S )	NÚabcr\   rQ   )r%   rl   rV   )rŸ   rÏ   r   r.   r[   )r
   r–   r2   r¾   Zrandr   r7   r3   r¬   rV   r   r#   Úassert_almost_equalrÐ   Úinternal_values)r£   Úcolsr%   Úblockr!   r   r   r   Ú	test_iget§  s    ýzTestBlockManager.test_igetc                 C   sÜ   t ddd�}| t|jƒdt dgd ¡¡ | dt dgd ¡¡ t | 	d	¡ 
¡ t d	gd ¡¡ t | 	d¡ 
¡ tjdgd tjd
�¡ t | 	d¡ 
¡ t dgd ¡¡ t | 	d¡ 
¡ tjdgd tjd
�¡ d S )Nz
a,b,c: int©r\   ©r   rK   Úfoor\   r.   Úbarr   rQ   r[   )r    Úinsertr6   r˜   r2   r«   Úisetr#   r$   rÐ   rÞ   Úobject_rÎ   r   r   r   Útest_setµ  s     " ÿ" ÿzTestBlockManager.test_setc                 C   s  |  t|jƒdtjttd�¡ | |j d¡t 	dt¡¡ |j d¡}| 
|¡jtjks\t‚| ¡ }| |j d¡t 	dt¡¡ |j d¡}| 
|¡jtjks¢t‚|  t|jƒdtj t¡ t¡¡ |j d¡}| 
|¡jtjksæt‚| |j d¡tj t¡¡ | 
|¡jtjk�st‚d S )NÚbazrQ   rä   Zquux)ræ   r6   r˜   r2   Úzerosrm   rP   rç   Úget_locÚrepeatrÐ   r&   rè   r'   Úconsolidater¾   r¿   rn   r>   Úint_Zfloat_)r£   r!   Úidxr×   r   r   r   Útest_set_change_dtypeÃ  s    "z&TestBlockManager.test_set_change_dtypec           	      C   sD  |j dd�}t|j|jƒD ]T\}}t |j|j¡ t|jtjƒrV|jj	|jj	ksnt
‚q|jjj	|jjj	kst
‚q| ¡  |j dd�}t|j|jƒD ]¬\}}|j}|j}t ||¡ t|tjƒrÌ|j	}|j	}n|jj	}|jj	}t|tƒ�r
|d krú|d k�s>||k	�s>t
‚q’t|tjƒ�s(||k	�s>t
‚q’|d k�r:|d ks’t
‚q’d S )NF)ÚdeepT)r7   rÁ   rŸ   r#   Zassert_equalr%   r(   r2   ÚndarrayÚbaser'   Z_ndarrayZ_consolidate_inplacer   )	r£   r!   Úcpr©   Zcp_blkZbvalsZcpvalsZlbaseZrbaser   r   r   r±   Ö  s,    "zTestBlockManager.test_copyc                 C   s    t dƒ}| ¡ jtjkst‚d S )Nza: sparse-1; b: sparse-2)r    r*   r&   r2   Úfloat64r'   rÎ   r   r   r   Útest_sparseû  s    zTestBlockManager.test_sparsec                 C   s,   t dƒ}t|jƒdkst‚t|tƒs(t‚d S )Nza: sparse-1; b: sparse-2; c: f8r\   )r    r6   rŸ   r'   r(   r   rÎ   r   r   r   Útest_sparse_mixedÿ  s    z"TestBlockManager.test_sparse_mixedzmgr_string, dtypezc: f4; d: f2úc: f4; d: f2; e: f8c                 C   s   t |ƒ}| ¡ j|kst‚d S r"   ©r    r*   r&   r'   ©r£   rØ   r&   r!   r   r   r   Útest_as_array_float  s    z$TestBlockManager.test_as_array_floatza: bool-1; b: bool-2z%a: i8-1; b: i8-2; c: i4; d: i2; e: u1zc: i4; d: i2; e: u1c                 C   s   t |ƒ}| ¡ j|kst‚d S r"   rú   rû   r   r   r   Útest_as_array_int_bool  s    	z'TestBlockManager.test_as_array_int_boolc                 C   s   t dƒ}| ¡ jdkst‚d S )Nzh: datetime-1; g: datetime-2rS   rú   rÎ   r   r   r   Útest_as_array_datetime  s    z'TestBlockManager.test_as_array_datetimec                 C   sF   t dƒ}| d¡jdkst‚| d¡jdks0t‚| ¡ jdksBt‚d S )Nz%h: M8[ns, US/Eastern]; g: M8[ns, CET]r   zdatetime64[ns, US/Eastern]r.   zdatetime64[ns, CET]rG   )r    rÐ   r&   r'   r*   rÎ   r   r   r   Útest_as_array_datetime_tz  s    z*TestBlockManager.test_as_array_datetime_tzÚtÚfloat16Úfloat32rö   r¢   Úint64c                 C   sL  t dƒ}t |¡}| |¡}| d¡jj|ks2t‚| d¡jj|ksHt‚| d¡jj|ks^t‚t dƒ}t |¡}|j|dd�}| d¡jj|ks”t‚| d¡jj|ksªt‚| d	¡jj|ksÀt‚| d
¡jj|ksÖt‚| d¡jjtjksît‚| d¡jjtjk�st‚|tjk�r0| d¡jjtj	k�sHt‚n| d¡jj|k�sHt‚d S )Nrù   r   r.   r[   z6a,b: object; c: bool; d: datetime; e: f4; f: f2; g: f8Úignore)Úerrorsr]   rf   rg   r\   )
r    r2   r&   rn   rÐ   Útyper'   rè   r  Ú
datetime64)r£   r   r!   Ztmgrr   r   r   Útest_astype"  s$    


zTestBlockManager.test_astypec                 C   sP  dd„ }t dƒ}|jdd�}|||ƒ t dƒ}| dtjdgt tjd	�¡ | d
tjdgt tjd	�¡ | dtjdgt tjd	�¡ |jdd�}| d¡jtjksªt	‚| d
¡jtjksÀt	‚| d¡jtjksÖt	‚| d¡jtj
ksìt	‚| d¡jtjk�st	‚t dƒ}| dtjdgt tjd	�¡ | d
tjdgt tjd	�¡ | dtjdgt tjd	�¡ |jdd�}| d¡jtjk�sŠt	‚| d
¡jtjk�s¢t	‚| d¡jtjk�sºt	‚| d¡jtjk�sÒt	‚| d¡jtjk�sêt	‚| d¡jj�st	tjƒ‚| d¡jtj
k�st	‚| d¡jtjk�s4t	‚| d¡jtjk�sLt	‚d S )Nc                 S   sœ   t | jƒ}t |jƒ}t|ƒt|ƒks(t‚|D ]2}d}|D ]}|j|jk ¡ r8d} qVq8|s,t‚q,|D ]2}d}|D ]}|j|jk ¡ rpd} qŽqp|sdt‚qddS )z4compare the blocks, numeric compare ==, object don'tFTN)ÚsetrŸ   r6   r'   r%   ry   )Zold_mgrÚnew_mgrZ
old_blocksZ
new_blocksrO   Úfoundr¸   Úobr   r   r   Ú_compare?  s"    


z/TestBlockManager.test_convert.<locals>._comparezf: i8; g: f8T©r7   za,b,foo: object; f: i8; g: f8r   Ú1rQ   r.   z2.r[   zfoo.r\   r]   zEa,b,foo: object; f: i4; bool: bool; dt: datetime; i: i8; g: f8; h: f2rf   rg   r¥   é   )r    Úconvertrç   r2   r«   rm   rè   rÐ   r&   r'   r  rö   r¢   rr   r  r  r  )r£   r  r!   r
  r   r   r   Útest_convert>  s<    
ÿzTestBlockManager.test_convertc              	   C   sH   t jtdd�� tdƒ W 5 Q R X t jtdd�� tdƒ W 5 Q R X d S )Nzneed to splitr²   úa: category; b: categoryúa: category2; b: category2)rµ   r¶   r}   r    ©r£   r   r   r   Útest_invalid_ea_blockx  s    z&TestBlockManager.test_invalid_ea_blockc                 C   sT   dD ]J}t d|› �ƒ}| ¡ j|ks(t‚t d|› d|› �ƒ}| ¡ j|kst‚qd S )N)r<   r?   rG   rP   rF   rS   rY   za: z; b: rú   )r£   r&   r!   r   r   r   Útest_interleave  s
    z TestBlockManager.test_interleave)rÚ   r?   )r  r?   )úa: category; b: category2rG   )úa: category2rG   )r  rG   )úa: f8r<   )úa: f8; b: i8r<   )úa: f4; b: i8r<   )úa: f4; b: i8; d: objectrG   )úa: bool; b: i8rG   )ú
a: complexrF   )úa: f8; b: categoryrG   )úa: M8[ns]; b: categoryrG   )úa: M8[ns]; b: boolrG   )úa: M8[ns]; b: i8rG   )úa: m8[ns]; b: boolrG   )úa: m8[ns]; b: i8rG   )úa: M8[ns]; b: m8[ns]rG   c                 C   s²  t dƒ}| ¡ jdkst‚t dƒ}| ¡ jdks4t‚t dƒ}| ¡ jdksNt‚t dƒ}| ¡ jdksht‚t dƒ}| ¡ jdks‚t‚t d	ƒ}| ¡ jdksœt‚t d
ƒ}| ¡ jdks¶t‚t dƒ}| ¡ jdksÐt‚t dƒ}| ¡ jdksêt‚t dƒ}| ¡ jdk�st‚t dƒ}| ¡ jdk�s"t‚t dƒ}| ¡ jdk�s>t‚t dƒ}| ¡ jdk�sZt‚t dƒ}| ¡ jdk�svt‚t dƒ}| ¡ jdk�s’t‚t dƒ}| ¡ jdk�s®t‚d S )NrÚ   r?   r  rG   r  r  r<   r  r  r  r  r  rF   r   r!  r"  r#  r$  r%  r&  rú   rû   r   r   r   Útest_interleave_dtype‡  s@    z&TestBlockManager.test_interleave_dtypec                 C   sþ   |  |j d¡tj t¡¡ |  |j d¡tj t¡¡ |  |j d¡tj t¡¡ |  |j d¡tj t¡¡ |  |j d¡tj t¡¡ | ¡ }|jdks¢t	‚| ¡  
¡ }|jdks¼t	‚t|jd jtƒsÒt	‚t |jd jjtjt|jƒtjd	�¡ d S )
NÚfrK   rO   ÚgÚhr]   r.   r   rQ   )rç   r˜   rì   r2   r¾   r¿   rm   rî   rÍ   r'   Úget_numeric_datar(   rŸ   r)   r   r#   r$   r*   r3   r6   r¬   )r£   r!   Zconsr   r   r   Ú test_consolidate_ordering_issuesÃ  s     ÿz1TestBlockManager.test_consolidate_ordering_issuesc                 C   sÈ   t dƒ}|jddddgdd�}| ¡ r*t‚t |jtddddgƒ¡ t | 	d¡ 
¡ | 	d¡ 
¡ ¡ t | 	d	¡ 
¡ | 	d
¡ 
¡ ¡ t | 	d¡ 
¡ | 	d	¡ 
¡ ¡ t | 	d¡ 
¡ | 	d¡ 
¡ ¡ d S )Nz3a: f8; b: i8; c: f8; d: i8; e: f8; f: bool; g: f8-2r)  r_   r^   rK   r   ©Úaxisrg   r[   r.   r\   )r    Úreindex_axisZis_consolidatedr'   r#   Úassert_index_equalr˜   r
   rÝ   rÐ   rÞ   )r£   r!   Ú	reindexedr   r   r   Útest_reindex_itemsÔ  s(     ÿ ÿ ÿ ÿz#TestBlockManager.test_reindex_itemsc                 C   s¤  t ddd�}| dtjdddgtjd�¡ | ¡ }t |jt	d	d
ddgƒ¡ t 
| |j d
¡¡ ¡ | |j d
¡¡ ¡ ¡ |j|j d
¡t dddg¡dd� |rÐt 
| |j d
¡¡ ¡ t dddg¡¡ n*t 
| |j d
¡¡ ¡ t dddg¡¡ |jdd�}t |jt	d	d
ddgƒ¡ |j|j d
¡t dddg¡dd� |�rvt 
| |j d
¡¡ ¡ t dddg¡¡ n*t 
| |j d
¡¡ ¡ t dddg¡¡ d S )Nú[int: int; float: float; complex: complex;str: object; bool: bool; obj: object; dt: datetimerâ   rã   rf   r.   r[   r\   rQ   r>   r;   rF   rP   ç      Y@g      i@g     Àr@T©Úinplaceç      ð?r  g     @�@g     @Ÿ@g     p§@)r    rç   r2   r«   rè   r+  r#   r0  r˜   r
   rÝ   rÐ   rì   rÞ   )r£   Úusing_copy_on_writer!   ÚnumericZnumeric2r   r   r   Útest_get_numeric_dataë  sR    ýþ
ýþþ
ýþþz&TestBlockManager.test_get_numeric_datac                 C   sp  t ddd�}| dtjdddgtjd�¡ | ¡ }t |jt	dgƒ¡ t 
| |j d¡¡ ¡ | |j d¡¡ ¡ ¡ |jd	t dddg¡dd
� |rÂt | |j d¡¡ ¡ t dddg¡¡ n*t | |j d¡¡ ¡ t dddg¡¡ |jdd�}| d	t dddg¡¡ |�rBt | |j d¡¡ ¡ t dddg¡¡ n*t | |j d¡¡ ¡ t dddg¡¡ d S )Nr3  râ   rã   rg   TFrQ   rP   r   r5  r  )r    rç   r2   r«   rè   Zget_bool_datar#   r0  r˜   r
   rÝ   rÐ   rì   rÞ   r$   )r£   r8  r!   ZboolsZbools2r   r   r   Útest_get_bool_data  s@    ýþþþþþz#TestBlockManager.test_get_bool_datac                 C   s   t tdƒƒ d S )Nu   b,×�: object)Úreprr    r  r   r   r   Útest_unicode_repr_doesnt_raiseF  s    z/TestBlockManager.test_unicode_repr_doesnt_raiseúa,b,c: i8-1; d,e,f: i8-2za,a,a: i8-1; b,b,b: i8-2c                 C   s2   t |ƒ}t|jd d d… |jƒ}| |¡s.t‚d S )Nra   )r    r   rŸ   rÏ   Úequalsr'   )r£   rØ   Úbm1Zbm2r   r   r   Útest_equalsI  s    zTestBlockManager.test_equalsz	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                 C   sN   t |ƒ}t |j¡}|D ]0}tt|ƒ|jƒ}| |¡s:t‚| |¡st‚qd S r"   )	r    Ú	itertoolsÚpermutationsrŸ   r   r›   rÏ   r?  r'   )r£   rØ   ÚbmZblock_permsZbm_permZbm_thisr   r   r   Ú(test_equals_block_order_different_dtypesR  s    z9TestBlockManager.test_equals_block_order_different_dtypesc                 C   s.   t ddd�}| ¡  ¡ dddddgks*t‚d S )	Nr<   rf   )r‡   re   r7  ç       @g      @g      @)rˆ   Úexternal_valuesÚtolistr'   rÎ   r   r   r   Útest_single_mgr_ctore  s    z%TestBlockManager.test_single_mgr_ctorÚvaluer.   ÚTruer[   r\   g      @c              	   C   sL   t dƒ}dt|ƒj› d�}tjt|d�� |jdgdg|d� W 5 Q R X d S )Nr>  z9For argument "inplace" expected type bool, received type Ú.r²   r.   r[   r5  )r    r  rÇ   rµ   r¶   r}   Zreplace_list)r£   rJ  r@  rÑ   r   r   r   Útest_validate_bool_argsi  s
    ÿz(TestBlockManager.test_validate_bool_argsc                 C   s‚   t dƒ}| dt dg¡¡ t |jtjddddgtr:dndd�¡ t |jtjddddgtrbdndd�¡ t	|j
ƒdks~t‚d S )Núa,b,c: i8; d: f8r   r.   r  r¢   rQ   r[   )r    Ú_iset_split_blockr2   r«   r#   r$   Úblklocsr   Úblknosr6   rŸ   r'   ©r£   rD  r   r   r   Útest_iset_split_blockt  s     ÿ ÿz&TestBlockManager.test_iset_split_blockc              	   C   s”   t dƒ}| dt dg¡t ttdƒƒg¡¡ t |jtjddddgt	rLdndd�¡ t |j
tjddddgt	rtdndd�¡ t|jƒd	ks�t‚d S )
NrN  r   r:   r.   r  r¢   rQ   r[   r\   )r    rO  r2   r«   r–   Úranger#   r$   rP  r   rQ  r6   rŸ   r'   rR  r   r   r   Útest_iset_split_block_values€  s    & ÿ ÿz-TestBlockManager.test_iset_split_block_valuesN)+rÇ   rÈ   rÉ   r¯   rÒ   rª   rµ   rÊ   rË   rÙ   rÛ   rá   ré   rñ   r±   r÷   rø   r2   r  rö   rü   rr   r  r¢   rý   rþ   rÿ   r  r  r  r  r'  r,  r2  r:  r;  r=  rA  rE  rI  rM  rS  rU  r   r   r   r   rÌ   q  s    
	%þ
ýþ

:îþ
%2) ÿ
ûþ

	

rÌ   c                 C   s   | j dkr|  ¡ S |  ¡ jS )Nr.   )rV   rG  r*   ÚT)r!   r   r   r   Ú	_as_array�  s    
rW  c                	   @   sÔ   e Zd Zedeƒedeƒedefd�edefd�edefd�edefd�gZej 	de¡d	d
„ ƒZ
ej 	de¡dd„ ƒZej 	de¡ej 	ddejdg¡dd„ ƒƒZej 	de¡ej 	ddejdg¡dd„ ƒƒZdS )ÚTestIndexingr<   r?   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                 C   sŒ  dd„ }|j dkst|j ƒ‚t|j ƒD �]^}|||td ƒƒ |||tdƒƒ |||tdƒƒ |||tddƒƒ |||tddd	ƒƒ |j dk r&|||tjg tjd
�ƒ |||tj|j| tjd
�ƒ |||tj	|j| tjd
�ƒ |j| dk�r.|||t 
|j| ¡d dkƒ |||tjdddgtjd
�ƒ |||g ƒ |||tt|j| ƒƒƒ |j| dkr&|||dddgƒ |||dd	dgƒ q&d S )Nc                 S   sê   t | ƒ}t|tjƒrb| j| }t|ƒrbt|ƒrbt|ƒt|ƒkrbt |tjt|ƒt|ƒ td�g¡}t|t	ƒr|| j
||d�}n"| jdkrš|dkrš|  |¡}nd S t	d ƒf| |f }tj|| t |ƒdd� t | j| | |j| ¡ d S )NrQ   r-  r.   r   F©Zcheck_dtype)rW  r(   r2   ró   rÏ   r6   Zconcatenaterë   rP   r†   Z	get_slicerV   Zgetitem_mgrr#   r$   r0  )r!   r.  Zslobjrƒ   ÚaxZslicedZ	mat_slobjr   r   r   Úassert_slice_ok¨  s&    
 ÿ
  ÿz4TestIndexing.test_get_slice.<locals>.assert_slice_okr[   r\   éd   r.   r]   r   éþÿÿÿrQ   TFra   éýÿÿÿ)rV   r'   rT  r†   r2   r«   rr   rq   r0   rë   r3   r–   )r£   r!   r[  rZ  r   r   r   Útest_get_slice¦  s0    
   ÿzTestIndexing.test_get_slicec                 C   s�   dd„ }t |jƒD ]x}|||g d� |||dddgd� |||tt |j| ƒƒd� |j| dkr|||dddgd� |||dd	d
gd� qd S )Nc                 S   sT   t | ƒ}|  ||¡}tjt |||¡t |ƒdd� t | j|  |¡|j| ¡ d S )NFrY  )rW  Ztaker#   r$   r2   r0  rÏ   )r!   r.  Úindexerrƒ   Ztakenr   r   r   Úassert_take_okä  s      ÿz.TestIndexing.test_take.<locals>.assert_take_ok)r`  r   r\   r.   r[   ra   r]  r^  )rT  rV   r–   r0   )r£   r!   ra  rZ  r   r   r   Ú	test_takeâ  s    zTestIndexing.test_takeri   Nr4  c                 C   s  dd„ }t |jƒD ]î}|||tg ƒ|ƒ ||||j| |ƒ ||||j| dddg |ƒ |||tdddgƒ|ƒ |||td|j| d dgƒ|ƒ |j| dkr||||j| d d… |ƒ ||||j| dd d	… |ƒ ||||j| dd
ddd
dg |ƒ qd S )Nc                 S   s`   t | ƒ}| j|  |¡}| j|||d�}tjtj||||d�t |ƒdd� t |j| |¡ d S ©Nrh   FrY  )	rW  rÏ   Zget_indexer_forr/  r#   r$   ÚalgosÚtake_ndr0  )r!   r.  Ú
new_labelsri   rƒ   r`  r1  r   r   r   Úassert_reindex_axis_is_okù  s    ýzATestIndexing.test_reindex_axis.<locals>.assert_reindex_axis_is_okr   rä   rå   rê   r\   r^  ra   r.   r[   )rT  rV   r
   rÏ   r0   )r£   ri   r!   rg  rZ  r   r   r   Útest_reindex_axisö  s*       ÿ   ÿzTestIndexing.test_reindex_axisc              
   C   s”  dd„ }t |jƒD �]z}|||tg ƒtjg tjd�|ƒ ||||j| t |j| ¡|ƒ |||tdg|j|  ƒt |j| ¡|ƒ ||||j| d d d… t |j| ¡|ƒ ||||j| t |j| ¡d d d… |ƒ |||tdddgƒt dddg¡|ƒ |||tdddgƒt dddg¡|ƒ |||td|j| d dgƒt dddg¡|ƒ |j| d	kr|||tdddgƒt dd
dg¡|ƒ qd S )Nc                 S   sV   t | ƒ}tj||||d�}| j||||d�}tj|t |ƒdd� t |j| |¡ d S rc  )rW  rd  re  Zreindex_indexerr#   r$   r0  rÏ   )r!   r.  rf  r`  ri   rƒ   Zreindexed_matr1  r   r   r   Úassert_reindex_indexer_is_ok  s       ÿ  ÿzGTestIndexing.test_reindex_indexer.<locals>.assert_reindex_indexer_is_okrQ   rä   ra   rå   rê   r   r\   r.   r[   )	rT  rV   r
   r2   r«   r¬   rÏ   r3   r0   )r£   ri   r!   ri  rZ  r   r   r   Útest_reindex_indexer  s„        ÿ    ÿû    ÿ    ÿ    ÿ    ÿûûz!TestIndexing.test_reindex_indexer)rÇ   rÈ   rÉ   rˆ   rm   r    ZMANAGERSrµ   rÊ   rË   r_  rb  r2   r{   rh  rj  r   r   r   r   rX  “  s"   
ù

;
rX  c                   @   sÂ  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d	„ ƒZej d
edddƒedddƒg¡dd„ ƒZd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d„ ƒZ
ej d
eddƒeddƒeddƒedddƒedddƒg¡dd„ ƒZej ddgedddƒfdgedddƒfdddgedddƒfdddgedddƒfddgedddƒfddgedddƒfg¡dd„ ƒZej dg dgdddgd gdgddddgddddgdddgdddgg	¡d!d"„ ƒZej deddƒdddgfeddƒg feddƒg fg¡d#d$„ ƒZej d%eddƒdddgfeddƒg feddƒg fedddƒdddgfg¡d&d'„ ƒZd(d)„ Zej d*eddƒdg feddƒddddgfedddƒddddgfdddgddddgfeddƒdg feddƒdd+d,d-gfedddƒdd-d,d+gfdddgdd+d,d.gfeddƒdg feddƒddddgfdddgddddgfg¡d/d0„ ƒZej d1eddƒdddgg¡d2d3„ ƒZdS )4ÚTestBlockPlacementzslc, expectedr   r]   r[   r\   r.   ra   c                 C   s   t t|ƒƒ|kst‚d S r"   )r6   r   r'   ©r£   ÚslcrÃ   r   r   r   Útest_slice_lenP  s    z!TestBlockPlacement.test_slice_lenrm  c              	   C   s*   d}t jt|d�� t|ƒ W 5 Q R X d S )Nzslice step cannot be zeror²   ©rµ   r¶   r}   r   ©r£   rm  rÑ   r   r   r   Útest_zero_step_raises]  s    z(TestBlockPlacement.test_zero_step_raisesc                 C   s.   t dddƒ}t|ƒ}|jt dd dƒks*t‚d S )Nr\   ra   r]  )r†   r   r`  r'   )r£   rm  Úbpr   r   r   Ú!test_slice_canonize_negative_stopc  s    z4TestBlockPlacement.test_slice_canonize_negative_stopNr:   c              	   C   s*   d}t jt|d�� t|ƒ W 5 Q R X d S )Nzunbounded slicer²   ro  rp  r   r   r   Útest_unbounded_slice_raisesj  s    z.TestBlockPlacement.test_unbounded_slice_raisesr\  c                 C   s   t |ƒjrt‚d S r"   ©r   Zis_slice_liker'   )r£   rm  r   r   r   Útest_not_slice_like_slices€  s    z-TestBlockPlacement.test_not_slice_like_sliceszarr, slcée   rf   é   éÈ   c                 C   s   t |ƒj|kst‚d S r"   )r   Úas_slicer'   )r£   r8   rm  r   r   r   Útest_array_to_slice_conversion�  s    z1TestBlockPlacement.test_array_to_slice_conversionr8   r]  r^  éöÿÿÿc                 C   s   t |ƒjrt‚d S r"   ru  )r£   r8   r   r   r   Útest_not_slice_like_arrays›  s    z-TestBlockPlacement.test_not_slice_like_arraysc                 C   s   t t|ƒƒ|kst‚d S r"   )r–   r   r'   rl  r   r   r   Útest_slice_iter¬  s    z"TestBlockPlacement.test_slice_iterzslc, arrc                 C   s"   t  t|ƒjtj|tjd�¡ d S )NrQ   )r#   r$   r   r*   r2   Úasarrayr¬   )r£   rm  r8   r   r   r   Útest_slice_to_array_conversion³  s    
 ÿz1TestBlockPlacement.test_slice_to_array_conversionc                 C   sz   t tddƒƒ}| d¡jtdddƒks*t‚| t d¡¡jtdddƒksLt‚t| t ddd¡¡ƒdddddgksvt‚d S )Nr   rf   r.   rg   r:   r[   ra   )r   r†   Úaddrz  r'   r2   r3   r–   )r£   Zbplr   r   r   Útest_blockplacement_addÁ  s    "z*TestBlockPlacement.test_blockplacement_addzval, inc, expectedé   é   é   é   c                 C   s   t t|ƒ |¡ƒ|kst‚d S r"   )r–   r   r�  r'   )r£   ÚvalÚincrÃ   r   r   r   Útest_blockplacement_add_intÇ  s    z.TestBlockPlacement.test_blockplacement_add_intr‡  c              	   C   s0   d}t jt|d�� t|ƒ d¡ W 5 Q R X d S )Nziadd causes length changer²   r|  )rµ   r¶   r}   r   r�  )r£   r‡  rÑ   r   r   r   Ú"test_blockplacement_add_int_raisesÚ  s    z5TestBlockPlacement.test_blockplacement_add_int_raises)rÇ   rÈ   rÉ   rµ   rÊ   rË   r†   rn  rq  rs  rt  rv  r{  r}  r~  r€  r‚  r‰  rŠ  r   r   r   r   rk  O  sÀ   ûþ

 





ôþ


ûþ

úþ


÷þ
,þ
üþ	
õþ
rk  c                
   @   sÊ   e Zd Zejdd„ dd„ dd„ dd„ dd„ dd„ dd„ d	d„ gd
�dd„ ƒZdd„ Zej de	j
e	je	jg¡dd„ ƒZej de	j
e	je	jg¡dd„ ƒZdd„ Zdd„ Zedœdd„Zeedœdd„ZdS )ÚTestCanHoldElementc                 C   s   | S r"   r   ©r/   r   r   r   rŽ   ä  r�   zTestCanHoldElement.<lambda>c                 C   s   |   ¡ S r"   )Z	to_seriesrŒ  r   r   r   rŽ   å  r�   c                 C   s   | j S r"   )rw   rŒ  r   r   r   rŽ   æ  r�   c                 C   s   t | ƒS r"   )r–   rŒ  r   r   r   rŽ   ç  r�   c                 C   s
   |   t¡S r"   )rn   rG   rŒ  r   r   r   rŽ   è  r�   c                 C   s
   t  | ¡S r"   )r2   r  rŒ  r   r   r   rŽ   é  r�   c                 C   s   | d S r�   r   rŒ  r   r   r   rŽ   ê  r�   c                 C   s   | d d… S r�   r   rŒ  r   r   r   rŽ   ë  r�   r   c                 C   s   |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   r   r   r   Úelementâ  s    zTestCanHoldElement.elementc              	   C   sÌ   t ddgƒ}| g ¡st‚t |j ¡ ¡}| d ¡s8t‚d |d< |d tjksRt‚t 	d¡t
dddƒg}|D ]}| |¡s~t‚||d< qltdddƒ}| |¡r¢t‚d}tjt|d�� ||d< W 5 Q R X d S )Nr   r   z
2010-10-10iÚ  r:   zLvalue should be a 'Timestamp', 'NaT', or array of those. Got 'date' instead.r²   )r…   Ú_can_hold_elementr'   Úpdr«   r%   rp   ZNaTr2   r  r   r   rµ   r¶   Ú	TypeError)r£   rà   r8   Úvalsr‡  rÑ   r   r   r   Ú$test_datetime_block_can_hold_elementõ  s     
ÿz7TestCanHoldElement.test_datetime_block_can_hold_elementr&   c                 C   sB   t jdddg|d�}t |¡}t|jdgdd�}| g ¡s>t‚d S )Nr.   r\   r]   rQ   r[   rU   )r2   r«   r   Úfrom_breaksr   rw   rŽ  r'   )r£   r&   r�  r8   Úiir©   r   r   r   Ú(test_interval_can_hold_element_emptylist  s    
z;TestCanHoldElement.test_interval_can_hold_element_emptylistc           
      C   s  t jddddg|d�}t |¡}t|jdgdd�}||ƒ}|  ||d¡ | |¡sVt‚tj|d d	… d
d�}||ƒ}|  ||d¡ | |¡r�t‚t t	dƒt	dƒt	dƒg¡}||ƒ}|  ||d¡ | |¡rÐt‚t t
dƒt
dƒt
dƒg¡}	||	ƒ}|  ||d¡ | |¡�rt‚d S )Nr.   r\   r]   é	   rQ   r[   rU   Tra   Zneither)ÚclosedF)r2   r«   r   r“  r   rw   Úcheck_series_setitemrŽ  r'   r   r   )
r£   r&   r�  r8   r”  r©   ÚelemZii2Zii3Zii4r   r   r   Útest_interval_can_hold_element  s$    
z1TestCanHoldElement.test_interval_can_hold_elementc                 C   s:   t dddd�}t|j dd¡dgdd�}| g ¡s6t‚d S )NÚ2016r\   rJ   ©ZperiodsÚfreqr.   r[   rU   )r   r   rw   ro   rŽ  r'   )r£   Úpir©   r   r   r   Ú&test_period_can_hold_element_emptylist6  s    z9TestCanHoldElement.test_period_can_hold_element_emptylistc                 C   sx   t dddd�}||ƒ}|  ||d¡ | d¡d d… }||ƒ}|  ||d¡ | d	¡d d… }||ƒ}|  ||d¡ d S )
Nr›  r\   rJ   rœ  TÚDra   FÚS)r   r˜  ZasfreqZto_timestamp)r£   r�  rž  r™  Zpi2Zdtir   r   r   Útest_period_can_hold_element<  s    z/TestCanHoldElement.test_period_can_hold_elementr5  c                 C   s2   |j jd }|r | |¡s.t‚n| |¡r.t‚d S r�   )r»   rŸ   rŽ  r'   )r£   Úobjr™  r6  r©   r   r   r   Úcheck_can_hold_elementL  s    z)TestCanHoldElement.check_can_hold_element)Úindexr6  c                 C   sl   |j  ¡ }t|dd�}|  |||¡ t|ƒr6||d< n||d t|ƒ…< |rZ|j|ksht‚n|jt	ksht‚d S )NFr  r   )
rw   r7   r   r¤  r   r6   r«   r'   r&   rG   )r£   r™  r¥  r6  r8   Zserr   r   r   r˜  S  s    

z'TestCanHoldElement.check_series_setitemN)rÇ   rÈ   rÉ   rµ   Úfixturer�  r’  rÊ   rË   r2   r  Zuint64rö   r•  rš  rŸ  r¢  rP   r¤  r
   r˜  r   r   r   r   r‹  á  s*   øÿ


r‹  c                   @   s   e Zd Zdd„ ZdS )ÚTestShouldStorec                 C   sp   t dddgƒ}t|ƒ}|jjd }| |¡s0t‚| |d d… ¡sFt‚| | ¡ ¡rXt‚| t |¡¡rlt‚d S )NrJ   ÚBÚCr   ra   )	r   r   r»   rŸ   Zshould_storer'   Z
as_orderedr2   r  )r£   Úcatr¼   r©   r   r   r   Útest_should_store_categoricale  s    z-TestShouldStore.test_should_store_categoricalN)rÇ   rÈ   rÉ   r«  r   r   r   r   r§  d  s   r§  c              	   C   sF   t  ddg¡}tdƒ}d}tjt|d�� | ||dd� W 5 Q R X d S )Nr7  rF  r[   z:Wrong number of dimensions. values.ndim != ndim \[1 != 2\]r²   rU   )r2   r«   r†   rµ   r¶   r}   )r   r%   rl   rÑ   r   r   r   Útest_validate_ndimu  s
    r¬  c                  C   sf   t dddddgƒ} tdddgƒ | ¡}ttdddgƒƒ | ¡}|jjd jj|jjd jjksbt‚d S )Nr   r.   r[   r\   r]   )	r
   r   Zreindexr   r»   rŸ   r)   r`  r'   )rð   r^   rO   r   r   r   Útest_block_shape~  s    r­  c                 C   sÐ   t j t ddg¡¡}| |tt|ƒƒ|jd�}|jj	dks>t
‚| tkrÌ|jdksTt
‚| |tt|ƒƒ|j|jd�}|jj	dks€t
‚|jdksŽt
‚| | ¡ tt|ƒƒ|j|jd�}|jj	dks¾t
‚|jdksÌt
‚d S )Nr.   r[   rU   )rM   ÚuF)r&   rV   )r�  ZarraysZPandasArrayr2   r«   r†   r6   rV   r&   Úkindr'   r   Zis_extensionZto_numpy)r   r8   rÂ   r   r   r   Útest_make_block_no_pandas_array†  s      
  ÿr°  )N)N)Dr   r   rB  rt   Únumpyr2   rµ   Zpandas._libs.internalsr   Zpandas.compatr   Zpandas.util._test_decoratorsÚutilZ_test_decoratorsrX   Zpandas.core.dtypes.commonr   Zpandasr�  r   r   r	   r
   r   r   r   r   r   Zpandas._testingZ_testingr#   Zpandas.core.algorithmsÚcoreZ
algorithmsrd  Zpandas.core.arraysr   r   r   Zpandas.core.internalsr   r   r   Zpandas.core.internals.blocksr   r   Zskip_array_manager_invalid_testZ
pytestmarkr¦  r   r!   r-   r9   rm   r…   rˆ   r    r    r¡   rÌ   rW  rX  rk  r‹  r§  r¬  r­  r°  r   r   r   r   Ú<module>   sZ   ,

X


?
u      =  	