
    Bpj                        S SK r S SKJr  S SKJrJr  S SKJr  S SKJ	r	  S SK
r
S SKJr  S SKrS SKrS SKrS SKJrJrJrJrJr  S SKrS SKJrJr  S SKrS S	KJr  S S
KJrJ r J!r!J"r"J#r#  S SK$r%S SK&J'r'J(r(J)r)  S SK*Js  J+s  J,r-  S SK.J/r/J0r0J1r1J2r2J3r3  S SK4J5r5J6r6J7r7J8r8  S SK9J:r:J;r;J<r<J=r=J>r>  S SK?Js  J+s  J@rA  \" \" \B5      S5      rC\R                  R                  rFS rG\R                  S-  \R                  " S\JS9R                  SS5      -  rLSSS0S\L0S./rM\MR                  SSS0S\" S/5      0S.5        \MR                  SSS0S\R                  " \L5      S\R                  " \L5      -  -   0S.5        \R                  " S5      rR\S" \T" SS 5      5      \RS '   \S" \T" SS5      5      \RSS2S 4'   \MR                  S!S"S0S"\R0S.5        \MR                  S#S$S#0S$\!" \R5      0S.5        \RR                  \V5      rW\WS%==   S-  ss'   \MR                  S&S'S#0S'\!" \W5      0S.5        \MR                  S(SSS).\L\RS).S.5        \MR                  S*S+S0S+\G" S,5      0S.5        \MR                  S-S.S0S.\" S//5      0S.5        \G" / \G" S/5      \G" SS0//5      \G" / S1Q/5      4\XS9R                  SS,5      rY\" S2/5      \YS%'   S3S4S30S4\Y0S./rZ\G" \G" S5      \G" S05      \G" / 5      \G" / 5      \G" S55      4\XS9R                  SS,5      r[\R                  " S6\XS9r]\G" S5      \]S%'   \ZR                  S7S8S30S8\]0S.5        \ZR                  S9S:S30S:\[0S.5        \ZR                  S;S<S0S<\" / S=Q5      0S.5        \ZR                  S>S?S0S?\R                  " \R                  " \S" \T" SS@5      5      SA5      5      0S.5        \" \R                  " S05      \R                  " S5      \R                  /5      R                  SS55      raSB V s/ s H  o \X4PM     sn rb\R                  " S6\b5      rc\" SC/5      \cSD   S%'   \a\cSE   S%'   \aSF-  \cSG   S%'   \ZR                  SHSISH0SI\c0S.5        \R                  " SJ\XS9rd\G" S5      \dS%'   \R                  " SK\XS9\dSL'   \G" S0\R                  S9\dSL   S%'   \G" S5//\R                  S9\dSL   SL'   \R                  " SJ\XS9\dSL   SM'   \G" S\R                  S9\dSL   SM   S%'   \G" SN\R                  S9\dSL   SM   SL'   \ZR                  SOSPS30SP\d0S.5        \R                  " S6SQ V s/ s H  o \X4PM     sn S9rf\G" S5      \fS%   SR'   \R                  " S6SS\X4/S9\fS%   ST'   \" SU/5      \fS%   ST   S%   SS'   \ZR                  SVSWSH0SW\f0S.5        \R                  " SJSQ V s/ s H  o \X4PM     sn S9rg\G" S5      \gS%   SR'   \G" S05      \gS%   ST'   \" SX/5      \gSL   SR'   \" SY/5      \gSL   ST'   \ZR                  SZS[SH0S[\g0S.5        \R                  " S\ V s/ s H  o \X4PM     sn 5      rh\)" \R                  " S6\hS9S]5      ri\iS%   rj\" S^/5      \jS_'   \" S`/5      \jSa'   \" S^/5      \jSb'   \G" S 5      \jSc'   \G" S5      \jSd'   \G" S5      \jSe'   \ZR                  SfSgSf0Sg\i0S.5        \k" \" \CSh5      Si5      rl\lR                  5       R                  Sj5      ro\lR                  5         \ZR                  SkSlS0Sl\" \o/5      0S.5        \ZR                  S#S$S#0S$\!" \R5      0S.5        \ZR                  S&S'S#0S'\!" \W5      0S.5        \ZR                  SmSnSo0Sn\" Sp/Sq//5      0S.5        \ZSS rq\qR                  SrSsSf0Ss\R                  " \iS05      R                  SS05      0S.5        St rsSu rtSv ruSw rvSx rwSSy jrx\R                  R                  SeSz5      S{ 5       rz\R                  R                  SeSz5      S| 5       r{\R                  R                  S}S~S~S/4SS/4/5      S 5       r|S r}S r~S rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r\R                  R                  S/ SQ5      S 5       rS rS rS rS rS rS rS rS rS rS rS rS rS rS rgs  sn f s  sn f s  sn f s  sn f )    N)OrderedDict)joindirname)glob)BytesIO)mkdtemp)assert_array_equalassert_array_almost_equalassert_equalassert_assert_allclose)raiseswarns)array)issparse	eye_array	coo_array	csc_arraysparray)MatlabOpaqueMatlabFunctionMatlabObject)matdimsMatWriteErrorMatReadErrormatfile_versionMatWriteWarning)mat_reader_factoryloadmatsavematwhosmat)MatFile5WriterMatFile5Readervarmats_from_matto_writeableEmptyStructMarkerdatac                  f    [         R                  " U 0 UD6nUR                  [        U5      5      nU$ )z;Convenience function to return matlab-compatible 2-D array.)npr   reshaper   )argskwargsarrs      Z/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/scipy/io/matlab/tests/test_mio.pymlarrr/   &   s,    
((D
#F
#C
++gcl
#C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   )r5   rS   r@   z@This cell contains this string and 3 arrays of increasing lengthcelltestcellr@   r5   r5   
scalarcelltestscalarcell	emptycelltestemptycellstringarrayteststringarray)zone  ztwo  three3dmatrixtest3dmatrix   )r1   r@   rS   )stringfielddoublefieldcomplexfieldzRats live on no evil star.ra   rb   y      ?      ?rc   struct
teststructr5   rS   )r5   r@   r   r5   )r   rS   rA   cellnesttestcellnestonetwork   r]   rl   znumber 3
structnestteststructnestznumber 1znumber 2	structarrteststructarr)expr	inputExprr+   isEmptynumArgsversioninlinexrq   z x = INLINE_INPUTS_{1};rr   r+   rs   rt   ru   object
testobjectzjapanese_utf8.txtrbzutf-8unicodetestunicodebool	testboolslogicalTFobjectarraytestobjectarrayc                 2   [        U 5      n[        U5      nX#L a  gU[        R                  L a+  U R                  S:X  a  [        U R	                  5       5      UL $ U[        R                  L a+  UR                  S:X  a  [        UR	                  5       5      UL $ g)zcCheck if types are same or compatible.

0-D numpy scalars are compatible with bare python scalars.
T F)typer)   ndarrayshapeitem)var1var2type1type2s       r.   types_compatibler      s{    
 JEJE~

tzzR/DIIK E))

tzzR/DIIK E))r0   c           	         [        U5      (       a=  [        [        U5      5        [        UR                  5       UR                  5       U SS9  g[        [	        X5      S[        U5       S[        U5       SU  35        [        U[        R                  [        R                  -  [        -  5      (       d  [        X5        g[        UR                  UR                  :H  SUR                   SUR                   SU  3S9  UR                  nUR                  (       a`  [        U[        5      (       a   [        UR                  UR                  5        [!        U5       H  u  pEU  S	U S
3n[#        XeX$   5        M     gUR$                  (       a-  UR$                   H  nU  SU S3n[#        UX   X'   5        M     gUR
                  [&        [        R(                  [        R*                  4;   a  [        X!U S9  g[        X!U SS9  g)z.Check one level of a potentially nested array rA   )err_msgdecimalNzExpected type z, got z at zExpected shape )msgz, [z], z, field z, r   )r   r   r
   toarrayr   r   
isinstancer)   voidr   r   r   r   r4   	hasobject	classname	enumerate_check_levelfieldsstrstr_bool_)labelr:   actualex_dtypeievlevel_labelfns           r.   r   r      s    !!&.."2"*"2"2"4*/*+	- 	X.T(^,F4<.UGLN h"** 4| CDDX&HNNfll*!(..!1~T%QS~~Hh--++V-=-=>x(EA"G3qc-K&)4 ) 	//B"G8B4r2K!vz3 " 	}}# # 	Vu5fqIr0   c                     U HU  n[        USSS9nSU  SU 3nUR                  5        H+  u  pgU SU 3n[        Xd;   SU 35        [        XXF   5        M-     MW     g )NTFstruct_as_recordspmatrixtest ; file z, variable zMissing key at )r   itemsr   r   )	r8   filescase	file_namematdictr   kr:   k_labels	            r.   _load_check_caser   "  sm    	)dUKvWYK0::<KA{1#.GALOG9"=>GJ7 ( r0   c           
         U H~  nSU  SU 3n[        U5      nUR                  5        VVs/ s H  u  pxXxR                  X7   4PM     n	nnUR                  5         U	R                  5         [	        XiU SU< SU	< 35        M     g s  snnf )Nr   r   z: z != )r!   r   r   sortr   )
r8   r   r   r9   r   r   whosr   r:   expected_whoss
             r.   _whos_check_caser   ,  s    	vWYK0y! @Dzz|M?KQ
+| 	 M 			Twb],=>	 
Ms   Bc                 h    [        5       n[        X1US9  UR                  S5        [        X/U5        g )Nformatr   )r   r    seekr   )r8   r:   r   
mat_streams       r.   _rt_check_caser   =  s+    JJ0OOAT<2r0   c           	   #   &  #    U S:X  a  [         nOU S:X  a  [        nOU S:X  d   e[        nU H_  nUS   nUS   nUc  S nOA[        [        U[        US9-  5      n[        U5      n[        U5      S:  d   SU S	U 35       eUS
   nXFXX4v   Ma     g 7f)N455_rtr8   r:   )r8   r   zNo files for test  using filter r9   )case_table4case_table5case_table5_rtpjointest_data_pathdictr   len)	ru   filtcasesr   r8   r:   r   use_filtr9   s	            r.   _casesr   E  s     #~	C&   F|
#<E^TDdO-CDHNEu:> @$TF.?@>y/8,, s   BBr   r   c                 >    [        U 5       H  n[        US S 6   M     g )Nr@   )r   r   ru   r   s     r.   	test_loadr   [  s    w$r(#  r0   c                 8    [        U 5       H  n[        U6   M     g N)r   r   r   s     r.   	test_whosr   a  s    w$  r0   zversion, fmtsr   r   r   c                 ^    [        U S S9 H  nU H  n[        US   US   U5        M     M!     g )N)r   r   rS   )r   r   )ru   fmtsr   fmts       r.   test_round_tripr   h  s3    
 wT*C47DGS1  +r0   c                  "   [         R                  " S5      n SU S'   SU S'   [        U 5      nSnSU0nSn[        5       n [	        XR5      n[
        R                  " US	S
9n[        XsUS9  UR                  5         [
        R                  " USS
9n[        USSS9nUR                  5         [        R                  " U5        [        US   R                  5       US   R                  5       [        U5      S9  g ! [        R                  " U5        f = f)N)   r   gffffff@rS   r@   g      @)r1   rA   	gzip_testrw   r   wb)moder   rz   TFr   r   )r)   zerosr   r   r   gzipopenr    closer   shutilrmtreer
   r   repr)	xdenserw   r8   r:   r   tmpdirfnamer   r   s	            r.   test_gzip_simpler   r  s    XXgFF3KF3K&ADAwHFYF
f"YYu40

V4YYu40
dUKffSk113&sm335&*6l4 	fs   A*C6 6Dc                  H   [        5       n  [        [        R                  " S5      S9n[	        U S5      n[        X!5        [        R                  " U5        [        X!5        [        U5        [        R                  " U5        [        US5      n[        X15        UR                  S5        UR                  5         [        US5      n[        U5        UR                  S5        UR                  5         [        R                  " U 5        g ! [        R                  " U 5        f = f)N)rS   rS   rw   za.matr   r   rz   )r   r   r)   r   r   r    osunlinkr   r   r   r   r   r   )r   rw   r   fs       r.   test_multiple_openr     s    YF288F#$fg& 	
		%
		% 	q			
	q			ffs   C&D	 	D!c                      [        [        [        S5      5      n [        [	        U 5      S:  5        U  H3  n[        US5      n[        [        [        USS9  UR                  5         M5     g )Nztesthdf5*.matr   rz   Tr   )
r   r   r   r   r   r   assert_raisesNotImplementedErrorr   r   )	filenamesfilenamefps      r.   
test_mat73r     s\    no.0IC	NQ(D!)'+	- 	
 r0   c                      [        [        S5      n [        R                  " 5          [        R                  " S5        [        U SS9  [        U SS9  S S S 5        g ! , (       d  f       g = f)Nztestdouble_7.1_GLNX86.materrorTr   F)r   r   warningscatch_warningssimplefilterr   )r   s    r.   test_warningsr     sK     ."=>E		 	 	"g&-. 
#	"	"s   +A
A(c                      [        5       n [        U SSS00SS9  [        U 5      S   n[        UR                  S5        [        UR
                  [        R
                  " [        5      5        [        US   S L 5        g )Ndr5   rS   r   r   rV   rG   	r   r    r   r   r   r4   r)   rx   r   )siobacks     r.   test_regression_653r    sc     )CC#qeS)3<DU#RXXf-.DIr0   c                      Sn SU -  n[         R                  " SU[        4/S9n[        [	        5       SU0SS9  SU S-   -  n[         R                  " SU[        4/S9n[        [        [        [	        5       SU0SS9  g )	N   rL   rV   r3   
longstructr   r   r5   r)   r   rx   r    r   r   
ValueErrorlimfldnamest1s      r.   test_structname_lenr    sz    
CCiG
((5'6!2 3
4CGIc*37SUmG
((5'6!2 3
4C*gwy%c3r0   c            	      |    [         R                  " SS[        4/S9n [        [        [
        [        5       SU 0SSS9  g )NrV   my_fieldnamer3   	my_structr   Tr   long_field_names)r)   r   rx   r   r  r    r   )r  s    r.   (test_4_and_long_field_names_incompatibler    s7    ~f&=%>?I*gwyy)#Nr0   c            	          Sn SU -  n[         R                  " SU[        4/S9n[        [	        5       SU0SSS9  SU S	-   -  n[         R                  " SU[        4/S9n[        [        [        [	        5       SU0SSS9  g )
N?   rL   rV   r3   r  r   Tr  r5   r  r  s      r.   test_long_field_namesr    s    
CCiG
((5'6!2 3
4CGIc*3MSUmG
((5'6!2 3
4C*gwy%c4Ir0   c            	          Sn SU -  n[         R                  " S[        S9n[         R                  " SU[        4/S9nX2S'   X2S'   [	        [        5       SU0S	S
S9  [        [        [        [        5       SU0S	SS9  g )Nr  rL   rf   r3   rV   rG   rg   r  r   Tr  F)r)   r   rx   r   r    r   r   r  )r	  r
  rT   r  s       r.   test_long_field_names_in_structr    s|     CCiG::e&)D
((5'6!2 3
4CIIGId+CN *gwy&sULr0   c                      [         R                  " S[        S9n SU S'   SU S'   [        [	        5       SU 0SS	9  [         R                  " S
[        S9n SU S'   [        [	        5       SU 0SS	9  g )Nrf   r3   HellorG   Worldrg   rw   r   r   rV   zHello, world)r)   r   rx   r    r   )cellss    r.   test_cell_with_one_thing_in_itr    sc     JJu6*EE#JE#JGIU|C0JJu6*EE#JGIU|C0r0   c                  `   [        [        5       5      n [        U R                  / 5        S/U l        [        U R                  S/5        [        U R                  S5        SU l        [        U R                  S5        [        U R
                  S5        SU l        [        U R
                  S5        g )NavarFT)r"   r   r   global_varsunicode_stringsr  )mfws    r.   test_writer_propertiesr"    s    

#C"%hCO6(+$$e,C$$d+%%u-C%%t,r0   c                  &   [        5       n [        U 5      n[        R                  " S5      nUR	                  SU05        [        U R                  5       5      nU R                  S5        U R                  S5        UR	                  SU05        [        U[        U R                  5       5      -
  S:  5        U R                  S5        U R                  S5        UR	                  SU05        [        [        U R                  5       5      U-
  S:  5        g )N
   aaaaar   aaaar1   aaaaaa)
r   r"   r)   r   put_variablesr   getvaluetruncater   r   )r   wtrr-   w_szs       r.   test_use_small_elementr-    s    
)C

C
((2,Cwn%s||~DLLOHHQKvsm$D3s||~&&*+LLOHHQKxo&C$&*+r0   c                  L   [         R                  " S//S[        4S[        4/S9n [        [        4 Ho  nU" SS/5      n[        5       n[        USU05        UR                  S5        [        U5      S   n[        UR                  R                  S	5        [        X@5        Mq     g )
Nrf   rL   br3   )rL   r5   )r/  rS   r   r   rL   r/  )r)   r   rx   r   r   r   r    r   r   r   r4   namesr	   )ab_exp	dict_typer   streamvalss        r.   test_save_dictr6  2  s     XXxj#vf(FGFK(	x*+$Avv&TZZ%%z24( )r0   c                     [         R                  " S5      n S H  n[        5       n[        USU 0US9  [	        U5      n[        US   R                  S5        [        5       n[        USU 0USS9  [	        U5      n[        US   R                  S5        [        5       n[        USU 0US	S9  [	        U5      n[        US   R                  S5        M     g )
NrA   r   onedr   )r5   rA   column)r   oned_as)rA   r5   row)r)   aranger   r    r   r   r   )r-   r   r4  r5  s       r.   test_1d_shaper=  A  s    
))A,Cf5vT&\''0 	" vT&\''/	 vT&\''/' r0   c                     [         R                  " S5      R                  S5      n SU S'   [        5       n[	        USU 05        [        UR                  5       5      n[        U5      n[        US   U 5        [        5       n[	        USU 0SS9  [        UR                  5       5      n[        U5      n[        US   U 5        [        X$:  5        U R                  5       nSUS'   [        5       n[	        XUS	.S
S9  [        U5      n[        US   U5        [        5       n[	        XUS	.SS9  [        U5      n[        US   U5        g )Nd   )rA   r   r5   )rS   r$  r-   T)do_compressionrG   )r-   arr2FrA  )r)   r   r*   r   r    r   r)  r   r	   r   copy)r-   r4  raw_lenr5  compressed_lenrA  s         r.   test_compressionrE  Z  s   
((3-


'CCIYFFU3K &//#$G6?DtE{C(YFFU3K5*+N6?DtE{C(G$%88:DDIYFFt,UC6?DtF|T*YFFt,TB6?DtF|T*r0   c            	      b    [        5       n [        U S[        R                  " S[        S905        g )NAr5   r3   )r   r    r)   r   rx   )r4  s    r.   test_single_objectrH  u  s#    YFFS!6234r0   c                      [        [        S5      n [        U SS9n[        SU;   5        [        SU;   5        [	        U SS9u  p#UR                  S5      n[        SU;   5        UR                  R                  5         g )Nztest_skip_variable.matTr   firstsecond)r   r   r   r   r   get_variablesr   r   )r   r   factoryfile_openeds       r.   test_skip_variablerO  z  sx     ^$<=H 	40AGqLHM .hNG 	h'AHMr0   c                  z   [        [        S5      n [        U SS9nUS   n[        UR                  S5        [        UR
                  [        R
                  " [        5      5        [        US   S L 5        [        5       n[        R                  " SSS	9n[        US
U05        [        U5      nUS
   n[        XT5        g )Nztest_empty_struct.matTr   rL   rV   rG   r   Ur3   r-   )r   r   r   r   r   r4   r)   rx   r   r   r   r    r	   )r   r   rL   r4  r-   a2s         r.   test_empty_structrS    s    ^$;<H 	40A	#A% "((6*+AcFdNYF
((2S
!CFU3K A	
5Brr0   c                      [        5       n [        U S0 05        [        U 5      nUS   n[        UR                  S5        [        UR
                  [        R
                  " [        5      5        [        US   S L 5        g )Nr-   rV   rG   r   )r4  r   rL   s      r.   test_save_empty_dictrU    s^    YFFUBK A	%A% "((6*+AcFdNr0   c                 r    SnU H$  n[         R                  " X:H  5      (       d  M"  Sn  O   [        U5        g)zGAssert `output` is equal to at least one element in `alternatives`
    FTN)r)   allr   )outputalternatives	one_equalr:   s       r.   assert_any_equalr[    s7     I 66&$%%I ! Ir0   c            	      	   [        [        R                  " S/5      5      n [        U R                  S5        [        U S5        [        R                  " S/SS/S9n[        R                  " S/SS/S9nX4n[        [        SSS	.5      U5        [        R                  " [        S
S9   [        [        SSSS.5      U5        S S S 5        [        [        SSSS.5      U5        [        R                  " [        S
S9   [        [        SSSS.5      U5        S S S 5         " S S5      nUnSUl
        SUl        [        [        U5      U5        [        / 5      n [        U R                  S5        [        U R                  R                  [        R                  5        [        S5      n [        U R                  S5        [        U R                  R                  [        R                  5        [        [        S 5      S L 5        [        [        S5      R                  R                  [        R                   5        [        S5      n [        U R                  S5        [        U R                  R                  [        R                  " S5      R                  R                  5        [        U S5        [        [        0 5      ["        L 5        [        [        [%        5       5      S L 5         " S S5      n[        [        U" 5       5      ["        L 5        [        SS05      S   n [        U R                  S5        [        U R                  R                  [        R&                  5        [        R                  " [        S
S9   [        [        SS05      ["        L 5        S S S 5        [        R                  " [        S
S9   [        [        SS05      ["        L 5        S S S 5        [        R                  " [        S
S9   [        [        SSS.5      [        R                  " S/S/S95        S S S 5        g ! , (       d  f       GNs= f! , (       d  f       GN1= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nr5   )r5   rf   )rL   |O8)r/  r]  r3   )rS   r5   rS   r0  Starting field name withmatchr@   )rL   r/  _c)rL   r/  r?  )rL   r/  99c                       \ rS rSrSrg) test_to_writeable.<locals>.klassi  r   N__name__
__module____qualname____firstlineno____static_attributes__r   r0   r.   klassrd        r0   rk  r   r   a stringc                       \ rS rSrSrg)test_to_writeable.<locals>.Ci  r   Nre  r   r0   r.   Crp    rl  r0   rq  rL   1_a)rr  r   rS   )r   r]  )r%   r)   r   r   r   r	   r[  pytestr   r   rL   r/  r4   r   float64r   r   r&   rx   object_)res	expected1	expected2rY  rk  crq  s          r.   test_to_writeabler|    s2   
rxx}
%CD!sA&,)EFI&,)EFI)L\qQ-0,?	o-G	H1!!&<=|L 
I \qQA"67F	o-G	H1!!&<=|L 
I  	A
AC
AC\!_l3
r
CD!,
r
CD!,L$&'j)//44bgg>
q/CB!!2!2!7!78sAL 112L"d*+  L!223
Qx
 
%CD!,	o-G	Hc!W%)::; 
I 
o-G	Hd1X&*;;< 
I 
o-G	H\qq/24&7	9 
I	Hk 
I	H
 
I	HT 
I	H 
I	H 
I	Hs<   'P-;P?:Q8Q"6.Q3-
P<?
Q
Q"
Q03
Rc                  :   SS/n [         R                  " SU S9nSUS   S'   SUS   S	'   S
US   S'   SUS   S	'   [        5       n[        USU05        [	        USS9nUS   S   n[        UR                  S5        [        UR                  S5        [	        USS9nUS   S   n[        US   S5        [        US	   S5        [        UR                  [         R                  " SS/5      5        US   R                  S   n[        US   S
5        [        US	   S5        g )N)f1f8)f2S10rt  r3   g      ?r   r~  pythonr  c   r5   znot perlr-   Fr   rG   T)r~  O)r  r  )
r)   r   r   r    r   r   r~  r  r4   flat)dtr-   r4  r   a20a21s         r.   test_recarrayr    s#   


B
((4r
"CCF4LCF4LCF4LCF4LYFFUCL!/A
E(3-C".A
E(3-CTC TH%BHHk&1&3 4 5
E(--
CTBTJ'r0   c                  N    " S S5      n U " 5       nSUl         SUl        [        5       n[        USU05        [	        USS9nUS   S   n[        UR                   S5        [        UR                  S5        [	        US	S9nUS   S   n[        US
   S5        [        US   S5        g )Nc                       \ rS rSrSrg)test_save_object.<locals>.Ci"  r   Nre  r   r0   r.   rq  r  "  rl  r0   rq  r5   rn  r{  Fr   rG   Tfield1field2)r  r  r   r    r   r   )rq  r{  r4  r   c2s        r.   test_save_objectr  !  s     	AAHAHYFFS!H/A	
3BAJ'.A	
3BHq!Hz*r0   c                     [         R                  " S5      R                  SS5      n [        5       n[	        USU 05        [        U5      nUR                  5       nUS   n[        X@5        [        USS9n[        UR                  5       S   U R                  S5      5        SUl        [        X@5        [        U[        R                  S9n[        UR                  5       S   U 5        [        U[        R                  S9n[        [        UR                  5        [        R                  Ul        [        UR                  5       S   U 5        [         R                  " S	/5      n UR!                  S
5        UR#                  S
5        [	        USU 05        [        U5      n[        UR                  5       S   U 5        [        USS9n[         R$                  " [         R                  " ['        U R)                  5       5      SS95      n[        UR                  5       S   U5        SUl        [        UR                  5       S   U 5        g )NrB   r5   rL   T
squeeze_me)rB   F)
byte_orderrn  r   )chars_as_stringsU1r3   )r)   r<  r*   r   r    r#   rL  r	   r  bocnative_codeswapped_coder   	Exceptionr  r   r*  r   
atleast_2dlistr   r  )r-   r4  rdr	back_dictrarrcarrs         r.   test_read_optsr  3  s    ))A,

q
#CYFFS#J

 C!!#IS>Dt!
D
1Cs((*3/T1BCCNt!
COO
<Cs((*3/5 C,<,<
=C)S../__CNs((*3/5
((J<
 C
OOA
KKNFS#J

 Cs((*3/5
%
8C==$sxxz"2$?@Ds((*3/6Cs((*3/5r0   c            	         [        [        S5      n [        U S5      n[        U5      nUR	                  5       nUR                  5         [        US   [        R                  " / SS95        [        5       n[        US[        R                  " S/5      05        [        U5      nUR	                  5       n[        US   [        R                  " / SS95        UR                  S5        UR                  S5        [        US[        R                  " / SS905        [        U5      nUR	                  5       n[        US   [        R                  " / SS95        UR                  5         g )Nzsingle_empty_string.matrz   rL   r  r3    r   )r   r   r   r#   rL  r   r	   r)   r   r   r    r*  r   )estring_fnamer   r  r   r4  s        r.   test_empty_stringr  V  s   .*CDM	mT	"B

CAHHJqvrxx$78 YFFS"((B4.)*

 CAqvrxx$78
OOA
KKNFS"((2T234

 CAqvrxx$78
LLNr0   c                      SS K n [        S4U R                  S44 HH  u  p[        [	        [
        U5      S5       n[        U5      n[        XR                  5        S S S 5        MJ     g ! , (       d  f       M\  = f)Nr   corrupted_zlib_data.matzcorrupted_zlib_checksum.matrz   )	zlibr  r   r   r   r   r#   r   rL  )r  excr   r   r  s        r.   test_corrupted_datar  q  se    "$=>

$ABD
%.5 $C#001 65D55s   !A((
A7	c                      [        [        [        S5      S5       n [        U SS9nUR	                  5         S S S 5        g ! , (       d  f       g = f)Nr  rz   F) verify_compressed_data_integrity)r   r   r   r#   rL  )r   r  s     r.   )test_corrupted_data_check_can_be_disabledr  z  s;    	eN$=>	ER%H 
F	E	Es	   ?
Ac            	      `   S H  n [        [        [        U 5      S5      n[        U5      nUR	                  5       nUR                  5         [        US   [        R                  " S/S//[        S95        [        US   [        R                  " SS	/S	S
//[        R                  S95        M     g )N)zbig_endian.matzlittle_endian.matrz   stringshelloworldr3   floats       @      @      @)r   r   r   r#   rL  r   r	   r)   r   rx   float32)r   r   r  r   s       r.   test_read_both_endianr    s    8%.5R 

1Y<88gY&-Y%07=?	@ 	1X;88b"X&("X%/68jjB	C 9r0   c            	         [         R                  " SS/SS//5      n [         R                  " S5      R                  S5      n[         R                  " SS/SS	9n[	        5       n[        UU R                  5       R                  U R                  R                  5       5      UR                  5       R                  UR                  R                  5       5      UR                  5       R                  UR                  R                  5       5      S
.5        [        U5      nUR                  5       n[        US   U 5        [        US   U5        [        US   U5        UR                  5         g )Nr  r  r  rB   r   r  r  rQ  r3   )r  intsuni_arrr  r  r  )r)   r   r<  r*   r   r    byteswapviewr4   newbyteorderr#   rL  r	   r   )	float_arrint_arrr  r4  r  r   s         r.   test_write_opposite_endianr    s     2r(r($ %Iiil""6*Ghh)5GYFF$$&++IOO,H,H,JK  "''(B(B(DE##%**7==+E+E+GH 
 
 CAq{I.qy'*q|W-
LLNr0   c                  R   [        [        [        S5      S5       n [        U SS9nUR	                  5       nS S S 5        [
        R                  " S/S//[
        R                  S9n[        WS   U5        [        US   R                  UR                  5        g ! , (       d  f       Nh= f)Nztestbool_8_WIN64.matrz   T	mat_dtypeFr3   r~   )r   r   r   r#   rL  r)   r   r   r	   r   r4   )fobjr  r   rw   s       r.   test_logical_arrayr    s     
eN$:;T	BdTT2 
C 	4&5'""((3Aq~q);%%qww/ 
C	Bs   B
B&c                     [        5       n [        R                  " / SQ5      n[        U SU05        U R	                  S5        [        U 5      nUR                  5         UR                  5         UR                  5       u  p4[        UR                  [        R                  5        [        UR                  S5        UR                  US5      n[        UR                  R                   [        R"                  5        g )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_arrayr4   r   uint8)r4  barrreaderhdr_vars         r.   test_logical_out_typer    s     YF88()DFXt$%
KKNF#F

##%FCU001&


U
+C*r0   c                      [        5       n [        U S[        R                  " S5      05        [	        U 5      nUS   R
                  S:X  d   eg )Nr   )r$  r   )r   r    r)   emptyr   r   )r4  r   s     r.   test_roundtrip_zero_dimensionsr    s@    YFFS'*+,AS6<<7"""r0   c                      [        5       n [        R                  " S5      R                  S5      n[	        [
        [        U SU0SS5        g )N   )rS   r@   r1   rL   Tr   )r   r)   r<  r*   r   r  r    )r4  r-   s     r.   test_mat4_3dr    s7    YF
))B-


(C*gvSz4Er0   c                     [        [        S5      n [        U S5      n[        U5      nUR	                  5       nUR                  5         [        US   [        5      (       d   e[        5       n[        U5      n[        R                  " [        SS9   [        [        UR                  U5        S S S 5        g ! , (       d  f       g = f)Nztestfunc_7.4_GLNX86.matrz   testfuncr^  r_  )r   r   r   r#   rL  r   r   r   r   r"   ru  r   r   r   r   r(  )func_egr   r  r   r4  r+  s         r.   test_func_readr    s    N$=>G	gt	B

CAHHJa
m^4444YF

 C	o-G	HmS%6%6: 
I	H	Hs   B55
Cc                     [        [        S5      n [        U S5      n[        USS9nUR	                  5       nUR                  5         [        US   R                  R                  S5        [        U S5      n[        USS9nUR	                  5       nUR                  5         [        US   R                  R                  S5        g )	Nztestmatrix_6.1_SOL2.matrz   Fr  rD   uTr   )	r   r   r   r#   rL  r   r   r4   kind)	double_egr   r  r   s       r.   test_mat_dtyper    s    n&?@I	i	B
u
-CAHHJ<&&++S1	i	B
t
,CAHHJ<&&++S1r0   c                      S[        S5      0n [        5       n[        USU 05        [        USS9n[	        US   S   S   R                  5       [        R                  " S5      5        g )Nsparsefieldr1   rL   Tr   rG   )r   r   r    r   r	   r   r)   eye)str4  r   s      r.   test_sparse_in_structr    s[     1	&BYFFSH.Aqvd|M2::<bffQiHr0   c                  f    [        5       n SSSS.0n[        X5        [        U SS9  [        U SSS9  g )	Nr  r5   rS   rj   Fr   T)r   r  )r   r    r   )r4  in_ds     r.   test_mat_struct_squeezer    s6    YF#$DFFU+FUt<r0   c                     [        5       n S//SSSS.S.n[        X5        [        U SS9n[        [	        US	   [
        5      5        [        [	        US
   [        5      5        [        [	        US   [        R                  5      5        g )N皙?zmy namer5   rS   rj   )scalarr;   r  Tr  r  r;   r  )	r   r    r   r   r   floatr   r)   r   )r4  r  out_ds      r.   test_scalar_squeezer    so    YFug9KLDFFt,EJuX./JuX,-JuT{BJJ/0r0   c                     [        5       n [        R                  " SS/5      n[        R                  " SS/5      n[        U [	        US95        [        U 5      n[        US   U5        U R                  S5        U R                  S5        UR                  SS9n[        R                  " [        R                  UR                  SUS	9n[        U [	        US95        [        US   U5        U R                  S5        U R                  S5        UR                  S
5      nUR                  S
5      n[        U SU05        [        U 5      n[        US   U5        g )Nr  FoobzFoob )rL   rL   r   F)order)r   r4   r  bufferrQ  )r   r)   r   r    r   r   r	   r*  r   tobytesr   rL   r   r4   astype)r4  in_arrout_arrrx  in_strin_from_strin_arr_u	out_arr_us           r.   test_str_roundr  	  s   YFXXw'(Fhh)*GFD6N#
&/Cs3x)
OOA
KKN^^#^&F**177#)<<#&$*,K FD;'(s3x)
OOA
KKN}}S!Hs#IFS(O$
&/Cs3x+r0   c                      [        5       n [        U SSSS.05        [        U 5      nUS   R                  R                  n[        [        U5      SS15        g )NrL   r5   rS   r0  r/  )r   r    r   r4   r1  r   set)r4  rx  field_namess      r.   test_fieldnamesr  &  sK    YFFSqa.)*
&/Cc(..&&K[!C:.r0   c                  T   / SQn [        [        S5      / 4[        [        S5      U 44 GH{  u  p[        U5      n[        [	        UR                  5       5      [	        SS/U-   5      5        [        USS9n[        [	        UR                  5       5      [	        S/U-   5      5        [        US/S9n[        [	        UR                  5       5      [	        S/U-   5      5        [        US/S9n[        [	        UR                  5       5      [	        S/U-   5      5        [        USS9n[        [	        UR                  5       5      [	        S/U-   5      5        [        U/ S9n[        [	        UR                  5       5      [	        U5      5        S/n[        XS9n[        US/5        GM~     g )N)__globals__
__header____version__ztestmulti_4.2c_SOL2.matztestmulti_7.4_GLNX86.matrL   rK   )variable_names)rK   )r   r   r   r   r  keys)mat5_sys_nameseg_filesys_v_namesvarsvnamess        r.   test_loadmat_varnamesr  /  sn   %N 
~8	92>6B89GAI!J wS%sC>K+G'HIws3S%sC5;+>'?@wu5S%sC5;+>'?@wy9S%sG9{+B'CDwz:S%sG9{+B'CDwr2S%s;'78w6VgY'#!Jr0   c                  D   [         R                  " S5      n [        5       nS Hz  nUR                  S5        UR	                  S5        [        USU R                  U5      05        [        U5      n[        [         R                  " U5      US   R                  5        M|     g )Nr$  )r  f4i8i4i2i1u8u4u2u1c16c8r   r-   )
r)   r<  r   r*  r   r    r  r   r   r4   )r-   r4  dtsr  s       r.   test_round_typesr  H  su    
))B-CYF0A

301vRXXc]DK$5$560r0   c                    ^	 S[        [        R                  " S5      5      4S[        S5      4S[        S5      44m	 " U	4S jS5      n [        5       n[	        X" 5       5        [        U5      n[        [        U5      S5        [        S5       H4  nX#   u  pET	U   u  pg[        XF5        [        U5      n[        X   U5        M6     g )	Nr-   r$  mystrrn  mynumc                   "   > \ rS rSrU 4S jrSrg) test_varmats_from_mat.<locals>.Ci\  c                    > T$ r   r   self
names_varss    r.   r   &test_varmats_from_mat.<locals>.C.items]  	    r0   r   Nrf  rg  rh  ri  r   rj  r(  s   r.   rq  r$  \      	 	r0   rq  r@   )r/   r)   r<  r   r    r$   r   r   ranger   r	   )
rq  r4  varmatsr   r8   
var_streamexp_nameexp_resrx  r(  s
            @r.   test_varmats_from_matr3  U  s    %		"./E*-.E"I&(J
  YFFACv&GWq!1X":&qMT$j!39g. r0   c                      [        [        S5      n [        U S5      n[        U5      nUR	                  5       nUR                  5         [        US   R                  S5        g )Nzone_by_zero_char.matrz   r  rm  )r   r   r   r#   rL  r   r   r   )r  r   r  r   s       r.   test_one_by_zeror5  k  sN    N$:;G	gt	B

CAHHJ5&r0   c                  ^    [        [        S5      n [        U 5      n[        US   SS//5        g )Nztest_mat4_le_floats.matrL   r  g333333?)r   r   r   r	   )
mat4_fnamer  s     r.   test_load_mat4_ler8  u  s/     ~'@AJ:DtCyC:,/r0   c                  n    [        5       n SS0n[        XSS9  [        U 5      n[        US   US   5        g )N
second_catu   Schrödingerr   r   )r   r    r   r   )bior  var_backs      r.   test_unicode_mat4r=  }  s:    
)C
(CCS!s|H,'\):;r0   c            	      F   [        [        S5      n [        U SSS9nUS   n[        [	        U5      =(       a    UR
                  S:H  5        [        UR                  R                  [        R                  5        [        UR                  5       / SQ/ SQ/ SQ/ S	Q/ S	Q/5        g )
Nzlogical_sparse.matTFr   
sp_log_5_4csc)TTTF)FFTF)FFFF)r   r   r   r   r   r   r   r4   r   r)   r   r	   r   )r   r   log_sps      r.   test_logical_sparserB    s     ^$89H 	4%@A|_FHV7%!78""BHH-v~~'13344	67r0   c                     [        5       n SS KnUR                  R                  SS/SS//5      n[	        U [        US95        U R                  S5        [        U SS9n[        US   [        5      (       d   e[        U SS9nUR                  R                  US   5      (       a  [        US   [        5      (       a   e[        R                  " SS9   [        U 5      nUR                  R                  US   5      (       a  [        US   [        5      (       a   e S S S 5        [        US   R                  UR                  5        [        US   R                  5       S5        U R                  S5        [!        U 5      nUR#                  5         UR%                  5         UR'                  5       u  pV[)        UR*                  S	5        g ! , (       d  f       N= f)
Nr   r   F)r   rw   TzThe default value for `spmatrixr_  r5   )r   scipy.sparserE   	csr_arrayr    r   r   r   r   r   r   ru  deprecated_callr	   r   r   r#   r  r  r  r   nzmax)r   scipyempty_sparserx  r  r  r  s          r.   test_empty_sparserJ    s|   
)C<<))Aa5!A-8LC%&HHQK
#
&Cc#h((((
#
%C<<  S**:c#h3P3PPP			&G	Hcl||$$SX..z#c(G7T7TTT7T 
I s3x~~|'9'9:s3x'')1- HHQKC F

##%FCA 
I	Hs   A	G


Gc                  B    [        5       n [        [        [        U 5        g r   )r   r   r   r   )r   s    r.   test_empty_mat_errorrL    s    
)C,-r0   c                     [        [        S5      n [        U 5      n[        US   [        R
                  " S5      S S S 24   5        [        [        S5      n [        [        5         [        U 5        S S S 5        g ! , (       d  f       g = f)Nzmiuint32_for_miint32.matan_arrayr$  zbad_miuint32.mat)r   r   r   r   r)   r<  r   r  r   rx  s     r.   test_miuint32_compromiserP    sc     ^%?@H
(
CZ"))B-a"89^%78H	z	" 
#	"	"s   %A::
Bc                      [        [        S5      n [        U 5      n[        US   S//5        [        [        S5      n [	        [
        5         [        U 5        S S S 5        g ! , (       d  f       g = f)Nzmiutf8_array_name.mat
array_namer5   zbad_miutf8_array_name.mat)r   r   r   r   r   r  rO  s     r.   !test_miutf8_for_miint8_compromiserS    sU    ^%<=H
(
C\"aSE*^%@AH	z	" 
#	"	"s   A!!
A/c                  x    [        [        S5      n [        U 5      n[        US   SR	                  SS5      5        g )Nzbroken_utf8.mat
bad_strings    am brokenutf8replace)r   r   r   r   decoderO  s     r.   test_bad_utf8rY    s8    ^$56H
(
C\""))&)<>r0   c                 z    [         R                  R                  [        U 5      S5      nSSSS.0n[	        X5        g )Ntest.matrL   r5   test_str)r/  r{  )r   pathr   r   r    )r   r   	test_dicts      r.   test_save_unicode_fieldr_    s1    ww||CK4H!
+,IH r0   c                      " S S5      nU" 5       n[         R                  R                  [        U 5      S5      n[	        USU05        [        U5      n[        US   [        R                  " U5      5        g )Nc                       \ rS rSrSS jrSrg)0test_save_custom_array_type.<locals>.CustomArrayi  Nc                 N    [         R                  " S5      R                  SS5      $ )Ng      @rS   r@   )r)   r<  r*   )r'  r4   rB  s      r.   	__array__:test_save_custom_array_type.<locals>.CustomArray.__array__  s    99S>))!Q//r0   r   )NN)rf  rg  rh  ri  rd  rj  r   r0   r.   CustomArrayrb    s    	0r0   rf  r[  rL   )	r   r]  r   r   r    r   r	   r)   r   )r   rf  rL   r   outs        r.   test_save_custom_array_typerh    s[    0 0 	Aww||CK4HHsAh
(
Cs3x!-r0   c                  X    [        [        [        S5        [        [        [        S5        g )NzNotExistentFile00.matNotExistentFile00)r   OSErrorr   r   r0   r.   test_filenotfoundrl    s    '7$;<'7$78r0   c                      [        [        S5      n [        U SS9n[        U SS9n[        [	        US   [
        5      5        [        [	        US   [        R                  5      5        [        US   S   [        R                  " / SQ5      5        g )Nztestsimplecell.matTsimplify_cellsFsmycell)rL   r/  r{  )
r   r   r   r   r   r   r)   r   r	   r   )r   res1res2s      r.   test_simplify_cellsrt    sm    ^%9:H8D1D8E2DJtCy$'(JtCy"**-.tCy*BHH_,EFr0   zversion, filt, regex))r   z_4*_*N)r5   z_5*_*N)r5   z_6*_*N)r5   _7*_*z^((?!hdf5).)*$)rS   ru  z.*hdf5.*)r5   z8*_*Nc                    [        [        SU S35      n[        U5      nUb+  U Vs/ s H  n[        R                  " X%5      c  M  UPM      nn[        U5      S:  d   SU  SU 35       eU H  n[        U5      nUS   U :X  a  M   e   g s  snf )Nztest*z.matr   zNo files for version r   )r   r   r   rer`  r   r   )ru   r   regexr   r   filegot_versions          r.   test_matfile_versionr{    s     ^uTF$%78HNE"'M%$288E+@%Mu:> >
ytf=>>%d+1~(((  Ns   B
B
c                      [        [        [        S5      5      n [        U S   [        5      (       d   e[        U S   R                  5       S   R                  5       S   [        5      (       d   eg)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    s_    589Dd:&7777d:&++-a0557:LIIIIr0   c                  h    [        [        [        S5      SS9n [        U S   [        5      (       d   eg)zETest that we can read a MatlabOpaque object when simplify_cells=True.r}  Trn  r~  N)r   r   r   r   r   r  s    r.   test_opaque_simplifyr    s-    58NDd:&7777r0   c                  :   [        [        [        S5      5      n SU ;   d   e[        U S   [        5      (       d   eU S   S   S   S:X  d   eU S   S   S   S:X  d   eU S   S   S   R
                  [        R                  :X  d   eS	U ;   d   e[        U S	   [        5      (       d   eU S	   S   S   S:X  d   eU S	   S   S   S:X  d   eU S	   S   S   R
                  [        R                  :X  d   eU S   S   S   S
   S:X  d   eU S	   S   S   S
   S:X  d   eg)zBTest that we can read multiple MatlabOpaque objects from same fileztestmatlabstring_7_WIN64.mat
matstring1r   _Classr;   _TypeSystemMCOS_ObjectMetadata
matstring2r1   r   r5   rS   N)r   r   r   r   r   r4   r)   uint32r  s    r.   test_matlab_string_opaquer    sl   5)GHID4d<(,7777a *h666a /6999a !2399RYYFFF4d<(,7777a *h666a /6999a !2399RYYFFF a !23D9Q>>>a !23D9Q>>>r0   c                     [        5       n [        R                  " S[        R                  S9nSUS   S'   SUS   S'   [        R
                  " / SQ/[        R                  S9US   S	'   [        U5      n[        U S
U05        U R                  S5        [        U 5      nS
U;   d   e[        US
   [        5      (       d   eUS
   S   S   S:X  d   eUS
   S   S   S:X  d   eUS
   S   S	   R                  [        R                  :X  d   eg)z,Test that we can write a MatlabOpaque objectrV   r3   r;   rG   r  r  r  )      : rS   r5   r5   r5   r5   r  r  r   N)r   r)   r  r  OPAQUE_DTYPEr   r  r   r    r   r   r   r4   )r4  r-   r'   s      r.   test_write_matlab_opaquer  2  s   YF
((6!3!3
4C"CIh%CIm#%88-H,I24))$=CI 
s
CF\3'(
KKN6?D4d<(,7777a *h666a /6999a !2399RYYFFFr0   c                      Sn [        5       n[        USU 05        UR                  S5        [        U5      nSU;   d   eg)z7Test that we can write function workspace to a MAT-filez6This is not the actual workspace contents. Just a test__function_workspace__r   N)r   r    r   r   )	workspacer4  r'   s      r.   test_write_function_workspacer  F  sC     IIYFF-y9:
KKN6?D#t+++r0   c                     S n [        5       n[        X" S5      U " S5      S.5        UR                  S5        [        U5      nS H  u  p4X2;   d   e[	        X#   [
        5      (       d   eX#   S   S   S:X  d   eX#   S   S	   S
:X  d   eX#   S   S   R                  [        R                  :X  d   eX#   S   S   S   U:X  a  M   e   g)zCRound-trip two MatlabOpaque objects with distinct IDs in one mdict.c                     [         R                  " S[        R                  S9nSUS   S'   SUS   S'   [         R                  " S/S	/S
/S
/U /S
//[         R
                  S9US   S'   [        U5      $ )NrV   r3   r;   rG   r  r  r  r  rS   r5   r  )r)   r  r  r  r   r  r   )obj_idr-   s     r.   make_opaque6test_write_multiple_matlab_opaque.<locals>.make_opaqueS  sz    hhvU%7%78&D	(#)D	- ')xx\A3aS6(QC8		(KD	#$C  r0   r5   rS   )r  r  r   ))r  r5   )r  rS   r  r;   r  r  r  r  N)	r   r    r   r   r   r   r4   r)   r  )r  r4  r'   r8   expected_ids        r.   !test_write_multiple_matlab_opaquer  Q  s    ! YFF;q>#.q>3 4
KKN6?DC||$*l3333z!}X&(222z!}]+v555z!}./55BBBz!}./5DDD Dr0   c                     [        [        5         [        R                  R                  R
                  R                    SSS5        [        [        5         SSKJn   SSS5        g! , (       d  f       N-= f! , (       d  f       g= f)z4Test that access to previous attributes still works.Nr   r   )	assert_warnsDeprecationWarningrH  iomatlabmio5_paramsr   scipy.io.matlab.miobaser   r  s    r.   test_deprecationr  i  sQ     
(	)##00 
* 
(	)8 
*	)	 
*	) 
*	)s   /A&A7&
A47
Bc                 "   [         R                  R                  S5      nU S-  nUR                  S5      nUR                  S5      nX4/n[        USU0SSS9  0 n[	        UU5        [        US   S   S   U5        [        US   S   S	   U5        g )
Ni90  z	lists.mat)rA   r@   )rB   r@   r'   T)r  r@  r   r5   )r)   randomdefault_rngr    r   r   )tmp_pathrngoutfile	array_one	array_twolist_of_arraysnew_dicts          r.   test_gh_17992r  t  s    
))


&C$G

5!I

5!I+NG^$!!
 HGHV$Q'*I6HV$Q'*I6r0   c                     [         R                  " [        S5      [        S5      /SS9[         R                  " SS/5      S.nU S-  n[        X!SS9  g )	Nr=   r  r3   r;   )
char_arraystring_arrayztmp.matr   r   )r)   r   r  r    )r  r   r  s      r.   test_gh_19659r    sK    hhVd6l;4H(H!56	
A "GGs#r0   c                      [        [        S5      n [        R                  [        R                  :X  a  SOSn[
        R                  " [        US9   [        U 5        S S S 5        g ! , (       d  f       g = f)Nzdebigged_m4.matz$Not enough bytes to read matrix 'a';z9Variable 'a' has byte length longer than largest possibler_  )	r   r   r)   intpint64ru  r   r  r   )truncated_matr`  s     r.   test_large_m4r    sR     .*;<M288# 4H 
 
z	/ 
0	/	/s   A%%
A3c                      SSK Jn   g )Nr   r$   )scipy.io.matlabr$   r  s    r.   test_gh_19223r    s    0r0   c                      S[        [        R                  " S5      5      4S[        S5      44n [        U 5        SSSS.44n [        U 5        SSSS	.44n [        U 5        g )
N_1r$  r!  rn  mymapr5   rS   )rL   _b)rL   1a)r/   r)   r<  check_mat_write_warningr,  s    r.   test_invalid_field_name_warningr    si    	uRYYr]#$	%
#$&J J'!1-.0JJ'!1-.0JJ'r0   c                    ^   " U 4S jS5      n[        5       n[        R                  " [        SS9   [	        X!" 5       5        S S S 5        g ! , (       d  f       g = f)Nc                   "   > \ rS rSrU 4S jrSrg)"check_mat_write_warning.<locals>.Ci  c                    > T$ r   r   r&  s    r.   r   (check_mat_write_warning.<locals>.C.items  r*  r0   r   Nr+  r,  s   r.   rq  r    r-  r0   rq  r^  r_  )r   ru  r   r   r    )r(  rq  r4  s   `  r.   r  r    s>      YF	o-G	H 
I	H	Hs   A
Ac                  :   S H<  n [         R                  " [        SS9   [        [	        SU -  5      5        S S S 5        M>     [         R                  " [        SS9   [        [	        S5      5        S S S 5        g ! , (       d  f       M  = f! , (       d  f       g = f)N)rS   r1   r$     z Mat file appears to be truncatedr_      zMat file appears to be corrupts                       )ru  r   r   r   r   ns    r.   test_corrupt_filesr    s}    ]]<!CEGGaK()E E  
|=
?%&
? 
?E E
? 
?s   A:B:
B		
B)ztest%(name)s_*.mat)r   collectionsr   os.pathr   r   r   r   r  r   rw  tempfiler   r   r   r   numpy.testingr	   r
   r   r   r   ru  r   r   r   r  numpyr)   r   rD  r   r   r   r   r   scipy.iorH  r  r   r   r   scipy.io.matlab._byteordercodesr  _byteordercodesr  scipy.io.matlab._miobaser   r   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  __file__r   markthread_unsafe
pytestmarkr/   pir<  r  r*   rK   r   appendcossinr   rG  r  r.  r  r>   Brx   CAr   CAEr  objarr	transposesqrtexp
st_sub_arrr4   r  CNr  st2rL   ODTMOm0r   fp_u_strreadrX  u_strr   r   repeatr   r   r   r   r   r   parametrizer   r   r   r   r   r   r   r  r  r  r  r  r  r"  r-  r6  r=  rE  rH  rO  rS  rU  r[  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r3  r5  r8  r=  rB  rJ  rL  rP  rS  rY  r_  rh  rl  rt  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  s   0r.   <module>r     s   	 # *   	    C C  A   K K  F F - -H H N N  - , wx(&1[[&&
 	a		!%(00155x(&
   v&FGHJ   )BFF5M1A!AB
 HHUOE!AJ!	eAaj	!A#   x("
   x(	!-
 HHW #"   $h/%y|4
   "2 q)
   h'uRy)
   'u. 
qc
!ugwi	 "(	) *12	 
 GHJ3 V$b!#$ 	!H	!H	"I	"I	!H
 
 %WQr]  
%f	%Ahs   !6*"F+
    &)!3')*   "F+#U&! "   *BLLDq,=w!GHJ BGGAJrvvay/0881=
LMLVLMhhue!= >?M 3 $M 3 %0N C    x($
 XXe6"
(3
((5
'3Qbhh'3qcU"((+3xxV,3!288,3S !288,3S    ( "%
 	hhu.A.Q[.AB(C((5'6):(;<C %zl 3C W    !8,"C(
 HHU?1v;?@a#ua#uzl##uzl##u    (+!1%
 	hh343 !"F34 5 "((5,h7WC5\6
234;C5\6
a9a9a9   x(#
 n&9:DAw'     'ug/
   x(	!-
   $h/%y|4
   i($%)*, Q   "H-#RYYr1%5%=%=a%BCEF (JV8"3-, J/$ 0$
 J/  0  3*cUO+ 2	248:
/		3N	IL"1-,()02+65
< &B9J(6+$ 6F62C*0+"#F;2I=1,:/(2
7/,'0<7*8.	>!.9G / 2 	)	)J8?(G(,E097$$ 1
('_) 	N. B @4s   d.8d3
1d8
&d=