11# Feature State Value Types
2+ import sys
3+
4+ from features .constants import MAX_32_BIT_INTEGER
25from features .value_types import BOOLEAN , INTEGER , STRING
36
47
@@ -8,34 +11,38 @@ def get_value_type(value: str) -> str:
811
912 e.g. "12" -> "int", "12.34" -> "float", etc.
1013 """
11- if is_integer (value ): # type: ignore[no-untyped-call]
14+ if is_32_bit_integer (value ):
1215 return INTEGER
13- elif is_boolean (value ): # type: ignore[no-untyped-call]
16+ elif is_boolean (value ):
1417 return BOOLEAN
1518 else :
1619 return STRING
1720
1821
19- def is_integer (value ): # type: ignore[no-untyped-def]
22+ def is_32_bit_integer (value : str ) -> bool :
23+ return is_integer (value , max_abs_value = MAX_32_BIT_INTEGER )
24+
25+
26+ def is_integer (value : str , max_abs_value : int = sys .maxsize ) -> bool :
2027 try :
21- int (value )
22- return True
28+ int_value = int (value )
29+ return abs ( int_value ) < max_abs_value
2330 except ValueError :
2431 return False
2532
2633
27- def is_boolean (value ): # type: ignore[no-untyped-def]
34+ def is_boolean (value : str ) -> bool :
2835 return value in ("true" , "True" , "false" , "False" )
2936
3037
31- def get_integer_from_string (value ): # type: ignore[no-untyped-def]
38+ def get_integer_from_string (value : str ) -> int :
3239 try :
3340 return int (value )
3441 except ValueError :
3542 return 0
3643
3744
38- def get_boolean_from_string (value ): # type: ignore[no-untyped-def]
45+ def get_boolean_from_string (value : str ) -> bool :
3946 if value in ("false" , "False" ):
4047 return False
4148 else :
0 commit comments