
    -iieL                        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 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 Z/d Z0d Z1d Z2d Z3d Z4d Z5d  Z6d! Z7d" Z8d# Z9d$ 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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       `/var/www/html/bet.cuttalo.com/ml/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_matchesr5   2   s/      5c""D}%%%%%r&   c                  0	   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          j                    5  t          rt          j        d	d
t"                     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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   sC   
)++CK!##
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                             	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  $&& 
	$ 
	$ 'H"  
 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$K5KKKK	KK/K	K/K	 K/#Q /K33Q 6K37Q 
NAN 4N N	NN	NQ NQ NQ 13O0$Q 0O44Q 7O48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 )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   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 )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    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 )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	   	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*.ncrV   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                  d   t          t          d          } t          j                    5  d}t          j        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 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$    ^^44H		 	"	" + +R'>BBB3T222 	+a{6*H	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+	+ + + + + + + + + + + + + + + , 4b99999s5   0B
A3'B
3A7	7B
:A7	;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 )	Nr7   rf   rr   rW   rt   r*   .r8   )	r   r%   r   r   floatr+   r   rY   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   uintr7   r   r   )r   dtypeitemsizeappendr   r   r   r   rZ   r[   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 )Nr7   rf   rr      vi2r*   )r   r%   r   r   r   lenrY   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 )	Nr7   rf   rr   r   v1r   v2v3)r%   r   r   r   r   rj   r   )r#   s    r$   test_dtype_specifiersr   2  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?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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          j                    5  d}t          j        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   r=   )r{   r|   r   rJ   rK   simplefilterr   r+   rL   rM   sum)r#   rr   r   r   r   s       @r$   test_mmaps_segfaultr   T  s   ^^44H $&& 	 	!'***XD111 QK&qqq)              	 	 	 	 	 	 	 	 	 	 	 	 	 	 	) ) ) ) )
 
	 	"	"  R'>BBBDFF	              
 EEGGGGGsG   &BA:.B:A>	>BA>	BBB4(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 )Nr7   zerodimr   F)r   r%   r   isrecr   )r   r#   r   s      r$   test_zero_dimensional_varr   l  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.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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.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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.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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?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..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r{   r|   r   r+   r5   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*   rW   r   r{   r|   r   r+   r5   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)TFFrW   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)@__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 2 2 2 2 2 2 2 2 2 2 2 2  * * * * * *             * * * * * *wwx((&11
 [&
 	 	 	' ' '& & &(N N Nb+ + +8.# .# .#b= = =  : : : " " "
O 
O 
O& & &: : :- - -.  0      *'- '- '-R"- "- "-R; ; ;' ' '8 8 8; ; ;; ; ;; ; ;U U U	) 	) 	) 	) 	)r&   