Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion packages/autorest.python/ChangeLog.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@
**Bug Fixes**

- Added sub-namespace folder when generating samples #1920
- Optimize logic to find realted params in example files #1916
- Optimize logic to find related params in example files #1916
- Optimize default value for `api_version` for better compatibility of multiapi package #1934

### 2023-05-19 - 6.4.15

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -710,6 +710,7 @@ def pop_kwargs_from_signature(self, builder: OperationType) -> List[str]:
)
else PopKwargType.SIMPLE,
check_client_input=not self.code_model.options["multiapi"],
in_operation=True,
)
cls_annotation = builder.cls_type_annotation(async_mode=self.async_mode)
pylint_disable = ""
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,7 @@ def pop_kwargs_from_signature(
pop_headers_kwarg: PopKwargType,
pop_params_kwarg: PopKwargType,
check_client_input: bool = False,
in_operation: bool = False,
) -> List[str]:
retval = []

Expand Down Expand Up @@ -142,9 +143,18 @@ def append_pop_kwarg(key: str, pop_type: PopKwargType) -> None:
if kwarg.location == ParameterLocation.HEADER
else "params"
)
if (
kwarg.client_name == "api_version"
and kwarg.code_model.options["multiapi"]
and in_operation
):
default_value = (
f"getattr(self, '_api_version', None) or {default_value}"
)
default_value = (
f"_{kwarg_dict}.pop('{kwarg.wire_name}', {default_value})"
)

retval.append(
f"{kwarg.client_name}: {type_annot} = kwargs.pop('{kwarg.client_name}', "
+ f"{default_value})"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,9 @@ async def test_two(self, **kwargs: Any) -> None: # pylint: disable=inconsistent
_headers = kwargs.pop("headers", {}) or {}
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})

api_version: str = kwargs.pop("api_version", _params.pop("api-version", "0.0.0"))
api_version: str = kwargs.pop(
"api_version", _params.pop("api-version", getattr(self, "_api_version", None) or "0.0.0")
)
cls: ClsType[None] = kwargs.pop("cls", None)

request = build_test_two_request(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,9 @@ def test_two(self, **kwargs: Any) -> None: # pylint: disable=inconsistent-retur
_headers = kwargs.pop("headers", {}) or {}
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})

api_version: str = kwargs.pop("api_version", _params.pop("api-version", "0.0.0"))
api_version: str = kwargs.pop(
"api_version", _params.pop("api-version", getattr(self, "_api_version", None) or "0.0.0")
)
cls: ClsType[None] = kwargs.pop("cls", None)

request = build_test_two_request(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,9 @@ async def test_one( # pylint: disable=inconsistent-return-statements
_headers = kwargs.pop("headers", {}) or {}
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})

api_version: str = kwargs.pop("api_version", _params.pop("api-version", "1.0.0"))
api_version: str = kwargs.pop(
"api_version", _params.pop("api-version", getattr(self, "_api_version", None) or "1.0.0")
)
cls: ClsType[None] = kwargs.pop("cls", None)

request = build_test_one_request(
Expand Down Expand Up @@ -498,7 +500,9 @@ async def test_different_calls( # pylint: disable=inconsistent-return-statement
_headers = kwargs.pop("headers", {}) or {}
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})

api_version: str = kwargs.pop("api_version", _params.pop("api-version", "1.0.0"))
api_version: str = kwargs.pop(
"api_version", _params.pop("api-version", getattr(self, "_api_version", None) or "1.0.0")
)
cls: ClsType[None] = kwargs.pop("cls", None)

request = build_test_different_calls_request(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,9 @@ async def test_two(self, **kwargs: Any) -> None: # pylint: disable=inconsistent
_headers = kwargs.pop("headers", {}) or {}
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})

api_version: str = kwargs.pop("api_version", _params.pop("api-version", "1.0.0"))
api_version: str = kwargs.pop(
"api_version", _params.pop("api-version", getattr(self, "_api_version", None) or "1.0.0")
)
cls: ClsType[None] = kwargs.pop("cls", None)

request = build_test_two_request(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,9 @@ def test_one( # pylint: disable=inconsistent-return-statements
_headers = kwargs.pop("headers", {}) or {}
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})

api_version: str = kwargs.pop("api_version", _params.pop("api-version", "1.0.0"))
api_version: str = kwargs.pop(
"api_version", _params.pop("api-version", getattr(self, "_api_version", None) or "1.0.0")
)
cls: ClsType[None] = kwargs.pop("cls", None)

request = build_test_one_request(
Expand Down Expand Up @@ -572,7 +574,9 @@ def test_different_calls( # pylint: disable=inconsistent-return-statements
_headers = kwargs.pop("headers", {}) or {}
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})

api_version: str = kwargs.pop("api_version", _params.pop("api-version", "1.0.0"))
api_version: str = kwargs.pop(
"api_version", _params.pop("api-version", getattr(self, "_api_version", None) or "1.0.0")
)
cls: ClsType[None] = kwargs.pop("cls", None)

request = build_test_different_calls_request(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,9 @@ def test_two(self, **kwargs: Any) -> None: # pylint: disable=inconsistent-retur
_headers = kwargs.pop("headers", {}) or {}
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})

api_version: str = kwargs.pop("api_version", _params.pop("api-version", "1.0.0"))
api_version: str = kwargs.pop(
"api_version", _params.pop("api-version", getattr(self, "_api_version", None) or "1.0.0")
)
cls: ClsType[None] = kwargs.pop("cls", None)

request = build_test_two_request(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,9 @@ async def test_one(self, id: int, message: Optional[str] = None, **kwargs: Any)
_headers = kwargs.pop("headers", {}) or {}
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})

api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2.0.0"))
api_version: str = kwargs.pop(
"api_version", _params.pop("api-version", getattr(self, "_api_version", None) or "2.0.0")
)
cls: ClsType[_models.ModelTwo] = kwargs.pop("cls", None)

request = build_test_one_request(
Expand Down Expand Up @@ -118,7 +120,9 @@ async def test_different_calls( # pylint: disable=inconsistent-return-statement
_headers = kwargs.pop("headers", {}) or {}
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})

api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2.0.0"))
api_version: str = kwargs.pop(
"api_version", _params.pop("api-version", getattr(self, "_api_version", None) or "2.0.0")
)
cls: ClsType[None] = kwargs.pop("cls", None)

request = build_test_different_calls_request(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,9 @@ async def test_two(
_headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})

api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2.0.0"))
api_version: str = kwargs.pop(
"api_version", _params.pop("api-version", getattr(self, "_api_version", None) or "2.0.0")
)
content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
cls: ClsType[_models.ModelTwo] = kwargs.pop("cls", None)

Expand Down Expand Up @@ -182,7 +184,9 @@ async def test_three(self, **kwargs: Any) -> None: # pylint: disable=inconsiste
_headers = kwargs.pop("headers", {}) or {}
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})

api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2.0.0"))
api_version: str = kwargs.pop(
"api_version", _params.pop("api-version", getattr(self, "_api_version", None) or "2.0.0")
)
cls: ClsType[None] = kwargs.pop("cls", None)

request = build_test_three_request(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,9 @@ async def test_four( # pylint: disable=inconsistent-return-statements
_headers = kwargs.pop("headers", {}) or {}
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})

api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2.0.0"))
api_version: str = kwargs.pop(
"api_version", _params.pop("api-version", getattr(self, "_api_version", None) or "2.0.0")
)
cls: ClsType[None] = kwargs.pop("cls", None)

request = build_test_four_request(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,9 @@ def test_one(self, id: int, message: Optional[str] = None, **kwargs: Any) -> _mo
_headers = kwargs.pop("headers", {}) or {}
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})

api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2.0.0"))
api_version: str = kwargs.pop(
"api_version", _params.pop("api-version", getattr(self, "_api_version", None) or "2.0.0")
)
cls: ClsType[_models.ModelTwo] = kwargs.pop("cls", None)

request = build_test_one_request(
Expand Down Expand Up @@ -166,7 +168,9 @@ def test_different_calls( # pylint: disable=inconsistent-return-statements
_headers = kwargs.pop("headers", {}) or {}
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})

api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2.0.0"))
api_version: str = kwargs.pop(
"api_version", _params.pop("api-version", getattr(self, "_api_version", None) or "2.0.0")
)
cls: ClsType[None] = kwargs.pop("cls", None)

request = build_test_different_calls_request(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,9 @@ def test_two(self, parameter_one: Optional[Union[_models.ModelTwo, IO]] = None,
_headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})

api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2.0.0"))
api_version: str = kwargs.pop(
"api_version", _params.pop("api-version", getattr(self, "_api_version", None) or "2.0.0")
)
content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
cls: ClsType[_models.ModelTwo] = kwargs.pop("cls", None)

Expand Down Expand Up @@ -223,7 +225,9 @@ def test_three(self, **kwargs: Any) -> None: # pylint: disable=inconsistent-ret
_headers = kwargs.pop("headers", {}) or {}
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})

api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2.0.0"))
api_version: str = kwargs.pop(
"api_version", _params.pop("api-version", getattr(self, "_api_version", None) or "2.0.0")
)
cls: ClsType[None] = kwargs.pop("cls", None)

request = build_test_three_request(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,9 @@ def test_four(self, parameter_one: bool, **kwargs: Any) -> None: # pylint: disa
_headers = kwargs.pop("headers", {}) or {}
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})

api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2.0.0"))
api_version: str = kwargs.pop(
"api_version", _params.pop("api-version", getattr(self, "_api_version", None) or "2.0.0")
)
cls: ClsType[None] = kwargs.pop("cls", None)

request = build_test_four_request(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,9 @@ async def test_different_calls( # pylint: disable=inconsistent-return-statement
_headers = kwargs.pop("headers", {}) or {}
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})

api_version: str = kwargs.pop("api_version", _params.pop("api-version", "3.0.0"))
api_version: str = kwargs.pop(
"api_version", _params.pop("api-version", getattr(self, "_api_version", None) or "3.0.0")
)
cls: ClsType[None] = kwargs.pop("cls", None)

request = build_test_different_calls_request(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,9 @@ async def test_two(
_headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})

api_version: str = kwargs.pop("api_version", _params.pop("api-version", "3.0.0"))
api_version: str = kwargs.pop(
"api_version", _params.pop("api-version", getattr(self, "_api_version", None) or "3.0.0")
)
content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
cls: ClsType[_models.ModelThree] = kwargs.pop("cls", None)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,9 @@ async def test_four( # pylint: disable=inconsistent-return-statements
_headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})

api_version: str = kwargs.pop("api_version", _params.pop("api-version", "3.0.0"))
api_version: str = kwargs.pop(
"api_version", _params.pop("api-version", getattr(self, "_api_version", None) or "3.0.0")
)
content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
cls: ClsType[None] = kwargs.pop("cls", None)

Expand Down Expand Up @@ -178,7 +180,9 @@ async def test_five(self, **kwargs: Any) -> None: # pylint: disable=inconsisten
_headers = kwargs.pop("headers", {}) or {}
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})

api_version: str = kwargs.pop("api_version", _params.pop("api-version", "3.0.0"))
api_version: str = kwargs.pop(
"api_version", _params.pop("api-version", getattr(self, "_api_version", None) or "3.0.0")
)
cls: ClsType[None] = kwargs.pop("cls", None)

request = build_test_five_request(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,9 @@ def test_different_calls( # pylint: disable=inconsistent-return-statements
_headers = kwargs.pop("headers", {}) or {}
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})

api_version: str = kwargs.pop("api_version", _params.pop("api-version", "3.0.0"))
api_version: str = kwargs.pop(
"api_version", _params.pop("api-version", getattr(self, "_api_version", None) or "3.0.0")
)
cls: ClsType[None] = kwargs.pop("cls", None)

request = build_test_different_calls_request(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -235,7 +235,9 @@ def test_two(
_headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})

api_version: str = kwargs.pop("api_version", _params.pop("api-version", "3.0.0"))
api_version: str = kwargs.pop(
"api_version", _params.pop("api-version", getattr(self, "_api_version", None) or "3.0.0")
)
content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
cls: ClsType[_models.ModelThree] = kwargs.pop("cls", None)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,9 @@ def test_four( # pylint: disable=inconsistent-return-statements
_headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})

api_version: str = kwargs.pop("api_version", _params.pop("api-version", "3.0.0"))
api_version: str = kwargs.pop(
"api_version", _params.pop("api-version", getattr(self, "_api_version", None) or "3.0.0")
)
content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
cls: ClsType[None] = kwargs.pop("cls", None)

Expand Down Expand Up @@ -221,7 +223,9 @@ def test_five(self, **kwargs: Any) -> None: # pylint: disable=inconsistent-retu
_headers = kwargs.pop("headers", {}) or {}
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})

api_version: str = kwargs.pop("api_version", _params.pop("api-version", "3.0.0"))
api_version: str = kwargs.pop(
"api_version", _params.pop("api-version", getattr(self, "_api_version", None) or "3.0.0")
)
cls: ClsType[None] = kwargs.pop("cls", None)

request = build_test_five_request(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,9 @@ async def test_one( # pylint: disable=inconsistent-return-statements
_headers = kwargs.pop("headers", {}) or {}
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})

api_version: str = kwargs.pop("api_version", _params.pop("api-version", "1.0.0"))
api_version: str = kwargs.pop(
"api_version", _params.pop("api-version", getattr(self, "_api_version", None) or "1.0.0")
)
cls: ClsType[None] = kwargs.pop("cls", None)

request = build_test_one_request(
Expand Down Expand Up @@ -499,7 +501,9 @@ async def test_different_calls( # pylint: disable=inconsistent-return-statement
_headers = kwargs.pop("headers", {}) or {}
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})

api_version: str = kwargs.pop("api_version", _params.pop("api-version", "1.0.0"))
api_version: str = kwargs.pop(
"api_version", _params.pop("api-version", getattr(self, "_api_version", None) or "1.0.0")
)
cls: ClsType[None] = kwargs.pop("cls", None)

request = build_test_different_calls_request(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,9 @@ async def test_two(self, **kwargs: Any) -> None: # pylint: disable=inconsistent
_headers = kwargs.pop("headers", {}) or {}
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})

api_version: str = kwargs.pop("api_version", _params.pop("api-version", "1.0.0"))
api_version: str = kwargs.pop(
"api_version", _params.pop("api-version", getattr(self, "_api_version", None) or "1.0.0")
)
cls: ClsType[None] = kwargs.pop("cls", None)

request = build_test_two_request(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,9 @@ def test_one( # pylint: disable=inconsistent-return-statements
_headers = kwargs.pop("headers", {}) or {}
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})

api_version: str = kwargs.pop("api_version", _params.pop("api-version", "1.0.0"))
api_version: str = kwargs.pop(
"api_version", _params.pop("api-version", getattr(self, "_api_version", None) or "1.0.0")
)
cls: ClsType[None] = kwargs.pop("cls", None)

request = build_test_one_request(
Expand Down Expand Up @@ -573,7 +575,9 @@ def test_different_calls( # pylint: disable=inconsistent-return-statements
_headers = kwargs.pop("headers", {}) or {}
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})

api_version: str = kwargs.pop("api_version", _params.pop("api-version", "1.0.0"))
api_version: str = kwargs.pop(
"api_version", _params.pop("api-version", getattr(self, "_api_version", None) or "1.0.0")
)
cls: ClsType[None] = kwargs.pop("cls", None)

request = build_test_different_calls_request(
Expand Down
Loading