U
    »mœdI©  ã                   @   sd
  d Z ddlZddlmZ ddlmZmZ ddlmZ ddl	m
Z
 ddlZddlmZ ddlZddlZddlZddlmZmZmZmZmZ ddlZdd	lmZ ddlZdd
lmZ ddlmZ ddl Z!ddl"m#Z#m$Z$m%Z% ddl&m	  m'  m(Z) ddl*m+Z+m,Z,m-Z-m.Z. ddl/m0Z0m1Z1m2Z2m3Z3 ddl4m5Z5m6Z6m7Z7m8Z8m9Z9 ddl:m	  m'  m;Z< eee=ƒdƒZ>dd„ Z?ej@d ejAdeBd� Cdd¡ ZDdddideDidœgZEeE Fdddidedgƒidœ¡ eE Fdddide GeD¡de HeD¡  idœ¡ e Id ¡ZJeKeLdd!ƒƒeJd< eKeLddƒƒeJdd…df< eE Fd"d#did#eJidœ¡ eE Fd$d%d$id%e MeJ¡idœ¡ eJ NeO¡ZPePd&  d7  < eE Fd'd(d$id(e MeP¡idœ¡ eE Fd)ddd*œeDeJd*œdœ¡ eE Fd+d,did,e?d-ƒidœ¡ eE Fd.d/did/ed0gƒidœ¡ e?g e?dgƒe?dd1ggƒe?dd1d2ggƒfeQd� Cdd-¡ZRed3gƒeRd&< d4d5d4id5eRidœgZSe?e?dƒe?d1ƒe?g ƒe?g ƒe?d2ƒfeQd� Cdd-¡ZTejUd6eQd�ZVe?dƒeVd&< eS Fd7d8d4id8eVidœ¡ eS Fd9d:d4id:eTidœ¡ eS Fd;d<did<ed=d>d?gƒidœ¡ eS Fd@dAdidAe We CeKeLddBƒƒdC¡¡idœ¡ ee Xd1¡e Yd¡ej@gƒ Cdd2¡ZZdDdE„ dFD ƒZ[e Id6e[¡Z\edGgƒe\dH d&< eZe\dI d&< eZdJ e\dK d&< eS FdLdMdLidMe\idœ¡ ejIdNeQd�Z]e?dƒe]d&< ejIdOeQd�e]dP< e?d1ej^d�e]dP d&< e?d2ggej^d�e]dP dP< ejIdNeQd�e]dP dQ< e?dej^d�e]dP dQ d&< e?dRej^d�e]dP dQ dP< eS FdSdTd4idTe]idœ¡ ejUd6dUdE„ dVD ƒd�Z_e?dƒe_d& dW< ejUd6d?eQfgd�e_d& dX< edYgƒe_d& dX d& d?< eS FdZd[dLid[e_idœ¡ ejUdNd\dE„ dVD ƒd�Z`e?dƒe`d& dW< e?d1ƒe`d& dX< ed]gƒe`dP dW< ed^gƒe`dP dX< eS Fd_d`dLid`e`idœ¡ e [dadE„ dbD ƒ¡Zae%ejId6ead�dcƒZbebd& Zceddgƒecde< edfgƒecdg< eddgƒecdh< e?dƒecdi< e?dƒecdj< e?dƒecdk< eS Fdldmdlidmebidœ¡ edee>dnƒdoƒZeee f¡  gdp¡Zhee i¡  eS Fdqdrdidreehgƒidœ¡ eS Fd$d%d$id%e MeJ¡idœ¡ eS Fd'd(d$id(e MeP¡idœ¡ eS Fdsdtduidtedvgdwggƒidœ¡ eSdd… Zjej Fdxdydlidye kebd1¡ Cdd1¡idœ¡ dzd{„ Zld|d}„ Zmd~d„ Znd€d�„ Zod‚dƒ„ Zp�dd…d†„Zqejr sdkd‡¡dˆd‰„ ƒZtejr sdkd‡¡dŠd‹„ ƒZuejr sdŒd�d�dŽgfd�dŽgfg¡d�d‘„ ƒZvd’d“„ Zwd”d•„ Zxd–d—„ Zyd˜d™„ Zzdšd›„ Z{dœd�„ Z|dždŸ„ Z}d d¡„ Z~d¢d£„ Zd¤d¥„ Z€d¦d§„ Z�d¨d©„ Z‚dªd«„ Zƒd¬d­„ Z„d®d¯„ Z…d°d±„ Z†d²d³„ Z‡d´dµ„ Zˆd¶d·„ Z‰d¸d¹„ ZŠdºd»„ Z‹d¼d½„ ZŒd¾d¿„ Z�dÀdÁ„ ZŽdÂdÃ„ Z�dÄdÅ„ Z�dÆdÇ„ Z‘dÈdÉ„ Z’dÊdË„ Z“dÌdÍ„ Z”dÎdÏ„ Z•dÐdÑ„ Z–dÒdÓ„ Z—dÔdÕ„ Z˜dÖd×„ Z™dØdÙ„ ZšdÚdÛ„ Z›dÜdÝ„ ZœdÞdß„ Z�dàdá„ Zždâdã„ ZŸdädå„ Z dædç„ Z¡dèdé„ Z¢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­ejr s�d �d�d�d�d�d�dg¡�d�d„ ƒZ®�d	�d
„ Z¯�d�d„ Z°dS (  zD Nose test generators

Need function load / save / roundtrip tests

é    N)ÚOrderedDict)ÚjoinÚdirname)Úglob)ÚBytesIO)Úmkdtemp)Úassert_array_equalÚassert_array_almost_equalÚassert_equalÚassert_Úassert_warns)Úraises)Úarray)ÚMatlabOpaqueÚMatlabFunctionÚMatlabObject)ÚmatdimsÚMatWriteErrorÚMatReadErrorÚmatfile_version)Úmat_reader_factoryÚloadmatÚsavematÚwhosmat)ÚMatFile5WriterÚMatFile5ReaderÚvarmats_from_matÚto_writeableÚEmptyStructMarkerÚdatac                  O   s   t j| |Ž}t|ƒ|_|S )z;Convenience function to return matlab-compatible 2-D array.)Únpr   r   Úshape)ÚargsÚkwargsÚarr© r%   úW/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/scipy/io/matlab/tests/test_mio.pyÚmlarr*   s    
r'   é   é	   ©Údtypeé   ÚdoubleZ
testdouble)ÚnameÚclassesÚexpectedÚstringZ
teststringÚcharz+"Do nine men interpret?" "Nine men," I nod.ÚcomplexZtestcomplexy              ð?)é   é   é   ÚmatrixÚ
testmatrixÚsparseZ
testsparse©r   r   ZsparsecomplexZtestsparsecomplexÚmulti)ÚthetaÚaÚminusZ	testminuséÿÿÿÿZonecharZtestonecharÚré   r4   z@This cell contains this string and 3 arrays of increasing lengthÚcellZtestcell©r,   r,   Z
scalarcellZtestscalarcellZ	emptycellZtestemptycellZstringarrayZteststringarrayzone  ztwo  ÚthreeZ3dmatrixZtest3dmatrixé   )r(   r4   rA   c                 C   s   g | ]}|t f‘qS r%   ©Úobject©Ú.0Únr%   r%   r&   Ú
<listcomp>�   s     rK   )ÚstringfieldÚdoublefieldÚcomplexfieldzRats live on no evil star.rL   rM   y      ð?      ð?rN   ÚstructZ
teststruct©r,   rA   )r,   r4   ©r   r,   )r   rA   r5   ZcellnestZtestcellnestc                 C   s   g | ]}|t f‘qS r%   rF   rH   r%   r%   r&   rK   §   s     ©ÚoneÚtworS   rT   znumber 3Z
structnestZteststructnestc                 C   s   g | ]}|t f‘qS r%   rF   rH   r%   r%   r&   rK   °   s     znumber 1znumber 2Z	structarrZteststructarrc                 C   s   g | ]}|t f‘qS r%   rF   rH   r%   r%   r&   rK   º   s     )ÚexprÚ	inputExprr"   ÚisEmptyÚnumArgsÚversionÚinlineÚxrU   z x = INLINE_INPUTS_{1};rV   r"   rW   rX   rY   rG   Z
testobjectzjapanese_utf8.txtÚrbzutf-8ÚunicodeZtestunicodeÚboolÚ	testboolsZlogicalTFZobjectarrayZtestobjectarrayc                 C   sh   t | ƒ}t |ƒ}||krdS |tjkr@| jdkr@t |  ¡ ƒ|kS |tjkrd|jdkrdt | ¡ ƒ|kS dS )zkCheck if types are same or compatible.

    0-D numpy scalars are compatible with bare python scalars.
    Tr%   F)Útyper    Úndarrayr!   Úitem)Zvar1Zvar2Ztype1Ztype2r%   r%   r&   Útypes_compatibleë   s    rc   c                 C   sd  t  |¡r4tt  |¡ƒ t| ¡ | ¡ | dd� dS tt||ƒdt|ƒt|ƒ| f ƒ t|tj	tj
tfƒsxt||ƒ dS t|j|jkd|j|j| f d� |j}|jrðt|tƒr¾t|j|jƒ t|ƒD ]$\}}d| |f }t|||| ƒ qÆdS |j�r(|jD ]$}d| |f }t||| || ƒ qþdS |jttjtjfk�rPt||| d	� dS t||| dd� dS )
z/ Check one level of a potentially nested array r5   )Úerr_msgÚdecimalNzExpected type %s, got %s at %szExpected shape %s, got %s at %s)Úmsgz
%s, [%d], z%s, field %s, ©rd   )ÚSPÚissparser   r	   Útoarrayrc   r`   Ú
isinstancer    Úvoidra   r   r
   r!   r+   Z	hasobjectÚ	classnameÚ	enumerateÚ_check_levelÚfieldsÚstrZunicode_Úbool_)Úlabelr0   ÚactualZex_dtypeÚiZevZlevel_labelÚfnr%   r%   r&   ro   û   s^    
ý
ÿÿÿ
þÿ

 ÿþro   c           	      C   sf   |D ]\}t |dd�}d| |f }| ¡ D ]6\}}d||f }t||kd| ƒ t|||| ƒ q(qd S )NT©Ústruct_as_recordútest %s; file %sz%s, variable %szMissing key at %s)r   Úitemsr   ro   )	r.   ÚfilesÚcaseÚ	file_nameZmatdictrs   Úkr0   Zk_labelr%   r%   r&   Ú_load_check_case*  s    r   c                    s^   |D ]T}d| |f }t |ƒ}‡ fdd„| ¡ D ƒ}| ¡  | ¡  t||d|||f ƒ qd S )Nry   c                    s    g | ]\}}||j ˆ | f‘qS r%   )r!   )rI   r~   r0   ©r/   r%   r&   rK   :  s    z$_whos_check_case.<locals>.<listcomp>z%s: %r != %r)r   rz   Úsortr
   )r.   r{   r|   r/   r}   rs   ZwhosZexpected_whosr%   r€   r&   Ú_whos_check_case4  s    
ÿÿr‚   c                 C   s0   t ƒ }t|||d� | d¡ t| |g|ƒ d S )N©Úformatr   )r   r   Úseekr   )r.   r0   r„   Ú
mat_streamr%   r%   r&   Ú_rt_check_caseE  s    
r‡   útest%(name)s_*.matc           	      c   s¦   | dkrt }n| dkrt}n| dks(t‚t}|D ]p}|d }|d }|d krRd }n8tt|t|d� ƒ}t|ƒ}t|ƒdksŠtd||f ƒ‚|d	 }||||fV  q0d S )
NÚ4Ú5Ú5_rtr.   r0   )r.   r   z$No files for test %s using filter %sr/   )	Úcase_table4Úcase_table5ÚAssertionErrorÚcase_table5_rtÚpjoinÚtest_data_pathÚdictr   Úlen)	rY   ÚfiltZcasesr|   r.   r0   r{   Úuse_filtr/   r%   r%   r&   Ú_casesM  s$    
ÿr–   ©r‰   rŠ   c                 C   s"   t | ƒD ]}t|d d… Ž  qd S )Nr4   )r–   r   ©rY   r|   r%   r%   r&   Ú	test_loadc  s    r™   c                 C   s   t | ƒD ]}t|Ž  qd S ©N)r–   r‚   r˜   r%   r%   r&   Ú	test_whosi  s    r›   zversion, fmtsr‰   rŠ   r‹   c                 C   s4   t | d d�D ]"}|D ]}t|d |d |ƒ qqd S )N)r”   r   rA   )r–   r‡   )rY   Zfmtsr|   Úfmtr%   r%   r&   Útest_round_tripp  s    r�   c            	   	   C   sÂ   t  d¡} d| d< d| d< t | ¡}d}d|i}d}tƒ }zTt||ƒ}tj	|d	d
�}t
|||d� | ¡  tj	|dd
�}t|dd�}| ¡  W 5 t |¡ X t|d  ¡ |d  ¡ t|ƒd� d S )N)é   rž   gffffff@©rA   r4   g      @)r(   r5   Z	gzip_testr[   r‰   Úwb)Úmoderƒ   r\   Trw   rg   )r    Úzerosrh   Ú
csc_matrixr   ÚshutilÚrmtreer�   ÚgzipÚopenr   Úcloser   r	   rj   Úrepr)	Zxdenser[   r.   r0   r„   ÚtmpdirÚfnamer†   rt   r%   r%   r&   Útest_gzip_simplez  s*    



þr¬   c               	   C   s°   t ƒ } z˜tt d¡d�}t| dƒ}t||ƒ t 	|¡ t||ƒ t
|ƒ t 	|¡ t|dƒ}t||ƒ | d¡ | ¡  t|dƒ}t
|ƒ | d¡ | ¡  W 5 t | ¡ X d S )N)rA   rA   ©r[   za.matr    r   r\   )r   r¤   r¥   r’   r    r¢   r�   r   ÚosÚunlinkr   r§   r…   r¨   )rª   r[   r«   Úfr%   r%   r&   Útest_multiple_open–  s$    









r±   c                  C   sN   t ttdƒƒ} tt| ƒdkƒ | D ]&}t|dƒ}ttt|dd� | 	¡  q"d S )Nztesthdf5*.matr   r\   Trw   )
r   r�   r‘   r   r“   r§   Úassert_raisesÚNotImplementedErrorr   r¨   )Ú	filenamesÚfilenameÚfpr%   r%   r&   Ú
test_mat73³  s    ÿ
ýr·   c               	   C   sD   t tdƒ} t ¡ �( t d¡ t| dd� t| dd� W 5 Q R X d S )Nztestdouble_7.1_GLNX86.matÚerrorTrw   F)r�   r‘   ÚwarningsÚcatch_warningsÚsimplefilterr   )r«   r%   r%   r&   Útest_warningsÁ  s
    


r¼   c                  C   sZ   t ƒ } t| dddiidd� t| ƒd }t|jdƒ t|jt t¡ƒ t|d d kƒ d S )NÚdr,   rA   rŠ   rƒ   rC   r:   ©	r   r   r   r
   r!   r+   r    rG   r   )ÚsioÚbackr%   r%   r&   Útest_regression_653Î  s    rÁ   c                  C   sp   d} d|  }t jd|tfgd�}ttƒ d|idd� d| d  }t jd|tfgd�}ttttƒ d|idd� d S )	Né   r=   rC   r*   Ú
longstructrŠ   rƒ   r,   ©r    r¢   rG   r   r   r²   Ú
ValueError©ÚlimÚfldnameÚst1r%   r%   r&   Útest_structname_lenÚ  s    
 ÿrÊ   c                  C   s2   t jddtfgd�} ttttƒ d| iddd� d S )NrC   Zmy_fieldnamer*   Ú	my_structr‰   T©r„   Úlong_field_names)r    r¢   rG   r²   rÅ   r   r   )rË   r%   r%   r&   Ú(test_4_and_long_field_names_incompatibleæ  s    
  ÿrÎ   c                  C   st   d} d|  }t jd|tfgd�}ttƒ d|iddd� d| d	  }t jd|tfgd�}ttttƒ d|iddd� d S )
Né?   r=   rC   r*   rÃ   rŠ   TrÌ   r,   rÄ   rÆ   r%   r%   r&   Útest_long_field_namesí  s    
  ÿrÐ   c                  C   sr   d} d|  }t jdtd�}t jd|tfgd�}||d< ||d< ttƒ d|id	d
d� ttttƒ d|id	dd� d S )NrÏ   r=   rP   r*   rC   r:   rQ   rÃ   rŠ   TrÌ   F)r    ra   rG   r¢   r   r   r²   rÅ   )rÇ   rÈ   rB   rÉ   r%   r%   r&   Útest_long_field_names_in_structù  s    
  ÿrÑ   c                  C   s`   t jdtd�} d| d< d| d< ttƒ d| idd	� t jd
td�} d| d< ttƒ d| idd	� d S )NrP   r*   ÚHellor:   ZWorldrQ   r[   rŠ   rƒ   rC   zHello, world)r    ra   rG   r   r   )Úcellsr%   r%   r&   Útest_cell_with_one_thing_in_it
  s    rÔ   c                  C   sl   t tƒ ƒ} t| jg ƒ dg| _t| jdgƒ t| jdƒ d| _t| jdƒ t| jdƒ d| _t| jdƒ d S )NZavarFT)r   r   r
   Úglobal_varsZunicode_stringsrÍ   )Zmfwr%   r%   r&   Útest_writer_properties  s    
rÖ   c                  C   sª   t ƒ } t| ƒ}t d¡}| d|i¡ t|  ¡ ƒ}|  d¡ |  d¡ | d|i¡ t	|t|  ¡ ƒ dkƒ |  d¡ |  d¡ | d|i¡ t	t|  ¡ ƒ| dk ƒ d S )Né
   Zaaaaar   Zaaaar(   Zaaaaaa)
r   r   r    r¢   Úput_variablesr“   ÚgetvalueÚtruncater…   r   )r¿   Úwtrr$   Zw_szr%   r%   r&   Útest_use_small_element&  s    




rÜ   c                  C   s~   t jdggdtfdtfgd�} ttfD ]R}|ddgƒ}tƒ }t|d|iƒ | d¡ t|ƒd }t	|j
jd	ƒ t|| ƒ q&d S )
NrP   r=   Úbr*   )r=   r,   )rÝ   rA   r’   r   ©r=   rÝ   )r    r   rG   r’   r   r   r   r…   r   r
   r+   Únamesr   )Zab_expÚ	dict_typer½   ÚstreamÚvalsr%   r%   r&   Útest_save_dict:  s    
rã   c                  C   s¬   t  d¡} dD ]˜}tƒ }t|d| i|d� t|ƒ}t|d jdƒ tƒ }t|d| i|dd� t|ƒ}t|d jdƒ tƒ }t|d| i|d	d� t|ƒ}t|d jdƒ qd S )
Nr5   r—   Zonedrƒ   )r,   r5   Úcolumn)r„   Zoned_as)r5   r,   Úrow)r    Úaranger   r   r   r
   r!   )r$   r„   rá   râ   r%   r%   r&   Útest_1d_shapeI  s(    

þ
þrç   c                  C   s  t  d¡ d¡} d| d< tƒ }t|d| iƒ t| ¡ ƒ}t|ƒ}t|d | ƒ tƒ }t|d| idd� t| ¡ ƒ}t|ƒ}t|d | ƒ t	||kƒ |  
¡ }d|d< tƒ }t|| |d	œd
d� t|ƒ}t|d |ƒ tƒ }t|| |d	œdd� t|ƒ}t|d |ƒ d S )Néd   )r5   rž   r,   )rA   r×   r$   T)Zdo_compressionr:   )r$   Úarr2Fré   )r    r¢   Úreshaper   r   r“   rÙ   r   r   r   Úcopy)r$   rá   Zraw_lenrâ   Zcompressed_lenré   r%   r%   r&   Útest_compressionb  s.    rì   c                  C   s"   t ƒ } t| dtjdtd�iƒ d S )NÚAr,   r*   )r   r   r    r   rG   )rá   r%   r%   r&   Útest_single_object}  s    rî   c                  C   sb   t tdƒ} t| dd�}td|kƒ td|kƒ t| dd�\}}| d¡}td|kƒ |j ¡  d S )Nztest_skip_variable.matTrw   ÚfirstÚsecond)r�   r‘   r   r   r   Úget_variablesr†   r¨   )rµ   r½   ÚfactoryZfile_openedr%   r%   r&   Útest_skip_variable‚  s    

ró   c                  C   sŒ   t tdƒ} t| dd�}|d }t|jdƒ t|jt t¡ƒ t|d d kƒ t	ƒ }tj
ddd	�}t|d
|iƒ t|ƒ}|d
 }t||ƒ d S )Nztest_empty_struct.matTrw   r=   rC   r:   r%   ÚUr*   r$   )r�   r‘   r   r
   r!   r+   r    rG   r   r   r   r   r   )rµ   r½   r=   rá   r$   Za2r%   r%   r&   Útest_empty_struct   s    
rõ   c                  C   sV   t ƒ } t| di iƒ t| ƒ}|d }t|jdƒ t|jt t¡ƒ t|d d kƒ d S )Nr$   rC   r:   r¾   )rá   r½   r=   r%   r%   r&   Útest_save_empty_dict³  s    rö   c                 C   s0   d}|D ]}t  | |k¡rd} q$qt|ƒ dS )zH Assert `output` is equal to at least one element in `alternatives`
    FTN)r    Úallr   )ÚoutputÚalternativesZ	one_equalr0   r%   r%   r&   Úassert_any_equal¾  s    rú   c                  C   s6  t t dg¡ƒ} t| jdƒ t| dƒ tjdgddgd�}tjdgddgd�}||f}tt ddd	œƒ|ƒ tt ddd
dœƒ|ƒ tt ddd
dœƒ|ƒ tt ddd
dœƒ|ƒ G dd„ dƒ}|}d|_d|_tt |ƒ|ƒ t g ƒ} t| jdƒ t| j	j
tjƒ t dƒ} t| jdƒ t| j	j
tjƒ tt d ƒd kƒ tt dƒj	j
tjƒ t dƒ} t| jdƒ t| j	j
t d¡j	j
ƒ t| dƒ tt i ƒtkƒ tt tƒ ƒd kƒ G dd„ dƒ}tt |ƒ ƒtkƒ t ddiƒd } t| jdƒ t| j	j
tjƒ tt ddiƒtkƒ tt ddiƒtkƒ tt dddœƒtjdgdgd�ƒ d S )Nr,   )r,   rP   )r=   ú|O8)rÝ   rû   r*   )rA   r,   rA   rÞ   r4   )r=   rÝ   Z_c)r=   rÝ   rè   )r=   rÝ   Z99c                   @   s   e Zd ZdS )z test_to_writeable.<locals>.klassN©Ú__name__Ú
__module__Ú__qualname__r%   r%   r%   r&   ÚklassÛ  s   r   ©r   r%   úa stringc                   @   s   e Zd ZdS )ztest_to_writeable.<locals>.CNrü   r%   r%   r%   r&   ÚCø  s   r  r=   Ú1Z_a)r  r°   ©rA   )r°   rû   )r   r    r   r
   r!   r   rú   r=   rÝ   r+   r`   Zfloat64r   Zstr_r   rG   Zobject_)ÚresZ	expected1Z	expected2rù   r   Úcr  r%   r%   r&   Útest_to_writeableÉ  sN    

ÿr  c                  C   s  ddg} t jd| d�}d|d d< d|d d	< d
|d d< d|d d	< tƒ }t|d|iƒ t|dd�}|d d }t|jdƒ t|jdƒ t|dd�}|d d }t|d dƒ t|d	 dƒ t|jt  ddg¡ƒ |d j	d }t|d d
ƒ t|d	 dƒ d S )N)Úf1Úf8)Úf2ZS10r  r*   g      à?r   r	  Úpythonr  éc   r,   znot perlr$   Frw   r:   T)r	  ÚO)r  r  )
r    r¢   r   r   r   r
   r	  r  r+   Zflat)Údtr$   rá   r½   Za20Za21r%   r%   r&   Útest_recarray  s0    ÿÿr  c                  C   sœ   G dd„ dƒ} | ƒ }d|_ d|_tƒ }t|d|iƒ t|dd�}|d d }t|j dƒ t|jdƒ t|d	d�}|d d }t|d
 dƒ t|d dƒ d S )Nc                   @   s   e Zd ZdS )ztest_save_object.<locals>.CNrü   r%   r%   r%   r&   r  $  s   r  r,   r  r  Frw   r:   TÚfield1Úfield2)r  r  r   r   r   r
   )r  r  rá   r½   Úc2r%   r%   r&   Útest_save_object#  s    r  c                  C   sn  t  d¡ dd¡} tƒ }t|d| iƒ t|ƒ}| ¡ }|d }t|| ƒ t|dd�}t| ¡ d |  d¡ƒ d|_t|| ƒ t|t	j
d�}t| ¡ d | ƒ t|t	jd�}tt|jƒ t	j
|_t| ¡ d | ƒ t  d	g¡} | d
¡ | d
¡ t|d| iƒ t|ƒ}t| ¡ d | ƒ t|dd�}t  t jt|  ¡ ƒdd�¡}t| ¡ d |ƒ d|_t| ¡ d | ƒ d S )Nr6   r,   r=   T©Ú
squeeze_me)r6   F)Ú
byte_orderr  r   )Úchars_as_stringsÚU1r*   )r    ræ   rê   r   r   r   rñ   r   r  ÚbocZnative_codeZswapped_coder²   Ú	Exceptionr  r   rÚ   r…   Z
atleast_2dÚlistrb   r  )r$   rá   ÚrdrZ	back_dictÚrarrZcarrr%   r%   r&   Útest_read_opts5  s8    



r  c                  C   sè   t tdƒ} t| dƒ}t|ƒ}| ¡ }| ¡  t|d tjg dd�ƒ t	ƒ }t
|dt dg¡iƒ t|ƒ}| ¡ }t|d tjg dd�ƒ | d¡ | d¡ t
|dtjg dd�iƒ t|ƒ}| ¡ }t|d tjg dd�ƒ | ¡  d S )Nzsingle_empty_string.matr\   r=   r  r*   Ú r   )r�   r‘   r§   r   rñ   r¨   r   r    r   r   r   rÚ   r…   )Zestring_fnamer¶   r  r½   rá   r%   r%   r&   Útest_empty_stringX  s$    



r!  c               
   C   sX   dd l } tdf| jdffD ]8\}}ttt|ƒdƒ�}t|ƒ}t||jƒ W 5 Q R X qd S )Nr   úcorrupted_zlib_data.matzcorrupted_zlib_checksum.matr\   )	ÚzlibrÅ   r¸   r§   r�   r‘   r   r²   rñ   )r#  Úexcr«   r¶   r  r%   r%   r&   Útest_corrupted_datas  s    ÿr%  c               	   C   s4   t ttdƒdƒ�} t| dd�}| ¡  W 5 Q R X d S )Nr"  r\   F)Z verify_compressed_data_integrity)r§   r�   r‘   r   rñ   )r¶   r  r%   r%   r&   Ú)test_corrupted_data_check_can_be_disabled|  s    r&  c                  C   s|   dD ]r} t tt| ƒdƒ}t|ƒ}| ¡ }| ¡  t|d tjdgdggt	d�ƒ t|d tjdd	gd	d
ggtj
d�ƒ qd S )N)zbig_endian.matzlittle_endian.matr\   ÚstringsÚhelloÚworldr*   Úfloatsç       @ç      @ç      @)r§   r�   r‘   r   rñ   r¨   r   r    r   rG   Zfloat32)r«   r¶   r  r½   r%   r%   r&   Útest_read_both_endian‚  s&    ÿÿÿ
ÿÿÿr.  c                  C   s®   t  ddgddgg¡} t  d¡ d¡}t jddgdd	�}tƒ }t||  ¡  ¡ | ¡  ¡ | ¡  ¡ d
œƒ t|ƒ}| 	¡ }t
|d | ƒ t
|d |ƒ t
|d |ƒ | ¡  d S )Nr+  r,  r-  r6   rŸ   r(  r)  rô   r*   )r*  ÚintsÚuni_arrr*  r/  r0  )r    r   ræ   rê   r   r   ÚbyteswapZnewbyteorderr   rñ   r   r¨   )Z	float_arrZint_arrr0  rá   r  r½   r%   r%   r&   Útest_write_opposite_endian‘  s     
ÿ

þr2  c               	   C   sl   t ttdƒdƒ�} t| dd�}| ¡ }W 5 Q R X tjdgdggtjd�}t|d |ƒ t	|d j
|j
ƒ d S )Nztestbool_8_WIN64.matr\   T©Z	mat_dtypeFr*   r_   )r§   r�   r‘   r   rñ   r    r   rr   r   r
   r+   )Zfobjr  r½   r[   r%   r%   r&   Útest_logical_array¤  s    r4  c                  C   sŒ   t ƒ } t dddg¡}t| d|iƒ |  d¡ t| ƒ}| ¡  | ¡  | ¡ \}}t	|j
tjƒ t	|jdƒ | |d¡}t	|jjtjƒ d S )NFTZbarrayr   )r   r    r   r   r…   r   Úinitialize_readÚread_file_headerÚread_var_headerr
   ZmclassÚmio5pZmxUINT8_CLASSZ
is_logicalZread_var_arrayr+   r`   Úuint8)rá   ZbarrÚreaderÚhdrÚ_Úvarr%   r%   r&   Útest_logical_out_type¯  s    
r>  c                  C   s8   t ƒ } t| dt d¡iƒ t| ƒ}|d jdks4t‚d S )Nr½   )r×   r   )r   r   r    Úemptyr   r!   rŽ   )rá   r½   r%   r%   r&   Útest_roundtrip_zero_dimensionsÀ  s    r@  c                  C   s0   t ƒ } t d¡ d¡}ttt| d|iddƒ d S )Né   )rA   r4   r(   r=   Tr‰   )r   r    ræ   rê   r²   rÅ   r   )rá   r$   r%   r%   r&   Útest_mat4_3dÇ  s    rB  c                  C   s^   t tdƒ} t| dƒ}t|ƒ}| ¡ }| ¡  t|d tƒs>t‚t	ƒ }t
|ƒ}tt|j|ƒ d S )Nztestfunc_7.4_GLNX86.matr\   Ztestfunc)r�   r‘   r§   r   rñ   r¨   rk   r   rŽ   r   r   r²   r   rØ   )Úfunc_egr¶   r  r½   rá   rÛ   r%   r%   r&   Útest_func_readÎ  s    

rD  c                  C   s~   t tdƒ} t| dƒ}t|dd�}| ¡ }| ¡  t|d jjdƒ t| dƒ}t|dd�}| ¡ }| ¡  t|d jjdƒ d S )	Nztestmatrix_6.1_SOL2.matr\   Fr3  r8   ÚuTr°   )	r�   r‘   r§   r   rñ   r¨   r
   r+   Úkind)Z	double_egr¶   r  r½   r%   r%   r&   Útest_mat_dtypeÚ  s    


rG  c                  C   sX   dt  t d¡¡i} tƒ }t|d| iƒ t|dd�}t|d d d  ¡ t d¡ƒ d S )NZsparsefieldr(   r=   Trw   r:   )	rh   Ú
coo_matrixr    Úeyer   r   r   r   rj   )Ústrá   r½   r%   r%   r&   Útest_sparse_in_structé  s
    rK  c                  C   s<   t ƒ } ddddœi}t| |ƒ t| dd� t| ddd� d S )	NrJ  r,   rA   rR   Frw   T)rx   r  )r   r   r   )rá   Úin_dr%   r%   r&   Útest_mat_struct_squeezeó  s
    
rM  c                  C   sn   t ƒ } dggddddœdœ}t| |ƒ t| dd�}tt|d	 tƒƒ tt|d
 tƒƒ tt|d tjƒƒ d S )Nçš™™™™™¹?zmy namer,   rA   rR   )Úscalarr1   rJ  Tr  rO  r1   rJ  )	r   r   r   r   rk   Úfloatrq   r    ra   )rá   rL  Zout_dr%   r%   r&   Útest_scalar_squeezeý  s    
rQ  c                  C   sì   t ƒ } t ddg¡}t ddg¡}t| t|d�ƒ t| ƒ}t|d |ƒ |  d¡ |  d¡ |j	dd�}tj
tj|jd|d	�}t| t|d�ƒ t|d |ƒ |  d¡ |  d¡ | d
¡}| d
¡}t| d|iƒ t| ƒ}t|d |ƒ d S )NrÒ   ZFoobzFoob )r=   r=   r   ÚF)Úorder)r!   r+   rS  Úbufferrô   )r   r    r   r   r’   r   r   rÚ   r…   Útobytesra   r=   r!   r+   Úastype)rá   Zin_arrZout_arrr  Zin_strZin_from_strZin_arr_uZ	out_arr_ur%   r%   r&   Útest_str_round  s.    

ý



rW  c                  C   sD   t ƒ } t| ddddœiƒ t| ƒ}|d jj}tt|ƒtdƒƒ d S )Nr=   r,   rA   rÞ   )r   r   r   r+   rß   r
   Úset)rá   r  Úfield_namesr%   r%   r&   Útest_fieldnames$  s
    rZ  c                  C   s@  dddg} t tdƒg ft tdƒ| ffD �]\}}t|ƒ}tt| ¡ ƒtddg| ƒƒ t|dd�}tt| ¡ ƒtdg| ƒƒ t|dgd�}tt| ¡ ƒtdg| ƒƒ t|dgd�}tt| ¡ ƒtdg| ƒƒ t|d	d�}tt| ¡ ƒtdg| ƒƒ t|g d�}tt| ¡ ƒt|ƒƒ dg}t||d�}t|dgƒ q&d S )
NÚ__globals__Z
__header__Ú__version__ztestmulti_4.2c_SOL2.matztestmulti_7.4_GLNX86.matr=   r<   )Zvariable_names)r<   )r�   r‘   r   r
   rX  Úkeys)Zmat5_sys_namesZeg_fileZsys_v_namesÚvarsZvnamesr%   r%   r&   Útest_loadmat_varnames-  s6    þ  ÿÿÿr_  c                  C   sd   t  d¡} tƒ }dD ]J}| d¡ | d¡ t|d|  |¡iƒ t|ƒ}tt  	|¡|d j	ƒ qd S )Nr×   )r
  Zf4Úi8Úi4Úi2Úi1Úu8Zu4Úu2Úu1Zc16Zc8r   r$   )
r    ræ   r   rÚ   r…   r   rV  r   r
   r+   )r$   rá   Údtsr^  r%   r%   r&   Útest_round_typesF  s    


rh  c            	         s¬   dt t d¡ƒfdt dƒfdt dƒff‰ G ‡ fdd„dƒ} tƒ }t|| ƒ ƒ t|ƒ}tt|ƒdƒ tdƒD ]<}|| \}}ˆ | \}}t||ƒ t	|ƒ}t
|| |ƒ qjd S )	Nr$   r×   Zmystrr  Zmynumc                       s   e Zd Z‡ fdd„ZdS )z test_varmats_from_mat.<locals>.Cc                    s   ˆ S rš   r%   )Úself©Z
names_varsr%   r&   rz   [  s    z&test_varmats_from_mat.<locals>.C.itemsN)rý   rþ   rÿ   rz   r%   rj  r%   r&   r  Z  s   r  r4   )r'   r    ræ   r   r   r   r
   r“   Úranger   r   )	r  rá   Zvarmatsru   r.   Z
var_streamZexp_nameZexp_resr  r%   rj  r&   Útest_varmats_from_matS  s    

þ
rl  c                  C   s@   t tdƒ} t| dƒ}t|ƒ}| ¡ }| ¡  t|d jdƒ d S )Nzone_by_zero_char.matr\   r=  r  )r�   r‘   r§   r   rñ   r¨   r
   r!   )rC  r¶   r  r½   r%   r%   r&   Útest_one_by_zeroi  s    

rm  c                  C   s*   t tdƒ} t| ƒ}t|d ddggƒ d S )Nztest_mat4_le_floats.matr=   rN  g333333ó?)r�   r‘   r   r   )Z
mat4_fnamer^  r%   r%   r&   Útest_load_mat4_les  s    
rn  c                  C   s:   t ƒ } ddi}t| |dd� t| ƒ}t|d |d ƒ d S )NZ
second_catu   SchrÃ¶dingerr‰   rƒ   )r   r   r   r
   )Zbior=  Zvar_backr%   r%   r&   Útest_unicode_mat4{  s
    ro  c               
   C   s‚   t tdƒ} t| dd�}|d }tt|tjƒƒ t|jj	t
jƒ t| ¡ ddddgddddgddddgddddgddddggƒ d S )Nzlogical_sparse.matTrw   Z
sp_log_5_4F)r�   r‘   r   r   rk   rh   r£   r
   r+   r`   r    rr   r   rj   )rµ   r½   Zlog_spr%   r%   r&   Útest_logical_sparse„  s    





üÿrp  c                  C   sª   t ƒ } dd l}|j ddgddgg¡}t| t|d�ƒ |  d¡ t| ƒ}t|d j	|j	ƒ t|d  
¡ dƒ |  d¡ t| ƒ}| ¡  | ¡  | ¡ \}}t|jdƒ d S )Nr   r­   r[   r,   )r   Úscipy.sparser9   Z
csr_matrixr   r’   r…   r   r   r!   rj   r   r5  r6  r7  r
   Znzmax)r¿   ÚscipyZempty_sparser  r:  r;  r<  r%   r%   r&   Útest_empty_sparse™  s    

rs  c                  C   s   t ƒ } ttt| ƒ d S rš   )r   r²   r   r   )r¿   r%   r%   r&   Útest_empty_mat_error­  s    rt  c               	   C   s\   t tdƒ} t| ƒ}t|d t d¡d d d …f ƒ t tdƒ} ttƒ� t| ƒ W 5 Q R X d S )Nzmiuint32_for_miint32.matZan_arrayr×   zbad_miuint32.mat)r�   r‘   r   r
   r    ræ   r²   rÅ   ©rµ   r  r%   r%   r&   Útest_miuint32_compromise³  s    
 

rv  c               	   C   sN   t tdƒ} t| ƒ}t|d dggƒ t tdƒ} ttƒ� t| ƒ W 5 Q R X d S )Nzmiutf8_array_name.matZ
array_namer,   zbad_miutf8_array_name.mat)r�   r‘   r   r
   r²   rÅ   ru  r%   r%   r&   Ú!test_miutf8_for_miint8_compromise¿  s    


rw  c                  C   s,   t tdƒ} t| ƒ}t|d d dd¡ƒ d S )Nzbroken_utf8.matZ
bad_strings   € am brokenÚutf8Úreplace)r�   r‘   r   r
   Údecoderu  r%   r%   r&   Útest_bad_utf8Ê  s
    

ÿr{  c                 C   s.   t j t| ƒd¡}ddddœi}t||ƒ d S )Nztest.matr=   r,   Ztest_str)rÝ   r  )r®   Úpathr   rq   r   )rª   rµ   Z	test_dictr%   r%   r&   Útest_save_unicode_fieldÒ  s    r}  c                   C   s   t ttdƒ t ttdƒ d S )NzNotExistentFile00.matZNotExistentFile00)r²   ÚOSErrorr   r%   r%   r%   r&   Útest_filenotfoundØ  s    r  c                  C   sj   t tdƒ} t| dd�}t| dd�}tt|d tƒƒ tt|d tjƒƒ t|d d t 	ddd	g¡ƒ d S )
Nztestsimplecell.matT)Zsimplify_cellsFÚsZmycellr=   rÝ   r  )
r�   r‘   r   r   rk   r’   r    ra   r   r   )rµ   Zres1Zres2r%   r%   r&   Útest_simplify_cellsÞ  s    
r�  zversion, filt, regex)r   z_4*_*N)r,   z_5*_*N)r,   z_6*_*N)r,   ú_7*_*z^((?!hdf5).)*$)rA   r‚  z.*hdf5.*)r,   z8*_*Nc                    sr   t td| ƒ}t|ƒ}ˆ d k	r0‡ fdd„|D ƒ}t|ƒdksLtd| |f ƒ‚|D ]}t|ƒ}|d | ksPt‚qPd S )Nztest*%s.matc                    s    g | ]}t  ˆ |¡d k	r|‘qS rš   )ÚreÚmatch)rI   Úfile©Úregexr%   r&   rK   ô  s      z(test_matfile_version.<locals>.<listcomp>r   z'No files for version %s using filter %s)r�   r‘   r   r“   rŽ   r   )rY   r”   r‡  r•   r{   r…  Zgot_versionr%   r†  r&   Útest_matfile_versionè  s    	
ÿrˆ  c                  C   sF   t ttdƒƒ} t| d tƒs t‚t| d  ¡ d  ¡ d tƒsBt‚dS )z,Test that we can read a MatlabOpaque object.zparabola.matZparabolar4   N)r   r�   r‘   rk   r   rŽ   rb   r   )r   r%   r%   r&   Útest_opaqueü  s    r‰  c               	   C   sD   t tƒ� tjjjj W 5 Q R X t tƒ� ddlm}  W 5 Q R X dS )z4Test that access to previous attributes still works.r   ©r   N)	r   ÚDeprecationWarningrr  ÚioÚmatlabZmio5_paramsr   Zscipy.io.matlab.miobaser   rŠ  r%   r%   r&   Útest_deprecation  s    

rŽ  )rˆ   )±Ú__doc__r®   Úcollectionsr   Úos.pathr   r�   r   r   rŒ  r   rƒ  Útempfiler   r¹   r¤   r¦   Znumpy.testingr   r	   r
   r   r   Zpytestr   r²   Únumpyr    r   rq  r9   rh   Zscipy.iorr  Zscipy.io.matlabr   r   r   Zscipy.io.matlab._byteordercodesr�  Z_byteordercodesr  Zscipy.io.matlab._miobaser   r   r   r   Zscipy.io.matlab._mior   r   r   r   Zscipy.io.matlab._mio5r   r   r   r   r   Zscipy.io.matlab._mio5_paramsZ_mio5_paramsr8  Ú__file__r‘   r'   Úpiræ   rP  rê   r<   rŒ   ÚappendÚcosÚsinr¢   rí   r  rk  rH  rV  r3   ÚBrG   ÚCAr�   ZCAEr?  ZobjarrZ	transposeÚsqrtÚexpZ
st_sub_arrr+   rÉ   ZCNr9  Zst2r=   ZODTZMOZm0r§   Zfp_u_strÚreadrz  Zu_strr¨   r�   Úrepeatrc   ro   r   r‚   r‡   r–   ÚmarkZparametrizer™   r›   r�   r¬   r±   r·   r¼   rÁ   rÊ   rÎ   rÐ   rÑ   rÔ   rÖ   rÜ   rã   rç   rì   rî   ró   rõ   rö   rú   r  r  r  r  r!  r%  r&  r.  r2  r4  r>  r@  rB  rD  rG  rK  rM  rQ  rW  rZ  r_  rh  rl  rm  rn  ro  rp  rs  rt  rv  rw  r{  r}  r  r�  rˆ  r‰  rŽ  r%   r%   r%   r&   Ú<module>   s�   þÿÿþÿþÿ
þÿþÿ
þÿþÿ
þÿþÿüü üÿþÿûû ûþÿþÿÿþÿ ÿþÿ$þÿþÿþÿþÿ
ÿþÿþÿþÿþÿÿþÿþÿ/



þ
?#	


	
	

ú