Skip to content

Commit 0ea879a

Browse files
committed
refactor(feature-flags): use standard integer types for validation
Signed-off-by: Cathleen Yan <58714163+cathleeny@users.noreply.github.com>
1 parent 1ce7f5b commit 0ea879a

1 file changed

Lines changed: 11 additions & 10 deletions

File tree

‎src/databricks/sql/common/feature_flag.py‎

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import math
33
import threading
44
import time
5+
from ctypes import c_int32, c_int64
56
from dataclasses import dataclass, field
67
from concurrent.futures import Future, ThreadPoolExecutor
78
from typing import Dict, Optional, List, Any
@@ -124,26 +125,26 @@ def get_bool(self, name: str, default_value: bool = False) -> bool:
124125
value = self._get_value(name)
125126
return value if type(value) is bool else default_value
126127

127-
def _get_int(self, name, bits, default_value):
128+
def _get_int(self, name, integer_type, default_value):
128129
value = self._get_value(name)
129-
if type(value) is int and -(2 ** (bits - 1)) <= value < 2 ** (bits - 1):
130+
if type(value) is int and integer_type(value).value == value:
130131
return value
131132
return default_value
132133

133134
def get_int32(self, name: str, default_value=None) -> Optional[int]:
134-
return self._get_int(name, 32, default_value)
135+
return self._get_int(name, c_int32, default_value)
135136

136137
def get_int64(self, name: str, default_value=None) -> Optional[int]:
137-
return self._get_int(name, 64, default_value)
138+
return self._get_int(name, c_int64, default_value)
138139

139140
def get_double(self, name: str, default_value=None) -> Optional[float]:
140141
value = self._get_value(name)
141-
try:
142-
if type(value) in (int, float) and math.isfinite(value):
143-
return float(value)
144-
except OverflowError:
145-
pass
146-
return default_value
142+
if type(value) is int:
143+
try:
144+
value = float(value)
145+
except OverflowError:
146+
return default_value
147+
return value if type(value) is float and math.isfinite(value) else default_value
147148

148149
def get_string(self, name: str, default_value=None) -> Optional[str]:
149150
value = self._get_value(name)

0 commit comments

Comments
 (0)