From 13599d07e83f5bf6b346158071d76153c5752946 Mon Sep 17 00:00:00 2001 From: 72004 Date: Sat, 7 Nov 2026 15:05:18 +0500 Subject: [PATCH] fix: handle indefinite Range bound of 0 in normalize _get_allele_location_pos picked the defined bound of an indefinite Range with `pos.root[0] or pos.root[1]`, so a bound of 0 (e.g. Range([0, None])) was treated as missing and val became None, which made normalize() raise a TypeError. Pick the defined side explicitly instead. --- src/ga4gh/vrs/normalize.py | 2 +- tests/test_vrs_normalize.py | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/ga4gh/vrs/normalize.py b/src/ga4gh/vrs/normalize.py index 9747febd..0ee08b74 100644 --- a/src/ga4gh/vrs/normalize.py +++ b/src/ga4gh/vrs/normalize.py @@ -58,7 +58,7 @@ def _get_allele_location_pos( if not pos0_is_none and not pos1_is_none: # definite range return None - val = pos.root[0] or pos.root[1] + val = pos.root[1] if pos0_is_none else pos.root[0] pos_type = ( PosType.RANGE_LT_OR_EQUAL if pos0_is_none else PosType.RANGE_GT_OR_EQUAL ) diff --git a/tests/test_vrs_normalize.py b/tests/test_vrs_normalize.py index d6f62545..860c6a7b 100644 --- a/tests/test_vrs_normalize.py +++ b/tests/test_vrs_normalize.py @@ -966,6 +966,23 @@ def _bounds_allele( "expected_start": [None, 4400], "expected_end": [4501, None], }, + # a defined range bound of 0 must not be mistaken for the undefined one + { + "id": "indefinite-start-range-from-zero", + "start": [0, None], + "end": 1, + "sequence": "T", + "expected_start": [0, None], + "expected_end": 1, + }, + { + "id": "indefinite-end-range-from-zero", + "start": [None, 0], + "end": [0, None], + "sequence": "A", + "expected_start": [None, 0], + "expected_end": [0, None], + }, ]