
    5[g
                        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j                  dz   ej                  deE      j                  dd      z  ZGdddideGidgZHeHj                  dddid edg      id       eHj                  dddid ej                  eG      d ej                  eG      z  z   id        ej                  d       ZM eN eOdd!            eMd<    eN eOdd            eMdddf<   eHj                  d"d#did#eMid       eHj                  d$d%d$id% e j                  eM      id       eMj                  eR      ZSeSd&xx   dz  cc<   eHj                  d'd(d$id( e j                  eS      id       eHj                  d)ddd*eGeMd*d       eHj                  d+d,did, eBd-      id       eHj                  d.d/did/ ed0g      id        eBg  eBdg       eBdd1gg       eBg d2g      feT      j                  dd-      ZU ed3g      eUd&<   d4d5d4id5eUidgZV eB eBd       eBd1       eBg        eBg        eBd6      feT      j                  dd-      ZW ej                  d7eT      ZY eBd      eYd&<   eVj                  d8d9d4id9eYid       eVj                  d:d;d4id;eWid       eVj                  d<d=did= eg d>      id       eVj                  d?d@did@ ej                   ej                   eN eOddA            dB            id        e ej                  d1       ej                  d      ej                  g      j                  dd6      Z]dCD  cg c]  } | eTf c} Z^ ej                  d7e^      Z_ edDg      e_dE   d&<   e]e_dF   d&<   e]dGz  e_dH   d&<   eVj                  dIdJdIidJe_id        ej                  dKeT      Z` eBd      e`d&<    ej                  dLeT      e`dM<    eBd1ej                        e`dM   d&<    eBd6ggej                        e`dM   dM<    ej                  dKeT      e`dM   dN<    eBdej                        e`dM   dN   d&<    eBdOej                        e`dM   dN   dM<   eVj                  dPdQd4idQe`id        ej                  d7dRD  cg c]  } | eTf c}       Zb eBd      ebd&   dS<    ej                  d7dTeTfg      ebd&   dU<    edVg      ebd&   dU   d&   dT<   eVj                  dWdXdIidXebid        ej                  dKdRD  cg c]  } | eTf c}       Zc eBd      ecd&   dS<    eBd1      ecd&   dU<    edYg      ecdM   dS<    edZg      ecdM   dU<   eVj                  d[d\dIid\ecid        ej                  d]D  cg c]  } | eTf c}       Zd e& ej                  d7ed      d^      Zeeed&   Zf ed_g      efd`<    edag      efdb<    ed_g      efdc<    eBd      efdd<    eBd      efde<    eBd      efdf<   eVj                  dgdhdgidheeid        eg eeAdi      dj      Zhehj                         j                  dk      Zkehj                          eVj                  dldmdidm eekg      id       eVj                  d$d%d$id% e j                  eM      id       eVj                  d'd(d$id( e j                  eS      id       eVj                  dndodpido edqgdrgg      id       eVdd Zmemj                  dsdtdgidt ej                  eed1      j                  dd1      id       du Zodv Zpdw Zqdx Zrdy ZsddzZtej                  j                  dfd{      d|        Zwej                  j                  dfd{      d}        Zxej                  j                  d~dddg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j                  j                  dg d      d        Zd Zd Zd Zd Zd Zyc c} w c c} w c c} w c c} w )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      Y/var/www/html/bid-api/venv/lib/python3.12/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   )stringfielddoublefieldcomplexfieldzRats live on no evil star.r\   r]   y      ?      ?r^   struct
teststructr0   rN   )r0   r;   r   r0   )r   rN   r<   cellnesttestcellnestonetworf   rX   rg   znumber 3
structnestteststructnestznumber 1znumber 2	structarrteststructarr)expr	inputExprr&   isEmptynumArgsversioninlinexrl   z x = INLINE_INPUTS_{1};rm   r&   rn   ro   rp   object
testobjectzjapanese_utf8.txtrbzutf-8unicodetestunicodebool	testboolslogicalTFobjectarraytestobjectarrayc                 *   t        |       }t        |      }||u ry|t        j                  u r*| j                  dk(  rt        | j	                               |u S |t        j                  u r*|j                  dk(  rt        |j	                               |u S y)zkCheck if types are same or compatible.

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

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

tzzR/DIIK E))r+   c           	         t        j                  |      rJt        t        j                  |             t        |j	                         |j	                         | d       yt        t        ||      dt        |       dt        |       d|         t        |t        j                  t        j                  t        f      st        ||       yt        |j                  |j                  k(  d|j                   d|j                   d|         |j                  }|j                  r[t        |t              r t        |j                   |j                          t#        |      D ]  \  }}d	| |fz  }t%        ||||           y|j&                  r-|j&                  D ]  }|  d
| d}t%        |||   ||           y|j                  t(        t        j*                  t        j,                  fv rt        |||        yt        ||| d       y)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      s   	{{8F#$!&.."2"*"2"2"4*/*+	- 	Xv.T(^,F4<.UGLN hww

L9;Xv&HNNfll*!(..!1~T%QS~~Hh-++V-=-=>x(EAr&%3Kb&)4 ) 	//B"G8B4r2K!"vbz3 " 	}}# # 	VXu5fhqIr+   c                     |D ]W  }t        |d      }d|  d| }|j                         D ]-  \  }}| d| }t        ||v d|z         t        ||||          / Y y )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   (  sr    	)d;vWYK0::<KAx{1#.GAL"5"?@(GAJ7 ( r+   c           
         |D ]|  }d|  d| }t        |      }|j                         D cg c]  \  }}||j                  ||   f }	}}|j                          |	j                          t	        ||	| d|d|	       ~ y c c}}w )Nr   r   z: z != )r   r   r%   sortr   )
r3   r   r   r4   r   r   whosr   r5   expected_whoss
             r)   _whos_check_caser   2  s    	vWYK0y! @Dzz|M?K8Q
+| 	 M 			T=wb],=>	 
Ms   Bc                 r    t               }t        |||       |j                  d       t        | |g|       y )Nformatr   )r   r   seekr   )r3   r5   r   
mat_streams       r)   _rt_check_caser   C  s/    JJ0OOATJ<2r+   c              #   "  K   | dk(  rt         }n| dk(  rt        }n| dk(  sJ t        }|D ]a  }|d   }|d   }|d }nCt        t        |t        |      z        }t        |      }t        |      dkD  sJ d| d	|        |d
   }||||f c y w)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)	rp   filtcasesr   r3   r5   r   use_filtr4   s	            r)   _casesr   K  s     #~	C&   F|
#<E^TDdO-CDHNEu:> @$TF.?@>y/E8W,, s   BBr   r   c                 :    t        |       D ]  }t        |d d    y )Nr;   )r   r   rp   r   s     r)   	test_loadr   a  s    w$r(#  r+   c                 4    t        |       D ]
  }t        |   y N)r   r   r   s     r)   	test_whosr   g  s    w$  r+   zversion, fmtsr   r   r   c                 \    t        | d       D ]  }|D ]  }t        |d   |d   |         y )N)r   r   rN   )r   r   )rp   fmtsr   fmts       r)   test_round_tripr   n  s3    
 wT*C47DGS1  +r+   c                  L   t        j                  d      } d| d<   d| d<   t        j                  |       }d}d|i}d}t	               }	 t        ||      }t        j                  |d	
      }t        |||       |j                          t        j                  |d
      }t        |d      }|j                          t        j                  |       t        |d   j                         |d   j                         t        |             y # t        j                  |       w xY w)N)   r   gffffff@rN   r;   g      @)r,   r<   	gzip_testrr   r   wb)moder   ru   Tr   r   )r$   zerosr   
csc_matrixr   r   gzipopenr   closer   shutilrmtreer
   r   repr)	xdenserr   r3   r5   r   tmpdirfnamer   r   s	            r)   test_gzip_simpler   x  s    XXgFF3KF3K
fADAwHFYF
fT"YYu40

HV4YYu40
d;ffSk113&sm335&*6l4 	fs   A5D D#c                  J   t               } 	 t        t        j                  d            }t	        | d      }t        ||       t        j                  |       t        ||       t        |       t        j                  |       t        |d      }t        ||       |j                  d       |j                          t        |d      }t        |       |j                  d       |j                          t        j                  |        y # t        j                  |        w xY w)N)rN   rN   rr   za.matr   r   ru   )r   r   r$   r   r   r   osunlinkr   r   r   r   r   r   )r   rr   r   fs       r)   test_multiple_openr     s    YF288F#$fg& 	q
		%q
		% 1	q			
	q			ffs   C)D D"c                      t        t        t        d            } t        t	        |       dkD         | D ]5  }t        |d      }t        t        t        |d       |j                          7 y )Nztesthdf5*.matr   ru   Tr   )
r   r   r   r   r   r   assert_raisesNotImplementedErrorr   r   )	filenamesfilenamefps      r)   
test_mat73r     s\    no.0IC	NQ(D!)'+	- 	
 r+   c                      t        t        d      } t        j                         5  t        j                  d       t        | d       t        | d       d d d        y # 1 sw Y   y xY w)Nztestdouble_7.1_GLNX86.materrorTr   F)r   r   warningscatch_warningssimplefilterr   )r   s    r)   test_warningsr     sK     ."=>E		 	 	"g&-. 
#	"	"s   0AA'c                      t               } t        | dddiid       t        |       d   }t        |j                  d       t        |j
                  t        j
                  t                     t        |d   d u        y )Ndr0   rN   r   r   rQ   rB   	r   r   r   r   r%   r/   r$   rs   r   )siobacks     r)   test_regression_653r     sc     )CC#qeS)3<DU#RXXf-.DIr+   c                     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       y )	N   rG   rQ   r.   
longstructr   r   r0   r$   r   rs   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3r+   c                      t        j                  ddt        fg      } t        t        t
        t               d| idd       y )NrQ   my_fieldnamer.   	my_structr   Tr   long_field_names)r$   r   rs   r   r  r   r   )r
  s    r)   (test_4_and_long_field_names_incompatibler    s7    ~f&=%>?I*gwyy)#Nr+   c                     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       y )
N?   rG   rQ   r.   r   r   Tr  r0   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r+   c                     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       y )Nr  rG   ra   r.   rQ   rB   rb   r   r   Tr  F)r$   r   rs   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
4CDIDIGId+CN *gwy&sU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	       y )Nra   r.   HellorB   Worldrb   rr   r   r   rQ   zHello, world)r$   r   rs   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0r+   c                  `   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       y )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      }|j	                  d|i       t        | j                               }| j                  d       | j                  d       |j	                  d|i       t        |t        | j                               z
  dkD         | j                  d       | j                  d       |j	                  d|i       t        t        | j                               |z
  dk         y )N
   aaaaar   aaaar,   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$&*+r+   c                  N   t        j                  dggdt        fdt        fg      } t        t        fD ]o  } |ddg      }t               }t        |d|i       |j                  d       t        |      d   }t        |j                  j                  d	       t        ||        q y )
Nra   rG   br.   )rG   r0   )r*  rN   r   r   rG   r*  )r$   r   rs   r   r   r   r   r   r   r   r/   namesr	   )ab_exp	dict_typer   streamvalss        r)   test_save_dictr1  8  s     XXxj#vf(FGFK(	x*+$Avv&TZZ%%z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        y )
Nr<   r   onedr   )r0   r<   column)r   oned_as)r<   r0   row)r$   aranger   r   r   r   r%   )r(   r   r/  r0  s       r)   test_1d_shaper8  G  s    
))A,Cf5vT&\''0 	" vT&\''/	 vT&\''/' r+   c                     t        j                  d      j                  d      } d| d<   t               }t	        |d| i       t        |j                               }t        |      }t        |d   |        t               }t	        |d| id       t        |j                               }t        |      }t        |d   |        t        ||kD         | j                         }d|d<   t               }t	        || |d	d
       t        |      }t        |d   |       t               }t	        || |d	d       t        |      }t        |d   |       y )Nd   )r<   r   r0   )rN   r  r(   T)do_compressionrB   )r(   arr2Fr<  )r$   r   reshaper   r   r   r$  r   r	   r   copy)r(   r/  raw_lenr0  compressed_lenr<  s         r)   test_compressionrA  `  s   
((3-


'CCIYFFU3K &//#$G6?DtE{C(YFFU3K5*+N6?DtE{C(Gn$%88:DDIYFF3t,UC6?DtF|T*YFF3t,TB6?DtF|T*r+   c                  f    t               } t        | dt        j                  dt              i       y )NAr0   r.   )r   r   r$   r   rs   )r/  s    r)   test_single_objectrD  {  s#    YFFS!6234r+   c                     t        t        d      } t        | d      }t        d|v        t        d|v        t	        | d      \  }}|j                  d      }t        d|v        |j                  j                          y )Nztest_skip_variable.matTr   firstsecond)r   r   r   r   r   get_variablesr   r   )r   r   factoryfile_openeds       r)   test_skip_variablerK    sz     ^$<=H 	40AGqLHM .h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        ||       y )Nztest_empty_struct.matTr   rG   rQ   rB   r~   Ur.   r(   )r   r   r   r   r%   r/   r$   rs   r   r   r   r   r	   )r   r   rG   r/  r(   a2s         r)   test_empty_structrO    s    ^$;<H 	40A	#A% "((6*+AcFdNYF
((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        y )Nr(   rQ   rB   r   )r/  r   rG   s      r)   test_save_empty_dictrQ    s^    YFFUBK A	%A% "((6*+AcFdNr+   c                 d    d}|D ]  }t        j                  | |k(        sd} n t        |       y)zH Assert `output` is equal to at least one element in `alternatives`
    FTN)r$   allr   )outputalternatives	one_equalr5   s       r)   assert_any_equalrW    s6     I 66&H$%I ! 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             y )Nr0   )r0   ra   )rG   |O8)r*  rY  r.   )rN   r0   rN   r+  r;   )rG   r*  _c)rG   r*  r:  )rG   r*  99c                       e Zd Zy) test_to_writeable.<locals>.klassN__name__
__module____qualname__r~   r+   r)   klassr]        r+   rb  r   r~   a stringc                       e Zd Zy)test_to_writeable.<locals>.CNr^  r~   r+   r)   Crg    rc  r+   rh  rG   1_a)ri  r   rN   )r   rY  )r   r$   r   r   r%   r	   rW  rG   r*  r/   r   float64r   r   r    rs   object_)res	expected1	expected2rU  rb  crh  s          r)   test_to_writeablerr    s   
rxx}
%CD!sA&,)EFI&,)EFIy)L\qQ-0,?\qQQ"78,G\qQA"67F\qQQ"78,G  	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!,L#a!%667L$q"&77811o.4&79r+   c                  H   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       y )N)f1f8)f2S10rk  r.   g      ?r   rt  pythonrv  c   r0   znot perlr(   Fr   rB   T)rt  O)rv  rz  )
r$   r   r   r   r   r   rt  rv  r/   flat)dtr(   r/  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'r+   c                  Z    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       y )Nc                       e Zd Zy)test_save_object.<locals>.CNr^  r~   r+   r)   rh  r  "  rc  r+   rh  r0   re  rq  Fr   rB   Tfield1field2)r  r  r   r   r   r   )rh  rq  r/  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*r+   c                     t        j                  d      j                  dd      } t               }t	        |d| i       t        |      }|j                         }|d   }t        ||        t        |d      }t        |j                         d   | j                  d             d|_        t        ||        t        |t        j                        }t        |j                         d   |        t        |t        j                        }t        t        |j                         t        j                  |_        t        |j                         d   |        t        j                  d	g      } |j!                  d
       |j#                  d
       t	        |d| i       t        |      }t        |j                         d   |        t        |d      }t        j$                  t        j                  t'        | j)                               d            }t        |j                         d   |       d|_        t        |j                         d   |        y )Nr=   r0   rG   T
squeeze_me)r=   F)
byte_orderre  r   )chars_as_stringsU1r.   )r$   r7  r=  r   r   r   rH  r	   r  bocnative_codeswapped_coder   	Exceptionr  r   r%  r   
atleast_2dlistr   r  )r(   r/  rdr	back_dictrarrcarrs         r)   test_read_optsr  3  s    ))A,

q
#CYFFS#J

 C!!#IS>DtS!
D
1Cs((*3/T1BCCNtS!
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/5r+   c                     t        t        d      } t        | d      }t        |      }|j	                         }|j                          t        |d   t        j                  g d             t               }t        |dt        j                  dg      i       t        |      }|j	                         }t        |d   t        j                  g d             |j                  d       |j                  d       t        |dt        j                  g d      i       t        |      }|j	                         }t        |d   t        j                  g d             |j                          y )Nzsingle_empty_string.matru   rG   r  r.    r   )r   r   r   r   rH  r   r	   r$   r   r   r   r%  r   )estring_fnamer   r  r   r/  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
LLNr+   c                      dd l } t        df| j                  dffD ]I  \  }}t        t	        t
        |      d      5 }t        |      }t        ||j                         d d d        K y # 1 sw Y   VxY w)Nr   corrupted_zlib_data.matzcorrupted_zlib_checksum.matru   )	zlibr  r   r   r   r   r   r   rH  )r  excr   r   r  s        r)   test_corrupted_datar  q  si    "$=>

$ABD
U%.5 $C#s001 65D55s   "A((A1	c                      t        t        t        d      d      5 } t        | d      }|j	                          d d d        y # 1 sw Y   y xY w)Nr  ru   F) verify_compressed_data_integrity)r   r   r   r   rH  )r   r  s     r)   )test_corrupted_data_check_can_be_disabledr  z  s;    	eN$=>	ER%H 
F	E	Es   AAc            	      d   dD ]  } t        t        t        |       d      }t        |      }|j	                         }|j                          t        |d   t        j                  dgdggt                     t        |d   t        j                  dd	gd	d
ggt        j                                y )N)zbig_endian.matzlittle_endian.matru   stringshelloworldr.   floats       @      @      @)r   r   r   r   rH  r   r	   r$   r   rs   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 9r+   c            	         t        j                  ddgddgg      } t        j                  d      j                  d      }t        j                  ddgd	      }t	               }t        || j                         j                  | j                  j                               |j                         j                  |j                  j                               |j                         j                  |j                  j                               d
       t        |      }|j                         }t        |d   |        t        |d   |       t        |d   |       |j                          y )Nr  r  r  r=   r   r  r  rM  r.   )r  intsuni_arrr  r  r  )r$   r   r7  r=  r   r   byteswapviewr/   newbyteorderr   rH  r	   r   )	float_arrint_arrr  r/  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-
LLNr+   c                  R   t        t        t        d      d      5 } t        | d      }|j	                         }d d d        t        j                  dgdggt
        j                        }t        d   |       t        |d   j                  |j                         y # 1 sw Y   exY w)Nztestbool_8_WIN64.matru   T	mat_dtypeFr.   ry   )r   r   r   r   rH  r$   r   r   r	   r   r/   )fobjr  r   rr   s       r)   test_logical_arrayr    s     
eN$:;T	BdTT2 
C 	4&5'""((3Aq~q);%%qww/ 
C	Bs   BB&c                     t               } t        j                  g d      }t        | d|i       | j	                  d       t        |       }|j                          |j                          |j                         \  }}t        |j                  t        j                         t        |j                  d       |j                  |d      }t        |j                  j                   t        j"                         y )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     YF88()DFXt$%
KKNF#F

##%FCU001&


U
+C*r+   c                      t               } t        | dt        j                  d      i       t	        |       }|d   j
                  dk(  sJ y )Nr   )r  r   )r   r   r$   emptyr   r%   )r/  r   s     r)   test_roundtrip_zero_dimensionsr    s@    YFFS'*+,AS6<<7"""r+   c                      t               } t        j                  d      j                  d      }t	        t
        t        | d|idd       y )N   )rN   r;   r,   rG   Tr   )r   r$   r7  r=  r   r  r   )r/  r(   s     r)   test_mat4_3dr    s7    YF
))B-


(C*gvSz4Er+   c                     t        t        d      } t        | d      }t        |      }|j	                         }|j                          t        |d   t              sJ t               }t        |      }t        t        |j                  |       y )Nztestfunc_7.4_GLNX86.matru   testfunc)r   r   r   r   rH  r   r   r   r   r   r   r   r#  )func_egr   r  r   r/  r&  s         r)   test_func_readr    ss    N$=>G	gt	B

CAHHJa
m^444YF

 C-!2!2A6r+   c                     t        t        d      } t        | d      }t        |d      }|j	                         }|j                          t        |d   j                  j                  d       t        | d      }t        |d      }|j	                         }|j                          t        |d   j                  j                  d       y )	Nztestmatrix_6.1_SOL2.matru   Fr  r?   uTr   )	r   r   r   r   rH  r   r   r/   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1r+   c                     dt        j                  t        j                  d            i} t	               }t        |d| i       t        |d      }t        |d   d   d   j                         t        j                  d             y )Nsparsefieldr,   rG   Tr   rB   )	r   
coo_matrixr$   eyer   r   r   r	   r   )str/  r   s      r)   test_sparse_in_structr    sh     rvvay1	2BYFFSH.Aqvd|M2::<bffQiHr+   c                  t    t               } ddddi}t        | |       t        | d       t        | dd       y )	Nr  r0   rN   re   Fr   T)r   r  )r   r   r   )r/  in_ds     r)   test_mat_struct_squeezer    s8    YF#$DFDFU+FUt<r+   c                     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                               y )N皙?zmy namer0   rN   re   )scalarr6   r  Tr  r  r6   r  )	r   r   r   r   r   floatr   r$   r   )r/  r  out_ds      r)   test_scalar_squeezer    sq    YFug9KLDFDFt,EJuX./JuX,-JuT{BJJ/0r+   c                     t               } t        j                  ddg      }t        j                  ddg      }t        | t	        |             t        |       }t        |d   |       | j                  d       | j                  d       |j                  d      }t        j                  t        j                  |j                  d|	      }t        | t	        |             t        |d   |       | j                  d       | j                  d       |j                  d
      }|j                  d
      }t        | d|i       t        |       }t        |d   |       y )Nr  FoobzFoob )rG   rG   r   F)order)r%   r/   r  bufferrM  )r   r$   r   r   r   r   r	   r%  r   tobytesr   rG   r%   r/   astype)r/  in_arrout_arrrn  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+r+   c                      t               } t        | ddddi       t        |       }|d   j                  j                  }t        t        |      ddh       y )NrG   r0   rN   r+  r*  )r   r   r   r/   r,  r   set)r/  rn  field_namess      r)   test_fieldnamesr  $  sK    YFFSqa.)*
&/Cc(..&&K[!C:.r+   c                  x   g d} t        t        d      g ft        t        d      | ffD ]  \  }}t        |      }t        t	        |j                               t	        ddg|z                t        |d      }t        t	        |j                               t	        dg|z                t        |dg      }t        t	        |j                               t	        dg|z                t        |dg      }t        t	        |j                               t	        dg|z                t        |d      }t        t	        |j                               t	        dg|z                t        |g       }t        t	        |j                               t	        |             dg}t        ||      }t        |dg        y )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  -  sr   %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wv6VgY'#!Jr+   c                  <   t        j                  d      } t               }dD ]x  }|j                  d       |j	                  d       t        |d| j                  |      i       t        |      }t        t        j                  |      |d   j                         z y )Nr  )ru  f4i8i4i2i1u8u4u2u1c16c8r   r(   )
r$   r7  r   r%  r   r   r  r   r   r/   )r(   r/  dtsr  s       r)   test_round_typesr  F  su    
))B-CYF0A

301vRXXc]DK$5$560r+   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 ]8  }||   \  }}	|   \  }}t        ||       t        |      }t        ||   |       : y )	Nr(   r  mystrre  mynumc                       e Zd Z fdZy) 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)r_  r`  ra  r   )r  s   r)   rh  r  Z  s    	r+   rh  r;   )r*   r$   r7  r   r   r   r   r   ranger   r	   )
rh  r/  varmatsr   r3   
var_streamexp_nameexp_resrn  r  s
            @r)   test_varmats_from_matr$  S  s    %		"./E*-.E"I&(J
  YFFACv&GWq!1X"1:j&qM'T8$j!3t9g. r+   c                      t        t        d      } t        | d      }t        |      }|j	                         }|j                          t        |d   j                  d       y )Nzone_by_zero_char.matru   r  rd  )r   r   r   r   rH  r   r   r%   )r  r   r  r   s       r)   test_one_by_zeror&  i  sN    N$:;G	gt	B

CAHHJ5&r+   c                  ^    t        t        d      } t        |       }t        |d   ddgg       y )Nztest_mat4_le_floats.matrG   r  g333333?)r   r   r   r	   )
mat4_fnamer  s     r)   test_load_mat4_ler)  s  s/     ~'@AJ:DtCyC:,/r+   c                  v    t               } ddi}t        | |d       t        |       }t        |d   |d          y )N
second_catu   Schrödingerr   r   )r   r   r   r   )bior  var_backs      r)   test_unicode_mat4r.  {  s<    
)C
(CCS!s|H,'\):;r+   c            	      <   t        t        d      } t        | d      }|d   }t        t	        |t
        j                               t        |j                  j                  t        j                         t        |j                         g dg dg dg dg dg       y )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_sparser2    sx     ^$89H 	40A|_FJvr}}-.""BHH-v~~'13344	67r+   c                     t               } dd l}|j                  j                  ddgddgg      }t	        | t        |             | j                  d       t        |       }t        |d   j                  |j                         t        |d   j                         d       | j                  d       t        |       }|j                          |j                          |j                         \  }}t        |j                   d       y )Nr   r   rr   r0   )r   scipy.sparser@   
csr_matrixr   r   r   r   r	   r%   r   r   r  r  r  r   nzmax)r   scipyempty_sparsern  r  r  r  s          r)   test_empty_sparser9    s    
)C<<**QqE1Q%=9LC%&HHQK
#,Cs3x~~|'9'9:s3x'')1- HHQKC F

##%FCAr+   c                  B    t               } t        t        t        |        y r   )r   r   r   r   )r   s    r)   test_empty_mat_errorr;    s    
)C,-r+   c                  
   t        t        d      } t        |       }t        |d   t	        j
                  d      d d d f          t        t        d      } t        t              5  t        |        d d d        y # 1 sw Y   y xY w)Nzmiuint32_for_miint32.matan_arrayr  zbad_miuint32.mat)r   r   r   r   r$   r7  r   r  r   rn  s     r)   test_miuint32_compromiser?    sc     ^%?@H
(
CZ"))B-a"89^%78H	z	" 
#	"	"s   $A99Bc                      t        t        d      } t        |       }t        |d   dgg       t        t        d      } t	        t
              5  t        |        d d d        y # 1 sw Y   y xY w)Nzmiutf8_array_name.mat
array_namer0   zbad_miutf8_array_name.mat)r   r   r   r   r   r  r>  s     r)   !test_miutf8_for_miint8_compromiserB    sU    ^%<=H
(
C\"aSE*^%@AH	z	" 
#	"	"s   A!!A*c                  x    t        t        d      } t        |       }t        |d   dj	                  dd             y )Nzbroken_utf8.mat
bad_strings    am brokenutf8replace)r   r   r   r   decoder>  s     r)   test_bad_utf8rH    s8    ^$56H
(
C\""))&)<>r+   c                 |    t         j                  j                  t        |       d      }ddddi}t	        ||       y )Ntest.matrG   r0   test_str)r*  rq  )r   pathr   r   r   )r   r   	test_dicts      r)   test_save_unicode_fieldrN    s3    ww||CK4H!
+,IHi r+   c                      G d d      } |       }t         j                  j                  t        |       d      }t	        |d|i       t        |      }t        |d   t        j                  |             y )Nc                       e Zd ZddZy)0test_save_custom_array_type.<locals>.CustomArrayNc                 L    t        j                  d      j                  dd      S )Ng      @rN   r;   )r$   r7  r=  )r  r/   r>  s      r)   	__array__z:test_save_custom_array_type.<locals>.CustomArray.__array__  s    99S>))!Q//r+   )NN)r_  r`  ra  rS  r~   r+   r)   CustomArrayrQ    s    	0r+   rT  rJ  rG   )	r   rL  r   r   r   r   r	   r$   r   )r   rT  rG   r   outs        r)   test_save_custom_array_typerV    s[    0 0 	Aww||CK4HHsAh
(
Cs3x!-r+   c                  X    t        t        t        d       t        t        t        d       y )NzNotExistentFile00.matNotExistentFile00)r   OSErrorr   r~   r+   r)   test_filenotfoundrZ    s    '7$;<'7$7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             y )Nztestsimplecell.matTsimplify_cellsFsmycell)rG   r*  rq  )
r   r   r   r   r   r   r$   r   r	   r   )r   res1res2s      r)   test_simplify_cellsrb    sm    ^%9:H8D1D8E2DJtCy$'(JtCy"**-.tCy*BHH_,EFr+   zversion, filt, regex))r   z_4*_*N)r0   z_5*_*N)r0   z_6*_*N)r0   _7*_*z^((?!hdf5).)*$)rN   rc  z.*hdf5.*)r0   z8*_*Nc                    t        t        d|z        }t        |      }|&|D cg c]  }t        j                  ||      | }}t        |      dkD  sJ d|  d|        |D ]  }t        |      }|d   | k(  rJ  y c c}w )Nztest*%s.matr   zNo files for version r   )r   r   r   rematchr   r   )rp   r   regexr   r   filegot_versions          r)   test_matfile_versionrj    s     ^]T%9:HNE"'M%$288E4+@+L%Mu:> >
ytf=>>%d+1~(((  Ns   A?A?c                      t        t        t        d            } t        | d   t              sJ t        | d   j                         d   j                         d   t              sJ y)z,Test that we can read a MatlabOpaque object.parabola.matparabolar;   N)r   r   r   r   r   r   r   r"   s    r)   test_opaquero    sY    589Dd:&777d:&++-a0557:LIIIr+   c                  d    t        t        t        d      d      } t        | d   t              sJ y)zETest that we can read a MatlabOpaque object when simplify_cells=True.rl  Tr\  rm  N)r   r   r   r   r   rn  s    r)   test_opaque_simplifyrq    s*    58NDd:&777r+   c                      t        t              5  t        j                  j                  j
                  j                   ddd       t        t              5  ddlm}  ddd       y# 1 sw Y   (xY w# 1 sw Y   yxY w)z4Test that access to previous attributes still works.Nr   r   )	r   DeprecationWarningr7  iomatlabmio5_paramsr   scipy.io.matlab.miobaser   rs  s    r)   test_deprecationry    sQ     
(	)##00 
* 
(	)8 
*	)	 
*	) 
*	)s   /A&A2&A/2A;c                    t         j                  j                  d      }| dz  }|j                  d      }|j                  d      }||g}t         j                  j	                         5 }|j                  t               t        |d|idd       d d d        i }t        ||       t        |d   d   d   |       t        |d   d   d	   |       y # 1 sw Y   BxY w)
Ni90  z	lists.mat)r<   r;   )r=   r;   r"   T)r  r;  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    s    
))


&C$G

5!I

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

,-(!%#	% 
( HGHV$Q'*I6HV$Q'*I6 
(	's   )'CCc                     t        j                  t        d      t        d      gd      t        j                  ddg      d}| dz  }t        ||d       y )	Nr8   r  r.   r6   )
char_arraystring_arrayztmp.matr   r   )r$   r   r  r   )r  r   r  s      r)   test_gh_19659r  4  sM    hhVd6l;4H(H!56	
A "GGQs#r+   )ztest%(name)s_*.mat)__doc__r   collectionsr   os.pathr   r   r   r   ru  r   re  tempfiler   r   r   r   numpy.testingr	   r
   r   r   r   r   pytestr   r   numpyr$   r   r4  r@   r   scipy.ior7  scipy.io.matlabr   r   r   scipy.io.matlab._byteordercodesrv  _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*   pir7  r  r=  rF   r   appendcossinr   rC  r  r  r  r  r9   Brs   CAr   CAEr  objarr	transposesqrtexp
st_sub_arrr/   r  CNr  st2rG   ODTMOm0r   fp_u_strreadrG  u_strr   r   repeatr   r   r   r   r   r   markparametrizer   r   r   r   r   r   r   r   r  r  r  r  r  r  r(  r1  r8  rA  rD  rK  rO  rQ  rW  rr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r$  r&  r)  r.  r2  r9  r;  r?  rB  rH  rN  rV  rZ  rb  rj  ro  rq  ry  r  r  )ns   0r)   <module>r     s  
 
 # *   	    Q Q  *     F F - -; ; N N  - , 6 wx(&1 	a			!%(00155x(&
   v&FGHJ   )FBFF5M1A!AB
 BHHUOE!AJ!	eAaj	!A#   x("
   x(a 01
 HHW #"   $h/%}r}}Q'78
   "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&! "   *LBLLDq,=w!GHJ GBGGAJvrvvay/0881=
LML!VLMbhhue!= >?M 3 $M 3 %0N C    x($
 RXXe6"
(3
"((5
'3Qbhh'3qcU"((+3rxxV,3!288,3S !288,3S    ( "%
 bhhu.A.Qa[.AB(C"((5'6):(;<C %zl 3C W    !8,"C(
 BHHU?1Av;?@a#ua#uzl##uzl##u    (+!1%
 bhh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(a 01
   $h/%}r}}Q'78
   i($%)*, Q   "H-#YRYYr1%5%=%=a%BCEF )JX8"3-, J/$ 0$
 J/  0  3*cUO+ 2	248:
/		3N	IL"1-,()02+65
< &<9~(6+$ 6F62C*0+"#F	72I=1,:/(2
7/,'0<7*(.	>!.9G / 2 	)	)J897*$G% 	N. B @4s   ee
e
e