Skip to content

Commit 647d68c

Browse files
DOC: Enforce Numpy Docstring Validation for pandas.IntervalIndex.is_non_overlapping_monotonic and pandas.arrays.IntervalArray.is_non_overlapping_monotonic (#58670)
* DOC: add SA01 for pandas.IntervalIndex.is_non_overlapping_monotonic * DOC: remove SA01 for pandas.IntervalIndex.is_non_overlapping_monotonic
1 parent 4d9ffcf commit 647d68c

File tree

2 files changed

+47
-5
lines changed

2 files changed

+47
-5
lines changed

ci/code_checks.sh

-2
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,6 @@ if [[ -z "$CHECK" || "$CHECK" == "docstrings" ]]; then
7777
-i "pandas.DataFrame.plot PR02,SA01" \
7878
-i "pandas.Grouper PR02" \
7979
-i "pandas.Index PR07" \
80-
-i "pandas.IntervalIndex.is_non_overlapping_monotonic SA01" \
8180
-i "pandas.IntervalIndex.left GL08" \
8281
-i "pandas.IntervalIndex.length GL08" \
8382
-i "pandas.IntervalIndex.set_closed RT03,SA01" \
@@ -402,7 +401,6 @@ if [[ -z "$CHECK" || "$CHECK" == "docstrings" ]]; then
402401
-i "pandas.arrays.DatetimeArray SA01" \
403402
-i "pandas.arrays.FloatingArray SA01" \
404403
-i "pandas.arrays.IntegerArray SA01" \
405-
-i "pandas.arrays.IntervalArray.is_non_overlapping_monotonic SA01" \
406404
-i "pandas.arrays.IntervalArray.left SA01" \
407405
-i "pandas.arrays.IntervalArray.length SA01" \
408406
-i "pandas.arrays.IntervalArray.mid SA01" \

pandas/core/arrays/interval.py

+47-3
Original file line numberDiff line numberDiff line change
@@ -1509,10 +1509,54 @@ def set_closed(self, closed: IntervalClosedType) -> Self:
15091509
"""
15101510

15111511
@property
1512-
@Appender(
1513-
_interval_shared_docs["is_non_overlapping_monotonic"] % _shared_docs_kwargs
1514-
)
15151512
def is_non_overlapping_monotonic(self) -> bool:
1513+
"""
1514+
Return a boolean whether the IntervalArray/IntervalIndex\
1515+
is non-overlapping and monotonic.
1516+
1517+
Non-overlapping means (no Intervals share points), and monotonic means
1518+
either monotonic increasing or monotonic decreasing.
1519+
1520+
See Also
1521+
--------
1522+
overlaps : Check if two IntervalIndex objects overlap.
1523+
1524+
Examples
1525+
--------
1526+
For arrays:
1527+
1528+
>>> interv_arr = pd.arrays.IntervalArray([pd.Interval(0, 1), pd.Interval(1, 5)])
1529+
>>> interv_arr
1530+
<IntervalArray>
1531+
[(0, 1], (1, 5]]
1532+
Length: 2, dtype: interval[int64, right]
1533+
>>> interv_arr.is_non_overlapping_monotonic
1534+
True
1535+
1536+
>>> interv_arr = pd.arrays.IntervalArray(
1537+
... [pd.Interval(0, 1), pd.Interval(-1, 0.1)]
1538+
... )
1539+
>>> interv_arr
1540+
<IntervalArray>
1541+
[(0.0, 1.0], (-1.0, 0.1]]
1542+
Length: 2, dtype: interval[float64, right]
1543+
>>> interv_arr.is_non_overlapping_monotonic
1544+
False
1545+
1546+
For Interval Index:
1547+
1548+
>>> interv_idx = pd.interval_range(start=0, end=2)
1549+
>>> interv_idx
1550+
IntervalIndex([(0, 1], (1, 2]], dtype='interval[int64, right]')
1551+
>>> interv_idx.is_non_overlapping_monotonic
1552+
True
1553+
1554+
>>> interv_idx = pd.interval_range(start=0, end=2, closed="both")
1555+
>>> interv_idx
1556+
IntervalIndex([[0, 1], [1, 2]], dtype='interval[int64, both]')
1557+
>>> interv_idx.is_non_overlapping_monotonic
1558+
False
1559+
"""
15161560
# must be increasing (e.g., [0, 1), [1, 2), [2, 3), ... )
15171561
# or decreasing (e.g., [-1, 0), [-2, -1), [-3, -2), ...)
15181562
# we already require left <= right

0 commit comments

Comments
 (0)