o
    Ö­j´  ã                   @   s¼
  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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mZm Z 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/m0Z0 d dl1m2Z2m3Z3m4Z4m5Z5 d dl6m7Z7m8Z8m9Z9m:Z:m;Z; d dl<m  m)  m=Z> d dl?m@Z@ eeeAƒdƒZBejCjDZEdd„ ZFejGd ejHdeId� Jdd¡ ZKdddideKidœgZLeL Mdddidedgƒidœ¡ eL Mdddide NeK¡d e OeK¡  idœ¡ e Pd!¡ZQeReSdd"ƒƒeQd < eReSddƒƒeQdd…d f< eL Md#d$did$eQidœ¡ eL Md%d&d%id&e eQƒidœ¡ eQ TeU¡ZVeVd'  d 7  < eL Md(d)d%id)e eVƒidœ¡ eL Md*ddd+œeKeQd+œdœ¡ eL Md,d-did-eFd.ƒidœ¡ eL Md/d0did0ed1gƒidœ¡ eFg eFdgƒeFdd2ggƒeFg d3¢gƒfeWd� Jdd.¡ZXed4gƒeXd'< d5d6d5id6eXidœgZYeFeFdƒeFd2ƒeFg ƒeFg ƒeFd7ƒfeWd� Jdd.¡ZZej[d8eWd�Z\eFdƒe\d'< eY Md9d:d5id:e\idœ¡ eY Md;d<d5id<eZidœ¡ eY Md=d>did>eg d?¢ƒidœ¡ eY Md@dAdidAe ]e JeReSddBƒƒdC¡¡idœ¡ ee ^d2¡e _d¡ejGgƒ Jdd7¡Z`dDdE„ dFD ƒZae Pd8ea¡ZbedGgƒebdH d'< e`ebdI d'< e`dJ ebdK d'< eY MdLdMdLidMebidœ¡ ejPdNeWd�ZceFdƒecd'< ejPdOeWd�ecdP< eFd2ejdd�ecdP d'< eFd7ggejdd�ecdP dP< ejPdNeWd�ecdP dQ< eFdejdd�ecdP dQ d'< eFdRejdd�ecdP dQ dP< eY MdSdTd5idTecidœ¡ ej[d8dUdE„ dVD ƒd�ZeeFdƒeed' dW< ej[d8dXeWfgd�eed' dY< edZgƒeed' dY d' dX< eY Md[d\dLid\eeidœ¡ ej[dNd]dE„ dVD ƒd�ZfeFdƒefd' dW< eFd2ƒefd' dY< ed^gƒefdP dW< ed_gƒefdP dY< eY Md`dadLidaefidœ¡ e adbdE„ dcD ƒ¡Zge'ejPd8egd�ddƒZhehd' Ziedegƒeidf< edggƒeidh< edegƒeidi< eFd ƒeidj< eFdƒeidk< eFdƒeidl< eY Mdmdndmidnehidœ¡ ejeeBdoƒdpƒZkek l¡  mdq¡Znek o¡  eY Mdrdsdidseengƒidœ¡ eY Md%d&d%id&e eQƒidœ¡ eY Md(d)d%id)e eVƒidœ¡ eY Mdtdudviduedwgdxggƒidœ¡ eYdd… Zpep Mdydzdmidze qehd2¡ Jdd2¡idœ¡ d{d|„ Zrd}d~„ Zsdd€„ Ztd�d‚„ Zudƒd„„ Zv�dd†d‡„ZwejC xdldˆ¡d‰dŠ„ ƒZyejC xdldˆ¡d‹dŒ„ ƒZzejC xd�dŽdŽd�gfd�d�gfg¡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¬dõdö„ Z­d÷dø„ Z®dùdú„ Z¯dûdü„ Z°dýdþ„ Z±dÿ�d „ Z²�d�d„ Z³ejC x�dg �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S (  é    N)ÚOrderedDict)ÚjoinÚdirname)Úglob)ÚBytesIO)Úmkdtemp)Úassert_array_equalÚassert_array_almost_equalÚassert_equalÚassert_Úassert_warnsÚassert_allclose)Úraises)Úarray)ÚissparseÚ	eye_arrayÚ	coo_arrayÚ	csc_array)ÚMatlabOpaqueÚMatlabFunctionÚMatlabObject)ÚmatdimsÚMatWriteErrorÚMatReadErrorÚmatfile_version)Úmat_reader_factoryÚloadmatÚsavematÚwhosmat)ÚMatFile5WriterÚMatFile5ReaderÚvarmats_from_matÚto_writeableÚEmptyStructMarker)ÚVisibleDeprecationWarningÚdatac                  O   s   t j| i |¤Ž}t|ƒ|_|S )z;Convenience function to return matlab-compatible 2-D array.)Únpr   r   Úshape)ÚargsÚkwargsÚarr© r+   ú[/var/www/html/CropPilot/venv/lib/python3.10/site-packages/scipy/io/matlab/tests/test_mio.pyÚmlarr'   s   
r-   é   é	   ©Údtypeé   ÚdoubleÚ
testdouble)ÚnameÚclassesÚexpectedÚstringÚ
teststringÚcharz+"Do nine men interpret?" "Nine men," I nod.ÚcomplexÚtestcomplexy              ð?)é   é   é   ÚmatrixÚ
testmatrixÚsparseÚ
testsparse©r   r   ÚsparsecomplexÚtestsparsecomplexÚmulti)ÚthetaÚaÚminusÚ	testminuséÿÿÿÿÚonecharÚtestonecharÚré   )r2   rP   r=   z@This cell contains this string and 3 arrays of increasing lengthÚcellÚtestcellr=   ©r2   r2   Ú
scalarcellÚtestscalarcellÚ	emptycellÚtestemptycellÚstringarrayÚteststringarray)zone  ztwo  ÚthreeÚ3dmatrixÚtest3dmatrixé   )r.   r=   rP   c                 C   ó   g | ]}|t f‘qS r+   ©Úobject©Ú.0Únr+   r+   r,   Ú
<listcomp>�   ó    rd   )ÚstringfieldÚdoublefieldÚcomplexfieldzRats live on no evil star.rf   rg   y      ð?      ð?rh   ÚstructÚ
teststruct©r2   rP   )r2   r=   ©r   r2   )r   rP   r>   ÚcellnestÚtestcellnestc                 C   r^   r+   r_   ra   r+   r+   r,   rd   ¤   re   ©ÚoneÚtworp   rZ   rq   znumber 3Ú
structnestÚteststructnestc                 C   r^   r+   r_   ra   r+   r+   r,   rd   ­   re   znumber 1znumber 2Ú	structarrÚteststructarrc                 C   r^   r+   r_   ra   r+   r+   r,   rd   ·   re   )ÚexprÚ	inputExprr(   ÚisEmptyÚnumArgsÚversionÚinlineÚxrv   z x = INLINE_INPUTS_{1};rw   r(   rx   ry   rz   r`   Ú
testobjectzjapanese_utf8.txtÚrbzutf-8ÚunicodeÚtestunicodeÚboolÚ	testboolsÚlogicalTFÚobjectarrayÚtestobjectarrayc                 C   sh   t | ƒ}t |ƒ}||u rdS |tju r | jdkr t |  ¡ ƒ|u S |tju r2|jdkr2t | ¡ ƒ|u 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)Úvar1Úvar2Útype1Útype2r+   r+   r,   Útypes_compatibleè   s   r�   c                 C   sr  t |ƒrtt |ƒƒ t| ¡ | ¡ | dd� dS tt||ƒdt|ƒ› dt|ƒ› d| › �ƒ t|tjtj	B t
B ƒs?t||ƒ dS t|j|jkd|j› d|j› d| › �d� |j}|jrt|t
ƒrft|j|jƒ t|ƒD ]\}}d	| |f }t|||| ƒ qjdS |jrœ|jD ]}| › d
|› d�}t||| || ƒ q…dS |jttjtjfv r¯t||| d� dS t||| dd� dS )z/ Check one level of a potentially nested array r>   )Úerr_msgÚdecimalNzExpected type z, got z at zExpected shape )Úmsgz
%s, [%d], z, field z, ©rŽ   )r   r   r	   Útoarrayr�   r†   Ú
isinstancer&   Úvoidr‡   r   r
   r'   r1   Ú	hasobjectÚ	classnameÚ	enumerateÚ_check_levelÚfieldsÚstrÚstr_Úbool_)Úlabelr7   ÚactualÚex_dtypeÚiÚevÚlevel_labelÚfnr+   r+   r,   r˜   ø   sN   ý
ÿ
ÿ

ÿþr˜   c           	      C   sp   |D ]3}t |ddd�}d| › d|› �}| ¡ D ]\}}|› d|› �}t||v d|› �ƒ t|||| ƒ qqd S )NTF©Ústruct_as_recordÚspmatrixútest ú; file z, variable zMissing key at )r   Úitemsr   r˜   )	r5   ÚfilesÚcaseÚ	file_nameÚmatdictr�   Úkr7   Úk_labelr+   r+   r,   Ú_load_check_case#  s   ýýr°   c              	      sh   |D ]/}d| › d|› �}t |ƒ}‡ fdd„| ¡ D ƒ}| ¡  | ¡  t|||› d|›d|›�ƒ qd S )Nr§   r¨   c                    s    g | ]\}}||j ˆ | f‘qS r+   )r'   )rb   r®   r7   ©r6   r+   r,   rd   3  s    ÿz$_whos_check_case.<locals>.<listcomp>z: z != )r   r©   Úsortr
   )r5   rª   r«   r6   r¬   r�   ÚwhosÚexpected_whosr+   r±   r,   Ú_whos_check_case-  s   
ÿÿörµ   c                 C   s0   t ƒ }t|||d� | d¡ t| |g|ƒ d S )N©Úformatr   )r   r   Úseekr°   )r5   r7   r·   Ú
mat_streamr+   r+   r,   Ú_rt_check_case>  s   
rº   útest%(name)s_*.matc           	      c   s¬   � | dkrt }n| dkrt}n| dksJ ‚t}|D ]:}|d }|d }|d u r*d }ntt|t|d� ƒ}t|ƒ}t|ƒdksHJ d|› d	|› �ƒ‚|d
 }||||fV  qd S )NÚ4Ú5Ú5_rtr5   r7   )r5   r   zNo files for test ú using filter r6   )Úcase_table4Úcase_table5Úcase_table5_rtÚpjoinÚtest_data_pathÚdictr   Úlen)	rz   ÚfiltÚcasesr«   r5   r7   rª   Úuse_filtr6   r+   r+   r,   Ú_casesF  s(   €ÿõrÊ   ©r¼   r½   c                 C   s"   t | ƒD ]
}t|d d… Ž  qd S )Nr=   )rÊ   r°   ©rz   r«   r+   r+   r,   Ú	test_load\  s   ÿrÍ   c                 C   s   t | ƒD ]}t|Ž  qd S ©N)rÊ   rµ   rÌ   r+   r+   r,   Ú	test_whosb  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   rP   )rÊ   rº   )rz   Úfmtsr«   Úfmtr+   r+   r,   Útest_round_tripi  s
   ÿÿrÒ   c            	   	   C   sÌ   t  d¡} d| d< d| d< t| ƒ}d}d|i}d}tƒ }z0t||ƒ}tj|d	d
�}t|||d� | ¡  tj|dd
�}t	|ddd�}| ¡  W t
 |¡ nt
 |¡ w t|d  ¡ |d  ¡ t|ƒd� d S )N)é   rÓ   gffffff@©rP   r=   g      @)r.   r>   Ú	gzip_testr|   r¼   Úwb)Úmoder¶   r~   TFr¤   r‘   )r&   Úzerosr   r   rÃ   ÚgzipÚopenr   Úcloser   ÚshutilÚrmtreer	   r’   Úrepr)	Úxdenser|   r5   r7   r·   ÚtmpdirÚfnamer¹   rž   r+   r+   r,   Útest_gzip_simples  s*   




þrâ   c               	   C   s¸   t ƒ } zRtt d¡d�}t| dƒ}t||ƒ t |¡ t||ƒ t|ƒ t |¡ t	|dƒ}t||ƒ | 
d¡ | ¡  t	|dƒ}t|ƒ | 
d¡ | ¡  W t | ¡ d S t | ¡ w )N)rP   rP   ©r|   za.matrÖ   r   r~   )r   rÅ   r&   rØ   rÃ   r   ÚosÚunlinkr   rÚ   r¸   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~   T©r¥   )
r   rÃ   rÄ   r   rÆ   rÚ   Úassert_raisesÚNotImplementedErrorr   rÛ   )Ú	filenamesÚfilenameÚfpr+   r+   r,   Ú
test_mat73¬  s   ÿ
ý
úrî   c                  C   sZ   t tdƒ} t ¡ � t d¡ t| dd� t| dd� W d   ƒ d S 1 s&w   Y  d S )Nztestdouble_7.1_GLNX86.matÚerrorTrè   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 u ƒ d S )NÚdr2   rP   r½   r¶   rS   rD   ©	r   r   r   r
   r'   r1   r&   r`   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é   rI   rS   r0   Ú
longstructr½   r¶   r2   ©r&   rØ   r`   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 )NrS   Úmy_fieldnamer0   Ú	my_structr¼   T©r·   Úlong_field_names)r&   rØ   r`   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é?   rI   rS   r0   rú   r½   Tr  r2   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  rI   rk   r0   rS   rD   rl   rú   r½   Tr  F)r&   r‡   r`   rØ   r   r   ré   rü   )rþ   rÿ   rQ   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 )Nrk   r0   ÚHellorD   ÚWorldrl   r|   r½   r¶   rS   zHello, world)r&   r‡   r`   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 )NÚavarFT)r   r   r
   Úglobal_varsÚunicode_stringsr  )Ú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é
   Úaaaaar   Úaaaar.   Úaaaaaa)
r   r   r&   rØ   Úput_variablesrÆ   ÚgetvalueÚtruncater¸   r   )rö   Úwtrr*   Ú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 ])}|ddgƒ}tƒ }t|d|iƒ | d¡ t|ƒd }t	|j
jd	ƒ t|| ƒ qd S )
Nrk   rI   Úbr0   )rI   r2   )r  rP   rÅ   r   ©rI   r  )r&   r   r`   rÅ   r   r   r   r¸   r   r
   r1   Únamesr   )Úab_expÚ	dict_typerô   ÚstreamÚvalsr+   r+   r,   Útest_save_dict3  s   
ør$  c                  C   s¬   t  d¡} dD ]L}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 )
Nr>   rË   Úonedr¶   )r2   r>   Úcolumn)r·   Úoned_as)r>   r2   Úrow)r&   Úaranger   r   r   r
   r'   )r*   r·   r"  r#  r+   r+   r,   Útest_1d_shapeB  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   )r>   rÓ   r2   )rP   r  r*   T)Údo_compressionrD   )r*   Úarr2Fr-  )r&   rØ   Úreshaper   r   rÆ   r  r   r   r   Úcopy)r*   r"  Úraw_lenr#  Úcompressed_lenr-  r+   r+   r,   Útest_compression[  s.   r2  c                  C   s"   t ƒ } t| dtjdtd�iƒ d S )NÚAr2   r0   )r   r   r&   r   r`   )r"  r+   r+   r,   Útest_single_objectv  s   r4  c                  C   sb   t tdƒ} t| dd�}td|v ƒ td|v ƒ t| dd�\}}| d¡}td|v ƒ |j ¡  d S )Nztest_skip_variable.matTrè   ÚfirstÚsecond)rÃ   rÄ   r   r   r   Úget_variablesr¹   rÛ   )rì   rô   ÚfactoryÚ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 u ƒ t	ƒ }tj
ddd	�}t|d
|iƒ t|ƒ}|d
 }t||ƒ d S )Nztest_empty_struct.matTrè   rI   rS   rD   r+   ÚUr0   r*   )rÃ   rÄ   r   r
   r'   r1   r&   r`   r   r   r   r   r   )rì   rô   rI   r"  r*   Ú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 u ƒ d S )Nr*   rS   rD   rõ   )r"  rô   rI   r+   r+   r,   Útest_save_empty_dict¬  s   r>  c                 C   s0   d}|D ]}t  | |k¡rd} nqt|ƒ dS )zH Assert `output` is equal to at least one element in `alternatives`
    FTN)r&   Úallr   )ÚoutputÚalternativesÚ	one_equalr7   r+   r+   r,   Úassert_any_equal·  s   þrC  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 u ƒ 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u ƒ tt tƒ ƒd u ƒ G dd„ dƒ}tt |ƒ ƒtu ƒ t ddiƒd } t| jdƒ t| j	j
tjƒ tt ddiƒtu ƒ tt ddiƒtu ƒ tt dddœƒtjdgdgd�ƒ d S )Nr2   )r2   rk   )rI   ú|O8)r  rD  r0   )rP   r2   rP   r  r=   )rI   r  Ú_c)rI   r  r+  )rI   r  Ú99c                   @   ó   e Zd ZdS )z test_to_writeable.<locals>.klassN©Ú__name__Ú
__module__Ú__qualname__r+   r+   r+   r,   ÚklassÔ  ó    rL  ©r   r+   úa stringc                   @   rG  )ztest_to_writeable.<locals>.CNrH  r+   r+   r+   r,   ÚCñ  rM  rP  rI   Ú1Ú_a)rQ  ræ   ©rP   )ræ   rD  )r"   r&   r   r
   r'   r   rC  rI   r  r1   r†   Úfloat64r   r›   r#   r`   Úobject_)ÚresÚ	expected1Ú	expected2rA  rL  ÚcrP  r+   r+   r,   Útest_to_writeableÂ  sN   

ÿrZ  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)Úf2ÚS10rS  r0   g      à?r   r[  Úpythonr]  éc   r2   znot perlr*   Frè   rD   T)r[  ÚO)r]  ra  )
r&   rØ   r   r   r   r
   r[  r]  r1   Úflat)Údtr*   r"  rô   Úa20Úa21r+   r+   r,   Útest_recarray  s0   ÿÿrf  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                   @   rG  )ztest_save_object.<locals>.CNrH  r+   r+   r+   r,   rP    rM  rP  r2   rO  rY  Frè   rD   TÚfield1Úfield2)rg  rh  r   r   r   r
   )rP  rY  r"  rô   Úc2r+   r+   r,   Útest_save_object  s   rj  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 )Nr?   r2   rI   T©Ú
squeeze_me)r?   F)Ú
byte_orderrO  r   )Úchars_as_stringsÚU1r0   )r&   r)  r.  r   r   r    r7  r   rl  ÚbocÚnative_codeÚswapped_coderé   Ú	Exceptionrm  r   r  r¸   Ú
atleast_2dÚlistrˆ   rn  )r*   r"  ÚrdrÚ	back_dictÚrarrÚcarrr+   r+   r,   Útest_read_opts.  s8   



rz  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~   rI   ro  r0   Ú r   )rÃ   rÄ   rÚ   r    r7  rÛ   r   r&   r   r   r   r  r¸   )Úestring_fnamerí   rv  rô   r"  r+   r+   r,   Útest_empty_stringQ  s$   



r}  c               	   C   sl   dd l } tdf| jdffD ]&\}}ttt|ƒdƒ�}t|ƒ}t||jƒ W d   ƒ n1 s.w   Y  qd S )Nr   úcorrupted_zlib_data.matzcorrupted_zlib_checksum.matr~   )	Úzlibrü   rï   rÚ   rÃ   rÄ   r    ré   r7  )r  Úexcrá   rí   rv  r+   r+   r,   Útest_corrupted_datal  s   ÿþ€þr�  c                  C   sJ   t ttdƒdƒ�} t| dd�}| ¡  W d   ƒ d S 1 sw   Y  d S )Nr~  r~   F)Ú verify_compressed_data_integrity)rÚ   rÃ   rÄ   r    r7  )rí   rv  r+   r+   r,   Ú)test_corrupted_data_check_can_be_disabledu  s   
"þrƒ  c                  C   s|   dD ]9} 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Úworldr0   Úfloatsç       @ç      @ç      @)rÚ   rÃ   rÄ   r    r7  rÛ   r   r&   r   r`   Úfloat32)rá   rí   rv  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||  ¡  | j 	¡ ¡| ¡  |j 	¡ ¡| ¡  |j 	¡ ¡d
œƒ t
|ƒ}| ¡ }t|d | ƒ t|d |ƒ t|d |ƒ | ¡  d S )Nrˆ  r‰  rŠ  r?   rÔ   r…  r†  r;  r0   )r‡  ÚintsÚuni_arrr‡  r�  rŽ  )r&   r   r)  r.  r   r   ÚbyteswapÚviewr1   Únewbyteorderr    r7  r   rÛ   )Ú	float_arrÚint_arrrŽ  r"  rv  rô   r+   r+   r,   Útest_write_opposite_endianŠ  s"   
ÿýr”  c                  C   s€   t ttdƒdƒ�} t| dd�}| ¡ }W d   ƒ n1 sw   Y  tjdgdggtjd�}t|d |ƒ t	|d j
|j
ƒ d S )Nztestbool_8_WIN64.matr~   T©Ú	mat_dtypeFr0   r‚   )rÚ   rÃ   rÄ   r    r7  r&   r   rœ   r   r
   r1   )Úfobjrv  rô   r|   r+   r+   r,   Útest_logical_arrayŸ  s   
þr˜  c                  C   sŠ   t ƒ } t g d¢¡}t| d|iƒ |  d¡ t| ƒ}| ¡  | ¡  | ¡ \}}t	|j
tjƒ t	|jdƒ | |d¡}t	|jjtjƒ d S )N)FTFÚbarrayr   TF)r   r&   r   r   r¸   r    Úinitialize_readÚread_file_headerÚread_var_headerr
   ÚmclassÚmio5pÚmxUINT8_CLASSÚ
is_logicalÚread_var_arrayr1   r†   Úuint8)r"  Ú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sJ ‚d S )Nrô   )r  r   )r   r   r&   Úemptyr   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é   )rP   r=   r.   rI   Tr¼   )r   r&   r)  r.  ré   rü   r   )r"  r*   r+   r+   r,   Útest_mat4_3dÂ  s   r¬  c                  C   s^   t tdƒ} t| dƒ}t|ƒ}| ¡ }| ¡  t|d tƒsJ ‚tƒ }t	|ƒ}t
t|j|ƒ d S )Nztestfunc_7.4_GLNX86.matr~   Útestfunc)rÃ   rÄ   rÚ   r    r7  rÛ   r“   r   r   r   ré   r   r  )Úfunc_egrí   rv  rô   r"  r  r+   r+   r,   Útest_func_readÉ  s   

r¯  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~   Fr•  rA   ÚuTræ   )	rÃ   rÄ   rÚ   r    r7  rÛ   r
   r1   Úkind)Ú	double_egrí   rv  rô   r+   r+   r,   Útest_mat_dtypeÕ  s   


r³  c                  C   sP   dt dƒi} tƒ }t|d| iƒ t|dd�}t|d d d  ¡ t d¡ƒ d S )NÚsparsefieldr.   rI   Trè   rD   )r   r   r   r   r   r’   r&   Úeye)Ústr"  rô   r+   r+   r,   Útest_sparse_in_structä  s
   $r·  c                  C   s<   t ƒ } ddddœi}t| |ƒ t| dd� t| ddd� d S )	Nr¶  r2   rP   ro   Frè   T)r¥   rl  )r   r   r   )r"  Úin_dr+   r+   r,   Útest_mat_struct_squeezeî  s
   
r¹  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 namer2   rP   ro   )Úscalarr8   r¶  Trk  r»  r8   r¶  )	r   r   r   r   r“   Úfloatrš   r&   r‡   )r"  r¸  Úout_dr+   r+   r,   Útest_scalar_squeezeø  s   
r¾  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
  ÚFoobzFoob )rI   rI   r   ÚF)Úorder)r'   r1   rÁ  Úbufferr;  )r   r&   r   r   rÅ   r   r   r  r¸   Útobytesr‡   rI   r'   r1   Úastype)r"  Úin_arrÚout_arrrV  Úin_strÚin_from_strÚin_arr_uÚ	out_arr_ur+   r+   r,   Útest_str_round  s.   

ý



rË  c                  C   sD   t ƒ } t| ddddœiƒ t| ƒ}|d jj}tt|ƒddhƒ d S )NrI   r2   rP   r  r  )r   r   r   r1   r  r
   Úset)r"  rV  Úfield_namesr+   r+   r,   Útest_fieldnames  s
   rÎ  c                  C   s<  g d¢} 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__Ú
__header__Ú__version__ztestmulti_4.2c_SOL2.matztestmulti_7.4_GLNX86.matrI   rH   )Úvariable_names)rH   )rÃ   rÄ   r   r
   rÌ  Úkeys)Úmat5_sys_namesÚeg_fileÚsys_v_namesÚvarsÚvnamesr+   r+   r,   Útest_loadmat_varnames(  s.   ÿÿÿïrÙ  c                  C   sd   t  d¡} tƒ }dD ]%}| d¡ | d¡ t|d|  |¡iƒ t|ƒ}tt  	|¡|d j	ƒ q
d S )Nr  )r\  Úf4Úi8Úi4Úi2Úi1Úu8Úu4Úu2Úu1Úc16Úc8r   r*   )
r&   r)  r   r  r¸   r   rÄ  r   r
   r1   )r*   r"  Údtsr×  r+   r+   r,   Útest_round_typesA  s   


úræ  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
|| |ƒ q5d S )	Nr*   r  ÚmystrrO  Úmynumc                       s   e Zd Z‡ fdd„ZdS )z test_varmats_from_mat.<locals>.Cc                    s   ˆ S rÎ   r+   )Úself©Ú
names_varsr+   r,   r©   V  s   z&test_varmats_from_mat.<locals>.C.itemsN)rI  rJ  rK  r©   r+   rê  r+   r,   rP  U  s    rP  r=   )r-   r&   r)  r   r   r!   r
   rÆ   Úranger   r   )	rP  r"  Úvarmatsr    r5   Ú
var_streamÚexp_nameÚexp_resrV  r+   rê  r,   Útest_varmats_from_matN  s    

þ
ûrñ  c                  C   s@   t tdƒ} t| dƒ}t|ƒ}| ¡ }| ¡  t|d jdƒ d S )Nzone_by_zero_char.matr~   r§  rN  )rÃ   rÄ   rÚ   r    r7  rÛ   r
   r'   )r®  rí   rv  rô   r+   r+   r,   Útest_one_by_zerod  s   

rò  c                  C   s*   t tdƒ} t| ƒ}t|d ddggƒ d S )Nztest_mat4_le_floats.matrI   rº  g333333ó?)rÃ   rÄ   r   r   )Ú
mat4_fnamer×  r+   r+   r,   Útest_load_mat4_len  s   
rô  c                  C   s:   t ƒ } ddi}t| |dd� t| ƒ}t|d |d ƒ d S )NÚ
second_catu   SchrÃ¶dingerr¼   r¶   )r   r   r   r
   )Úbior§  Úvar_backr+   r+   r,   Útest_unicode_mat4v  s
   rø  c                  C   sv   t tdƒ} t| ddd�}|d }tt|ƒo|jdkƒ t|jjt	j
ƒ t| ¡ g d¢g d¢g d¢g d	¢g d	¢gƒ d S )
Nzlogical_sparse.matTFr¤   Ú
sp_log_5_4Úcsc)TTTF)FFTF)FFFF)rÃ   rÄ   r   r   r   r·   r
   r1   r†   r&   rœ   r   r’   )rì   rô   Úlog_spr+   r+   r,   Útest_logical_sparse  s   
üÿrü  c                  C   sþ   t ƒ } dd l}|j ddgddgg¡}t| t|d�ƒ |  d¡ t| dd�}|j |d ¡r0J ‚t| dd�}|j |d ¡s@J ‚t| ƒ}|j |d ¡sNJ ‚t	|d j
|j
ƒ t	|d  ¡ dƒ |  d¡ t| ƒ}| ¡  | ¡  | ¡ \}}t|jdƒ d S )Nr   rã   F)r¦   r|   Tr2   )r   Úscipy.sparserB   Ú	csr_arrayr   rÅ   r¸   r   Ú
isspmatrixr   r'   r’   r    rš  r›  rœ  r
   Únzmax)rö   ÚscipyÚempty_sparserV  r¤  r¥  r¦  r+   r+   r,   Útest_empty_sparse”  s&   

r  c                  C   s   t ƒ } ttt| ƒ d S rÎ   )r   ré   r   r   )rö   r+   r+   r,   Útest_empty_mat_error¯  s   r  c                  C   sr   t tdƒ} t| ƒ}t|d t d¡d d d …f ƒ t tdƒ} ttƒ� t| ƒ W d   ƒ d S 1 s2w   Y  d S )Nzmiuint32_for_miint32.matÚan_arrayr  zbad_miuint32.mat)rÃ   rÄ   r   r
   r&   r)  ré   rü   ©rì   rV  r+   r+   r,   Útest_miuint32_compromiseµ  s   
 


"ÿr  c                  C   sd   t tdƒ} t| ƒ}t|d dggƒ t tdƒ} ttƒ� t| ƒ W d   ƒ d S 1 s+w   Y  d S )Nzmiutf8_array_name.matÚ
array_namer2   zbad_miutf8_array_name.mat)rÃ   rÄ   r   r
   ré   rü   r  r+   r+   r,   Ú!test_miutf8_for_miint8_compromiseÁ  s   



"ÿr	  c                  C   s,   t tdƒ} t| ƒ}t|d d dd¡ƒ d S )Nzbroken_utf8.matÚ
bad_strings   € am brokenÚutf8Úreplace)rÃ   rÄ   r   r
   Údecoder  r+   r+   r,   Útest_bad_utf8Ì  s
   

ÿr  c                 C   s.   t j t| ƒd¡}ddddœi}t||ƒ d S )Nútest.matrI   r2   Útest_str)r  rY  )rä   Úpathr   rš   r   )rà   rì   Ú	test_dictr+   r+   r,   Útest_save_unicode_fieldÔ  s   r  c                 C   sT   G dd„ dƒ}|ƒ }t j t| ƒd¡}t|d|iƒ t|ƒ}t|d t |¡ƒ d S )Nc                   @   s   e Zd Zddd„ZdS )z0test_save_custom_array_type.<locals>.CustomArrayNc                 S   s   t  d¡ dd¡S )Ng      @rP   r=   )r&   r)  r.  )ré  r1   r/  r+   r+   r,   Ú	__array__Ü  s   z:test_save_custom_array_type.<locals>.CustomArray.__array__)NN)rI  rJ  rK  r  r+   r+   r+   r,   ÚCustomArrayÛ  s    r  r  rI   )	rä   r  r   rš   r   r   r   r&   r   )rà   r  rI   rì   Úoutr+   r+   r,   Útest_save_custom_array_typeÚ  s   r  c                   C   s   t ttdƒ t ttdƒ d S )NzNotExistentFile00.matÚNotExistentFile00)ré   ÚOSErrorr   r+   r+   r+   r,   Útest_filenotfoundå  s   r  c                  C   sh   t tdƒ} t| dd�}t| dd�}tt|d tƒƒ tt|d tjƒƒ t|d d t 	g d¢¡ƒ d S )Nztestsimplecell.matT©Úsimplify_cellsFÚsÚmycell)rI   r  rY  )
rÃ   rÄ   r   r   r“   rÅ   r&   r‡   r   r   )rì   Úres1Úres2r+   r+   r,   Útest_simplify_cellsë  s   
 r!  zversion, filt, regex))r   z_4*_*N)r2   z_5*_*N)r2   z_6*_*N)r2   ú_7*_*z^((?!hdf5).)*$)rP   r"  z.*hdf5.*)r2   z8*_*Nc                    sz   t td|› d�ƒ}t|ƒ}ˆ d ur‡ fdd„|D ƒ}t|ƒdks*J d| › d|› �ƒ‚|D ]}t|ƒ}|d | ks:J ‚q,d S )Nztest*z.matc                    s    g | ]}t  ˆ |¡d ur|‘qS rÎ   )ÚreÚmatch)rb   Úfile©Úregexr+   r,   rd     s     z(test_matfile_version.<locals>.<listcomp>r   zNo files for version r¿   )rÃ   rÄ   r   rÆ   r   )rz   rÇ   r'  rÉ   rª   r%  Úgot_versionr+   r&  r,   Útest_matfile_versionõ  s   	ÿþr)  c                  C   sF   t ttdƒƒ} t| d tƒsJ ‚t| d  ¡ d  ¡ d tƒs!J ‚dS )z,Test that we can read a MatlabOpaque object.úparabola.matÚparabolar=   N)r   rÃ   rÄ   r“   r   rˆ   r   ©r%   r+   r+   r,   Útest_opaque	  s   &r-  c                  C   s(   t ttdƒdd�} t| d tƒsJ ‚dS )zETest that we can read a MatlabOpaque object when simplify_cells=True.r*  Tr  r+  N)r   rÃ   rÄ   r“   r   r,  r+   r+   r,   Útest_opaque_simplify  s   r.  c                  C   sn   t tƒ� tjjjj W d  ƒ n1 sw   Y  t tƒ� ddlm}  W d  ƒ dS 1 s0w   Y  dS )z4Test that access to previous attributes still works.Nr   ©r   )	r   ÚDeprecationWarningr  ÚioÚmatlabÚmio5_paramsr   Úscipy.io.matlab.miobaser   r/  r+   r+   r,   Útest_deprecation  s   
ÿ
"ÿr5  c                 C   s¶   t j d¡}| d }| d¡}| d¡}||g}t j ¡ �}| t¡ t|d|iddd� W d   ƒ n1 s7w   Y  i }t||ƒ t	|d d d |ƒ t	|d d d	 |ƒ d S )
Ni90  z	lists.mat)r>   r=   )r?   r=   r%   T)r  r,  r   r2   )
r&   ÚrandomÚdefault_rngÚtestingÚsuppress_warningsÚfilterr$   r   r   r   )Útmp_pathÚrngÚoutfileÚ	array_oneÚ	array_twoÚlist_of_arraysÚsupÚnew_dictr+   r+   r,   Útest_gh_17992!  s&   


ýþÿrC  c                 C   sD   t jtdƒtdƒgdd�t  ddg¡dœ}| d }t||dd� d S )	Nr:   ro  r0   r8   )Ú
char_arrayÚstring_arrayztmp.matr¼   r¶   )r&   r   ru  r   )r;  rô   r=  r+   r+   r,   Útest_gh_196596  s
   þrF  c                  C   sZ   t tdƒ} tjtjkrdnd}tjt|d�� t| ƒ W d   ƒ d S 1 s&w   Y  d S )Nzdebigged_m4.matz$Not enough bytes to read matrix 'a';z9Variable 'a' has byte length longer than largest possible©r$  )	rÃ   rÄ   r&   ÚintpÚint64Úpytestr   rü   r   )Útruncated_matr$  r+   r+   r,   Útest_large_m4@  s   
ÿþ
"ÿrL  c                  C   s   ddl m}  d S )Nr   ©r!   )Úscipy.io.matlabr!   rM  r+   r+   r,   Útest_gh_19223P  s   rO  c               	   C   sˆ   dD ]!} t jtdd�� ttd|  ƒƒ W d   ƒ n1 sw   Y  qt jtdd�� ttdƒƒ W d   ƒ d S 1 s=w   Y  d S )N)rP   r.   r  é   z Mat file appears to be truncatedrG  ó    zMat file appears to be corrupts                       )rJ  r   r   r   r   )rc   r+   r+   r,   Útest_corrupt_filesS  s   ÿþ€ÿ"þrR  )r»   )½rä   Úcollectionsr   Úos.pathr   rÃ   r   r   r1  r   r#  Útempfiler   rð   rÜ   rÙ   Únumpy.testingr   r	   r
   r   r   r   rJ  r   ré   Únumpyr&   r   rý  r   r   r   r   Úscipy.ior  rN  r   r   r   Úscipy.io.matlab._byteordercodesr2  Ú_byteordercodesrp  Úscipy.io.matlab._miobaser   r   r   r   Úscipy.io.matlab._mior   r   r   r   Úscipy.io.matlab._mio5r   r    r!   r"   r#   Úscipy.io.matlab._mio5_paramsÚ_mio5_paramsrž  Úscipy._lib._utilr$   Ú__file__rÄ   ÚmarkÚthread_unsafeÚ
pytestmarkr-   Úpir)  r¼  r.  rH   rÀ   ÚappendÚcosÚsinrØ   r3  ru  rì  rÄ  r;   ÚBr`   ÚCArÁ   ÚCAEr©  ÚobjarrÚ	transposeÚsqrtÚexpÚ
st_sub_arrr1   r   ÚCNr¢  Úst2rI   ÚODTÚMOÚm0rÚ   Úfp_u_strÚreadr  Úu_strrÛ   rÂ   Úrepeatr�   r˜   r°   rµ   rº   rÊ   ÚparametrizerÍ   rÏ   rÒ   râ   rç   rî   ró   rø   r  r  r  r	  r  r  r  r$  r*  r2  r4  r:  r=  r>  rC  rZ  rf  rj  rz  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  r  r!  r)  r-  r.  r5  rC  rF  rL  rO  rR  r+   r+   r+   r,   Ú<module>   sŽ     þÿÿþÿþÿ
þÿ
þÿ

þÿþÿ
þÿþÿüüüÿþÿûûûþÿþÿÿþÿÿþÿ$þÿþÿþÿþÿ
ÿþÿþÿ
þÿ
þÿÿþÿþÿ+



þ
?#	


	
	


