
    Bpj[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Jr  SSKrSSKJrJrJr  SSKrSSKJr  SS	KJr  \" \" \5      S
5      rSrSr\R<                  R>                  r \S 5       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 r.S r/S r0S r1S r2S r3S  r4S! r5S" r6S# r7S$ r8S% r9S& r:S' r;S( r<S) r=g)*zTests for netcdf     N)joindirname)BytesIO)glob)chdircontextmanager)assert_assert_allcloseassert_equal)raises)netcdf_filedata   bc               #      #    [         R                  " 5        n [        U 5         U v   SSS5        SSS5        g! , (       d  f       N= f! , (       d  f       g= f7f)ay  Create, return, and change directory to a temporary directory

Examples
--------
>>> import os
>>> my_cwd = os.getcwd()
>>> with in_tempdir() as tmpdir:
...     _ = open('test.txt', 'wt').write('some text')
...     assert os.path.isfile('test.txt')
...     assert os.path.isfile(os.path.join(tmpdir, 'test.txt'))
>>> os.path.exists(tmpdir)
False
>>> os.getcwd() == my_cwd
True
N)tempfileTemporaryDirectoryr   )tds    V/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/scipy/io/tests/test_netcdf.py
in_tempdirr      s<     " 
	$	$	&"2YH  
'	&Y 
'	&s/   AA:A	A
A	A
AAc               /     #    [        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       r   make_simpler(   2   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_simpler0   ?   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_matchesr8   G   s       55c"D%r1   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                  (       d   e[        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          [        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        [         R                  " U 5        [$        R&                  " U5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNS= 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N= f! , (       d  f       GN3= f! , (       d  f       GN== f! , (       d  f       GN= f! [         R                  " U 5        [$        R&                  " W5        f = f)Nz	simple.ncwar,   	appendRanFmmaprbTzr+bapp_dimapp_vari)r@   *   )osgetcwdr   mkdtempr   r(   r   r0   _attributesuse_mmapr   r	   openwarningscatch_warningsr   r   r-   shutilrmtree)cwdtmpdirr'   fobjvars        r   test_read_write_filesrR   [   s   
))+C@!!#
c*a + c*aO)*AMM+& + %:::O{3Q7	 & c*a

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

N#O 2 +t$T"aAJJ'Q # % $$&k4(D D1QAJJ' O 2 ) ' +u%T3'1AJJ'Q!!)Q/&&y#|DA ( & %OY/2B7 &
 	f{ +* +* &% +* 21 #" %$ 21 )( '& (' &% &%
 	fsD  7O K2O $L?O 8L
O ?L(O /&L:O )M5&MM#O  NN!M09NN	O N8*AN&:N8O (O
=O 2
L<O 
LO 
L% O (
L72O :
M	O 
M	M
M-(O 0
M?:N
N	N
N#O &
N5	0N88
OO 

OO .P
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)Nr:   rT   )version)	r   r(   getvaluer   r0   assert_raises
ValueErrorr   version_byte)eg_sio1str_valeg_sio2f2eg_sio3	eg_sio_64f_64s          r   test_read_write_siorb      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 )Nr:   moder   dimr,   rQ   )rf   ir   ds|   CDF       
      dim             a         b            var                 c         d            x)r   r   r;   r   r   r    int16csyncrW   r   )raw_filer'   rQ   actualexpecteds        r   
test_bytesrn      s    yHH3'A ACeQ


5"((H
5CCFCEFFH F$H@ "r1   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)Nr:   rd   xr,   rQ   S1rp          s     )r   r   r   r   r   _get_encoded_fill_value
_FillValue)r'   rQ   s     r   test_encoded_fill_valuerw      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*.ncrT   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 existignorerT   Tr=   r   rC   )ry   rz   rJ   rK   filterwarningsRuntimeWarningr   r-   rX   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)	Nr:   rd   rp   rU   rr   r,   .r;   )	r   r(   r   r   floatr-   r#   rW   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   uintr:   r   r   )r    dtypeitemsizeappendr   r   r   r   rX   rY   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)Nr:   rd   rp      vi2r,   )r   r(   r   r   r#   lenrW   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)	Nr:   rd   rp   r   v1r   v2v3)r(   r   r   r   r    rh   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?r:   r   	float_var
   r'   )r   metresrT   r*   s   metres)r   )r   r   r   r   r   r"   r#   rW   r   r-   r.   r
   )ioitemsr'   r   r   s        r   test_ticket_1720r   G  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[        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>.doith  s,    -;;u%a( .--s   (
6r   r   )
ry   rz   rJ   rK   simplefilterr   r-   r   r   sum)r'   rp   r   r   r   s       @r   test_mmaps_segfaultr   ^  s    ^^4H		 	 	"g&-E"1%A . 
#)
 
	 	 	"R'>BF	 
#
 EEG .- 
#	" 
#	"s/   !CCC&C(
C	C
C%(
C6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)Nr:   zerodimr   F)r   r(   r   isrecr#   )r   r'   r   s      r   test_zero_dimensional_varr   u  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.ncr:   s   grailholyfloatswitchrT   s   floatsr   r   rG   r$   r   r   r'   s     r   test_byte_gattsr     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.ncr:   zwas hereKilroyr;   s   was heres   ZootnaughtyrT   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.ncr:   r   rg   r   rp   rr   y)r   testDatarB   )r   rp   r   rU   r;   r+   r   r,   r   )r   r   r   r   r    arrayranger#   r$   r   r-   r   fullr   copyr.   rX   KeyErrorrG   valuer%   )dataSizer'   rp   r   rB   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?rU   zms.ncr:   rB   )r   )r    linspacer3   masked_greaterry   rz   r   r-   r   missing_value
add_offsetscale_factorfloat32
compressedroundr
   r   r   r   r   r$   )	ttmr{   r'   Tempfoundrm   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ry   rz   r   r-   r8   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,   rU   r   ry   rz   r   r-   r8   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)TFFrU   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__rD   os.pathr   ry   r   rL   r   rJ   r   r   r   
contextlibr   r   numpyr    numpy.testingr	   r
   r   pytestr   rX   scipy.ior   __file__rz   r   r   markthread_unsafe
pytestmarkr   r(   r0   r8   rR   rb   rn   rw   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r   r1   r   <module>r     s    	 *      ,  @ @  *  wx(&1
 [[&&
  * 	 	'&(CL+8.#b=: "
O&:-..*'-R"-R;'8;;;U	)r1   