diff --git a/.chronus/changes/fix-python-constant-query-2025-9-24-14-46-59.md b/.chronus/changes/fix-python-constant-query-2025-9-24-14-46-59.md new file mode 100644 index 00000000000..d3ccaa467ec --- /dev/null +++ b/.chronus/changes/fix-python-constant-query-2025-9-24-14-46-59.md @@ -0,0 +1,7 @@ +--- +changeKind: fix +packages: + - "@typespec/http-client-python" +--- + +Fix runtime error for constant query parameter \ No newline at end of file diff --git a/packages/http-client-python/generator/pygen/codegen/serializers/parameter_serializer.py b/packages/http-client-python/generator/pygen/codegen/serializers/parameter_serializer.py index 6607fe02bd6..9091f86748d 100644 --- a/packages/http-client-python/generator/pygen/codegen/serializers/parameter_serializer.py +++ b/packages/http-client-python/generator/pygen/codegen/serializers/parameter_serializer.py @@ -202,9 +202,11 @@ def append_pop_kwarg(key: str, pop_type: PopKwargType) -> None: if is_content_type_optional and not type_annotation.startswith("Optional[") else type_annotation ) - if kwarg.client_default_value is not None or kwarg.optional: + if kwarg.client_default_value is not None or kwarg.optional or kwarg.constant: if check_client_input and kwarg.check_client_input: default_value = f"self._config.{kwarg.client_name}" + elif kwarg.constant: + default_value = kwarg.type.get_declaration(None) else: default_value = kwarg.client_default_value_declaration if check_kwarg_dict and (kwarg.location in [ParameterLocation.HEADER, ParameterLocation.QUERY]): diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/test_typetest_scalar.py b/packages/http-client-python/generator/test/generic_mock_api_tests/test_typetest_scalar.py index 32a1583ac11..215018d1b83 100644 --- a/packages/http-client-python/generator/test/generic_mock_api_tests/test_typetest_scalar.py +++ b/packages/http-client-python/generator/test/generic_mock_api_tests/test_typetest_scalar.py @@ -51,3 +51,8 @@ def test_decimal128_verify(client: ScalarClient): def test_decimal_verify(client: ScalarClient): prepare = client.decimal_verify.prepare_verify() client.decimal_verify.verify(reduce(lambda x, y: x + y, prepare)) + + +# open this test case after adopt new version of http-specs for https://github.com/microsoft/typespec/pull/8807 +# def test_constant_query(client: ScalarClient): +# client.constant_query.post()