12
12
13
13
from typing import TYPE_CHECKING
14
14
15
- import ranges
16
- from ranges import Range
15
+ if TYPE_CHECKING :
16
+ import ranges
17
+ from ranges import Range , RangeDict
17
18
18
19
import range_streams
19
20
20
21
21
- def ranges_in_reg_order (ranges : ranges . RangeDict ) -> list [Range ]:
22
+ def ranges_in_reg_order (ranges : RangeDict ) -> list [Range ]:
22
23
"Presumes integrity is already checked: ranges in order of registration"
23
24
return [k [0 ].ranges ()[0 ] for k , v in ranges .items ()]
24
25
25
26
26
- def response_ranges_in_reg_order (ranges : ranges . RangeDict ) -> list [Range ]:
27
+ def response_ranges_in_reg_order (ranges : RangeDict ) -> list [Range ]:
27
28
"RangeResponse requested ranges in order of registration"
28
29
return [v .request .range for k , v in ranges .items ()]
29
30
30
31
31
32
def most_recent_range (
32
33
stream : range_streams .range_stream .RangeStream , internal : bool = True
33
- ) -> ranges . Range | None :
34
+ ) -> Range | None :
34
35
if stream ._ranges .isempty ():
35
36
rng = None # type: Range | None
36
37
else :
@@ -39,7 +40,7 @@ def most_recent_range(
39
40
return rng
40
41
41
42
42
- def range_termini (rng : ranges . Range ) -> tuple [int , int ]:
43
+ def range_termini (rng : Range ) -> tuple [int , int ]:
43
44
"""
44
45
Get the inclusive start and end positions `[start,end]` from a `ranges.Range`.
45
46
These are referred to as the 'termini'. Ranges are always ascending.
@@ -52,26 +53,26 @@ def range_termini(rng: ranges.Range) -> tuple[int, int]:
52
53
return start , end
53
54
54
55
55
- def range_len (rng : ranges . Range ) -> int :
56
+ def range_len (rng : Range ) -> int :
56
57
rmin , rmax = range_termini (rng )
57
58
return rmax - rmin
58
59
59
60
60
- def range_min (rng : ranges . Range ) -> int :
61
+ def range_min (rng : Range ) -> int :
61
62
if rng .isempty ():
62
63
raise ValueError ("Empty range has no minimum" )
63
64
return range_termini (rng )[0 ]
64
65
65
66
66
- def range_max (rng : ranges . Range ) -> int :
67
+ def range_max (rng : Range ) -> int :
67
68
if rng .isempty ():
68
69
raise ValueError ("Empty range has no maximum" )
69
70
return range_termini (rng )[1 ]
70
71
71
72
72
73
def validate_range (
73
- byte_range : ranges . Range | tuple [int , int ], allow_empty : bool = True
74
- ) -> ranges . Range :
74
+ byte_range : Range | tuple [int , int ], allow_empty : bool = True
75
+ ) -> Range :
75
76
"""
76
77
Validate byte_range and convert to `[a,b)` :class:`ranges.Range` if given as integer
77
78
tuple.
@@ -95,7 +96,7 @@ def validate_range(
95
96
return byte_range
96
97
97
98
98
- def range_span (ranges : list [ranges . Range ]) -> ranges . Range :
99
+ def range_span (ranges : list [Range ]) -> Range :
99
100
"""
100
101
Assumes input list of :class:`RangeSets` are in ascending order, switches if not
101
102
"""
@@ -109,7 +110,7 @@ def range_span(ranges: list[ranges.Range]) -> ranges.Range:
109
110
110
111
111
112
def ext2int (
112
- stream : range_streams .range_stream .RangeStream , ext_rng : ranges . Range
113
+ stream : range_streams .range_stream .RangeStream , ext_rng : Range
113
114
) -> range_streams .range_stream .RangeResponse :
114
115
"""
115
116
Given the external range `ext_rng` and the :class:`RangeStream` ``stream`` on which it is
0 commit comments