Are the provided divisions valid? Examples -------- >>> valid_divisions([1, 2, 3]) True >>> valid_divisions([3, 2, 1]) False >>> valid_divisions([1, 1, 1]) False >>> valid_divisions([0, 1, 1]) True >>> valid_divisions((1, 2, 3)) True >>> valid_div
(divisions)
| 670 | |
| 671 | |
| 672 | def valid_divisions(divisions): |
| 673 | """Are the provided divisions valid? |
| 674 | |
| 675 | Examples |
| 676 | -------- |
| 677 | >>> valid_divisions([1, 2, 3]) |
| 678 | True |
| 679 | >>> valid_divisions([3, 2, 1]) |
| 680 | False |
| 681 | >>> valid_divisions([1, 1, 1]) |
| 682 | False |
| 683 | >>> valid_divisions([0, 1, 1]) |
| 684 | True |
| 685 | >>> valid_divisions((1, 2, 3)) |
| 686 | True |
| 687 | >>> valid_divisions(123) |
| 688 | False |
| 689 | >>> valid_divisions([0, float('nan'), 1]) |
| 690 | False |
| 691 | """ |
| 692 | if not isinstance(divisions, (tuple, list)): |
| 693 | return False |
| 694 | |
| 695 | # Cast tuples to lists as `pd.isnull` treats them differently |
| 696 | # https://github.com/pandas-dev/pandas/issues/52283 |
| 697 | if isinstance(divisions, tuple): |
| 698 | divisions = list(divisions) |
| 699 | |
| 700 | if pd.isnull(divisions).any(): |
| 701 | return False |
| 702 | |
| 703 | for i, x in enumerate(divisions[:-2]): |
| 704 | if x >= divisions[i + 1]: |
| 705 | return False |
| 706 | if isinstance(x, Number) and math.isnan(x): |
| 707 | return False |
| 708 | |
| 709 | for x in divisions[-2:]: |
| 710 | if isinstance(x, Number) and math.isnan(x): |
| 711 | return False |
| 712 | |
| 713 | return divisions[-2] <= divisions[-1] |
| 714 | |
| 715 | |
| 716 | class AttributeNotImplementedError(NotImplementedError, AttributeError): |
searching dependent graphs…