Skip to content

Commit 9666ca9

Browse files
committed
Refactor numberish function for improved readability and accuracy; update QueryStringTransformer methods to ensure parameter checks handle string values correctly
1 parent ab22c94 commit 9666ca9

2 files changed

Lines changed: 17 additions & 11 deletions

File tree

tna_utilities/number.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,12 @@
44
def numberish(
55
value: Union[float, int],
66
simple_units: bool = False,
7-
prefix_text: Union[str, tuple[str]] = "About ",
7+
prefix_text: Union[str, tuple[str, str]] = "About ",
88
) -> str:
9+
"""
10+
Convert a number into a human-readable string with appropriate units.
11+
"""
12+
913
if not isinstance(value, (int, float)):
1014
raise ValueError("Value must be an integer or float")
1115
if value == 0:
@@ -23,8 +27,8 @@ def numberish(
2327
base_value = value / threshold
2428
if base_value.is_integer():
2529
return f"{int(base_value)}{unit}"
26-
base_value_2sf = float(f"{base_value:.2g}")
27-
if base_value_2sf == base_value:
30+
base_value_rounded = float(f"{base_value:.2g}")
31+
if base_value_rounded == base_value:
2832
prefix_text = ""
2933
elif isinstance(prefix_text, tuple):
3034
if len(prefix_text) != 2:
@@ -33,9 +37,8 @@ def numberish(
3337
raise ValueError(
3438
"Both elements of the prefix_text tuple must be strings"
3539
)
40+
is_approximation_high = base_value_rounded * threshold - value >= 0
3641
prefix_text = (
37-
prefix_text[0]
38-
if base_value_2sf * threshold - value >= 0
39-
else prefix_text[1]
42+
prefix_text[0] if is_approximation_high else prefix_text[1]
4043
)
41-
return f"{prefix_text}{base_value_2sf:g}{unit}"
44+
return f"{prefix_text}{base_value_rounded:g}{unit}"

tna_utilities/url.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,10 @@ def parameter_exists(self, parameter) -> bool:
3030
Check if a parameter exists in the query parameters.
3131
"""
3232

33-
return parameter in dict(self.args)
33+
for key, _ in self.args:
34+
if key == parameter:
35+
return True
36+
return False
3437

3538
def parameter_values(self, parameter: str) -> list:
3639
"""
@@ -123,7 +126,7 @@ def toggle_parameter_value(
123126

124127
for key, values in self.args:
125128
if key == parameter:
126-
if value in values:
129+
if str(value) in values:
127130
self.remove_parameter_value(parameter, value)
128131
else:
129132
self.add_parameter_value(parameter, value)
@@ -140,8 +143,8 @@ def remove_parameter_value(
140143

141144
for key, values in self.args:
142145
if key == parameter:
143-
if value in values:
144-
values.remove(value)
146+
if str(value) in values:
147+
values.remove(str(value))
145148
return self
146149
raise AttributeError(f"Parameter '{parameter}' does not exist")
147150

0 commit comments

Comments
 (0)