
    d                        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Z	d dl
mZ  G d de	j                  Z G d dej        ej                  Z G d	 d
ej        ej                  Z G d dej        ej                  Z G d dej        ej                  Z G d dej        ej                  Zd Zedk    rA ej        e j                    ej                     ej                            d           dS dS )    N)Path)perf_counter)commonc                       e Zd Z ej        d          Z ej                    Z ej                    Z	 ej
                    Z ej                    ZdS )Record   )itemsizeN)__name__
__module____qualname__tb	StringColvar1IntColvar2Int16Colvar3FloatColvar4
Float32Colvar5     6lib/python3.11/site-packages/tables/tests/test_tree.pyr   r      sV        2<###D29;;D2;==D2;==D2=??DDDr   r   c                   d     e Zd ZdZdZdZdZ fdZd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Z xZS )TreeTestCasewzThis is the table title
      c                     t                                                       |                                  | j                                         d S )N)supersetUppopulateFileh5filecloseself	__class__s    r   r"   zTreeTestCase.setUp   sB     	r   c           	         | j         j        }d}t          d          D ]l}| j                             |dt	          |          z   t
          | j        d | j                  }|j        }t          | j                  D ]W}d| j        |z
  z  |d<   ||d<   ||z  |d<   t          |          |d	<   t          |          |d
<   |
                                 X|                                 d |                                D             }d |                                D             }| j                             |d|d           | j                             |d	|d           | j                             |dt	          |          z             }	|	}nd S )Ni      table)titlefiltersexpectedrowsz%04dr   r   r   r   r   c                     g | ]
}|d          S )r   r   .0xs     r   
<listcomp>z-TreeTestCase.populateFile.<locals>.<listcomp>9       <<<a&	<<<r   c                     g | ]
}|d          S )r   r   r0   s     r   r3   z-TreeTestCase.populateFile.<locals>.<listcomp>:   r4   r   14group)r$   rootrangecreate_tablestrr   r,   r.   rowfloatappendflushiterrowscreate_arraycreate_group)
r'   r8   maxshortjr+   divar1Listvar4Listgroup2s
             r   r#   zTreeTestCase.populateFile!   s    q 	 	AK,,UGCFFNF37:59:>:K - M ME
 	A4,--  "d&7!&;<&	&	L&	!!HH&	!!HH&	



KKMMM =<5>>+;+;<<<H<<5>>+;+;<<<HK$$UFHcBBBK$$UFHcBBB [--eWSVV^DDFEE;	 	r   c                    t           j        r,t          dd           t          d| j        j        z             t          j        | j        d          | _        g d}g }|D ]6}| j        	                    |          }|
                    |j                   7|                     ||           t           j        rt          d           g d}dd	g}g }|D ]M}|D ]H}	 | j        	                    ||          }|
                    |j                   9# t          $ r Y Ew xY wN|                     |g d
           t           j        rt          d           g d}g }g }	|D ]}	 | j        	                    |d          }|
                    |j                   |	
                    |           O# t          $ rD t           j        r5t          j                    \  }
}}t          d           t          |           Y w xY w|                     |g d           t           j        rt          d           dd	g}g }|	D ]N}|D ]I}	 | j        	                    ||d          }|
                    |j                   :# t           $ r Y Fw xY wO|                     |g d
           t           j        rt          d           dS dS )z3Checking the File.get_node() with string node names
<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test00_getNode...r)//table0/group0/var1/group0/group1/var4zget_node(pathname) test passedrO   /group0/group0/group1/group0/group1/group2r   r   /var1/var4rQ   /group0/var4/group0/group1/var1rR   z%get_node(groupname, name) test passed)rO   rT   rU   rV   rP   Group	classnamez*
Great!, the next LookupError was catched!z2get_node(groupname, classname='Group') test passedArrayz:get_node(groupobject, name, classname='Array') test passedN)r   verboseprintr(   r
   r   	open_fileh5fnamer$   get_noder?   _v_pathnameassertEqualLookupErrorsysexc_info	Exception)r'   nodelist	nodenamesnodeobject
nodegroups	nodepathsr8   namegroupobjectstypevalue	traceback
nodearrayss                 r   test00_getNodezTreeTestCase.test00_getNodeD   s    > 	L$	"""04>3JJKKKl4<55JJJ	 	1 	1D[))$//FV/0000H---> 	42333G G G
V$		 	9 	9E! 9 99![11%>>F $$V%78888 #   D9 	H H H	I 	I 	I
 > 	;9:::  	 
	, 
	,D	,--dg-FF   !3444##F++++  ! ! !> !/2|~~,T5)GHHH%LLL	! 	3 3 3	4 	4 	4 > 	HFGGG
 V$	
! 	: 	:E! : ::![11%wGGF %%f&89999 !   D: 	H H H	I 	I 	I > 	PNOOOOO	P 	Ps7   D
DD"F..AG<;G<I88
JJc                 ^   t           j        r,t          dd           t          d| j        j        z             t          j        | j        d          | _        | j        	                    d          }| 
                    |t
          j                   | j        	                    dd          }| 
                    |t
          j                   | j        	                    | j        j        j        d          }| 
                    |t
          j                   | j        	                    d          }| 
                    |t
          j                   | 
                    |t
          j                   | j        	                    dd	d
          }| 
                    |t
          j                   dS )z+Checking the File.get_node() with instancesrL   rM   z!Running %s.test01_getNodeClass...rN   /group0/table1rT   table1rQ   group1r\   N)r   r`   ra   r(   r
   r   rb   rc   r$   rd   assertIsInstanceTabler9   group0r_   Leafr\   )r'   r+   arrr8   s       r   test01_getNodeClassz TreeTestCase.test01_getNodeClass   sm    > 	+$	"""5.)* + + + l4<55 $$%566eRX...$$Y99eRX...$$T[%5%<hGGeRX... k"">22c28,,,c27+++ $$Y'BBeRX.....r   c                 d   t           j        r,t          dd           t          d| j        j        z             t          j        | j        d          | _        | 	                    t          | j        j        dd           g d}g }g }|D ]a}	 | j                            |          }|                    |           |D ]}|                    |j                   R# t          $ r Y ^w xY w|                     |g d           t           j        rt          d	           g }|D ]L}	 | j                            |          }|D ]}|                    |j                   =# t          $ r Y Iw xY w|                     |g d
           t           j        rt          d           g }|D ]}	 | j                            |d          }|D ]}|                    |j                   ># t          $ rD t           j        r5t#          j                    \  }}}	t          d           t          |           Y w xY w|                     |g d           t           j        rt          d           g }|D ]}	 | j                            |d          }|D ]}|                    |j                   ># t          $ rD t           j        r5t#          j                    \  }}}	t          d           t          |           Y w xY w|                     |ddg           t           j        rt          d           dS dS )z%Checking the File.list_nodes() methodrL   rM   zRunning %s.test02_listNodes...rN   rO   NoSuchClassrO   rT   ry   rV   rX   rT   rP   rX   rY   rU   ry   rQ   rZ   z list_nodes(pathname) test passedrU   ry   rQ   rZ   rV   /group0/group1/table2r[   rR   z#list_nodes(groupobject) test passedr   (
Great!, the next TypeError was catched!ry   rQ   rZ   r   r[   rR   z7list_nodes(groupobject, classname = 'Leaf') test passedr}   ry   r   z8list_nodes(groupobject, classname = 'Table') test passedN)r   r`   ra   r(   r
   r   rb   rc   r$   assertRaises	TypeError
list_nodesextendr?   re   rj   rf   rh   ri   
r'   rk   rl   objectsrm   
objectlistrn   rs   rt   ru   s
             r   test02_listNodeszTreeTestCase.test02_listNodes   s?    > 	N$	"""2T^5LLMMM l4<55)+0#}	F 	F 	F  	 	9 	9D9![33D99
 z***( 9 9F$$V%788889	     	: : :	; 	; 	; > 	64555	 	9 	9D9![33D99
 ) 9 9F$$V%788889     	H H H	I 	I 	I > 	97888	 
	9 
	9D	9![33D&AA
 ) 9 9F$$V%788889  ! ! !> !/2|~~,T5)EFFF%LLL	! 	H H H	I 	I 	I > 	MKLLL	 
	9 
	9D	9![33D'BB
 ) 9 9F$$V%788889  ! ! !> !/2|~~,T5)EFFF%LLL	! 	*,CD	F 	F 	F > 	NLMMMMM	N 	NsJ   C
C('C(%E
E,+E,)G$$AH21H2/J**AK87K8c                    t           j        r,t          dd           t          d| j        j        z             t          j        | j        d          | _        | 	                    t          | j        j        dd           g d}g }g }|D ]k}	 d | j                            |          D             }|                    |           |D ]}|                    |j                   \# t           $ r Y hw xY w|                     |g d	           t           j        rt          d
           g }|D ]V}	 d | j                            |          D             }|D ]}|                    |j                   G# t           $ r Y Sw xY w|                     |g d           t           j        rt          d           g }|D ]}	 d | j                            |d          D             }|D ]}|                    |j                   H# t          $ rD t           j        r5t%          j                    \  }}}	t          d           t          |           Y w xY w|                     |g d           t           j        rt          d           g }|D ]}	 d | j                            |d          D             }|D ]}|                    |j                   H# t          $ rD t           j        r5t%          j                    \  }}}	t          d           t          |           Y w xY w|                     |ddg           t           j        rt          d           dS dS )z%Checking the File.iter_nodes() methodrL   rM   zRunning %s.test02b_iterNodes...rN   rO   r   r   c                     g | ]}|S r   r   r1   os     r   r3   z2TreeTestCase.test02b_iterNodes.<locals>.<listcomp>$      FFFAaFFFr   r   z iter_nodes(pathname) test passedc                     g | ]}|S r   r   r   s     r   r3   z2TreeTestCase.test02b_iterNodes.<locals>.<listcomp>6  r   r   r   z#iter_nodes(groupobject) test passedc                     g | ]}|S r   r   r   s     r   r3   z2TreeTestCase.test02b_iterNodes.<locals>.<listcomp>I  s    NNNAaNNNr   r   r   r   z7iter_nodes(groupobject, classname = 'Leaf') test passedc                     g | ]}|S r   r   r   s     r   r3   z2TreeTestCase.test02b_iterNodes.<locals>.<listcomp>_  s    OOOAaOOOr   r}   ry   r   z8iter_nodes(groupobject, classname = 'Table') test passedN)r   r`   ra   r(   r
   r   rb   rc   r$   r   r   r   
iter_nodesr   r?   re   rj   rf   rh   ri   r   s
             r   test02b_iterNodeszTreeTestCase.test02b_iterNodes  su    > 	O$	"""3dn6MMNNNl4<55)+0#}	F 	F 	F  	 	9 	9D9FF)?)?)E)EFFF
 z***( 9 9F$$V%788889	     	: : :	; 	; 	; > 	64555	 	9 	9D9FF)?)?)E)EFFF
 ) 9 9F$$V%788889     	H H H	I 	I 	I > 	97888	 
	9 
	9D	9NN)?)?f)M)MNNN
 ) 9 9F$$V%788889  ! ! !> !/2|~~,T5)EFFF%LLL	! 	H H H	I 	I 	I > 	MKLLL	 
	9 
	9D	9OO)?)?g)N)NOOO
 ) 9 9F$$V%788889  ! ! !> !/2|~~,T5)EFFF%LLL	! 	*,CD	F 	F 	F > 	NLMMMMM	N 	NsJ   $C%%
C21C2/$E33
F ?F =%HAII%KAL L c                    t           j        r,t          dd           t          d| j        j        z             t          j        | j        d          | _        g }g }g }| j        	                                D ]}|
                    |j                   | j                            |d          D ]}|
                    |j                   | j                            |d          D ]}|
                    |j                   |                     |g d           |                     |g d           |                     |g d	           t           j        rt          d
           g }g }g }| j        	                    d          D ]}|
                    |j                   | j                            |d          D ]}|
                    |j                   | j                            |d          D ]}|
                    |j                   |                     |ddg           |                     |dg           |                     |ddg           t           j        rt          d           dS dS )z&Checking the File.walk_groups() methodrL   rM   z!Running %s.test03_TraverseTree...rN   r}   r_   rS   rP   ry   r   rW   zwalk_groups() test passedrU   rV   r   r[   rR   z!walk_groups(pathname) test passedN)r   r`   ra   r(   r
   r   rb   rc   r$   walk_groupsr?   re   r   rf   )r'   groupstables_arraysr8   r+   r   s          r   test03_TraverseTreez TreeTestCase.test03_TraverseTreer  s     > 	+$	"""5.)* + + + l4<55[,,.. 	/ 	/EMM%+,,,//w?? 2 2u01111{--eW== / /co..../ 	3 3 3	4 	4 	4 	BBB	D 	D 	D 	H H H	I 	I 	I > 	/-...[,,-=>> 	/ 	/EMM%+,,,//w?? 2 2u01111{--eW== / /co..../ 	*,CD	F 	F 	F 	#:";<<<.0E"G 	H 	H 	H > 	7566666	7 	7r   c                    t           j        r,t          dd           t          d| j        j        z             t          j        | j        d          | _        | 	                    t          t          | j                            dd                     g }g }g }g }| j                            d          D ]O}|                    |j                   |                    d	          D ]}|                    |j                   P| j        j                            d	          D ]}|                    |j                   | j                            d
          D ]}|                    |j                   |                     |g d           |                     |g d           |                     |g d           |                     |g d           t           j        rt          d           g }g }g }| j                            dd          D ]}|                    |j                   |                    d	          D ]}|                    |j                   | j                            |d
          D ]}|                    |j                   |                     |ddg           |                     |dg           |                     |ddg           t           j        rt          d           dS dS )zChecking File.walk_nodesrL   rM   zRunning %s.test04_walkNodes...rN   rO   r   r\   r]   r}   r_   rS   r   rW   z.File.__iter__() and Group.__iter__ test passedrU   rV   r   r[   rR   z+walk_nodes(pathname, classname) test passedN)r   r`   ra   r(   r
   r   rb   rc   r$   r   r   next
walk_nodesr?   re   _f_iter_nodesr9   _f_walknodesrf   )	r'   r   tables1tables2r   r8   r+   r   r   s	            r   test04_walkNodeszTreeTestCase.test04_walkNodes  s    > 	N$	"""2T^5LLMMMl4<55)T+00mDD	F 	F 	F [++g+>> 	2 	2EMM%+,,,,,w,?? 2 2u011112 [%227;; 	. 	.ENN5,----;))G)<< 	+ 	+CMM#/****3 3 3	4 	4 	4 	3 3 3	4 	4 	4 	3 3 3	4 	4 	4 	H H H	I 	I 	I
 > 	DBCCC[++,<6= , ? ? 	/ 	/EMM%+,,,++G44 2 2u01111{--eW== / /co..../ 	*,CD	F 	F 	F 	#:";<<<.0E"G 	H 	H 	H > 	A?@@@@@	A 	Ar   c                    t           j        r,t          dd           t          d| j        j        z             t          j        | j        d          | _        	 t          | j        j
                  }|                     d|           |                     d|           |                     d|           |                     d|           |                     d|           |                     d	|           |                     d
|           |                     d|           |                     d|           |                     d|           |                     d|           |                     t          t          |                    t          |                     t          | j        j
        j                  }|                     d|           |                     d|           |                     d|           |                     d|           |                     t          t          |                    t          |                     t          | j        j
        j        j                  }|                     d|           |                     d|           |                     d|           |                     d|           |                     d
|           |                     d|           |                     t          t          |                    t          |                     t           j        rt          d           dS dS )zChecking Group.__dir__rL   rM   zRunning %s.test05_dir...rN   _v_children_v_attrs	_v_groups_g_get_child_group_class_f_closer~   table0r   rz   table2r{   rJ   zGroup.__dir__ test passedN)r   r`   ra   r(   r
   r   rb   rc   r$   dirr9   assertInassertNotInassertSequenceEqualsortedsetr~   r{   )r'   root_dirroot_group0_dirroot_group0_group1_dirs       r   
test05_dirzTreeTestCase.test05_dir  s%    > 	H$	""",t~/FFGGGl4<55	 t{'(( 	mX...j(+++k8,,,0(;;;0(;;;j(+++ 	h)))h)))fh'''8,,,8,,,  H!6!6!'!1!1	3 	3 	3 dk.566h000h000?333?333  O(<(<!=!=!'!8!8	: 	: 	: "%T[%5%<%C!D!Dh 6777h 6777#9:::#9:::#9:::#9:::  ,B(C(C!D!D!'(>!?!?	A 	A 	A > 	/-.....	/ 	/r   c                 6   t           j        r,t          dd           t          d| j        j        z             t          j        | j        d          | _        	 | 	                    | j        j
        j        t                     dh}d | j        j
        j                                        D             }|                     ||           t          | j        j
        j                                                  }|                     t#          |          t#          |                     |D ]P}|                     |j                  5  |                     |j        |           ddd           n# 1 swxY w Y   Qt           j        rt          d	           dS dS )
zChecking Group._v_groupsrL   rM   zRunning %s.test06_v_groups...rN   r~   c                     h | ]\  }}|S r   r   )r1   kvs      r   	<setcomp>z/TreeTestCase.test06_v_groups.<locals>.<setcomp>6  s    FFFtq!FFFr   )rq   NzGroup._v_groups test passed)r   r`   ra   r(   r
   r   rb   rc   r$   r|   r9   r   dict	iteritemsrf   list
itervalueslensubTest_v_namer   )r'   group_namesnamesr   r8   s        r   test06_v_groupszTreeTestCase.test06_v_groups%  s    > 	M$	"""1DN4KKLLLl4<55	 	dk.8$???jFFt{/9CCEEFFFe,,,dk&0;;==>>Vc+&6&6777 	: 	:E5=11 : :em[999: : : : : : : : : : : : : : : > 	1/00000	1 	1s   E00E4	7E4	)r
   r   r   	open_moder,   r.   
appendrowsr"   r#   rw   r   r   r   r   r   r   r   __classcell__r(   s   @r   r   r      s        I%ELJ    ! ! !FOP OP OPb/ / /6]N ]N ]ND[N [N [N@57 57 57nAA AA AAF7/ 7/ 7/r1 1 1 1 1 1 1r   r   c                        e Zd ZdZ fdZd Zd Zd Zd Zd Z	e
j                            e
j        d          d	             Z xZS )
DeepTreeTestCasez3Checks for deep hierarchy levels in PyTables trees.c                    t                                                       t          j        rd| _        nd| _        t          j        rt          d| j                   | j        j        }t          j        rt          dd           t          | j                  D ]}t          j        rt          d|z  d           | j        
                    |dd	d	gd
|z             | j        
                    |dd	d	gd
|z             | j                            |dt          |          z              | j                            |dt          |          z             }| j                                         d S )N   @   zMaximum depth tested :zDepth writing progress:  end%3d,array   z	depth: %darray2group2_r8   )r!   r"   r   heavymaxdepthr`   ra   r$   r9   r:   rB   rC   r<   r%   )r'   r8   depthr(   s      r   r"   zDeepTreeTestCase.setUpF  ss    < 	DMMDM> 	;*DM:::  > 	7,#6666 4=)) 	J 	JE~ 1f&C0000K$$wAe(;= = =K$$x!Qu)<> > > K$$UIE

,BCCCK,,UGc%jj4HIIEE 	r   c           	      \   t          j        |d          5 }|j        }t          j        rt          dd           t          | j                  D ]}t          j        rt          d|z  d           |                     |j	        d d          ddg           | 
                    d|           | 
                    d	t          |          z   |           |                    |d
t          |          z             }t          j        rt                       d d d            d S # 1 swxY w Y   d S )NrN   modez
Depth reading progress: r   r   r   r   r   r   r8   )r   rb   r9   r   r`   ra   r:   r   rf   r   r   r<   rd   )r'   filenamer$   r8   r   s        r   _check_treezDeepTreeTestCase._check_treek  sl    \(--- 	KE~ =2<<<< t}-- 
E 
E> 5&E*4444   QQQ!Q888h...iE

2E::: wU/CDD~ '	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   C=D!!D%(D%c                 :    |                      | j                   dS )z&Creation of a large depth object tree.N)r   rc   r'   s    r   test00_deepTreez DeepTreeTestCase.test00_deepTree  s      	&&&&&r   c                    t          j        | j        d          | _        t	          j        d          }	 t          j        |d          5 }t          j        rt          d           | j        	                    | j        j
        |j
        d           | j                                         ddd           n# 1 swxY w Y   |                     |           t          |                                          r#t          |                                           dS dS # t          |                                          r"t          |                                           w w xY w)	z"Copy of a large depth object tree.rN   r   .h5r   
Copying deep tree...T	recursiveNr   rb   rc   r$   tempfilemktempr   r`   ra   	copy_noder9   r%   r   r   is_fileunlinkr'   h5fname2h5file2s      r   test01a_copyDeepTreez%DeepTreeTestCase.test01a_copyDeepTree  s    l4<c:::?5))	(hS111 $W> 42333%%dk&604 & 6 6 6!!###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ X&&&H~~%%'' (X%%'''''( (tH~~%%'' (X%%''''(s1   D A!B9-D 9B==D  B=D AE$c                    t          j        | j        dd          | _        t	          j        d          }	 t          j        |dd          5 }t          j        rt          d           | j        	                    | j        j
        |j
        d           | j                                         d	d	d	           n# 1 swxY w Y   |                     |           t          |                                          r#t          |                                           d	S d	S # t          |                                          r"t          |                                           w w xY w)
z8Copy of a large depth object tree with small node cache.rN   r   r   node_cache_slotsr   r   r   Tr   Nr   r   s      r   test01b_copyDeepTreez%DeepTreeTestCase.test01b_copyDeepTree  s    l4<cBOOO?5))	(hS/13 3 3 $6=> 42333%%dk&604 & 6 6 6!!###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ X&&&H~~%%'' (X%%'''''( (tH~~%%'' (X%%''''(1   D! A!B;/D! ;B??D! B?D! !AE&c                    t          j        | j        dd          | _        t	          j        d          }	 t          j        |dd          5 }t          j        rt          d           | j        	                    | j        j
        |j
        d           | j                                         d	d	d	           n# 1 swxY w Y   |                     |           t          |                                          r#t          |                                           d	S d	S # t          |                                          r"t          |                                           w w xY w)
z5Copy of a large depth object tree with no node cache.rN   r   r   r   r   r   Tr   Nr   r   s      r   test01c_copyDeepTreez%DeepTreeTestCase.test01c_copyDeepTree  s    l4<cANNN?5))	(hS/02 2 2 $5<> 42333%%dk&604 & 6 6 6!!###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ X&&&H~~%%'' (X%%'''''( (tH~~%%'' (X%%''''(r   zonly in heavy modec                    t          j        | j        dd          | _        t	          j        d          }	 t          j        |dd          5 }t          j        rt          d           | j        	                    | j        j
        |j
        d           | j                                         d	d	d	           n# 1 swxY w Y   |                     |           t          |                                          r#t          |                                           d	S d	S # t          |                                          r"t          |                                           w w xY w)
z9Copy of a large depth object tree with static node cache.rN   i r   r   r   r   Tr   Nr   r   s      r   test01d_copyDeepTreez%DeepTreeTestCase.test01d_copyDeepTree  s    l4<c48: : :?5))	(hS/35 5 5 $8?> 42333%%dk&604 & 6 6 6!!###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ X&&&H~~%%'' (X%%'''''( (tH~~%%'' (X%%''''(r   )r
   r   r   __doc__r"   r   r   r   r   r   r   unittest
skipUnlessr   r   r   r   s   @r   r   r   C  s        ==# # # # #J  0' ' '
( ( (&( ( ((( ( (( _.BCC( ( DC( ( ( ( (r   r   c                       e Zd ZdZd Zd ZdS )WideTreeTestCasez2Checks for maximum number of children for a Group.c                    t           j        rd}nd}t           j        r<t          dd           t          d| j        j        z             t          d|           ddg}t           j        rt          dd	
           t          |          D ]\}t           j        rt          d|z  d	
           | j                            | j        j	        dt          |          z   |d|z             ]t           j        rt                       t                      }ddg}|                                  t           j        r4t          d|t                      |z
  fz             t          dd	
           t          |          D ]v}t           j        rt          d|z  d	
           t          | j        j	        dt          |          z             }|                                }|                     ||           wt           j        rt                       dS dS )a  Checking creation of large number of leafs (1024) per group.

        Variable 'maxchildren' controls this check. PyTables support up
        to 4096 children per group, but this would take too much memory
        (up to 64 MB) for testing purposes (may be we can add a test for
        big platforms). A 1024 children run takes up to 30 MB. A 512
        children test takes around 25 MB.

           r   rL   rM   Running %s.test00_wideTree...#Maximum number of children tested :r   Children writing progress: r   r   r   r   	child: %dz/
Time spent opening a file with %d arrays: %s s
Children reading progress: N)r   r   r`   ra   r(   r
   r:   r$   rB   r9   r<   clock_reopengetattrreadrf   )r'   maxchildrenachildt1array_bs          r   test00_LeafszWideTreeTestCase.test00_Leafs  s&    < 	KKK> 	F$	"""1.)* + + +7EEEF> 	:/S9999;'' 	= 	=E~ 1f&C0000K$$T[%5wU7K%&e(;= = = => 	GGGWWF 	> 	<D
+, - - -1s;;;; ;'' 
	# 
	#E~ 1f&C0000 T[-wU/CDDFA Q""""> 	GGGGG	 	r   c                    t           j        rd}nd}t           j        r<t          dd           t          d| j        j        z             t          d|           t           j        rt          dd	           t          |          D ][}t           j        rt          d
|z  d	           | j                            | j        j	        dt          |          z   d|z             \t           j        rt                       t                      }|                                  t           j        r4t          d|t                      |z
  fz             t          dd	           t          |          D ]j}t           j        rt          d
|z  d	           t          | j        j	        dt          |          z             }|                     |j        d|z             kt           j        rt                       dS dS )a  Checking creation of large number of groups (1024) per group.

        Variable 'maxchildren' controls this check. PyTables support up
        to 4096 children per group, but this would take too much memory
        (up to 64 MB) for testing purposes (may be we can add a test for
        big platforms). A 1024 children run takes up to 30 MB. A 512
        children test takes around 25 MB.

        r  r   rL   rM   r  r  r	  r   r   r   r8   r
  z/
Time spent opening a file with %d groups: %s sr  N)r   r   r`   ra   r(   r
   r:   r$   rC   r9   r<   r  r  r  rf   _v_title)r'   r  r  r  r8   s        r   test01_wideTreez WideTreeTestCase.test01_wideTree  s    < 	KK K> 	F$	"""1.)* + + +7EEE> 	:/S9999;'' 	: 	:E~ 1f&C0000K$$T[%5wU7K%05%8: : : :> 	GGGWW 	> 	<D
+, - - -1s;;;; ;'' 	B 	BE~ 1f&C0000DK,gE

.BCCEU^[5-@AAAA> 	GGGGG	 	r   N)r
   r   r   r   r  r  r   r   r   r  r    s9        <<8 8 8t5 5 5 5 5r   r  c                   j     e Zd ZdZ fdZd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Z xZS )HiddenTreeTestCasez0Check for hidden groups, leaves and hierarchies.c                    t                                                       g | _        g | _        | j        }|                    dddg           |                    dd          }|                    |ddg           |                    |ddg           |                    |d          }|                    |ddg           | j                            g d           |                    dddg           |                    dd	          }|                    |ddg           |                    |ddg           |                    |ddg           | j                            g d
           d S )NrO   r  r   ga1a2)z/a/gz/g/a1z/g/a2z/g/gz/g/g/a_p_a_p_g)z/_p_a/_p_g/_p_g/az
/_p_g/_p_a/g/_p_a)r!   r"   visiblehiddenr$   rB   rC   r   )r'   h5fr  g_ghgr(   s        r   r"   zHiddenTreeTestCase.setUpR  s    kcA3'''S#&&D1#&&&D1#&&&q#&&cA3'''LLLMMM 	fqc***c6**S1#&&&VaS)))FQC(((BBB	D 	D 	D 	D 	Dr   c                    | j         j        }t          j        dt                     | j        D ]}|                     ||v d|z             | j        D ]}|                     ||vd|z             t          j        dt                     dS )z*Absence of hidden nodes in `File.objects`.ignorecategoryz2Missing visible node ``%s`` from ``File.objects``.z-Found hidden node ``%s`` in ``File.objects``.defaultN)r$   r   warningsfilterwarningsDeprecationWarningr&  
assertTruer'  )r'   r   vpathhpaths       r   _test00_objectsz"HiddenTreeTestCase._test00_objectso  s     +%3EFFFF\ 	N 	NEOO DuLN N N N [ 	I 	IEOOW$?%GI I I I 		4FGGGGGGr   c                       fd}t          j        dt                      |dd            |dd            |dd	           t          j        d
t                     dS )z6Object dictionaries conformance with ``walk_nodes()``.c                 z   j         }t          ||           }d |                    d|          D             }d |D             }|                                 |                                                     ||d| z                                 t          |          t          |          d| z             d S )Nc                     g | ]	}|j         
S r   )re   )r1   rm   s     r   r3   zJHiddenTreeTestCase._test00b_objects.<locals>.dictCheck.<locals>.<listcomp>  s1     G G G! ) G G Gr   rO   c                     g | ]}|S r   r   )r1   paths     r   r3   zJHiddenTreeTestCase._test00b_objects.<locals>.dictCheck.<locals>.<listcomp>  s    222$222r   z8nodes in ``%s`` do not match those from ``walk_nodes()``z6length of ``%s`` differs from that of ``walk_nodes()``)r$   r  r   sortrf   r   )dictNamer^   file_r   	walkPaths	dictPathsr'   s         r   	dictCheckz6HiddenTreeTestCase._test00b_objects.<locals>.dictCheck  s    KEeX..GG G%*%5%5c9%E%EG G GI22'222INNNN9J   IGH    r   r,  r-  r   Nr   r\   leavesr   r/  )r0  r1  r2  )r'   rA  s   ` r   _test00b_objectsz#HiddenTreeTestCase._test00b_objects  s    	 	 	 	 	$ 	3EFFFF	)T"""	(G$$$	(F###	4FGGGGGGr   c                     | j         }| j        D ]}|                    |           | j        D ]}|                    |           dS )z(Node availability via `File.get_node()`.N)r$   r&  rd   r'  )r'   r(  r4  r5  s       r   test01_getNodez!HiddenTreeTestCase.test01_getNode  sa     k\ 	  	 ELL[ 	  	 ELL	  	 r   c                     | j         }| j                            d          D ]$}|j        }|                     ||d| d           %dS )z-Hidden group absence in `File.walk_groups()`.rO   zWalked across hidden group ````.N)r'  r$   r   re   r   )r'   r'  r8   pathnames       r   test02_walkGroupsz$HiddenTreeTestCase.test02_walkGroups  ss     [,,S11 	L 	LE(HXvJXJJJL L L L	L 	Lr   c                     | j         }| j                            d          D ]$}|j        }|                     ||d| d           %dS )z+Hidden node absence in `File.walk_nodes()`.rO   zWalked across hidden node ``rG  N)r'  r$   r   re   r   r'   r'  rm   rH  s       r   test03_walkNodesz#HiddenTreeTestCase.test03_walkNodes  ss     K**3// 	K 	KD'HXvIHIIIK K K K	K 	Kr   c                     | j         }| j                            d          D ]$}|j        }|                     ||d| d           %dS )z9Listing visible nodes under a visible group (list_nodes).r   Listed hidden node ``rG  N)r'  r$   r   re   r   rK  s       r   test04_listNodesVisiblez*HiddenTreeTestCase.test04_listNodesVisible  s     K**400 	D 	DD'HXvBXBBBD D D D	D 	Dr   c                     | j         }| j                            d          D ]$}|j        }|                     ||d| d           %dS )z9Listing visible nodes under a visible group (iter_nodes).r   rN  rG  N)r'  r$   r   re   r   rK  s       r   test04b_listNodesVisiblez+HiddenTreeTestCase.test04b_listNodesVisible  rP  r   c                     | j         }d}d}| j                            d          D ],}|j        }||k    rd}|                     ||d| d           -|                     |d|z             dS )	z8Listing visible nodes under a hidden group (list_nodes).r$  Fr#  TrN  rG  "Hidden node ``%s`` was not listed.N)r'  r$   r   re   r   r3  r'   r'  node_to_find
found_noderm   rH  s         r   test05_listNodesHiddenz)HiddenTreeTestCase.test05_listNodesHidden        
K**733 	A 	AD'H<''!
MM(F?(???A A A A 	
<|K	M 	M 	M 	M 	Mr   c                     | j         }d}d}| j                            d          D ],}|j        }||k    rd}|                     ||d| d           -|                     |d|z             dS )	z8Listing visible nodes under a hidden group (iter_nodes).r$  Fr#  TrN  rG  rT  N)r'  r$   r   re   r   r3  rU  s         r   test05b_iterNodesHiddenz*HiddenTreeTestCase.test05b_iterNodesHidden  rY  r   c                     | j                                          t          j        | j                  | _         |                                  dS )z#Reopening a file with hidden nodes.N)r$   r%   r   rb   rc   test00_objectsr   s    r   _test06_reopenz!HiddenTreeTestCase._test06_reopen  sC     	l4<00r   c                 B   | j         j        }|                      |d                     | j                             ddd           |                      |d                     | j                             ddd           |                      |d                     dS )z0Moving a node between hidden and visible groups.r$  r   r  z/g/ar#  N)r$   is_visible_nodeassertFalse	move_noder3  )r'   r`  s     r   test07_movezHiddenTreeTestCase.test07_move  s     +533444is333//000fgs3333344444r   c                     |                      d| j                   | j        j        j                            d           |                     d| j                   dS )z.Removing a visible group with hidden children.r%  Tr   N)r   r$   r9   r  	_f_remover   r   s    r   test08_removez HiddenTreeTestCase.test08_remove  sW     	i---$$t$444DK00000r   )r
   r   r   r   r"   r6  rC  rE  rI  rL  rO  rR  rX  r[  r^  rc  rf  r   r   s   @r   r  r  O  s       ::D D D D D:H H H(H H H:     L L LK K KD D DD D DM M M"M M M&  	5 	5 	51 1 1 1 1 1 1r   r  c                   V     e Zd ZdZ ej        d          Z fdZd Zd Z	d Z
 xZS )CreateParentsTestCasezTest the ``createparents`` flag.

    These are mainly for the user interface.  More thorough tests on the
    workings of the flag can be found in the ``test_do_undo.py`` module.

    r   )	complevelc                     t                                                       | j                            dddg           | j                            dd| j                   d S )NrO   r   r   r8   )r-   )r!   r"   r$   rB   rC   r-   r&   s    r   r"   zCreateParentsTestCase.setUp  sU      gs333  gt| DDDDDr   c                 n   | j         | j         j        }}|                     t          |j        |j        ddgd           |                     t          |j        d|j        d           |                     t          |j        d|j        d           |                     t          |j        d|d           dS )z-Using the right type of parent node argument.r   r   Tcreateparentsz/array/groupN)	r$   r9   r   r   rB   r8   r   rb  copy_children)r'   r$   r9   s      r   test00_parentTypez'CreateParentsTestCase.test00_parentType  s     {DK$4)V%8*eaS 	 	F 	F 	F)V%5"DJd 	 	D 	D 	D)V%5"DJd 	 	D 	D 	D)V%9"D 	 	> 	> 	> 	> 	>r   c                 ,   |                      t          j        | j        j        ddd           |                     d| j                   |                      t          j        | j        j        dddd           |                     d| j                   dS )z4Placing a node inside a nonexistent child of itself.rn  /group/foo/barTrl  z
/group/foo)r   rm  N)r   r   	NodeErrorr$   rb  r   r   rc   r   s    r   test01_insidez#CreateParentsTestCase.test01_inside-  s    ",(="$4(, 	 	. 	. 	. 	t{333",(="$4$( 	 	> 	> 	> 	t|44444r   c                     | j                             ddd           |                     d| j                    | j                             d          D ]"}|                     | j        |j                   #dS )z1Propagating the filters of created parent groups.rr  bazTrl  z/group/foo/bar/bazrn  N)r$   rC   r   r   rf   r-   
_v_filters)r'   r8   s     r   test02_filtersz$CreateParentsTestCase.test02_filters8  s     	  !15 MMM*DK888[,,X66 	= 	=ET\5+;<<<<	= 	=r   )r
   r   r   r   r   Filtersr-   r"   rp  rt  rx  r   r   s   @r   rh  rh    s          bj1%%%GE E E E E
> > >	5 	5 	5= = = = = = =r   rh  c                     t           j                                        } d}t          |          D ]}|                     t           j                            t                               |                     t           j                            t                               |                     t           j                            t                               |                     t           j                            t                               |                     t           j                            t                               | S )Nr   )r   r  	TestSuiter:   addTest	makeSuiter   r   r  r  rh  )theSuiteniterrG   s      r   suiter  A  s    ((**HE5\\ K K22<@@AAA223CDDEEE223CDDEEE223EFFGGG223HIIJJJJOr   __main__r  )defaultTest)rh   r   r0  pathlibr   timer   r  tablesr   tables.testsr   IsDescriptionr   TempFileMixinPyTablesTestCaser   r   r  r  rh  r  r
   
parse_argvargvprint_versionsr  mainr   r   r   <module>r     s   



         & & & & & &              R   l1 l1 l1 l1 l16')@ l1 l1 l1^T( T( T( T( T(v+V-D T( T( T(nr r r r rv+V-D r r rj~1 ~1 ~1 ~1 ~1-v/F ~1 ~1 ~1B.= .= .= .= .=F0&2I .= .= .=b   zFchF
OW----- r   