L iLdZddlZddlmZmZddlZddlZddlZddl m Z ddl m Z ddl m Z ddlZddlmZmZmZmZmZmZddlZddlmZdd lmZdd lmZeeed Zd Z d Z!ejDjFZ$e dZ%dZ&dZ'dZ(dZ)dZ*dZ+dZ,dZ-dZ.dZ/dZ0dZ1dZ2dZ3dZ4dZ5dZ6d Z7d!Z8d"Z9d#Z:d$Z;d%Zd(Z?d)Z@y)*z Tests for netcdf N)joindirname)BytesIO)glob)contextmanager)assert_assert_allclose assert_equal break_cyclessuppress_warningsIS_PYPY)raises) netcdf_file) in_tempdirdata bc/Kt|i|}d|_|jdt|j dt d}t jt|ddd|_|j||jyw)NCreated for a testtimerzdays since 2008-01-01) rhistorycreateDimensionN_EG_ELScreateVariable VARTYPE_EGnparangeunitsflushclose)argskwargsfrs `/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/scipy/io/tests/test_netcdf.py make_simpler&spT$V$A$AIfh'  FJ :Dii!DG(DJGGI GGGIsBB ct|jd|jd}t|jdt|jt ft|dt dz y)zExample fileobj tests Created for a testrsdays since 2008-01-01N)r r variablesrshaper) ncfileobjrs r% check_simpler.*sT""$9:   v &D56h[)b8A:&cZtjj|}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)rma getmaskarrayr )arr expected_maskmasks r%assert_mask_matchesr62s" 55  c "D}%r/ctj} tj}tj|t dd5} dddt dd5}t|d|jd<dddt d5}t|jt t|t|jdddddt dd5}t|j t|t|jdddddt dd5}t|j t|dddtdd5}t |5}t|j t|ddddddt5}tr|jt d tdd5}t |d 5}t|jt|dddddddddtdd 5}t |d5}t|j t||j#d d|j%d dd}d|ddddddddt d5}t|t|j&d ddddddtrt)t)tj|t+j,|y#1swYxYw#1swYxYw#1swYcxYw#1swY!xYw#1swYxYw#1swYxYw#1swYxYw#1swYjxYw#1swYoxYw#1swYtxYw#1swYxYw#1swYxYw#1swYxYw#trt)t)tj|t+j,wxYw)Nz simple.ncwar* appendRanFmmaprbz2Cannot close a netcdf_file opened with mmap=True.*Tzr+bapp_dimapp_vari)r>*)osgetcwdtempfilemkdtempchdirr&rr. _attributesr use_mmapr ropenr filterRuntimeWarningrrr+r shutilrmtree)cwdtmpdirr$fobjsupvars r%test_read_write_filesrSFsO ))+CH!!#  c * a  c * +a O)*AMM+ & +  % 8 [ 1 O {3Q 7  8c * 8a  N # O {3Q 7 8 5 1 Q  N # O +t $ T" aAJJ'Q    $C >OQk4( $D D1$QAJJ' O$ $  $+u % T3' 1AJJ'Q!!)Q/&&y#|DA    % 8 O Y/2B 7 8  N N   fK   + +  8 8 8 8       $$ $ $  $ $     8 8  N N   fsF5N> L N>!L#<N>AL0N>#;L=N>3"M N>) M$5"MM$N>1)N M>(!M1 M>N N>- N%:A NN%N>!(N2 N>L N>#L-(N>0L:5N>=MN> MN>M! M$$M.)N>1M; 6M>>N N  NN>N" N%%N/*N>2N;7N>>APct}t|d5|j}dddt}t|5}t |dddt|}t t t|ddt}t|dd5}|j}dddt|}t|5}t |t|jddddt|}t|d5}t |t|jddddy#1swY xYw#1swYxYw#1swYxYw#1swYqxYw#1swYyxYw)Nr8rT)version) rr&getvaluerr. assert_raises ValueErrorr version_byte)eg_sio1str_valeg_sio2f2eg_sio3 eg_sio_64f_64s r%test_read_write_siorcsJiG Wc "%""$%gG W RgG*k7C> I YQ /'4$$&' I Y +4TT&&*+ I Y *+dTT&&*+++%%''++ ++s;D0 D=E "E"E!0D:=E EE!E*ct}t|d}d|_|jdd|j dt j d}d|d <d |_|j|j}d }t||y) Nr8moderdimr*rR)rgirds|CDF dim ab var cdx) rrr9rrrint16csyncrXr )raw_filer$rRactualexpecteds r% test_bytesrosyHH3'A ACeQ  5"((H 5C CF CEFFH    F$H@"r/cZttd5}|jdd|jddd}t |j dd |_t |j d d |_t |j ddddy#1swYyxYw) Nr8rexr*rRS1rqs)rrrrr _get_encoded_fill_value _FillValue)r$rRs r%test_encoded_fill_valuerxs WYS )=Q #q!udF3S002G< S002G<$S002G<===s BB!!B*ctttdD]0}t|d5 dddt|dd5 ddd2y#1swY$xYw#1swYIxYw)Nz*.ncrUFr;)rpjoinTEST_DATA_PATHr)fnames r%test_read_example_datar}sheNF34  $    % 0        sAAA A# c,ttd}t5}d}|jt|t |dd5}|j d}ddddddttjdy#1swY-xYw#1swY1xYw)N example_1.ncsCannot close a netcdf_file opened with mmap=True, when netcdf_variables or arrays referring to its data still existrUTr;rrA) rzr{r rJrKrr+rY RuntimeError assignValue)filenamerQmessager$time_vars r%$test_itemset_no_segfault_on_readonlyrs^^4H  +R >7+ 3T 2 +a{{6*H + +, 4 4b9  + + ++s#'B A>B >B B  Bct}t|d5}|jdd|jdtdd|j dd<|j |j}dddt}t|d5}d|j dd<dddy#1swY=xYw#1swYyxYw) Nr8rerqrVrsr*.r9) rr&rrfloatr+r rXr)streamr$contentss r%test_appending_issue_gh_8625rs YF V# &%! #q! eV, ! C  ??$ %X F V# &"! ! C""%%""sAB0B<0B9<Cc ddg}tjdjdk(r|jdtjdjdk(r|jdt t d5}|j dt|D]}tt|jd|d! dddy#1swYyxYw) Nint64uint64intuintr8rr) rdtypeitemsizeappendrrrrrYrZr)dtypesr$dts r%test_write_invalid_dtypersx F xx1$ e xx  A% f WY $O &(+ OB *a&6&6I N OOOOs ?;CC crt}t|d5}|jdd|jdddg}d|dd|j t |j }|j t |j }dddtk(y#1swYxYw)Nr8rerqvi2r*)rr&rrr lenrXr)rr$r len_single len_doubles r%test_flush_rewindr!s YF V# &,! #a  S$ .!  *+   *+ , J* $%,,s A>B--B6cRttd5}|jdd|jdddg|jdtj dg|jdt j tj dgdddy#1swYyxYw) Nr8rerqrv1rv2v3)r&rrrrrir)r$s r%test_dtype_specifiersr/s WYS ):Q #a  tcU+ rxx#/ rxx1C59 :::s A>BB&c*t}gd}t|d5}d|_|jdd|j ddd}||ddd|_|j |j}dddt}t|d 5}t|jd |jd}t|j d t|jd t|dd|dddy#1swYxYw#1swYyxYw) N) rg?g?g333333?g?g?g333333?gffffff?g?g?r8r float_var r$)rmetresrUr(smetres)r) rrrrrrr rXr r+r,r )ioitemsr$rrs r%test_ticket_1720r:s B 3E R !(  +r*$$[#~F  ! "   ;;=!  B R -QYY 56KK , Y__i0Y__e, ! e, --!!--sAC=A!D =D Dcttdts[tj5tj dt d5}|jddd}~ddddddfd}t5}d}|jt||}dddjy#1swYYxYw#1swY]xYw#1swY2xYw)NrerrorTr;latcntd5}|jdddcdddS#1swYyxYw)NTr;r)rr+)r$rs r%doitz!test_mmaps_segfault..doit\s5  - );;u%a( ) ) )s+4r) rzr{r warningscatch_warnings simplefilterrr+r rJrKsum)r$rqrrQrrs @r%test_mmaps_segfaultrQs^^4H   $ $ &   ! !' *XD1 QKK&q)  )  R >7+ F  EEG    s/#CB;#C C;C CCCct}t|d5}|jddg}|jdusJ|j|j dddy#1swYyxYw)Nr8zerodimrF)rr&risrecr )rr$rs r%test_zero_dimensional_varrisd B R   Yb 1ww%((  s AA##A,cVt5d}t|d}d|jd<d|jd<|jt|d}t |jddt |jdd|jdddy#1swYyxYw) Nzg_byte_atts.ncr8sgrailholyfloatswitchrUsfloatsrrrGr!r rr$s r%test_byte_gattsrss  # # & ( f!) g  # &Q]]6*H5Q]]7+Y7     s B BB(ct5d}t|d}d|jd<|jt|d}t |jddd|jd<|jt|d }t |jddt |jdd|jdddy#1swYyxYw) Nz append_dat.ncr8zwas hereKilroyr9swas heresZootnaughtyrUrrs r%test_open_appendrs " # &", h   # &Q]]8,k:#* i    # &Q]]8,k:Q]]9-w7  !s CCCc d}t5tdd5}|jdd|jddd|jd||jddd}t j t ||dd|jd ||jd dd }t j t ||dd|jd d d |j|jdddt dD]s}tdd5}t j|jdj||jd_ t j||f||jd |ddddf<|jdddtd5}t|jdd|t|jd dddddfjt j||f|t|jdjjd|dzt|jd jjd|dzdddvtd5}t!t"5}|jd j$ddddj&}t|j(ddddddddy#1swYxYw#1swYmxYw#1swYxYw#1swYfxYw#1swYExYw#1swYyxYw)NdzwithRecordDimension.ncr8rrhrrqrsy)rtestDatar@)rrqrrVr9r)rr*r)rrrrrarrayranger r!rr+rfullr copyr,rYKeyErrorrGvaluer")dataSizer$rqrr@arexs r%test_append_recordDimensionrsH $- 13 7 1  fd +  VS) 4  c8 ,  c62A88E(O,AaD  c8 ,  c62A88E(O,AaD  Z.@ A GGI GGI q IA5s; q+-99Q[[5H5M5Mq+Q F#(3577Hh;OQR3S J'1a0   56 I!Q[[04a8Q[[4RAX>CCEWWh%91=?Q[[055;;A>!DQ[[499??BAaCH  I I I"1 2 -ax( C%K??#L>"A?L !L>4C L>L>L2$L&-L2.L>?L L> L L>L# L>&L/ +L22L; 7L>>Mctjddd}d|d<tjj|d}t t d}t |d 5}|jd }t|jd t|jdt|jtjd |ddj}~tj|jd }t||dddt!5d}t |dd }|j#d t%||j'd dd}d |_ d |_ d|_ ||dd|j)t |d 5}|jd }t|jd t|jdt|jtjd tj|jd }|ddj}~t||ddddddy#1swYDxYw#1swYxYw#1swYyxYw)Nrcz example_2.ncT maskandscale Temperature'g{Gz?rVzms.ncr8r@)r)rlinspacer1masked_greaterrzr{rr+r missing_value add_offset scale_factorfloat32 compressedroundr rrrrr!) ttmr|r$Tempfoundrnnewfnametemps r%test_maskandscalers BBA AaD   a $B .. 1E U .)!{{=)T''.T__b)T&& 4(89Q""$ 88BMMOQ/x() - #D 9 -R1 s4DE! Q   5 -;;}-D ++T 2 " - **BJJt,< =xx 3HG&&(E E8 , ---))* - ---s3B)IA6I B)I4III II'cttd}t|d5}|jddd}t |gddddy#1swYyxYw)Nexample_3_maskedvals.ncTr var1_fillval0FTFrzr{rr+r6r|r$vardatas r%!test_read_withValuesNearFillValuersN ."; rs  * %EE * *wx(&1   [[ & &   '&(K\+8.#b= : " O &:-. 0 *'-R"-R;'8;; ; U )r/