
    doieL                        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  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 \RB                  RD                  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 r/S r0S r1S r2S r3S r4S r5S  r6S! r7S" r8S# r9S$ 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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       V/var/www/html/land-ocr/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_matchesr5   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        [        R                  " 5          [        (       a  [        R                   " S	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NX= f! , (       d  f       GN2= 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rbignorez2Cannot 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   openwarningscatch_warningsfilterwarningsRuntimeWarningr   r   r*   r   shutilrmtree)cwdtmpdirr#   fobjvars        r$   test_read_write_filesrT   F   s   
))+CK!!#
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 # % $$&w''H"
 k4(D D1QAJJ' O 2 ) ' +u%T3'1AJJ'Q!!)Q/&&y#|DA ( & %OY/2B7 &
 7 NN
fQ +* +* &% +* 21 #" %$ 21 )( '& (' &% &%
 7 NN
fsF  7P. MP. $M?P. AM(P. *?M:)P. ;&N!P. 5N0&N'N0/P. 4O& O!O,O4O&<P. P
AO8-P
5P. (P0P. 
MP. 
M% P. (
M72P. :
N	P. 
NP. 
N-	(N00
N?:P. 
OO
O#	O&&
O50P. 8
P	P


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)Nr7   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_siord      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 )Nr7   moder   dimr)   rS   )rh   ir   ds|   CDF       
      dim             a         b            var                 c         d            x)r   r   r8   r   r   r   int16csyncrY   r
   )raw_filer#   rS   actualexpecteds        r$   
test_bytesrp      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)Nr7   rf   xr)   rS   S1rr          s     )r   r   r   r   r
   _get_encoded_fill_value
_FillValue)r#   rS   s     r$   test_encoded_fill_valuery      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*.ncrV   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 [        R                  " 5          Sn[        R                  " S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 existr=   rV   Tr:   r   rA   )r{   r|   rJ   rK   rL   rM   r   r*   rZ   RuntimeErrorassignValue)filenamemessager#   time_vars       r$   $test_itemset_no_segfault_on_readonlyr      s     ^^4H		 	 	"R'>B3T2a{{6*H 3	 
# , 4 4b9	 32	 
#	"s#   *BB 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)	Nr7   rf   rr   rW   rt   r)   .r8   )	r   r%   r   r   floatr*   r   rY   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   uintr7   r   r   )r   dtypeitemsizeappendr   r   r   r   rZ   r[   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)Nr7   rf   rr      vi2r)   )r   r%   r   r   r   lenrY   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)	Nr7   rf   rr   r   v1r   v2v3)r%   r   r   r   r   rj   r   )r#   s    r$   test_dtype_specifiersr   2  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?r7   r   	float_var
   r#   )r   metresrV   r'   s   metres)r   )r   r   r   r   r   r   r   rY   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[        R                  " 5          Sn[        R                  " SU[        5        U" 5       nS S S 5        WR                  5         g ! , (       d  f       Np= f! , (       d  f       Ny= 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   r=   )r{   r|   r   rJ   rK   simplefilterr   r*   rL   rM   sum)r#   rr   r   r   r   s       @r$   test_mmaps_segfaultr   T  s    ^^4H7$$&!!'*XD1QKK&q) 2 ')
 
	 	 	"R'>BF	 
#
 EEG 21 '& 
#	"s/   !C"C'C"&C3
C	C""
C03
D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)Nr7   zerodimr   F)r   r%   r   isrecr   )r   r#   r   s      r$   test_zero_dimensional_varr   l  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.ncr7   s   grailholyfloatswitchrV   s   floatsr   r   rG   r    r
   r   r#   s     r$   test_byte_gattsr   v  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.ncr7   zwas hereKilroyr8   s   was heres   ZootnaughtyrV   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.ncr7   r   ri   r   rr   rt   y)r   testDatar@   )r   rr   r   rW   r8   r(   r   r)   r   )r   r   r   r   r   arrayranger   r    r   r*   r   fullr
   copyr+   rZ   KeyErrorrG   valuer!   )dataSizer#   rr   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?rW   zms.ncr7   r@   )r   )r   linspacer0   masked_greaterr{   r|   r   r*   r
   missing_value
add_offsetscale_factorfloat32
compressedroundr	   r   r   r   r   r    )	ttmr}   r#   Tempfoundro   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r{   r|   r   r*   r5   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)   rW   r   r{   r|   r   r*   r5   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)TFFrW   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")@__doc__rB   os.pathr   r{   r   rN   rD   rJ   r   r   r   
contextlibr   numpyr   numpy.testingr   r	   r
   r   r   pytestr   rZ   scipy.ior   scipy._lib._tmpdirsr   __file__r|   r   r   markthread_unsafe
pytestmarkr%   r-   r5   rT   rd   rp   ry   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    	 *      % 2 2  *   *wx(&1
 [[&&
 	 	'&(Nb+8.#b=: "
O&:-.0*'-R"-R;'8;;;U	)r.   