a
    h
                     @   s
  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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l0m1Z1m2Z2m3Z3m4Z4 ddl5m6Z6m7Z7m8Z8m9Z9m:Z: ddl;m	  m(  m<Z= ddl>m?Z? eee@dZAdd ZBejCd ejDdeEdFdd ZGdddideGidgZHeHIdddidedgid eHIdddideJeGd eKeG  id eLd!ZMeNeOdd"eMd< eNeOddeMdddf< eHId#d$did$eMid eHId%d&d%id&e PeMid eMQeRZSeSd'  d 7  < eHId(d)d%id)e PeSid eHId*ddd+eGeMd+d eHId,d-did-eBd.id eHId/d0did0ed1gid eBg eBdgeBdd2ggeBg d3gfeTdFdd.ZUed4geUd'< d5d6d5id6eUidgZVeBeBdeBd2eBg eBg eBd7feTdFdd.ZWejXd8eTdZYeBdeYd'< eVId9d:d5id:eYid eVId;d<d5id<eWid eVId=d>did>eg d?id eVId@dAdidAeZeFeNeOddBdCid ee[d2e\dejCgFdd7Z]dDdE dFD Z^eLd8e^Z_edGge_dH d'< e]e_dI d'< e]dJ e_dK d'< eVIdLdMdLidMe_id ejLdNeTdZ`eBde`d'< ejLdOeTde`dP< eBd2ejade`dP d'< eBd7ggejade`dP dP< ejLdNeTde`dP dQ< eBdejade`dP dQ d'< eBdRejade`dP dQ dP< eVIdSdTd5idTe`id ejXd8dUdE dVD dZbeBdebd' dW< ejXd8dXeTfgdebd' dY< edZgebd' dY d' dX< eVId[d\dLid\ebid ejXdNd]dE dVD dZceBdecd' dW< eBd2ecd' dY< ed^gecdP dW< ed_gecdP dY< eVId`dadLidaecid e^dbdE dcD Zde&ejLd8eddddZeeed' Zfedegefdf< edggefdh< edegefdi< eBdefdj< eBdefdk< eBdefdl< eVIdmdndmidneeid egeeAdodpZhehi jdqZkehl  eVIdrdsdidseekgid eVId%d&d%id&e PeMid eVId(d)d%id)e PeSid eVIdtdudviduedwgdxggid eVdd ZmemIdydzdmidzeneed2Fdd2id d{d| Zod}d~ Zpdd Zqdd Zrdd ZsdddZtejuvdlddd Zwejuvdlddd Zxejuvddddgfddgfgdd Zydd Zzdd 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 Zdd  Zdd Zejuvdg ddd Zdd Zd	d
 Zdd Zdd Zdd Zd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assert_allclose)raises)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'   Z/var/www/html/assistant/venv/lib/python3.9/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   )r.   rC   r6   z@This cell contains this string and 3 arrays of increasing lengthcellZtestcellr6   r.   r.   Z
scalarcellZtestscalarcellZ	emptycellZtestemptycellZstringarrayZteststringarray)zone  ztwo  threeZ3dmatrixZtest3dmatrix   )r*   r6   rC   c                 C   s   g | ]}|t fqS r'   object.0nr'   r'   r(   
<listcomp>       rM   )stringfielddoublefieldcomplexfieldzRats live on no evil star.rO   rP   y      ?      ?rQ   structZ
teststructr.   rC   )r.   r6   r   r.   )r   rC   r7   ZcellnestZtestcellnestc                 C   s   g | ]}|t fqS r'   rH   rJ   r'   r'   r(   rM      rN   onetworV   rF   rW   znumber 3Z
structnestZteststructnestc                 C   s   g | ]}|t fqS r'   rH   rJ   r'   r'   r(   rM      rN   znumber 1znumber 2Z	structarrZteststructarrc                 C   s   g | ]}|t fqS r'   rH   rJ   r'   r'   r(   rM      rN   )expr	inputExprr$   isEmptynumArgsversioninlinexrX   z x = INLINE_INPUTS_{1};rY   r$   rZ   r[   r\   rI   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 rd|jdkrdt | |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    rf   c                 C   s|  t |r4tt | t| | | dd dS tt||dt| dt| d|   t|tj	tj
tfst|| dS t|j|jkd|j d|j d|  d |j}|jrt|trt|j|j t|D ]$\}}d	| |f }t||||  qdS |jr@|jD ]*}|  d
| d}t||| ||  qdS |jttjtjfv rht||| d dS t||| dd dS )z/ Check one level of a potentially nested array r7   )err_msgdecimalNzExpected type z, got z at zExpected shape )msgz
%s, [%d], z, field z, rg   )SPissparser   r	   toarrayrf   rc   
isinstancer"   voidrd   r   r
   r#   r-   Z	hasobject	classname	enumerate_check_levelfieldsstrstr_bool_)labelr2   actualZex_dtypeiZevZlevel_labelfnr'   r'   r(   rr      sR    




rr   c           	      C   sl   |D ]b}t |dd}d|  d| }| D ]8\}}| d| }t||v d|  t||||  q,qd S )NTstruct_as_recordtest ; file z, variable zMissing key at %s)r   itemsr   rr   )	r0   filescase	file_nameZmatdictrw   kr2   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#   )rK   r   r2   r1   r'   r(   rM   8  s   z$_whos_check_case.<locals>.<listcomp>z: z != )r   r   sortr
   )r0   r   r   r1   r   rw   ZwhosZexpected_whosr'   r   r(   _whos_check_case2  s    
r   c                 C   s0   t  }t|||d |d t| |g| d S )Nformatr   )r   r   seekr   )r0   r2   r   
mat_streamr'   r'   r(   _rt_check_caseC  s    
r   test%(name)s_*.matc           	      c   s   | dkrt }n| dkrt}n| dks(J t}|D ]t}|d }|d }|d u rRd }n<tt|t|d }t|}t|dksJ d| d	| |d
 }||||fV  q0d S )N455_rtr0   r2   )r0   r   zNo files for test  using filter r1   )case_table4case_table5case_table5_rtpjointest_data_pathdictr   len)	r\   filtZcasesr   r0   r2   r   use_filtr1   r'   r'   r(   _casesK  s$    r   r   r   c                 C   s"   t | D ]}t|d d   qd S )Nr6   )r   r   r\   r   r'   r'   r(   	test_loada  s    r   c                 C   s   t | D ]}t|  qd S N)r   r   r   r'   r'   r(   	test_whosg  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   rC   )r   r   )r\   Zfmtsr   fmtr'   r'   r(   test_round_tripn  s    r   c            	   	   C   s   t d} d| d< d| d< t| }d}d|i}d}t }z^t||}tj|d	d
}t|||d |	  tj|dd
}t
|dd}|	  W t| nt| 0 t|d  |d  t|d d S )N)   r   gffffff@rC   r6   g      @)r*   r7   Z	gzip_testr^   r   wb)moder   r_   Tr{   rj   )r"   zerosrk   
csc_matrixr   r   gzipopenr   closer   shutilrmtreer	   rm   repr)	Zxdenser^   r0   r2   r   tmpdirfnamer   rx   r'   r'   r(   test_gzip_simplex  s*    




r   c               	   C   s   t  } zttdd}t| d}t|| t| t|| t| t| t	|d}t|| |
d |  t	|d}t| |
d |  W t|  nt|  0 d S )N)rC   rC   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_   Tr{   )
r   r   r   r   r   r   assert_raisesNotImplementedErrorr   r   )	filenamesfilenamefpr'   r'   r(   
test_mat73  s    
r   c                  C   sX   t td} t 2 td t| dd t| dd W d    n1 sJ0    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dr.   rC   r   r   rE   r<   	r   r   r   r
   r#   r-   r"   rI   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?   rE   r,   
longstructr   r   r.   r"   r   rI   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 )NrE   Zmy_fieldnamer,   	my_structr   Tr   long_field_names)r"   r   rI   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?   rE   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?   rS   r,   rE   r<   rT   r   r   Tr   F)r"   rd   rI   r   r   r   r   r   )r   r   rD   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 )NrS   r,   Hellor<   ZWorldrT   r^   r   r   rE   zHello, world)r"   rd   rI   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 )
NrS   r?   br,   )r?   r.   )r   rC   r   r   r?   r   )r"   r   rI   r   r   r   r   r   r   r
   r-   namesr   )Zab_exp	dict_typer   streamvalsr'   r'   r(   test_save_dict8  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 )
Nr7   r   Zonedr   )r.   r7   column)r   Zoned_as)r7   r.   row)r"   aranger   r   r   r
   r#   )r&   r   r   r   r'   r'   r(   test_1d_shapeG  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   )r7   r   r.   )rC   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Ar.   r,   )r   r   r"   r   rI   )r   r'   r'   r(   test_single_object{  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{   r?   rE   r<   r'   Ur,   r&   )r   r   r   r
   r#   r-   r"   rI   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 u  d S )Nr&   rE   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_equalr2   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 )Nr.   )r.   rS   )r?   |O8)r   r  r,   )rC   r.   rC   r   r6   )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   rC   )r   r  )r   r"   r   r
   r#   r   r   r?   r   r-   rc   Zfloat64r   ru   r   rI   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&   Fr{   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  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 )Nr8   r.   r?   T
squeeze_me)r8   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listre   r  )r&   r   rdrZ	back_dictrarrZcarrr'   r'   r(   test_read_opts3  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_stringV  s$    



r'  c               	   C   sl   dd l } tdf| jdffD ]L\}}ttt|d$}t|}t||j W d    q1 s\0    Y  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_dataq  s    r+  c                  C   sH   t ttdd$} t| dd}|  W d    n1 s:0    Y  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_disabledz  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   rI   Zfloat32)r   r   r#  r   r'   r'   r(   test_read_both_endian  s&    
r4  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 )Nr1  r2  r3  r8   r   r.  r/  r   r,   )r0  intsuni_arrr0  r5  r6  )r"   r   r   r   r   r   byteswapviewr-   Znewbyteorderr   r   r   r   )Z	float_arrZint_arrr6  r   r#  r   r'   r'   r(   test_write_opposite_endian  s"    
r9  c                  C   s   t ttdd$} t| dd}| }W d    n1 s:0    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Z	mat_dtypeFr,   rb   )r   r   r   r   r   r"   r   rv   r   r
   r-   )Zfobjr#  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)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_arrayr-   rc   uint8)r   Zbarrreaderhdr_varr'   r'   r(   test_logical_out_type  s    
rE  c                  C   s8   t  } t| dtdi t| }|d jdks4J d S )Nr   )r   r   )r   r   r"   emptyr   r#   )r   r   r'   r'   r(   test_roundtrip_zero_dimensions  s    rG  c                  C   s0   t  } tdd}ttt| d|idd d S )N   )rC   r6   r*   r?   Tr   )r   r"   r   r   r   r   r   )r   r&   r'   r'   r(   test_mat4_3d  s    rI  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_   Ztestfunc)r   r   r   r   r   r   rn   r   r   r   r   r   r   )func_egr   r#  r   r   r   r'   r'   r(   test_func_read  s    

rK  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:  r:   uTr   )	r   r   r   r   r   r   r
   r-   kind)Z	double_egr   r#  r   r'   r'   r(   test_mat_dtype  s    


rN  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?   Tr{   r<   )	rk   
coo_matrixr"   eyer   r   r   r   rm   )str   r   r'   r'   r(   test_sparse_in_struct  s
    rR  c                  C   s<   t  } ddddi}t| | t| dd t| ddd d S )	NrQ  r.   rC   rU   Fr{   T)r|   r  )r   r   r   )r   in_dr'   r'   r(   test_mat_struct_squeeze  s
    
rT  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.   rC   rU   )scalarr3   rQ  Tr  rV  r3   rQ  )	r   r   r   r   rn   floatrt   r"   rd   )r   rS  Zout_dr'   r'   r(   test_scalar_squeeze  s    
rX  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-   rZ  bufferr   )r   r"   r   r   r   r   r   r   r   tobytesrd   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.    





r^  c                  C   sD   t  } t| ddddi t| }|d jj}tt|ddh d S )Nr?   r.   rC   r   r   )r   r   r   r-   r   r
   set)r   r  field_namesr'   r'   r(   test_fieldnames$  s
    ra  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.matr?   r>   )Zvariable_names)r>   )r   r   r   r
   r_  keys)Zmat5_sys_namesZeg_fileZsys_v_namesvarsZvnamesr'   r'   r(   test_loadmat_varnames-  s,    rf  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   r]  r   r
   r-   )r&   r   dtsre  r'   r'   r(   test_round_typesF  s    


ro  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(   r   [  s    z&test_varmats_from_mat.<locals>.C.itemsN)r  r  r  r   r'   rq  r'   r(   r	  Z  s   r	  r6   )r)   r"   r   r   r   r   r
   r   ranger   r   )	r	  r   Zvarmatsry   r0   Z
var_streamZexp_nameZexp_resr  r'   rq  r(   test_varmats_from_matS  s    


rs  c                  C   s@   t td} t| d}t|}| }|  t|d jd d S )Nzone_by_zero_char.matr_   rD  r  )r   r   r   r   r   r   r
   r#   )rJ  r   r#  r   r'   r'   r(   test_one_by_zeroi  s    

rt  c                  C   s*   t td} t| }t|d ddgg d S )Nztest_mat4_le_floats.matr?   rU  g333333?)r   r   r   r   )Z
mat4_fnamere  r'   r'   r(   test_load_mat4_les  s    
ru  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biorD  Zvar_backr'   r'   r(   test_unicode_mat4{  s
    rv  c                  C   sn   t td} t| dd}|d }tt|tj t|jj	t
j t| g dg dg dg dg dg d S )Nzlogical_sparse.matTr{   Z
sp_log_5_4)TTTF)FFTF)FFFF)r   r   r   r   rn   rk   r   r
   r-   rc   r"   rv   r   rm   )r   r   Zlog_spr'   r'   r(   test_logical_sparse  s    
rw  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.sparser;   Z
csr_matrixr   r   r   r   r   r#   rm   r   r<  r=  r>  r
   Znzmax)r   scipyZempty_sparser  rA  rB  rC  r'   r'   r(   test_empty_sparse  s    

rz  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   sp   t td} t| }t|d tdd d d f  t td} tt t|  W d    n1 sb0    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   sb   t td} t| }t|d dgg t td} tt t|  W d    n1 sT0    Y  d S )Nzmiutf8_array_name.matZ
array_namer.   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.matr?   r.   Ztest_str)r   r  )r   pathr   rt   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      @rC   r6   )r"   r   r   )rp  r-   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  r?   )	r   r  r   rt   r   r   r   r"   r   )r   r  r?   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)r?   r   r  )
r   r   r   r   rn   r   r"   rd   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).)*$)rC   r  z.*hdf5.*)r.   z8*_*Nc                    sv   t td| }t|} d ur0 fdd|D }t|dksPJ d|  d| |D ]}t|}|d | ksTJ qTd S )Nztest*%s.matc                    s    g | ]}t  |d ur|qS r   )rematch)rK   fileregexr'   r(   rM     rN   z(test_matfile_version.<locals>.<listcomp>r   zNo files for version r   )r   r   r   r   r   )r\   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sBJ dS )z,Test that we can read a MatlabOpaque object.parabola.matparabolar6   N)r   r   r   rn   r   re   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   rn   r   r  r'   r'   r(   test_opaque_simplify  s    r  c                  C   sl   t t tjjjj W d   n1 s*0    Y  t t ddlm}  W d   n1 s^0    Y  dS )z4Test that access to previous attributes still works.Nr   r   )	r   DeprecationWarningry  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 sn0    Y  i }t|| t	|d d d | t	|d d d	 | d S )
Ni90  z	lists.mat)r7   r6   )r8   r6   r!   T)r   r   r   r.   )
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 )	Nr4   r  r,   r3   )Z
char_arrayZstring_arrayztmp.matr   r   )r"   r   r"  r   )r  r   r  r'   r'   r(   test_gh_196594  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   r   Zpytestr   r   numpyr"   r   rx  r;   rk   Zscipy.iory  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_paramsr?  Zscipy._lib._utilr    __file__r   r)   pir   rW  r   r>   r   appendcossinr   r   r"  rr  rO  r]  r5   BrI   CAr   ZCAErF  ZobjarrZ	transposesqrtexpZ
st_sub_arrr-   r   ZCNr@  Zst2r?   ZODTZMOZm0r   Zfp_u_strreadr  Zu_strr   r   repeatrf   rr   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,  r4  r9  r;  rE  rG  rI  rK  rN  rR  rT  rX  r^  ra  rf  ro  rs  rt  ru  rv  rw  rz  r{  r}  r~  r  r  r  r  r  r  r  r  r  r  r  r'   r'   r'   r(   <module>   s    


$
,




?#	


	
	

