
    (phL                        S r SSKrSSKJrJr  SSKrSSKrSSKrSSK	J
r
  SSKJr  SSKJr  SSKrSSKJrJrJrJrJrJr  SSKrSSKJr  SS	KJr  SS
KJr  \" \" \5      S5      rSr Sr!\RD                  RF                  r$\S 5       r%S r&S r'S r(S r)S r*S r+S r,S r-S r.S r/S r0S r1S r2S r3S r4S r5S r6S  r7S! r8S" r9S# r:S$ r;S% r<S& r=S' r>S( r?S) r@g)*zTests for netcdf     N)joindirname)BytesIO)glob)contextmanager)assert_assert_allcloseassert_equalbreak_cyclessuppress_warningsIS_PYPY)raises)netcdf_file)
in_tempdirdata   bc               /     #    [        U 0 UD6nSUl        UR                  S[        5        UR	                  S[
        S5      n[        R                  " [        5      US S & SUl        UR                  5         Uv   UR                  5         g 7f)NCreated for a testtimer   zdays since 2008-01-01)r   historycreateDimensionN_EG_ELScreateVariable
VARTYPE_EGnparangeunitsflushclose)argskwargsfr   s       M/var/www/html/venv/lib/python3.13/site-packages/scipy/io/tests/test_netcdf.pymake_simpler&      so     T$V$A$AIfh'FJ	:Dii!DG(DJGGI
GGGIs   B	Bc                     [        U R                  S5        U R                  S   n[        UR                  S5        [        UR                  [
        45        [        US   [
        S-
  5        g)zExample fileobj tests    Created for a testr   s   days since 2008-01-01   N)r
   r   	variablesr   shaper   )	ncfileobjr   s     r%   check_simpler.   *   sT    ""$9:v&D56h[)b8A:&    c                 X    [         R                  R                  U 5      n[        X!5        g)a  
Asserts that the mask of arr is effectively the same as expected_mask.

In contrast to numpy.ma.testutils.assert_mask_equal, this function allows
testing the 'mask' of a standard numpy array (the mask in this case is treated
as all False).

Parameters
----------
arr : ndarray or MaskedArray
    Array to test.
expected_mask : array_like of booleans
    A list giving the expected mask.
N)r   magetmaskarrayr
   )arrexpected_maskmasks      r%   assert_mask_matchesr6   2   s       55c"D%r/   c                     [         R                  " 5       n  [        R                  " 5       n[         R                  " U5        [        SS5       n S S S 5        [        SS5       n[        U5        SUR                  S'   S S S 5        [        S5       n[        UR                  [        (       + 5        [        U5        [        UR                  S   S5        S S S 5        [        SS5       n[        UR                  (       + 5        [        U5        [        UR                  S   S5        S S S 5        [        SSS9 n[        UR                  (       + 5        [        U5        S S S 5        [        SS5       n[        U5       n[        UR                  (       + 5        [        U5        S S S 5        S S S 5        [        5        n[        (       a  UR                  [         S	5        [        SS5       n[        US
S9 n[        UR                  5        [        U5        S S S 5        S S S 5        S S S 5        [        SS5       n[        US5       n[        UR                  (       + 5        [        U5        UR#                  SS5        UR%                  SSS5      nSUS S & S S S 5        S S S 5        [        S5       n[        U5        [        UR&                  S   S S  S5        S S S 5        [        (       a  [)        5         [)        5         [         R                  " U 5        [*        R,                  " U5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNG= f! , (       d  f       GN!= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNR= f! , (       d  f       GN\= f! , (       d  f       GN3= f! [        (       a  [)        5         [)        5         [         R                  " U 5        [*        R,                  " W5        f = f)Nz	simple.ncwar*   	appendRanFmmaprbz2Cannot close a netcdf_file opened with mmap=True.*Tzr+bapp_dimapp_vari)r>   *   )osgetcwdtempfilemkdtempchdirr&   r   r.   _attributesr
   use_mmapr   r   openr   filterRuntimeWarningr   r   r+   r   shutilrmtree)cwdtmpdirr$   fobjsupvars         r%   test_read_write_filesrS   F   s   
))+CH!!#
c*a + c*aO)*AMM+& + %[1O{3Q7	 & c*a

N#O{3Q7 + 51Q

N#O 2 +t$T"aAJJ'Q # %  Cw

>OQk4(D D1QAJJ' O 2 )	 ! +u%T3'1AJJ'Q!!)Q/&&y#|DA ( & %OY/2B7 &
 7 NN
fK +* +* &% +* 21 #" %$ 21 )(	 !  (' &% &%
 7 NN
fsF  7P L3P $M?P AMP *?M))P ;&M;!P 5N&N'N/P .O/O:!N1O#O+P ?O9AO'O9$P 7(PP 3
M=P 
MP 
M&!P )
M83P ;
N
P 
N	N
N.)P 1
O ;O
O	O
O$P '
O6	1O99
PP 
PP AQ*c                      [        5       n [        U S5         U R                  5       nS S S 5        [        W5      n[        U5       n[	        U5        S S S 5        [        U5      n[        [        [        USS5        [        5       n[        USSS9 nUR                  5       nS S S 5        [        U5      n[        U5       n[	        U5        [        UR                  S5        S S S 5        [        U5      n[        USS9 n[	        U5        [        UR                  S5        S S S 5        g ! , (       d  f       GN	= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nr8   rT   )version)	r   r&   getvaluer   r.   assert_raises
ValueErrorr
   version_byte)eg_sio1str_valeg_sio2f2eg_sio3	eg_sio_64f_64s          r%   test_read_write_siorc      s%   iG	Wc	"""$ 
# gG	W	R 
 gG*k7C>	I	YQ	/4$$& 
0  I	Y	4TT&&* 
   I	Y	*dTT&&* 
+	*+ 
#	" 
	 
0	/ 
 	
 
+	*s;   D*D<E "E?"E/*
D9<
E

E
E,/
E=c                     [        5       n [        U SS9nSUl        UR                  SS5        UR	                  S[
        R                  S5      nSUS	'   S
Ul        UR                  5         U R                  5       nSn[        X45        g )Nr8   moder   dimr*   rR   )rg   ir   ds|   CDF       
      dim             a         b            var                 c         d            x)r   r   r9   r   r   r   int16csyncrX   r
   )raw_filer$   rR   actualexpecteds        r%   
test_bytesro      s    yHH3'A ACeQ


5"((H
5CCFCEFFH F$H@ "r/   c                  ^   [        [        5       SS9 n U R                  SS5        U R                  SSS5      n[	        UR                  5       S5        S	Ul        [	        UR                  5       S	5        S
Ul        [	        UR                  5       S5        S S S 5        g ! , (       d  f       g = f)Nr8   re   xr*   rR   S1rq          s     )r   r   r   r   r
   _get_encoded_fill_value
_FillValue)r$   rR   s     r%   test_encoded_fill_valuerx      s    	WYS	)Q	#q!udF3S002G< S002G<$S002G< 
*	)	)s   BB
B,c                      [        [        [        S5      5       H.  n [        U S5          S S S 5        [        U SSS9    S S S 5        M0     g ! , (       d  f       N(= f! , (       d  f       MS  = f)Nz*.ncrU   Fr;   )r   pjoinTEST_DATA_PATHr   )fnames    r%   test_read_example_datar}      sO    eNF34$ %%0 10 5$$00s   AA
A	
A-	c                  :   [        [        S5      n [        5        nSnUR                  [        U5        [        U SSS9 nUR                  S   nS S S 5        S S S 5        [        [        WR                  S5        g ! , (       d  f       N2= f! , (       d  f       N;= f)Nexample_1.ncsCannot close a netcdf_file opened with mmap=True, when netcdf_variables or arrays referring to its data still existrU   Tr;   r   rA   )
rz   r{   r   rJ   rK   r   r+   rY   RuntimeErrorassignValue)filenamerQ   messager$   time_vars        r%   $test_itemset_no_segfault_on_readonlyr      sz     ^^4H		R

>7+3T2a{{6*H 3	 
 , 4 4b9	 32	 
	s"   $BA;B;
B		B
Bc                     [        5       n [        U SS9 nUR                  SS5        UR                  S[        S5        SUR
                  S   S'   UR                  5         U R                  5       nS S S 5        [        W5      n [        U SS9 nSUR
                  S   S'   S S S 5        g ! , (       d  f       N?= f! , (       d  f       g = f)	Nr8   re   rq   rV   rs   r*   .r9   )	r   r&   r   r   floatr+   r    rX   r   )streamr$   contentss      r%   test_appending_issue_gh_8625r     s    YF	V#	&!	#q!	eV, !C		??$ 
' XF	V#	&! !C 
'	& 
'	& 
'	&s   AB*B;*
B8;
C	c            	         SS/n [         R                  " S5      R                  S:X  a  U R                  S5        [         R                  " S5      R                  S:X  a  U R                  S5        [	        [        5       S5       nUR                  S[        5        U  H   n[        [        UR                  SUS5        M"     S S S 5        g ! , (       d  f       g = f)	Nint64uint64int   uintr8   r   r   )r   dtypeitemsizeappendr   r   r   r   rY   rZ   r   )dtypesr$   dts      r%   test_write_invalid_dtyper     s    x F	xx1$e	xx  A%f	WY	$	&(+B*a&6&6IN  
%	$	$s   =C		
Cc                  v   [        5       n [        U SS9 nUR                  SS5        UR                  SSS/5      nSUS S & UR	                  5         [        U R                  5       5      nUR	                  5         [        U R                  5       5      nS S S 5        [        WW:H  5        g ! , (       d  f       N= f)Nr8   re   rq      vi2r*   )r   r&   r   r   r    lenrX   r   )r   r$   r   
len_single
len_doubles        r%   test_flush_rewindr   !  s    YF	V#	&!	#a S$.!		*+
		*+
 
' J*$% 
'	&s   A>B**
B8c                  X   [        [        5       SS9 n U R                  SS5        U R                  SSS/5        U R                  S[        R
                  S/5        U R                  S[        R                  " [        R
                  5      S/5        S S S 5        g ! , (       d  f       g = f)	Nr8   re   rq   r   v1r   v2v3)r&   r   r   r   r   ri   r   )r$   s    r%   test_dtype_specifiersr   /  s{     
WYS	)Q	#a 	tcU+	rxx#/	rxx1C59	 
*	)	)s   A?B
B)c                  <   [        5       n / SQn[        U S5       nSUl        UR                  SS5        UR	                  SSS5      nXS S & SUl        UR                  5         U R                  5       nS S S 5        [        W5      n [        U S	5       n[        UR                  S
5        UR                  S   n[        UR
                  S5        [        UR                  S5        [        US S  U5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)N)
r   g?g?g333333?g?g      ?g333333?gffffff?g?g?r8   r   	float_var
   r$   )r   metresrU   r(   s   metres)r   )r   r   r   r   r   r   r    rX   r
   r+   r,   r	   )ioitemsr$   r   r   s        r%   test_ticket_1720r   :  s    	B3E	R	(		+r*$$[#~F	!"			;;= 
 
	B	R	QYY 56KK,	Y__i0Y__e,	!e, 
	 
	 
	s   AC<A!D<
D

Dc                    ^ [        [        S5      m[        (       dZ  [        R                  " 5          [        R
                  " S5        [        TSS9 n U R                  S   S S  nAS S S 5        S S S 5        U4S jn[        5        nSnUR                  [        U5        U" 5       nS S S 5        WR                  5         g ! , (       d  f       N_= f! , (       d  f       Nh= f! , (       d  f       NA= f)Nr   errorTr;   latc                  r   > [        TSS9 n U R                  S   S S  sS S S 5        $ ! , (       d  f       g = f)NTr;   r   )r   r+   )r$   r   s    r%   doit!test_mmaps_segfault.<locals>.doit\  s,    -;;u%a( .--s   (
6r   )rz   r{   r   warningscatch_warningssimplefilterr   r+   r   rJ   rK   sum)r$   rq   r   rQ   r   r   s        @r%   test_mmaps_segfaultr   Q  s    ^^4H7$$&!!'*XD1QKK&q) 2 ')
 
	R

>7+F	 

 EEG 21 '& 
	s/   !CC 'C C" 
C	
C
C"
C0c                      [        5       n [        U S5       nUR                  SS/ 5      nUR                  SL d   UR                  5       eUR	                  5         S S S 5        g ! , (       d  f       g = f)Nr8   zerodimr   F)r   r&   r   isrecr    )r   r$   r   s      r%   test_zero_dimensional_varr   i  s[    	B	R	Yb1 ww%((		 
		s   AA$$
A2c                  `   [        5          Sn [        U S5      nSUR                  S'   SUR                  S'   UR                  5         [        U S5      n[	        UR                  S   S5        [	        UR                  S   S5        UR                  5         S S S 5        g ! , (       d  f       g = f)	Nzg_byte_atts.ncr8   s   grailholyfloatswitchrU   s   floatsr   r   rG   r!   r
   r   r$   s     r%   test_byte_gattsr   s  s     
##& (f!)g		#&Q]]6*H5Q]]7+Y7		 
s   BB
B-c                     [        5          Sn [        U S5      nSUR                  S'   UR                  5         [        U S5      n[	        UR                  S   S5        SUR                  S'   UR                  5         [        U S	5      n[	        UR                  S   S5        [	        UR                  S   S5        UR                  5         S S S 5        g ! , (       d  f       g = f)
Nzappend_dat.ncr8   zwas hereKilroyr9   s   was heres   ZootnaughtyrU   r   r   s     r%   test_open_appendr     s    	"#&",h		 #&Q]]8,k:#*i 		 #&Q]]8,k:Q]]9-w7		! 
s   C C
C"c            
         Sn [        5          [        SS5       nUR                  SS 5        UR                  SSS5        UR                  SU 5        UR                  SSS5      n[        R
                  " [        U 5      5      US S & UR                  S	U 5        UR                  S	SS
5      n[        R
                  " [        U 5      5      US S & UR                  SSS5        UR                  5         UR                  5         S S S 5        [        S5       GHu  n[        SS5       n[        R                  " UR                  S   R                  U5      UR                  S   l        [        R                  " X 4U5      UR                  S   US S 2S S 24'   UR                  5         S S S 5        [        S5       n[        UR                  S   S   U5        [        UR                  S   SS S 2S S 24   R                  5       [        R                  " X 4U5      5        [        UR                  S   R                  R                  S   US-   5        [        UR                  S   R                  R                  S   US-   5        S S S 5        GMx     [        S5       n[!        ["        5       nUR                  S   R$                  S     S S S 5        WR&                  n[        UR(                  S   S5        S S S 5        S S S 5        g ! , (       d  f       GN
= f! , (       d  f       GNy= f! , (       d  f       GM$  = f! , (       d  f       N{= f! , (       d  f       N_= f! , (       d  f       g = f)Nd   zwithRecordDimension.ncr8   r   rh   r   rq   rs   y)r   testDatar@   )r   rq   r   rV   r9   r)   r   r*   r   )r   r   r   r   r   arrayranger    r!   r   r+   r   fullr
   copyr,   rY   KeyErrorrG   valuer"   )dataSizer$   rq   r   r@   arexs          r%   test_append_recordDimensionr     s   H	1371fd+VS)4c8,  c62A88E(O,AaDc8,  c62A88E(O,AaDZ.@AGGIGGI 8 qA5s;q+-99Q[[5H5M5Mq+QF#(3577H;OQR3SJ'1a0	 < 56!Q[[04a8Q[[4RAX>CCEWWh%91=?Q[[055;;A>!DQ[[499??BAaCH 76 " 12ax(BJ'33F; )BV,	 3A 
77 <; 76 )( 32A 
s   MC'L#M$B L$M7C
L(MM)L;-M3M
L	M
L% M(
L82	M;
M	M
M	M
M+c                     [         R                  " SSS5      n SU S'   [         R                  R                  U S5      n[	        [
        S5      n[        USS	9 nUR                  S
   n[        UR                  S5        [        UR                  S5        [        UR                  [         R                  " S5      5        US S  R                  5       nA[         R                  " UR                  5       S5      n[        XV5        S S S 5        [!        5          Sn[        USSS	9nUR#                  S
[%        U5      5        UR'                  S
SS5      nSUl	        SUl        SUl
        XS S & UR)                  5         [        USS	9 nUR                  S
   n[        UR                  S5        [        UR                  S5        [        UR                  [         R                  " S5      5        [         R                  " UR                  5       S5      nUS S  R                  5       nA[        XV5        S S S 5        S S S 5        g ! , (       d  f       GNC= f! , (       d  f       N)= f! , (       d  f       g = f)N         r      c   zexample_2.ncTmaskandscaleTemperature'  g{Gz?rV   zms.ncr8   r@   )r   )r   linspacer1   masked_greaterrz   r{   r   r+   r
   missing_value
add_offsetscale_factorfloat32
compressedroundr	   r   r   r   r   r!   )	ttmr|   r$   Tempfoundrn   newfnametemps	            r%   test_maskandscaler     s   
BBAAaD			a	$B..1E	U	.!{{=)T''.T__b)T&&

4(89Q""$88BMMOQ/( 
/ 
#D9	-R1s4DE! Q		5;;}-D++T2"-**BJJt,<=xx3HG&&(EE, 6 
 
/	.* 65 
s3   B*H>A/I!B*I-I!>
I
I	I!!
I/c                      [        [        S5      n [        U SS9 nUR                  S   S S  n[	        U/ SQ5        S S S 5        g ! , (       d  f       g = f)Nexample_3_maskedvals.ncTr   var1_fillval0FTFrz   r{   r   r+   r6   r|   r$   vardatas      r%   !test_read_withValuesNearFillValuer     sE    .";<E	U	.!++o.q1G%9: 
/	.	.   !A
Ac                      [        [        S5      n [        U SS9 nUR                  S   S S  n[	        U/ SQ5        [        U/ SQ5        S S S 5        g ! , (       d  f       g = f)Nr   Tr   var2_noFillvalFFFr*   rV   r   rz   r{   r   r+   r6   r
   r   s      r%   test_read_withNoFillValuer     sR     .";<E	U	.!++./2G%:;Wg& 
/	.	.s   /A
A!c                      Sn [        [        S5      n[        USS9 nUR                  S   S S  n[	        U/ SQ5        [        X0SS/5        S S S 5        g ! , (       d  f       g = f)	Nr   r   Tr   var3_fillvalAndMissingValue)TFFrV   r   r   )IRRELEVANT_VALUEr|   r$   r   s       r%   &test_read_withFillValueAndMissingValuer     s]     .";<E	U	.!++;<Q?G%9:WA67 
/	.	.s   /A
A#c                      [        [        S5      n [        U SS9 nUR                  S   S S  n[	        U/ SQ5        S S S 5        g ! , (       d  f       g = f)Nr   Tr   var4_missingValuer   r   r   s      r%   test_read_withMissingValuer    sH     .";<E	U	.!++1215G%9: 
/	.	.r   c                      [        [        S5      n [        U SS9 nUR                  S   S S  n[	        U/ SQ5        S S S 5        g ! , (       d  f       g = f)Nr   Tr   var5_fillvalNaNr   r   r   s      r%   test_read_withFillValNaNr    sF    .";<E	U	.!++/03G%9: 
/	.	.r   c                      [        [        S5      n [        U SS9 nUR                  S   S S  n[	        U/ SQ5        S S S 5        g ! , (       d  f       g = f)Nr   Tr   	var6_charr   r   r   s      r%   test_read_withCharr    sE    .";<E	U	.!++k*1-G%9: 
/	.	.r   c                      [        [        S5      n [        U SS9 nUR                  S   S S  n[	        USS/SS/SS//5        S S S 5        g ! , (       d  f       g = f)Nr   Tr   var7_2dFr   r   s      r%   test_read_with2dVarr    sW    .";<E	U	.!++i(+GtUmeU^eT]%ST 
/	.	.s   (A
Ac                      [        [        S5      n [        U SSS9 nUR                  S   S S  n[	        U/ SQ5        [        U/ SQ5        S S S 5        g ! , (       d  f       g = f)Nr   F)r   r<   r   r   r   r   r   s      r%   test_read_withMaskAndScaleFalser    sV     .";<E 
UU	;q++;<Q?G%:;Wi( 
<	;	;s   /A
A")A__doc__rB   os.pathr   rz   r   rL   rD   r   r   r   r   
contextlibr   numpyr   numpy.testingr   r	   r
   r   r   r   pytestr   rY   scipy.ior   scipy._lib._tmpdirsr   __file__r{   r   r   markthread_unsafe
pytestmarkr&   r.   r6   rS   rc   ro   rx   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r   r/   r%   <module>r     s	    	 *      % E E  *   *wx(&1
 [[&&
 	 	'&(K\+8.#b=: "
O&:-.0*'-R"-R;'8;;;U	)r/   