
    >qj                        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 d dlZd dlmZmZ d dlZd d	lmZ d d
lmZm Z m!Z!m"Z"m#Z# d dl$Z%d dl&m'Z'm(Z(m)Z) d dl*mc m+c m,Z- d dl.m/Z/m0Z0m1Z1m2Z2m3Z3 d dl4m5Z5m6Z6m7Z7m8Z8 d dl9m:Z:m;Z;m<Z<m=Z=m>Z> d dl?mc m+c m@ZA  e eeB      d      ZCej                  j                  ZFd ZGej                  dz   ej                  deJ      j                  dd      z  ZLdddideLidgZMeMj                  dddid edg      id       eMj                  dddid ej                  eL      d ej                  eL      z  z   id        ej                  d      ZR eS eTdd             eRd <    eS eTdd            eRddd f<   eMj                  d!d"did"eRid       eMj                  d#d$d#id$ e!eR      id       eRj                  eV      ZWeWd%xx   dz  cc<   eMj                  d&d'd#id' e!eW      id       eMj                  d(ddd)eLeRd)d       eMj                  d*d+did+ eGd,      id       eMj                  d-d.did. ed/g      id        eGg  eGdg       eGdd0gg       eGg d1g      feX      j                  dd,      ZY ed2g      eYd%<   d3d4d3id4eYidgZZ eG eGd       eGd0       eGg        eGg        eGd5      feX      j                  dd,      Z[ ej                  d6eX      Z] eGd      e]d%<   eZj                  d7d8d3id8e]id       eZj                  d9d:d3id:e[id       eZj                  d;d<did< eg d=      id       eZj                  d>d?did? ej                   ej                   eS eTdd@            dA            id        e ej                  d0       ej                  d      ej                  g      j                  dd5      ZadBD  cg c]  } | eXf c} Zb ej                  d6eb      Zc edCg      ecdD   d%<   eaecdE   d%<   eadFz  ecdG   d%<   eZj                  dHdIdHidIecid        ej                  dJeX      Zd eGd      edd%<    ej                  dKeX      eddL<    eGd0ej                        eddL   d%<    eGd5ggej                        eddL   dL<    ej                  dJeX      eddL   dM<    eGdej                        eddL   dM   d%<    eGdNej                        eddL   dM   dL<   eZj                  dOdPd3idPedid        ej                  d6dQD  cg c]  } | eXf c}       Zf eGd      efd%   dR<    ej                  d6dSeXfg      efd%   dT<    edUg      efd%   dT   d%   dS<   eZj                  dVdWdHidWefid        ej                  dJdQD  cg c]  } | eXf c}       Zg eGd      egd%   dR<    eGd0      egd%   dT<    edXg      egdL   dR<    edYg      egdL   dT<   eZj                  dZd[dHid[egid        ej                  d\D  cg c]  } | eXf c}       Zh e) ej                  d6eh      d]      Zieid%   Zj ed^g      ejd_<    ed`g      ejda<    ed^g      ejdb<    eGd       ejdc<    eGd      ejdd<    eGd      ejde<   eZj                  dfdgdfidgeiid        ek eeCdh      di      Zlelj                         j                  dj      Zoelj                          eZj                  dkdldidl eeog      id       eZj                  d#d$d#id$ e!eR      id       eZj                  d&d'd#id' e!eW      id       eZj                  dmdndoidn edpgdqgg      id       eZdd Zqeqj                  drdsdfids ej                  eid0      j                  dd0      id       dt Zsdu Ztdv Zudw Zvdx ZwddyZxej                  j                  dedz      d{        Zzej                  j                  dedz      d|        Z{ej                  j                  d}d~d~dgfddgfg      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 Zd Zd Zd Zej                  j                  dg d      d        Zd Zd Zd Zd Zd Zd ZdÄ ZdĄ Zdń ZdƄ ZdǄ ZdȄ ZdɄ Zdʄ Zyc c} w c c} w c c} w c c} w )    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                  d    t        j                  | i |}|j                  t        |            }|S )z;Convenience function to return matlab-compatible 2-D array.)npr   reshaper   )argskwargsarrs      ]/opt/rentech/trading_bot/.venv/lib/python3.12/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                 *   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)   ndarrayshapeitem)var1var2type1type2s       r.   types_compatibler      s}    
 JEJE~

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

tzzR/DIIK E))r0   c           	         t        |      r@t        t        |             t        |j                         |j                         | d       yt        t	        ||      dt        |       dt        |       d|         t        |t        j                  t        j                  z  t        z        st        ||       yt        |j                  |j                  k(  d|j                   d|j                   d|         |j                  }|j                  r\t        |t              r t        |j                  |j                         t!        |      D ]  \  }}|  d	| d
}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 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*/*+	- 	Xv.T(^,F4<.UGLN h"** 4| CDXv&HNNfll*!(..!1~T%QS~~Hh-++V-=-=>x( 	5EAr"G3qc-Kb&)4	5 	// 	3B"G8B4r2K!"vbz3	3 	}}# # 	VXu5fhqIr0   c                     |D ]X  }t        |dd      }d|  d| }|j                         D ]-  \  }}| d| }t        ||v d|        t        ||||          / Z y )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   "  s     8	)dUKvWYK0::< 	8KAx{1#.GALOG9"=>(GAJ7	88r0   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   )
r8   r   r   r9   r   r   whosr   r:   expected_whoss
             r.   _whos_check_caser   ,  s     	vWYK0y! @Dzz|M0;8Q
+M M 			T=wb],=>	
Ms   Bc                 r    t               }t        |||       |j                  d       t        | |g|       y )Nformatr   )r   r    seekr   )r8   r:   r   
mat_streams       r.   _rt_check_caser   =  s/    JJ0OOATJ<2r0   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_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/E8W,,-s   BBr   r   c                 :    t        |       D ]  }t        |d d    y )Nr@   )r   r   ru   r   s     r.   	test_loadr   [  s#    w $$r(#$r0   c                 4    t        |       D ]
  }t        |   y N)r   r   r   s     r.   	test_whosr   a  s    w  $ r0   zversion, fmtsr   r   r   c                 \    t        | d       D ]  }|D ]  }t        |d   |d   |         y )N)r   r   rS   )r   r   )ru   fmtsr   fmts       r.   test_round_tripr   h  s=    
 wT* 2 	2C47DGS1	22r0   c                  :   t        j                  d      } d| d<   d| d<   t        |       }d}d|i}d}t               }	 t	        ||      }t        j                  |d	
      }t        |||       |j                          t        j                  |d
      }t        |dd      }|j                          t        j                  |       t        |d   j                         |d   j                         t        |             y # t        j                  |       w xY w)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
fT"YYu40

HV4YYu40
dUKffSk113&sm335&*6l4 	fs   A6D 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)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
		% 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   rz   Tr   )
r   r   r   r   r   r   assert_raisesNotImplementedErrorr   r   )	filenamesfilenamefps      r.   
test_mat73r     sa    no.0IC	NQ (D!)'+	- 	
r0   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     sT     ."=>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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                     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   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                      t        j                  ddt        fg      } t        t        t
        t               d| idd       y )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                     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?   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                     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  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DIDIGId+CN *gwy&sULr0   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 )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                  `   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,r0   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   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                  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 )
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                     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 )
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 0f5vT&\''0 	" vT&\''/	 vT&\''/'0r0   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   )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(Gn$%88:DDIYFF3t,UC6?DtF|T*YFF3t,TB6?DtF|T*r0   c                  f    t               } t        | dt        j                  dt              i       y )NAr5   r3   )r   r    r)   r   rx   )r4  s    r.   test_single_objectrH  u  s#    YFFS!6234r0   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_variablerO  z  sz     ^$<=H 	40AGqLHM .hNG[ 	h'AHMr0   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   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r3r0   c                      t               } t        | di i       t        |       }|d   }t        |j                  d       t        |j
                  t        j
                  t                     t        |d   d u        y )Nr-   rV   rG   r   )r4  r   rL   s      r.   test_save_empty_dictrU    s^    YFFUBK A	%A% "((6*+AcFdNr0   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_equalr:   s       r.   assert_any_equalr[    s;     I  66&H$%I Ir0   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        j                  t        d
      5  t        t        dddd      |       d d d        t        t        dddd      |       t        j                  t        d
      5  t        t        ddd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        j                  t        d
      5  t        t        ddi      t"        u        d d d        t        j                  t        d
      5  t        t        ddi      t"        u        d d d        t        j                  t        d
      5  t        t        ddd      t        j                  dgdg             d d d        y # 1 sw Y   wxY w# 1 sw Y   .xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)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                       e Zd Zy) test_to_writeable.<locals>.klassN__name__
__module____qualname__r   r0   r.   klassrd        r0   ri  r   r   a stringc                       e Zd Zy)test_to_writeable.<locals>.CNre  r   r0   r.   Crn    rj  r0   ro  rL   1_a)rp  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  ri  cro  s          r.   test_to_writeablerz    sW   
rxx}
%CD!sA&,)EFI&,)EFIy)L\qQ-0,?	o-G	H M1!!&<=|LM \qQA"67F	o-G	H M1!!&<=|LM  	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%)::;< 
o-G	H =d1X&*;;<= 
o-G	H 9\qq/24&7	99 9kM M
M MT< <= =9 9s<   -P<Q	QQ"0Q.<Q	QQ"Q+.Q7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S10rr  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                  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>.CNre  r   r0   r.   ro  r  "  rj  r0   ro  r5   rl  ry  Fr   rG   Tfield1field2)r  r  r   r    r   r   )ro  ry  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                     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 )NrB   r5   rL   T
squeeze_me)rB   F)
byte_orderrl  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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/5r0   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.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                      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.matrz   )	zlibr  r   r   r   r   r#   r   rL  )r  excr   r   r  s        r.   test_corrupted_datar  q  sx    "$=>

$ABD 2
U%.5 	2 $C#s001	2 	22	2 	2s   "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  rz   F) verify_compressed_data_integrity)r   r   r   r#   rL  )r   r  s     r.   )test_corrupted_data_check_can_be_disabledr  z  sC    	eN$=>	E R%H  s   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.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 
C%.5R 

1Y<88gY&-Y%07=?	@ 	1X;88b"X&("X%/68jjB	C
Cr0   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  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   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.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	B  dTT2  	4&5'""((3Aq~q);%%qww/   s   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_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                      t               } t        | dt        j                  d      i       t	        |       }|d   j
                  dk(  sJ y )Nr   )r$  r   )r   r    r)   emptyr   r   )r4  r   s     r.   test_roundtrip_zero_dimensionsr    s@    YFFS'*+,AS6<<7"""r0   c                      t               } t        j                  d      j                  d      }t	        t
        t        | d|idd       y )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                  |   t        t        d      } t        | d      }t        |      }|j	                         }|j                          t        |d   t              sJ t               }t        |      }t        j                  t        d      5  t        t        |j                  |       d d d        y # 1 sw Y   y xY w)Nztestfunc_7.4_GLNX86.matrz   testfuncr^  r_  )r   r   r   r#   rL  r   r   r   r   r"   rs  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YF

 C	o-G	H ;mS%6%6:; ; ;s   B22B;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.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                      dt        d      i} t               }t        |d| i       t        |d      }t	        |d   d   d   j                         t        j                  d             y )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                  t    t               } ddddi}t        | |       t        | d       t        | dd       y )	Nr  r5   rS   rj   Fr   T)r   r  )r   r    r   )r4  in_ds     r.   test_mat_struct_squeezer    s8    YF#$DFDFU+FUt<r0   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 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    sq    YFug9KLDFDFt,EJuX./JuX,-JuT{BJJ/0r0   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 )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_arrrv  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                      t               } t        | ddddi       t        |       }|d   j                  j                  }t        t        |      ddh       y )NrL   r5   rS   r0  r/  )r   r    r   r4   r1  r   set)r4  rv  field_namess      r.   test_fieldnamesr  &  sK    YFFSqa.)*
&/Cc(..&&K[!C:.r0   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.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  /  sv   %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'#(r0   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$  )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  sz    
))B-CYF0 7A

301vRXXc]DK$5$567r0   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$  mystrrl  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]  	    r0   Nrf  rg  rh  r   r&  s   r.   ro  r"  \      	r0   ro  r@   )r/   r)   r<  r   r    r$   r   r   ranger   r	   )
ro  r4  varmatsr   r8   
var_streamexp_nameexp_resrv  r&  s
            @r.   test_varmats_from_matr0  U  s    %		"./E*-.E"I&(J
  YFFACv&GWq!1X /"1:j&qM'T8$j!3t9g./r0   c                      t        t        d      } t        | d      }t        |      }|j	                         }|j                          t        |d   j                  d       y )Nzone_by_zero_char.matrz   r  rk  )r   r   r   r#   rL  r   r   r   )r  r   r  r   s       r.   test_one_by_zeror2  k  sN    N$:;G	gt	B

CAHHJ5&r0   c                  ^    t        t        d      } t        |       }t        |d   ddgg       y )Nztest_mat4_le_floats.matrL   r  g333333?)r   r   r   r	   )
mat4_fnamer  s     r.   test_load_mat4_ler5  u  s/     ~'@AJ:DtCyC:,/r0   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,'\):;r0   c            	      B   t        t        d      } t        | dd      }|d   }t        t	        |      xr |j
                  dk(         t        |j                  j                  t        j                         t        |j                         g dg dg dg d	g d	g       y )
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_sparser?    s     ^$89H 	4%@A|_FHV7%!78""BHH-v~~'13344	67r0   c                     t               } dd l}|j                  j                  ddgddgg      }t	        | t        |             | j                  d       t        | d      }t        |d   t              sJ t        | d      }|j                  j                  |d         rt        |d   t              rJ t        j                  d      5  t        |       }|j                  j                  |d         rt        |d   t              rJ 	 d d d        t        |d   j                  |j                         t        |d   j                         d       | j                  d       t!        |       }|j#                          |j%                          |j'                         \  }}t)        |j*                  d	       y # 1 sw Y   xY w)
Nr   r   F)r   rw   TzThe default value for `spmatrixr_  r5   )r   scipy.sparserE   	csr_arrayr    r   r   r   r   r   r   rs  deprecated_callr	   r   r   r#   r  r  r  r   nzmax)r   scipyempty_sparserv  r  r  r  s          r.   test_empty_sparserG    sx   
)C<<))Aa5!A-8LC%&HHQK
#
&Cc#h(((
#
%C<<  S*:c#h3PPP			&G	H Ucl||$$SX.z#c(G7TTT7TU s3x~~|'9'9:s3x'')1- HHQKC F

##%FCAU Us   ?F==Gc                  B    t               } t        t        t        |        y r   )r   r   r   r   )r   s    r.   test_empty_mat_errorrI    s    
)C,-r0   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)   r<  r   r  r   rv  s     r.   test_miuint32_compromiserM    sl     ^%?@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_namer5   zbad_miutf8_array_name.mat)r   r   r   r   r   r  rL  s     r.   !test_miutf8_for_miint8_compromiserP    s^    ^%<=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   decoderL  s     r.   test_bad_utf8rV    s8    ^$56H
(
C\""))&)<>r0   c                 |    t         j                  j                  t        |       d      }ddddi}t	        ||       y )Ntest.matrL   r5   test_str)r/  ry  )r   pathr   r   r    )r   r   	test_dicts      r.   test_save_unicode_fieldr\    s3    ww||CK4H!
+,IHi r0   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      @rS   r@   )r)   r<  r*   )r%  r4   rB  s      r.   	__array__z:test_save_custom_array_type.<locals>.CustomArray.__array__  s    99S>))!Q//r0   )NN)rf  rg  rh  ra  r   r0   r.   CustomArrayr_    s    	0r0   rb  rX  rL   )	r   rZ  r   r   r    r   r	   r)   r   )r   rb  rL   r   outs        r.   test_save_custom_array_typerd    s[    0 0 	Aww||CK4HHsAh
(
Cs3x!-r0   c                  X    t        t        t        d       t        t        t        d       y )NzNotExistentFile00.matNotExistentFile00)r   OSErrorr   r   r0   r.   test_filenotfoundrh    s    '7$;<'7$78r0   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)rL   r/  ry  )
r   r   r   r   r   r   r)   r   r	   r   )r   res1res2s      r.   test_simplify_cellsrp    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   rq  z.*hdf5.*)r5   z8*_*Nc                 
   t        t        d| d      }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*z.matr   zNo files for version r   )r   r   r   rer`  r   r   )ru   r   regexr   r   filegot_versions          r.   test_matfile_versionrw    s     ^uTF$%78HNE"'M$288E4+@+LMMu:> >
ytf=>> )%d+1~((() Ns   B B 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_opaquer|    sY    589Dd:&777d:&++-a0557:LIIIr0   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.ry  Trj  rz  N)r   r   r   r   r   r{  s    r.   test_opaque_simplifyr~    s*    58NDd:&777r0   c                     t        t        t        d            } d| v sJ t        | d   t              sJ | d   d   d   dk(  sJ | d   d   d   dk(  sJ | d   d   d   j
                  t        j                  k(  sJ d	| v sJ t        | d	   t              sJ | d	   d   d   dk(  sJ | d	   d   d   dk(  sJ | d	   d   d   j
                  t        j                  k(  sJ | d   d   d   d
   dk(  sJ | d	   d   d   d
   dk(  sJ y)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    sf   5)GHID4d<(,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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                     t               } t        j                  dt        j                        }d|d   d<   d|d   d<   t        j
                  g dgt        j                        |d   d	<   t        |      }t        | d
|i       | j                  d       t        |       }d
|v sJ t        |d
   t              sJ |d
   d   d   dk(  sJ |d
   d   d   dk(  sJ |d
   d   d	   j                  t        j                  k(  sJ y)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a *h666a /6999a !2399RYYFFFr0   c                  |    d} t               }t        |d| i       |j                  d       t        |      }d|v sJ y)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                     d } t               }t        | | d       | d      d       |j                  d       t        |      }dD ]{  \  }}||v sJ t	        ||   t
              sJ ||   d   d   dk(  sJ ||   d   d	   d
k(  sJ ||   d   d   j                  t        j                  k(  sJ ||   d   d   d   |k(  r{J  y)zCRound-trip two MatlabOpaque objects with distinct IDs in one mdict.c                     t        j                  dt        j                        }d|d   d<   d|d   d<   t        j                  dgd	gd
gd
g| gd
ggt         j
                        |d   d<   t        |      S )NrV   r3   r;   rG   r  r  r  r  rS   r5   r  )r)   r  r  r  r   r  r   )obj_idr-   s     r.   make_opaquez6test_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 Ekt||$t*l333Dz!}X&(222Dz!}]+v555Dz!}./55BBBDz!}./5DDDEr0   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   )	assert_warnsDeprecationWarningrE  iomatlabmio5_paramsr   scipy.io.matlab.miobaser   r  s    r.   test_deprecationr  i  sa     
(	) 1##001 
(	) 989 9	1 19 9s   /A&A2&A/2A;c                 *   t         j                  j                  d      }| dz  }|j                  d      }|j                  d      }||g}t        |d|idd       i }t	        ||       t        |d   d   d   |       t        |d   d   d	   |       y )
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                     t        j                  t        d      t        d      gd      t        j                  ddg      d}| dz  }t        ||d       y )	Nr=   r  r3   r;   )
char_arraystring_arrayztmp.matr   r   )r)   r   r  r    )r  r   r  s      r.   test_gh_19659r    sM    hhVd6l;4H(H!56	
A "GGQs#r0   c                      t        t        d      } t        j                  t        j                  k(  rdnd}t        j                  t        |      5  t        |        d d d        y # 1 sw Y   y xY w)Nzdebigged_m4.matz$Not enough bytes to read matrix 'a';z9Variable 'a' has byte length longer than largest possibler_  )	r   r   r)   intpint64rs  r   r  r   )truncated_matr`  s     r.   test_large_m4r    s[     .*;<M288# 4H 
 
z	/   s   A&&A/c                      ddl m}  y )Nr   r$   )scipy.io.matlabr$   r  s    r.   test_gh_19223r    s    0r0   c                      dt        t        j                  d            fdt        d      ff} t        |        ddddff} t        |        dddd	ff} t        |        y )
N_1r$  r  rl  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                       G  fdd      }t               }t        j                  t        d      5  t	        | |              d d d        y # 1 sw Y   y xY w)Nc                       e Zd Z fdZy)"check_mat_write_warning.<locals>.Cc                     S r   r   r$  s    r.   r   z(check_mat_write_warning.<locals>.C.items  r'  r0   Nr(  r)  s   r.   ro  r    r*  r0   ro  r^  r_  )r   rs  r   r   r    )r&  ro  r4  s   `  r.   r  r    sF      YF	o-G	H   s   AAc                  (   dD ]=  } t        j                  t        d      5  t        t	        d| z               d d d        ? t        j                  t        d      5  t        t	        d             d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)N)rS   r1   r$     z Mat file appears to be truncatedr_      zMat file appears to be corrupts                       )rs  r   r   r   r   ns    r.   test_corrupt_filesr    s     *]]<!CE 	*GGaK()	* 	** 
|=
? '%&' '	* 	*' 's   A<B<B	B)ztest%(name)s_*.mat)r   collectionsr   os.pathr   r   r   r   r  r   rs  tempfiler   r   r   r   numpy.testingr	   r
   r   r   r   rs  r   r   r   r  numpyr)   r   rA  r   r   r   r   r   scipy.iorE  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readrU  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[  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r0  r2  r5  r:  r?  rG  rI  rM  rP  rV  r\  rd  rh  rp  rw  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   )FBFF5M1A!AB
 BHHUO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&! "   *LBLLDq,=w!GHJ GBGGAJvrvvay/0881=
LM!V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.AQa[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F 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-#YRYYr1%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   ee
e

e!