Skip to content

Commit 74d1b01

Browse files
authored
Merge pull request #433 from binance/release_common_v3.1.1
2 parents 0d54b0b + 46f7713 commit 74d1b01

File tree

5 files changed

+36
-4
lines changed

5 files changed

+36
-4
lines changed

.github/workflows/release.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ jobs:
2727
needs: detect-clients
2828
runs-on: ubuntu-latest
2929
strategy:
30-
max-parallel: 2
30+
max-parallel: 3
3131
matrix:
3232
client: ${{ fromJson(needs.detect-clients.outputs.clients) }}
3333
steps:

common/CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
# Changelog
22

3+
## 3.1.1 - 2025-09-16
4+
5+
### Changed (1)
6+
7+
- Fixed missing enum check in `clean_none_value`.
8+
39
## 3.1.0 - 2025-09-12
410

511
### Changed (3)

common/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "binance-common"
3-
version = "3.1.0"
3+
version = "3.1.1"
44
description = "Binance Common Types and Utilities for Binance Connectors"
55
authors = ["Binance"]
66
license = "MIT"

common/src/binance_common/utils.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,9 @@ def clean_none_value(d: dict) -> dict:
8989
dict: A new dictionary with only non-`None` values from the input dictionary.
9090
"""
9191

92-
if isinstance(d, dict):
92+
if isinstance(d, Enum):
93+
return d.value
94+
elif isinstance(d, dict):
9395
out = {}
9496
for k, v in d.items():
9597
cleaned = clean_none_value(v)
@@ -182,7 +184,7 @@ def encoded_string(query: str) -> str:
182184

183185
query = transform_query(query)
184186
query = {
185-
k: json.dumps(v, separators=(",", ":")) if isinstance(v, (dict, list)) else v
187+
snake_to_camel(k): json.dumps(make_serializable(v), separators=(",", ":")) if isinstance(v, (dict, list)) else make_serializable(v)
186188
for k, v in query.items()
187189
}
188190
return urlencode(query, True)

common/tests/unit/test_utils.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,20 @@ def test_clean_none_value_with_array_of_dicts(self):
249249

250250
assert clean_none_value(input_list) == expected_output
251251

252+
def test_clean_none_value_with_enum(self):
253+
class BasisPeriodEnum(Enum):
254+
TEST_A = "TEST_A"
255+
TEST_B = "TEST_B"
256+
257+
input_list = [
258+
{"a": 0, "b": False, "c": BasisPeriodEnum.TEST_A, "d": "", "e": [], "f": {}},
259+
]
260+
expected_output = [
261+
{"a": 0, "b": False, "c": "TEST_A", "d": ""}
262+
]
263+
264+
assert clean_none_value(input_list) == expected_output
265+
252266

253267
class TestGetTimestamp(unittest.TestCase):
254268
def test_timestamp_is_integer(self):
@@ -417,6 +431,16 @@ def __init__(self, a, b):
417431

418432
self.assertEqual(encoded_string(query), expected_value)
419433

434+
def test_encode_with_snake_case(self):
435+
query = {"user_email": "[email protected]", "admin_email": "[email protected]"}
436+
437+
expected_value = urlencode({
438+
"userEmail": "[email protected]",
439+
"adminEmail": "[email protected]"
440+
}, doseq=True)
441+
442+
self.assertEqual(encoded_string(query), expected_value)
443+
420444

421445
class TestIsOneOfModel(unittest.TestCase):
422446

0 commit comments

Comments
 (0)