Skip to content

Commit 558100b

Browse files
committed
fix(python): add missing default value for parse_numbers
1 parent 9a208f0 commit 558100b

File tree

6 files changed

+34
-31
lines changed

6 files changed

+34
-31
lines changed

Cargo.lock

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ description = "Ultra-fast query string and url-encoded form-data parsers"
55
readme = "README.md"
66
license-file = "LICENSE"
77
repository = "https://github.com/starlite-api/fast-query-parsers"
8-
version = "1.0.0"
8+
version = "1.0.1"
99
edition = "2021"
1010

1111
[lib]

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ encoded = urlencode(
7474
]
7575
).encode()
7676

77-
result = parse_url_encoded_dict(encoded, True)
77+
result = parse_url_encoded_dict(encoded, parse_numbers=True)
7878

7979
# result == {
8080
# "value": [10, 12],
@@ -92,6 +92,7 @@ does not nest all values inside lists.
9292

9393
Note: the second argument passed to `parse_url_encoded_dict` dictates whether numbers should be parsed. If `True`,
9494
the value will be parsed into an int or float as appropriate, otherwise it will be kept as a string.
95+
By default the value of this arg is `True`.
9596

9697
#### Benchmarks
9798

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 = "fast-query-parsers"
3-
version = "1.0.0"
3+
version = "1.0.1"
44
description = "Ultra-fast query string and url-encoded form-data parsers"
55
authors = [
66
"Na'aman Hirschfeld <[email protected]>",

src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ fn parse_query_string(qs: &[u8], separator: char) -> PyResult<Vec<(String, Strin
1414

1515
// parse query string into a python object.
1616
#[pyfunction]
17-
#[pyo3(text_signature = "(qs, parse_numbers, /)")]
17+
#[pyo3(signature = (qs, parse_numbers=true, /),text_signature = "(qs, parse_numbers=true, /)")]
1818
fn parse_url_encoded_dict(py: Python, qs: &[u8], parse_numbers: bool) -> PyResult<PyObject> {
1919
Ok(pythonize(py, &parse_query_string_to_json(qs, parse_numbers)).unwrap())
2020
}

tests/test_parse_qs.py

Lines changed: 26 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,21 @@
22

33
from fast_query_parsers import parse_url_encoded_dict
44

5+
encoded = urlencode(
6+
[
7+
("value", "10"),
8+
("value", "12"),
9+
("veggies", '["tomato", "potato", "aubergine"]'),
10+
("nested", '{"some_key": "some_value"}'),
11+
("calories", "122.53"),
12+
("healthy", "true"),
13+
("polluting", "false"),
14+
("json", "null"),
15+
],
16+
).encode()
17+
518

619
def test_parse_urlencoded_with_parse_numbers() -> None:
7-
encoded = urlencode(
8-
[
9-
("value", "10"),
10-
("value", "12"),
11-
("veggies", '["tomato", "potato", "aubergine"]'),
12-
("nested", '{"some_key": "some_value"}'),
13-
("calories", "122.53"),
14-
("healthy", "true"),
15-
("polluting", "false"),
16-
("json", "null"),
17-
],
18-
).encode()
1920
result = parse_url_encoded_dict(encoded, True)
2021
assert result == {
2122
"value": [10, 12],
@@ -29,18 +30,6 @@ def test_parse_urlencoded_with_parse_numbers() -> None:
2930

3031

3132
def test_parse_urlencoded_without_parse_numbers() -> None:
32-
encoded = urlencode(
33-
[
34-
("value", "10"),
35-
("value", "12"),
36-
("veggies", '["tomato", "potato", "aubergine"]'),
37-
("nested", '{"some_key": "some_value"}'),
38-
("calories", "122.53"),
39-
("healthy", "true"),
40-
("polluting", "false"),
41-
("json", "null"),
42-
],
43-
).encode()
4433
result = parse_url_encoded_dict(encoded, False)
4534
assert result == {
4635
"value": ["10", "12"],
@@ -51,3 +40,16 @@ def test_parse_urlencoded_without_parse_numbers() -> None:
5140
"polluting": False,
5241
"json": None,
5342
}
43+
44+
45+
def test_parse_urlencoded_defaults_parse_numbers_true() -> None:
46+
result = parse_url_encoded_dict(encoded)
47+
assert result == {
48+
"value": [10, 12],
49+
"veggies": ["tomato", "potato", "aubergine"],
50+
"nested": {"some_key": "some_value"},
51+
"calories": 122.53,
52+
"healthy": True,
53+
"polluting": False,
54+
"json": None,
55+
}

0 commit comments

Comments
 (0)