o
    i                     @   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ZLeLMdddidedgid eLMdddideNeKd eOeK  id ePd!ZQeReSdd"eQd < eReSddeQddd f< eLMd#d$did$eQid eLMd%d&d%id&e eQid eQTeUZVeVd'  d 7  < eLMd(d)d%id)e eVid eLMd*ddd+eKeQd+d eLMd,d-did-eFd.id eLMd/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'< eYMd9d:d5id:e\id eYMd;d<d5id<eZid eYMd=d>did>eg d?id eYMd@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'< eYMdLdMdLi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< eYMdSdTd5idTecid ej[d8dUdE dVD dZeeFdeed' dW< ej[d8dXeWfgdeed' dY< edZgeed' dY d' dX< eYMd[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< eYMd`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< eYMdmdndmidnehid ejeeBdodpZkekl mdqZneko  eYMdrdsdidseengid eYMd%d&d%id&e eQid eYMd(d)d%id)e eVid eYMdtdudviduedwgdxggid eYdd ZpepMdydzdmidzeqehd2Jdd2id d{d| Zrd}d~ Zsdd Ztdd Zudd ZvdddZwejCxdlddd ZyejCxdlddd ZzejCxddddgfddgfgdd Z{dd Z|dd Z}dd Z~dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd ZddĄ ZddƄ ZddȄ Zddʄ Zdd̄ Zdd΄ ZddЄ Zdd҄ ZddԄ Zddք Zdd؄ Zddڄ Zdd܄ Zddބ Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zdd ZejCx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 Zd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+   X/home/kim/smarthome/.venv/lib/python3.10/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	testminusZonecharZtestonecharr   )r2   rG   r:   z@This cell contains this string and 3 arrays of increasing lengthcellZtestcellr:   r2   r2   Z
scalarcellZtestscalarcellZ	emptycellZtestemptycellZstringarrayZteststringarray)zone  ztwo  threeZ3dmatrixZtest3dmatrix   )r.   r:   rG   c                 C      g | ]}|t fqS r+   object.0nr+   r+   r,   
<listcomp>       rR   )stringfielddoublefieldcomplexfieldzRats live on no evil star.rT   rU   y      ?      ?rV   structZ
teststructr2   rG   )r2   r:   r   r2   )r   rG   r;   ZcellnestZtestcellnestc                 C   rL   r+   rM   rO   r+   r+   r,   rR      rS   onetwor[   rJ   r\   znumber 3Z
structnestZteststructnestc                 C   rL   r+   rM   rO   r+   r+   r,   rR      rS   znumber 1znumber 2Z	structarrZteststructarrc                 C   rL   r+   rM   rO   r+   r+   r,   rR      rS   )expr	inputExprr(   isEmptynumArgsversioninlinexr]   z x = INLINE_INPUTS_{1};r^   r(   r_   r`   ra   rN   Z
testobjectzjapanese_utf8.txtrbzutf-8unicodeZtestunicodebool	testboolsZlogicalTFZobjectarrayZ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)Zvar1Zvar2Ztype1Ztype2r+   r+   r,   types_compatible   s   rk   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||| ||  qdS |jttjtjfv rt||| 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, rl   )r   r   r	   toarrayrk   rh   
isinstancer&   voidri   r   r
   r'   r1   Z	hasobject	classname	enumerate_check_levelfieldsstrstr_bool_)labelr6   actualZex_dtypeiZevZlevel_labelfnr+   r+   r,   ru      sN   



ru   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   ru   )	r4   filescase	file_nameZmatdictrz   kr6   Z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'   )rP   r   r6   r5   r+   r,   rR   3  s    z$_whos_check_case.<locals>.<listcomp>z: z != )r   r   sortr
   )r4   r   r   r5   r   rz   ZwhosZ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   )r4   r6   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_rtr4   r6   )r4   r   zNo files for test  using filter r5   )case_table4case_table5case_table5_rtpjointest_data_pathdictr   len)	ra   filtcasesr   r4   r6   r   use_filtr5   r+   r+   r,   _casesF  s(   r   r   r   c                 C   s"   t | D ]
}t|d d   qd S )Nr:   )r   r   ra   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   rG   )r   r   )ra   Z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@rG   r:   g      @)r.   r;   Z	gzip_testrc   r   wb)moder   rd   TFr~   ro   )r&   zerosr   r   r   gzipopenr   closer   shutilrmtreer	   rp   repr)	Zxdenserc   r4   r6   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)rG   rG   rc   za.matr   r   rd   )r   r   r&   r   r   r   osunlinkr   r   r   r   r   r   )r   rc   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   rd   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   rG   r   r   rI   r@   	r   r   r   r
   r'   r1   r&   rN   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   rC   rI   r0   
longstructr   r   r2   r&   r   rN   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 )NrI   Zmy_fieldnamer0   	my_structr   Tr   long_field_names)r&   r   rN   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?   rC   rI   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   rC   rX   r0   rI   r@   rY   r   r   Tr   F)r&   ri   rN   r   r   r   r   r   )r   r   rH   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 )NrX   r0   Hellor@   ZWorldrY   rc   r   r   rI   zHello, world)r&   ri   rN   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 ])}|ddg}t }t|d|i |d t|d }t	|j
jd	 t||  qd S )
NrX   rC   br0   )rC   r2   )r   rG   r   r   rC   r   )r&   r   rN   r   r   r   r   r   r   r
   r1   namesr   )Z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   Zonedr   )r2   r;   column)r   Z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 )Nd   )r;   r   r2   )rG   r   r*   T)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_compression[  s.   r   c                  C   s"   t  } t| dtjdtdi d S )NAr2   r0   )r   r   r&   r   rN   )r   r+   r+   r,   test_single_objectv  s   r   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   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 u  t	 }tj
ddd	}t|d
|i t|}|d
 }t|| d S )Nztest_empty_struct.matTr   rC   rI   r@   r+   Ur0   r*   )r   r   r   r
   r'   r1   r&   rN   r   r   r   r   r   )r   r   rC   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 u  d S )Nr*   rI   r@   r   )r   r   rC   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alternativesZ	one_equalr6   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 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   rX   )rC   |O8)r   r  r0   )rG   r2   rG   r   r:   )rC   r   Z_c)rC   r   r   )rC   r   Z99c                   @      e Zd ZdS )z test_to_writeable.<locals>.klassN__name__
__module____qualname__r+   r+   r+   r,   klass      r  r   r+   a stringc                   @   r  )ztest_to_writeable.<locals>.CNr  r+   r+   r+   r,   C  r  r  rC   1Z_a)r  r   rG   )r   r  )r"   r&   r   r
   r'   r   r  rC   r   r1   rh   Zfloat64r   rx   r#   rN   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  r0   g      ?r   r  pythonr  c   r2   znot perlr*   Fr   r@   T)r  O)r  r  )
r&   r   r   r   r   r
   r  r  r1   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                   @   r  )ztest_save_object.<locals>.CNr  r+   r+   r+   r,   r    r  r  r2   r  r  Fr   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 )Nr<   r2   rC   T
squeeze_me)r<   F)
byte_orderr  r   )chars_as_stringsU1r0   )r&   r   r   r   r   r    r   r   r#  bocZnative_codeZswapped_coder   	Exceptionr$  r   r   r   Z
atleast_2dlistrj   r%  )r*   r   rdrZ	back_dictrarrZcarrr+   r+   r,   test_read_opts.  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.matrd   rC   r&  r0    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_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.matrd   )	zlibr   r   r   r   r   r    r   r   )r0  excr   r   r*  r+   r+   r,   test_corrupted_datal  s   r2  c                  C   sJ   t ttdd} t| dd}|  W d    d S 1 sw   Y  d S )Nr/  rd   F)Z verify_compressed_data_integrity)r   r   r   r    r   )r   r*  r+   r+   r,   )test_corrupted_data_check_can_be_disabledu  s   
"r3  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.matrd   stringshelloworldr0   floats       @      @      @)r   r   r   r    r   r   r   r&   r   rN   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||  | j	 | |j	 | |j	 d
 t
|}| }t|d |  t|d | t|d | |  d S )Nr8  r9  r:  r<   r   r5  r6  r   r0   )r7  intsuni_arrr7  r<  r=  )r&   r   r   r   r   r   byteswapviewr1   Znewbyteorderr    r   r   r   )Z	float_arrZint_arrr=  r   r*  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.matrd   TZ	mat_dtypeFr0   rg   )r   r   r   r    r   r&   r   ry   r   r
   r1   )Zfobjr*  r   rc   r+   r+   r,   test_logical_array  s   
rB  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)FTFZbarrayr   TF)r   r&   r   r   r   r    initialize_readread_file_headerread_var_headerr
   Zmclassmio5pZmxUINT8_CLASSZ
is_logicalZread_var_arrayr1   rh   uint8)r   Zbarrreaderhdr_varr+   r+   r,   test_logical_out_type  s   
rL  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   rN  c                  C   s0   t  } tdd}ttt| d|idd d S )N   )rG   r:   r.   rC   Tr   )r   r&   r   r   r   r   r   )r   r*   r+   r+   r,   test_mat4_3d  s   rP  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.matrd   Ztestfunc)r   r   r   r    r   r   rq   r   r   r   r   r   r   )func_egr   r*  r   r   r   r+   r+   r,   test_func_read  s   

rR  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.matrd   FrA  r>   uTr   )	r   r   r   r    r   r   r
   r1   kind)Z	double_egr   r*  r   r+   r+   r,   test_mat_dtype  s   


rU  c                  C   sP   dt di} t }t|d| i t|dd}t|d d d  td d S )NZsparsefieldr.   rC   Tr   r@   )r   r   r   r   r   rp   r&   eye)str   r   r+   r+   r,   test_sparse_in_struct  s
   $rX  c                  C   s<   t  } ddddi}t| | t| dd t| ddd d S )	NrW  r2   rG   rZ   Fr   T)r   r#  )r   r   r   )r   in_dr+   r+   r,   test_mat_struct_squeeze  s
   
rZ  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   rG   rZ   )scalarr7   rW  Tr"  r\  r7   rW  )	r   r   r   r   rq   floatrw   r&   ri   )r   rY  Z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   ZFoobzFoob )rC   rC   r   F)order)r'   r1   r`  bufferr   )r   r&   r   r   r   r   r   r   r   tobytesri   rC   r'   r1   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.   





rd  c                  C   sD   t  } t| ddddi t| }|d jj}tt|ddh d S )NrC   r2   rG   r   r   )r   r   r   r1   r   r
   set)r   r  field_namesr+   r+   r,   test_fieldnames  s
   rg  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__Z
__header____version__ztestmulti_4.2c_SOL2.matztestmulti_7.4_GLNX86.matrC   rB   )Zvariable_names)rB   )r   r   r   r
   re  keys)Zmat5_sys_namesZeg_fileZsys_v_namesvarsZvnamesr+   r+   r,   test_loadmat_varnames(  s.   rl  c                  C   sd   t d} t }dD ]%}|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   rc  r   r
   r1   )r*   r   dtsrk  r+   r+   r,   test_round_typesA  s   


ru  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   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,   r   V  s   z&test_varmats_from_mat.<locals>.C.itemsN)r	  r
  r  r   r+   rw  r+   r,   r  U  s    r  r:   )r-   r&   r   r   r   r!   r
   r   ranger   r   )	r  r   Zvarmatsr|   r4   Z
var_streamZexp_nameZexp_resr  r+   rw  r,   test_varmats_from_matN  s    


ry  c                  C   s@   t td} t| d}t|}| }|  t|d jd d S )Nzone_by_zero_char.matrd   rK  r  )r   r   r   r    r   r   r
   r'   )rQ  r   r*  r   r+   r+   r,   test_one_by_zerod  s   

rz  c                  C   s*   t td} t| }t|d ddgg d S )Nztest_mat4_le_floats.matrC   r[  g333333?)r   r   r   r   )Z
mat4_fnamerk  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 )NZ
second_catu   Schrödingerr   r   )r   r   r   r
   )ZbiorK  Z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~   Z
sp_log_5_4Zcsc)TTTF)FFTF)FFFF)r   r   r   r   r   r   r
   r1   rh   r&   ry   r   rp   )r   r   Z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   rc   Tr2   )r   scipy.sparser?   Z	csr_arrayr   r   r   r   Z
isspmatrixr   r'   rp   r    rC  rD  rE  r
   Znzmax)r   scipyZempty_sparser  rH  rI  rJ  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.matZan_arrayr   zbad_miuint32.mat)r   r   r   r
   r&   r   r   r   r   r  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.matZ
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.matZ
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.matrC   r2   Ztest_str)r   r  )r   pathr   rw   r   )r   r   Z	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      @rG   r:   )r&   r   r   )rv  r1   r   r+   r+   r,   	__array__  s   z:test_save_custom_array_type.<locals>.CustomArray.__array__)NN)r	  r
  r  r  r+   r+   r+   r,   CustomArray  s    r  r  rC   )	r   r  r   rw   r   r   r   r&   r   )r   r  rC   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.matZ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Zsimplify_cellsFsZmycell)rC   r   r  )
r   r   r   r   rq   r   r&   ri   r   r   )r   Zres1Z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).)*$)rG   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)rP   fileregexr+   r,   rR     s     z(test_matfile_version.<locals>.<listcomp>r   zNo files for version r   )r   r   r   r   r   )ra   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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   rq   r   rj   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   rq   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matlabZmio5_paramsr   Zscipy.io.matlab.miobaser   r  r+   r+   r,   test_deprecation  s   

"r  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&   randomZdefault_rngZtestingZsuppress_warningsfilterr$   r   r   r   )tmp_pathrngoutfileZ	array_oneZ	array_twoZlist_of_arrayssupZnew_dictr+   r+   r,   test_gh_17992!  s&   


r  c                 C   sD   t jtdtdgddt ddgd}| d }t||dd d S )	Nr8   r&  r0   r7   )Z
char_arrayZstring_arrayztmp.matr   r   )r&   r   r)  r   )r  r   r  r+   r+   r,   test_gh_196596  s
   r  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&   ZintpZint64pytestr   r   r   )Ztruncated_matr  r+   r+   r,   test_large_m4@  s   

"r  c                  C   s   ddl m}  d S )Nr   r!   )scipy.io.matlabr!   r  r+   r+   r,   test_gh_19223P  s   r  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)rG   r.   r      z Mat file appears to be truncatedr      zMat file appears to be corrupts                       )r  r   r   r   r   )rQ   r+   r+   r,   test_corrupt_filesS  s   "r  )r   )r   collectionsr   Zos.pathr   r   r   r   r  r   r  tempfiler   r   r   r   Znumpy.testingr   r	   r
   r   r   r   r  r   r   numpyr&   r   r~  r   r   r   r   Zscipy.ior  r  r   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_paramsrF  Zscipy._lib._utilr$   __file__r   markZthread_unsafeZ
pytestmarkr-   pir   r]  r   rB   r   appendcossinr   r   r)  rx  rc  r9   BrN   CAr   ZCAErM  ZobjarrZ	transposesqrtexpZ
st_sub_arrr1   r   ZCNrG  Zst2rC   ZODTZMOZm0r   Zfp_u_strreadr  Zu_strr   r   repeatrk   ru   r   r   r   r   Z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.  r2  r3  r;  r@  rB  rL  rN  rP  rR  rU  rX  rZ  r^  rd  rg  rl  ru  ry  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,   <module>   s     




$


+




?#	


	
	


