
    _MhL                        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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j"        j#        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 Z0d Z1d Z2d Z3d Z4d Z5d Z6d  Z7d! Z8d" Z9d# Z:d$ Z;d% Z<d& Z=d' Z>d( Z?d) Z@dS )*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|_        |                    dt                     |                    dt
          d          }t          j        t                    |d d <   d|_        |	                                 |V  |
                                 d S )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       Z/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/io/tests/test_netcdf.pymake_simpler&      s      T$V$$A$AIfh'''FJ	::Di!!DG(DJGGIII
GGGGGIIIII    c                     t          | j        d           | j        d         }t          |j        d           t          |j        t
          f           t          |d         t
          dz
             dS )zExample fileobj tests    Created for a testr   s   days since 2008-01-01   N)r
   r   	variablesr   shaper   )	ncfileobjr   s     r%   check_simpler/   *   sh    "$9:::v&D5666h[)))b8A:&&&&&r'   c                 d    t           j                            |           }t          ||           dS )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/      5c""D}%%%%%r'   c                  &	   t          j                    } 	 t          j                    }t          j        |           t          dd          5 }	 d d d            n# 1 swxY w Y   t          dd          5 }t          |           d|j        d<   d d d            n# 1 swxY w Y   t          d          5 }t          |j
        t                      t          |           t          |j        d         d           d d d            n# 1 swxY w Y   t          dd          5 }t          |j
                    t          |           t          |j        d         d           d d d            n# 1 swxY w Y   t          dd          5 }t          |j
                    t          |           d d d            n# 1 swxY w Y   t          dd          5 }t          |          5 }t          |j
                    t          |           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t                      5 }t          r|                    t           d	           t          dd          5 }t          |d
          5 }t          |j
                   t          |           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          dd          5 }t          |d          5 }t          |j
                    t          |           |                    dd           |                    ddd          }d|d d <   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          d          5 }t          |           t          |j        d         d d          d           d d d            n# 1 swxY w Y   t          rt)                       t)                       t          j        |            t+          j        |           d S # 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   F   s<   
)++CH!##
c** 	a	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 c** 	+aOOO)*AM+&	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ %% 	8[111OOO{3Q777		8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 c** 	8a
N###OOO{3Q777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 5111 	Q
N###OOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 +t$$ 	 T""  aAJ'''Q                             	  	  	  	  	  	  	  	  	  	  	  	  	  	  	     	$C Q

>OQ Q Qk4(( $D D111 $QAJ''' OOO$ $ $ $ $ $ $ $ $ $ $ $ $ $ $$ $ $ $ $ $ $ $ $ $ $ $ $ $ $		$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ +u%% 	T3'' 1AJ'''Q!!)Q///&&y#|DDAAA              	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 %% 	8OOOY/2B777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8
  	 NNNNNN
f  	 NNNNNN
fs  7Q AQ AQ !A"Q 5BQ BQ "B#Q 5AD;Q DQ DQ "A E."Q .E22Q 5E26Q 
%F;/Q ;F??Q F?Q H.&%HH.H	H.H	H."Q .H22Q 5H26Q 3K*:K$J<0K<K  KK KK*K	K*K	K*Q *K..Q 1K.2Q NAM;/N;M?	?NM?	NQ NQ NQ ,3O+Q +O//Q 2O/3Q ARc                     t                      } t          | d          5  |                                 }d d d            n# 1 swxY w Y   t          |          }t          |          5 }t	          |           d d d            n# 1 swxY w Y   t          |          }t          t          t          |dd           t                      }t          |dd          5 }|                                }d d d            n# 1 swxY w Y   t          |          }t          |          5 }t	          |           t          |j        d           d d d            n# 1 swxY w Y   t          |          }t          |d          5 }t	          |           t          |j        d           d d d            d S # 1 swxY w Y   d S )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   iiG	Wc	"	" % %""$$% % % % % % % % % % % % % % % gG	W		 R               gG*k7C>>>		I	YQ	/	/	/ '4$$&&' ' ' ' ' ' ' ' ' ' ' ' ' ' '   I	Y		 +4TT&***+ + + + + + + + + + + + + + +   I	Y	*	*	* +dTT&***+ + + + + + + + + + + + + + + + + +sY   A  AA)BB	B	C==DD&%EEE%F44F8;F8c                  L   t                      } t          | d          }d|_        |                    dd           |                    dt
          j        d          }d|d	<   d
|_        |                                 | 	                                }d}t          ||           d S )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    yyHH3'''A ACeQ


5"(H
5
5CCFCEFFHHH  F$H@ """""r'   c                     t          t                      d          5 } |                     dd           |                     ddd          }t	          |                                d           d	|_        t	          |                                d	           d
|_        t	          |                                d           d d d            d S # 1 swxY w Y   d S )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	   	WYYS	)	)	) =Q	#q!!!udF33S0022G<<< S0022G<<<$S0022G<<<= = = = = = = = = = = = = = = = = =s   B"CCCc                      t          t          t          d                    D ]V} t          | d          5  	 d d d            n# 1 swxY w Y   t          | dd          5  	 d d d            n# 1 swxY w Y   Wd S )Nz*.ncrU   Fr;   )r   pjoinTEST_DATA_PATHr   )fnames    r%   test_read_example_datar}      s   eNF3344  $$ 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	%000 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 s#   AA	
A	 A..A2	5A2	c                  Z   t          t          d          } t                      5 }d}|                    t          |           t          | dd          5 }|j        d         }d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          t          |j	        d           d S )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      s    ^^44H			 +R

>7+++3T222 	+a{6*H	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+	+ + + + + + + + + + + + + + + , 4b99999s5   0BA."B.A2	2B5A2	6BB	B	c                     t                      } t          | d          5 }|                    dd           |                    dt          d           d|j        d         d<   |                                 |                                 }d d d            n# 1 swxY w Y   t          |          } t          | d          5 }d|j        d         d<   d d d            d S # 1 swxY w Y   d S )	Nr8   re   rq   rV   rs   r+   .r9   )	r   r&   r   r   floatr,   r    rX   r   )streamr$   contentss      r%   test_appending_issue_gh_8625r     s_   YYF	V#	&	&	& %!	#q!!!	eV,,, !C				??$$% % % % % % % % % % % % % % % XF	V#	&	&	& "! !C" " " " " " " " " " " " " " " " " "s$   A+BBBC  C$'C$c            	         ddg} t          j        d          j        dk    r|                     d           t          j        d          j        dk    r|                     d           t	          t                      d          5 }|                    dt                     | D ]}t          t          |j
        d|d            	 d d d            d S # 1 swxY w Y   d S )	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	x1$$e	x A%%f	WYY	$	$ O	&(+++ 	O 	OB*a&6INNNN	OO O O O O O O O O O O O O O O O O Os   >CCCc                     t                      } t          | d          5 }|                    dd           |                    dddg          }d|d d <   |                                 t          |                                           }|                                 t          |                                           }d d d            n# 1 swxY w Y   t          ||k               d S )Nr8   re   rq      vi2r+   )r   r&   r   r   r    lenrX   r   )r   r$   r   
len_single
len_doubles        r%   test_flush_rewindr   !  s   YYF	V#	&	&	& ,!	#a   S$..!!!				**++
				**++
, , , , , , , , , , , , , , , J*$%%%%%s   B CCCc                  z   t          t                      d          5 } |                     dd           |                     dddg           |                     dt          j        dg           |                     dt	          j        t          j                  dg           d d d            d S # 1 swxY w Y   d S )	Nr8   re   rq   r   v1r   v2v3)r&   r   r   r   r   ri   r   )r$   s    r%   test_dtype_specifiersr   /  s     
WYYS	)	)	) :Q	#a   	tcU+++	rx#///	rx11C5999	: : : : : : : : : : : : : : : : : :s   BB00B47B4c                     t                      } g d}t          | d          5 }d|_        |                    dd           |                    ddd          }||d d <   d|_        |                                 |                                 }d d d            n# 1 swxY w Y   t          |          } t          | d	          5 }t          |j        d
           |j	        d         }t          |j        d           t          |j
        d           t          |d d          |           d d d            d S # 1 swxY w Y   d S )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333E	R		 !(		+r***$$[#~FF		!!!"					;;==! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
		B	R		 -QY 5666K,	Y_i000Y_e,,,	!!!e,,,- - - - - - - - - - - - - - - - - -s%   A+BB!BA%D66D:=D:c                     t          t          d          t          s~t          j                    5  t          j        d           t          d          5 } | j        d         d d          }~d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   fd}t                      5 }d}|	                    t          |            |            }d d d            n# 1 swxY w Y   |                                 d S )Nr   errorTr;   latc                      t          d          5 } | j        d         d d          cd d d            S # 1 swxY w Y   d S )NTr;   r   )r   r,   )r$   r   s    r%   doitz!test_mmaps_segfault.<locals>.doit\  s    --- 	);u%aaa(	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s   599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   ^^44H $&& 	 	!'***XD111 QK&qqq)              	 	 	 	 	 	 	 	 	 	 	 	 	 	 	) ) ) ) )
 
		 R

>7+++DFF	              
 EEGGGGGsG   &BA:.B:A>	>BA>	BBB/(C##C'*C'c                      t                      } t          | d          5 }|                    ddg           }|j        du sJ |j                    |                                 d d d            d S # 1 swxY w Y   d S )Nr8   zerodimr   F)r   r&   r   isrecr    )r   r$   r   s      r%   test_zero_dimensional_varr   i  s    	B	R		 Yb11 w%				                 s   AA00A47A4c                  |   t                      5  d} t          | d          }d|j        d<   d|j        d<   |                                 t          | d          }t	          |j        d         d           t	          |j        d         d           |                                 d d d            d S # 1 swxY w Y   d S )	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55Q]7+Y777					 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   BB11B58B5c                     t                      5  d} t          | d          }d|j        d<   |                                 t          | d          }t	          |j        d         d           d|j        d<   |                                 t          | d	          }t	          |j        d         d           t	          |j        d         d           |                                 d d d            d S # 1 swxY w Y   d S )
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77				!                 s   CC00C47C4c            
      .   d} t                      5  t          dd          5 }|                    dd            |                    ddd           |                    d|            |                    ddd          }t	          j        t          |                     |d d <   |                    d	|            |                    d	dd
          }t	          j        t          |                     |d d <   |                    ddd           |                                 |                                 d d d            n# 1 swxY w Y   t          d          D ]}t          dd          5 }t	          j	        |j
        d         j        |          |j
        d         _        t	          j        | | f|          |j
        d         |d d d d f<   |                                 d d d            n# 1 swxY w Y   t          d          5 }t          |j
        d         d         |           t          |j
        d         dd d d d f                                         t	          j        | | f|                     t          |j
        d         j        j        d         |dz              t          |j
        d         j        j        d         |dz              d d d            n# 1 swxY w Y   t          d          5 }t!          t"                    5 }|j
        d         j        d          d d d            n# 1 swxY w Y   |j        }t          |j        d         d           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )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77 	1fd+++VS)444c8,,,  c622A8E(OO,,AaaaDc8,,,  c622A8E(OO,,AaaaDZ.@AAAGGIIIGGIII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 q 	I 	IA5s;; q+-9Q[5H5Mq+Q+QF#(357Hh;OQR3S3SJ'111aaa0			               566 I!Q[04a888Q[4RAAAX>CCEEWh%91==? ? ?Q[05;A>!DDDQ[49?BAaCHHHI I I I I I I I I I I I I I I 122 	-ax(( <BJ'3F;;< < < < < < < < < < < < < < <BV,,,		- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-A$- $- $- $- $- $- $- $- $- $- $- $- $- $- $- $- $- $-s   N
DE5N
E	N
E		%N
.A6G0$N
0G44N
7G48N

CK#N
#K''N
*K'+N
?M2L9-M29L==M2 L=%M2&N
2M6	6N
9M6	:N

NNc                  \   t          j        ddd          } d| d<   t           j                            | d          }t	          t
          d          }t          |d	          5 }|j        d
         }t          |j	        d           t          |j
        d           t          |j        t          j        d                     |d d                                          }~t          j        |                                d          }t          ||           d d d            n# 1 swxY w Y   t!                      5  d}t          |dd	          }|                    d
t%          |                     |                    d
dd          }d|_	        d|_        d|_
        ||d d <   |                                 t          |d	          5 }|j        d
         }t          |j	        d           t          |j
        d           t          |j        t          j        d                     t          j        |                                d          }|d d                                          }~t          ||           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )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..11E	U	.	.	. )!{=)T'...T_b)))T&
4(8(8999QQQ""$$8BMMOOQ//x((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) 
 - -#D999	-R111s4DEE! QQQ				555 	-;}-D+T222"---*BJt,<,<===x33HG&&((EE8,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-- - - - - - - - - - - - - - - - - -sK   "B3D!!D%(D%:BJ!
B3J	=J!	J	J!J	J!!J%(J%c                      t          t          d          } t          | d          5 }|j        d         d d          }t	          |g d           d d d            d S # 1 swxY w Y   d S )Nexample_3_maskedvals.ncTr   var1_fillval0FTFrz   r{   r   r,   r6   r|   r$   vardatas      r%   !test_read_withValuesNearFillValuer     s    .";<<E	U	.	.	. ;!+o.qqq1G%9%9%9:::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;   (AA #A c                      t          t          d          } t          | d          5 }|j        d         d d          }t	          |g d           t          |g d           d d d            d S # 1 swxY w Y   d S )Nr   Tr   var2_noFillvalFFFr+   rV   r   rz   r{   r   r,   r6   r
   r   s      r%   test_read_withNoFillValuer     s     .";<<E	U	.	.	. '!+./2G%:%:%:;;;Wggg&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 's   :A..A25A2c                      d} t          t          d          }t          |d          5 }|j        d         d d          }t	          |g d           t          || ddg           d d d            d S # 1 swxY w Y   d S )	Nr   r   Tr   var3_fillvalAndMissingValue)TFFrV   r   r   )IRRELEVANT_VALUEr|   r$   r   s       r%   &test_read_withFillValueAndMissingValuer     s     .";<<E	U	.	.	. 8!+;<QQQ?G%9%9%9:::W/A67778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8s   ;A11A58A5c                      t          t          d          } t          | d          5 }|j        d         d d          }t	          |g d           d d d            d S # 1 swxY w Y   d S )Nr   Tr   var4_missingValuer   r   r   s      r%   test_read_withMissingValuer    s     .";<<E	U	.	.	. ;!+121115G%9%9%9:::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;r   c                      t          t          d          } t          | d          5 }|j        d         d d          }t	          |g d           d d d            d S # 1 swxY w Y   d S )Nr   Tr   var5_fillvalNaNr   r   r   s      r%   test_read_withFillValNaNr    s    .";<<E	U	.	.	. ;!+/03G%9%9%9:::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;r   c                      t          t          d          } t          | d          5 }|j        d         d d          }t	          |g d           d d d            d S # 1 swxY w Y   d S )Nr   Tr   	var6_charr   r   r   s      r%   test_read_withCharr    s    .";<<E	U	.	.	. ;!+k*111-G%9%9%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            d S # 1 swxY w Y   d S )Nr   Tr   var7_2dFr   r   s      r%   test_read_with2dVarr
    s    .";<<E	U	.	.	. U!+i(+GtUmeU^eT]%STTTU U U U U U U U U U U U U U U U U Us   /A##A'*A'c                      t          t          d          } t          | dd          5 }|j        d         d d          }t	          |g d           t          |g d           d d d            d S # 1 swxY w Y   d S )Nr   F)r   r<   r   r   r   r   r   s      r%   test_read_withMaskAndScaleFalser    s     .";<<E 
UU	;	;	; )q+;<QQQ?G%:%:%:;;;Wiii((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )s   :A//A36A3)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 E E E E E E E E E E E E E E  * * * * * *             * * * * * *wwx((&11
 [&
 	 	 	' ' '& & &(K K K\+ + +8.# .# .#b= = =  : : : " " "
O 
O 
O& & &: : :- - -.  0      *'- '- '-R"- "- "-R; ; ;' ' '8 8 8; ; ;; ; ;; ; ;U U U	) 	) 	) 	) 	)r'   