|
1 | 1 | from decimal import Decimal |
2 | | -from typing import NamedTuple, Optional, Tuple, Union |
| 2 | +from typing import TYPE_CHECKING, NamedTuple, Optional, Tuple, Union |
3 | 3 |
|
4 | 4 | BYTE = 1 |
5 | 5 |
|
@@ -169,41 +169,45 @@ def convert_units( |
169 | 169 | except KeyError: |
170 | 170 | raise ValueError(f'{to} is not a valid binary unit.') |
171 | 171 |
|
| 172 | + babs = abs(b) |
| 173 | + if TYPE_CHECKING: |
| 174 | + assert isinstance(babs, float) or isinstance(babs, Decimal) |
| 175 | + |
172 | 176 | if unit in BINARY_PREFIXES and not si: |
173 | | - if abs(b) < KIBIBYTE: |
| 177 | + if babs < KIBIBYTE: |
174 | 178 | return b, 'B' |
175 | | - elif abs(b) < MEBIBYTE: |
| 179 | + elif babs < MEBIBYTE: |
176 | 180 | return b / KIBIBYTE, 'KiB' |
177 | | - elif abs(b) < GIBIBYTE: |
| 181 | + elif babs < GIBIBYTE: |
178 | 182 | return b / MEBIBYTE, 'MiB' |
179 | | - elif abs(b) < TEBIBYTE: |
| 183 | + elif babs < TEBIBYTE: |
180 | 184 | return b / GIBIBYTE, 'GiB' |
181 | | - elif abs(b) < PEBIBYTE: |
| 185 | + elif babs < PEBIBYTE: |
182 | 186 | return b / TEBIBYTE, 'TiB' |
183 | | - elif abs(b) < EXBIBYTE: |
| 187 | + elif babs < EXBIBYTE: |
184 | 188 | return b / PEBIBYTE, 'PiB' |
185 | | - elif abs(b) < ZEBIBYTE: |
| 189 | + elif babs < ZEBIBYTE: |
186 | 190 | return b / EXBIBYTE, 'EiB' |
187 | | - elif abs(b) < YOBIBYTE: |
| 191 | + elif babs < YOBIBYTE: |
188 | 192 | return b / ZEBIBYTE, 'ZiB' |
189 | 193 | else: |
190 | 194 | return b / YOBIBYTE, 'YiB' |
191 | 195 | else: |
192 | | - if abs(b) < KILOBYTE: |
| 196 | + if babs < KILOBYTE: |
193 | 197 | return b, 'B' |
194 | | - elif abs(b) < MEGABYTE: |
| 198 | + elif babs < MEGABYTE: |
195 | 199 | return b / KILOBYTE, 'KB' |
196 | | - elif abs(b) < GIGABYTE: |
| 200 | + elif babs < GIGABYTE: |
197 | 201 | return b / MEGABYTE, 'MB' |
198 | | - elif abs(b) < TERABYTE: |
| 202 | + elif babs < TERABYTE: |
199 | 203 | return b / GIGABYTE, 'GB' |
200 | | - elif abs(b) < PETABYTE: |
| 204 | + elif babs < PETABYTE: |
201 | 205 | return b / TERABYTE, 'TB' |
202 | | - elif abs(b) < EXABYTE: |
| 206 | + elif babs < EXABYTE: |
203 | 207 | return b / PETABYTE, 'PB' |
204 | | - elif abs(b) < ZETTABYTE: |
| 208 | + elif babs < ZETTABYTE: |
205 | 209 | return b / EXABYTE, 'EB' |
206 | | - elif abs(b) < YOTTABYTE: |
| 210 | + elif babs < YOTTABYTE: |
207 | 211 | return b / ZETTABYTE, 'ZB' |
208 | 212 | else: |
209 | 213 | return b / YOTTABYTE, 'YB' |
0 commit comments