@@ -410,6 +410,31 @@ def test_single_bin(data, length):
410410 tm .assert_series_equal (result , expected )
411411
412412
413+ def test_single_bin_edge_adjustment ():
414+ # gh-58517 - test edge adjustment when all values are the same
415+ # mutation on _nbins_to_bins
416+ data = [0.1 , 0.1 , 0.1 ]
417+ result , bins = cut (data , 3 , retbins = True )
418+
419+ # mutation would create large bin sizes
420+ bin_range = bins [- 1 ] - bins [0 ]
421+ assert bin_range < 0.001
422+
423+ # Test negative values
424+ data_neg = [- 0.1 , - 0.1 , - 0.1 ]
425+ result_neg , bins_neg = cut (data_neg , 3 , retbins = True )
426+
427+ bin_range_neg = bins_neg [- 1 ] - bins_neg [0 ]
428+ assert bin_range_neg < 0.001
429+
430+ # Test very small values
431+ data_tiny = [0.01 , 0.01 , 0.01 ]
432+ result_tiny , bins_tiny = cut (data_tiny , 3 , retbins = True )
433+
434+ bin_range_tiny = bins_tiny [- 1 ] - bins_tiny [0 ]
435+ assert bin_range_tiny < 0.0001
436+
437+
413438@pytest .mark .parametrize (
414439 "array_1_writeable,array_2_writeable" , [(True , True ), (True , False ), (False , False )]
415440)
0 commit comments