From 60f74ce1e866f94ec99d0e52acf1cba660ee2162 Mon Sep 17 00:00:00 2001 From: msyyc <70930885+msyyc@users.noreply.github.com> Date: Thu, 4 Jul 2024 17:47:41 +0800 Subject: [PATCH 1/7] init --- .../generator/pygen/codegen/serializers/builder_serializer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/typespec-python/generator/pygen/codegen/serializers/builder_serializer.py b/packages/typespec-python/generator/pygen/codegen/serializers/builder_serializer.py index e65439ea156..557bb9304c8 100644 --- a/packages/typespec-python/generator/pygen/codegen/serializers/builder_serializer.py +++ b/packages/typespec-python/generator/pygen/codegen/serializers/builder_serializer.py @@ -470,7 +470,7 @@ def serialize_headers(self, builder: RequestBuilderType) -> List[str]: headers = [ h for h in builder.parameters.headers - if not builder.has_form_data_body or h.wire_name.lower() != "content-type" + if (not builder.has_form_data_body or h.wire_name.lower() != "content-type") and h.constant ] retval = ["# Construct headers"] if headers else [] for header in headers: From 8d68581c9f03d2692d85ce33a410146210fb2c52 Mon Sep 17 00:00:00 2001 From: msyyc <70930885+msyyc@users.noreply.github.com> Date: Thu, 4 Jul 2024 17:49:01 +0800 Subject: [PATCH 2/7] changelog --- .chronus/changes/HEAD-2024-6-4-17-48-51.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .chronus/changes/HEAD-2024-6-4-17-48-51.md diff --git a/.chronus/changes/HEAD-2024-6-4-17-48-51.md b/.chronus/changes/HEAD-2024-6-4-17-48-51.md new file mode 100644 index 00000000000..fb9d7818856 --- /dev/null +++ b/.chronus/changes/HEAD-2024-6-4-17-48-51.md @@ -0,0 +1,7 @@ +--- +changeKind: fix +packages: + - "@azure-tools/typespec-python" +--- + +only construct constant headers when build request \ No newline at end of file From 1d00eb89b34504e7ed11f8cf6194682aa5aff629 Mon Sep 17 00:00:00 2001 From: msyyc <70930885+msyyc@users.noreply.github.com> Date: Fri, 5 Jul 2024 13:25:30 +0800 Subject: [PATCH 3/7] fix --- .../bodystring/operations/_enum_operations.py | 1 - .../pygen/codegen/serializers/builder_serializer.py | 13 +++++++++---- .../codegen/serializers/parameter_serializer.py | 2 +- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/packages/autorest.python/test/vanilla/legacy/Expected/AcceptanceTests/BodyString/bodystring/operations/_enum_operations.py b/packages/autorest.python/test/vanilla/legacy/Expected/AcceptanceTests/BodyString/bodystring/operations/_enum_operations.py index bdc396f950d..5d167786cd5 100644 --- a/packages/autorest.python/test/vanilla/legacy/Expected/AcceptanceTests/BodyString/bodystring/operations/_enum_operations.py +++ b/packages/autorest.python/test/vanilla/legacy/Expected/AcceptanceTests/BodyString/bodystring/operations/_enum_operations.py @@ -117,7 +117,6 @@ def build_put_referenced_constant_request(**kwargs: Any) -> HttpRequest: content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) accept = _headers.pop("Accept", "application/json") - color_constant = "green-color" # Construct URL _url = kwargs.pop("template_url", "/string/enum/ReferencedConstant") diff --git a/packages/typespec-python/generator/pygen/codegen/serializers/builder_serializer.py b/packages/typespec-python/generator/pygen/codegen/serializers/builder_serializer.py index 557bb9304c8..efe9d89183e 100644 --- a/packages/typespec-python/generator/pygen/codegen/serializers/builder_serializer.py +++ b/packages/typespec-python/generator/pygen/codegen/serializers/builder_serializer.py @@ -412,12 +412,17 @@ def _json_response_template_name(self) -> str: @staticmethod def declare_non_inputtable_constants(builder: RequestBuilderType) -> List[str]: def _get_value(param): + declaration = param.get_declaration() if param.constant else None if param.location in [ParameterLocation.HEADER, ParameterLocation.QUERY]: kwarg_dict = "headers" if param.location == ParameterLocation.HEADER else "params" - return f"_{kwarg_dict}.pop('{param.wire_name}', {param.get_declaration()})" - return f"{param.get_declaration()}" + return f"_{kwarg_dict}.pop('{param.wire_name}', {declaration})" + return declaration - return [f"{p.client_name} = {_get_value(p)}" for p in builder.parameters.constant if not p.in_method_signature] + return [ + f"{p.client_name} = {_get_value(p)}" + for p in (builder.parameters.headers + builder.parameters.query) + if not p.in_method_signature + ] @property def _function_def(self) -> str: @@ -470,7 +475,7 @@ def serialize_headers(self, builder: RequestBuilderType) -> List[str]: headers = [ h for h in builder.parameters.headers - if (not builder.has_form_data_body or h.wire_name.lower() != "content-type") and h.constant + if (not builder.has_form_data_body or h.wire_name.lower() != "content-type") ] retval = ["# Construct headers"] if headers else [] for header in headers: diff --git a/packages/typespec-python/generator/pygen/codegen/serializers/parameter_serializer.py b/packages/typespec-python/generator/pygen/codegen/serializers/parameter_serializer.py index 8a41c850a7d..bad98faa5be 100644 --- a/packages/typespec-python/generator/pygen/codegen/serializers/parameter_serializer.py +++ b/packages/typespec-python/generator/pygen/codegen/serializers/parameter_serializer.py @@ -148,7 +148,7 @@ def serialize_query_header( param.wire_name, ParameterSerializer.serialize_parameter(param, serializer_name), ) - if not param.optional: + if not param.optional and (param.in_method_signature or param.constant): retval = [set_parameter] else: retval = [ From 536a1cde4bd10644672ddd29700ca18112362074 Mon Sep 17 00:00:00 2001 From: msyyc <70930885+msyyc@users.noreply.github.com> Date: Fri, 5 Jul 2024 13:28:41 +0800 Subject: [PATCH 4/7] fix --- .../generator/pygen/codegen/serializers/builder_serializer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/typespec-python/generator/pygen/codegen/serializers/builder_serializer.py b/packages/typespec-python/generator/pygen/codegen/serializers/builder_serializer.py index efe9d89183e..c20d9cc7f88 100644 --- a/packages/typespec-python/generator/pygen/codegen/serializers/builder_serializer.py +++ b/packages/typespec-python/generator/pygen/codegen/serializers/builder_serializer.py @@ -475,7 +475,7 @@ def serialize_headers(self, builder: RequestBuilderType) -> List[str]: headers = [ h for h in builder.parameters.headers - if (not builder.has_form_data_body or h.wire_name.lower() != "content-type") + if not builder.has_form_data_body or h.wire_name.lower() != "content-type" ] retval = ["# Construct headers"] if headers else [] for header in headers: From 6627d1e7727c6b8b62456e65590551f2c21f418f Mon Sep 17 00:00:00 2001 From: msyyc <70930885+msyyc@users.noreply.github.com> Date: Fri, 5 Jul 2024 13:30:22 +0800 Subject: [PATCH 5/7] fix --- .../generator/pygen/codegen/serializers/builder_serializer.py | 2 +- .../pygen/codegen/templates/request_builder.py.jinja2 | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/typespec-python/generator/pygen/codegen/serializers/builder_serializer.py b/packages/typespec-python/generator/pygen/codegen/serializers/builder_serializer.py index c20d9cc7f88..c22eef08a88 100644 --- a/packages/typespec-python/generator/pygen/codegen/serializers/builder_serializer.py +++ b/packages/typespec-python/generator/pygen/codegen/serializers/builder_serializer.py @@ -410,7 +410,7 @@ def _json_response_template_name(self) -> str: return "response.json()" @staticmethod - def declare_non_inputtable_constants(builder: RequestBuilderType) -> List[str]: + def declare_non_inputtable_headers_queries(builder: RequestBuilderType) -> List[str]: def _get_value(param): declaration = param.get_declaration() if param.constant else None if param.location in [ParameterLocation.HEADER, ParameterLocation.QUERY]: diff --git a/packages/typespec-python/generator/pygen/codegen/templates/request_builder.py.jinja2 b/packages/typespec-python/generator/pygen/codegen/templates/request_builder.py.jinja2 index f4810000e7b..ed9af24814d 100644 --- a/packages/typespec-python/generator/pygen/codegen/templates/request_builder.py.jinja2 +++ b/packages/typespec-python/generator/pygen/codegen/templates/request_builder.py.jinja2 @@ -8,8 +8,8 @@ {% if request_builder_serializer.pop_kwargs_from_signature(request_builder) %} {{ op_tools.serialize(request_builder_serializer.pop_kwargs_from_signature(request_builder)) | indent }} {%- endif -%} - {% if request_builder_serializer.declare_non_inputtable_constants(request_builder) %} - {{ op_tools.serialize(request_builder_serializer.declare_non_inputtable_constants(request_builder)) | indent }} + {% if request_builder_serializer.declare_non_inputtable_headers_queries(request_builder) %} + {{ op_tools.serialize(request_builder_serializer.declare_non_inputtable_headers_queries(request_builder)) | indent }} {% endif %} # Construct URL {{ request_builder_serializer.construct_url(request_builder) }} From a20e90248eb434298e45291d56433c77075349b0 Mon Sep 17 00:00:00 2001 From: Yuchao Yan Date: Fri, 5 Jul 2024 13:35:58 +0800 Subject: [PATCH 6/7] Update HEAD-2024-6-4-17-48-51.md --- .chronus/changes/HEAD-2024-6-4-17-48-51.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.chronus/changes/HEAD-2024-6-4-17-48-51.md b/.chronus/changes/HEAD-2024-6-4-17-48-51.md index fb9d7818856..0361f020bcc 100644 --- a/.chronus/changes/HEAD-2024-6-4-17-48-51.md +++ b/.chronus/changes/HEAD-2024-6-4-17-48-51.md @@ -4,4 +4,4 @@ packages: - "@azure-tools/typespec-python" --- -only construct constant headers when build request \ No newline at end of file +Fix for construct headers and queries when build request From 80da7599ae7c8adacbaf26985116e34f583a4f2e Mon Sep 17 00:00:00 2001 From: msyyc <70930885+msyyc@users.noreply.github.com> Date: Fri, 5 Jul 2024 13:42:11 +0800 Subject: [PATCH 7/7] changelog --- .chronus/changes/HEAD-2024-6-4-17-48-51.md | 7 ------- .chronus/changes/fix-bug-header-2024-6-5-13-41-56.md | 8 ++++++++ 2 files changed, 8 insertions(+), 7 deletions(-) delete mode 100644 .chronus/changes/HEAD-2024-6-4-17-48-51.md create mode 100644 .chronus/changes/fix-bug-header-2024-6-5-13-41-56.md diff --git a/.chronus/changes/HEAD-2024-6-4-17-48-51.md b/.chronus/changes/HEAD-2024-6-4-17-48-51.md deleted file mode 100644 index 0361f020bcc..00000000000 --- a/.chronus/changes/HEAD-2024-6-4-17-48-51.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -changeKind: fix -packages: - - "@azure-tools/typespec-python" ---- - -Fix for construct headers and queries when build request diff --git a/.chronus/changes/fix-bug-header-2024-6-5-13-41-56.md b/.chronus/changes/fix-bug-header-2024-6-5-13-41-56.md new file mode 100644 index 00000000000..9e98e4dc876 --- /dev/null +++ b/.chronus/changes/fix-bug-header-2024-6-5-13-41-56.md @@ -0,0 +1,8 @@ +--- +changeKind: fix +packages: + - "@autorest/python" + - "@azure-tools/typespec-python" +--- + +Fix for construct headers and queries when build request \ No newline at end of file