+
    ei  c                   s    ^ RI t ^ RIt^ RIHtHtHt ^ RIHtHtH	t	H
t
HtHtHtHtHtHt  ! R R4      t ! R R4      t ! R R	4      tR# )
    N)	histogramhistogram_bin_edgeshistogramdd)
assert_assert_allcloseassert_almost_equalassert_array_almost_equalassert_array_equalassert_array_max_ulpassert_equalassert_raisesassert_raises_regexsuppress_warningsc                   s0  a  ] tR t^t o R tR tR tR tR tR t	R t
R tR	 tR
 tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR t R t!R t"R  t#]$PJ                  PM                  R!R"7      R# 4       t'R$ t(R% t)R&t*V t+R'# )(TestHistogramc                    R # N self   &F/usr/lib64/python3.14/site-packages/numpy/lib/tests/test_histograms.pysetup_methodZTestHistogram.setup_method           c                r   r   r   r   r   r   teardown_methodZTestHistogram.teardown_method   r   r   c                s   ^dp\         P                  P                  V4      p\        V4      w  r4\	        \         P
                  ! V^ R7      V4       \        \         P                  ! ^ ^
^d4      4      w  r4\        V^
4       R# )d   ZaxisN)nprandomrandr   r
   sumlinspacer   )r   nvab   &    r   test_simpleZTestHistogram.test_simple   s^    IINN11RVVAA&* 2;;q"c231b!r   c                s:   \        . RO^^.4      w  r\        V^.4       \        V^^.4       \        \        \         ^^.^ R7       \        ^^.^R7      w  r4\	        V\
        P                  ! ^.4      4       \        V\
        P                  ! RR.4      4       R# )   bins      ?       @Nr'            )r   r   r   
ValueErrorr
   r   arrayr   )r   histedgesher%   r   test_one_binZTestHistogram.test_one_bin&   s}    q!f54!'51a&)j)aV!<!Qa(Q!&288RH-.r   c                s   ^dp\         P                  P                  V4      p\        VRR7      w  r4\         P                  ! V\         P
                  ! V4      ,          4      p\        V^4       \         P                  ! ^
4      p. R	Op\        W&RR7      w  r4\        VR4       \        \         P                  ! V\         P
                  ! V4      ,          4      ^4       \        W&RR7      w  r4\        V. R
O4       \         P                  ! ^
4      p^ ^^^\         P                  .p\        W&RR7      w  r4\        V. RO4       \         P                  ! . R
ORR\         P                  .RR7      w  rx\        VR^ .4       R# )r   Tdensity皙?F      ?      ?      ?Nr    r'   r.      
   r,   )r9   r9   r9           )r   r   r   r   r   diffr   aranger   r
   inf)	r   r!   r"   r#   r$   Zarear)   countsZdmy	   &        r   test_densityZTestHistogram.test_density0   s   IINN1D)vva"''!*n%D!$ IIbM$/1b!RVVA
N+Q/ %01l+ IIbM1aBFF#$/1./ ll3RVV,d<Vc1X&r   c                s   \         P                  ! ^
4      R,           p\        V^ ^	.R7      w  r#\        VP	                  4       ^	4       \        V^^
.R7      w  r#\        VP	                  4       ^	4       \        V^^	.RR7      w  r#\        V\         P                  ! V4      ,          P	                  4       ^^R7       \         P                  ! ^
4      R,           p\        V^^	.VRR7      w  r#\        V\         P                  ! V4      ,          P	                  4       ^4       \        V^^^	.VR7      w  r#\        W$^R	 4       R# )
r?   r:   rangeTrH   r8   decimalrH   weightsr8   r)   rH   rM   N)r   rB   r   r
   r   r   rA   )r   r#   r4   r$   wr%   r   test_outliersZTestHistogram.test_outliersP   s    IIbMB 1a&)QUUWa  1b'*QUUWa  1a&$7Q^002ArB IIbMB1a&!TBa"''!*n))+Q/1a&!<Q!B r   c           	     s
   \         P                  ! ^
4      R,           p\         P                  ! ^4      R,           p\        \        R4      ;_uu_ 4        \	        V^^	.VRR7      w  r4RRR4       R#   + '       g   i     R# ; i)r?   r:   zsame shape asTrL   N)r   rB   r   r0   r   )r   r#   rP   r4   r$   r%   r   test_arr_weights_mismatchZ'TestHistogram.test_arr_weights_mismatchh   sX    IIbMBIIbMB _==Qq!faFDA >===s   A11B	c                s   \         P                  ! ^
4      R,           p\        V4      w  r#\        \         P                  ! VP
                  \         P                  4      4       \        VRR7      w  r#\        \         P                  ! VP
                  \         P                  4      4       \        V\         P                  ! ^
\        4      R7      w  r#\        \         P                  ! VP
                  \         P                  4      4       \        V\         P                  ! ^
\        4      R7      w  r#\        \         P                  ! VP
                  \         P                  4      4       R# )r?   r:   Tr7   rM   N)r   rB   r   r   Z
issubdtypedtypeZintegerZfloatingonesintfloat)r   r#   r4   r$      &   r   	test_typeZTestHistogram.test_typen   s    IIbMB|aggrzz23D)aggr{{34BGGB$45aggrzz23BGGB$67aggr{{34r   c                s   \         P                  ! . RO\         P                  R7      p\         P                  ! . RO\         P                  R7      p\         P                  ! W^dR7      w  r4p\	        VP                  4       R4       R# )2VEq@rT   r(         @N)rZ   gx>fQg-VT5@)g!@gS@g^z@)r   r1   Zfloat32Zhistogram2dr
   r   )r   xyZcounts_histZxedgesZyedges   &     r   test_f32_roundingZTestHistogram.test_f32_rounding}   sR    HH8

KHH<BJJO&(nnQ&D#V[__&+r   c                s   \         P                  ! . RO\         P                  R7      p\         P                  ! V4      w  r#\	        4       ;_uu_ 4       pVP                  \        R4      p\         P                  ! . RO4      w  rg\        \        V4      ^4       \        Wb4       \        Ws4       RRR4       R#   + '       g   i     R# ; i)r'   r[   zConverting input from .*N)r'   r'   r    )TTF)
r   r1   Zuint8r   r   ZrecordRuntimeWarningr
   lenr   )r   r#   Zint_histZ	int_edgessupZrecr2   r3      &       r   test_bool_conversionZ"TestHistogram.test_bool_conversion   s     HHYbhh/ ll1o
   C**^-GHC,,':;KDS1%t.u0 !   s   AB99C
	c                s   \         P                  P                  ^d4      p\         P                  ! ^d4      ^,          p\	        V4      w  r4\	        VRR7      w  rV\	        WR7      w  rx\	        WRR7      w  r\        V^,          V4       \        WY4       \         P                  ! ^ ^
^
4      p\         P                  ! \         P                  ! ^4      \         P                  ! ^4      34      p\	        V\         P                  ! ^4      VR7      w  rx\        Wr4       \	        . R
O^. ROR7      w  rx\        V. RO4       \	        . R
O^. RORR7      w  rx\        V\         P                  ! . RO4      R,          R,          ^,          4       \	        \         P                  ! ^	4      . RO. RORR7      w  r4\        V. RO4       R	# )r   Tr7   rS   rM   r8   r)   rM   )r)   rM   r8   g      $@r\   N)r'   r-   r-   r/   )r/   r.   r-   r'   )r/      r    r'   r=   )	r-   r'   r'   r'   r'   r'   r'   r'   r'   )皙?r9   r9   g333333?)r   r   r   rU   r   r   r    concatenatezerosrB   r   r1   r   )r   r"   rP   r#   r$   ZnaZnbwawbZnwaZnwb   &          r   test_weightsZTestHistogram.test_weights   sH   IINN3GGCL1|1d+1(Q48!!a%,!"* KK2r"NNBHHQK451299R=!<!"( <aF2|,q,F!"bhh|&<s&BR&G!&KL IIaL*/? 	A12r   c           	     sP   \         P                  ! . RO4      p\         P                  ! . RO4      R\         P                  ! . RO4      ,          ,           p\        V. R	OVR7      w  r4\        V\         P                  ! ^^.4      R\         P                  ! ^^.4      ,          ,           4       \        V^^^.VR7      w  r4\        V\         P                  ! ^^.4      R\         P                  ! ^^.4      ,          ,           4       ^ RIHp \         P                  ! . RO4      p\         P                  ! V! ^4      V! ^4      V! ^4      .4      p\        V. R	OVR7      w  r4\        W5! ^4      V! ^4      .4       \        V^^^.VR7      w  r4\        W5! ^4      V! ^4      .4       R# )
?y              ?rg   rN   )DecimalNrp         @gffffff@)r'   rO   r-   )r-   r'   r-   )r    r-   r.   )r   r1   r   r   rK   rq   )r   valuesrM   rl   rm   rq   r_   r   test_exotic_weightsZ!TestHistogram.test_exotic_weights   sE    /*((:&bhhy.A)AA 6	7C!"bhh1v&6bhh1v>N9N&NO 6!QI!"bhh1v&6bhh1v>N9N&NO 	$/*((GAJ
GAJ?@ 6	7C!"wqz71:&>? 6!QI!"wqz71:&>?r   c                s    \         P                  ! . RO4      p\         P                  ! VR^
.^dR7       \        V. RO4       R# )rp   )rH   r)   Nrr   )r   r1   r   r   )r   rt      & r   test_no_side_effectsZ"TestHistogram.test_no_side_effects   s0     /*
VC937!&/:r   c                s    \        . ^ ^.R7      w  r\        V\        P                  ! ^ .4      4       \        V\        P                  ! ^ ^.4      4       R# )r    r(   Nr   r   r   r1   r   r#   r$      &  r   
test_emptyZTestHistogram.test_empty   s?    Aq6+1bhhsm,1bhh1v./r   c                s|    \         P                  ! R R^dR7      p\        V^4       \        \        \        VR4       R# )r@   r*   numg333333@N)r   r    r   r   	TypeErrorr   valsrw   r   test_error_binnum_typeZ$TestHistogram.test_error_binnum_type   s,    {{3-$iD#6r   c                s    \         P                  ! R R^dR7      p\        VRR.R7       \        \        \        V\         P
                  R.R7       \        \        \        VR\         P                  .R7       R# )r@   r*   r}   r<         ?rG   N)r   r    r   r   r0   nanrC   r   rw   r   test_finite_rangeZTestHistogram.test_finite_range   sN    {{3-$tTl+j)T"&&$Hj)T$Hr   c                s    \         P                  ! R R^dR7      p\        \        R4      ;_uu_ 4        \         P                  ! VRR.R7       RRR4       R#   + '       g   i     R# ; i)r@   r*   r}   zmax must be larger thanr9   g{Gz?rG   N)r   r    r   r0   r   r   rw   r   test_invalid_rangeZ TestHistogram.test_invalid_range   sD    {{3- -FGGLLc4[1 HGGGs   AA(	c                s   \         P                  ! . RO4      p\         P                  ! VRRR7      w  r#V^ 8  pVRR V,          pVR,          V,          p\        WV4       F   w  rxp	\	        Wx8  4       \	        Wy8  4       K"  	  R# )Q  ih   r)   rH   N:r'   NN)r   i  i  i&  i  i  i  )r-   i  rO   )r   r1   r   Zzipr   )
r   arrr2   r3   ZmaskZ
left_edgesZright_edgesr]   ZleftZrights
   &         r   test_bin_edge_casesZ!TestHistogram.test_bin_edge_cases   su    hh=>ll3TCax3BZ%
Bio!#;?NAUAIAI @r   c                s    \         P                  ! . RO4      p\         P                  ! V^RR7      w  r#\        VR,          ^4       R# )r@   r   N	r@   r@   r@   r*   r+   r\   r\   g      @g      @      rh   rO   )r   r1   r   r
   )r   r   r2   r3   rX   r   test_last_bin_inclusive_rangeZ+TestHistogram.test_last_bin_inclusive_range   s3    hhCDll3RyAT"Xq!r   c                s   \         P                  ! R R^dR7      p\         P                  ! ^ R.RR..4      p\        \        R4      ;_uu_ 4        \         P
                  ! WR7       RRR4       R#   + '       g   i     R# ; i)r@   r*   r}   r:   g333333?z
must be 1dr(   N)r   r    r1   r   r0   r   )r   r   r)   r{   r   test_bin_array_dimsZ!TestHistogram.test_bin_array_dims   sW    {{3-xx!SC:./ \::LL) ;:::s   A00B	c                s   \         P                  ! ^.4      p\         P                  ! . RORR7      p\        \        4      ;_uu_ 4        \         P                  ! WR7      w  r4RRR4       R#   + '       g   i     R# ; i)r-   Zuint64r[   r(   N)r'   r.   r'   )r   r1   r   r0   r   )r   r   r)   r2   r3   r%   r    test_unsigned_monotonicity_checkZ.TestHistogram.test_unsigned_monotonicity_check  sM     hhsmxx	2:&&,,s6KD '&&&s   	A--A>	c           
     s   \        \        \        \        ^
4       Uu. uF  p\        P
                  ! R4      NK  	  up\        P                  ) .,           4       \        \        \        \        ^
4       Uu. uF  p\        P
                  ! R4      NK  	  up\        P                  .,           4       \        P                  ! \        ^
4       Uu. uF  p\        P
                  ! R4      NK  	  upR.,           4       \        P                  ! \        ^
4       Uu. uF  p\        P
                  ! R4      NK  	  upR.,           4       R# u upi u upi u upi u upi )r?   g?r:   g     ?N)r   r0   r   rH   r   r1   rC   )r   Zirw   r   test_object_array_of_0dZ%TestHistogram.test_object_array_of_0d  s    juRy9y!y9bffWIE	GjuRy9y!y9RVVHD	F 	U2Y7YbhhsmY7;K:LLM
U2Y7YbhhsmY72$>? :9 87s   E
6EEEc           	     s   \         P                  ! ^ ^\         P                  .4      p\         P                  ! \         P                  \         P                  .4      p\        4       pVP	                  \
        4       V;_uu_ 4        \        \        \        VRR7       \        \        \        VRR7       \        VRRR7      w  rE\        VP                  4       ^4       \        VRRR7      w  rE\        VP                  4       ^ 4       \        V^ ^.R7      w  rE\        VP                  4       ^4       \        V^ ^.R7      w  rE\        VP                  4       ^ 4       RRR4       R#   + '       g   i     R# ; i)r    autor(   r   Nr    r'   )r   r1   r   r   filterra   r   r0   r   r
   r   )r   Zone_nanZall_nanrc   r4   r$   r_   r   test_some_nan_valuesZ"TestHistogram.test_some_nan_values  s    ((Aq"&&>*((BFFBFF+,  !

>"S*ivF*ivF W6@DA!$W6@DA!$ WAq62DA!$WAq62DA!$ SSSs   CE((E9	c                s   \         P                  ! R R4      p\         P                  ! . RO4      p\         P                  ! . RO4      pW,           pW,           p\         P                  ! R4      p\	        WER7      w  rx\	        VP                  V4      VP                  V4      R7      w  r\	        W#R7      w  r\        W{4       \        W4       \        W,
          P                  \        4      V4       \        V
P                  \        4      V4       \        VP                  VP                  4       \        V
P                  V4       R# )z
2000-01-01ZDztimedelta64[D]r(   N)	r    r    r'   r'   r-   r.   rh   r?      )r    r-      r   )r   Z
datetime64r1   rT   r   astyper
   rV   )r   ZbeginZoffsetsr)   ZdatesZ	date_binsZtdZd_countZd_edgeZt_countZt_edgeZi_countZi_edge   &            r   test_datetimeZTestHistogram.test_datetime2  s    lC0((89xx&L	XX&'
 $E:#GNN2$6T[[_M#G7W&W&fn,,S16:V]]3'0V\\5;;/V\\2&r   c                sb   ^\         P                  ! V4      P                  ,          ^,
          p\         P                  ! ^V,          ) ^,           ^V,          ^,
          .VR7      p\	        V^R7      w  rE\        V^V,          ) ^,           ^ ^V,          ^,
          .4       \        V^^.4       R# )   r[   r(   N)r   rT   Zitemsizer1   r   r
   )r   rT   Zexponentr   r2   r5      &&    r   do_signed_overflow_boundsZ'TestHistogram.do_signed_overflow_boundsK  s    rxx///!3hhHq(!X+/:%HCa(Q!X+)1akAo>?TAq6"r   c                s<   V P                  \        P                  4       V P                  \        P                  4       V P                  \        P                  4       V P                  \        P
                  4       V P                  \        P                  4       R # r   )r   r   ZbyteZshortZintcZint_Zlonglongr   r   r   test_signed_overflow_boundsZ)TestHistogram.test_signed_overflow_boundsR  s\    &&rww/&&rxx0&&rww/&&rww/&&r{{3r   c                sp   \         P                  ! V4      P                  p\         P                  ! R .V4      p\         P                  ! R V,           R.V4      pVP	                  V4      ^ ,          ^8w  d   R# \         P
                  ! V^VR7      w  rg\        V^ .4       \        VP                  V4       R# )r*   r+   Nr   r   Zfinfoepsr1   r   r   r
   rT   r   float_smallfloat_larger   r   rH   ZcountZx_loc   &&&     r   do_precision_lower_boundZ&TestHistogram.do_precision_lower_boundY  s    hh{#''hhuk*#)S);7 <<$Q'1, ||Cau=UQC U[[+.r   c                sp   \         P                  ! V4      P                  p\         P                  ! R .V4      p\         P                  ! RR V,
          .V4      pVP	                  V4      R,          ^8w  d   R# \         P
                  ! V^VR7      w  rg\        V^ .4       \        VP                  V4       R# )r*   r@   Nr   rO   r   r   r   r   do_precision_upper_boundZ&TestHistogram.do_precision_upper_boundh  s    hh{#''hhuk*#sSy);7 <<$R(A- ||Cau=UQC U[[+.r   c                sJ    V P                  W4       V P                  W4       R # r   )r   r   )r   r   r   s   &&&r   do_precisionZTestHistogram.do_precisionx  s    %%k?%%k?r   c                s.   V P                  \        P                  \        P                  4       V P                  \        P                  \        P                  4       V P                  \        P                  \        P
                  4       V P                  \        P                  \        P                  4       V P                  \        P                  \        P
                  4       V P                  \        P                  \        P
                  4       R # r   )r   r   ZhalfZsingleZdoubleZ
longdoubler   r   r   test_precisionZTestHistogram.test_precision|  s    "''299-"''299-"''2==1"))RYY/"))R]]3"))R]]3r   c                s4   \        . RO^^.4      w  r\        . RO^^.4      p\        W24       \        P                  ! . RO4      p\        V^RR7      w  r\        V^RR7      p\        W24       \        VRRR7      w  r\        VRRR7      p\        W24       R# )r'   r   r   Nr,   r   r   r   )r   r   r   r   r1   )r   r2   r5   r3   r   r%   r   test_histogram_bin_edgesZ&TestHistogram.test_histogram_bin_edges  s    L1a&1#L1a&95$hhCDCb	:#Cb	B5$CfF;#CfFC5$r   c                s    \         P                  ! ^R.^
,          4      p\        P                  ! \        RR7      ;_uu_ 4        \        V^
R7       RRR4       R#   + '       g   i     R# ; i)r'   zToo many bins for data range)Zmatchr(   Ng     ?)r   r1   pytestZraisesr0   r   )r   r   rw   r   test_small_value_rangeZ$TestHistogram.test_small_value_range  sE    hh9~*+]]:-KLLc# MLLLs   AA-	z,Bad memory reports lead to OOM in ci testing)Zreasonc                s    \         P                  ! R ^.4      pRpRp\         P                  ! R4      p\         P                  ! WW43R7      p\	        \        V4      \        R4      4       R# )i i  i>  )sampler)   N)r'   r-   )r   rk   rB   r   r
   Ztype)r   r   ZxbinsZybinsZzbinsr2   r_   r   test_big_arraysZTestHistogram.test_big_arrays  sQ    9a.)		% ~~V%2GHT$Zf.r   c                s    \         P                  ! \         P                  ! R.RR7      ^RR7      w  r\         P                  ! ^^ .4      p\        W4       R# )g$x z>f8r[   r   Ng$x)gx0gel	  )r   r   r1   r   )r   r2   r5   Zexpected_histrX   r   test_gh_23110ZTestHistogram.test_gh_23110  sC    ,,rxx5A$%%79 !Q(4/r   c                sV    Rp^ ^^^^^WWW^.p\         P                  ! VRR7      w  r4R# )r'   r   r(   Ng    ?)r   r   )r   r5   ZrD   r3   r%   r   test_gh_28400ZTestHistogram.test_gh_28400  s5    1aAqQ13QV4r   r   N),__name__
__module____qualname____firstlineno__r   r   r&   r6   rF   rQ   rR   rY   r`   re   ro   ru   rx   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   markZskipr   r   r   __static_attributes____classdictcell__Z__classdict__   @r   r   r      s     	"/'@!0G5,1"3:@<;0
7I2	"
*7	@%2'2#4// @4%$ [[KL/ M/0" "r   r   c                   s   a  ] tR tRt o RtR tR tR tR tR t	R t
R	 tR
 tR t]P                  P!                  R. RO4      R 4       t]P                  P!                  R. RO4      R 4       tR tR tRtV tR# )TestHistogramOptimBinNumsi  zQ
Provide test coverage when using provided estimators for optimal number of
bins
c                s    . ROpV FU  p\        . VR7      w  r4\        V\        P                  ! ^ .4      4       \        V\        P                  ! ^ ^.4      4       KW  	  R# )fdr(   N)r   scottricesturgesdoanesqrtr   stonery   )r   estimator_list	estimatorr#   r$   r%   r   r|   Z$TestHistogramOptimBinNums.test_empty  sN    < (IRi0DAq"((A3-0q"((Aq6"23 (r   c                s
   ^2R^R^R^R^R^R^R^R^/R	R^R^R^R^
R^R^R^
R^	/R
R^R^R^#R^R^R^GR^R^//pVP                  4        F  w  r#\        P                  ! RRV^,          ^,          4      p\        P                  ! ^^
V^,          ^,          4      p\        P                  ! WE34      pVP                  4        F:  w  rx\        P                  ! Wg4      w  r\        \        V	4      VRV RV 2R7       K<  	  K  	  R# )z
Straightforward testing with a mixture of linspace data (for
consistency). All test values have been precomputed and the values
shouldn't change
r   r   r   r   r   r   r   r       For the  estimator with datasize of Zerr_msgNrv   rO   )itemsr   r    rj   r   r
   rb   )r   
basic_testtestlenexpectedResultsx1x2r]   r   numbinsr#   r$   rn   r   r&   Z%TestHistogramOptimBinNums.test_simple  s6    T1wFA	1$aFAwKT1wFB	2$b&"fb'1NT2wFB	2$b&"fb'2O	P
 )3(8(8(:$G S"glQ&67BQGqL1$45Bx(A&5&;&;&="	||A1SVW L118	7; < '> );r   c                s   ^R^R^R^R^R^R^R^/^R^R^R^R^R^R^R^/^R^R^R^R^R^R^R^//pVP                  4        F|  w  r#\        P                  ! V4      P                  \        4      pVP                  4        F:  w  rV\        P
                  ! WE4      w  rx\        \        V4      VRV R	V 2R
7       K<  	  K~  	  R# )z
Smaller datasets have the potential to cause issues with the data
adaptive methods, especially the FD method. All bin numbers have been
precalculated.
r   r   r   r   r   r   r   r   r   r   N)r   r   rB   r   rW   r   r
   rb   )	r   Z	small_datr   r   Ztestdatr   Zexpbinsr#   r$   rE   r   
test_smallZ$TestHistogramOptimBinNums.test_small  s     q'1faA !VQ<q'1faA !VQ<q'1faA !VQ<	=	 )2(9$Gii(//6G&5&;&;&="	||G7SVW L118	7; < '> ):r   c                sP    . ROpV F  p\        \        \        . ROV4       K  	  R# )zC
Check a Value Error is thrown when an unknown string is passed in
N)ZmadZfreemanZ
histogramsZIQRr'   r-   r.   )r   r0   r   )r   Z
check_listr   r{   r   test_incorrect_methodsZ0TestHistogramOptimBinNums.test_incorrect_methods  s!     =
#I*iIF $r   c                s    \         P                  ! ^d4      pR^R^R^R^R^R^R^R^/pVP                  4        F7  w  r4\         P                  ! W4      w  rV\	        \        V4      VV R	2R
7       K9  	  R# )zt
Check that methods handle no variance in data
Primarily for Scott and FD as the SD and IQR are both 0 in this case
r   r   r   r   r   r   r   r   z estimator, No Variance testr   N)r   rU   r   r   r
   rb   )r   Znovar_datasetZnovar_resultdictr   r   r#   r$      &      r   test_novarianceZ)TestHistogramOptimBinNums.test_novariance  s    
  !WaIq#Q61gqJ #3"8"8":I<<9DAQ$-;.J!KM #;r   c                sb   \         P                  ! R4      p^ VR&   ^dVRR% \        VR4      p\        V^ ,          ^ 4       \        VR	,          R4       \        VR4      p\        V\         P                  ! ^ ^d.4      4       \        VR4      p\        V\         P
                  ! ^ ^d^4      4       R# )
zI
Check when IQR is 0, but variance exists, we return a reasonable value.
  :Nr.   NNr   g      Y@r   r   irO   )r   rU   r   r
   r1   r    )r   Zlim_var_dataZ
edges_autoZedges_fdZedges_sturgesr%   r   test_limited_varianceZ/TestHistogramOptimBinNums.test_limited_variance  s     wwt}RRS(v>
Z]A&Z^T* '|T:XrxxC12+L)D]BKK3$;<r   c                s2   \         P                  ! R^
^24      p\         P                  ! \         P                  ! RR^4      V34      pR^R^R^R^/pVP                  4        F2  w  rE\         P                  ! W$4      w  rg\        \        V4      V4       K4  	  R# )	a  
Check the FD, Scott and Doane with outliers.

The FD estimates a smaller binwidth since it's less affected by
outliers. Since the range is so (artificially) large, this means more
bins, most of which will be empty, but the data of interest usually is
unaffected. The Scott estimator is more affected and returns fewer bins,
despite most of the variance being in one area of the data. The Doane
estimator lies somewhere between the other two.
r   r   r   r   Nrv   i)r   r    hstackr   r   r
   rb   )r   ZxcenterZoutlier_datasetZoutlier_resultdictr   r   r#   r$   rd   r   test_outlierZ&TestHistogramOptimBinNums.test_outlier  s     ++c2r*))R[[tQ%?$IJ"BGR!L"4":":"<I<<;DAQ) #=r   c                sd   R p\        ^
4       UUu. uFR  p\        P                  ! ^
^d^R7      P                  4       P	                  \
        4       Uu. uF
  q1! W#4      NK  	  upNKT  	  ppp\        \        P                  ! V^ R7      R,
          4      p\        V. RO^R7       R# u upi u uppi )zQVerify that Scott's rule and Stone's rule converges for normally distributed datac                 s    \         P                  P                  V 4      pVP                  ^ ^VR7      p\	        \         P
                  ! VR4      ^ ,          4      \	        \         P
                  ! VR4      ^ ,          4      rTWDV,           ,          # )r    )ZlocZscalesizer   r   )r   r   ZRandomStateZnormalrb   r   )seedr   Zrngr]   r#   r$   r   r   nbins_ratioZBTestHistogramOptimBinNums.test_scott_vs_stone.<locals>.nbins_ratio/  sh    ))''-C

q
5Ar||Aw/23Sa9QRS9T5UqA;r   )ZstartZstopr~   r   r:   rJ   N)g333333?g
ףp=
?g{Gz?gQ?)	rH   r   Z	geomspaceZroundr   rV   ZabsZmeanr   )r   r   r   r   ZllZavgr_   r   test_scott_vs_stoneZ-TestHistogramOptimBinNums.test_scott_vs_stone,  s    	  )%#$ 46<<bsXY3Z3`3`3b3i3ijm3no3n4{4&3no# 	 % "''"1%+,C!91E p %s   AB,B'#B,'B,c                s>   ^2R^R^R^R^R^R^/RR^R^R^ R^R^R^P/RR^!R^!R^ER^R^!R^P//pVP                  4        F  w  r#\        P                  ! RRV^,          ^,          4      p\        P                  ! ^^
V^,          ^,          4      p\        P                  ! RRV4      p\        P                  ! WEV34      pVP                  4        FG  w  r\        P                  ! WxRR	7      w  rR
V R2pVRV 2,          p\        \        V
4      WR7       KI  	  K  	  R# )z
Straightforward testing with a mixture of linspace data (for
consistency). Adding in a 3rd mixture that will then be
completely ignored. All test values have been precomputed and
the shouldn't change.
r   r   r   r   r   r   r   r   rG   r   z
 estimatorz with datasize of r   Nrv   rO   r   i)ir   )r   r   r    r   r   r
   rb   )r   r   r   r   r   r   Zx3r]   r   r   r#   r$   Zmsgr   r   test_simple_rangeZ+TestHistogramOptimBinNums.test_simple_range<  s;    T1wFB&FBDT2wFB&FBET2wFB&FBE
 )3(8(8(:$G S"glQ&67BQGqL1$45BT30B		22,'A&5&;&;&="	||A	B :6+G955SVW:	 '> );r   r)   c                s"   \         P                  ! . RO\         P                  R7      p\         P                  ! W!R7      w  r4\         P                  ! VP	                  \         P
                  4      VR7      w  rV\        W54       \        WF4       R# )r-   r[   r(   N)r    i   )r   r1   Zint8r   r   Zint32r   )r   r)   r#   r2   r3   Zhist32Zedges32s   &&     r   test_signed_integer_dataZ2TestHistogramOptimBinNums.test_signed_integer_data[  sW     HH\1ll10,,qxx'9E4(5*r   c                sX   \        4       ;_uu_ 4       pVR8X  d   VP                  \        4       \        \        P
                  ! \        P                  ! \        P                  ! ^	4      R4      V4      \        P                  ! ^	4      4       RRR4       R#   + '       g   i     R# ; i)z5
Test that bin width for integer data is at least 1.
r   r   N)r   r   ra   r
   r   r   tilerB   )r   r)   rc   s   && r   test_integerZ&TestHistogramOptimBinNums.test_integere  sg       Cw

>*&&rwwryy|T'BDI		! !   s   A;BB)	c           	     sl   \        \        P                  ! \        P                  ! \        P                  ! ^	4      R4      ^4      \        P                  ! ^4      ^,          4       \        \        P                  ! \        P                  ! \        P                  ! ^	4      R4      RR.4      RR.4       R# )zH
Test that the bin-width>=1 requirement *only* applies to auto binning.
r   r9   ri   N)r
   r   r   r   rB   r   r   r   test_integer_non_autoZ/TestHistogramOptimBinNums.test_integer_non_autor  sw     	""277299Q<#>CIIbMA	 	""277299Q<#>RIH	r   c           	     sX    . ROpV F  p\        \        \        . ROV. ROR7       K!  	  R# )z-
Check that weighted data raises a TypeError
rS   N)r   r   r   r   r   r   )r   r   r   )r   r   r   r{   r   test_simple_weightedZ.TestHistogramOptimBinNums.test_simple_weighted}  s'     D'I)Y	#Y8 (r   r   N)r   r   r   r   r   r   r   )r   r   r   r   Z__doc__r|   r&   r   r   r   r   r   r   r   r   r   Zparametrizer   r   r   r   r   r   r   r   r   r   r     s     
4<4<(GM=&*(F ;> [[V &B C+C+ [[V &B C	C		8 8r   r   c                   sz   a  ] tR tRt o R tR tR tR tR tR t	R t
R	 tR
 tR tR tR tR tR tR tRtV tR# )TestHistogramddi  c           	     s   \         P                  ! . RO. RO. RO. RO. RO. RO.4      p\        VRR^.^ ^.^ ^..R7      w  r#\         P                  ! . RO. RO. RO.. RO. RO. RO..4      p\        W$4       . RO. RO. RO.p\        WRR7      w  r#\	        \         P
                  ! W$R,          8H  4      4       \        VRR^.^ ^.^ ^..RR7      w  r#\         P                  ! . RO. RO. RO.. RO. RO. RO..4      p\        W$R,          ^4       \         P                  ! V^^R7       Uu. uF  p\         P                  ! V4      NK  	  pp\        VRR^.^ ^.^ ^..R7      w  r#\         P                  ! ^ ^ .^ ^ .^ ^ ..^ ^.^ ^ .^^ ..^ ^.^ ^ .^ ^ ..^ ^ .^ ^ .^ ^ ...4      p\        W$4       \         P                  ! R4      pR	V\        \        ^4      4      \        \        ^4      4      \        \        ^4      4      3&   \        \         P                  ! ^4      \         P                  ! ^4      \         P                  ! ^4      .^4      w  r#\        W(4       R
# u upi )r:   rG   Tr)   r8   g      (@rI   g      @r   r   r*   N)r   r:   r;   )r   r;   rs   )r   rs   r:   )r:   r:   r;   )r:   r;   rs   )r:   rs   rs   )r-   r.   r.   rO   )r    r'   r    )r    r    r'   )r'   r    r    r   )r   r    r-   )r    r'   r-   r.   )r-   r.   r/   )r    r'   r    r    )r    r    r'   r    )r'   r    r    r    )r/   r.   r-   )rh   rh   rh   )r   r1   r   r   r   Zallr   ZsplitZsqueezerk   ZlistrH   rB   )	r   r]   Hr3   ZanswerZedr^   Zzr   rE   r   r&   ZTestHistogramdd.test_simple  sI   HHno~$oH Iq)')1g1v1v%>@Iy)<%y)<> ?1% ,5q48qSL()* q)')1g1v1v%>'+- L,E(,EG H!!b[!4 %'HHQ$:;$:qRZZ]$:;Ir1g1v1v%>@QFQFQF3FQFQF3FQFQF3FQFQF35 6 	1%HHY<>$uQx.$uQx.$uQx.
89		!biilBIIaLI1M1  <s   +Ic                s    Rp\         P                  P                  ^
^4      pV F(  p\        W#4      w  rE\	        VP
                  V8H  4       K*  	  R# )rh   N))rh   r/   r>   )r>   r/   rh   )rh   r>   r/   )r/   r>   rh   )r>   rh   r/   )r/   rh   r>   r   r   r   r   r   Zshaper   r)   Zrr$   r   r3   r_   r   test_shape_3dZTestHistogramdd.test_shape_3d  sC    IINN2q!A"1(HAAGGqL! r   c                s    Rp\         P                  P                  ^
^4      pV F(  p\        W#4      w  rE\	        VP
                  V8H  4       K*  	  R# )r   N))r   r/   rh   r>   )r/   rh   r   r>   )rh   r>   r/   r   )r   r>   rh   r/   )rh   r   r>   r/   )r/   r>   r   rh   )r>   rh   r   r/   )r   rh   r/   r>   )r   r/   r>   rh   )r>   r/   r   rh   )r>   r   rh   r/   )r/   r>   rh   r   )r/   r   rh   r>   )rh   r/   r>   r   )rh   r   r/   r>   )r>   r   r/   rh   )r>   rh   r/   r   )r/   r   r>   rh   )r/   rh   r>   r   )r   r>   r/   rh   )rh   r/   r   r>   )rh   r>   r   r/   )r>   r/   rh   r   )r   rh   r>   r/   r   r   r_   r   test_shape_4dZTestHistogramdd.test_shape_4d  sF    H IINN2q!A"1(HAAGGqL! r   c                s   \         P                  P                  ^d^4      p\        V4      w  r#\        VRR7      w  rC\        V\         P                  ! ^d4      R7      w  rS\        WR4       \        V\         P                  ! ^d4      ^,          RR7      w  rS\        WT4       \        V\         P                  ! ^d\        4      ^,          R7      w  rS\        V^V,          4       R# )r   Tr7   rS   rf   N)r   r   r   r   rU   r   rV   )r   r"   r2   r3   Zn_histZw_histr_   r   ro   ZTestHistogramdd.test_weights  s    IINN3"!!n#At4#Arwws|<6(#Arwws|a/?N6*#ArwwsC/@1/DE61t8,r   c                s    \         P                  ! R\        4      p\        V^R7      w  r#\	        V^ ,          \         P
                  ! . RO4      4       R# )r?   r(   N)r?   r-   )r   r@   r:   )r   rk   rV   r   r   r1   )r   r]   r2   r3   rX   r   test_identical_samplesZ&TestHistogramdd.test_identical_samples  s7    HHWc"!!!,58RXXo%>?r   c                s    \        . . .^ ^.^ ^.3R7      w  r\        V\        P                  ! R..4      4       \        P                   ! . . . .^R7      w  r\        V\        P                  ! R4      4       R# )r    r(   r@   N)r-   r-   r-   )r   r	   r   r1   rk   rz   r{   r   r|   ZTestHistogramdd.test_empty  sc    B8Aq6Aq6*:;Q2$ 01~~r2rl3Q 34r   c           
     sz   \         P                  ! ^4      P                  ^^4      p\        \        \         P
                  V. ROR7       \        \        \         P
                  V. ROR7       \        \        \         P
                  V^^^. RO.R7       \        \         P
                  ! V^^^. RO.R7      4       R# )r   r(   N)rO   r-   r/   rh   )r'   gGz?r'   r'   )r'   r-   r.   ir,   )r   rB   reshaper   r0   r   r   )r   r]   rw   r   test_bins_errorsZ TestHistogramdd.test_bins_errors  s}     IIaL  A&j"..!-Hj"..!/JAq-0H	Jq1a'>?@r   c                s   \         P                  ! R R7      ;_uu_ 4        \         P                  ! ^4      P                  ^^4      p\         P                  ! ^^ .^ ^.^ ^..4      p\         P
                  ! V^\         P                  ) ^^
..R7      w  r4\        W24       \         P
                  ! V^\         P                  ! R^\         P                  .4      .R7      w  r4\        W24       \         P
                  ! V^\         P                  ) ^\         P                  ..R7      w  r4\        W24       RRR4       R#   + '       g   i     R# ; i)Zignore)Zinvalidr(   NrO   )r   ZerrstaterB   r   r1   r   rC   r   )r   r]   Zexpectedr4   r5   r%   r   test_inf_edgesZTestHistogramdd.test_inf_edges  s    [[**		!$$Q*Axx!Q!Q!Q 89H>>!1w2.>*?@DAA(>>!1bhhArvv.G*HIDAA(>>!1w266.B*CDDAA( +***s   DD<<E	c                s   R .p. RO.p\        WR7      w  r4\        V^ ,          R8H  4       \        V^,          R8H  4       R.p. RO.p\        WR7      w  r4\        V^ ,          R8H  4       \        V^,          R8H  4       R.p. RO.p\        WR7      w  r4\        V^ ,          R8H  4       \        V^,          R8H  4       R.p. RO.p\        WR7      w  r4\        V^ ,          R8H  4       \        V^,          R8H  4       R# )gG?r@   r*   r(   g8   ?gqh ?N)r@   r:   r*   )r   r   )r   r]   r)   r2   Z_r%   r   test_rightmost_binedgeZ&TestHistogramdd.test_rightmost_binedge  s    Na+Q3Q2Ea+Q3Q2Na+Q3Q3Ha+Q3Q3r   c           	     s(   \         P                  P                  R4      p\        VRR.RR.RR..R7       \        \        \        VRR.RR.R\         P
                  ..R7       \        \        \        VRR.\         P                  R.RR..R7       R# )	r   r@   r*   r<   r   r:   rG   N)r   r.   )r   r   r   r   r0   rC   r   r   rw   r   r   Z!TestHistogramdd.test_finite_range  s    yy)D#sdD\D#; GHj+t!3Z$bff~F	Hj+t!3Z"&&$$E	Gr   c                s   \         P                  ! . RO4      p\         P                  ! . RO4      p\         P                  ! . RO4      p^p\        W3W43R7      w  rV\         P                  ! R.R..4      p\        WW4       R# )z9Test that adjacent entries in an edge array can be equal r(   r+   r*   N)r    r'   r-   )r    r-   r-   r   r1   r   r
   )r   r]   r^   x_edgesy_edgesr2   r3   Zhist_expectedrd   r   test_equal_edgesZ TestHistogramdd.test_equal_edges  sk    HHYHHY((9%!1&/ABDD"
  	T)r   c                sH   \         P                  ! . RO4      pV^
,          p\         P                  ! . RO4      pV^
,          p\        W3W43R7      w  rV\        V^ ,          P                  VP                  4       \        V^,          P                  VP                  4       R# )z;Test that if an edge array is input, its type is preserved r(   N)r    r?   r   )r    rh   i   r   )r   r1   r   r
   rT   )r   r]   r^   r   r   r2   r3   r   r   test_edge_dtypeZTestHistogramdd.test_edge_dtype  so    HH[!F((>*B,!1&/ABU1X^^W]]3U1X^^W]]3r   c                s   Rp\         P                  ! ^ .\         P                  4      p\         P                  ! R^.\         P                  4      pW,           pW,           p\        W$3W53R7      w  rg\	        VR,          ^4       R# )r-   r(   Nl            rO   )r    r    )r   r1   Zint64r   r
   )r   Zbigr]   r   r^   r   r2   r3   rd   r   test_large_integersZ#TestHistogramdd.test_large_integers)  sd    HHaS"((#((B8RXX.G-!1&/ABT$Z#r   c                s"   \         P                  ! . RO4      p\         P                  ! . RO4      p\         P                  ! ^^	.^^..4      p\         P                  ! ^.^.^,          ,           ^.^,          ,           ^.^	,          ,           4      p\         P                  ! ^.^.^,          ,           ^.^,          ,           ^.^	,          ,           4      p\        WT3W!3R7      w  rg\        Wc4       \        WT3W!3RR7      w  rg\        VR4       R# )r    r(   Tr   N)r    r-   r   )r    r>   r   g      ?r   )r   r   r   Zrelative_areasr]   r^   r2   r3   rd   r   test_density_non_uniform_2dZ+TestHistogramdd.test_density_non_uniform_2d5  s     ((9%((9%FF# 
 HHaSA37]aS1W,sQw67HHaSA37]aS1W,sQw67 "1&/ABT* "1&/A4PT;'r   c                s    \         P                  ! ^
4      p\         P                  ! . RO4      p\        WRR7      w  r4\	        V3V3RR7      w  rV\        W54       \        WF^ ,          4       R# )r?   Tr7   Nr=   )r   rB   r1   r   r   r
   )r   r"   r)   r2   r3   Zhist_ddZedges_ddr   r   test_density_non_uniform_1dZ+TestHistogramdd.test_density_non_uniform_1dP  sU    IIbMxx()6'tgtDT#UQK(r   r   N)r   r   r   r   r&   r   r   ro   r   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r     sY     #!J""	-@
5A
) .G*	4
$(6) )r   r   )r   Znumpyr   r   r   r   Znumpy.testingr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   <module>r      sF      = =  ]" ]"~R8 R8jP) P)r   