
    5[gK                        d Z ddlZddlmZmZ ddlZddlZddlZddl	m
Z
 ddlmZ ddlmZ ddlZddlmZmZmZmZmZmZ ddlmZ dd	lmZ dd
lmZ  e ee      d      ZdZ dZ!ed        Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*d Z+d Z,d Z-d Z.d Z/d Z0d Z1d Z2d Z3d  Z4d! Z5d" Z6d# Z7d$ Z8d% Z9d& Z:d' Z;d( Z<d) Z=y)*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               /     K   t        | i |}d|_        |j                  dt               |j	                  dt
        d      }t        j                  t              |d d  d|_        |j                          | |j                          y w)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       U/var/www/html/bid-api/venv/lib/python3.12/site-packages/scipy/io/tests/test_netcdf.pymake_simpler&      sp     T$V$A$AIfh'FJ	:Dii!DG(DJGGI
GGGIs   BB
c                     t        | j                  d       | j                  d   }t        |j                  d       t        |j                  t
        f       t        |d   t
        dz
         y)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                 Z    t         j                  j                  |       }t        ||       y)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   .   s"      55c"D}%r/   c                     t        j                         } 	 t        j                         }t        j                  |       t        dd      5 }	 d d d        t        dd      5 }t        |       d|j                  d<   d d d        t        d      5 }t        |j                  t                t        |       t        |j                  d   d       d d d        t        dd      5 }t        |j                          t        |       t        |j                  d   d       d d d        t        dd      5 }t        |j                          t        |       d d d        t        dd      5 }t        |      5 }t        |j                          t        |       d d d        d d d        t               5 }t        r|j                  t         d	       t        dd      5 }t        |d
      5 }t        |j                         t        |       d d d        d d d        d d d        t        dd      5 }t        |d      5 }t        |j                          t        |       |j#                  dd       |j%                  ddd      }d|d d  d d d        d d d        t        d      5 }t        |       t        |j&                  d   d d  d       d d d        t        rt)                t)                t        j                  |        t+        j,                  |       y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   cx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   xY w# 1 sw Y   jxY w# 1 sw Y   oxY w# 1 sw Y   txY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# t        rt)                t)                t        j                  |        t+        j,                         w xY w)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   B   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

>OQk4(D D1QAJJ' O 2 )	 ! +u%T3'1AJJ'Q!!)Q/&&y#|DA ( & %OY/2B7 &
  NN
fK +* +* &% +* 21 #" %$ 21 )(	 !  (' &% &%
  NN
fsF  5N> LN> !L#<N> A L0N> #;L=N> 3"M
N> )M$5"MM$N> 1)NM>(!M1	M>NN> -N%:ANN%N> !(N2	N> L N> #L-(N> 0L:5N> =MN> 
MN> M!	M$$M.)N> 1M;6M>>N	NNN> N"	N%%N/*N> 2N;7N> >APc                     t               } t        | d      5  | j                         }d d d        t              }t        |      5 }t	        |       d d d        t        |      }t        t        t        |dd       t               }t        |dd      5 }|j                         }d d d        t        |      }t        |      5 }t	        |       t        |j                  d       d d d        t        |      }t        |d      5 }t	        |       t        |j                  d       d d d        y # 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   qxY w# 1 sw Y   y xY w)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;   D0D=E	"E"E!0D:=E	EE!E*c                     t               } t        | d      }d|_        |j                  dd       |j	                  dt
        j                  d      }d|d	<   d
|_        |j                          | j                         }d}t        ||       y )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                  Z   t        t               d      5 } | j                  dd       | j                  ddd      }t	        |j                         d       d	|_        t	        |j                         d	       d
|_        t	        |j                         d       d d d        y # 1 sw Y   y xY w)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                      t        t        t        d            D ]0  } t        | d      5  	 d d d        t        | dd      5  	 d d d        2 y # 1 sw Y   $xY w# 1 sw Y   IxY w)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                  ,   t        t        d      } t               5 }d}|j                  t        |       t        | dd      5 }|j                  d   }d d d        d d d        t        t        j                  d       y # 1 sw Y   -xY w# 1 sw Y   1xY w)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                     t               } t        | d      5 }|j                  dd       |j                  dt        d       d|j
                  d   d<   |j                          | j                         }d d d        t              } t        | d      5 }d|j
                  d   d<   d d d        y # 1 sw Y   =xY w# 1 sw Y   y xY w)	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B0B<0B9<Cc            	         ddg} t        j                  d      j                  dk(  r| j                  d       t        j                  d      j                  dk(  r| j                  d       t	        t               d      5 }|j                  dt               | D ]  }t        t        |j                  d|d       ! 	 d d d        y # 1 sw Y   y xY w)	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                  r   t               } t        | d      5 }|j                  dd       |j                  dddg      }d|d d  |j	                          t        | j                               }|j	                          t        | j                               }d d d        t        k(         y # 1 sw Y   xY w)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--B6c                  R   t        t               d      5 } | j                  dd       | j                  dddg       | j                  dt        j
                  dg       | j                  dt	        j                  t        j
                        dg       d d d        y # 1 sw Y   y xY w)	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                  *   t               } g d}t        | d      5 }d|_        |j                  dd       |j	                  ddd      }||d d  d|_        |j                          | j                         }d d d        t              } t        | d	      5 }t        |j                  d
       |j                  d   }t        |j
                  d       t        |j                  d       t        |d d  |       d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)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   6  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                     t        t        d      t        s[t        j                         5  t        j
                  d       t        d      5 } | j                  d   d d  }~d d d        d d d        fd}t               5 }d}|j                  t        |        |       }d d d        j                          y # 1 sw Y   YxY w# 1 sw Y   ]xY w# 1 sw Y   2xY w)Nr   errorTr;   latc                  n    t        d      5 } | j                  d   d d  cd d d        S # 1 sw Y   y xY w)NTr;   r   )r   r+   )r$   r   s    r%   doitz!test_mmaps_segfault.<locals>.doitX  s,    -;;u%a( .--s   +4r   )rz   r{   r   warningscatch_warningssimplefilterr   r+   r   rJ   rK   sum)r$   rq   r   rQ   r   r   s        @r%   test_mmaps_segfaultr   M  s    ^^4H$$&!!'*XD1QKK&q) 2 ')
 
	R

>7+F	 

 EEG 21 '& 
	s/   #CB;#C C;C	 CCCc                      t               } t        | d      5 }|j                  ddg       }|j                  du sJ |j                         |j	                          d d d        y # 1 sw Y   y xY w)Nr8   zerodimr   F)r   r&   r   isrecr    )r   r$   r   s      r%   test_zero_dimensional_varr   e  s[    	B	R	Yb1 ww%((		 
		s   AA##A,c                  V   t               5  d} t        | d      }d|j                  d<   d|j                  d<   |j                          t        | d      }t	        |j                  d   d       t	        |j                  d   d       |j                          d d d        y # 1 sw Y   y xY w)	Nzg_byte_atts.ncr8   s   grailholyfloatswitchrU   s   floatsr   r   rG   r!   r
   r   r$   s     r%   test_byte_gattsr   o  s     
##& (f!)g		#&Q]]6*H5Q]]7+Y7		 
s   BBB(c                     t               5  d} t        | d      }d|j                  d<   |j                          t        | d      }t	        |j                  d   d       d|j                  d<   |j                          t        | d	      }t	        |j                  d   d       t	        |j                  d   d       |j                          d d d        y # 1 sw Y   y xY w)
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            
         d} t               5  t        dd      5 }|j                  dd        |j                  ddd       |j                  d|        |j                  ddd      }t	        j
                  t        |             |d d  |j                  d	|        |j                  d	dd
      }t	        j
                  t        |             |d d  |j                  ddd       |j                          |j                          d d d        t        d      D ]s  }t        dd      5 }t	        j                  |j                  d   j                  |      |j                  d   _        t	        j                  | | f|      |j                  d   |d d d d f<   |j                          d d d        t        d      5 }t        |j                  d   d   |       t        |j                  d   dd d d d f   j                         t	        j                  | | f|             t        |j                  d   j                  j                  d   |dz          t        |j                  d   j                  j                  d   |dz          d d d        v t        d      5 }t!        t"              5 }|j                  d   j$                  d    d d d        j&                  }t        |j(                  d   d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   mxY w# 1 sw Y   xY w# 1 sw Y   fxY w# 1 sw Y   ExY w# 1 sw Y   y xY w)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#(3577Hh;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   L>C%K??#L>"A?L!L>4C
L>L>L2$L&-L2.L>?L		L>LL>L#L>&L/+L22L;	7L>>Mc                     t        j                  ddd      } d| d<   t         j                  j                  | d      }t	        t
        d      }t        |d	      5 }|j                  d
   }t        |j                  d       t        |j                  d       t        |j                  t        j                  d             |d d  j                         }~t        j                  |j                         d      }t        ||       d d d        t!               5  d}t        |dd	      }|j#                  d
t%        |             |j'                  d
dd      }d|_	        d|_        d|_
        ||d d  |j)                          t        |d	      5 }|j                  d
   }t        |j                  d       t        |j                  d       t        |j                  t        j                  d             t        j                  |j                         d      }|d d  j                         }~t        ||       d d d        d d d        y # 1 sw Y   DxY w# 1 sw Y   xY w# 1 sw Y   y xY w)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/x( 
/ 
#D9	-R1s4DE! Q		5;;}-D++T2"-**BJJt,<=xx3HG&&(EE8, 6 
 
/	.* 65 
s3   B)IA6IB)I4III	II'c                      t        t        d      } t        | d      5 }|j                  d   d d  }t	        |g d       d d d        y # 1 sw Y   y xY w)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                      t        t        d      } t        | d      5 }|j                  d   d d  }t	        |g d       t        |g d       d d d        y # 1 sw Y   y xY w)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                      d} t        t        d      }t        |d      5 }|j                  d   d d  }t	        |g d       t        || ddg       d d d        y # 1 sw Y   y xY w)	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   0AA"c                      t        t        d      } t        | d      5 }|j                  d   d d  }t	        |g d       d d d        y # 1 sw Y   y xY w)Nr   Tr   var4_missingValuer   r   r   s      r%   test_read_withMissingValuer    sH     .";<E	U	.!++1215G%9: 
/	.	.r   c                      t        t        d      } t        | d      5 }|j                  d   d d  }t	        |g d       d d d        y # 1 sw Y   y xY w)Nr   Tr   var5_fillvalNaNr   r   r   s      r%   test_read_withFillValNaNr    sF    .";<E	U	.!++/03G%9: 
/	.	.r   c                      t        t        d      } t        | d      5 }|j                  d   d d  }t	        |g d       d d d        y # 1 sw Y   y xY w)Nr   Tr   	var6_charr   r   r   s      r%   test_read_withCharr    sE    .";<E	U	.!++k*1-G%9: 
/	.	.r   c                      t        t        d      } t        | d      5 }|j                  d   d d  }t	        |ddgddgddgg       d d d        y # 1 sw Y   y xY w)Nr   Tr   var7_2dFr   r   s      r%   test_read_with2dVarr
    sW    .";<E	U	.!++i(+GtUmeU^eT]%ST 
/	.	.s   (AAc                      t        t        d      } t        | dd      5 }|j                  d   d d  }t	        |g d       t        |g d       d d d        y # 1 sw Y   y xY w)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   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   r&   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/   