
    Ng
                     x   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	c m(c m)Z* ddl+m,Z,m-Z-m.Z.m/Z/ ddl0m1Z1m2Z2m3Z3m4Z4 ddl5m6Z6m7Z7m8Z8m9Z9m:Z: ddl;m	c m(c m<Z= ddl>m?Z?  e ee@          d          ZAd ZBejC        dz   ejD        deE          F                    dd          z  ZGdddideGidgZHeHI                    dddid edg          id           eHI                    dddid ejJ        eG          d ejK        eG          z  z   id            ejL        d           ZM eN eOdd!                    eMd<    eN eOdd                    eMdddf<   eHI                    d"d#did#eMid           eHI                    d$d%d$id% e jP        eM          id           eMQ                    eR          ZSeSd&xx         dz  cc<   eHI                    d'd(d$id( e jP        eS          id           eHI                    d)ddd*eGeMd*d           eHI                    d+d,did, eBd-          id           eHI                    d.d/did/ ed0g          id            eBg  eBdg           eBdd1gg           eBg d2g          feT          F                    dd-          ZU ed3g          eUd&<   d4d5d4id5eUidgZV eB eBd           eBd1           eBg            eBg            eBd6          feT          F                    dd-          ZW ejX        d7eT          ZY eBd          eYd&<   eVI                    d8d9d4id9eYid           eVI                    d:d;d4id;eWid           eVI                    d<d=did= eg d>          id           eVI                    d?d@did@ ejZ         ejF         eN eOddA                    dB                    id            e ej[        d1           ej\        d          ejC        g          F                    dd6          Z]dC dDD             Z^ ejL        d7e^          Z_ edEg          e_dF         d&<   e]e_dG         d&<   e]dHz  e_dI         d&<   eVI                    dJdKdJidKe_id            ejL        dLeT          Z` eBd          e`d&<    ejL        dMeT          e`dN<    eBd1eja                  e`dN         d&<    eBd6ggeja                  e`dN         dN<    ejL        dLeT          e`dN         dO<    eBdeja                  e`dN         dO         d&<    eBdPeja                  e`dN         dO         dN<   eVI                    dQdRd4idRe`id            ejX        d7dS dTD                       Zb eBd          ebd&         dU<    ejX        d7dVeTfg          ebd&         dW<    edXg          ebd&         dW         d&         dV<   eVI                    dYdZdJidZebid            ejX        dLd[ dTD                       Zc eBd          ecd&         dU<    eBd1          ecd&         dW<    ed\g          ecdN         dU<    ed]g          ecdN         dW<   eVI                    d^d_dJid_ecid            ej^        d` daD                       Zd e& ejL        d7ed          db          Zeeed&         Zf edcg          efdd<    edeg          efdf<    edcg          efdg<    eBd          efdh<    eBd          efdi<    eBd          efdj<   eVI                    dkdldkidleeid            eg eeAdm          dn          Zhehi                                j                    do          Zkehl                                 eVI                    dpdqdidq eekg          id           eVI                    d$d%d$id% e jP        eM          id           eVI                    d'd(d$id( e jP        eS          id           eVI                    drdsdtids edugdvgg          id           eVdd         ZmemI                    dwdxdkidx ejn        eed1          F                    dd1          id           dy Zodz Zpd{ Zqd| Zrd} ZsddZteju        v                    djd          d             Zweju        v                    djd          d             Zxeju        v                    ddddgfddgfg          d             Zyd Zzd Z{d Z|d Z}d Z~d Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zeju        v                    dg d          d             ZdÄ ZdĄ Zdń ZdƄ ZdǄ 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                  P    t          j        | i |}t          |          |_        |S )z;Convenience function to return matlab-compatible 2-D array.)npr   r   shape)argskwargsarrs      Z/var/www/html/ai-engine/env/lib/python3.11/site-packages/scipy/io/matlab/tests/test_mio.pymlarrr*   +   s(    
(D
#F
#
#CCIJ       	   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   )r0   rN   r;   z@This cell contains this string and 3 arrays of increasing lengthcelltestcellr;   r0   r0   
scalarcelltestscalarcell	emptycelltestemptycellstringarrayteststringarray)zone  ztwo  three3dmatrixtest3dmatrix   )r,   r;   rN   c                      g | ]}|t           fS  object.0ns     r)   
<listcomp>rc      s    MMM!VMMMr+   )stringfielddoublefieldcomplexfieldzRats live on no evil star.rd   re   y      ?      ?rf   struct
teststructr0   rN   )r0   r;   r   r0   )r   rN   r<   cellnesttestcellnestc                      g | ]}|t           fS r]   r^   r`   s     r)   rc   rc      s    AAAQa[AAAr+   onetworo   rX   rp   znumber 3
structnestteststructnestc                      g | ]}|t           fS r]   r^   r`   s     r)   rc   rc      s    ???1Av;???r+   znumber 1znumber 2	structarrteststructarrc                      g | ]}|t           fS r]   r^   r`   s     r)   rc   rc      s(     4 4 4F 4 4 4r+   )expr	inputExprr&   isEmptynumArgsversioninlinexrw   z x = INLINE_INPUTS_{1};rx   r&   ry   rz   r{   r_   
testobjectzjapanese_utf8.txtrbzutf-8unicodetestunicodebool	testboolslogicalTFobjectarraytestobjectarrayc                 >   t          |           }t          |          }||u rdS |t          j        u r.| j        dk    r#t          |                                           |u S |t          j        u r.|j        dk    r#t          |                                          |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type2s       r)   types_compatibler      s    
 JJEJJE~~t
tzR//DIIKK  E))
tzR//DIIKK  E))5r+   c           	      0   t          j        |          rZt          t          j        |                     t          |                                |                                | d           dS t          t          ||          dt          |           dt          |           d|             t          |t          j	        t          j
        t          f          st          ||           dS t          |j        |j        k    d|j         d|j         d|             |j        }|j        rdt          |t                    rt          |j        |j                   t#          |          D ]#\  }}d	| |fz  }t%          ||||                    $dS |j        r1|j        D ]'}|  d
| d}t%          |||         ||                    (dS |j        t(          t          j        t          j        fv rt          |||            dS t          ||| 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   )SPissparser   r
   toarrayr   r   
isinstancer$   voidr   r   r   r%   r/   	hasobject	classname	enumerate_check_levelfieldsstrstr_bool_)labelr5   actualex_dtypeievlevel_labelfns           r)   r   r      sh   	{8 F##$$$!&.."2"2"*"2"2"4"4*/*+	- 	- 	- 	- 	Xv..LT(^^LL4<<LLULLN N N hw
L9; ; Xv&&&HNfl*Q(.QQQQ%QQS S S S~H h-- 	?+V-=>>>x(( 	5 	5EAr&%3Kb&)4444 / 	3 	3B"22B222K!"vbz3 3 3 3}# # # 	VXu5555fhqIIIIIIr+   c                     |D ]h}t          |d          }d|  d| }|                                D ]8\  }}| d| }t          ||v d|z             t          ||||                    9id S )NTstruct_as_recordtest ; file z, variable zMissing key at %s)r   itemsr   r   )	r3   filescase	file_namematdictr   kr5   k_labels	            r)   _load_check_caser   (  s     8 8	)d;;;000Y00::<< 	8 	8KAx..1..GAL"5"?@@@(GAJ7777	88 8r+   c           
         |D ]z}d|  d| }t          |          }fd|                                D             }|                                 |                                 t          ||| d|d|           {d S )Nr   r   c                 6    g | ]\  }}||j         |         fS r]   )r%   )ra   r   r5   r4   s      r)   rc   z$_whos_check_case.<locals>.<listcomp>8  s=     M M M0;8Q
+M M Mr+   z: z != )r   r   sortr   )r3   r   r   r4   r   r   whosexpected_whoss      `    r)   _whos_check_caser   2  s      	000Y00y!!M M M M?Czz||M M M 			T=>>>>]>>	 	 	 	 r+   c                     t                      }t          |||           |                    d           t          | |g|           d S )Nformatr   )r   r   seekr   )r3   r5   r   
mat_streams       r)   _rt_check_caser   C  sL    JJ0000OOATJ<22222r+   test%(name)s_*.matc              #   d  K   | dk    rt           }n| dk    rt          }n| dk    sJ t          }|D ]}|d         }|d         }|d }nXt          t          |t          |          z            }t          |          }t          |          dk    sJ d| d	|             |d
         }||||fV  d S )N455_rtr3   r5   )r3   r   zNo files for test  using filter r4   )case_table4case_table5case_table5_rtpjointest_data_pathdictr   len)	r{   filtcasesr   r3   r5   r   use_filtr4   s	            r)   _casesr   K  s      #~~	C&     - -F|
#<EE^TDdOOO-CDDHNNEu::>>>?T???? ">>y/E8W,,,,,- -r+   r   r   c                 L    t          |           D ]}t          |d d           d S )Nr;   )r   r   r{   r   s     r)   	test_loadr   a  s7    w $ $$rr(###$ $r+   c                 <    t          |           D ]}t          |  d S N)r   r   r   s     r)   	test_whosr   g  s/    w    $   r+   zversion, fmtsr   r   r   c                 r    t          | d           D ]$}|D ]}t          |d         |d         |            %d S )N)r   r   rN   )r   r   )r{   fmtsr   fmts       r)   test_round_tripr   n  s[    
 wT*** 2 2 	2 	2C47DGS1111	22 2r+   c                     t          j        d          } d| d<   d| d<   t          j        |           }d}d|i}d}t	                      }	 t          ||          }t          j        |d	
          }t          |||           |	                                 t          j        |d
          }t          |d          }|	                                 t          j        |           n# t          j        |           w xY wt          |d                                         |d                                         t          |                     d S )N)   r   gffffff@rN   r;   g      @)r,   r<   	gzip_testr}   r   wb)moder   r   Tr   r   )r$   zerosr   
csc_matrixr   r   gzipopenr   closer   shutilrmtreer
   r   repr)	xdenser}   r3   r5   r   tmpdirfnamer   r   s	            r)   test_gzip_simpler   x  sM   XgFF3KF3K
fADAwHFYYF
fT""Yu4000

HV4444Yu4000
d;;;fffSk1133&sm3355&*6ll4 4 4 4 4 4s   
BC& &C<c                     t                      } 	 t          t          j        d                    }t	          | d          }t          ||           t          j        |           t          ||           t          |           t          j        |           t          |d          }t          ||           |
                    d           |                                 t          |d          }t          |           |
                    d           |                                 t          j        |            d S # t          j        |            w xY w)N)rN   rN   r}   za.matr   r   r   )r   r   r$   r   r   r   osunlinkr   r   r   r   r   r   )r   r}   r   fs       r)   test_multiple_openr     s"   YYF28F##$$$fg&& 	q
	%q
	% 1	q							


	q							ffs   DE   Ec                     t          t          t          d                    } t          t	          |           dk               | D ]C}t          |d          }t          t          t          |d           |	                                 Dd S )Nztesthdf5*.matr   r   Tr   )
r   r   r   r   r   r   assert_raisesNotImplementedErrorr   r   )	filenamesfilenamefps      r)   
test_mat73r     s    no..0 0IC	NNQ  (D!!)'+	- 	- 	- 	- 	



 r+   c                      t          t          d          } t          j                    5  t          j        d           t          | d           t          | d           d d d            d S # 1 swxY w Y   d S )Nztestdouble_7.1_GLNX86.materrorTr   F)r   r   warningscatch_warningssimplefilterr   )r   s    r)   test_warningsr    s     ."=>>E		 	"	" / /g&&&----..../ / / / / / / / / / / / / / / / / /s   7A--A14A1c                  (   t                      } t          | dddiid           t          |           d         }t          |j        d           t          |j        t          j        t                               t          |d         d u            d S )Ndr0   rN   r   r   rQ   rB   	r   r   r   r   r%   r/   r$   r_   r   )siobacks     r)   test_regression_653r    s     ))CC#qeS))))3<<DU###RXf--...DIr+   c                  4   d} d| z  }t          j        d|t          fg          }t          t	                      d|id           d| dz   z  }t          j        d|t          fg          }t          t          t          t	                      d|id           d S )	N   rG   rQ   r.   
longstructr   r   r0   r$   r   r_   r   r   r   
ValueErrorlimfldnamest1s      r)   test_structname_lenr    s    
CCiG
(5'6!2 3
4
4
4CGIIc*37777SUmG
(5'6!2 3
4
4
4C*gwyy%c3 3 3 3 3 3r+   c                      t          j        ddt          fg          } t          t          t
          t                      d| idd           d S )NrQ   my_fieldnamer.   	my_structr   Tr   long_field_names)r$   r   r_   r   r  r   r   )r  s    r)   (test_4_and_long_field_names_incompatibler    s[    ~f&=%>???I*gwyyy)#N N N N N Nr+   c                  8   d} d| z  }t          j        d|t          fg          }t          t	                      d|idd           d| d	z   z  }t          j        d|t          fg          }t          t          t          t	                      d|idd           d S )
N?   rG   rQ   r.   r  r   Tr  r0   r  r  s      r)   test_long_field_namesr    s    
CCiG
(5'6!2 3
4
4
4CGIIc*3MMMMSUmG
(5'6!2 3
4
4
4C*gwyy%c4I I I I I Ir+   c                  6   d} d| z  }t          j        dt                    }t          j        d|t          fg          }||d<   ||d<   t	          t                      d|id	d
           t          t          t          t                      d|id	d           d S )Nr  rG   ri   r.   rQ   rB   rj   r  r   Tr  F)r$   r   r_   r   r   r   r   r  )r  r  rO   r  s       r)   test_long_field_names_in_structr    s     CCiG:e&)))D
(5'6!2 3
4
4
4CDIDIGIId+CNNNN *gwyy&sUL L L L L Lr+   c                     t          j        dt                    } d| d<   d| d<   t          t	                      d| id	           t          j        d
t                    } d| d<   t          t	                      d| id	           d S )Nri   r.   HellorB   Worldrj   r}   r   r   rQ   zHello, world)r$   r   r_   r   r   )cellss    r)   test_cell_with_one_thing_in_itr"    s     Ju6***EE#JE#JGIIU|C0000Ju6***EE#JGIIU|C000000r+   c                  f   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  )mfws    r)   test_writer_propertiesr(    s    

#
#C"%%%hCO6(+++$e,,,C$d+++%u---C%t,,,,,r+   c                     t                      } t          |           }t          j        d          }|                    d|i           t          |                                           }|                     d           |                     d           |                    d|i           t          |t          |                                           z
  dk               |                     d           |                     d           |                    d|i           t          t          |                                           |z
  dk                d S )N
   aaaaar   aaaar,   aaaaaa)
r   r   r$   r   put_variablesr   getvaluetruncater   r   )r  wtrr(   w_szs       r)   test_use_small_elementr3  $  s   
))C


C
(2,,Cwn%%%s||~~DLLOOOHHQKKKvsm$$$D3s||~~&&&*+++LLOOOHHQKKKxo&&&C$&*+++++r+   c                  z   t          j        dggdt          fdt          fg          } t          t          fD ]} |ddg          }t                      }t          |d|i           |                    d           t          |          d         }t          |j
        j        d	           t          ||            d S )
Nri   rG   br.   )rG   r0   )r5  rN   r   r   rG   r5  )r$   r   r_   r   r   r   r   r   r   r   r/   namesr	   )ab_exp	dict_typer  streamvalss        r)   test_save_dictr<  8  s     Xxj#vf(FGGGFK( ) )	Ix*++$$$Avv&TZ%z2224(((() )r+   c                     t          j        d          } dD ]}t                      }t          |d| i|           t	          |          }t          |d         j        d           t                      }t          |d| i|d           t	          |          }t          |d         j        d           t                      }t          |d| i|d	           t	          |          }t          |d         j        d           d S )
Nr<   r   onedr   )r0   r<   column)r   oned_as)r<   r0   row)r$   aranger   r   r   r   r%   )r(   r   r:  r;  s       r)   test_1d_shaperC  G  s   
)A,,C 0 0f5555vT&\'000 	" 	" 	" 	" vT&\'///	 	 	 	 vT&\'////'0 0r+   c                  r   t          j        d                              d          } d| d<   t                      }t	          |d| i           t          |                                          }t          |          }t          |d         |            t                      }t	          |d| id           t          |                                          }t          |          }t          |d         |            t          ||k               | 
                                }d|d<   t                      }t	          || |d	d
           t          |          }t          |d         |           t                      }t	          || |d	d           t          |          }t          |d         |           d S )Nd   )r<   r   r0   )rN   r*  r(   T)do_compressionrB   )r(   arr2FrG  )r$   r   reshaper   r   r   r/  r   r	   r   copy)r(   r:  raw_lenr;  compressed_lenrG  s         r)   test_compressionrL  `  s   
(3--


'
'CCIYYFFU3K   &//##$$G6??DtE{C(((YYFFU3K5555**++N6??DtE{C(((Gn$%%%88::DDIYYFF3t,,UCCCC6??DtF|T***YYFF3t,,TBBBB6??DtF|T*****r+   c                  x    t                      } t          | dt          j        dt                    i           d S )NAr0   r.   )r   r   r$   r   r_   )r:  s    r)   test_single_objectrO  {  s5    YYFFS!6222344444r+   c                  <   t          t          d          } t          | d          }t          d|v            t          d|v            t	          | 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_openeds       r)   test_skip_variablerV    s     ^$<==H 	4000AGqLHM .hNNNG[ 	h''AHMr+   c                     t          t          d          } t          | d          }|d         }t          |j        d           t          |j        t          j        t                               t          |d         d u            t                      }t          j
        dd	          }t          |d
|i           t          |          }|d
         }t          ||           d S )Nztest_empty_struct.matTr   rG   rQ   rB   r]   Ur.   r(   )r   r   r   r   r%   r/   r$   r_   r   r   r   r   r	   )r   r  rG   r:  r(   a2s         r)   test_empty_structrZ    s    ^$;<<H 	4000A	#A%   "(6**+++AcFdNYYF
(2S
!
!
!CFU3K   A	
5Br3r+   c                  $   t                      } t          | di i           t          |           }|d         }t          |j        d           t          |j        t          j        t                               t          |d         d u            d S )Nr(   rQ   rB   r  )r:  r  rG   s      r)   test_save_empty_dictr\    s}    YYFFUBK   A	%A%   "(6**+++AcFdNr+   c                 j    d}|D ]}t          j        | |k              rd} nt          |           dS )zH Assert `output` is equal to at least one element in `alternatives`
    FTN)r$   allr   )outputalternatives	one_equalr5   s       r)   assert_any_equalrb    sT     I   6&H$%% 	IE	 Ir+   c                     t          t          j        dg                    } t          | j        d           t          | d           t          j        dgddg          }t          j        dgddg          }||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|_        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          j        d          j	        j
                   t          | d           t          t          i           t          u            t          t          t                                d u             G 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 S )Nr0   )r0   ri   )rG   |O8)r5  rd  r.   )rN   r0   rN   r6  r;   )rG   r5  _c)rG   r5  rE  )rG   r5  99c                       e Zd ZdS ) test_to_writeable.<locals>.klassN__name__
__module____qualname__r]   r+   r)   klassrh            r+   rm  r   r]   a stringc                       e Zd ZdS )test_to_writeable.<locals>.CNri  r]   r+   r)   Crr    rn  r+   rs  rG   1_a)rt  r   rN   )r   rd  )r   r$   r   r   r%   r	   rb  rG   r5  r/   r   float64r   r   r    r_   object_)res	expected1	expected2r`  rm  crs  s          r)   test_to_writeabler}    s   
rx}}
%
%CD!!!sA&,)EFFFI&,)EFFFIy)L\qQ--00,???\qQQ"7"788,GGG\qQA"6"677FFF\qQQ"7"788,GGG        	A
AC
AC\!__l333
r

CD!!!,,,
r

CD!!!,,,L$&'''j))/4bg>>>
q//CB!!2!7888sAL 11222L""d*+++        L!22333
Qx
 
 
%CD!!!,,,L#a!!%66777L$q""&7788811oo..4&7779 9 9 9 9r+   c                     ddg} t          j        d|           }d|d         d<   d|d         d	<   d
|d         d<   d|d         d	<   t                      }t          |d|i           t	          |d          }|d         d         }t          |j        d           t          |j        d           t	          |d          }|d         d         }t          |d         d           t          |d	         d           t          |j        t          j        ddg                     |d         j	        d         }t          |d         d
           t          |d	         d           d S )N)f1f8)f2S10rv  r.   g      ?r   r  pythonr  c   r0   znot perlr(   Fr   rB   T)r  O)r  r  )
r$   r   r   r   r   r   r  r  r/   flat)dtr(   r:  r  a20a21s         r)   test_recarrayr    sj   


B
(4r
"
"
"CCF4LCF4LCF4LCF4LYYFFUCL!!!///A
E(3-C"""...A
E(3-CTC   TH%%%BHk&1&3 4 4 5 5 5
E(-
CTBTJ'''''r+   c                      G d d          }  |             }d|_         d|_        t                      }t          |d|i           t	          |d          }|d         d         }t          |j         d           t          |j        d           t	          |d	          }|d         d         }t          |d
         d           t          |d         d           d S )Nc                       e Zd ZdS )test_save_object.<locals>.CNri  r]   r+   r)   rs  r  "  rn  r+   rs  r0   rp  r|  Fr   rB   Tfield1field2)r  r  r   r   r   r   )rs  r|  r:  r  c2s        r)   test_save_objectr  !  s           	AAHAHYYFFS!H///A	
3BAJ'''...A	
3BHq!!!Hz*****r+   c                     t          j        d                              dd          } t                      }t	          |d| i           t          |          }|                                }|d         }t          ||            t          |d          }t          |                                d         |                     d                     d|_        t          ||            t          |t          j
                  }t          |                                d         |            t          |t          j                  }t          t          |j                   t          j
        |_        t          |                                d         |            t          j        d	g          } |                    d
           |                    d
           t	          |d| i           t          |          }t          |                                d         |            t          |d          }t          j        t          j        t'          |                                           d                    }t          |                                d         |           d|_        t          |                                d         |            d S )Nr=   r0   rG   T
squeeze_me)r=   F)
byte_orderrp  r   )chars_as_stringsU1r.   )r$   rB  rH  r   r   r   rS  r	   r  bocnative_codeswapped_coder   	Exceptionr  r   r0  r   
atleast_2dlistr   r  )r(   r:  rdr	back_dictrarrcarrs         r)   test_read_optsr  3  sX    )A,,

q
#
#CYYFFS#J

 
 C!!##IS>DtS!!!
D
1
1
1Cs((**3/T1B1BCCCCNtS!!!
CO
<
<
<Cs((**3/555 C,<
=
=
=C)S.///_CNs((**3/555
(J<
 
 C
OOA
KKNNNFS#J

 
 Cs((**3/555
%
8
8
8C=$sxxzz"2"2$???@@Ds((**3/666Cs((**3/55555r+   c                  t   t          t          d          } t          | d          }t          |          }|                                }|                                 t          |d         t          j        g d                     t                      }t          |dt          j        dg          i           t          |          }|                                }t          |d         t          j        g d                     |                    d           |                    d           t          |dt          j        g d          i           t          |          }|                                }t          |d         t          j        g d                     |                                 d S )Nzsingle_empty_string.matr   rG   r  r.    r   )r   r   r   r   rS  r   r	   r$   r   r   r   r0  r   )estring_fnamer   r  r  r:  s        r)   test_empty_stringr  V  sq   .*CDDM	mT	"	"B


CAHHJJJqvrx$777888 YYFFS"(B4..)***

 
 CAqvrx$777888
OOA
KKNNNFS"(2T2223444

 
 CAqvrx$777888
LLNNNNNr+   c                      dd l } t          df| j        dffD ]d\  }}t          t	          t
          |          d          5 }t          |          }t          ||j                   d d d            n# 1 swxY w Y   ed S )Nr   corrupted_zlib_data.matzcorrupted_zlib_checksum.matr   )	zlibr  r   r   r   r   r   r   rS  )r  excr   r   r  s        r)   test_corrupted_datar  q  s    KKK"$=>
$ABD 2 2
U%..55 	2 $$C#s0111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	22 2s   %A00A4	7A4	c                      t          t          t          d          d          5 } t          | d          }|                                 d d d            d S # 1 swxY w Y   d S )Nr  r   F) verify_compressed_data_integrity)r   r   r   r   rS  )r   r  s     r)   )test_corrupted_data_check_can_be_disabledr  z  s    	eN$=>>	E	E R%HHH                 s   &AAAc            	         dD ]} t          t          t          |           d          }t          |          }|                                }|                                 t          |d         t          j        dgdggt                               t          |d         t          j        dd	gd	d
ggt          j
                             d S )N)zbig_endian.matzlittle_endian.matr   stringshelloworldr.   floats       @      @      @)r   r   r   r   rS  r   r	   r$   r   r_   float32)r   r   r  r  s       r)   test_read_both_endianr    s    8 
C 
C%..55R  



1Y<8gY&-Y%07=? ? ?	@ 	@ 	@ 	1X;8b"X&("X%/68jB B B	C 	C 	C 	C
C 
Cr+   c            	      V   t          j        ddgddgg          } t          j        d                              d          }t          j        ddgd	          }t	                      }t          ||                                                     | j        	                                          |                                                    |j        	                                          |                                                    |j        	                                          d
           t          |          }|                                }t          |d         |            t          |d         |           t          |d         |           |                                 d S )Nr  r  r  r=   r   r  r  rX  r.   )r  intsuni_arrr  r  r  )r$   r   rB  rH  r   r   byteswapviewr/   newbyteorderr   rS  r	   r   )	float_arrint_arrr  r:  r  r  s         r)   test_write_opposite_endianr    sp    2r(r($ % %Iill""6**Gh)555GYYFF$$&&++IO,H,H,J,JKK  ""''(B(B(D(DEE##%%**7=+E+E+G+GHH    
 
 
 CAq{I...qy'***q|W---
LLNNNNNr+   c                  z   t          t          t          d          d          5 } t          | d          }|                                }d d d            n# 1 swxY w Y   t          j        dgdggt
          j                  }t          |d         |           t          |d         j
        |j
                   d S )Nztestbool_8_WIN64.matr   T	mat_dtypeFr.   r   )r   r   r   r   rS  r$   r   r   r	   r   r/   )fobjr  r  r}   s       r)   test_logical_arrayr    s     
eN$:;;T	B	B  dTT222                              	4&5'""(333Aq~q)));%qw/////s   &AAAc                     t                      } t          j        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_arrayr/   r   uint8)r:  barrreaderhdr_vars         r)   test_logical_out_typer    s     YYF8((())DFXt$%%%
KKNNNF##F

##%%FCU0111&&&


U
+
+C*****r+   c                      t                      } t          | dt          j        d          i           t	          |           }|d         j        dk    sJ d S )Nr  )r*  r   )r   r   r$   emptyr   r%   )r:  r  s     r)   test_roundtrip_zero_dimensionsr    sR    YYFFS'**+,,,AS6<7""""""r+   c                      t                      } t          j        d                              d          }t	          t
          t          | d|idd           d S )N   )rN   r;   r,   rG   Tr   )r   r$   rB  rH  r   r  r   )r:  r(   s     r)   test_mat4_3dr    sH    YYF
)B--


(
(C*gvSz4EEEEEr+   c                  h   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   rS  r   r   r   r   r   r   r   r.  )func_egr   r  r  r:  r1  s         r)   test_func_readr    s    N$=>>G	gt		B


CAHHJJJa
m^44444YYF

 
 C-!2A66666r+   c                     t          t          d          } t          | d          }t          |d          }|                                }|                                 t          |d         j        j        d           t          | d          }t          |d          }|                                }|                                 t          |d         j        j        d           d S )	Nztestmatrix_6.1_SOL2.matr   Fr  r?   uTr   )	r   r   r   r   rS  r   r   r/   kind)	double_egr   r  r  s       r)   test_mat_dtyper    s    n&?@@I	i		B
u
-
-
-CAHHJJJ<&+S111	i		B
t
,
,
,CAHHJJJ<&+S11111r+   c                  D   dt          j        t          j        d                    i} t	                      }t          |d| i           t          |d          }t          |d         d         d                                         t          j        d                     d S )Nsparsefieldr,   rG   Tr   rB   )	r   
coo_matrixr$   eyer   r   r   r	   r   )str:  r  s      r)   test_sparse_in_structr    s     rvayy11	2BYYFFSH...Aqvd|M2::<<bfQiiHHHHHr+   c                      t                      } ddddi}t          | |           t          | d           t          | dd           d S )	Nr  r0   rN   rn   Fr   T)r   r  )r   r   r   )r:  in_ds     r)   test_mat_struct_squeezer    s[    YYF##$DFDFU++++FUt<<<<<<r+   c                  t   t                      } dggddddd}t          | |           t          | d          }t          t	          |d	         t
                               t          t	          |d
         t                               t          t	          |d         t          j                             d S )N皙?zmy namer0   rN   rn   )scalarr6   r  Tr  r  r6   r  )	r   r   r   r   r   floatr   r$   r   )r:  r  out_ds      r)   test_scalar_squeezer    s    YYFug9K9KLLDFDFt,,,EJuX..///JuX,,---JuT{BJ//00000r+   c                  L   t                      } t          j        ddg          }t          j        ddg          }t          | t	          |                     t          |           }t          |d         |           |                     d           |                     d           |	                    d          }t          j
        t          j        |j        d|	          }t          | t	          |                     t          |d         |           |                     d           |                     d           |                    d
          }|                    d
          }t          | d|i           t          |           }t          |d         |           d S )Nr  FoobzFoob )rG   rG   r   F)order)r%   r/   r  bufferrX  )r   r$   r   r   r   r   r	   r0  r   tobytesr   rG   r%   r/   astype)r:  in_arrout_arrry  in_strin_from_strin_arr_u	out_arr_us           r)   test_str_roundr    sp   YYFXw'((Fh)**GFD6NNN###
&//Cs3x)))
OOA
KKNNN^^#^&&F*17#)<#&$*, , ,K FD;'''(((s3x)))
OOA
KKNNN}}S!!Hs##IFS(O$$$
&//Cs3x+++++r+   c                      t                      } t          | ddddi           t          |           }|d         j        j        }t          t          |          ddh           d S )NrG   r0   rN   r6  r5  )r   r   r   r/   r7  r   set)r:  ry  field_namess      r)   test_fieldnamesr  $  sa    YYFFSqa..)***
&//Cc(.&K[!!C:.....r+   c                     g d} t          t          d          g ft          t          d          | ffD ]\  }}t          |          }t          t	          |                                          t	          ddg|z                        t          |d          }t          t	          |                                          t	          dg|z                        t          |dg          }t          t	          |                                          t	          dg|z                        t          |dg          }t          t	          |                                          t	          dg|z                        t          |d          }t          t	          |                                          t	          dg|z                        t          |g           }t          t	          |                                          t	          |                     dg}t          ||          }t          |dg           d S )N)__globals__
__header____version__ztestmulti_4.2c_SOL2.matztestmulti_7.4_GLNX86.matrG   rF   )variable_names)rF   )r   r   r   r   r  keys)mat5_sys_nameseg_filesys_v_namesvarsvnamess        r)   test_loadmat_varnamesr  -  s   % % %N 
~8	9	92>6B8 B89GAI!J ( ( wS%%sC>K+G'H'HIIIws333S%%sC5;+>'?'?@@@wu555S%%sC5;+>'?'?@@@wy999S%%sG9{+B'C'CDDDwz:::S%%sG9{+B'C'CDDDwr222S%%s;'7'7888wv666VgY''''#( (r+   c                  j   t          j        d          } t                      }dD ]}|                    d           |                    d           t          |d|                     |          i           t          |          }t          t          j	        |          |d         j	                   d S )Nr*  )r  f4i8i4i2i1u8u4u2u1c16c8r   r(   )
r$   rB  r   r0  r   r   r  r   r   r/   )r(   r:  dtsr  s       r)   test_round_typesr!  F  s    
)B--CYYF0 7 7A

30111vRXc]]DK$566667 7r+   c                    	 dt          t          j        d                    fdt          d          fdt          d          ff	 G 	fdd          } t                      }t	          | |                        t          |          }t          t          |          d           t          d          D ]M}||         \  }}	|         \  }}t          ||           t          |          }t          ||         |           Nd S )	Nr(   r*  mystrrp  mynumc                       e Zd Z fdZdS ) test_varmats_from_mat.<locals>.Cc                     S r   r]   )self
names_varss    r)   r   z&test_varmats_from_mat.<locals>.C.items[  s	    r+   N)rj  rk  rl  r   )r)  s   r)   rs  r&  Z  s.        	 	 	 	 	 	 	r+   rs  r;   )r*   r$   rB  r   r   r   r   r   ranger   r	   )
rs  r:  varmatsr   r3   
var_streamexp_nameexp_resry  r)  s
            @r)   test_varmats_from_matr/  S  s%   %	"../E*--.E"II&(J
          YYFFAACCv&&GWq!!!1XX / /"1:j&qM'T8$$$j!!3t9g..../ /r+   c                      t          t          d          } t          | d          }t          |          }|                                }|                                 t          |d         j        d           d S )Nzone_by_zero_char.matr   r  ro  )r   r   r   r   rS  r   r   r%   )r  r   r  r  s       r)   test_one_by_zeror1  i  sh    N$:;;G	gt		B


CAHHJJJ5&&&&&r+   c                      t          t          d          } t          |           }t          |d         ddgg           d S )Nztest_mat4_le_floats.matrG   r  g333333?)r   r   r   r	   )
mat4_fnamer  s     r)   test_load_mat4_ler4  s  sA     ~'@AAJ:DtCyC:,/////r+   c                      t                      } ddi}t          | |d           t          |           }t          |d         |d                    d S )N
second_catu   Schrödingerr   r   )r   r   r   r   )bior  var_backs      r)   test_unicode_mat4r9  {  sU    
))C
(CCS!!!!s||H,'\):;;;;;r+   c            	      Z   t          t          d          } t          | 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   
sp_log_5_4)TTTF)FFTF)FFFF)r   r   r   r   r   r   r   r   r/   r   r$   r   r	   r   )r   r  log_sps      r)   test_logical_sparser=    s     ^$899H 	4000A|_FJvr}--..."BH---v~~''111333333444444	67 7 7 7 7r+   c                  n   t                      } dd l}|j                            ddgddgg          }t	          | t          |                     |                     d           t          |           }t          |d         j	        |j	                   t          |d         
                                d           |                     d           t          |           }|                                 |                                 |                                \  }}t          |j        d           d S )Nr   r   r}   r0   )r   scipy.sparser@   
csr_matrixr   r   r   r   r	   r%   r   r   r  r  r  r   nzmax)r  scipyempty_sparsery  r  r  r  s          r)   test_empty_sparserD    s   
))C<**QqE1Q%=99LC%%%&&&HHQKKK
#,,Cs3x~|'9:::s3x''))1--- HHQKKKC  F

##%%FCAr+   c                  X    t                      } t          t          t          |            d S r   )r   r   r   r   )r  s    r)   test_empty_mat_errorrF    s#    
))C,-----r+   c                  T   t          t          d          } t          |           }t          |d         t	          j        d          d d d f                    t          t          d          } t          t                    5  t          |            d d d            d S # 1 swxY w Y   d S )Nzmiuint32_for_miint32.matan_arrayr*  zbad_miuint32.mat)r   r   r   r   r$   rB  r   r  r   ry  s     r)   test_miuint32_compromiserJ    s     ^%?@@H
(

CZ")B--aaa"8999^%788H	z	"	"                   s    BB!$B!c                      t          t          d          } t          |           }t          |d         dgg           t          t          d          } t	          t
                    5  t          |            d d d            d S # 1 swxY w Y   d S )Nzmiutf8_array_name.mat
array_namer0   zbad_miutf8_array_name.mat)r   r   r   r   r   r  rI  s     r)   !test_miutf8_for_miint8_compromiserM    s    ^%<==H
(

C\"aSE***^%@AAH	z	"	"                   s   &BB
Bc                      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   decoderI  s     r)   test_bad_utf8rS    sU    ^$566H
(

C\""))&)<<> > > > >r+   c                     t           j                            t          |           d          }ddddi}t	          ||           d S )Ntest.matrG   r0   test_str)r5  r|  )r   pathr   r   r   )r   r   	test_dicts      r)   test_save_unicode_fieldrY    sE    w||CKK44H!
++,IHi     r+   c                      G d d          } |            }t           j                            t          |           d          }t	          |d|i           t          |          }t          |d         t          j        |                     d S )Nc                       e Zd ZddZdS )0test_save_custom_array_type.<locals>.CustomArrayNc                 R    t          j        d                              dd          S )Ng      @rN   r;   )r$   rB  rH  )r(  r/   rI  s      r)   	__array__z:test_save_custom_array_type.<locals>.CustomArray.__array__  s     9S>>))!Q///r+   )NN)rj  rk  rl  r^  r]   r+   r)   CustomArrayr\    s(        	0 	0 	0 	0 	0 	0r+   r_  rU  rG   )	r   rW  r   r   r   r   r	   r$   r   )r   r_  rG   r   outs        r)   test_save_custom_array_typera    s    0 0 0 0 0 0 0 0 	Aw||CKK44HHsAh
(

Cs3x!-----r+   c                  r    t          t          t          d           t          t          t          d           d S )NzNotExistentFile00.matNotExistentFile00)r   OSErrorr   r]   r+   r)   test_filenotfoundre    s.    '7$;<<<'7$788888r+   c                  ~   t          t          d          } t          | d          }t          | d          }t          t	          |d         t
                               t          t	          |d         t          j                             t          |d         d         t          j	        g d                     d S )Nztestsimplecell.matTsimplify_cellsFsmycell)rG   r5  r|  )
r   r   r   r   r   r   r$   r   r	   r   )r   res1res2s      r)   test_simplify_cellsrm    s    ^%9::H8D111D8E222DJtCy$''(((JtCy"*--...tCy*BH___,E,EFFFFFr+   zversion, filt, regex))r   z_4*_*N)r0   z_5*_*N)r0   z_6*_*N)r0   _7*_*z^((?!hdf5).)*$)rN   rn  z.*hdf5.*)r0   z8*_*Nc                     t          t          d|z            }t          |          }fd|D             }t          |          dk    sJ d|  d|             |D ]}t	          |          }|d         | k    sJ  d S )Nztest*%s.matc                 >    g | ]}t          j        |          |S r   )rematch)ra   fileregexs     r)   rc   z(test_matfile_version.<locals>.<listcomp>  s*    MMM$28E4+@+@+L+L+L+Lr+   r   zNo files for version r   )r   r   r   r   r   )r{   r   rt  r   r   rs  got_versions     `    r)   test_matfile_versionrv    s     ^]T%9::HNNEMMMM%MMMu::>>>===t== >> ) )%d++1~((((() )r+   c                     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"   s    r)   test_opaquer{    sw    58899Dd:&77777d:&++--a05577:LIIIIIIIr+   c                      t          t          t          d          d          } t          | d         t                    sJ dS )zETest that we can read a MatlabOpaque object when simplify_cells=True.rx  Trg  ry  N)r   r   r   r   r   rz  s    r)   test_opaque_simplifyr}    s?    588NNNDd:&7777777r+   c                      t          t                    5  t          j        j        j        j         ddd           n# 1 swxY w Y   t          t                    5  ddlm}  ddd           dS # 1 swxY w Y   dS )z4Test that access to previous attributes still works.Nr   r   )	r   DeprecationWarningrB  iomatlabmio5_paramsr   scipy.io.matlab.miobaser   r  s    r)   test_deprecationr    s     
(	)	) 1 1#001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 
(	)	) 9 98888889 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9s!   =AAA00A47A4c                     t           j                            d          }| dz  }|                    d          }|                    d          }||g}t           j                                        5 }|                    t                     t          |d|idd           d d d            n# 1 swxY w Y   i }t          ||           t          |d         d         d         |           t          |d         d         d	         |           d S )
Ni90  z	lists.mat)r<   r;   )r=   r;   r"   T)r  rF  r   r0   )
r$   randomdefault_rngtestingsuppress_warningsfilterr!   r   r   r   )tmp_pathrngoutfile	array_one	array_twolist_of_arrayssupnew_dicts           r)   test_gh_17992r    sO   
)


&
&C$G

5!!I

5!!I+N		%	%	'	' %3

,---(!%#	% 	% 	% 	%% % % % % % % % % % % % % % % HG  HV$Q'*I666HV$Q'*I66666s   10B--B14B1c                     t          j        t          d          t          d          gd          t          j        ddg          d}| dz  }t          ||d           d S )	Nr8   r  r.   r6   )
char_arraystring_arrayztmp.matr   r   )r$   r   r  r   )r  r  r  s      r)   test_gh_19659r  4  sj    hVd6ll;4HHH(H!566	
 	
A "GGQs######r+   )r   )__doc__r   collectionsr   os.pathr   r   r   r   r  r   rq  tempfiler   r   r   r   numpy.testingr	   r
   r   r   r   r   pytestr   r   numpyr$   r   r?  r@   r   scipy.iorB  scipy.io.matlabr   r   r   scipy.io.matlab._byteordercodesr  _byteordercodesr  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   r*   pirB  r  rH  rF   r   appendcossinr   rN  r  r*  r  r  r9   Br_   CAr   CAEr  objarr	transposesqrtexp
st_sub_arrr/   r  CNr  st2rG   ODTMOm0r   fp_u_strreadrR  u_strr   r   repeatr   r   r   r   r   r   markparametrizer   r   r   r   r   r   r  r  r  r  r  r  r"  r(  r3  r<  rC  rL  rO  rV  rZ  r\  rb  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r/  r1  r4  r9  r=  rD  rF  rJ  rM  rS  rY  ra  re  rm  rv  r{  r}  r  r  r  r]   r+   r)   <module>r     s   
 
			 # # # # # # * * * * * * * *             				         Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q  * * * * * *                  F F F F F F F F F F - - - - - - - - - - - -; ; ; ; ; ; ; ; ; ; ; ; N N N N N N N N N N N N              - , , , , , , , , , , , 6 6 6 6 6 6 wwx((&11   	a		!%(((001555x(& 
   v&%FGHHJ      )FBF5MM1A!AB   
 BHUOOtEE!AJJ!	eeAajj		!!!A#   x("   
   x(a 0 01   
 HHW #"   $h/%}r}Q'7'78   
   "22 q))   
   h'uuRyy)   
   'u.    U
qc

!ugwwwi	 "(	) ) ) *12	 
 %GHJ J3 V$b!# #$ e	E!HH	E!HH	E"II	E"II	E!HH
   
 %WQr]]  
%f	%	%	%eAhhs   !6*"F+   
    &)!3') )* * *   "F+#UU&! &! "      *LBLDDq,=,=w!G!GHHJ    UGBGAJJvrvayy/00881==
MMLMMMbhue%!= >??M 3 $M 3 %0N C    x($   
 RXe6"""
%((3
"(5
'
'
'3uQbh'''3uqcU"(+++3rxV,,,3E!28,,,3S E!28,,,3S    ( "%   
 bhuAA.AAABBB%((C"(5'6):(;<<<C %zl 3 3C W    !8,"C(   
 BHU?????@@@a#ua#uzl###uzl###u    (+!1%   
 bh 4 434 4 4 5 5 \("(5,,,h77WUC5\\6
%2344;UC5\\6
a9a9a9   x(#   
 4n&9::DAAw''       'ug/   
   x(a 0 01   
   $h/%}r}Q'7'78   
   i(%$%)**,    QQQ   "H-#YRYr1%5%5%=%=a%B%BCE EF F F   )J )J )JX8 8 8  "3 3 3- - - -, J//$ $ 0/$
 J//    0/  3*cUO+  2 2	 24 4 48  :  
/ 
/ 
/	 	 		3 	3 	3N N N	I 	I 	IL L L"1 1 1- - -, , ,() ) )0 0 02+ + +65 5 5
  <     &    <9 <9 <9~( ( (6+ + +$ 6  6  6F  62 2 2  C C C  *0 0 0+ + +"# # #F F F	7 	7 	72 2 2I I I= = =1 1 1, , ,:/ / /( ( (2
7 
7 
7/ / /,' ' '0 0 0< < <7 7 7*  (. . .	 	 	  > > >! ! !. . .9 9 9G G G / 2 2 2  	) 	) 	)J J J8 8 89 9 97 7 7*$ $ $ $ $r+   