From 7801758d3847eb64de15eabc8317b44aacaed58e Mon Sep 17 00:00:00 2001 From: AshrafHosam Date: Tue, 14 Apr 2026 11:16:10 +0200 Subject: [PATCH 1/2] fix(coordinate_compression): raise exceptions instead of returning -1 Previously `compress()` and `decompress()` returned -1 on invalid input while `coordinate_map[...]` raised KeyError, giving inconsistent error semantics. This change makes error handling uniform: `compress` raises KeyError and `decompress` raises IndexError, matching Python conventions and the underlying dict/list. Docstrings and doctests updated. Fixes #13509 --- data_compression/coordinate_compression.py | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/data_compression/coordinate_compression.py b/data_compression/coordinate_compression.py index 9c4ad9a99ac3..491312602409 100644 --- a/data_compression/coordinate_compression.py +++ b/data_compression/coordinate_compression.py @@ -87,16 +87,21 @@ def compress(self, original: float | str) -> int: original: The value to compress. Returns: - The compressed integer, or -1 if not found in the original list. + The compressed integer. + + Raises: + KeyError: If ``original`` was not part of the input list. >>> arr = [100, 10, 52, 83] >>> cc = CoordinateCompressor(arr) >>> cc.compress(100) 3 >>> cc.compress(7) # Value not in the original list - -1 + Traceback (most recent call last): + ... + KeyError: 7 """ - return self.coordinate_map.get(original, -1) + return self.coordinate_map[original] def decompress(self, num: int) -> int | float | str: """ @@ -108,14 +113,21 @@ def decompress(self, num: int) -> int | float | str: Returns: The original value. + Raises: + IndexError: If ``num`` is not a valid compressed coordinate. + >>> arr = [100, 10, 52, 83] >>> cc = CoordinateCompressor(arr) >>> cc.decompress(0) 10 >>> cc.decompress(5) # Compressed coordinate out of range - -1 + Traceback (most recent call last): + ... + IndexError: compressed coordinate 5 is out of range """ - return self.reverse_map[num] if 0 <= num < len(self.reverse_map) else -1 + if not 0 <= num < len(self.reverse_map): + raise IndexError(f"compressed coordinate {num} is out of range") + return self.reverse_map[num] if __name__ == "__main__": From cc0b39cc84e9ead073bf37bd5e84657e5b759020 Mon Sep 17 00:00:00 2001 From: AshrafHosam Date: Tue, 14 Apr 2026 19:52:19 +0200 Subject: [PATCH 2/2] style: assign f-string to variable before raise (ruff EM102) --- data_compression/coordinate_compression.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/data_compression/coordinate_compression.py b/data_compression/coordinate_compression.py index 491312602409..bdb5f204536b 100644 --- a/data_compression/coordinate_compression.py +++ b/data_compression/coordinate_compression.py @@ -126,7 +126,8 @@ def decompress(self, num: int) -> int | float | str: IndexError: compressed coordinate 5 is out of range """ if not 0 <= num < len(self.reverse_map): - raise IndexError(f"compressed coordinate {num} is out of range") + msg = f"compressed coordinate {num} is out of range" + raise IndexError(msg) return self.reverse_map[num]