K iddlZddlZddlmZmZmZddlmZmZm Z m Z m Z m Z m Z mZmZmZGddZGddZGdd Zy) N) histogramhistogram_bin_edges histogramdd) assert_assert_allcloseassert_almost_equalassert_array_almost_equalassert_array_equalassert_array_max_ulp assert_equal assert_raisesassert_raises_regexsuppress_warningsceZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"e#jHjKd!"d#Z&d$Z'd%Z(y&)' TestHistogramcyNselfs e/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/numpy/lib/tests/test_histograms.py setup_methodzTestHistogram.setup_method cyrrrs rteardown_methodzTestHistogram.teardown_methodrrcd}tjj|}t|\}}t tj |d|ttj ddd\}}t|dy)Ndraxis )nprandomrandrr sumlinspacer )rnvabs r test_simplezTestHistogram.test_simplesb  IINN1 1ARVVAA&*2;;q"c23A1b!rc8tgdddg\}}t|dgt|ddgtttddgdtddgd\}}t |t j dgt|t j ddgy)Nr.r/rbins?@)rr r ValueErrorr r"arrayr)rhistedgeshes r test_one_binzTestHistogram.test_one_bin&s q!f5 e4!'51a&)j)aV!<!Qa(1Q! &288RH-.rcd}tjj|}t|d\}}tj|tj |z}t |dtjd}gd}t||d\}}t|dttj|tj |zdt||d\}}t|gd tjd}d dd d tjg}t||d\}}t|gd tjgd ddtjgd\}}t|dd gy)NrTdensityr.r!rr.r0r!皙?Fr-rr0rA)rBrBrB???) r"r#r$rr%diffraranger r inf) rr'r(r)r*arear3countsdmys r test_densityzTestHistogram.test_density0s.  IINN1 D)1vva"''!*n%D!$ IIbMD$/11b!RVVA N+Q/D%011l+ IIbM1aBFF#D$/11./ll 3RVV,d< Vc1X&rcltjddz}t|ddg\}}t|j dt|ddg\}}t|j dt|ddgd\}}t |tj |zj dd tjddz}t|ddg|d \}}t|tj |zj dt|d ddg| \}}t||ddy)Nr!rDr ranger.TrQr?decimalrQweightsr?r3rQrW)r"rHrr r%rrG)rr)r:r*ws r test_outlierszTestHistogram.test_outliersPs  IIbMB 1a&)1QUUWa 1b'*1QUUWa 1a&$71Q^002ArB IIbMB 1a&!TB1a"''!*n))+Q/1a&!<1Q!B rctjddz}tjddz}ttd5t |ddg|d\}}dddy#1swYyxYw) Nr!rD z same shape asr.rOTrV)r"rHrr6r)rr)r[r:r*s rtest_arr_weights_mismatchz'TestHistogram.test_arr_weights_mismatchhsa IIbMB  IIbMB  _ = GQq!faFDAq G G Gs AA(ctjddz}t|\}}ttj|j tj t|d\}}ttj|j tjt|tjdt\}}ttj|j tj t|tjdt\}}ttj|j tjy)Nr!rDTr>rW) r"rHrr issubdtypedtypeintegerfloatingonesintfloat)rr)r:r*s r test_typezTestHistogram.test_typens IIbMB |1 aggrzz23D)1 aggr{{34BGGB$451 aggrzz23BGGB$671 aggr{{34rc tjgdtj}tjgdtj}tj||d\}}}t |j dy)N)g2VEq@gx>fQg-VT5@rc)g!@gS@g^z@rr2@)r"r7float32 histogram2dr r%)rxy counts_histxedgesyedgess rtest_f32_roundingzTestHistogram.test_f32_rounding}sV HH8 K HHrarWr?rr!r^r3rW)r.r/r/r1r1)r1r0r/r.)r1rrr.)r3rWr?g$@rlrOr@) r/r.r.r.r.r.r.r.r.)皙?rBrBg333333?) r"r#r$rfrr r& concatenatezerosrHr r7r) rr(r[r)r*nanbwawbnwanwbs r test_weightszTestHistogram.test_weightss` IINN3  GGCL1 |11d+B1a(BQ48S!!a%,!"c* KK2r " NNBHHQK4 51299R=!<B!"a(N9N&NO6!QIB!"bhh1v&6bhh1v>N9N&NO $/*((GAJ GAJ?@6 7CB!"wqz71:&>?6!QIB!"wqz71:&>?rctjgd}tj|ddgdt|gdy)Nrr!r)rQr3)r"r7rr )rrs rtest_no_side_effectsz"TestHistogram.test_no_side_effectss0/* VC937!&/:rctgddg\}}t|tjdgt|tjddgy)Nrr.r2rr r"r7rr)r*s r test_emptyzTestHistogram.test_emptysAAq6+11bhhsm,1bhh1v./rcxtjddd}t|dttt|dy)NrCr4rnumrg333333@)r"r&rr TypeErrorrvalss rtest_error_binnum_typez$TestHistogram.test_error_binnum_types,{{3-$iD#6rctjddd}t|ddgttt|tj dgttt|dtj gy)NrCr4rrrF?rP)r"r&rr r6nanrIrs rtest_finite_rangezTestHistogram.test_finite_rangesN{{3-$tTl+j)T"&&$Hj)T$Hrctjddd}ttd5tj|ddgdddy#1swYyxYw) NrCr4rrzmax must be larger thanrBg{Gz?rP)r"r&rr6rrs rtest_invalid_rangez TestHistogram.test_invalid_rangesF{{3- -F G 2 LLc4[ 1 2 2 2s A  Actjgd}tj|dd\}}|dkD}|dd|}|dd|}t|||D]"\}}} t ||k\t || k$y)N)iQiii&iiiih )r/ir3rQrrZr.)r"r7rzipr) rarrr8r9mask left_edges right_edgesroleftrights rtest_bin_edge_casesz!TestHistogram.test_bin_edge_casesshh=>ll3TC eax3BZ% ABio !#z;? NAtU AI  AI  rctjgd}tj|dd\}}t|ddy)N rCrCrCr4r5rlrlg@g@rrrZr.)r"r7rr )rrr8r9s rtest_last_bin_inclusive_rangez+TestHistogram.test_last_bin_inclusive_ranges5hhCDll3RyA eT"Xq!rctjddd}tjddgddgg}ttd5tj || dddy#1swYyxYw) NrCr4rrrrDg333333?z must be 1dr2)r"r&r7rr6r)rrr3s rtest_bin_array_dimsz!TestHistogram.test_bin_array_dimss\{{3-xx!SC:./ \ : * LLD ) * * *s A%%A.ctjdg}tjgdd}tt5tj||\}}dddy#1swYyxYw)Nr/)r.r0r.uint64rkr2)r"r7r r6r)rrr3r8r9s r test_unsigned_monotonicity_checkz.TestHistogram.test_unsigned_monotonicity_checksThhsmxx 2 : & 7,,s6KD% 7 7 7s A##A,c ~ttttdDcgc]}t j dc}tj gzttttdDcgc]}t j dc}tj gzt jtdDcgc]}t j dc}dgzt jtdDcgc]}t j dc}dgzycc}wcc}wcc}wcc}w)Nr!g?rDg?)r r6rrQr"r7rI)ris rtest_object_array_of_0dz%TestHistogram.test_object_array_of_0dsj uRy9! 9bffWIE Gj uRy9! 9RVVHD F U2Y7bhhsm7;K:LLM U2Y7bhhsm72$>? :987sD+ /D0 D5D:ctjddtjg}tjtjtjg}t}|j t |5t tt|dt tt|dt|dd\}}t|jdt|dd\}}t|jdt|ddg\}}t|jdt|ddg\}}t|jddddy#1swYyxYw)Nrr.autor2rr.rr/) r"r7rrfilterrxr r6rr r%)rone_nanall_nanr|r:r*s rtest_some_nan_valuesz"TestHistogram.test_some_nan_valuess((Aq"&&>*((BFFBFF+, ! >"  % *iv F *iv FW6@DAq ! $W6@DAq ! $WAq62DAq ! $WAq62DAq ! $ % % %s ;CE!!E*ctjdd}tjgd}tjgd}||z}||z}tjd}t ||\}}t |j ||j |\} } t ||\} } t || t | | t ||z j t| t | j t| t |j|jt | j|y)Nz 2000-01-01D) rrr.r.r/r0rr!)rr/rztimedelta64[D]r2)r" datetime64r7rcrastyper rg) rbeginoffsetsr3dates date_binstdd_countd_edget_countt_edgei_counti_edges r test_datetimezTestHistogram.test_datetime2s lC0((89xx &DL XX& ' $E :#GNN2$6T[[_M#G$7Wg&Wg&fun,,S16:V]]3'0V\\5;;/V\\2&rcdtj|jzdz }tjd|z dzd|zdz g|}t |d\}}t |d|z dzdd|zdz gt |ddgy)NrXr.r/r1rkr2r)r"rcitemsizer7rr )rrcexponentrr8r;s rdo_signed_overflow_boundsz'TestHistogram.do_signed_overflow_boundsKsrxx///!3hhH q(!X+/:%HCa(aQ!X+)1akAo>?TAq6"rc:|jtj|jtj|jtj|jtj |jtj yr)rr"byteshortintcint_longlongrs rtest_signed_overflow_boundsz)TestHistogram.test_signed_overflow_boundsRs\ &&rww/ &&rxx0 &&rww/ &&rww/ &&r{{3rcRtj|j}tjdg|}tjd|zdg|}|j |ddk7rytj |d|\}}t |dgt |j|y)Nr4r5rr.rr"finfoepsr7rrr rcr float_small float_largerrrQcountx_locs rdo_precision_lower_boundz&TestHistogram.do_precision_lower_boundYshh{#''hhuk*#)S);7 << $Q '1 , ||Cau= uUQC U[[+.rcRtj|j}tjdg|}tjdd|z g|}|j |ddk7rytj |d|\}}t |dgt |j|y)Nr4rCrZr.rrrrs rdo_precision_upper_boundz&TestHistogram.do_precision_upper_boundhshh{#''hhuk*#sSy);7 << $R (A - ||Cau= uUQC U[[+.rcL|j|||j||yr)rr)rrrs r do_precisionzTestHistogram.do_precisionxs" %%k;? %%k;?rc,|jtjtj|jtjtj|jtjtj |jtjtj|jtjtj |jtjtj yr)rr"halfsingledouble longdoublers rtest_precisionzTestHistogram.test_precision|s "''299- "''299- "''2==1 "))RYY/ "))R]]3 "))R]]3rc<tgdddg\}}tgdddg}t||tjgd}t|dd\}}t|dd}t||t|dd \}}t|dd }t||y) Nr-r.r/rrrrrr)rrr r"r7)rr8r;r9rs rtest_histogram_bin_edgesz&TestHistogram.test_histogram_bin_edgessL1a&1a#L1a&95!$hhCDCb :a#Cb B5!$CfF;a#CfFC5!$rctjddgdz}tjtd5t |ddddy#1swYyxYw)Nr.g?r!zToo many bins for data range)matchr2)r"r7pytestraisesr6r)rrs rtest_small_value_rangez$TestHistogram.test_small_value_rangesGhh9~*+ ]]:-K L $ c # $ $ $s A  Az,Bad memory reports lead to OOM in ci testing)reasonctjddg}d}d}tjd}tj||||f}t t |t dy)Nir0ii>)sampler3)r.r/)r"rrHrr type)rrxbinsybinszbinsr8s rtest_big_arrayszTestHistogram.test_big_arrayssU9a.) % ~~V5%2GHT$Zf.rctjtjdgddd\}}tjddg}t||y) Ng$xz>f8rkr/)gx0gel rr.r)r"rr7r )rr8r; expected_hists r test_gh_23110zTestHistogram.test_gh_23110sG,,rxx 5A$%%79a!Q( 4/rc d}dddddd||||||dg }tj|d\}}t|dksJ|d|dk(sJ|d|dk(sJy) Ng?rr.r/rr2r!rZ)r"rry)rr;ZrKr9s r test_gh_28400zTestHistogram.test_gh_28400sy  1aAq!Q1a 3 QV4 6{RQx1Q4RyAbE!!!rN))__name__ __module__ __qualname__rrr+r<rMr\r_rirtr~rrrrrrrrrrrrrrrrrrrrrrrmarkskiprrr rrrrrs   "/'@!0G 5,1"3:@<;0 7 I2 " *7 @%2'2#4 // @4 %$ [[KL/M/0"rrceZdZdZdZdZdZdZdZdZ dZ d Z d Z e jjd gd d Ze jjd gd dZdZdZy)TestHistogramOptimBinNumsz] Provide test coverage when using provided estimators for optimal number of bins cgd}|D]S}tg|\}}t|tjdgt|tjddgUy)Nfdscottricesturgesdoanesqrtrstoner2rr.r)restimator_list estimatorr)r*s rrz$TestHistogramOptimBinNums.test_emptysU<( 4IRi0DAq q"((A3- 0 q"((Aq6"2 3 4rc ddddddddddddddd dd dd d d d d dd ddd}|jD]\}}tjdd|dzdz}tjdd|dzdz}tj||f}|jD];\}}tj||\} } t t | |d|d|=y)z Straightforward testing with a mixture of linspace data (for consistency). All test values have been precomputed and the values shouldn't change r1rXrr/rr! rO#Gr2iirrZrr.r0For the  estimator with datasize of err_msgN)itemsr"r&rrr ry) r basic_testtestlenexpectedResultsx1x2rornumbinsr)r*s rr+z%TestHistogramOptimBinNums.test_simples$%A1&'AK#$B2&("b1N#%B2&("b2O P )3(8(8(: < $G_S"glQ&67BQGqL1$45BBx(A&5&;&;&= <" 7||Ay11SVW L118 7;< < Z]A&Z^T*:$$$&|T:XrxxC12+L)D ]BKK3$;.nbins_ratio/sl))''-C q 5Ar||Aw/23Sa9QRS9T5UqAA; rr!rr1)startstoprrrrD)g333333?g ףp= ?g{Gz?gQ?r/rTN) rQr" geomspaceroundrrgabsmeanr)rr]r[rXllavgs rtest_scott_vs_stonez-TestHistogramOptimBinNums.test_scott_vs_stone,s  )%46<* &&rwwryy|T'BDI !     s A5B  Bc Tttjtjtjdddtjddz ttjtjtjddddgddgy) zX Test that the bin-width>=1 requirement *only* applies to auto binning. rOrErr"r/rBrN)r r"rryrHrs rtest_integer_non_autoz/TestHistogramOptimBinNums.test_integer_non_autorsw   " "277299Q<#> C IIbMA     " "277299Q<#>R I H rc Rgd}|D]}tttgd|gd y)z= Check that weighted data raises a TypeError )rrrrrr4raN)r rr)rrrs rtest_simple_weightedz.TestHistogramOptimBinNums.test_simple_weighted}s,D' 8I )Y #Y 8 8rN)r r r__doc__rr+r8r?rCrKrSrfrorr parametrizerwrzr|r~rrrrrs 4<4<(G M=&*(F ;> [[V&BC+C+ [[V&BC C  8rrcfeZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZdZy)TestHistogramddc tjgdgdgdgdgdgdg}t|ddd gd d gd d gg \}}tjgd gdgdggd gdgdgg}t||gdgdgdg}t||d\}}t tj ||dz k(t|ddd gd d gd dggd\}}tjgdgdgdggdgdgdgg}t ||dz dtj|d d Dcgc]}tj|}}t|dddgd d gd dgg \}}tjd d gd d gd d ggd d gd d gd d ggd d gd d gd d ggd d gd d gd d ggg}t||tjd!}d"|ttd#ttd#ttd#f<ttjd#tjd#tjd#gd#\}}t||ycc}w)$N)rrDrE)rrEr)rrrD)rDrDrE)rDrEr)rDrr)r/r0r0rZr.rr0rP)rr.r)rrr.)r.rr)rqrr/)rr.r/r0Tr3r?g(@)r/r0r1r1rR)rr.rr)rrr.r)r.rrrg@r)r1r0r/rqr/r)rrrr4r) r"r7rr rallr splitsqueezerlistrQrH) rroHr9answeredrpzr s rr+zTestHistogramdd.test_simples\ HHno~$oH Iq)')1g1v1v%>@5Iy)<%y)<>?1f%, 5qr485qFSL()*q)')1g1v1v%>'+-5L, E(, EGH!!Vb[!4%'HHQ$: ;qRZZ] ; ; Ir1g1v1v%>@5QFQFQF3FQFQF3FQFQF3FQFQF356 1f% HHY <>$uQx.$uQx.$uQx. 89 ! biilBIIaLI1M51a  rar)r"r#r$rrfr rg)rr(r8r9n_histw_hists rrzTestHistogramdd.test_weightss IINN3 "!!n e#At4 #Arwws|< 64(#Arwws|a/?N 66*#ArwwsC/@1/DE 61t8,rctjdt}t|d\}}t |dtj gdy)N)r!r/r/r2r)rrCrD)r"rrgrr r7)rror8r9s rtest_identical_samplesz&TestHistogramdd.test_identical_sampless9 HHWc "!!!, e58RXXo%>?rctgggddgddgf\}}t|tjdggtjggggd\}}t|tjdy)Nrr.r2rCr/)r/r/r/)rr r"r7rrs rrzTestHistogramdd.test_emptysgB8Aq6Aq6*:;1Q2$ 01~~r2rl31Q 34rc ttjdjdd}tttj |gdtttj |gdtttj |dddgdgt tj |dddgd gy) NrXr/r1)rZr/r1rr2)r.gGz?r.r.r.)r.r/r0r-)r"rHreshaper r6rr)rros rtest_bins_errorsz TestHistogramdd.test_bins_errorss} IIaL A &j"..!-Hj"..!/J Aq-0H Jq1a'>?@rc |tjd5tjdjdd}tjddgddgddgg}tj |dtj ddgg \}}t||tj |dtjd dtj gg \}}t||tj |dtj dtj gg \}}t||dddy#1swYyxYw) Nignore)invalidrAr0r/r.rr!r2rZ)r"errstaterHrr7rrIr)rroexpectedr:r;s rtest_inf_edgeszTestHistogramdd.test_inf_edgess [[ * ) ! $$Q*Axx!Q!Q!Q 89H>>!1w2.>*?@DAq Ax (>>!1bhhArvv.G*HIDAq Ax (>>!1w266.B*CDDAq Ax ( ) ) )s DD22D;cdg}gdg}t||\}}t|ddk(t|ddk(dg}gdg}t||\}}t|ddk(t|ddk(dg}gdg}t||\}}t|ddk(t|ddk(d g}gdg}t||\}}t|ddk(t|ddk(y) NgG?)rCrDr4r2rrCr.r4g8?gqh?)rr)rror3r8_s rtest_rightmost_binedgez&TestHistogramdd.test_rightmost_binedges Nad+aQ3Q2  Ead+aQ3Q2  Nad+aQ3Q3 Had+aQ3Q3rc &tjjd}t|ddgddgddggttt|ddgddgdtj ggttt|ddgtj dgddggy)N)rr0rCr4rFrrDrP)r"r#rr r6rIrrs rrz!TestHistogramdd.test_finite_rangesyy)D#sdD\D#; GHj+t!3Z$bff~F Hj+t!3Z"&&$$E Grctjgd}tjgd}tjgd}d}t||f||f\}}tjdgdgg}t||y)z: Test that adjacent entries in an edge array can be equal )rr.r/)rr/r/r.r2r5r4Nr"r7rr )rrorpx_edgesy_edgesr8r9 hist_expecteds rtest_equal_edgesz TestHistogramdd.test_equal_edgesss HHY  HHY ((9%!1a&/AB e D D"   T=)rc(tjgd}|dz }tjgd}|dz }t||f||f\}}t|dj|jt|dj|jy)z< Test that if an edge array is input, its type is preserved )rr!rr!)rrrSrr2rr.N)r"r7rr rc)rrorprrr8r9s rtest_edge_dtypezTestHistogramdd.test_edge_dtypesu HH[ ! F((>*B,!1a&/AB eU1X^^W]]3U1X^^W]]3rcd}tjdgtj}tjddgtj}||z}||z}t||f||f\}}t |ddy)NlrrZr.r2)rr)r"r7int64rr )rbigrorrprr8r9s rtest_large_integersz#TestHistogramdd.test_large_integers)sn HHaS"(( #((B8RXX. !G-!1a&/AB eT$Z#rctjgd}tjgd}tjddgddgg}tjdgdgdzzdgdzzdgdzz}tjdgdgdzzdgdzzdgdzz}t||f||f\}}t||t||f||fd \}}t|d y) N)rr/rX)rrArXr0rOr.rr2Trg?r)rrrrelative_areasrorpr8r9s rtest_density_non_uniform_2dz+TestHistogramdd.test_density_non_uniform_2d5s((9%((9% F F# HHaSA37]aS1W,sQw6 7 HHaSA37]aS1W,sQw6 7"1a&/AB eT>*"1a&/A4P eT;'rctjd}tjgd}t||d\}}t |f|fd\}}t ||t ||dy)Nr!r@Tr>r)r"rHr7rrr )rr(r3r8r9hist_ddedges_dds rtest_density_non_uniform_1dz+TestHistogramdd.test_density_non_uniform_1dPs_ IIbMxx()46 e'tgtDT7#UHQK(rN)r r rr+rrrrrrrrrrrrrrrrrrrsQ#!J" " -@ 5 A ) .G * 4 $(6)rr)rnumpyr"rrr numpy.testingrrrr r r r r rrrrrrrrrsF ==   ]"]"~ R8R8jP)P)r