B
    ™i‚\/Y  ã               @   sð   d Z ddlmZ ddlZddlZddlZddlmZ ddlm	Z	 ddlm
Z ddlm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eƒZG dd„ dejeƒZdd„ ZedkrìddlZe ej¡ e ¡  e	jdd dS )z0Test module for enumerated types under PyTables.é    )Úabsolute_importN)Úcommon)Úunittest)ÚPyTablesTestCase)Úrangec               @   sz   e Zd ZdZd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S ) ÚCreateColTestCasez-Test creating enumerated column descriptions.Úuint32© c             C   s|   t j||||d}t  |¡}|  |jd¡ |  |jjj|jj¡ |  t|j	ƒt|| ƒ¡ |  |jj
|¡ |  |j|¡ dS )z2Create and check an enumerated column description.)ÚbaseÚshapeÚenumN)ÚtablesÚEnumColÚEnumÚassertEqualÚtypeÚdtyper
   ÚnameÚintÚdfltr   r   )Úselfr   r   r
   r   ÚenumcolÚsameEnumr	   r	   ú5lib/python3.7/site-packages/tables/tests/test_enum.pyÚ
_createCol   s    
zCreateColTestCase._createColc             C   s    t  dddg¡}|  |d¡ dS )z4Describing an enumerated column from an enumeration.ÚredÚgreenÚblueN)r   r   r   )r   Úcolorsr	   r	   r   Útest00a_validFromEnum*   s    z'CreateColTestCase.test00a_validFromEnumc             C   s   ddddœ}|   |d¡ dS )z2Describing an enumerated column from a dictionary.é   é   é   )r   r   r   r   N)r   )r   r   r	   r	   r   Útest00b_validFromDict0   s    z'CreateColTestCase.test00b_validFromDictc             C   s   dddg}|   |d¡ dS )z,Describing an enumerated column from a list.r   r   r   N)r   )r   r   r	   r	   r   Útest00c_validFromList6   s    
z'CreateColTestCase.test00c_validFromListc             C   s   d}|   t| j|d¡ dS )z7Describing an enumerated column from an invalid object.é{   r   N)ÚassertRaisesÚ	TypeErrorr   )r   r   r	   r	   r   Útest00d_invalidFromType<   s    z)CreateColTestCase.test00d_invalidFromTypec             C   s"   ddddœ}|   t| j|d¡ dS )z?Describing an enumerated column with an invalid default object.r    r!   r"   )r   r   r   ÚblackN)r&   ÚKeyErrorr   )r   r   r	   r	   r   Útest01_invalidDfltB   s    z$CreateColTestCase.test01_invalidDfltc             C   s   ddddœ}|   |dd¡ dS )z4Describing an enumerated column with a broader type.r    r!   r"   )r   r   r   r   Úint64N)r   )r   r   r	   r	   r   Útest02a_validDtypeBroaderH   s    z+CreateColTestCase.test02a_validDtypeBroaderc             C   s*   dd„ t dƒD ƒ}|  t| j|dd¡ dS )z7Describing an enumerated column with a too narrow type.c             S   s   g | ]}d | ‘qS )ze%dr	   )Ú.0Úir	   r	   r   ú
<listcomp>Q   s    zCCreateColTestCase.test02b_invalidDtypeTooNarrow.<locals>.<listcomp>i,  Ze0Úuint8N)r   r&   r'   r   )r   r   r	   r	   r   Útest02b_invalidDtypeTooNarrowN   s    z/CreateColTestCase.test02b_invalidDtypeTooNarrowc             C   s   dddg}| j |ddd dS )z<Describing an enumerated column with multidimensional shape.r   r   r   )r!   )r   N)r   )r   r   r	   r	   r   Útest03a_validShapeMDT   s    
z&CreateColTestCase.test03a_validShapeMDc                sT   t  dddg¡}t j|dddd}d‰ ‡ fdd	„t d
¡D ƒ}|  t|ƒ|k¡ dS )z5Checking the string representation of an enumeration.r   r   r   r   r	   )r
   r   z[EnumCol(enum=Enum({%s}), dflt='red', base=UInt32Atom(shape=(), dflt=0), shape=(), pos=None)c                s   g | ]}ˆ d   |¡ ‘qS )z, )Újoin)r.   Úitems)Útemplater	   r   r0   f   s    z;CreateColTestCase.test04a_validReprEnum.<locals>.<listcomp>)z	'blue': 2z
'green': 1z'red': 0N)r   r   r   Ú	itertoolsÚpermutationsZ
assertTrueÚrepr)r   r   r   Zpermitationsr	   )r6   r   Útest04a_validReprEnumZ   s    
z'CreateColTestCase.test04a_validReprEnumc             C   s&   ddi}| j t| j|dt ¡ d dS )z<Describing an enumerated column of floats (not implemented).r   g      ð?)r
   N)r&   ÚNotImplementedErrorr   r   Ú	FloatAtom)r   r   r	   r	   r   Útest99a_nonIntEnumk   s    z$CreateColTestCase.test99a_nonIntEnumc             C   s"   dddg}|   t| j|dd¡ dS )zXDescribing an enumerated column encoded as floats.

        (not implemented).

        r   r   r   Úfloat64N)r&   r;   r   )r   r   r	   r	   r   Útest99b_nonIntDtyper   s    
z%CreateColTestCase.test99b_nonIntDtypec             C   s*   ddi}| j t| j|dtjddd dS )zADescribing an enumerated column of non-scalars (not implemented).r   )r"   r!   é   r@   )r   )r
   N)r&   r;   r   r   ÚIntAtom)r   r   r	   r	   r   Útest99b_nonScalarEnum}   s    z'CreateColTestCase.test99b_nonScalarEnumN)r   r	   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r#   r$   r(   r+   r-   r2   r3   r:   r=   r?   rB   r	   r	   r	   r   r      s   
r   c               @   sj   e Zd ZdZd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S )ÚCreateAtomTestCasezTest creating enumerated atoms.r   r	   c             C   s`   t j||||d}t  |¡}|  |jd¡ |  |jjj|jj¡ |  |j|¡ |  |j	|¡ dS )z$Create and check an enumerated atom.)r
   r   r   N)
r   ÚEnumAtomr   r   r   r   r
   r   r   r   )r   r   r   r
   r   Zenumatomr   r	   r	   r   Ú_createAtomˆ   s    
zCreateAtomTestCase._createAtomc             C   s    t  dddg¡}|  |d¡ dS )z2Describing an enumerated atom from an enumeration.r   r   r   N)r   r   rI   )r   r   r	   r	   r   r   ’   s    z(CreateAtomTestCase.test00a_validFromEnumc             C   s   ddddœ}|   |d¡ dS )z0Describing an enumerated atom from a dictionary.r    r!   r"   )r   r   r   r   N)rI   )r   r   r	   r	   r   r#   ˜   s    z(CreateAtomTestCase.test00b_validFromDictc             C   s   dddg}|   |d¡ dS )z*Describing an enumerated atom from a list.r   r   r   N)rI   )r   r   r	   r	   r   r$   ž   s    
z(CreateAtomTestCase.test00c_validFromListc             C   s   d}|   t| j|d¡ dS )z5Describing an enumerated atom from an invalid object.r%   r   N)r&   r'   rI   )r   r   r	   r	   r   r(   ¤   s    z*CreateAtomTestCase.test00d_invalidFromTypec             C   s    ddddœ}| j |ddd dS )	z2Describing an enumerated atom with a broader type.r    r!   r"   )r   r   r   r   r,   )r
   N)rI   )r   r   r	   r	   r   r-   ª   s    z,CreateAtomTestCase.test02a_validDtypeBroaderc             C   s*   dd„ t dƒD ƒ}|  t| j|dd¡ dS )z5Describing an enumerated atom with a too narrow type.c             S   s   g | ]}d | ‘qS )ze%dr	   )r.   r/   r	   r	   r   r0   ³   s    zDCreateAtomTestCase.test02b_invalidDtypeTooNarrow.<locals>.<listcomp>i,  r   r1   N)r   r&   r'   rI   )r   r   r	   r	   r   r2   °   s    z0CreateAtomTestCase.test02b_invalidDtypeTooNarrowc             C   s   dddg}| j |ddd dS )z:Describing an enumerated atom with multidimensional shape.r   r   r   )r!   )r   N)rI   )r   r   r	   r	   r   r3   ¶   s    
z'CreateAtomTestCase.test03a_validShapeMDc             C   s&   ddi}| j t| j|dt ¡ d dS )z:Describing an enumerated atom of floats (not implemented).r   g      ð?)r
   N)r&   r;   rI   r   r<   )r   r   r	   r	   r   r=   ¼   s    z%CreateAtomTestCase.test99a_nonIntEnumc             C   s"   dddg}|   t| j|dd¡ dS )zWDescribing an enumerated atom encoded as a float.

        (not implemented).

        r   r   r   r>   N)r&   r;   rI   )r   r   r	   r	   r   r?   Ã   s    
z&CreateAtomTestCase.test99b_nonIntDtypec             C   s*   ddi}| j t| j|dtjddd dS )z?Describing an enumerated atom of non-scalars (not implemented).r   )r"   r!   r@   r@   )r   )r
   N)r&   r;   rI   r   rA   )r   r   r	   r	   r   rB   Î   s    z(CreateAtomTestCase.test99b_nonScalarEnumN)r   r	   )rC   rD   rE   rF   rI   r   r#   r$   r(   r-   r2   r3   r=   r?   rB   r	   r	   r	   r   rG   …   s   

rG   c               @   sx   e Zd ZdZe dddddœ¡ZdZejZ	dZ
d	Zd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S )ÚEnumTableTestCasez$Test tables with enumerated columns.r    r!   r"   r   )r   r   r   r)   r)   iÒ  Úuint16r	   c                s   G ‡ ‡fdd„dt jƒ}|S )Nc                   s2   e Zd ZejddZej” j” j” j	”ddZ
dS )z7EnumTableTestCase._description.<locals>.TestDescriptionr   )Úposr"   )r
   r   rL   N)rC   rD   rE   r   ZIntColÚridr   r   ÚdefaultNameÚenumTypeÚrcolorr	   )r   r   r	   r   ÚTestDescriptionà   s   rQ   )r   ZIsDescription)r   r   rQ   r	   )r   r   r   Ú_descriptionß   s    zEnumTableTestCase._descriptionc             C   sD   | j jdd|  ¡ |  ¡ d |  ¡  |  | j jj d¡| j	d¡ dS )z3Reopening a file with tables using enumerated data.ú/Útest)ÚtitlerP   z5Enumerated type was not restored correctly from disk.N)
Úh5fileÚcreate_tablerR   Ú_getMethodNameÚ_reopenr   ÚrootrT   Úget_enumr   )r   r	   r	   r   Útest00a_reopenè   s    z EnumTableTestCase.test00a_reopenc             C   sF   | j jdd|  d¡|  ¡ d |  ¡  |  | j jj d¡| j	d¡ dS )zMReopening a file with tables using enumerated multi-dimensional
        data.rS   rT   )r!   )rU   rP   z5Enumerated type was not restored correctly from disk.N)
rV   rW   rR   rX   rY   r   rZ   rT   r[   r   )r   r	   r	   r   Útest00b_reopenMDô   s    z"EnumTableTestCase.test00b_reopenMDc             C   sÔ   | j jdd|  ¡ |  ¡ d}d| jfd| jfg}|j}|d d |d< |d d |d	< | ¡  |d d |d< |  t	t
j|d	|d d ¡ | ¡  d
|_| ¡ }t d|dd… |f ¡ |  |dd… |d¡ dS )z3Appending enumerated values using ``row.append()``.rS   rT   )rU   é
   é   r   rM   r"   rP   Úpythonz&* appended value: %s
* read value: %s
NéÿÿÿÿzWritten and read values differ.)rV   rW   rR   rX   ÚvalueInEnumÚvalueOutOfEnumÚrowÚappendr&   Ú
ValueErrorÚoperatorÚsetitemÚflushÚflavorÚreadr   ÚverbosePrintr   )r   ÚtblÚappendedrd   rk   r	   r	   r   Útest01_rowAppend  s&    z"EnumTableTestCase.test01_rowAppendc             C   st   | j jdd|  ¡ |  ¡ d}d| jfd| jfg}| |¡ | ¡  d|_| 	¡ }t
 d||f ¡ |  ||d¡ d	S )
z5Appending enumerated values using ``table.append()``.rS   rT   )rU   r^   r_   r`   z&* appended value: %s
* read value: %s
zWritten and read values differ.N)rV   rW   rR   rX   rb   rc   re   ri   rj   rk   r   rl   r   )r   rm   rn   rk   r	   r	   r   Útest02_append  s    
zEnumTableTestCase.test02_appendc             C   sŒ   | j jdd|  ¡ |  ¡ d}d| jfd| jfg}| |¡ d| jfd| jfg}||dd…< d|_| ¡ }t	 
d||f ¡ |  ||d	¡ dS )
z9Changing enumerated values using ``table.__setitem__()``.rS   rT   )rU   r^   r_   Nr`   z%* written value: %s
* read value: %s
zWritten and read values differ.)rV   rW   rR   rX   rb   re   rc   rj   rk   r   rl   r   )r   rm   rn   Úwrittenrk   r	   r	   r   Útest03_setitem3  s    
z EnumTableTestCase.test03_setitemc             C   s  | j jdd|  d¡|  ¡ d}d| j| jffd| j| jffg}|j}|d d |d< |  tt	j
|d	|d d
 ¡ | |¡ | ¡  d|_| ¡ }x~tt|ƒƒD ]n}|  || d || d d¡ |  || d
 d || d
 d d¡ |  || d
 d
 || d
 d
 d¡ qžW dS )z,Appending multi-dimensional enumerated data.rS   rT   )r!   )rU   r^   r_   r   rM   rP   r"   r`   zWritten and read values differ.N)rV   rW   rR   rX   rb   rc   rd   r&   rf   rg   rh   re   ri   rj   rk   r   Úlenr   )r   rm   rn   rd   rk   r/   r	   r	   r   Útest04_multidimJ  s&    
  z!EnumTableTestCase.test04_multidimc          	   C   s¤   | j jdd|  ¡ |  ¡ d}d| jfd| jfd| jfg}| |¡ | ¡  dd„ | d	d
| ji¡D ƒ}t	 
d| j|jj||dd… f ¡ |  ||dd… d¡ dS )zSearching enumerated data.rS   rT   )rU   r^   r_   é   c             S   s   g | ]}|d  |d f‘qS )rM   rP   r	   )r.   rd   r	   r	   r   r0   s  s   z2EnumTableTestCase.test05_where.<locals>.<listcomp>zrcolor == vÚvz\* ``valueInEnum``: %s
* ``rcolor`` column: ``%s``
* ``searched``: %s
* Should look like: %s
Nra   z"Search returned incorrect results.)rV   rW   rR   rX   rb   rc   re   ri   Úwherer   rl   ZcolsrP   r   )r   rm   rn   Zsearchedr	   r	   r   Útest05_wheree  s    
zEnumTableTestCase.test05_whereN)r	   )rC   rD   rE   rF   r   r   r   rN   r   rb   rc   rO   rR   r\   r]   ro   rp   rr   rt   rx   r	   r	   r	   r   rJ   Ö   s   
	rJ   c               @   s„   e Zd ZdZe dddddœ¡ZejZdZ	dZ
d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S ) ÚEnumEArrayTestCasez,Test extendable arrays of enumerated values.r    r!   r"   r   )r   r   r   r)   iÒ  rK   r	   c             C   s   t j| jd| j|dS )Nr   )r
   r   )r   rH   r   rO   )r   r   r	   r	   r   Ú_atom‡  s    zEnumEArrayTestCase._atomc             C   sP   | j jdd|  ¡ d|  ¡ d d| j jj_|  ¡  |  | j jj 	¡ | j
d¡ dS )z>Reopening a file with extendable arrays using enumerated data.rS   rT   )r   )r   rU   r`   z5Enumerated type was not restored correctly from disk.N)rV   Úcreate_earrayrz   rX   rZ   rT   rj   rY   r   r[   r   )r   r	   r	   r   r\   ‹  s    z!EnumEArrayTestCase.test00a_reopenc             C   sP   | j jdd|  ¡ d|  ¡ d d| j jj_|  ¡  |  | j jj 	¡ | j
d¡ dS )zXReopening a file with extendable arrays using enumerated
        multi-dimensional data.rS   rT   )r   r!   )r   rU   r`   z5Enumerated type was not restored correctly from disk.N)rV   r{   rz   rX   rZ   rT   rj   rY   r   r[   r   )r   r	   r	   r   r]   ™  s    z#EnumEArrayTestCase.test00b_reopenMDc             C   sx   d}t j| j|| jdd}| jjdd|d|  ¡ d |  ¡  |  | jj	j
 ¡ | jd¡ |  | jj	j
jj| j| d	¡ d S )
Nr   r	   )r
   r   rS   rT   )r   )r   rU   z5Enumerated type was not restored correctly from disk.zJThe default value of enumerated type was not restored correctly from disk.)r   rH   r   rO   rV   r{   rX   rY   r   rZ   rT   r[   Úatomr   )r   r   r|   r	   r	   r   Ú!test_enum_default_persistence_red¨  s    z4EnumEArrayTestCase.test_enum_default_persistence_redc             C   sx   d}t j| j|| jdd}| jjdd|d|  ¡ d |  ¡  |  | jj	j
 ¡ | jd¡ |  | jj	j
jj| j| d	¡ d S )
Nr   r	   )r
   r   rS   rT   )r   )r   rU   z5Enumerated type was not restored correctly from disk.zJThe default value of enumerated type was not restored correctly from disk.)r   rH   r   rO   rV   r{   rX   rY   r   rZ   rT   r[   r|   r   )r   r   r|   r	   r	   r   Ú#test_enum_default_persistence_greenº  s    z6EnumEArrayTestCase.test_enum_default_persistence_greenc             C   sx   d}t j| j|| jdd}| jjdd|d|  ¡ d |  ¡  |  | jj	j
 ¡ | jd¡ |  | jj	j
jj| j| d	¡ d S )
Nr   r	   )r
   r   rS   rT   )r   )r   rU   z5Enumerated type was not restored correctly from disk.zJThe default value of enumerated type was not restored correctly from disk.)r   rH   r   rO   rV   r{   rX   rY   r   rZ   rT   r[   r|   r   )r   r   r|   r	   r	   r   Ú"test_enum_default_persistence_blueÌ  s    z5EnumEArrayTestCase.test_enum_default_persistence_bluec             C   sx   d}t j| j|| jdd}| jjdd|d|  ¡ d |  ¡  |  | jj	j
 ¡ | jd¡ |  | jj	j
jj| j| d	¡ d S )
Nr)   r	   )r
   r   rS   rT   )r   )r   rU   z5Enumerated type was not restored correctly from disk.zJThe default value of enumerated type was not restored correctly from disk.)r   rH   r   rO   rV   r{   rX   rY   r   rZ   rT   r[   r|   r   )r   r   r|   r	   r	   r   Ú#test_enum_default_persistence_blackÞ  s    z6EnumEArrayTestCase.test_enum_default_persistence_blackc             C   s\   | j jdd|  ¡ d|  ¡ d}d|_| j| jg}| |¡ | ¡  | 	¡ }|  
||d¡ dS )z/Appending scalar elements of enumerated values.rS   rT   )r   )r   rU   r`   zWritten and read values differ.N)rV   r{   rz   rX   rj   rb   rc   re   ri   rk   r   )r   Úearrrn   rk   r	   r	   r   Útest01_appendð  s    
z EnumEArrayTestCase.test01_appendc             C   sh   | j jdd|  ¡ d|  ¡ d}d|_| j| jg| j| jgg}| |¡ | ¡  | 	¡ }|  
||d¡ dS )z:Appending multi-dimensional elements of enumerated values.rS   rT   )r   r!   )r   rU   r`   zWritten and read values differ.N)rV   r{   rz   rX   rj   rb   rc   re   ri   rk   r   )r   r   rn   rk   r	   r	   r   Útest02_appendMDÿ  s    

z"EnumEArrayTestCase.test02_appendMDc             C   sl   | j jdd|  ¡ d|  ¡ d}d|_| j| jf}| |¡ | j| jg}||dd…< | ¡ }|  	||d¡ dS )z:Changing enumerated values using ``earray.__setitem__()``.rS   rT   )r   )r   rU   r`   NzWritten and read values differ.)
rV   r{   rz   rX   rj   rb   re   rc   rk   r   )r   r   rn   rq   rk   r	   r	   r   rr     s    
z!EnumEArrayTestCase.test03_setitemN)r	   )rC   rD   rE   rF   r   r   r   r   rb   rc   rO   rz   r\   r]   r}   r~   r   r€   r‚   rƒ   rr   r	   r	   r	   r   ry     s   
ry   c               @   sd   e Zd ZdZe dddddœ¡ZejZdZ	dZ
dd
d„Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚEnumVLArrayTestCasez1Test variable-length arrays of enumerated values.r    r!   r"   r   )r   r   r   r)   iÒ  rK   r	   c             C   s   t j| jd| j|dS )Nr   )r
   r   )r   rH   r   rO   )r   r   r	   r	   r   rz   )  s    zEnumVLArrayTestCase._atomc             C   sN   | j jdd|  ¡ |  ¡ d d| j jj_|  ¡  |  | j jj 	¡ | j
d¡ dS )zKReopening a file with variable-length arrays using
        enumerated data.rS   rT   )rU   r`   z5Enumerated type was not restored correctly from disk.N)rV   Úcreate_vlarrayrz   rX   rZ   rT   rj   rY   r   r[   r   )r   r	   r	   r   r\   -  s    
z"EnumVLArrayTestCase.test00a_reopenc             C   sP   | j jdd|  d¡|  ¡ d d| j jj_|  ¡  |  | j jj 	¡ | j
d¡ dS )z]Reopening a file with variable-length arrays using enumerated
        multi-dimensional data.rS   rT   )r!   )rU   r`   z5Enumerated type was not restored correctly from disk.N)rV   r…   rz   rX   rZ   rT   rj   rY   r   r[   r   )r   r	   r	   r   r]   <  s    z$EnumVLArrayTestCase.test00b_reopenMDc             C   s†   | j jdd|  ¡ |  ¡ d}d|_| jg| j| jgg}| |d ¡ | |d ¡ | ¡  | 	¡ }t
 d||f ¡ |  ||d¡ d	S )
z/Appending scalar elements of enumerated values.rS   rT   )rU   r`   r   r"   z&* appended value: %s
* read value: %s
zWritten and read values differ.N)rV   r…   rz   rX   rj   rb   rc   re   ri   rk   r   rl   r   )r   Úvlarrrn   rk   r	   r	   r   r‚   K  s    
z!EnumVLArrayTestCase.test01_appendc             C   sš   | j jdd|  d¡|  ¡ d}d|_| j| jgg| j| jg| j| jggg}| |d ¡ | |d ¡ | ¡  | 	¡ }t
 d||f ¡ |  ||d	¡ d
S )z:Appending multi-dimensional elements of enumerated values.rS   rT   )r!   )rU   r`   r   r"   z&* appended value: %s
* read value: %s
zWritten and read values differ.N)rV   r…   rz   rX   rj   rb   rc   re   ri   rk   r   rl   r   )r   r†   rn   rk   r	   r	   r   rƒ   a  s    
z#EnumVLArrayTestCase.test02_appendMDc             C   s|   | j jdd|  ¡ |  ¡ d}d|_| j| jf}| |¡ | j| jg}||d< | ¡ }t	 
d||f ¡ |  ||d d¡ dS )	z;Changing enumerated values using ``vlarray.__setitem__()``.rS   rT   )rU   r`   r   z%* written value: %s
* read value: %s
zWritten and read values differ.N)rV   r…   rz   rX   rj   rb   re   rc   rk   r   rl   r   )r   r†   rn   rq   rk   r	   r	   r   rr   x  s    

z"EnumVLArrayTestCase.test03_setitemN)r	   )rC   rD   rE   rF   r   r   r   r   rb   rc   rO   rz   r\   r]   r‚   rƒ   rr   r	   r	   r	   r   r„   !  s   
r„   c              C   s–   ddl } ddlm} t ¡ }d}xpt|ƒD ]d}| |  |¡¡ | t t	¡¡ | t t
¡¡ | t t¡¡ | t t¡¡ | t t¡¡ q*W |S )zCReturn a test suite consisting of all the test cases in the module.r   N)r   r"   )ÚdoctestZtables.miscr   r   Z	TestSuiter   ZaddTestZDocTestSuiteZ	makeSuiter   rG   rJ   ry   r„   )r‡   r   ZtheSuiteZniterr/   r	   r	   r   Úsuite  s    rˆ   Ú__main__)ZdefaultTest)rF   Z
__future__r   rg   r7   r   Ztables.testsr   Ztables.tests.commonr   r   ZTestCaseZ	six.movesr   r   rG   ZTempFileMixinrJ   ry   r„   rˆ   rC   ÚsysZ
parse_argvÚargvZprint_versionsÚmainr	   r	   r	   r   Ú<module>   s*   kQ * #l