a
    =Â×_tÇ  ã                   @   sè  d dl Z d dlZd dlZd dlZd dlZd dlmZmZmZm	Z	m
Z
mZ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Z d dlmZ d dlmZ g d¢Zejdkr¼eg d	¢7 Zneg d
¢7 Zedg7 Zeedƒræe d¡ eedƒsüeedƒre d¡ eedƒseedƒr(e d¡ dddœej  Z G dd„ deƒZ!G dd„ de!ƒZ"G dd„ de!ƒZ#G dd„ de!ƒZ$G dd „ d e!ƒZ%G d!d"„ d"e!ƒZ&G d#d$„ d$e!ƒZ'G d%d&„ d&e!ƒZ(G d'd(„ d(ej)eƒZ*G d)d*„ d*ej+ƒZ,G d+d,„ d,ej)eƒZ-G d-d.„ d.ej+ƒZ.G d/d0„ d0ej+ƒZ/G d1d2„ d2ej)eƒZ0G d3d4„ d4e0ƒZ1G d5d6„ d6e0ƒZ2G d7d8„ d8ej)eƒZ3G d9d:„ d:e3ƒZ4G d;d<„ d<e3ƒZ5G d=d>„ d>ej)eƒZ6G d?d@„ d@e6ƒZ7G dAdB„ dBe6ƒZ8dCdD„ Z9e:dEkräe ;ej<¡ e =¡  ej>dDdF dS )Gé    N)Ú	StringColÚBoolColÚFloatColÚ
ComplexColÚEnumColÚInt8ColÚUInt8ColÚInt16ColÚ	UInt16ColÚInt32ColÚ	UInt32ColÚInt64ColÚ
Float32ColÚ
Float64ColÚ	Time64Col)Úcommon)Úallequal)Úunittest)ÚPyTablesTestCase)ÚbÚhÚiÚlÚqÚfÚdZwin32)ÚBÚHÚIÚLÚQÚFÚD)r   r   r   r   r!   r"   Zb1ZFloat16AtomÚeZFloat96AtomZFloat128AtomÚgZComplex192AtomZConplex256AtomÚGú<ú>)ÚlittleZbigc                   @   s<   e Zd ZdZdZdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Z	dS )ÚBasicTestCasezmBasic test for all the supported typecodes present in NumPy.

    All of them are included on PyTables.

    r   c              	   C   s@  t jr0tddƒ td|jj dd td| jƒ t d¡| _zÞt	j
| jdd	4| _| jj| _|}| j | jd
|d¡ W d   ƒ n1 sŠ0    Y  t	j
| jdd	F| _| jj| _| jj ¡ }t|dƒsÞtjj||jjd}t jrFtd|ƒ td|jƒ td|jƒ td|jjƒ td|ƒ td|jƒ td|jƒ td|jjƒ | jjjj}|  t|ƒt|ƒ¡ |  |j|j¡ |  |j| jjj¡ |  |j|j¡ |jjd dkrº|  |d¡ n|  |jjj|¡ |  t||dƒ¡ W d   ƒ n1 sô0    Y  W tj | j¡r<t  | j¡ ntj | j¡r:t  | j¡ 0 d S )NÚ
ú<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=z)Running test for array with typecode '%s'ú ©Úendzfor class check:z.h5Úw©ÚmodeÚ	somearrayz
Some arrayÚrÚshape©ÚdtypezArray written:zArray written shape:zArray written itemsize:zArray written type:zArray read:zArray read shape:zArray read itemsize:zArray read type:r   ÚSÚstringÚnumpy)!r   ÚverboseÚprintr6   ÚcharÚtitleÚtempfileZmktempÚh5fnameÚtablesÚ	open_fileÚh5fileÚrootÚcreate_arrayr2   ÚreadÚhasattrÚnpÚarrayÚstrr4   ÚitemsizeZatomÚtypeÚassertEqualÚbaseÚnameÚ
assertTruer   ÚosÚpathÚexistsÚremove)ÚselfZ	testArrayÚar   Útype_© rW   ú6lib/python3.9/site-packages/tables/tests/test_numpy.pyÚ	WriteRead0   sV    
ÿÿ
ÿ"



4ÿzBasicTestCase.WriteReadc                 C   s*   t  | jdtt| jƒƒ ¡}|  |¡ dS )z2Data integrity during recovery (character objects)r7   N)rG   rH   Ú	tupleCharrI   ÚlenrY   )rT   rU   rW   rW   rX   Útest00_charl   s    zBasicTestCase.test00_charc                 C   sh   t  | jdtt| jƒƒ ¡}|jdkr,|}n.|ddd… }|jd dkrZ|  |jd d¡ |  |¡ dS )zAData integrity during recovery (non-contiguous character objects)r7   rW   Né   r   Ú
CONTIGUOUSF)	rG   rH   rZ   rI   r[   r4   rL   ÚflagsrY   )rT   rU   r   rW   rW   rX   Útest01_char_ncr   s    
zBasicTestCase.test01_char_ncc                 C   s>   t D ]4}| jjr| j |¡}ntj| j|d}|  |¡ qdS )z0Data integrity during recovery (numerical types)r5   N)Ú	typecodesÚtupleIntr4   ÚastyperG   rH   rY   )rT   ÚtypecoderU   rW   rW   rX   Útest02_types   s
    zBasicTestCase.test02_typesc                 C   s€   t D ]v}| jjr| j |¡}ntj| j|d}t|jƒdkrBtj‚|ddd… }|jd dkrp|  	|j
d d¡ |  |¡ qdS )z?Data integrity during recovery (non-contiguous numerical types)r5   r   Nr]   r^   F)ra   rb   r4   rc   rG   rH   r[   r   ZSkipTestrL   r_   rY   )rT   rd   rU   r   rW   rW   rX   Útest03_types_ncŠ   s    zBasicTestCase.test03_types_ncN)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__ZendiancheckrY   r\   r`   re   rf   rW   rW   rW   rX   r)   (   s   <r)   c                   @   s   e Zd ZdZe d¡ZdZdS )ÚBasic0DOneTestCasezRank-0 case 1é   Ú4N©rg   rh   ri   r=   rG   rH   rb   rZ   rW   rW   rW   rX   rk   Ÿ   s   
rk   c                   @   s   e Zd ZdZe d¡ZdZdS )ÚBasic0DTwoTestCasezRank-0 case 2é!   Z44Nrn   rW   rW   rW   rX   ro   ¦   s   
ro   c                   @   s   e Zd ZdZe d¡ZdZdS )ÚBasic1DOneTestCasezRank-1 case 1©rl   )rU   Nrn   rW   rW   rW   rX   rq   ­   s   
rq   c                   @   s   e Zd ZdZe d¡ZdZdS )ÚBasic1DTwoTestCasezRank-1 case 2)r   é   )ÚaaaNrn   rW   rW   rW   rX   rs   ´   s   
rs   c                   @   s   e Zd ZdZe d¡ZdZdS )ÚBasic1DThreeTestCasezRank-1 case 3)rl   rt   é   )ZaaaaZbbbNrn   rW   rW   rW   rX   rv   »   s   
rv   c                   @   s0   e Zd ZdZe d¡ZddgddgddggZd	S )
ÚBasic2DTestCasezRank-2 case 1)rt   rt   ru   Zdddddr   ZssÚsZttN)rg   rh   ri   r=   rG   Úonesrb   rZ   rW   rW   rW   rX   rx   Â   s   
rx   c                   @   s(   e Zd ZdZe d¡ZejeddZdS )ÚBasic10DTestCasezRank-10 case 1)
r]   r]   r]   r]   r]   r]   r]   r]   r]   r]   ÚS1r5   N)	rg   rh   ri   r=   rG   rz   rb   rH   rZ   rW   rW   rW   rX   r{   Ê   s   
r{   c                   @   s    e Zd ZdZdd„ Zdd„ ZdS )ÚGroupsArrayTestCasezvThis test class checks combinations of arrays with groups.

    It also uses arrays ranks which ranges until 10.

    c                 C   sŽ  t jr tddƒ td| jj ƒ | jj}d}tD ]b}t 	d| |¡}d| }t jrbtd| 
|¡ƒ | j |||d¡ | j |d	t|ƒ ¡}|d7 }q0|  ¡  | jj}tdttƒƒD ]Ô}t 	d| t|d  ¡}t|dt|d   ƒ}| ¡ }t||d
ƒsdt jrdtd|jƒ td|ƒ td|jƒ td|jdd td|j ƒ td|jdd td|jj ƒ |  |j|j¡ t d¡jdkrö|jjdks¢|jjdkr´|  |jjd¡ n@|jjdksÐ|jjdkrâ|  |jjd¡ n|  t||d
ƒ¡ n€t d¡jdkrv|jjdks$|jjdkr6|  |jjd¡ n@|jjdksR|jjdkrd|  |jjd¡ n|  t||d
ƒ¡ t|d	t|ƒ ƒ}q²d S )!zoChecking combinations of arrays with groups

        It also uses arrays ranks which ranges until 10.

        r*   r+   z$Running %s.test00_iterativeGroups...é   ©r]   Zarray_zCreating dataset:zLarge arrayÚgroupr9   zArray a original. Shape: ==>zArray a original. Data: ==>úInfo from dataset:z  shape ==>r,   r-   z  dtype ==> %sú"Array b read from file. Shape: ==>z. Type ==> %sr   rt   r   ©r   r   r   r   )r   r   é   r   )r   r   r    )r   r    N)r   r:   r;   Ú	__class__rg   rB   rC   ra   rG   rz   Z_g_joinrD   Úcreate_grouprI   Ú_reopenÚranger[   ÚgetattrrE   r   r4   Ú_v_pathnamer6   r<   rL   rJ   ÚassertInrO   )rT   r€   r   rd   rU   ZdsetnameÚdsetr   rW   rW   rX   Útest00_iterativeGroupså   sV    
ÿ

z*GroupsArrayTestCase.test00_iterativeGroupsc                 C   s
  d}d}t jr2tddƒ td| jj ƒ td|ƒ | jj}t jrLtddd	 t||d ƒD ]V}t 	d
| d¡}t jr„td| dd	 | j 
|d|d| ¡ | j |dt|ƒ ¡}qZ| j ¡  |  ¡  | jj}t jràtƒ  tdƒ t||d ƒD ]}t 	d
| d¡}|j ¡ }t jr&td| dd	 | ¡ | ¡ kst jr|j}td|jƒ td|jdd	 td|j ƒ td|jdd	 td|jj ƒ |  |j|j¡ |jjdkrÀ|  |jjd¡ n|  |jj|jj¡ |  ||¡ | j |dt|ƒ ¡}qît jrtƒ  dS )z€Checking creation of large rank arrays (0 < rank <= 32)

        It also uses arrays ranks which ranges until maxrank.

        r~   é    r*   r+   z$Running %s.test01_largeRankArrays...zMaximum rank for tested arrays:zRank array writing progress: r,   r-   )r~   r   z%3d,rH   zRank: %sr€   zRank array reading progress: r   z  Shape: ==>z  typecode ==> %cr‚   z. Type ==> %crƒ   N)r   r:   r;   r…   rg   rB   rC   rˆ   rG   rz   rD   r†   rI   Úflushr‡   rH   rE   ÚtolistrŠ   r4   rd   r6   r<   rL   r‹   Zget_node)rT   ZminrankZmaxrankr€   ZrankrU   r   rŒ   rW   rW   rX   Útest01_largeRankArrays7  sV    

ÿ


z*GroupsArrayTestCase.test01_largeRankArraysN)rg   rh   ri   rj   r   r‘   rW   rW   rW   rX   r}   Þ   s   Rr}   c                   @   s  e Zd ZeddddZeddddZeddZeddZ	e
ddZeddZeddZeddZeddZeddZeddZeddZed	d
dZedd
dZeedƒr¶ejddZ eedƒrÌej!ddZ"eedƒrâej#ddZ$eedƒrúejdd
dZ%eedƒrejdd
dZ&dS )ÚRecordrt   s   abcdr   ©rJ   ÚdfltÚposr~   ó   a©r”   g      ð?r„   y      ð?        )rJ   r”   é   Ú
Float16ColÚ
Float96ColÚFloat128ColZComplex196Colé   ZComplex256ColrŽ   N)'rg   rh   ri   r   Úvar1Úvar2r   Úvar3r   Úvar4r   Zvar5r	   Zvar6r
   Úvar7r   Zvar8r   Zvar9r   Zvar10r   Zvar11r   Zvar12r   Zvar13Zvar14rF   r@   r™   Zvar15rš   Zvar16r›   Zvar17Zvar18Zvar19rW   rW   rW   rX   r’   €  s0   













r’   c                       sP   e Zd ZdZ‡ fdd„Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
‡  ZS )ÚTableReadTestCaseéd   c                    sL   t t| ƒ ¡  | j | jjdt¡}t| jƒD ]}|j	 
¡  q,| jdd d S )NÚtablerU   r0   )Úsuperr¢   ÚsetUprB   Úcreate_tablerC   r’   rˆ   ÚnrowsÚrowÚappendr‡   ©rT   r¤   r   ©r…   rW   rX   r¦   ž  s
    zTableReadTestCase.setUpc                 C   sì   | j jj}d|_|jD ]Ð}|j|d}|j| }|jj| j	j
}|jj}|dkr|dkrptjdg| j dd}ntjdg| j d	d}tjrÔtd
|ƒ tddƒ td|ƒ td|jƒ td|jƒ td|dd… ƒ |  t||dƒ¡ qdS )zOChecking column conversion into NumPy in read().

        Char flavor

        r9   ©Zfieldr8   r~   ÚabcdÚS4r5   rU   r|   úTypecode of NumPy column read:úShould look like:ÚcúItemsize of column:úShape of NumPy column read:úFirst 3 elements of read col:Nrl   )rB   rC   r¤   ÚflavorÚcolnamesrE   ÚcoltypesÚdescriptionÚ	_v_dtypesrM   rJ   r6   r<   rG   rH   r¨   r   r:   r;   r4   rO   r   )rT   r¤   ÚcolnameÚnumcolÚtypecolÚitemsizecolÚ
nctypecodeÚ
orignumcolrW   rW   rX   Útest01_readTableChar¨  s&    





z&TableReadTestCase.test01_readTableCharc                 C   s   | j jj}d|_|jD ]t}|j|d}|j| }tj|j	j
d  }|dkrtjrdtd|ƒ td|ƒ tj| j|j	j
d}|  t||dƒ¡ qdS )	zPChecking column conversion into NumPy in read().

        NumPy flavor

        r9   r­   r   r8   r°   r±   ©r4   r6   N)rB   rC   r¤   r¶   r·   rE   r¸   rG   Z
sctypeDictr6   r<   r   r:   r;   rz   r¨   rO   r   )rT   r¤   r»   r¼   r½   r¿   rÀ   rW   rW   rX   Útest01_readTableNumÅ  s    




z%TableReadTestCase.test01_readTableNumc           	      C   s   | j jj}d|_g d¢}t|ƒ| _|jD ]Ò}|j||d}|j| }|j	j
| jj}|jj}|dkr(|dkr„tjdg| j dd}ntjd	g| j d
d}tjrètd|ƒ tddƒ td|ƒ td|jƒ td|jƒ td|dd… ƒ |  t||dƒ¡ q(dS )zFColumn conversion into NumPy in readCoords().

        Chars

        r9   ©r~   r]   rl   r­   r8   r~   r®   r¯   r5   rU   r|   r°   r±   r²   r³   r´   rµ   Nrl   )rB   rC   r¤   r¶   r[   r¨   r·   Úread_coordinatesr¸   r¹   rº   rM   rJ   r6   r<   rG   rH   r   r:   r;   r4   rO   r   )	rT   r¤   Úcoordsr»   r¼   r½   r¾   r¿   rÀ   rW   rW   rX   Útest02_readCoordsCharÛ  s*    






z'TableReadTestCase.test02_readCoordsCharc                 C   s¨   | j jj}d|_g d¢}t|ƒ| _|jD ]z}|j||d}|j| }|j	j
}|dkr(|dkrb dS tjr|td|ƒ td|ƒ tj| j|j	jd	}|  t||dƒ¡ q(dS )
zMColumn conversion into NumPy in read_coordinates().

        NumPy.

        r9   rÄ   r­   r8   Úint64NúType of read NumPy column:r±   rÂ   )rB   rC   r¤   r¶   r[   r¨   r·   rÅ   r¸   r6   rK   r   r:   r;   rG   rz   r<   rO   r   )rT   r¤   rÆ   r»   r¼   r½   rV   rÀ   rW   rW   rX   Útest02_readCoordsNumú  s     





z&TableReadTestCase.test02_readCoordsNumc                    s¶   | j jj‰tjg d¢dd}ˆjD ]Ž‰ ‡ ‡fdd„|D ƒ}ˆjˆ  }|dkr"|dkrZ dS t ||¡}tjrˆ|j	j
}td	|ƒ td
|ƒ tjt|ƒ|j	jd}|  t||dƒ¡ q"dS )z7Getting table rows specifyied as NumPy scalar integers.rÄ   Úint8r5   c                    s   g | ]}ˆ| ˆ  ‘qS rW   rW   )Ú.0Zcoord©r»   r¤   rW   rX   Ú
<listcomp>  ó    z:TableReadTestCase.test03_getIndexNumPy.<locals>.<listcomp>r8   rÈ   NrÉ   r±   rÂ   r9   )rB   rC   r¤   rG   rH   r·   r¸   r   r:   r6   rK   r;   rz   r[   r<   rO   r   )rT   rÆ   r¼   r½   rV   rÀ   rW   rÍ   rX   Útest03_getIndexNumPy  s"    





ÿz&TableReadTestCase.test03_getIndexNumPyc                 C   sÞ   | j dd | jjj}d|_tjg d¢dd}ttj	ƒd }t
dd	gd
g|  ƒ||d < | |d |d d ¡}tjrŠtdƒ td|ƒ |  |d d¡ |  |d d¡ |  |d d¡ |  |d d¡ |  |d d
¡ dS )z0Setting table rows specifyied as NumPy integers.rU   r0   r9   rÄ   rË   r5   r]   ZaasaÚxéè   r   r~   z{Original row:
['aasa', 'x', True, -24, 232, 232, 232, 232, 232L, 232, 232.0, 232.0, (232 + 0j), (232+0j), 232.0, (232+0j)]
z
Read row:
r   s   aasarž   ó   xrŸ   Tr    ièÿÿÿr¡   N)r‡   rB   rC   r¤   r¶   rG   rH   r[   r’   ÚcolumnsÚtuplerE   r   r:   r;   rL   )rT   r¤   rÆ   ÚnÚrecordrW   rW   rX   Útest04_setIndexNumPy(  s    

z&TableReadTestCase.test04_setIndexNumPy)rg   rh   ri   r¨   r¦   rÁ   rÃ   rÇ   rÊ   rÐ   rØ   Ú__classcell__rW   rW   r¬   rX   r¢   ›  s   
r¢   c                   @   s$   e Zd ZdZeddZeddZdS )ÚInforl   r]   ©rJ   r˜   N)rg   rh   ri   Ú_v_posr   ÚNamer   ZValuerW   rW   rW   rX   rÚ   G  s   
rÚ   c                   @   sr   e Zd ZdZeddddZedddZeddZ	e
d	ddd
œddddZed	dddZeƒ ZG dd„ dejƒZdS )Ú
TestTDescrz.A description that has several nested columns.r   r]   )r”   r4   r•   r~   ©r]   r]   )r”   r4   r—   rt   )r3   r$   r   r3   Úint32©r4   s   abr“   c                   @   sH   e Zd ZdZeddZedddZeddZ	e
ƒ ZG dd	„ d	ejƒZd
S )zTestTDescr.Infor~   r]   rÛ   r˜   r   )rJ   r•   )r•   c                   @   s,   e Zd ZeddZeddZedddZdS )zTestTDescr.Info.Info2r]   rá   rÛ   r˜   )rJ   r4   N)	rg   rh   ri   r   Úy3r   rN   r   ÚvaluerW   rW   rW   rX   ÚInfo2_  s   

rä   N)rg   rh   ri   rÜ   r   rN   r   rã   r   Úy2r   Úz2r@   ÚIsDescriptionrä   rW   rW   rW   rX   rÚ   X  s   

rÚ   N)rg   rh   ri   rj   r   rÑ   r   Úyr   Úzr   Zz3r   ÚcolorrÚ   Úinfor@   rç   rW   rW   rW   rX   rÞ   M  s   
rÞ   c                       s¸   e Zd ZdZ‡ fdd„Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Z‡  ZS )*ÚTableNativeFlavorTestCaser£   c                    sT   t t| ƒ ¡  | jj| jjdt| jd}d|_t	| jƒD ]}|j
 ¡  q8| ¡  d S )Nr¤   )Zexpectedrowsr9   )r¥   rì   r¦   rB   r§   rC   rÞ   r¨   r¶   rˆ   r©   rª   r   r«   r¬   rW   rX   r¦   h  s    ÿzTableNativeFlavorTestCase.setUpc                 C   s:  | j r| jdd | jjj}|dd… }tjr\tdt|ƒƒ td|j	j
ƒ td|dd… ƒ |  |tj¡ |jjdd… }|  |tj¡ tjdd	d
}|  t||dƒ¡ |jjdd… }|  |tj¡ dddg d¢fddg}tjd|d
}|  |j	j
|j	j
¡ tjrtd|ƒ td|ƒ |  t| ¡ jƒt|jƒ¡ dS )z)Checking the return of a NumPy in read().rU   r0   NúType of read:úDescription of the record:úFirst 3 elements of read:rl   ©rl   r]   rà   r5   r9   )rã   Úc16)rå   Úf8rä   )©rN   ZS2)rã   rñ   r   )râ   rò   r   ró   )ræ   Úu1rr   úcol-->únpcol-->)Úcloser‡   rB   rC   r¤   r   r:   r;   rK   r6   ÚdescrÚassertIsInstancerG   ÚndarrayÚcolsrÑ   ÚzerosrO   r   rÚ   rL   ÚbytesÚcopyÚdata©rT   r¤   rÿ   ÚcolZnpcolr6   rW   rW   rX   Útest01a_basicTableReads  s:    
ÿù

z0TableNativeFlavorTestCase.test01a_basicTableReadc                 C   sf  | j r| jdd | jjj}|ddd… }tjr^tdt|ƒƒ td|j	j
ƒ td|dd… ƒ |  |tj¡ |jjddd… }|  |tj¡ tjd	d
d}|  t||dƒ¡ |jjddd… }|  |tj¡ ddt fddt fddddt dfddt dfgfddg}tjd|d}|  |j	j
|j	j
¡ tjrFtd|ƒ td|ƒ |  t| ¡ jƒt|jƒ¡ dS )z;Checking the return of a NumPy in read() (strided version).rU   r0   Nrl   rí   rî   rï   é	   rð   rà   r5   r9   rã   ú%sc16rå   ú%sf8rä   ©rN   z|S2r   râ   ©ræ   z|u1rr   rõ   rö   )r÷   r‡   rB   rC   r¤   r   r:   r;   rK   r6   rø   rù   rG   rú   rû   rÑ   rü   rO   r   rÚ   Ú	byteorderrL   rý   rþ   rÿ   r   rW   rW   rX   Útest01b_basicTableRead  s@    


þÿù

z0TableNativeFlavorTestCase.test01b_basicTableReadc                 C   s˜   | j r| jdd | jjj}| d¡}tjrZtdt	|ƒƒ td|j
jƒ td|dd… ƒ |  |tj¡ |  t|ƒd	¡ |  t|tjd	d
ddƒ¡ dS )z6Checking the return of NumPy in get_where_list method.rU   r0   zz == 1rí   rî   rï   Nrl   r£   Zi8r5   r9   )r÷   r‡   rB   rC   r¤   Úget_where_listr   r:   r;   rK   r6   rø   rù   rG   rú   rL   r[   rO   r   Zarange©rT   r¤   rÿ   rW   rW   rX   Útest02_getWhereListÇ  s    

z-TableNativeFlavorTestCase.test02_getWhereListc                 C   s‚   | j jj}|jj ¡  | jr2| jdd | j jj}| d¡}t	j
r^tdt|ƒƒ tdt|ƒƒ |  |tj¡ |  t|ƒ| j¡ dS )z<Checking the return of NumPy in read_where method (strings).rU   r0   úcolor == b"ab"rí   úLength of the data read:N)rB   rC   r¤   rû   rê   Úcreate_indexr÷   r‡   Ú
read_wherer   r:   r;   rK   r[   rù   rG   rú   rL   r¨   r  rW   rW   rX   Útest03a_readWhereÜ  s    


z+TableNativeFlavorTestCase.test03a_readWherec                 C   s€   | j jj}|jj ¡  | jr2| jdd | j jj}| d¡}t	j
r^tdt|ƒƒ tdt|ƒƒ |  |tj¡ |  t|ƒd¡ dS )z<Checking the return of NumPy in read_where method (numeric).rU   r0   zz == 0rí   r  r   N)rB   rC   r¤   rû   ré   r  r÷   r‡   r  r   r:   r;   rK   r[   rù   rG   rú   rL   r  rW   rW   rX   Útest03b_readWhereï  s    


z+TableNativeFlavorTestCase.test03b_readWherec                 C   s&  ddt  fddt  fddddt  dfddt  dfgfdd	g}tjd
|d}| j | jjd|¡}| jrz| jdd | jjj}|dd… }t	j
rÈtdt|ƒƒ td|jjƒ td|dd… ƒ tdt|ƒƒ |  |tj¡ |  |jj|jj¡ t	j
rtd|ƒ td|ƒ |  t| ¡ jƒt|jƒ¡ dS )z2Checking the Table creation from a numpy recarray.rã   r  rå   r  rä   r  r   râ   r  rr   r5   Útable2rU   r0   Nrí   rî   rï   rl   r  ú	npdata-->údata-->)r  rG   rü   rB   r§   rC   r÷   r‡   r  r   r:   r;   rK   r6   rø   r[   rù   rú   rL   rý   rþ   rÿ   )rT   r6   Únpdatar¤   rÿ   rW   rW   rX   Útest04a_createTable  s8    

þÿù


z-TableNativeFlavorTestCase.test04a_createTablec                 C   sæ   | j jj}|dd… }| |¡ | jr<| jdd | j jj}|dd… }tjrŠtdt	|ƒƒ td|j
jƒ td	|dd… ƒ td
t|ƒƒ |  |tj¡ |  |j
j|j
j¡ tjrÆtd|ƒ td|ƒ |  t| ¡ jƒt|jƒ¡ dS )z$Checking appending a numpy recarray.rl   é   rU   r0   éýÿÿÿNrí   rî   zLast 3 elements of read:r  r  r  )rB   rC   r¤   rª   r÷   r‡   r   r:   r;   rK   r6   rø   r[   rù   rG   rú   rL   rý   rþ   rÿ   )rT   r¤   r  rÿ   rW   rW   rX   Útest04b_appendTable%  s$    




z-TableNativeFlavorTestCase.test04b_appendTablec                 C   sÐ   | j jj}tjddd|jjdd…< | jr@| jdd | j jj}|jjdd… }t	j
r’tdt|ƒƒ td|jjƒ td	|dd
… ƒ tdt|ƒƒ |  |tj¡ |  t|ƒd¡ |  t|tjddddƒ¡ dS )zChecking assigning to a column.)r£   rô   r5   NrU   r0   rí   rî   rï   rl   r  r£   r9   )rB   rC   r¤   rG   rü   rû   ré   r÷   r‡   r   r:   r;   rK   r6   rø   r[   rù   rú   rL   rO   r   r  rW   rW   rX   Útest05a_assignColumnA  s    

z.TableNativeFlavorTestCase.test05a_assignColumnc                 C   s  | j jj}t dd¡}t dd¡}t dd¡}| ddd	|||gg d
¢¡ | jrf| jdd | j jj}|j	j
dd… }tjr¸tdt|ƒƒ td|jjƒ td|dd… ƒ tdt|ƒƒ |  |tj¡ |  |jj|jj¡ tjrôtd|ƒ td|ƒ |  | ¡ j|j¡ dS )z+Checking modifying several columns at once.rð   rà   ©rl   r]   r]   Úfloat64rr   Zuint8rl   r  r~   ©rÑ   rè   ré   rU   r0   rí   rî   rï   Nr  úycol-->r  )rB   rC   r¤   rG   rz   rü   Úmodify_columnsr÷   r‡   rû   rè   r   r:   r;   rK   r6   rø   r[   rù   rú   rL   rþ   rÿ   )rT   r¤   ZxcolÚycolZzcolrÿ   rW   rW   rX   Útest05b_modifyingColumnsY  s(    



z2TableNativeFlavorTestCase.test05b_modifyingColumnsc                 C   s  | j jj}g d¢}tjd|d}| ddd|g d¢¡ | jrR| jdd	 | j jj}t d
d¡}|jj	dd… }t
jr°tdt|ƒƒ td|jjƒ td|dd… ƒ tdt|ƒƒ |  |tj¡ |  |jj|jj¡ t
jrìtd|ƒ td|ƒ |  | ¡ j|j¡ dS )z?Checking modifying several columns using a single numpy buffer.))rÑ   Zi4r   )rè   rò   rß   )ré   rô   rr   r5   rl   r  r~   r  rU   r0   r  r  rí   rî   rï   Nr  r  r  )rB   rC   r¤   rG   rü   r   r÷   r‡   rû   rè   r   r:   r;   rK   r6   rø   r[   rù   rú   rL   rþ   rÿ   )rT   r¤   r6   Znparrayr!  rÿ   rW   rW   rX   Útest05c_modifyingColumnsw  s(    



z2TableNativeFlavorTestCase.test05c_modifyingColumnsc                 C   sD  | j jj}ddt fddt fddddt dfddt dfgfdd	g}tjd
|d}|jjdd… }|jddd|dd | j	r”| j
dd | j jj}|jjdd… }tjrætdt|ƒƒ td|jjƒ td|dd… ƒ tdt|ƒƒ |  |tj¡ |  |jj|jj¡ tjr$td|ƒ td|ƒ |  t| ¡ jƒt|jƒ¡ dS )z9Checking assigning a nested column (using modify_column).rã   r  rå   r  rä   r  r   râ   r  rr   r5   rl   r  r~   rÚ   )Úcolumnr»   rU   r0   rí   rî   rï   Nr  r  r  )rB   rC   r¤   r  rG   rü   rû   rÚ   Zmodify_columnr÷   r‡   r   r:   r;   rK   r6   rø   r[   rù   rú   rL   rý   rþ   rÿ   ©rT   r¤   r6   r  rÿ   rW   rW   rX   Útest06a_assignNestedColumn•  s<    


þÿù


z4TableNativeFlavorTestCase.test06a_assignNestedColumnc                 C   s0  | j jj}ddt fddt fddddt dfddt dfgfdd	g}tjd
|d}||jjdd…< | jr€| j	dd | j jj}|jjdd… }t
jrÒtdt|ƒƒ td|jjƒ td|dd… ƒ tdt|ƒƒ |  |tj¡ |  |jj|jj¡ t
jrtd|ƒ td|ƒ |  t| ¡ jƒt|jƒ¡ dS )z>Checking assigning a nested column (using the .cols accessor).rã   r  rå   r  rä   r  r   râ   r  rr   r5   rl   r  rU   r0   rí   rî   rï   Nr  r  r  )rB   rC   r¤   r  rG   rü   rû   rÚ   r÷   r‡   r   r:   r;   rK   r6   rø   r[   rù   rú   rL   rý   rþ   rÿ   r%  rW   rW   rX   Útest06b_assignNestedColumnº  s:    


þÿù


z4TableNativeFlavorTestCase.test06b_assignNestedColumnc                 C   s  | j jj}|dd… }d|d dd…< |jddd|d | jrT| jd	d
 | j jj}t dd¡d }|jj	dd… }t
jr¶tdt|ƒƒ td|jjƒ td|dd… ƒ tdt|ƒƒ |  |tj¡ |  |jj|jj¡ t
jròtd|ƒ td|ƒ |  t||dƒ¡ dS )z<Checking modifying several rows at once (using modify_rows).r   rl   éÿÿÿÿrè   Nr  r~   )ZrowsrU   r0   r  r  rí   rî   rï   r  r  r  r9   ©rB   rC   r¤   Zmodify_rowsr÷   r‡   rG   rü   rû   rè   r   r:   r;   rK   r6   rø   r[   rù   rú   rL   rO   r   ©rT   r¤   Úchunkr!  rÿ   rW   rW   rX   Útest07a_modifyingRowsà  s(    



z/TableNativeFlavorTestCase.test07a_modifyingRowsc                 C   s  | j jj}|dd… }d|d dd…< ||jdd…< | jrP| jdd | j jj}t d	d
¡d }|jjdd… }t	j
r²tdt|ƒƒ td|jjƒ td|dd… ƒ tdt|ƒƒ |  |tj¡ |  |jj|jj¡ t	j
rîtd|ƒ td|ƒ |  t||dƒ¡ dS )z>Checking modifying several rows at once (using cols accessor).r   rl   r(  rè   Nr  rU   r0   r  r  r~   rí   rî   rï   r  r  r  r9   ©rB   rC   r¤   rû   r÷   r‡   rG   rü   rè   r   r:   r;   rK   r6   rø   r[   rù   rú   rL   rO   r   r*  rW   rW   rX   Útest07b_modifyingRows   s(    



z/TableNativeFlavorTestCase.test07b_modifyingRowsc                 C   s  | j jj}|dd… }d|d dd…< | ddd|¡ | jrR| jd	d
 | j jj}t dd¡d }|jj	d }t
jr°tdt|ƒƒ td|jjƒ td|dd… ƒ tdt|ƒƒ |  |tj¡ |  |jj|jj¡ t
jrìtd|ƒ td|ƒ |  t||dƒ¡ dS )z<Checking modifying just one row at once (using modify_rows).rl   rt   r(  rè   Nr  é   r~   rU   r0   rß   r  rí   rî   rï   r  r  r  r9   r)  r*  rW   rW   rX   Útest08a_modifyingRows"  s(    



z/TableNativeFlavorTestCase.test08a_modifyingRowsc                 C   sü   | j jj}|dd… }d|d dd…< ||jd< | jrL| jdd | j jj}t d	d
¡d }|jjd }t	j
rªtdt|ƒƒ td|jjƒ td|dd… ƒ tdt|ƒƒ |  |tj¡ |  |jj|jj¡ t	j
rætd|ƒ td|ƒ |  t||dƒ¡ dS )z>Checking modifying just one row at once (using cols accessor).rl   rt   r(  rè   Nr  rU   r0   rß   r  r~   rí   rî   rï   r  r  r  r9   r-  r*  rW   rW   rX   Útest08b_modifyingRowsD  s(    




z/TableNativeFlavorTestCase.test08b_modifyingRowsc                 C   sª   | j r| jdd | jjj}| d¡}| |¡}tjrdt	dt
|ƒƒ t	d|jjƒ t	d|dd… ƒ |  |tj¡ |  t|ƒd	¡ |d
 D ]}|  |tjddd¡ qŠdS )z2Checking the return of string columns with spaces.rU   r0   r  rí   rî   rï   Nrl   r£   rê   Úabú|S4r5   )r÷   r‡   rB   rC   r¤   r
  rÅ   r   r:   r;   rK   r6   rø   rù   rG   rú   rL   r[   rH   )rT   r¤   Zrdatarÿ   ÚidatarW   rW   rX   Útest09a_getStringsf  s    


z,TableNativeFlavorTestCase.test09a_getStringsc                 C   sð   | j r| jdd | jjj}tdƒD ]}d|jj|< q$| ¡  |dd… }t	j
r~tdt|ƒƒ td|jjƒ td|dd	… ƒ |  |tj¡ |  t|ƒd
¡ td
ƒD ]F}|d | }|dkrÔ|  |tjddd¡ q¤|  |tjddd¡ q¤dS )zNChecking the return of string columns with spaces.

        (modify)

        rU   r0   é2   úa  Nrí   rî   rï   rl   r£   rê   r2  r3  r5   )r÷   r‡   rB   rC   r¤   rˆ   rû   rê   r   r   r:   r;   rK   r6   rø   rù   rG   rú   rL   r[   rH   )rT   r¤   r   rÿ   r4  rW   rW   rX   Útest09b_getStrings}  s$    
z,TableNativeFlavorTestCase.test09b_getStringsc                 C   s"  | j r| jdd | jjj}|j}tdƒD ]}d|d< | ¡  q*| ¡  | j rh| j  ¡  t	 
| jd¡| _| jjjdd… }tjr®tdt|ƒƒ td|jjƒ td	|dd
… ƒ |  |tj¡ |  t|ƒd¡ tdƒD ]H}|d | }|dk r|  |tjddd¡ qÔ|  |tjddd¡ qÔdS )zNChecking the return of string columns with spaces.

        (append)

        rU   r0   r6  r7  rê   Nrí   rî   rï   rl   é–   r£   r2  r3  r5   )r÷   r‡   rB   rC   r¤   r©   rˆ   rª   r   r@   rA   r?   r   r:   r;   rK   r6   rø   rù   rG   rú   rL   r[   rH   )rT   r¤   r©   r   rÿ   r4  rW   rW   rX   Útest09c_getStringsž  s.    



z,TableNativeFlavorTestCase.test09c_getStrings)rg   rh   ri   r¨   r¦   r  r	  r  r  r  r  r  r  r"  r#  r&  r'  r,  r.  r0  r1  r5  r8  r:  rÙ   rW   rW   r¬   rX   rì   e  s*   **#%& """!rì   c                   @   s   e Zd ZdZdS )ÚTableNativeFlavorOpenTestCaseFN©rg   rh   ri   r÷   rW   rW   rW   rX   r;  Å  s   r;  c                   @   s   e Zd ZdZdS )ÚTableNativeFlavorCloseTestCaseTNr<  rW   rW   rW   rX   r=  É  s   r=  c                       s,   e Zd Z‡ fdd„Zdd„ Zdd„ Z‡  ZS )ÚAttributesTestCasec                    s$   t t| ƒ ¡  | j | jjd¡ d S )Nr€   )r¥   r>  r¦   rB   r†   rC   )rT   r¬   rW   rX   r¦   Î  s    zAttributesTestCase.setUpc                 C   s¨   | j jj}|j}tjddd|_| jrB| jdd | j jj}|j}|j}tjddd}|  	|tj
¡ |  |jj|jj¡ tjr’td|ƒ td|ƒ |  t||dƒ¡ d	S )
z+Checking the creation of a numpy attribute.)r~   r~   Úint16r5   rU   r0   ú	npcomp-->r  r9   N)rB   rC   r€   Ú_v_attrsrG   rü   Únumpy1r÷   r‡   rù   rú   rL   r6   rø   r   r:   r;   rO   r   ©rT   r€   Zg_attrsrÿ   ZnpcomprW   rW   rX   Útest01_writeAttributeÔ  s    



z(AttributesTestCase.test01_writeAttributec                 C   s¸   | j jj}|j}tjddd|_| jrB| jdd | j jj}|j}tj	ddd|_|j}tj	ddd}|  
|tj¡ |  |jj|jj¡ tjr¢td|ƒ td|ƒ |  t||dƒ¡ d	S )
z/Checking the modification of a numpy attribute.)r~   r]   r?  r5   rU   r0   r@  r  r9   N)rB   rC   r€   rA  rG   rü   rB  r÷   r‡   rz   rù   rú   rL   r6   rø   r   r:   r;   rO   r   rC  rW   rW   rX   Útest02_updateAttributeí  s     



z)AttributesTestCase.test02_updateAttribute)rg   rh   ri   r¦   rD  rE  rÙ   rW   rW   r¬   rX   r>  Í  s   r>  c                   @   s   e Zd ZdZdS )ÚAttributesOpenTestCaser   Nr<  rW   rW   rW   rX   rF  
  s   rF  c                   @   s   e Zd ZdZdS )ÚAttributesCloseTestCaser~   Nr<  rW   rW   rW   rX   rG    s   rG  c                       s4   e Zd Z‡ fdd„Zdd„ Zdd„ Zdd„ Z‡  ZS )	ÚStrlenTestCasec                    s~   t t| ƒ ¡  | j | jjd¡}dtddi}| j |d|¡| _d| j_	| jj
}d|d< | ¡  d|d< | ¡  | j ¡  d S )	Nr€   ÚTextiè  rÛ   r¤   r9   zHello Francesc!zHola Francesc!)r¥   rH  r¦   rB   r†   rC   r   r§   r¤   r¶   r©   rª   r   )rT   r€   Ztablelayoutr©   r¬   rW   rX   r¦     s    zStrlenTestCase.setUpc                 C   sž   | j r | jdd | jjjj| _| j d¡d }| j d¡d }tjrZt	d|ƒ t	d|ƒ |  
t|ƒtdƒ¡ |  
t|ƒtd	ƒ¡ |  
|d¡ |  
|d	¡ d
S )z-Checking the lengths of strings (read field).rU   r0   rI  r   r~   z
string1-->z
string2-->ó   Hello Francesc!ó   Hola Francesc!N)r÷   r‡   rB   rC   r€   r¤   r  r   r:   r;   rL   r[   ©rT   Zstr1Zstr2rW   rW   rX   Útest01"  s    

zStrlenTestCase.test01c                 C   s   | j r | jdd | jjjj| _| jdd… d d }| jdd… d d }|  t|ƒtdƒ¡ |  t|ƒtdƒ¡ |  |d¡ |  |d¡ dS )	z0Checking the lengths of strings (read recarray).rU   r0   NrI  r   r~   rJ  rK  ©r÷   r‡   rB   rC   r€   r¤   rL   r[   rL  rW   rW   rX   Útest026  s    zStrlenTestCase.test02c                 C   s€   | j r | jdd | jjjj| _| jd d }| jd d }|  t|ƒtdƒ¡ |  t|ƒtdƒ¡ |  |d¡ |  |d¡ dS )	z<Checking the lengths of strings (read recarray, row by row).rU   r0   r   rI  r~   rJ  rK  NrN  rL  rW   rW   rX   Útest03G  s    zStrlenTestCase.test03)rg   rh   ri   r¦   rM  rO  rP  rÙ   rW   rW   r¬   rX   rH    s   rH  c                   @   s   e Zd ZdZdS )ÚStrlenOpenTestCaser   Nr<  rW   rW   rW   rX   rQ  Y  s   rQ  c                   @   s   e Zd ZdZdS )ÚStrlenCloseTestCaser~   Nr<  rW   rW   rW   rX   rR  ]  s   rR  c                  C   s  t  ¡ } d}t|ƒD ]ú}|  t  t¡¡ |  t  t¡¡ |  t  t¡¡ |  t  t¡¡ |  t  t	¡¡ |  t  t
¡¡ |  t  t¡¡ |  t  t¡¡ |  t  t¡¡ |  t  t¡¡ |  t  t¡¡ |  t  t¡¡ |  t  t¡¡ |  t  t¡¡ tjr|  t  t¡¡ q| S )Nr~   )r   Z	TestSuiterˆ   ZaddTestZ	makeSuiterk   ro   rq   rs   rv   rx   r}   r¢   r;  r=  rF  rG  rQ  rR  r   Zheavyr{   )ZtheSuiteZniterr   rW   rW   rX   Úsuitea  s(    rS  Ú__main__)ZdefaultTest)?rP   Úsysr>   r9   rG   r@   r   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   Ztables.testsr   Ztables.tests.commonr   r   r   ZTestCasera   ÚplatformrF   rª   r  r)   rk   ro   rq   rs   rv   rx   r{   ZTempFileMixinr}   rç   r’   r¢   rÚ   rÞ   rì   r;  r=  r>  rF  rG  rH  rQ  rR  rS  rg   Z
parse_argvÚargvZprint_versionsÚmainrW   rW   rW   rX   Ú<module>   sl   D





w # -    d=G
