Skip to content

Commit f6bd946

Browse files
authored
Make positional only args kwargs or positional (#18)
* Make args not positional only * Fix missing default value in stubs
1 parent 558100b commit f6bd946

File tree

4 files changed

+20
-3
lines changed

4 files changed

+20
-3
lines changed

fast_query_parsers.pyi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ Returns:
1212
A list of string/string tuples.
1313
"""
1414

15-
def parse_url_encoded_dict(qs: bytes, parse_numbers: bool) -> dict[str, Any]: ...
15+
def parse_url_encoded_dict(qs: bytes, parse_numbers: bool = False) -> dict[str, Any]: ...
1616

1717
"""Parse a query string into a dictionary of values.
1818

src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,14 @@ pub use query_string::{parse_query_string as parse_qs, parse_query_string_to_jso
77

88
// parse query string into a list of tuples.
99
#[pyfunction]
10-
#[pyo3(text_signature = "(qs, separator, /)")]
10+
#[pyo3(text_signature = "(qs, separator)")]
1111
fn parse_query_string(qs: &[u8], separator: char) -> PyResult<Vec<(String, String)>> {
1212
Ok(parse_qs(qs, separator))
1313
}
1414

1515
// parse query string into a python object.
1616
#[pyfunction]
17-
#[pyo3(signature = (qs, parse_numbers=true, /),text_signature = "(qs, parse_numbers=true, /)")]
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: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,3 +53,16 @@ def test_parse_urlencoded_defaults_parse_numbers_true() -> None:
5353
"polluting": False,
5454
"json": None,
5555
}
56+
57+
58+
def test_parse_urlencoded_kwargs() -> None:
59+
result = parse_url_encoded_dict(qs=encoded, parse_numbers=True)
60+
assert result == {
61+
"value": [10, 12],
62+
"veggies": ["tomato", "potato", "aubergine"],
63+
"nested": {"some_key": "some_value"},
64+
"calories": 122.53,
65+
"healthy": True,
66+
"polluting": False,
67+
"json": None,
68+
}

tests/test_parse_qsl.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,3 +77,7 @@ def test_parses_non_ascii_text() -> None:
7777
assert parse_query_string("arabic_text=اختبار اللغة العربية".encode(), "&") == [
7878
("arabic_text", "اختبار اللغة العربية")
7979
]
80+
81+
82+
def test_kwargs() -> None:
83+
assert parse_query_string(qs=b"foo=bar", separator="&") == [("foo", "bar")]

0 commit comments

Comments
 (0)