+
    &i                         ^ RI t ^ 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  ! 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_regexc                   0  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 selfs   &]/var/www/html/photoedit/myenv/lib/python3.14/site-packages/numpy/lib/tests/test_histograms.pysetup_methodTestHistogram.setup_method           c                    R # r   r   r   s   &r   teardown_methodTestHistogram.teardown_method   r   r   c                   ^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   axisN)nprandomrandr   r   sumlinspacer
   )r   nvabs   &    r   test_simpleTestHistogram.test_simple   s^    IINN11RVVAA&* 2;;q"c231b!r   c                :   \        . 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es   &    r   test_one_binTestHistogram.test_one_bin'   s}    q!f54!'51a&)j)aV!<!Qa(Q!&288RH-.r   c                   ^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.   r5      
   r3   )rB   rB   rB           )r"   r#   r$   r   r%   diffr   aranger
   r   inf)	r   r'   r(   r)   r*   arear0   countsdmys	   &        r   test_densityTestHistogram.test_density1   s   IINN1D)vva"''!*n%D!$ IIbM$/1b!RVVA
N+Q/ %01l+ IIbM1aBFF#$/1./ ll3RVV,d<Vc1X&r   c                   \         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# )
rH   rC   rangeTrT   rA   decimalrT   weightsrA   r0   rT   rY   N)r"   rK   r   r   r%   r   rJ   )r   r)   r;   r*   ws   &    r   test_outliersTestHistogram.test_outliersQ   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           	     
   \         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)rH   rC   zsame shape asTrX   N)r"   rK   r   r7   r   )r   r)   r\   r;   r*   s   &    r   test_arr_weights_mismatch'TestHistogram.test_arr_weights_mismatchi   sX    IIbMBIIbMB _==Qq!faFDA >===s   A11B	c                   \         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# )rH   rC   Tr@   rY   N)r"   rK   r   r   
issubdtypedtypeintegerfloatingonesintfloat)r   r)   r;   r*   s   &   r   	test_typeTestHistogram.test_typeo   s    IIbMB|aggrzz23D)aggr{{34BGGB$45aggrzz23BGGB$67aggr{{34r   c                   \         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@re   r/         @N)rn   gx>fQg-VT5@)g!@gS@g^z@)r"   r8   float32histogram2dr   r%   )r   xycounts_histxedgesyedgess   &     r   test_f32_roundingTestHistogram.test_f32_rounding~   sR    HH8

KHH<BJJO&(nnQ&D#V[__&+r   c                h   \         P                  ! . RO\         P                  R7      p\         P                  ! V4      w  r#\        P
                  ! \        RR7      ;_uu_ 4        \         P                  ! . RO4      w  rE\        WB4       \        WS4       RRR4       R#   + '       g   i     R# ; i)r.   ro   zConverting input from .*matchN)r.   r.   r   )TTF)r"   r8   uint8r   pytestwarnsRuntimeWarningr
   )r   r)   int_hist	int_edgesr9   r:   s   &     r   test_bool_conversion"TestHistogram.test_bool_conversion   sm     HHYbhh/ ll1o
 \\.0JKK,,':;KDt.u0	 LKKKs   %1B  B1	c                   \         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   Tr@   rc   rY   rA   r0   rY   )r0   rY   rA   g      $@rp   N)r.   r4   r4   r6   )r6   r5   r4   r.   )r6      r   r.   rF   )	r4   r.   r.   r.   r.   r.   r.   r.   r.   )皙?rB   rB   g333333?)r"   r#   r$   rh   r   r	   r&   concatenatezerosrK   r
   r8   r   )r   r(   r\   r)   r*   nanbwawbnwanwbs   &          r   test_weights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           	     P   \         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              ?r   rZ   )DecimalNr         @gffffff@)r.   r[   r4   )r4   r.   r4   )r   r4   r5   )r"   r8   r   r	   rW   r   )r   valuesrY   r   r   r   s   &     r   test_exotic_weights!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                    \         P                  ! . RO4      p\         P                  ! VR^
.^dR7       \        V. RO4       R# )r   )rT   r0   Nr   )r"   r8   r   r	   )r   r   s   & r   test_no_side_effects"TestHistogram.test_no_side_effects   s0     /*
VC937!&/:r   c                    \        . ^ ^.R7      w  r\        V\        P                  ! ^ .4      4       \        V\        P                  ! ^ ^.4      4       R# )r   r/   Nr   r
   r"   r8   r   r)   r*   s   &  r   
test_emptyTestHistogram.test_empty   s?    Aq6+1bhhsm,1bhh1v./r   c                |    \         P                  ! R R^dR7      p\        V^4       \        \        \        VR4       R# )rI   r1   numg333333@N)r"   r&   r   r   	TypeErrorr   valss   & r   test_error_binnum_type$TestHistogram.test_error_binnum_type   s,    {{3-$iD#6r   c                    \         P                  ! R R^dR7      p\        VRR.R7       \        \        \        V\         P
                  R.R7       \        \        \        VR\         P                  .R7       R# )rI   r1   r   rE         ?rS   N)r"   r&   r   r   r7   nanrL   r   s   & r   test_finite_rangeTestHistogram.test_finite_range   sN    {{3-$tTl+j)T"&&$Hj)T$Hr   c                    \         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)rI   r1   r   zmax must be larger thanrB   g{Gz?rS   N)r"   r&   r   r7   r   r   s   & r   test_invalid_range TestHistogram.test_invalid_range   sD    {{3- -FGGLLc4[1 HGGGs   AA(	c                   \         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   r0   rT   N:r.   NN)r   i  i  i&  i  i  i  )r4   i  r[   )r"   r8   r   zipr   )
r   arrr9   r:   mask
left_edgesright_edgesrs   leftrights
   &         r   test_bin_edge_cases!TestHistogram.test_bin_edge_cases   su    hh=>ll3TCax3BZ%
Bio!#;?NAUAIAI @r   c                    \         P                  ! . RO4      p\         P                  ! V^RR7      w  r#\        VR,          ^4       R# )rI   r   N	rI   rI   rI   r1   r2   rp   rp   g      @g      @      r   r[   )r"   r8   r   r   )r   r   r9   r:   s   &   r   test_last_bin_inclusive_range+TestHistogram.test_last_bin_inclusive_range   s3    hhCDll3RyAT"Xq!r   c                   \         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)rI   r1   r   rC   g333333?z
must be 1dr/   N)r"   r&   r8   r   r7   r   )r   r   r0   s   &  r   test_bin_array_dims!TestHistogram.test_bin_array_dims   sW    {{3-xx!SC:./ \::LL) ;:::s   A00B	c                   \         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)r4   uint64ro   r/   N)r.   r5   r.   )r"   r8   r   r7   r   )r   r   r0   r9   r:   s   &    r    test_unsigned_monotonicity_check.TestHistogram.test_unsigned_monotonicity_check  sM     hhsmxx	2:&&,,s6KD '&&&s   	A--A>	c           
        \        \        \        \        ^
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 )rH   g?rC   g     ?N)r   r7   r   rT   r"   r8   rL   )r   is   & r   test_object_array_of_0d%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           	        \         P                  ! ^ ^\         P                  .4      p\         P                  ! \         P                  \         P                  .4      p\        P                  ! 4       ;_uu_ 4        \        P
                  ! R\        4       \        \        \        VRR7       \        \        \        VRR7       \        VRRR7      w  r4\        VP                  4       ^4       \        VRRR7      w  r4\        VP                  4       ^ 4       \        V^ ^.R7      w  r4\        VP                  4       ^4       \        V^ ^.R7      w  r4\        VP                  4       ^ 4       RRR4       R#   + '       g   i     R# ; i)r   ignoreautor/   r   Nr   r.   )r"   r8   r   warningscatch_warningssimplefilterr   r   r7   r   r   r%   )r   one_nanall_nanr;   r*   s   &    r   test_some_nan_values"TestHistogram.test_some_nan_values  s	   ((Aq"&&>*((BFFBFF+, $$&&!!(N;*ivF*ivF W6@DA!$W6@DA!$ WAq62DA!$WAq62DA!$! '&&&s   9C4E77F	c                   \         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-01Dztimedelta64[D]r/   N)	r   r   r.   r.   r4   r5   r   rH      )r   r4      r   )r"   
datetime64r8   re   r   astyper   ri   )r   beginoffsetsr0   dates	date_binstdd_countd_edget_countt_edgei_counti_edges   &            r   test_datetimeTestHistogram.test_datetime0  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                b   ^\         P                  ! V4      P                  ,          ^,
          p\         P                  ! ^V,          ) ^,           ^V,          ^,
          .VR7      p\	        V^R7      w  rE\        V^V,          ) ^,           ^ ^V,          ^,
          .4       \        V^^.4       R# )   ro   r/   N)r"   re   itemsizer8   r   r   )r   re   exponentr   r9   r<   s   &&    r   do_signed_overflow_bounds'TestHistogram.do_signed_overflow_boundsI  s    rxx///!3hhHq(!X+/:%HCa(Q!X+)1akAo>?TAq6"r   c                <   V P                  \        P                  4       V P                  \        P                  4       V P                  \        P                  4       V P                  \        P
                  4       V P                  \        P                  4       R # r   )r   r"   byteshortintcint_longlongr   s   &r   test_signed_overflow_bounds)TestHistogram.test_signed_overflow_boundsP  s\    &&rww/&&rxx0&&rww/&&rww/&&r{{3r   c                p   \         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# )r1   r2   Nr   r"   finfoepsr8   r   r   r   re   r   float_smallfloat_larger  r   rT   countx_locs   &&&     r   do_precision_lower_bound&TestHistogram.do_precision_lower_boundW  s    hh{#''hhuk*#)S);7 <<$Q'1, ||Cau=UQC U[[+.r   c                p   \         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# )r1   rI   Nr   r[   r   r  s   &&&     r   do_precision_upper_bound&TestHistogram.do_precision_upper_boundf  s    hh{#''hhuk*#sSy);7 <<$R(A- ||Cau=UQC U[[+.r   c                J    V P                  W4       V P                  W4       R # r   )r  r
  )r   r  r  s   &&&r   do_precisionTestHistogram.do_precisionv  s    %%k?%%k?r   c                .   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"   halfsingledouble
longdoubler   s   &r   test_precisionTestHistogram.test_precisionz  s    "''299-"''299-"''2==1"))RYY/"))R]]3"))R]]3r   c                4   \        . 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   Nr3   r   r   r   )r   r   r
   r"   r8   )r   r9   r<   r:   r   s   &    r   test_histogram_bin_edges&TestHistogram.test_histogram_bin_edges  s    L1a&1#L1a&95$hhCDCb	:#Cb	B5$CfF;#CfFC5$r   c                    \         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 ranger{   r/   Ng     ?)r"   r8   r~   raisesr7   r   )r   r   s   & r   test_small_value_range$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)reasonc                    \         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>  )sampler0   N)r.   r4   )r"   r   rK   r   r   type)r   r  xbinsybinszbinsr9   s   &     r   test_big_arraysTestHistogram.test_big_arrays  sQ    9a.)		% ~~V%2GHT$Zf.r   c                    \         P                  ! \         P                  ! R.RR7      ^RR7      w  r\         P                  ! ^^ .4      p\        W4       R# )g$x z>f8ro   r   Ng$x)gx0gel	  )r"   r   r8   r
   )r   r9   r<   expected_hists   &   r   test_gh_23110TestHistogram.test_gh_23110  sC    ,,rxx5A$%%79 !Q(4/r   c                    Rp^ ^^^^^WWW^.p\         P                  ! VRR7      w  r4\        V4      ^
8  g   Q hV^ ,          V^ ,          8X  g   Q hVR,          VR,          8X  g   Q hR# )r.   r   r/   Ng    ?r[   )r"   r   len)r   r<   ZrN   r:   s   &    r   test_gh_28400TestHistogram.test_gh_28400  sq    1aAqQ13QV46{RQx1Q4RyAbE!!!r   r   N),__name__
__module____qualname____firstlineno__r   r   r+   r=   rP   r]   r`   rk   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r
  r  r  r  r  r~   markskipr$  r(  r-  __static_attributes____classdictcell____classdict__s   @r   r   r      s     	"/'@!0G5,13:@<;0
7I2	"
*7	@%0'2#4// @4%$ [[KL/ M/0" "r   r   c                      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                    . 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   stoner   )r   estimator_list	estimatorr)   r*   s   &    r   r   $TestHistogramOptimBinNums.test_empty  sN    < (IRi0DAq"((A3-0q"((Aq6"23 (r   c                
   ^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@  rA  r   rB      For the  estimator with datasize of err_msgNr   r[   )itemsr"   r&   r   r   r   r+  )r   
basic_testtestlenexpectedResultsx1x2rs   rD  numbinsr)   r*   s   &          r   r+   %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                   ^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@  rA  rB  rI  rJ  rK  N)rM  r"   rK   r   rj   r   r   r+  )	r   	small_datrO  rP  testdatrD  expbinsr)   r*   s	   &        r   
test_small$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                P    . 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)madfreeman
histogramsIQRr.   r4   r5   )r   r7   r   )r   
check_listrD  s   &  r   test_incorrect_methods0TestHistogramOptimBinNums.test_incorrect_methods  s!     =
#I*iIF $r   c                    \         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@  rA  r   rB  z estimator, No Variance testrK  N)r"   rh   rM  r   r   r+  )r   novar_datasetnovar_resultdictrD  rS  r)   r*   s   &      r   test_novariance)TestHistogramOptimBinNums.test_novariance  s    
  !WaIq#Q61gqJ #3"8"8":I<<9DAQ$-;.J!KM #;r   c                   \         P                  ! R4      p^ VR&   ^dVRR% \        VR4      p\        V^ ,          ^ 4       \        VR	,          R4       \	        V4      ^d8  g   Q h\        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.
  :Nr5   NNr   g      Y@r<  r?  r[   )r"   rh   r   r   r+  r8   r&   )r   lim_var_data
edges_autoedges_fdedges_sturgess   &    r   test_limited_variance/TestHistogramOptimBinNums.test_limited_variance  s     wwt}RRS(v>
Z]A&Z^T*:$$$&|T:XrxxC12+L)D]BKK3$;<r   c                2   \         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@  rB  Nr   i)r"   r&   hstackrM  r   r   r+  )r   xcenteroutlier_datasetoutlier_resultdictrD  rS  r)   r*   s   &       r   test_outlier&TestHistogramOptimBinNums.test_outlier  s     ++c2r*))R[[tQ%?$IJ"BGR!L"4":":"<I<<;DAQ) #=r   c                f   R  p\         P                  ! ^
^d^R7      P                  4       P                  \        4      p\        ^
4       UUu. uF  q2 Uu. uF
  qA! W44      NK  	  upNK  	  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 )c                     \         P                  P                  V 4      pVP                  ^ ^VR7      p\	        \         P
                  ! VR4      ^ ,          4      \	        \         P
                  ! VR4      ^ ,          4      rTWDV,           ,          # )r   )locscalesizerB  r=  )r"   r#   RandomStatenormalr+  r   )seedr~  rngrs   r)   r*   s   &&    r   nbins_ratioBTestHistogramOptimBinNums.test_scott_vs_stone.<locals>.nbins_ratio.  sh    ))''-C

q
5Ar||Aw/23Sa9QRS9T5UqA;r   )startstopr   r    rC   rV   N)g333333?g
ףp=
?g{Gz?gQ?)	r"   	geomspaceroundr   ri   rT   absmeanr   )r   r  
geom_spacer  r~  llavgs   &      r   test_scott_vs_stone-TestHistogramOptimBinNums.test_scott_vs_stone*  s    	 \\!<BBDKKCP
KPQS9U94:>:4{4&:>9U "''"1%+,C!91E ?Us   B-B($B-(B-c                >   ^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   rB  rG  rH  rS   rI  z
 estimatorz with datasize of rK  Nr   r[   rs  i)ir   )rM  r"   r&   rt  r   r   r+  )r   rN  rO  rP  rQ  rR  x3rs   rD  rS  r)   r*   msgs   &            r   test_simple_range+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   r0   c                "   \         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# )r4   ro   r/   N)r      )r"   r8   int8r   r   int32r
   )r   r0   r)   r9   r:   hist32edges32s   &&     r   test_signed_integer_data2TestHistogramOptimBinNums.test_signed_integer_data[  sW     HH\1ll10,,qxx'9E4(5*r   c                z   \         P                  ! 4       ;_uu_ 4        VR8X  d   \         P                  ! R\        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.
rB  r   rj  N)	r   r   r   r   r   r"   r   tilerK   )r   r0   s   &&r   test_integer&TestHistogramOptimBinNums.test_integere  so     $$&&w%%h?&&rwwryy|T'BDI		! '&&&s   BB))B:	c           	     l   \        \        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.
rj  rB   r   N)r   r"   r   r  rK   r   s   &r   test_integer_non_auto/TestHistogramOptimBinNums.test_integer_non_autor  sw     	""277299Q<#>CIIbMA	 	""277299Q<#>RIH	r   c           	     X    . ROpV F  p\        \        \        . ROV. ROR7       K!  	  R# )z-
Check that weighted data raises a TypeError
rc   N)r<  r=  r>  r?  r   r`  )r   r   r   )r   rC  rD  s   &  r   test_simple_weighted.TestHistogramOptimBinNums.test_simple_weighted}  s'     D'I)Y	#Y8 (r   r   N)r   r<  r@  r=  rB  r>  r?  )r/  r0  r1  r2  __doc__r   r+   rY  rb  rg  rp  rx  r  r  r~   r3  parametrizer  r  r  r  r5  r6  r7  s   @r   r:  r:    s     
4<4<(GM=&*(F$;> [[V &B C+C+ [[V &B C	C		8 8r   r:  c                   z   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           	        \         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 )rC   rS   Tr0   rA   g      (@rU   g      @r    r   r1   N)r   rC   rD   )r   rD   r   )r   r   rC   )rC   rC   rD   )rC   rD   r   )rC   r   r   )r4   r5   r5   r[   )r   r.   r   )r   r   r.   )r.   r   r   r  )r  r   r4   )r   r.   r4   r5   )r4   r5   r6   )r   r.   r   r   )r   r   r.   r   )r.   r   r   r   )r6   r5   r4   )r   r   r   )r"   r8   r   r
   r   allr	   splitsqueezer   listrT   rK   )	r   rs   Hr:   answeredrt   zr,  s	   &        r   r+   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                    Rp\         P                  P                  ^
^4      pV F(  p\        W#4      w  rE\	        VP
                  V8H  4       K*  	  R# )r   N))r   r6   rG   )rG   r6   r   )r   rG   r6   )r6   rG   r   )rG   r   r6   )r6   r   rG   r"   r#   r$   r   r   shaper   r0   rr*   r  r:   s   &     r   test_shape_3dTestHistogramdd.test_shape_3d  sC    IINN2q!A"1(HAAGGqL! r   c                    Rp\         P                  P                  ^
^4      pV F(  p\        W#4      w  rE\	        VP
                  V8H  4       K*  	  R# )r   N))r   r6   r   rG   )r6   r   r   rG   )r   rG   r6   r   )r   rG   r   r6   )r   r   rG   r6   )r6   rG   r   r   )rG   r   r   r6   )r   r   r6   rG   )r   r6   rG   r   )rG   r6   r   r   )rG   r   r   r6   )r6   rG   r   r   )r6   r   r   rG   )r   r6   rG   r   )r   r   r6   rG   )rG   r   r6   r   )rG   r   r6   r   )r6   r   rG   r   )r6   r   rG   r   )r   rG   r6   r   )r   r6   r   rG   )r   rG   r   r6   )rG   r6   r   r   )r   r   rG   r6   r  r  s   &     r   test_shape_4dTestHistogramdd.test_shape_4d  sF    H IINN2q!A"1(HAAGGqL! r   c                   \         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   Tr@   rc   r   N)r"   r#   r$   r   rh   r
   ri   )r   r(   r9   r:   n_histw_hists   &     r   r   TestHistogramdd.test_weights  s    IINN3"!!n#At4#Arwws|<6(#Arwws|a/?N6*#ArwwsC/@1/DE61t8,r   c                    \         P                  ! R\        4      p\        V^R7      w  r#\	        V^ ,          \         P
                  ! . RO4      4       R# )rH   r/   N)rH   r4   )r   rI   rC   )r"   r   ri   r   r
   r8   )r   rs   r9   r:   s   &   r   test_identical_samples&TestHistogramdd.test_identical_samples  s7    HHWc"!!!,58RXXo%>?r   c                    \        . . .^ ^.^ ^.3R7      w  r\        V\        P                  ! R..4      4       \        P                   ! . . . .^R7      w  r\        V\        P                  ! R4      4       R# )r   r/   rI   N)r4   r4   r4   )r   r   r"   r8   r   r   s   &  r   r   TestHistogramdd.test_empty  sc    B8Aq6Aq6*:;Q2$ 01~~r2rl3Q 34r   c           
     z   \         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)r[   r4   r6   r   )r.   gGz?r.   r.   )r.   r4   r5   r3   )r"   rK   reshaper   r7   r   r   )r   rs   s   & r   test_bins_errors TestHistogramdd.test_bins_errors  s}     IIaL  A&j"..!-Hj"..!/JAq-0H	Jq1a'>?@r   c                   \         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)r   )invalidr/   Nr[   )r"   errstaterK   r  r8   r   rL   r   )r   rs   expectedr;   r<   s   &    r   test_inf_edges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                   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?rI   r1   r/   g8   ?gqh ?N)rI   rC   r1   )r   r   )r   rs   r0   r9   _s   &    r   test_rightmost_binedge&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           	     (   \         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   rI   r1   rE   r   rC   rS   N)r   r5   )r"   r#   r   r   r7   rL   r   r   s   & r   r   !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                   \         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/   r2   r1   N)r   r.   r4   )r   r4   r4   r"   r8   r   r   )r   rs   rt   x_edgesy_edgesr9   r:   hist_expecteds   &       r   test_equal_edges TestHistogramdd.test_equal_edges  sk    HHYHHY((9%!1&/ABDD"
  	T)r   c                H   \         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   rH   r   )r   r      r   )r"   r8   r   r   re   )r   rs   rt   r  r  r9   r:   s   &      r   test_edge_dtypeTestHistogramdd.test_edge_dtype  so    HH[!F((>*B,!1&/ABU1X^^W]]3U1X^^W]]3r   c                   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# )r4   r/   Nl            r[   )r   r   )r"   r8   int64r   r   )r   bigrs   r  rt   r  r9   r:   s   &       r   test_large_integers#TestHistogramdd.test_large_integers)  sd    HHaS"((#((B8RXX.G-!1&/ABT$Z#r   c                "   \         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   r4   r   )r   rG   r   g      ?r  )r   r  r  relative_areasrs   rt   r9   r:   s   &       r   test_density_non_uniform_2d+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                    \         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# )rH   Tr@   NrF   )r"   rK   r8   r   r   r   )r   r(   r0   r9   r:   hist_ddedges_dds   &      r   test_density_non_uniform_1d+TestHistogramdd.test_density_non_uniform_1dP  sU    IIbMxx()6'tgtDT#UQK(r   r   N)r/  r0  r1  r2  r+   r  r  r   r  r   r  r  r  r   r  r  r  r  r  r5  r6  r7  s   @r   r  r    sY     #!J""	-@
5A
) .G*	4
$(6) )r   r  )r   r~   numpyr"   r   r   r   numpy.testingr   r   r   r	   r
   r   r   r   r   r   r:  r  r   r   r   <module>r     sI       = =
 
 
Z" Z"xT8 T8nP) P)r   