
    dX                        d Z ddlZddlZddlmZ ddlZddlmZ  G d dej	        ej
                  Z G d dej	        ej
                  Zej                            ej        j        d	k    d
           G d dej	        ej
                              Zd Zedk    rEddlZ ej        ej                    ej                     ej                            d           dS dS )z6Test module for diferent kind of links under PyTables.    N)Path)commonc                   <     e Zd Z fdZd Zd Zd Zd Zd Z xZ	S )HardLinkTestCasec                 p    t                                                       |                                  d S NsupersetUp_createFileself	__class__s    7lib/python3.11/site-packages/tables/tests/test_links.pyr   zHardLinkTestCase.setUp   ,        c                    | j                             ddddg           | j                             dd          }| j                             |dg d          }| j                             ddd	          }|                     |           | j                             |d
d          }|                     |           | j                             dd|          }|                     |           d S N/arr1      group1arr2r   r      lgroup1/group1larr1/arr1larr2)h5filecreate_arraycreate_groupcreate_hard_linkassertIsNotNoner   r   r   r   r   r!   s         r   r   zHardLinkTestCase._createFile         fq!f555))#x88{''			BB+..sIyIIW%%%,,VWgFFU###,,S'4@@U#####r   c                 ^   |                      | j        j        j        | j        j        j        d           |                     | j        j        j        | j        j        j        j        d           |                     | j        j        j        j        | j        j        j	        d           dS )zCreating hard links.ThardlinkN
_checkEqualityGroupr"   rootr   r   _checkEqualityLeafr   r   r   r!   r   s    r   test00_createzHardLinkTestCase.test00_create   s     	  !1!8!%!1!9*. 	! 	0 	0 	0 	 0 5 $ 0 7 =)- 	  	/ 	/ 	/ 	 0 8 = $ 0 6)- 	  	/ 	/ 	/ 	/ 	/r   c                    |                                   |                     | j        j        j        | j        j        j        d           |                     | j        j        j        | j        j        j        j        d           |                     | j        j        j        j	        | j        j        j
        d           dS )zOpening a file with hard links.Tr*   N_reopenr-   r"   r.   r   r   r/   r   r   r   r!   r0   s    r   test01_openzHardLinkTestCase.test01_open*   s     	  !1!8!%!1!9*. 	! 	0 	0 	0 	 0 5 $ 0 7 =)- 	  	/ 	/ 	/ 	 0 8 = $ 0 6)- 	  	/ 	/ 	/ 	/ 	/r   c                    | j         j        j                                         |                     d| j                    t
          j        r$t          d| j         j        j        j	                   | 
                    d| j                    | j         j        j        j	                                         |                     d| j                    dS )zRemoving a hard link to a Leaf.r    Remaining link:/group1/larr1Nr"   r.   r   removeassertNotInr   verboseprintr   r   assertInr0   s    r   test02_removeLeafz"HardLinkTestCase.test02_removeLeaf8   s     	$$&&&$+...> 	D#T[%5%<%BCCCot{333%,,...$+66666r   c                 D   t           j        rt          d| j                   | j        j        j                            d           |                     d| j                   t           j        r4t          d| j        j        j                   t          d| j                   | 	                    d| j                   | j        j        j        
                    d           |                     d| j                   t           j        rt          d	| j                   d
S d
S )z Removing a hard link to a Group.zOriginal object tree:T)forcer   r7   zObject tree:/lgroup1)	recursivezFinal object tree:N)r   r<   r=   r"   r.   r   	_f_remover;   r   r>   	_g_remover0   s    r   test03_removeGroupz#HardLinkTestCase.test03_removeGroupF   s    > 	8)4;777)))555DK000> 	/#T[%5%=>>>.$+...j$+... **T*:::T[111> 	5&44444	5 	5r   )
__name__
__module____qualname__r   r   r1   r5   r?   rF   __classcell__r   s   @r   r   r      s            	$ 	$ 	$/ / // / /7 7 75 5 5 5 5 5 5r   r   c                        e 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d Zd Zd Zd Zd Zd Zd Zd Z xZS )SoftLinkTestCasec                 p    t                                                       |                                  d S r   r	   r   s    r   r   zSoftLinkTestCase.setUp]   r   r   c                    | j                             ddddg           | j                             dd          }| j                             |dg d          }| j                             ddd	          }|                     |           | j                             |d
d          }|                     |           | j                             dd|          }|                     |           d S r   )r"   r#   r$   create_soft_linkr&   r'   s         r   r   zSoftLinkTestCase._createFilea   r(   r   c                    |                      | j        j        j        | j        j                                                   |                     | j        j        j        | j        j        j                                                   |                     | j        j                                        j        | j        j        	                                           dS zCreating soft links.Nr,   r0   s    r   r1   zSoftLinkTestCase.test00_createl   s     	  !1!8!%!1!9!9!;!;	= 	= 	= 0 5 $ 0 7 = = ? ?	A 	A 	A 0 8 8 : : ? $ 0 6 6 8 8	: 	: 	: 	: 	:r   c                    |                                   |                     | j        j        j        | j        j                                                   |                     | j        j        j        | j        j        j                                                   |                     | j        j                                        j	        | j        j        
                                           dS zOpening a file with soft links.Nr3   r0   s    r   r5   zSoftLinkTestCase.test01_openv   s     	  !1!8!%!1!9!9!;!;	= 	= 	= 0 5 $ 0 7 = = ? ?	A 	A 	A 0 8 8 : : ? $ 0 6 6 8 8	: 	: 	: 	: 	:r   c                    | j         j        j                                         |                     d| j                    t
          j        r$t          d| j         j        j        j	                   | 
                    d| j                    | j         j        j        j	                                         |                     d| j                    dS )zRemoving a soft link.r    Dangling link:r8   Nr9   r0   s    r   test02_removezSoftLinkTestCase.test02_remove   s     	$$&&&$+...> 	C"DK$4$;$ABBBot{333%,,...$+66666r   c                    | j         j        }|j        }|                    dd          }|                     d| j                    |                     d| j                    |                     d|j                   |                     d|j                   t          j        rt          d|           |
                                 |                     | j         j        j        | j         j                                                   dS )zCopying a soft link.r   lgroup2rB   /lgroup2Copied link:Nr"   r.   r   copyr>   _v_children_v_linksr   r<   r=   r:   r-   r   rY   r   r.   r   rY   s       r   test03_copyzSoftLinkTestCase.test03_copy   s     {,,,sI..j$+...j$+...i!1222i///> 	+.'***  !1!8!%!1!9!9!;!;	= 	= 	= 	= 	=r   c                 B   | j         j        }|j        }|                    dd          }|                    ddd          }|                     d| j                    |                     d| j                    |                     d|j                   |                     d|j                   t          j        rt          d|           |
                                 |                     | j         j        j        | j         j                                                   dS )	zOverwrite a soft link.r   rY   T	overwriterB   rZ   r[   Nr\   r`   s       r   test03_overwritez!SoftLinkTestCase.test03_overwrite   s    {,,,sI..,,sI,>>j$+...j$+...i!1222i///> 	+.'***  !1!8!%!1!9!9!;!;	= 	= 	= 	= 	=r   c                    | j         j        j        }| j                             dd          }|                    |d           | j         j        j        j        }t          j        rt          d|           | 
                    d| j                    |                     d| j                    |                     | j         j        j        | j         j        j                                                   dS )zMoving a soft link.r   group2rY   Moved link:rB   /group2/lgroup2N)r"   r.   r   r$   moverg   rY   r   r<   r=   r;   r>   r-   r   r   r   rg   rY   s       r   test04_movezSoftLinkTestCase.test04_move   s     +"*))#x88VY'''+")1> 	*-)))T[111'555  !1!8!%!1!8!@!@!B!B	D 	D 	D 	D 	Dr   c                    | j         j        j        }|                    d           | j         j        j        }t
          j        rt          d|           |                     d| j                    | 	                    d| j                    | 
                    | j         j        j        | j         j                                                   dS )zRenaming a soft link.rY   rh   rB   rZ   N)r"   r.   r   renamerY   r   r<   r=   r;   r>   r-   r   r   r   rY   s      r   test05_renamezSoftLinkTestCase.test05_rename   s     +"*y!!!+"*> 	*-)))T[111j$+...  !1!8!%!1!9!9!;!;	= 	= 	= 	= 	=r   c                 x   | j                             dd           | j                             ddd          }t          j        rt          d|           |                     d| j                    |                     | j         j        j	        j
        | j         j        j	                                                   dS )z%Using soft links with relative paths.r   group3lgroup3Relative path link:/group1/lgroup3Nr"   r$   rP   r   r<   r=   r>   r-   r.   r   rr   rs   r   rs   s     r   test06a_relative_pathz&SoftLinkTestCase.test06a_relative_path   s     	  H555+..y(, ,> 	2'111'555  !1!8!?!%!1!8!@!@!B!B	D 	D 	D 	D 	Dr   c                 x   | j                             dd           | j                             ddd          }t          j        rt          d|           |                     d| j                    |                     | j         j        j	        j
        | j         j        j	                                                   dS )z1Using soft links with relative paths (./ version)r   rr   rs   ./group3rt   ru   Nrv   rw   s     r   test06b_relative_pathz&SoftLinkTestCase.test06b_relative_path   s     	  H555+..y*. .> 	2'111'555  !1!8!?!%!1!8!@!@!B!B	D 	D 	D 	D 	Dr   c                 n   d | j                             dd          D             }t          j        rt	          d|           |                     |g d           d | j                             dd          D             }t          j        rt	          d	|           |                     |g d           d
S ).Checking `walk_nodes` with `classname` option.c                     g | ]	}|j         
S  _v_pathname.0nodes     r   
<listcomp>z5SoftLinkTestCase.test07_walkNodes.<locals>.<listcomp>   -     @ @ @d! @ @ @r   r   Link	classname"detected links (classname='Link'):/larr2rB   r8   c                     g | ]	}|j         
S r   r   r   s     r   r   z5SoftLinkTestCase.test07_walkNodes.<locals>.<listcomp>   s-     D D Dd! D D Dr   SoftLinkz&detected links (classname='SoftLink'):N)r"   
walk_nodesr   r<   r=   assertEqualr   linkss     r   test07_walkNodesz!SoftLinkTestCase.test07_walkNodes   s    @ @''v'>>@ @ @> 	?6>>> G G GHHHD D''z'BBD D D> 	C:EBBB G G GHHHHHr   c                 `   d | j         j        j        D             }t          j        rt          d|           |                     t          |          d           d | j         j        j        j        D             }t          j        rt          d|           |                     |dg           dS )Checking `Group._v_links`.c                     g | ]}|S r   r   r   s     r   r   z4SoftLinkTestCase.test08__v_links.<locals>.<listcomp>       <<<$<<<r   detected links (under root):r   c                     g | ]}|S r   r   r   s     r   r   z4SoftLinkTestCase.test08__v_links.<locals>.<listcomp>      CCC$CCCr   detected links (under /group1):r   N	r"   r.   r_   r   r<   r=   r   lenr   r   s     r   test08__v_linksz SoftLinkTestCase.test08__v_links        =<$+"2";<<<> 	90%888UQ'''CC$+"2"9"BCCC> 	<3U;;;	*****r   c                    | j                             ddd          }|                      |            | j                             d                     t          j        rt          d |                       |                       |                        | j                             d                     t          j        r"t          d  |                                   dS dS )zChecking linked links.r   rY   rB   zFirst dereference is correct:r   zSecond dereference is correct:N)r"   rP   assertIsget_noder   r<   r=   )r   rY   s     r   test09_link_to_linkz$SoftLinkTestCase.test09_link_to_link  s     +..J( ( 	ggii!5!5j!A!ABBB> 	>17799===iggiikk4;#7#7	#B#BCCC> 	A2IGGIIKK@@@@@	A 	Ar   c                 V   t          j        d          }t          j        |d          }|                    ddddg           |                    dd           | j        j        j        }|	                    |j        d          }| 
                    d	| j                   | 
                    d	|           | 
                    ||           t          j        rt          d
|d|j        j                   |                                 t#          |                                           dS z(Checking copying a link to another file..h5ar   r   r   r   r   r   rB   r[   zin:N)tempfilemktemptb	open_filer#   r$   r"   r.   r   r]   r>   r   r<   r=   _v_filefilenamecloser   unlink)r   fnameh5fr   lgroup1_s        r   test10_copy_link_to_filez)SoftLinkTestCase.test10_copy_link_to_file  s    &&l5#&&fq!f---h'''+"*<<)44j$+...j#&&&h$$$> 	N.(E83C3LMMM		Ur   c                 .   | j                             d          }| j                             d          }|                     |j        d           |                     |dd         ddg           d|d<   |                     |dd         ddg           dS )	z;Check direct get/set attributes via link-->target.attributez/lgroup1/larr1r    )r   Nr   r   r   )r"   r   r   shape)r   r   r   s      r   test11_direct_attribute_accessz/SoftLinkTestCase.test11_direct_attribute_access'  s     $$%566{##G,,d+++qqqAq6***aaaa2q'*****r   c                    | j                             d          }| j                             d          }|                     |j        dd         g d           d|j        d<   |                     |dd         g d           dS )z:Check get/set attributes via link-->target.child.attributerB   /group1/arr2Nr   r   r   r   r   r   )r"   r   r   r   )r   r   r   s      r   #test12_access_child_node_attributesz4SoftLinkTestCase.test12_access_child_node_attributes3  s     +&&z22{##N33aaa)))444Qaaa***-----r   c                 D   | j                             d           | j                             d          }| j                             ddd          }|                     |j        dd         g d           d|j        d<   |                     |dd         g d	           dS )
z?Check get/set access via link2-->link1-->target.child.attributerB   r   r   	l_lgroup1Nr   r   r   r   )r"   r   rP   r   r   )r   r   r   s      r   4test13_direct_attribute_access_via_chained_softlinkszESoftLinkTestCase.test13_direct_attribute_access_via_chained_softlinks>  s     	Z((({##N33K00k:NN	*III666	qaaa***-----r   c                     | j                             d           | j                             d          }| j                             |dg d           | j                             d          }|                     |dd         g d           dS )z;Create an array whose parent is a softlink to another groupr   rB   new_arrr   )objz/group1/new_arrN)r"   r   r#   r   )r   r   new_arr2s      r   !test14_child_of_softlink_to_groupz2SoftLinkTestCase.test14_child_of_softlink_to_groupK  s     	Y'''+&&z22  ) CCC;''(9::!!!iii00000r   c                    t          | j                  }|                     t          t	          j        d|                    d           |                     t          t	          j        d|                    d           d S )N\(SoftLink\)r   \(dangling\)r   )strr"   r   r   refindallr   ss     r   test_strzSoftLinkTestCase.test_strT  sk    RZ;;<<a@@@RZ;;<<a@@@@@r   c                 V   | j         j        j        j                                         t          | j                   }|                     t          t          j	        d|                    d           |                     t          t          j	        d|                    d           d S )Nr   r   r   r   )
r"   r.   r   r   r:   r   r   r   r   r   r   s     r   test_str_with_dangling_linkz,SoftLinkTestCase.test_str_with_dangling_linkY  s    $++---RZ;;<<a@@@RZ;;<<a@@@@@r   )rG   rH   rI   r   r   r1   r5   rW   ra   re   rl   rp   rx   r{   r   r   r   r   r   r   r   r   r   r   rJ   rK   s   @r   rM   rM   [   s}           	$ 	$ 	$: : :	: 	: 	:7 7 7= = =$= = =&D D D= = =D D DD D DI I I
+ 
+ 
+A A A  "
+ 
+ 
+	. 	. 	.. . .1 1 1A A A
A A A A A A Ar   rM   strictzFILE_OPEN_POLICY = "strict"c                   p     e Zd Z f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 )ExternalLinkTestCasec                     t                                                       t          j        d          | _        t          j        | j        d          | _        |                                  d S )Nr   w)	r
   r   r   r   extfnamer   r   	exth5filer   r   s    r   r   zExternalLinkTestCase.setUpe  sR     ..dmS99r   c                     | j         }| j                                         t                                                       t          |                                           dS )zRemove ``extfname``.N)r   r   r   r
   tearDownr   r   )r   r   r   s     r   r   zExternalLinkTestCase.tearDownl  sV     = 	Xr   c                 B   | j                             ddddg           | j                             dd          }| j                             |dg d           | j                            ddddg          }|                     |           | j                            dd          }| j                            |dg d          }| j                             ddd	| j        z            }|                     |           | j                             |d
d| j        z            }|                     |           | j                             dd|          }|                     |           | j                                         t          j	        | j        d          | _        d S )Nr   r   r   r   r   r   r   r   z
%s:/group1r   z%s:/arr1r!   r)
r"   r#   r$   r   r&   create_external_linkr   r   r   r   )r   r   extarr1	extgroup1extarr2r   r   r!   s           r   r   z ExternalLinkTestCase._createFile{  s     fq!f555))#x88  ;;; .--c6Aq6BBW%%%N//X>>	.--iKK +22L4=8: :W%%%00GZ$-79 9U###00gwGGU### 	dmS99r   c                    |                      | j        j        j        | j        j                                                   |                     | j        j        j        | j        j        j                                                   |                     | j        j                                        j	        | j        j        
                                           dS rR   )r-   r   r.   r   r"   r   r/   r   r   r   r!   r0   s    r   r1   z"ExternalLinkTestCase.test00_create  s     	  !4!;!%!1!9!9!;!;	= 	= 	= 3 8 $ 0 7 = = ? ?	A 	A 	A 0 8 8 : : ? $ 0 6 6 8 8	: 	: 	: 	: 	:r   c                    |                                   |                     | j        j        j        | j        j                                                   |                     | j        j        j        | j        j        j        	                                           |                     | j        j                                        j
        | j        j                                                   dS rT   )r4   r-   r   r.   r   r"   r   r/   r   r   r   r!   r0   s    r   r5   z ExternalLinkTestCase.test01_open  s     	  !4!;!%!1!9!9!;!;	= 	= 	= 3 8 $ 0 7 = = ? ?	A 	A 	A 0 8 8 : : ? $ 0 6 6 8 8	: 	: 	: 	: 	:r   c                    | j                                          t          j        | j        d          | _         | j         j        j                                         |                     d| j                    t          j
        r$t          d| j        j        j        j                   |                     d| j                   | j        j        j        j                                         |                     d| j                   dS )zRemoving an external link.r   r    rV   r8   N)r   r   r   r   r   r.   r   r:   r;   r   r<   r=   r"   r   r   r>   r0   s    r   rW   z"ExternalLinkTestCase.test02_remove  s     	dmS99 	 '')))$.111 > 	C"DK$4$;$ABBBot{333 	%,,...$+66666r   c                    | j         j        }|j        }|                    dd          }|                     d| j                    |                     d| j                    |                     d|j                   |                     d|j                   t          j        rt          d|           |
                                 |                     | j        j        j        | j         j                                                   dS )zCopying an external link.r   rY   rB   rZ   r[   Nr"   r.   r   r]   r>   r^   r_   r   r<   r=   r:   r-   r   r   rY   r`   s       r   ra   z ExternalLinkTestCase.test03_copy  s     {,,,sI..j$+...j$+...i!1222i///> 	+.'*** 	  !4!;!%!1!9!9!;!;	= 	= 	= 	= 	=r   c                 B   | j         j        }|j        }|                    dd          }|                    ddd          }|                     d| j                    |                     d| j                    |                     d|j                   |                     d|j                   t          j        rt          d|           |
                                 |                     | j        j        j        | j         j                                                   dS )	zOverwrite an external link.r   rY   Trc   rB   rZ   r[   Nr   r`   s       r   re   z%ExternalLinkTestCase.test03_overwrite  s    {,,,sI..,,sI,>>j$+...j$+...i!1222i///> 	+.'*** 	  !4!;!%!1!9!9!;!;	= 	= 	= 	= 	=r   c                    | j         j        j        }| j                             dd          }|                    |d           | j         j        j        j        }t          j        rt          d|           | 
                    d| j                    |                     d| j                    |                     | j        j        j        | j         j        j                                                   dS )zMoving an external link.r   rg   rY   rh   rB   ri   N)r"   r.   r   r$   rj   rg   rY   r   r<   r=   r;   r>   r-   r   r   rk   s       r   rl   z ExternalLinkTestCase.test04_move  s     +"*))#x88VY'''+")1> 	*-)))T[111'555  !4!;!%!1!8!@!@!B!B	D 	D 	D 	D 	Dr   c                    | j         j        j        }|                    d           | j         j        j        }t
          j        rt          d|           |                     d| j                    | 	                    d| j                    | 
                    | j        j        j        | j         j                                                   dS )zRenaming an external link.rY   rh   rB   rZ   N)r"   r.   r   rn   rY   r   r<   r=   r;   r>   r-   r   r   ro   s      r   rp   z"ExternalLinkTestCase.test05_rename  s     +"*y!!!+"*> 	*-)))T[111j$+...  !4!;!%!1!9!9!;!;	= 	= 	= 	= 	=r   c                    | j                             ddd           d | j                             dd          D             }t          j        rt          d|           |                     |g d	           d
 | j                             dd          D             }t          j        rt          d|           |                     |g d           dS )r}   r   rs   rz   c                     g | ]	}|j         
S r   r   r   s     r   r   z9ExternalLinkTestCase.test07_walkNodes.<locals>.<listcomp>  r   r   r   r   r   r   )r   rB   r8   ru   c                     g | ]	}|j         
S r   r   r   s     r   r   z9ExternalLinkTestCase.test07_walkNodes.<locals>.<listcomp>  s-     H H Hd! H H Hr   ExternalLinkz*detected links (classname='ExternalLink'):r   N)r"   rP   r   r   r<   r=   r   r   s     r   r   z%ExternalLinkTestCase.test07_walkNodes  s    	$$Y	:FFF@ @''v'>>@ @ @> 	?6>>> !E !E !E 	F 	F 	FH H''~'FFH H H> 	G>FFF G G GHHHHHr   c                 `   d | j         j        j        D             }t          j        rt          d|           |                     t          |          d           d | j         j        j        j        D             }t          j        rt          d|           |                     |dg           dS )r   c                     g | ]}|S r   r   r   s     r   r   z8ExternalLinkTestCase.test08__v_links.<locals>.<listcomp>  r   r   r   r   c                     g | ]}|S r   r   r   s     r   r   z8ExternalLinkTestCase.test08__v_links.<locals>.<listcomp>  r   r   r   r   Nr   r   s     r   r   z$ExternalLinkTestCase.test08__v_links  r   r   c                 *   | j         j        j        }|                     |j                    |            }|                     |           |                     |j                   |                                 |                     |j                   dS )zChecking `umount()` method.N)r"   r.   r   assertIsNoneextfiler&   umount)r   linkenodes      r   test09_umountz"ExternalLinkTestCase.test09_umount  s     {'$,''' U###T\*** 	$,'''''r   c                 6   t          j        d          }	 t          j        |d          5 }|                    ddddg           |                    dd           | j        j        j        }|	                    |j        d          }| 
                    d	| j                   | 
                    d	|           | 
                    ||           t          j        rt          d
|d|j        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r   )r   r   r   r   r#   r$   r"   r.   r   r]   r>   r   r<   r=   r   r   r   is_filer   )r   h5fname2h5file2r   r   s        r   r   z-ExternalLinkTestCase.test10_copy_link_to_file-  s    ?5))	(h,, 
5$$S&1a&999$$S(333+*2"<<i@@j$+666j'222h000> 5.(E"*35 5 5
5 
5 
5 
5 
5 
5 
5 
5 
5 
5 
5 
5 
5 
5 
5 H~~%%'' (X%%'''''( (tH~~%%'' (X%%''''(s0   E CD6E DE 	D
E AF)rG   rH   rI   r   r   r   r1   r5   rW   ra   re   rl   rp   r   r   r   r   rJ   rK   s   @r   r   r   a  s                    : : :2: : :	: 	: 	:7 7 7(= = =&= = =(D D D= = =I I I"
+ 
+ 
+( ( (( ( ( ( ( ( (r   r   c                     t           j                                        } d}t          |          D ]}|                     t           j                            t                               |                     t           j                            t                               |                     t           j                            t                               | S )zCReturn a test suite consisting of all the test cases in the module.r   )	r   unittest	TestSuiterangeaddTest	makeSuiter   rM   r   )theSuiteniteris      r   suiter  B  s     ((**HE 5\\ J J223CDDEEE223CDDEEE223GHHIIIIOr   __main__r  )defaultTest)__doc__r   r   pathlibr   tablesr   tables.testsr   TempFileMixinPyTablesTestCaser   rM   r   skipIffile_FILE_OPEN_POLICYr   r  rG   sys
parse_argvargvprint_versionsmainr   r   r   <module>r     s   < < 				                 K5 K5 K5 K5 K5v+V-D K5 K5 K5^BA BA BA BA BAv+V-D BA BA BAL 1X=57 7\( \( \( \( \(6/1H \( \(7 7\(~   zJJJFchF
OW-----	 r   