|
2 | 2 | import math |
3 | 3 | import threading |
4 | 4 | import time |
| 5 | +from ctypes import c_int32, c_int64 |
5 | 6 | from dataclasses import dataclass, field |
6 | 7 | from concurrent.futures import Future, ThreadPoolExecutor |
7 | 8 | from typing import Dict, Optional, List, Any |
@@ -124,26 +125,26 @@ def get_bool(self, name: str, default_value: bool = False) -> bool: |
124 | 125 | value = self._get_value(name) |
125 | 126 | return value if type(value) is bool else default_value |
126 | 127 |
|
127 | | - def _get_int(self, name, bits, default_value): |
| 128 | + def _get_int(self, name, integer_type, default_value): |
128 | 129 | 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: |
130 | 131 | return value |
131 | 132 | return default_value |
132 | 133 |
|
133 | 134 | 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) |
135 | 136 |
|
136 | 137 | 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) |
138 | 139 |
|
139 | 140 | def get_double(self, name: str, default_value=None) -> Optional[float]: |
140 | 141 | 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 |
147 | 148 |
|
148 | 149 | def get_string(self, name: str, default_value=None) -> Optional[str]: |
149 | 150 | value = self._get_value(name) |
|
0 commit comments