diff --git a/fast_query_parsers.pyi b/fast_query_parsers.pyi index f0d7675..57ab360 100644 --- a/fast_query_parsers.pyi +++ b/fast_query_parsers.pyi @@ -12,7 +12,7 @@ Returns: A list of string/string tuples. """ -def parse_url_encoded_dict(qs: bytes, parse_numbers: bool) -> dict[str, Any]: ... +def parse_url_encoded_dict(qs: bytes, parse_numbers: bool = False) -> dict[str, Any]: ... """Parse a query string into a dictionary of values. diff --git a/src/lib.rs b/src/lib.rs index 3e0c697..80ca48e 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -7,14 +7,14 @@ pub use query_string::{parse_query_string as parse_qs, parse_query_string_to_jso // parse query string into a list of tuples. #[pyfunction] -#[pyo3(text_signature = "(qs, separator, /)")] +#[pyo3(text_signature = "(qs, separator)")] fn parse_query_string(qs: &[u8], separator: char) -> PyResult> { Ok(parse_qs(qs, separator)) } // parse query string into a python object. #[pyfunction] -#[pyo3(signature = (qs, parse_numbers=true, /),text_signature = "(qs, parse_numbers=true, /)")] +#[pyo3(signature = (qs, parse_numbers=true),text_signature = "(qs, parse_numbers=true)")] fn parse_url_encoded_dict(py: Python, qs: &[u8], parse_numbers: bool) -> PyResult { Ok(pythonize(py, &parse_query_string_to_json(qs, parse_numbers)).unwrap()) } diff --git a/tests/test_parse_qs.py b/tests/test_parse_qs.py index 720b4a0..2f74d01 100644 --- a/tests/test_parse_qs.py +++ b/tests/test_parse_qs.py @@ -53,3 +53,16 @@ def test_parse_urlencoded_defaults_parse_numbers_true() -> None: "polluting": False, "json": None, } + + +def test_parse_urlencoded_kwargs() -> None: + result = parse_url_encoded_dict(qs=encoded, parse_numbers=True) + assert result == { + "value": [10, 12], + "veggies": ["tomato", "potato", "aubergine"], + "nested": {"some_key": "some_value"}, + "calories": 122.53, + "healthy": True, + "polluting": False, + "json": None, + } diff --git a/tests/test_parse_qsl.py b/tests/test_parse_qsl.py index 7e47ef7..e6303e2 100644 --- a/tests/test_parse_qsl.py +++ b/tests/test_parse_qsl.py @@ -77,3 +77,7 @@ def test_parses_non_ascii_text() -> None: assert parse_query_string("arabic_text=اختبار اللغة العربية".encode(), "&") == [ ("arabic_text", "اختبار اللغة العربية") ] + + +def test_kwargs() -> None: + assert parse_query_string(qs=b"foo=bar", separator="&") == [("foo", "bar")]