From 58fa865412ecc606c7097158eb1e58a32224a1a6 Mon Sep 17 00:00:00 2001 From: Chaim Halbert Date: Wed, 24 Dec 2025 16:59:51 -0700 Subject: [PATCH 1/3] chore: unused from warnings import warn --- intervaltree/intervaltree.py | 1 - 1 file changed, 1 deletion(-) diff --git a/intervaltree/intervaltree.py b/intervaltree/intervaltree.py index 4dae20b..91e0336 100644 --- a/intervaltree/intervaltree.py +++ b/intervaltree/intervaltree.py @@ -27,7 +27,6 @@ from numbers import Number from sortedcontainers import SortedDict from copy import copy -from warnings import warn try: from collections.abc import MutableSet # Python 3? From 018d673209e0a1ce7afc785f20a56d9734662a29 Mon Sep 17 00:00:00 2001 From: Chaim Halbert Date: Wed, 24 Dec 2025 17:04:05 -0700 Subject: [PATCH 2/3] fix(chop): rm extra end_hits condition fixes #141 --- intervaltree/intervaltree.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/intervaltree/intervaltree.py b/intervaltree/intervaltree.py index 91e0336..e273127 100644 --- a/intervaltree/intervaltree.py +++ b/intervaltree/intervaltree.py @@ -496,10 +496,17 @@ def chop(self, begin, end, datafunc=None): """ Like remove_envelop(), but trims back Intervals hanging into the chopped area so that nothing overlaps. + If specified, uses datafunc(interval, islower=True/False) to + set the data field of the new Intervals. + :param begin: where to chop + :param end: where to chop + :param datafunc(interval, isupper): callable returning a new + value for the interval's data field, whenever overhangers are + replaced. """ insertions = set() begin_hits = [iv for iv in self.at(begin) if iv.begin < begin] - end_hits = [iv for iv in self.at(end) if iv.end > end] + end_hits = self.at(end) if datafunc: for iv in begin_hits: From 8510e8a4052141d278ea0f246e28ea940e00c2d8 Mon Sep 17 00:00:00 2001 From: Chaim Halbert Date: Wed, 24 Dec 2025 17:13:22 -0700 Subject: [PATCH 3/3] doc(changelog): extra check and allocation during chop --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1eb3229..a71113f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ - Fixed: - Better subclassing support: Determine classes dynamically, so that methods like str() are aware when our types are subclassed. + - Removed no-op check and extra list allocation during chop() - Maintainers: - Load issue4 test data via JSON to save on compilation and collection time.