36
36
def is_special_value (value ) -> bool :
37
37
return isinstance (value , str ) and value .startswith (SP_VALUE_STR )
38
38
39
+ def float_range (start ,stop ,step ):
40
+ while start < stop :
41
+ yield start
42
+ start += step
39
43
40
44
def explain_range (range_str : str ) -> List :
41
45
def check_range_values_size (range_values : List [int ], size : int ):
@@ -47,13 +51,15 @@ def check_range_values_size(range_values: List[int], size: int):
47
51
range_values = range_str .replace ("[RANGE]" , "" ).split (":" )
48
52
# TODO: add float values
49
53
range_type = range_values [0 ]
50
- range_values = list (map (int , range_values [1 :]))
54
+ #range_values = list(map(int, range_values[1:]))
55
+ range_values = list (map (float , range_values [1 :]))
51
56
# - add:start{int}:end{int}:step{int} - Arithmetic progression
52
57
# Sequence: start + step * i <= end
53
58
if range_type == "add" :
54
59
check_range_values_size (range_values , 3 )
55
60
start , end , step = range_values
56
- return list (range (start , end + step , step ))
61
+ #return list(range(start, end + step, step))
62
+ return list (float_range (start , end + step , step ))
57
63
# - mul:current{int}:end{int}:step{int} - Geometric progression
58
64
# Sequence: current * step <= end
59
65
elif range_type == "mul" :
@@ -71,7 +77,8 @@ def check_range_values_size(range_values: List[int], size: int):
71
77
range_values .append (1 )
72
78
check_range_values_size (range_values , 4 )
73
79
base , start , end , step = range_values
74
- return [base ** i for i in range (start , end + step , step )]
80
+ #return [base**i for i in range(start, end + step, step)]
81
+ return [base ** i for i in float_range (start , end + step , step )]
75
82
else :
76
83
raise ValueError (f'Unknown "{ range_type } " range type' )
77
84
0 commit comments