From 32e6ae2fc5ad9ff9a24f04548a2d305cc8d16ec6 Mon Sep 17 00:00:00 2001 From: iscai-msft Date: Wed, 15 Jul 2020 12:30:23 -0400 Subject: [PATCH 01/10] regenerate test for multiapi with custom base url --- tasks.py | 8 +- .../multiapicustombaseurl/__init__.py | 16 +++ .../multiapicustombaseurl/_configuration.py | 68 +++++++++++++ .../_multiapi_service_client.py | 99 +++++++++++++++++++ .../_operations_mixin.py | 55 +++++++++++ .../multiapicustombaseurl/_version.py | 8 ++ .../multiapicustombaseurl/aio/__init__.py | 10 ++ .../aio/_configuration_async.py | 67 +++++++++++++ .../aio/_multiapi_service_client_async.py | 99 +++++++++++++++++++ .../aio/_operations_mixin_async.py | 51 ++++++++++ .../multiapicustombaseurl/models.py | 7 ++ .../multiapicustombaseurl/py.typed | 1 + .../multiapicustombaseurl/v1/__init__.py | 16 +++ .../v1/_configuration.py | 72 ++++++++++++++ .../multiapicustombaseurl/v1/_metadata.json | 69 +++++++++++++ .../v1/_multiapi_service_client.py | 62 ++++++++++++ .../multiapicustombaseurl/v1/aio/__init__.py | 10 ++ .../v1/aio/_configuration_async.py | 68 +++++++++++++ .../v1/aio/_multiapi_service_client_async.py | 56 +++++++++++ .../v1/aio/operations_async/__init__.py | 13 +++ ...ultiapi_service_client_operations_async.py | 73 ++++++++++++++ .../v1/models/__init__.py | 16 +++ .../v1/models/_models.py | 33 +++++++ .../v1/models/_models_py3.py | 38 +++++++ .../v1/operations/__init__.py | 13 +++ .../_multiapi_service_client_operations.py | 78 +++++++++++++++ .../multiapicustombaseurl/v1/py.typed | 1 + .../multiapicustombaseurl/v2/__init__.py | 16 +++ .../v2/_configuration.py | 72 ++++++++++++++ .../multiapicustombaseurl/v2/_metadata.json | 69 +++++++++++++ .../v2/_multiapi_service_client.py | 62 ++++++++++++ .../multiapicustombaseurl/v2/aio/__init__.py | 10 ++ .../v2/aio/_configuration_async.py | 68 +++++++++++++ .../v2/aio/_multiapi_service_client_async.py | 56 +++++++++++ .../v2/aio/operations_async/__init__.py | 13 +++ ...ultiapi_service_client_operations_async.py | 73 ++++++++++++++ .../v2/models/__init__.py | 16 +++ .../v2/models/_models.py | 33 +++++++ .../v2/models/_models_py3.py | 38 +++++++ .../v2/operations/__init__.py | 13 +++ .../_multiapi_service_client_operations.py | 78 +++++++++++++++ .../multiapicustombaseurl/v2/py.typed | 1 + .../MultiapiCustomBaseUrl/setup.py | 42 ++++++++ .../multiapicustombaseurl/README.md | 37 +++++++ 44 files changed, 1801 insertions(+), 3 deletions(-) create mode 100644 test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/__init__.py create mode 100644 test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/_configuration.py create mode 100644 test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/_multiapi_service_client.py create mode 100644 test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/_operations_mixin.py create mode 100644 test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/_version.py create mode 100644 test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/aio/__init__.py create mode 100644 test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/aio/_configuration_async.py create mode 100644 test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/aio/_multiapi_service_client_async.py create mode 100644 test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/aio/_operations_mixin_async.py create mode 100644 test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/models.py create mode 100644 test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/py.typed create mode 100644 test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/__init__.py create mode 100644 test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/_configuration.py create mode 100644 test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/_metadata.json create mode 100644 test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/_multiapi_service_client.py create mode 100644 test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/__init__.py create mode 100644 test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/_configuration_async.py create mode 100644 test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/_multiapi_service_client_async.py create mode 100644 test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/operations_async/__init__.py create mode 100644 test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/operations_async/_multiapi_service_client_operations_async.py create mode 100644 test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/models/__init__.py create mode 100644 test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/models/_models.py create mode 100644 test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/models/_models_py3.py create mode 100644 test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/operations/__init__.py create mode 100644 test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/operations/_multiapi_service_client_operations.py create mode 100644 test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/py.typed create mode 100644 test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/__init__.py create mode 100644 test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/_configuration.py create mode 100644 test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/_metadata.json create mode 100644 test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/_multiapi_service_client.py create mode 100644 test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/aio/__init__.py create mode 100644 test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/aio/_configuration_async.py create mode 100644 test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/aio/_multiapi_service_client_async.py create mode 100644 test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/aio/operations_async/__init__.py create mode 100644 test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/aio/operations_async/_multiapi_service_client_operations_async.py create mode 100644 test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/models/__init__.py create mode 100644 test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/models/_models.py create mode 100644 test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/models/_models_py3.py create mode 100644 test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/operations/__init__.py create mode 100644 test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/operations/_multiapi_service_client_operations.py create mode 100644 test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/py.typed create mode 100644 test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/setup.py create mode 100644 test/multiapi/specification/multiapicustombaseurl/README.md diff --git a/tasks.py b/tasks.py index 5189d973b30..500c66df282 100644 --- a/tasks.py +++ b/tasks.py @@ -330,10 +330,12 @@ def regenerate_multiapi(c, debug=False, swagger_name="test"): "test/multiapi/specification/multiapiwithsubmodule/README.md", # create multiapi client with no aio folder (package-name=multiapinoasync) "test/multiapi/specification/multiapinoasync/README.md", - # create multiapi client with AzureKeyCredentialPolicy + # create multiapi client with AzureKeyCredentialPolicy (package-name=multiapicredentialdefaultpolicy) "test/multiapi/specification/multiapicredentialdefaultpolicy/README.md", - # create multiapi client data plane - "test/multiapi/specification/multiapidataplane/README.md" + # create multiapi client data plane (package-name=multiapidataplane) + "test/multiapi/specification/multiapidataplane/README.md", + # multiapi client with custom base url (package-name=multiapicustombaseurl) + "test/multiapi/specification/multiapicustombaseurl/README.md", ] cmds = [_multiapi_command_line(spec) for spec in available_specifications if swagger_name.lower() in spec] diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/__init__.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/__init__.py new file mode 100644 index 00000000000..8c8f1f92954 --- /dev/null +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/__init__.py @@ -0,0 +1,16 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from ._multiapi_service_client import MultiapiServiceClient +__all__ = ['MultiapiServiceClient'] + +try: + from ._patch import patch_sdk # type: ignore + patch_sdk() +except ImportError: + pass diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/_configuration.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/_configuration.py new file mode 100644 index 00000000000..a50bddef5a6 --- /dev/null +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/_configuration.py @@ -0,0 +1,68 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- +from typing import Any + +from azure.core.configuration import Configuration +from azure.core.pipeline import policies + +from ._version import VERSION + + +class MultiapiServiceClientConfiguration(Configuration): + """Configuration for MultiapiServiceClient. + + Note that all parameters used to create this instance are saved as instance + attributes. + + :param credential: Credential needed for the client to connect to Azure. + :type credential: ~azure.core.credentials.TokenCredential + :param endpoint: Pass in https://localhost:3000. + :type endpoint: str + """ + + def __init__( + self, + credential, # type: "TokenCredential" + endpoint, # type: str + **kwargs # type: Any + ): + # type: (...) -> None + if credential is None: + raise ValueError("Parameter 'credential' must not be None.") + if endpoint is None: + raise ValueError("Parameter 'endpoint' must not be None.") + super(MultiapiServiceClientConfiguration, self).__init__(**kwargs) + + self.credential = credential + self.endpoint = endpoint + self.credential_scopes = [] + self.credential_scopes.extend(kwargs.pop('credential_scopes', [])) + kwargs.setdefault('sdk_moniker', 'multiapicustombaseurl/{}'.format(VERSION)) + self._configure(**kwargs) + + def _configure( + self, + **kwargs # type: Any + ): + # type: (...) -> None + self.user_agent_policy = kwargs.get('user_agent_policy') or policies.UserAgentPolicy(**kwargs) + self.headers_policy = kwargs.get('headers_policy') or policies.HeadersPolicy(**kwargs) + self.proxy_policy = kwargs.get('proxy_policy') or policies.ProxyPolicy(**kwargs) + self.logging_policy = kwargs.get('logging_policy') or policies.NetworkTraceLoggingPolicy(**kwargs) + self.http_logging_policy = kwargs.get('http_logging_policy') or policies.HttpLoggingPolicy(**kwargs) + self.retry_policy = kwargs.get('retry_policy') or policies.RetryPolicy(**kwargs) + self.custom_hook_policy = kwargs.get('custom_hook_policy') or policies.CustomHookPolicy(**kwargs) + self.redirect_policy = kwargs.get('redirect_policy') or policies.RedirectPolicy(**kwargs) + self.authentication_policy = kwargs.get('authentication_policy') + if not self.credential_scopes and not self.authentication_policy: + raise ValueError("You must provide either credential_scopes or authentication_policy as kwargs") + if self.credential and not self.authentication_policy: + self.authentication_policy = policies.BearerTokenCredentialPolicy(self.credential, *self.credential_scopes, **kwargs) diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/_multiapi_service_client.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/_multiapi_service_client.py new file mode 100644 index 00000000000..043db3db828 --- /dev/null +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/_multiapi_service_client.py @@ -0,0 +1,99 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from azure.core import PipelineClient +from msrest import Serializer, Deserializer + +from azure.profiles import KnownProfiles, ProfileDefinition +from azure.profiles.multiapiclient import MultiApiClientMixin +from ._configuration import MultiapiServiceClientConfiguration +from ._operations_mixin import MultiapiServiceClientOperationsMixin +class _SDKClient(object): + def __init__(self, *args, **kwargs): + """This is a fake class to support current implemetation of MultiApiClientMixin." + Will be removed in final version of multiapi azure-core based client + """ + pass + +class MultiapiServiceClient(MultiapiServiceClientOperationsMixin, MultiApiClientMixin, _SDKClient): + """Service client for multiapi client testing. + + This ready contains multiple API versions, to help you deal with all of the Azure clouds + (Azure Stack, Azure Government, Azure China, etc.). + By default, it uses the latest API version available on public Azure. + For production, you should stick to a particular api-version and/or profile. + The profile sets a mapping between an operation group and its API version. + The api-version parameter sets the default API version if the operation + group is not described in the profile. + + :param credential: Credential needed for the client to connect to Azure. + :type credential: ~azure.core.credentials.TokenCredential + :param endpoint: Pass in https://localhost:3000. + :type endpoint: str + :param str api_version: API version to use if no profile is provided, or if + missing in profile. + :param profile: A profile definition, from KnownProfiles to dict. + :type profile: azure.profiles.KnownProfiles + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + """ + + DEFAULT_API_VERSION = '2.0.0' + _PROFILE_TAG = "multiapicustombaseurl.MultiapiServiceClient" + LATEST_PROFILE = ProfileDefinition({ + _PROFILE_TAG: { + None: DEFAULT_API_VERSION, + }}, + _PROFILE_TAG + " latest" + ) + + def __init__( + self, + credential, # type: "TokenCredential" + endpoint, # type: str + api_version=None, + base_url=None, + profile=KnownProfiles.default, + **kwargs # type: Any + ): + base_url = '{Endpoint}/multiapi/custom/base/url/v2' + self._config = MultiapiServiceClientConfiguration(credential, endpoint, **kwargs) + self._client = PipelineClient(base_url=base_url, config=self._config, **kwargs) + super(MultiapiServiceClient, self).__init__( + api_version=api_version, + profile=profile + ) + + @classmethod + def _models_dict(cls, api_version): + return {k: v for k, v in cls.models(api_version).__dict__.items() if isinstance(v, type)} + + @classmethod + def models(cls, api_version=DEFAULT_API_VERSION): + """Module depends on the API version: + + * 1.0.0: :mod:`v1.models` + * 2.0.0: :mod:`v2.models` + """ + if api_version == '1.0.0': + from .v1 import models + return models + elif api_version == '2.0.0': + from .v2 import models + return models + raise NotImplementedError("APIVersion {} is not available".format(api_version)) + + def close(self): + self._client.close() + def __enter__(self): + self._client.__enter__() + return self + def __exit__(self, *exc_details): + self._client.__exit__(*exc_details) diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/_operations_mixin.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/_operations_mixin.py new file mode 100644 index 00000000000..06d24b4b1b7 --- /dev/null +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/_operations_mixin.py @@ -0,0 +1,55 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- +from msrest import Serializer, Deserializer +from typing import TYPE_CHECKING +import warnings + +from azure.core.exceptions import HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error +from azure.core.pipeline import PipelineResponse +from azure.core.pipeline.transport import HttpRequest, HttpResponse + +if TYPE_CHECKING: + # pylint: disable=unused-import,ungrouped-imports + from typing import Any, Callable, Dict, Generic, Optional, TypeVar + + +class MultiapiServiceClientOperationsMixin(object): + + def test_one( + self, + id, # type: int + message=None, # type: Optional[str] + **kwargs # type: Any + ): + """TestOne should be in an SecondVersionOperationsMixin. Returns ModelTwo. + + :param id: An int parameter. + :type id: int + :param message: An optional string parameter. + :type message: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = self._get_api_version('test_one') + if api_version == '1.0.0': + from .v1.operations import MultiapiServiceClientOperationsMixin as OperationClass + elif api_version == '2.0.0': + from .v2.operations import MultiapiServiceClientOperationsMixin as OperationClass + else: + raise NotImplementedError("APIVersion {} is not available".format(api_version)) + mixin_instance = OperationClass() + mixin_instance._client = self._client + mixin_instance._config = self._config + mixin_instance._serialize = Serializer(self._models_dict(api_version)) + mixin_instance._deserialize = Deserializer(self._models_dict(api_version)) + return mixin_instance.test_one(id, message, **kwargs) diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/_version.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/_version.py new file mode 100644 index 00000000000..a30a458f8b5 --- /dev/null +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/_version.py @@ -0,0 +1,8 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# -------------------------------------------------------------------------- + +VERSION = "0.1.0" \ No newline at end of file diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/aio/__init__.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/aio/__init__.py new file mode 100644 index 00000000000..ec341e1dd7e --- /dev/null +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/aio/__init__.py @@ -0,0 +1,10 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from ._multiapi_service_client_async import MultiapiServiceClient +__all__ = ['MultiapiServiceClient'] diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/aio/_configuration_async.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/aio/_configuration_async.py new file mode 100644 index 00000000000..8671da9198c --- /dev/null +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/aio/_configuration_async.py @@ -0,0 +1,67 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- +from typing import Any + +from azure.core.configuration import Configuration +from azure.core.pipeline import policies + +from .._version import VERSION + + +class MultiapiServiceClientConfiguration(Configuration): + """Configuration for MultiapiServiceClient. + + Note that all parameters used to create this instance are saved as instance + attributes. + + :param credential: Credential needed for the client to connect to Azure. + :type credential: ~azure.core.credentials_async.AsyncTokenCredential + :param endpoint: Pass in https://localhost:3000. + :type endpoint: str + """ + + def __init__( + self, + credential, # type: "AsyncTokenCredential" + endpoint, # type: str + **kwargs # type: Any + ) -> None: + # type: (...) -> None + if credential is None: + raise ValueError("Parameter 'credential' must not be None.") + if endpoint is None: + raise ValueError("Parameter 'endpoint' must not be None.") + super(MultiapiServiceClientConfiguration, self).__init__(**kwargs) + + self.credential = credential + self.endpoint = endpoint + self.credential_scopes = [] + self.credential_scopes.extend(kwargs.pop('credential_scopes', [])) + kwargs.setdefault('sdk_moniker', 'multiapicustombaseurl/{}'.format(VERSION)) + self._configure(**kwargs) + + def _configure( + self, + **kwargs: Any + ) -> None: + self.user_agent_policy = kwargs.get('user_agent_policy') or policies.UserAgentPolicy(**kwargs) + self.headers_policy = kwargs.get('headers_policy') or policies.HeadersPolicy(**kwargs) + self.proxy_policy = kwargs.get('proxy_policy') or policies.ProxyPolicy(**kwargs) + self.logging_policy = kwargs.get('logging_policy') or policies.NetworkTraceLoggingPolicy(**kwargs) + self.http_logging_policy = kwargs.get('http_logging_policy') or policies.HttpLoggingPolicy(**kwargs) + self.retry_policy = kwargs.get('retry_policy') or policies.AsyncRetryPolicy(**kwargs) + self.custom_hook_policy = kwargs.get('custom_hook_policy') or policies.CustomHookPolicy(**kwargs) + self.redirect_policy = kwargs.get('redirect_policy') or policies.AsyncRedirectPolicy(**kwargs) + self.authentication_policy = kwargs.get('authentication_policy') + if not self.credential_scopes and not self.authentication_policy: + raise ValueError("You must provide either credential_scopes or authentication_policy as kwargs") + if self.credential and not self.authentication_policy: + self.authentication_policy = policies.AsyncBearerTokenCredentialPolicy(self.credential, *self.credential_scopes, **kwargs) diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/aio/_multiapi_service_client_async.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/aio/_multiapi_service_client_async.py new file mode 100644 index 00000000000..66739d1e238 --- /dev/null +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/aio/_multiapi_service_client_async.py @@ -0,0 +1,99 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +from azure.core import AsyncPipelineClient +from msrest import Serializer, Deserializer + +from azure.profiles import KnownProfiles, ProfileDefinition +from azure.profiles.multiapiclient import MultiApiClientMixin +from ._configuration_async import MultiapiServiceClientConfiguration +from ._operations_mixin_async import MultiapiServiceClientOperationsMixin +class _SDKClient(object): + def __init__(self, *args, **kwargs): + """This is a fake class to support current implemetation of MultiApiClientMixin." + Will be removed in final version of multiapi azure-core based client + """ + pass + +class MultiapiServiceClient(MultiapiServiceClientOperationsMixin, MultiApiClientMixin, _SDKClient): + """Service client for multiapi client testing. + + This ready contains multiple API versions, to help you deal with all of the Azure clouds + (Azure Stack, Azure Government, Azure China, etc.). + By default, it uses the latest API version available on public Azure. + For production, you should stick to a particular api-version and/or profile. + The profile sets a mapping between an operation group and its API version. + The api-version parameter sets the default API version if the operation + group is not described in the profile. + + :param credential: Credential needed for the client to connect to Azure. + :type credential: ~azure.core.credentials_async.AsyncTokenCredential + :param endpoint: Pass in https://localhost:3000. + :type endpoint: str + :param str api_version: API version to use if no profile is provided, or if + missing in profile. + :param profile: A profile definition, from KnownProfiles to dict. + :type profile: azure.profiles.KnownProfiles + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + """ + + DEFAULT_API_VERSION = '2.0.0' + _PROFILE_TAG = "multiapicustombaseurl.MultiapiServiceClient" + LATEST_PROFILE = ProfileDefinition({ + _PROFILE_TAG: { + None: DEFAULT_API_VERSION, + }}, + _PROFILE_TAG + " latest" + ) + + def __init__( + self, + credential, # type: "AsyncTokenCredential" + endpoint, # type: str + api_version=None, + base_url=None, + profile=KnownProfiles.default, + **kwargs # type: Any + ) -> None: + base_url = '{Endpoint}/multiapi/custom/base/url/v2' + self._config = MultiapiServiceClientConfiguration(credential, endpoint, **kwargs) + self._client = AsyncPipelineClient(base_url=base_url, config=self._config, **kwargs) + super(MultiapiServiceClient, self).__init__( + api_version=api_version, + profile=profile + ) + + @classmethod + def _models_dict(cls, api_version): + return {k: v for k, v in cls.models(api_version).__dict__.items() if isinstance(v, type)} + + @classmethod + def models(cls, api_version=DEFAULT_API_VERSION): + """Module depends on the API version: + + * 1.0.0: :mod:`v1.models` + * 2.0.0: :mod:`v2.models` + """ + if api_version == '1.0.0': + from ..v1 import models + return models + elif api_version == '2.0.0': + from ..v2 import models + return models + raise NotImplementedError("APIVersion {} is not available".format(api_version)) + + async def close(self): + await self._client.close() + async def __aenter__(self): + await self._client.__aenter__() + return self + async def __aexit__(self, *exc_details): + await self._client.__aexit__(*exc_details) diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/aio/_operations_mixin_async.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/aio/_operations_mixin_async.py new file mode 100644 index 00000000000..9f51290301e --- /dev/null +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/aio/_operations_mixin_async.py @@ -0,0 +1,51 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- +from msrest import Serializer, Deserializer +from typing import Any, Callable, Dict, Generic, Optional, TypeVar +import warnings + +from azure.core.exceptions import HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error +from azure.core.pipeline import PipelineResponse +from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest + + +class MultiapiServiceClientOperationsMixin(object): + + async def test_one( + self, + id: int, + message: Optional[str] = None, + **kwargs + ) -> None: + """TestOne should be in an SecondVersionOperationsMixin. Returns ModelTwo. + + :param id: An int parameter. + :type id: int + :param message: An optional string parameter. + :type message: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + api_version = self._get_api_version('test_one') + if api_version == '1.0.0': + from ..v1.aio.operations_async import MultiapiServiceClientOperationsMixin as OperationClass + elif api_version == '2.0.0': + from ..v2.aio.operations_async import MultiapiServiceClientOperationsMixin as OperationClass + else: + raise NotImplementedError("APIVersion {} is not available".format(api_version)) + mixin_instance = OperationClass() + mixin_instance._client = self._client + mixin_instance._config = self._config + mixin_instance._serialize = Serializer(self._models_dict(api_version)) + mixin_instance._deserialize = Deserializer(self._models_dict(api_version)) + return await mixin_instance.test_one(id, message, **kwargs) diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/models.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/models.py new file mode 100644 index 00000000000..c2db974ac20 --- /dev/null +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/models.py @@ -0,0 +1,7 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# -------------------------------------------------------------------------- +from .v2.models import * diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/py.typed b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/py.typed new file mode 100644 index 00000000000..e5aff4f83af --- /dev/null +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/py.typed @@ -0,0 +1 @@ +# Marker file for PEP 561. \ No newline at end of file diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/__init__.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/__init__.py new file mode 100644 index 00000000000..8c8f1f92954 --- /dev/null +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/__init__.py @@ -0,0 +1,16 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from ._multiapi_service_client import MultiapiServiceClient +__all__ = ['MultiapiServiceClient'] + +try: + from ._patch import patch_sdk # type: ignore + patch_sdk() +except ImportError: + pass diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/_configuration.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/_configuration.py new file mode 100644 index 00000000000..3f409c04038 --- /dev/null +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/_configuration.py @@ -0,0 +1,72 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from typing import TYPE_CHECKING + +from azure.core.configuration import Configuration +from azure.core.pipeline import policies + +if TYPE_CHECKING: + # pylint: disable=unused-import,ungrouped-imports + from typing import Any + + from azure.core.credentials import TokenCredential + +VERSION = "unknown" + +class MultiapiServiceClientConfiguration(Configuration): + """Configuration for MultiapiServiceClient. + + Note that all parameters used to create this instance are saved as instance + attributes. + + :param credential: Credential needed for the client to connect to Azure. + :type credential: ~azure.core.credentials.TokenCredential + :param endpoint: Pass in https://localhost:3000. + :type endpoint: str + """ + + def __init__( + self, + credential, # type: "TokenCredential" + endpoint, # type: str + **kwargs # type: Any + ): + # type: (...) -> None + if credential is None: + raise ValueError("Parameter 'credential' must not be None.") + if endpoint is None: + raise ValueError("Parameter 'endpoint' must not be None.") + super(MultiapiServiceClientConfiguration, self).__init__(**kwargs) + + self.credential = credential + self.endpoint = endpoint + self.api_version = "1.0.0" + self.credential_scopes = [] + self.credential_scopes.extend(kwargs.pop('credential_scopes', [])) + kwargs.setdefault('sdk_moniker', 'multiapicustombaseurl/{}'.format(VERSION)) + self._configure(**kwargs) + + def _configure( + self, + **kwargs # type: Any + ): + # type: (...) -> None + self.user_agent_policy = kwargs.get('user_agent_policy') or policies.UserAgentPolicy(**kwargs) + self.headers_policy = kwargs.get('headers_policy') or policies.HeadersPolicy(**kwargs) + self.proxy_policy = kwargs.get('proxy_policy') or policies.ProxyPolicy(**kwargs) + self.logging_policy = kwargs.get('logging_policy') or policies.NetworkTraceLoggingPolicy(**kwargs) + self.http_logging_policy = kwargs.get('http_logging_policy') or policies.HttpLoggingPolicy(**kwargs) + self.retry_policy = kwargs.get('retry_policy') or policies.RetryPolicy(**kwargs) + self.custom_hook_policy = kwargs.get('custom_hook_policy') or policies.CustomHookPolicy(**kwargs) + self.redirect_policy = kwargs.get('redirect_policy') or policies.RedirectPolicy(**kwargs) + self.authentication_policy = kwargs.get('authentication_policy') + if not self.credential_scopes and not self.authentication_policy: + raise ValueError("You must provide either credential_scopes or authentication_policy as kwargs") + if self.credential and not self.authentication_policy: + self.authentication_policy = policies.BearerTokenCredentialPolicy(self.credential, *self.credential_scopes, **kwargs) diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/_metadata.json b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/_metadata.json new file mode 100644 index 00000000000..58e791b8505 --- /dev/null +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/_metadata.json @@ -0,0 +1,69 @@ +{ + "chosen_version": "1.0.0", + "total_api_version_list": ["1.0.0"], + "client": { + "name": "MultiapiServiceClient", + "filename": "_multiapi_service_client", + "description": "Service client for multiapi client testing.", + "base_url": null, + "custom_base_url": "\u0027{Endpoint}/multiapi/custom/base/url/v1\u0027", + "azure_arm": false + }, + "global_parameters": { + "sync_method": { + "credential": { + "method_signature": "credential, # type: \"TokenCredential\"", + "description": "Credential needed for the client to connect to Azure.", + "docstring_type": "~azure.core.credentials.TokenCredential", + "required": true + }, + "endpoint": { + "method_signature": "endpoint, # type: str", + "description": "Pass in https://localhost:3000.", + "docstring_type": "str", + "required": true + } + }, + "async_method": { + "credential": { + "method_signature": "credential, # type: \"AsyncTokenCredential\"", + "description": "Credential needed for the client to connect to Azure.", + "docstring_type": "~azure.core.credentials_async.AsyncTokenCredential", + "required": true + }, + "endpoint": { + "method_signature": "endpoint, # type: str", + "description": "Pass in https://localhost:3000.", + "docstring_type": "str", + "required": true + } + }, + "constant": { + }, + "call": "credential, endpoint" + }, + "config": { + "credential": true, + "credential_scopes": [], + "credential_default_policy_type": "BearerTokenCredentialPolicy", + "credential_default_policy_type_has_async_version": true + }, + "operation_groups": { + }, + "operation_mixins": { + "test_one" : { + "sync": { + "signature": "def test_one(\n self,\n id, # type: int\n message=None, # type: Optional[str]\n **kwargs # type: Any\n):\n", + "doc": "\"\"\"TestOne should be in an FirstVersionOperationsMixin.\n\n:param id: An int parameter.\n:type id: int\n:param message: An optional string parameter.\n:type message: str\n:keyword callable cls: A custom type or function that will be passed the direct response\n:return: None, or the result of cls(response)\n:rtype: None\n:raises: ~azure.core.exceptions.HttpResponseError\n\"\"\"" + }, + "async": { + "coroutine": true, + "signature": "async def test_one(\n self,\n id: int,\n message: Optional[str] = None,\n **kwargs\n) -\u003e None:\n", + "doc": "\"\"\"TestOne should be in an FirstVersionOperationsMixin.\n\n:param id: An int parameter.\n:type id: int\n:param message: An optional string parameter.\n:type message: str\n:keyword callable cls: A custom type or function that will be passed the direct response\n:return: None, or the result of cls(response)\n:rtype: None\n:raises: ~azure.core.exceptions.HttpResponseError\n\"\"\"" + }, + "call": "id, message" + } + }, + "sync_imports": "{\"regular\": {\"azurecore\": {\"azure.core.exceptions\": [\"HttpResponseError\", \"ResourceExistsError\", \"ResourceNotFoundError\", \"map_error\"], \"azure.core.pipeline\": [\"PipelineResponse\"], \"azure.core.pipeline.transport\": [\"HttpRequest\", \"HttpResponse\"]}, \"stdlib\": {\"warnings\": [null]}}, \"conditional\": {\"stdlib\": {\"typing\": [\"Any\", \"Callable\", \"Dict\", \"Generic\", \"Optional\", \"TypeVar\"]}}}", + "async_imports": "{\"regular\": {\"azurecore\": {\"azure.core.exceptions\": [\"HttpResponseError\", \"ResourceExistsError\", \"ResourceNotFoundError\", \"map_error\"], \"azure.core.pipeline\": [\"PipelineResponse\"], \"azure.core.pipeline.transport\": [\"AsyncHttpResponse\", \"HttpRequest\"]}, \"stdlib\": {\"warnings\": [null]}}, \"conditional\": {\"stdlib\": {\"typing\": [\"Any\", \"Callable\", \"Dict\", \"Generic\", \"Optional\", \"TypeVar\"]}}}" +} \ No newline at end of file diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/_multiapi_service_client.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/_multiapi_service_client.py new file mode 100644 index 00000000000..3fe8a4d0e8d --- /dev/null +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/_multiapi_service_client.py @@ -0,0 +1,62 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from typing import TYPE_CHECKING + +from azure.core import PipelineClient +from msrest import Deserializer, Serializer + +if TYPE_CHECKING: + # pylint: disable=unused-import,ungrouped-imports + from typing import Any + + from azure.core.credentials import TokenCredential + +from ._configuration import MultiapiServiceClientConfiguration +from .operations import MultiapiServiceClientOperationsMixin +from . import models + + +class MultiapiServiceClient(MultiapiServiceClientOperationsMixin): + """Service client for multiapi client testing. + + :param credential: Credential needed for the client to connect to Azure. + :type credential: ~azure.core.credentials.TokenCredential + :param endpoint: Pass in https://localhost:3000. + :type endpoint: str + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + """ + + def __init__( + self, + credential, # type: "TokenCredential" + endpoint, # type: str + **kwargs # type: Any + ): + # type: (...) -> None + base_url = '{Endpoint}/multiapi/custom/base/url/v1' + self._config = MultiapiServiceClientConfiguration(credential, endpoint, **kwargs) + self._client = PipelineClient(base_url=base_url, config=self._config, **kwargs) + + client_models = {k: v for k, v in models.__dict__.items() if isinstance(v, type)} + self._serialize = Serializer(client_models) + self._deserialize = Deserializer(client_models) + + + def close(self): + # type: () -> None + self._client.close() + + def __enter__(self): + # type: () -> MultiapiServiceClient + self._client.__enter__() + return self + + def __exit__(self, *exc_details): + # type: (Any) -> None + self._client.__exit__(*exc_details) diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/__init__.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/__init__.py new file mode 100644 index 00000000000..ec341e1dd7e --- /dev/null +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/__init__.py @@ -0,0 +1,10 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from ._multiapi_service_client_async import MultiapiServiceClient +__all__ = ['MultiapiServiceClient'] diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/_configuration_async.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/_configuration_async.py new file mode 100644 index 00000000000..a221197c7b0 --- /dev/null +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/_configuration_async.py @@ -0,0 +1,68 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from typing import Any, TYPE_CHECKING + +from azure.core.configuration import Configuration +from azure.core.pipeline import policies + +if TYPE_CHECKING: + # pylint: disable=unused-import,ungrouped-imports + from azure.core.credentials_async import AsyncTokenCredential + +VERSION = "unknown" + +class MultiapiServiceClientConfiguration(Configuration): + """Configuration for MultiapiServiceClient. + + Note that all parameters used to create this instance are saved as instance + attributes. + + :param credential: Credential needed for the client to connect to Azure. + :type credential: ~azure.core.credentials_async.AsyncTokenCredential + :param endpoint: Pass in https://localhost:3000. + :type endpoint: str + """ + + def __init__( + self, + credential: "AsyncTokenCredential", + endpoint: str, + **kwargs: Any + ) -> None: + if credential is None: + raise ValueError("Parameter 'credential' must not be None.") + if endpoint is None: + raise ValueError("Parameter 'endpoint' must not be None.") + super(MultiapiServiceClientConfiguration, self).__init__(**kwargs) + + self.credential = credential + self.endpoint = endpoint + self.api_version = "1.0.0" + self.credential_scopes = [] + self.credential_scopes.extend(kwargs.pop('credential_scopes', [])) + kwargs.setdefault('sdk_moniker', 'multiapicustombaseurl/{}'.format(VERSION)) + self._configure(**kwargs) + + def _configure( + self, + **kwargs: Any + ) -> None: + self.user_agent_policy = kwargs.get('user_agent_policy') or policies.UserAgentPolicy(**kwargs) + self.headers_policy = kwargs.get('headers_policy') or policies.HeadersPolicy(**kwargs) + self.proxy_policy = kwargs.get('proxy_policy') or policies.ProxyPolicy(**kwargs) + self.logging_policy = kwargs.get('logging_policy') or policies.NetworkTraceLoggingPolicy(**kwargs) + self.http_logging_policy = kwargs.get('http_logging_policy') or policies.HttpLoggingPolicy(**kwargs) + self.retry_policy = kwargs.get('retry_policy') or policies.AsyncRetryPolicy(**kwargs) + self.custom_hook_policy = kwargs.get('custom_hook_policy') or policies.CustomHookPolicy(**kwargs) + self.redirect_policy = kwargs.get('redirect_policy') or policies.AsyncRedirectPolicy(**kwargs) + self.authentication_policy = kwargs.get('authentication_policy') + if not self.credential_scopes and not self.authentication_policy: + raise ValueError("You must provide either credential_scopes or authentication_policy as kwargs") + if self.credential and not self.authentication_policy: + self.authentication_policy = policies.AsyncBearerTokenCredentialPolicy(self.credential, *self.credential_scopes, **kwargs) diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/_multiapi_service_client_async.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/_multiapi_service_client_async.py new file mode 100644 index 00000000000..0b83b3adee9 --- /dev/null +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/_multiapi_service_client_async.py @@ -0,0 +1,56 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from typing import Any, TYPE_CHECKING + +from azure.core import AsyncPipelineClient +from msrest import Deserializer, Serializer + +if TYPE_CHECKING: + # pylint: disable=unused-import,ungrouped-imports + from azure.core.credentials_async import AsyncTokenCredential + +from ._configuration_async import MultiapiServiceClientConfiguration +from .operations_async import MultiapiServiceClientOperationsMixin +from .. import models + + +class MultiapiServiceClient(MultiapiServiceClientOperationsMixin): + """Service client for multiapi client testing. + + :param credential: Credential needed for the client to connect to Azure. + :type credential: ~azure.core.credentials_async.AsyncTokenCredential + :param endpoint: Pass in https://localhost:3000. + :type endpoint: str + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + """ + + def __init__( + self, + credential: "AsyncTokenCredential", + endpoint: str, + **kwargs: Any + ) -> None: + base_url = '{Endpoint}/multiapi/custom/base/url/v1' + self._config = MultiapiServiceClientConfiguration(credential, endpoint, **kwargs) + self._client = AsyncPipelineClient(base_url=base_url, config=self._config, **kwargs) + + client_models = {k: v for k, v in models.__dict__.items() if isinstance(v, type)} + self._serialize = Serializer(client_models) + self._deserialize = Deserializer(client_models) + + + async def close(self) -> None: + await self._client.close() + + async def __aenter__(self) -> "MultiapiServiceClient": + await self._client.__aenter__() + return self + + async def __aexit__(self, *exc_details) -> None: + await self._client.__aexit__(*exc_details) diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/operations_async/__init__.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/operations_async/__init__.py new file mode 100644 index 00000000000..9f738e6a2ba --- /dev/null +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/operations_async/__init__.py @@ -0,0 +1,13 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from ._multiapi_service_client_operations_async import MultiapiServiceClientOperationsMixin + +__all__ = [ + 'MultiapiServiceClientOperationsMixin', +] diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/operations_async/_multiapi_service_client_operations_async.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/operations_async/_multiapi_service_client_operations_async.py new file mode 100644 index 00000000000..5abc64705d0 --- /dev/null +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/operations_async/_multiapi_service_client_operations_async.py @@ -0,0 +1,73 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +from typing import Any, Callable, Dict, Generic, Optional, TypeVar +import warnings + +from azure.core.exceptions import HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error +from azure.core.pipeline import PipelineResponse +from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest + +from ... import models + +T = TypeVar('T') +ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] + +class MultiapiServiceClientOperationsMixin: + + async def test_one( + self, + id: int, + message: Optional[str] = None, + **kwargs + ) -> None: + """TestOne should be in an FirstVersionOperationsMixin. + + :param id: An int parameter. + :type id: int + :param message: An optional string parameter. + :type message: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = {404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop('error_map', {})) + api_version = "1.0.0" + + # Construct URL + url = self.test_one.metadata['url'] # type: ignore + path_format_arguments = { + 'Endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters['id'] = self._serialize.query("id", id, 'int') + if message is not None: + query_parameters['message'] = self._serialize.query("message", message, 'str') + query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + + request = self._client.put(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.Error, response) + raise HttpResponseError(response=response, model=error) + + if cls: + return cls(pipeline_response, None, {}) + + test_one.metadata = {'url': '/testOneEndpoint'} # type: ignore diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/models/__init__.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/models/__init__.py new file mode 100644 index 00000000000..9c7dad4f9d3 --- /dev/null +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/models/__init__.py @@ -0,0 +1,16 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +try: + from ._models_py3 import Error +except (SyntaxError, ImportError): + from ._models import Error # type: ignore + +__all__ = [ + 'Error', +] diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/models/_models.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/models/_models.py new file mode 100644 index 00000000000..ae542355b88 --- /dev/null +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/models/_models.py @@ -0,0 +1,33 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.core.exceptions import HttpResponseError +import msrest.serialization + + +class Error(msrest.serialization.Model): + """Error. + + :param status: + :type status: int + :param message: + :type message: str + """ + + _attribute_map = { + 'status': {'key': 'status', 'type': 'int'}, + 'message': {'key': 'message', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + super(Error, self).__init__(**kwargs) + self.status = kwargs.get('status', None) + self.message = kwargs.get('message', None) diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/models/_models_py3.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/models/_models_py3.py new file mode 100644 index 00000000000..443ed73ab7e --- /dev/null +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/models/_models_py3.py @@ -0,0 +1,38 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from typing import Optional + +from azure.core.exceptions import HttpResponseError +import msrest.serialization + + +class Error(msrest.serialization.Model): + """Error. + + :param status: + :type status: int + :param message: + :type message: str + """ + + _attribute_map = { + 'status': {'key': 'status', 'type': 'int'}, + 'message': {'key': 'message', 'type': 'str'}, + } + + def __init__( + self, + *, + status: Optional[int] = None, + message: Optional[str] = None, + **kwargs + ): + super(Error, self).__init__(**kwargs) + self.status = status + self.message = message diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/operations/__init__.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/operations/__init__.py new file mode 100644 index 00000000000..aaf8cf3bb71 --- /dev/null +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/operations/__init__.py @@ -0,0 +1,13 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from ._multiapi_service_client_operations import MultiapiServiceClientOperationsMixin + +__all__ = [ + 'MultiapiServiceClientOperationsMixin', +] diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/operations/_multiapi_service_client_operations.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/operations/_multiapi_service_client_operations.py new file mode 100644 index 00000000000..10debd86957 --- /dev/null +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/operations/_multiapi_service_client_operations.py @@ -0,0 +1,78 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +from typing import TYPE_CHECKING +import warnings + +from azure.core.exceptions import HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error +from azure.core.pipeline import PipelineResponse +from azure.core.pipeline.transport import HttpRequest, HttpResponse + +from .. import models + +if TYPE_CHECKING: + # pylint: disable=unused-import,ungrouped-imports + from typing import Any, Callable, Dict, Generic, Optional, TypeVar + + T = TypeVar('T') + ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] + +class MultiapiServiceClientOperationsMixin(object): + + def test_one( + self, + id, # type: int + message=None, # type: Optional[str] + **kwargs # type: Any + ): + # type: (...) -> None + """TestOne should be in an FirstVersionOperationsMixin. + + :param id: An int parameter. + :type id: int + :param message: An optional string parameter. + :type message: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = {404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop('error_map', {})) + api_version = "1.0.0" + + # Construct URL + url = self.test_one.metadata['url'] # type: ignore + path_format_arguments = { + 'Endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters['id'] = self._serialize.query("id", id, 'int') + if message is not None: + query_parameters['message'] = self._serialize.query("message", message, 'str') + query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + + request = self._client.put(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.Error, response) + raise HttpResponseError(response=response, model=error) + + if cls: + return cls(pipeline_response, None, {}) + + test_one.metadata = {'url': '/testOneEndpoint'} # type: ignore diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/py.typed b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/py.typed new file mode 100644 index 00000000000..e5aff4f83af --- /dev/null +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/py.typed @@ -0,0 +1 @@ +# Marker file for PEP 561. \ No newline at end of file diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/__init__.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/__init__.py new file mode 100644 index 00000000000..8c8f1f92954 --- /dev/null +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/__init__.py @@ -0,0 +1,16 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from ._multiapi_service_client import MultiapiServiceClient +__all__ = ['MultiapiServiceClient'] + +try: + from ._patch import patch_sdk # type: ignore + patch_sdk() +except ImportError: + pass diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/_configuration.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/_configuration.py new file mode 100644 index 00000000000..7a1c291ac65 --- /dev/null +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/_configuration.py @@ -0,0 +1,72 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from typing import TYPE_CHECKING + +from azure.core.configuration import Configuration +from azure.core.pipeline import policies + +if TYPE_CHECKING: + # pylint: disable=unused-import,ungrouped-imports + from typing import Any + + from azure.core.credentials import TokenCredential + +VERSION = "unknown" + +class MultiapiServiceClientConfiguration(Configuration): + """Configuration for MultiapiServiceClient. + + Note that all parameters used to create this instance are saved as instance + attributes. + + :param credential: Credential needed for the client to connect to Azure. + :type credential: ~azure.core.credentials.TokenCredential + :param endpoint: Pass in https://localhost:3000. + :type endpoint: str + """ + + def __init__( + self, + credential, # type: "TokenCredential" + endpoint, # type: str + **kwargs # type: Any + ): + # type: (...) -> None + if credential is None: + raise ValueError("Parameter 'credential' must not be None.") + if endpoint is None: + raise ValueError("Parameter 'endpoint' must not be None.") + super(MultiapiServiceClientConfiguration, self).__init__(**kwargs) + + self.credential = credential + self.endpoint = endpoint + self.api_version = "2.0.0" + self.credential_scopes = [] + self.credential_scopes.extend(kwargs.pop('credential_scopes', [])) + kwargs.setdefault('sdk_moniker', 'multiapicustombaseurl/{}'.format(VERSION)) + self._configure(**kwargs) + + def _configure( + self, + **kwargs # type: Any + ): + # type: (...) -> None + self.user_agent_policy = kwargs.get('user_agent_policy') or policies.UserAgentPolicy(**kwargs) + self.headers_policy = kwargs.get('headers_policy') or policies.HeadersPolicy(**kwargs) + self.proxy_policy = kwargs.get('proxy_policy') or policies.ProxyPolicy(**kwargs) + self.logging_policy = kwargs.get('logging_policy') or policies.NetworkTraceLoggingPolicy(**kwargs) + self.http_logging_policy = kwargs.get('http_logging_policy') or policies.HttpLoggingPolicy(**kwargs) + self.retry_policy = kwargs.get('retry_policy') or policies.RetryPolicy(**kwargs) + self.custom_hook_policy = kwargs.get('custom_hook_policy') or policies.CustomHookPolicy(**kwargs) + self.redirect_policy = kwargs.get('redirect_policy') or policies.RedirectPolicy(**kwargs) + self.authentication_policy = kwargs.get('authentication_policy') + if not self.credential_scopes and not self.authentication_policy: + raise ValueError("You must provide either credential_scopes or authentication_policy as kwargs") + if self.credential and not self.authentication_policy: + self.authentication_policy = policies.BearerTokenCredentialPolicy(self.credential, *self.credential_scopes, **kwargs) diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/_metadata.json b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/_metadata.json new file mode 100644 index 00000000000..90a64c4376a --- /dev/null +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/_metadata.json @@ -0,0 +1,69 @@ +{ + "chosen_version": "2.0.0", + "total_api_version_list": ["2.0.0"], + "client": { + "name": "MultiapiServiceClient", + "filename": "_multiapi_service_client", + "description": "Service client for multiapi client testing.", + "base_url": null, + "custom_base_url": "\u0027{Endpoint}/multiapi/custom/base/url/v2\u0027", + "azure_arm": false + }, + "global_parameters": { + "sync_method": { + "credential": { + "method_signature": "credential, # type: \"TokenCredential\"", + "description": "Credential needed for the client to connect to Azure.", + "docstring_type": "~azure.core.credentials.TokenCredential", + "required": true + }, + "endpoint": { + "method_signature": "endpoint, # type: str", + "description": "Pass in https://localhost:3000.", + "docstring_type": "str", + "required": true + } + }, + "async_method": { + "credential": { + "method_signature": "credential, # type: \"AsyncTokenCredential\"", + "description": "Credential needed for the client to connect to Azure.", + "docstring_type": "~azure.core.credentials_async.AsyncTokenCredential", + "required": true + }, + "endpoint": { + "method_signature": "endpoint, # type: str", + "description": "Pass in https://localhost:3000.", + "docstring_type": "str", + "required": true + } + }, + "constant": { + }, + "call": "credential, endpoint" + }, + "config": { + "credential": true, + "credential_scopes": [], + "credential_default_policy_type": "BearerTokenCredentialPolicy", + "credential_default_policy_type_has_async_version": true + }, + "operation_groups": { + }, + "operation_mixins": { + "test_one" : { + "sync": { + "signature": "def test_one(\n self,\n id, # type: int\n message=None, # type: Optional[str]\n **kwargs # type: Any\n):\n", + "doc": "\"\"\"TestOne should be in an SecondVersionOperationsMixin. Returns ModelTwo.\n\n:param id: An int parameter.\n:type id: int\n:param message: An optional string parameter.\n:type message: str\n:keyword callable cls: A custom type or function that will be passed the direct response\n:return: None, or the result of cls(response)\n:rtype: None\n:raises: ~azure.core.exceptions.HttpResponseError\n\"\"\"" + }, + "async": { + "coroutine": true, + "signature": "async def test_one(\n self,\n id: int,\n message: Optional[str] = None,\n **kwargs\n) -\u003e None:\n", + "doc": "\"\"\"TestOne should be in an SecondVersionOperationsMixin. Returns ModelTwo.\n\n:param id: An int parameter.\n:type id: int\n:param message: An optional string parameter.\n:type message: str\n:keyword callable cls: A custom type or function that will be passed the direct response\n:return: None, or the result of cls(response)\n:rtype: None\n:raises: ~azure.core.exceptions.HttpResponseError\n\"\"\"" + }, + "call": "id, message" + } + }, + "sync_imports": "{\"regular\": {\"azurecore\": {\"azure.core.exceptions\": [\"HttpResponseError\", \"ResourceExistsError\", \"ResourceNotFoundError\", \"map_error\"], \"azure.core.pipeline\": [\"PipelineResponse\"], \"azure.core.pipeline.transport\": [\"HttpRequest\", \"HttpResponse\"]}, \"stdlib\": {\"warnings\": [null]}}, \"conditional\": {\"stdlib\": {\"typing\": [\"Any\", \"Callable\", \"Dict\", \"Generic\", \"Optional\", \"TypeVar\"]}}}", + "async_imports": "{\"regular\": {\"azurecore\": {\"azure.core.exceptions\": [\"HttpResponseError\", \"ResourceExistsError\", \"ResourceNotFoundError\", \"map_error\"], \"azure.core.pipeline\": [\"PipelineResponse\"], \"azure.core.pipeline.transport\": [\"AsyncHttpResponse\", \"HttpRequest\"]}, \"stdlib\": {\"warnings\": [null]}}, \"conditional\": {\"stdlib\": {\"typing\": [\"Any\", \"Callable\", \"Dict\", \"Generic\", \"Optional\", \"TypeVar\"]}}}" +} \ No newline at end of file diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/_multiapi_service_client.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/_multiapi_service_client.py new file mode 100644 index 00000000000..2a223824d60 --- /dev/null +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/_multiapi_service_client.py @@ -0,0 +1,62 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from typing import TYPE_CHECKING + +from azure.core import PipelineClient +from msrest import Deserializer, Serializer + +if TYPE_CHECKING: + # pylint: disable=unused-import,ungrouped-imports + from typing import Any + + from azure.core.credentials import TokenCredential + +from ._configuration import MultiapiServiceClientConfiguration +from .operations import MultiapiServiceClientOperationsMixin +from . import models + + +class MultiapiServiceClient(MultiapiServiceClientOperationsMixin): + """Service client for multiapi client testing. + + :param credential: Credential needed for the client to connect to Azure. + :type credential: ~azure.core.credentials.TokenCredential + :param endpoint: Pass in https://localhost:3000. + :type endpoint: str + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + """ + + def __init__( + self, + credential, # type: "TokenCredential" + endpoint, # type: str + **kwargs # type: Any + ): + # type: (...) -> None + base_url = '{Endpoint}/multiapi/custom/base/url/v2' + self._config = MultiapiServiceClientConfiguration(credential, endpoint, **kwargs) + self._client = PipelineClient(base_url=base_url, config=self._config, **kwargs) + + client_models = {k: v for k, v in models.__dict__.items() if isinstance(v, type)} + self._serialize = Serializer(client_models) + self._deserialize = Deserializer(client_models) + + + def close(self): + # type: () -> None + self._client.close() + + def __enter__(self): + # type: () -> MultiapiServiceClient + self._client.__enter__() + return self + + def __exit__(self, *exc_details): + # type: (Any) -> None + self._client.__exit__(*exc_details) diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/aio/__init__.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/aio/__init__.py new file mode 100644 index 00000000000..ec341e1dd7e --- /dev/null +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/aio/__init__.py @@ -0,0 +1,10 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from ._multiapi_service_client_async import MultiapiServiceClient +__all__ = ['MultiapiServiceClient'] diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/aio/_configuration_async.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/aio/_configuration_async.py new file mode 100644 index 00000000000..28c20c03a06 --- /dev/null +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/aio/_configuration_async.py @@ -0,0 +1,68 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from typing import Any, TYPE_CHECKING + +from azure.core.configuration import Configuration +from azure.core.pipeline import policies + +if TYPE_CHECKING: + # pylint: disable=unused-import,ungrouped-imports + from azure.core.credentials_async import AsyncTokenCredential + +VERSION = "unknown" + +class MultiapiServiceClientConfiguration(Configuration): + """Configuration for MultiapiServiceClient. + + Note that all parameters used to create this instance are saved as instance + attributes. + + :param credential: Credential needed for the client to connect to Azure. + :type credential: ~azure.core.credentials_async.AsyncTokenCredential + :param endpoint: Pass in https://localhost:3000. + :type endpoint: str + """ + + def __init__( + self, + credential: "AsyncTokenCredential", + endpoint: str, + **kwargs: Any + ) -> None: + if credential is None: + raise ValueError("Parameter 'credential' must not be None.") + if endpoint is None: + raise ValueError("Parameter 'endpoint' must not be None.") + super(MultiapiServiceClientConfiguration, self).__init__(**kwargs) + + self.credential = credential + self.endpoint = endpoint + self.api_version = "2.0.0" + self.credential_scopes = [] + self.credential_scopes.extend(kwargs.pop('credential_scopes', [])) + kwargs.setdefault('sdk_moniker', 'multiapicustombaseurl/{}'.format(VERSION)) + self._configure(**kwargs) + + def _configure( + self, + **kwargs: Any + ) -> None: + self.user_agent_policy = kwargs.get('user_agent_policy') or policies.UserAgentPolicy(**kwargs) + self.headers_policy = kwargs.get('headers_policy') or policies.HeadersPolicy(**kwargs) + self.proxy_policy = kwargs.get('proxy_policy') or policies.ProxyPolicy(**kwargs) + self.logging_policy = kwargs.get('logging_policy') or policies.NetworkTraceLoggingPolicy(**kwargs) + self.http_logging_policy = kwargs.get('http_logging_policy') or policies.HttpLoggingPolicy(**kwargs) + self.retry_policy = kwargs.get('retry_policy') or policies.AsyncRetryPolicy(**kwargs) + self.custom_hook_policy = kwargs.get('custom_hook_policy') or policies.CustomHookPolicy(**kwargs) + self.redirect_policy = kwargs.get('redirect_policy') or policies.AsyncRedirectPolicy(**kwargs) + self.authentication_policy = kwargs.get('authentication_policy') + if not self.credential_scopes and not self.authentication_policy: + raise ValueError("You must provide either credential_scopes or authentication_policy as kwargs") + if self.credential and not self.authentication_policy: + self.authentication_policy = policies.AsyncBearerTokenCredentialPolicy(self.credential, *self.credential_scopes, **kwargs) diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/aio/_multiapi_service_client_async.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/aio/_multiapi_service_client_async.py new file mode 100644 index 00000000000..4da5cb964b3 --- /dev/null +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/aio/_multiapi_service_client_async.py @@ -0,0 +1,56 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from typing import Any, TYPE_CHECKING + +from azure.core import AsyncPipelineClient +from msrest import Deserializer, Serializer + +if TYPE_CHECKING: + # pylint: disable=unused-import,ungrouped-imports + from azure.core.credentials_async import AsyncTokenCredential + +from ._configuration_async import MultiapiServiceClientConfiguration +from .operations_async import MultiapiServiceClientOperationsMixin +from .. import models + + +class MultiapiServiceClient(MultiapiServiceClientOperationsMixin): + """Service client for multiapi client testing. + + :param credential: Credential needed for the client to connect to Azure. + :type credential: ~azure.core.credentials_async.AsyncTokenCredential + :param endpoint: Pass in https://localhost:3000. + :type endpoint: str + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + """ + + def __init__( + self, + credential: "AsyncTokenCredential", + endpoint: str, + **kwargs: Any + ) -> None: + base_url = '{Endpoint}/multiapi/custom/base/url/v2' + self._config = MultiapiServiceClientConfiguration(credential, endpoint, **kwargs) + self._client = AsyncPipelineClient(base_url=base_url, config=self._config, **kwargs) + + client_models = {k: v for k, v in models.__dict__.items() if isinstance(v, type)} + self._serialize = Serializer(client_models) + self._deserialize = Deserializer(client_models) + + + async def close(self) -> None: + await self._client.close() + + async def __aenter__(self) -> "MultiapiServiceClient": + await self._client.__aenter__() + return self + + async def __aexit__(self, *exc_details) -> None: + await self._client.__aexit__(*exc_details) diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/aio/operations_async/__init__.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/aio/operations_async/__init__.py new file mode 100644 index 00000000000..9f738e6a2ba --- /dev/null +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/aio/operations_async/__init__.py @@ -0,0 +1,13 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from ._multiapi_service_client_operations_async import MultiapiServiceClientOperationsMixin + +__all__ = [ + 'MultiapiServiceClientOperationsMixin', +] diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/aio/operations_async/_multiapi_service_client_operations_async.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/aio/operations_async/_multiapi_service_client_operations_async.py new file mode 100644 index 00000000000..7030fc89a25 --- /dev/null +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/aio/operations_async/_multiapi_service_client_operations_async.py @@ -0,0 +1,73 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +from typing import Any, Callable, Dict, Generic, Optional, TypeVar +import warnings + +from azure.core.exceptions import HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error +from azure.core.pipeline import PipelineResponse +from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest + +from ... import models + +T = TypeVar('T') +ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] + +class MultiapiServiceClientOperationsMixin: + + async def test_one( + self, + id: int, + message: Optional[str] = None, + **kwargs + ) -> None: + """TestOne should be in an SecondVersionOperationsMixin. Returns ModelTwo. + + :param id: An int parameter. + :type id: int + :param message: An optional string parameter. + :type message: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = {404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop('error_map', {})) + api_version = "2.0.0" + + # Construct URL + url = self.test_one.metadata['url'] # type: ignore + path_format_arguments = { + 'Endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters['id'] = self._serialize.query("id", id, 'int') + if message is not None: + query_parameters['message'] = self._serialize.query("message", message, 'str') + query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + + request = self._client.put(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.Error, response) + raise HttpResponseError(response=response, model=error) + + if cls: + return cls(pipeline_response, None, {}) + + test_one.metadata = {'url': '/testOneEndpoint'} # type: ignore diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/models/__init__.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/models/__init__.py new file mode 100644 index 00000000000..9c7dad4f9d3 --- /dev/null +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/models/__init__.py @@ -0,0 +1,16 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +try: + from ._models_py3 import Error +except (SyntaxError, ImportError): + from ._models import Error # type: ignore + +__all__ = [ + 'Error', +] diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/models/_models.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/models/_models.py new file mode 100644 index 00000000000..ae542355b88 --- /dev/null +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/models/_models.py @@ -0,0 +1,33 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.core.exceptions import HttpResponseError +import msrest.serialization + + +class Error(msrest.serialization.Model): + """Error. + + :param status: + :type status: int + :param message: + :type message: str + """ + + _attribute_map = { + 'status': {'key': 'status', 'type': 'int'}, + 'message': {'key': 'message', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + super(Error, self).__init__(**kwargs) + self.status = kwargs.get('status', None) + self.message = kwargs.get('message', None) diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/models/_models_py3.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/models/_models_py3.py new file mode 100644 index 00000000000..443ed73ab7e --- /dev/null +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/models/_models_py3.py @@ -0,0 +1,38 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from typing import Optional + +from azure.core.exceptions import HttpResponseError +import msrest.serialization + + +class Error(msrest.serialization.Model): + """Error. + + :param status: + :type status: int + :param message: + :type message: str + """ + + _attribute_map = { + 'status': {'key': 'status', 'type': 'int'}, + 'message': {'key': 'message', 'type': 'str'}, + } + + def __init__( + self, + *, + status: Optional[int] = None, + message: Optional[str] = None, + **kwargs + ): + super(Error, self).__init__(**kwargs) + self.status = status + self.message = message diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/operations/__init__.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/operations/__init__.py new file mode 100644 index 00000000000..aaf8cf3bb71 --- /dev/null +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/operations/__init__.py @@ -0,0 +1,13 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from ._multiapi_service_client_operations import MultiapiServiceClientOperationsMixin + +__all__ = [ + 'MultiapiServiceClientOperationsMixin', +] diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/operations/_multiapi_service_client_operations.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/operations/_multiapi_service_client_operations.py new file mode 100644 index 00000000000..c37d2aead91 --- /dev/null +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/operations/_multiapi_service_client_operations.py @@ -0,0 +1,78 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +from typing import TYPE_CHECKING +import warnings + +from azure.core.exceptions import HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error +from azure.core.pipeline import PipelineResponse +from azure.core.pipeline.transport import HttpRequest, HttpResponse + +from .. import models + +if TYPE_CHECKING: + # pylint: disable=unused-import,ungrouped-imports + from typing import Any, Callable, Dict, Generic, Optional, TypeVar + + T = TypeVar('T') + ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] + +class MultiapiServiceClientOperationsMixin(object): + + def test_one( + self, + id, # type: int + message=None, # type: Optional[str] + **kwargs # type: Any + ): + # type: (...) -> None + """TestOne should be in an SecondVersionOperationsMixin. Returns ModelTwo. + + :param id: An int parameter. + :type id: int + :param message: An optional string parameter. + :type message: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = {404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop('error_map', {})) + api_version = "2.0.0" + + # Construct URL + url = self.test_one.metadata['url'] # type: ignore + path_format_arguments = { + 'Endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters['id'] = self._serialize.query("id", id, 'int') + if message is not None: + query_parameters['message'] = self._serialize.query("message", message, 'str') + query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + + request = self._client.put(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.Error, response) + raise HttpResponseError(response=response, model=error) + + if cls: + return cls(pipeline_response, None, {}) + + test_one.metadata = {'url': '/testOneEndpoint'} # type: ignore diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/py.typed b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/py.typed new file mode 100644 index 00000000000..e5aff4f83af --- /dev/null +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/py.typed @@ -0,0 +1 @@ +# Marker file for PEP 561. \ No newline at end of file diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/setup.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/setup.py new file mode 100644 index 00000000000..aceae3fc0ed --- /dev/null +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/setup.py @@ -0,0 +1,42 @@ +# coding=utf-8 +#------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +#-------------------------------------------------------------------------- +# coding: utf-8 + +from setuptools import setup, find_packages + +NAME = "multiapicustombaseurl" +VERSION = "0.1.0" + +# To install the library, run the following +# +# python setup.py install +# +# prerequisite: setuptools +# http://pypi.python.org/pypi/setuptools + +REQUIRES = ["msrest>=0.6.0", "azure-core<2.0.0,>=1.2.0"] + +setup( + name=NAME, + version=VERSION, + description="multiapi custom base url", + author_email="", + url="", + keywords=["Swagger", "multiapicustombaseurl"], + install_requires=REQUIRES, + packages=find_packages(), + include_package_data=True, + long_description="""\ + This ready contains multiple API versions, to help you deal with all of the Azure clouds + (Azure Stack, Azure Government, Azure China, etc.). + By default, it uses the latest API version available on public Azure. + For production, you should stick to a particular api-version and/or profile. + The profile sets a mapping between an operation group and its API version. + The api-version parameter sets the default API version if the operation + group is not described in the profile. + """ +) diff --git a/test/multiapi/specification/multiapicustombaseurl/README.md b/test/multiapi/specification/multiapicustombaseurl/README.md new file mode 100644 index 00000000000..4fb931b1423 --- /dev/null +++ b/test/multiapi/specification/multiapicustombaseurl/README.md @@ -0,0 +1,37 @@ +# Testing multiapi custom base url + +``` yaml $(tag) == 'v1' +input-file: ../../../../node_modules/@microsoft.azure/autorest.testserver/swagger/multiapi-v1-custom-base-url.json +namespace: multiapicustombaseurl.v1 +output-folder: $(python-sdks-folder)/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1 +``` + +``` yaml $(tag) == 'v2' +input-file: ../../../../node_modules/@microsoft.azure/autorest.testserver/swagger/multiapi-v2-custom-base-url.json +namespace: multiapicustombaseurl.v2 +output-folder: $(python-sdks-folder)/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2 +``` + +### Settings +``` yaml +package-name: multiapicustombaseurl +no-namespace-folders: true +license-header: MICROSOFT_MIT_NO_VERSION +add-credentials: true +``` + +``` yaml $(multiapi) +clear-output-folder: true +batch: + - tag: v1 + - tag: v2 + - multiapiscript: true +``` + +### Multi-api script + +``` yaml $(multiapiscript) +output-folder: $(python-sdks-folder)/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/ +clear-output-folder: false +perform-load: false +``` From 98458e55310575410911cfaaef3f257559fa98a8 Mon Sep 17 00:00:00 2001 From: iscai-msft Date: Wed, 15 Jul 2020 13:32:54 -0400 Subject: [PATCH 02/10] no base_url param in constructor for custom base urls --- autorest/multiapi/templates/multiapi_service_client.py.jinja2 | 2 ++ .../multiapicustombaseurl/_multiapi_service_client.py | 1 - .../multiapicustombaseurl/aio/_multiapi_service_client_async.py | 1 - 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/autorest/multiapi/templates/multiapi_service_client.py.jinja2 b/autorest/multiapi/templates/multiapi_service_client.py.jinja2 index 5131ec7e058..38a89dc5294 100644 --- a/autorest/multiapi/templates/multiapi_service_client.py.jinja2 +++ b/autorest/multiapi/templates/multiapi_service_client.py.jinja2 @@ -13,7 +13,9 @@ def __init__( {% endif %} {% endfor %} api_version=None, + {% if base_url %} base_url=None, + {% endif %} profile=KnownProfiles.default, **kwargs # type: Any ){{" -> None" if async_mode else "" }}:{% endmacro %} diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/_multiapi_service_client.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/_multiapi_service_client.py index 043db3db828..7a1e4fe2edc 100644 --- a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/_multiapi_service_client.py +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/_multiapi_service_client.py @@ -59,7 +59,6 @@ def __init__( credential, # type: "TokenCredential" endpoint, # type: str api_version=None, - base_url=None, profile=KnownProfiles.default, **kwargs # type: Any ): diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/aio/_multiapi_service_client_async.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/aio/_multiapi_service_client_async.py index 66739d1e238..19ca269602a 100644 --- a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/aio/_multiapi_service_client_async.py +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/aio/_multiapi_service_client_async.py @@ -59,7 +59,6 @@ def __init__( credential, # type: "AsyncTokenCredential" endpoint, # type: str api_version=None, - base_url=None, profile=KnownProfiles.default, **kwargs # type: Any ) -> None: From 84f178ad2bb454e0036bfaa6e87e19d4ebf60355 Mon Sep 17 00:00:00 2001 From: iscai-msft Date: Wed, 15 Jul 2020 16:41:27 -0400 Subject: [PATCH 03/10] generate all possible host templates for custom base url --- autorest/multiapi/__init__.py | 12 +++++++++++- .../templates/multiapi_service_client.py.jinja2 | 10 ++++++++-- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/autorest/multiapi/__init__.py b/autorest/multiapi/__init__.py index ccfba508aa7..28c03283da0 100644 --- a/autorest/multiapi/__init__.py +++ b/autorest/multiapi/__init__.py @@ -201,6 +201,16 @@ def _build_operation_mixin_meta(self, paths_to_versions: List[Path]) -> Dict[str return mixin_operations + def _build_custom_base_url_to_api_version( + self, paths_to_versions: List[Path] + ) -> Dict[str, List[str]]: + custom_base_url_to_api_version: Dict[str, List[str]] = {} + for version_path in paths_to_versions: + metadata_json = json.loads(self._autorestapi.read_file(version_path / "_metadata.json")) + custom_base_url = metadata_json["client"]["custom_base_url"] + custom_base_url_to_api_version.setdefault(custom_base_url, []).append(version_path.name) + return custom_base_url_to_api_version + def _build_operation_meta( self, paths_to_versions: List[Path] ) -> Tuple[Dict[str, List[Tuple[str, str]]], Dict[str, str]]: @@ -366,7 +376,7 @@ def process(self) -> bool: "sync_imports": str(FileImportSerializer(sync_imports, is_python_3_file=False)), "async_imports": str(FileImportSerializer(async_imports, is_python_3_file=True)), "base_url": metadata_json["client"]["base_url"], - "custom_base_url": metadata_json["client"]["custom_base_url"], + "custom_base_url_to_api_version": self._build_custom_base_url_to_api_version(paths_to_versions), "azure_arm": metadata_json["client"]["azure_arm"] } diff --git a/autorest/multiapi/templates/multiapi_service_client.py.jinja2 b/autorest/multiapi/templates/multiapi_service_client.py.jinja2 index 38a89dc5294..00b46f863ba 100644 --- a/autorest/multiapi/templates/multiapi_service_client.py.jinja2 +++ b/autorest/multiapi/templates/multiapi_service_client.py.jinja2 @@ -73,7 +73,7 @@ class {{ client_name }}({% if mixin_operations %}{{ client_name }}OperationsMixi {% endfor %} :param str api_version: API version to use if no profile is provided, or if missing in profile. - {% if not custom_base_url %} + {% if base_url %} :param str base_url: Service URL {% endif %} :param profile: A profile definition, from KnownProfiles to dict. @@ -96,7 +96,13 @@ class {{ client_name }}({% if mixin_operations %}{{ client_name }}OperationsMixi {{ method_signature()|indent }} {% if not base_url %} - base_url = {{ custom_base_url }} + {% for custom_base_url, api_versions in custom_base_url_to_api_version|dictsort %} + {% set if_statement = "if" if loop.first else "elif" %} + {{ if_statement ~ " api_version == '" ~ api_versions|join("' or api_version == '") ~ "'" }}: + base_url = {{ custom_base_url }} + {% endfor %} + else: + raise NotImplementedError("APIVersion {} is not available".format(api_version)) {% else %} if not base_url: base_url = {{ base_url }} From 40ccc5ecac77e61c784d87a46fab2427331cb3df Mon Sep 17 00:00:00 2001 From: iscai-msft Date: Wed, 15 Jul 2020 16:43:16 -0400 Subject: [PATCH 04/10] regenerate with multiple base urls and testserver changes --- .../_multiapi_service_client.py | 7 ++++++- .../multiapicustombaseurl/_operations_mixin.py | 14 ++++++-------- .../aio/_multiapi_service_client_async.py | 7 ++++++- .../aio/_operations_mixin_async.py | 14 ++++++-------- .../multiapicustombaseurl/v1/_metadata.json | 14 +++++++------- .../v1/_multiapi_service_client.py | 2 +- .../v1/aio/_multiapi_service_client_async.py | 2 +- ...multiapi_service_client_operations_async.py | 18 +++++++----------- .../_multiapi_service_client_operations.py | 18 +++++++----------- .../multiapicustombaseurl/v2/_metadata.json | 14 +++++++------- .../v2/_multiapi_service_client.py | 2 +- .../v2/aio/_multiapi_service_client_async.py | 2 +- ...multiapi_service_client_operations_async.py | 16 ++++++---------- .../_multiapi_service_client_operations.py | 16 ++++++---------- 14 files changed, 68 insertions(+), 78 deletions(-) diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/_multiapi_service_client.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/_multiapi_service_client.py index 7a1e4fe2edc..ae7cada9eaa 100644 --- a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/_multiapi_service_client.py +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/_multiapi_service_client.py @@ -62,7 +62,12 @@ def __init__( profile=KnownProfiles.default, **kwargs # type: Any ): - base_url = '{Endpoint}/multiapi/custom/base/url/v2' + if api_version == 'v1': + base_url = '{Endpoint}/multiapiCustomBaseUrl/v1' + elif api_version == 'v2': + base_url = '{Endpoint}/multiapiCustomBaseUrl/v2' + else: + raise NotImplementedError("APIVersion {} is not available".format(api_version)) self._config = MultiapiServiceClientConfiguration(credential, endpoint, **kwargs) self._client = PipelineClient(base_url=base_url, config=self._config, **kwargs) super(MultiapiServiceClient, self).__init__( diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/_operations_mixin.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/_operations_mixin.py index 06d24b4b1b7..acf2cad22cd 100644 --- a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/_operations_mixin.py +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/_operations_mixin.py @@ -23,24 +23,22 @@ class MultiapiServiceClientOperationsMixin(object): - def test_one( + def test( self, id, # type: int - message=None, # type: Optional[str] **kwargs # type: Any ): - """TestOne should be in an SecondVersionOperationsMixin. Returns ModelTwo. + """Should be a mixin operation. Put in 2 for the required parameter and have the correct api + version of 2.0.0 to pass. - :param id: An int parameter. + :param id: An int parameter. Put in 2 to pass. :type id: int - :param message: An optional string parameter. - :type message: str :keyword callable cls: A custom type or function that will be passed the direct response :return: None, or the result of cls(response) :rtype: None :raises: ~azure.core.exceptions.HttpResponseError """ - api_version = self._get_api_version('test_one') + api_version = self._get_api_version('test') if api_version == '1.0.0': from .v1.operations import MultiapiServiceClientOperationsMixin as OperationClass elif api_version == '2.0.0': @@ -52,4 +50,4 @@ def test_one( mixin_instance._config = self._config mixin_instance._serialize = Serializer(self._models_dict(api_version)) mixin_instance._deserialize = Deserializer(self._models_dict(api_version)) - return mixin_instance.test_one(id, message, **kwargs) + return mixin_instance.test(id, **kwargs) diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/aio/_multiapi_service_client_async.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/aio/_multiapi_service_client_async.py index 19ca269602a..0b47c3fa26b 100644 --- a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/aio/_multiapi_service_client_async.py +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/aio/_multiapi_service_client_async.py @@ -62,7 +62,12 @@ def __init__( profile=KnownProfiles.default, **kwargs # type: Any ) -> None: - base_url = '{Endpoint}/multiapi/custom/base/url/v2' + if api_version == 'v1': + base_url = '{Endpoint}/multiapiCustomBaseUrl/v1' + elif api_version == 'v2': + base_url = '{Endpoint}/multiapiCustomBaseUrl/v2' + else: + raise NotImplementedError("APIVersion {} is not available".format(api_version)) self._config = MultiapiServiceClientConfiguration(credential, endpoint, **kwargs) self._client = AsyncPipelineClient(base_url=base_url, config=self._config, **kwargs) super(MultiapiServiceClient, self).__init__( diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/aio/_operations_mixin_async.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/aio/_operations_mixin_async.py index 9f51290301e..3431a6560fa 100644 --- a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/aio/_operations_mixin_async.py +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/aio/_operations_mixin_async.py @@ -19,24 +19,22 @@ class MultiapiServiceClientOperationsMixin(object): - async def test_one( + async def test( self, id: int, - message: Optional[str] = None, **kwargs ) -> None: - """TestOne should be in an SecondVersionOperationsMixin. Returns ModelTwo. + """Should be a mixin operation. Put in 2 for the required parameter and have the correct api + version of 2.0.0 to pass. - :param id: An int parameter. + :param id: An int parameter. Put in 2 to pass. :type id: int - :param message: An optional string parameter. - :type message: str :keyword callable cls: A custom type or function that will be passed the direct response :return: None, or the result of cls(response) :rtype: None :raises: ~azure.core.exceptions.HttpResponseError """ - api_version = self._get_api_version('test_one') + api_version = self._get_api_version('test') if api_version == '1.0.0': from ..v1.aio.operations_async import MultiapiServiceClientOperationsMixin as OperationClass elif api_version == '2.0.0': @@ -48,4 +46,4 @@ async def test_one( mixin_instance._config = self._config mixin_instance._serialize = Serializer(self._models_dict(api_version)) mixin_instance._deserialize = Deserializer(self._models_dict(api_version)) - return await mixin_instance.test_one(id, message, **kwargs) + return await mixin_instance.test(id, **kwargs) diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/_metadata.json b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/_metadata.json index 58e791b8505..68a48a83b6f 100644 --- a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/_metadata.json +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/_metadata.json @@ -6,7 +6,7 @@ "filename": "_multiapi_service_client", "description": "Service client for multiapi client testing.", "base_url": null, - "custom_base_url": "\u0027{Endpoint}/multiapi/custom/base/url/v1\u0027", + "custom_base_url": "\u0027{Endpoint}/multiapiCustomBaseUrl/v1\u0027", "azure_arm": false }, "global_parameters": { @@ -51,17 +51,17 @@ "operation_groups": { }, "operation_mixins": { - "test_one" : { + "test" : { "sync": { - "signature": "def test_one(\n self,\n id, # type: int\n message=None, # type: Optional[str]\n **kwargs # type: Any\n):\n", - "doc": "\"\"\"TestOne should be in an FirstVersionOperationsMixin.\n\n:param id: An int parameter.\n:type id: int\n:param message: An optional string parameter.\n:type message: str\n:keyword callable cls: A custom type or function that will be passed the direct response\n:return: None, or the result of cls(response)\n:rtype: None\n:raises: ~azure.core.exceptions.HttpResponseError\n\"\"\"" + "signature": "def test(\n self,\n id, # type: int\n **kwargs # type: Any\n):\n", + "doc": "\"\"\"Should be a mixin operation. Put in 1 for the required parameter and have the correct api\nversion of 1.0.0 to pass.\n\n:param id: An int parameter. Put in 1 to pass.\n:type id: int\n:keyword callable cls: A custom type or function that will be passed the direct response\n:return: None, or the result of cls(response)\n:rtype: None\n:raises: ~azure.core.exceptions.HttpResponseError\n\"\"\"" }, "async": { "coroutine": true, - "signature": "async def test_one(\n self,\n id: int,\n message: Optional[str] = None,\n **kwargs\n) -\u003e None:\n", - "doc": "\"\"\"TestOne should be in an FirstVersionOperationsMixin.\n\n:param id: An int parameter.\n:type id: int\n:param message: An optional string parameter.\n:type message: str\n:keyword callable cls: A custom type or function that will be passed the direct response\n:return: None, or the result of cls(response)\n:rtype: None\n:raises: ~azure.core.exceptions.HttpResponseError\n\"\"\"" + "signature": "async def test(\n self,\n id: int,\n **kwargs\n) -\u003e None:\n", + "doc": "\"\"\"Should be a mixin operation. Put in 1 for the required parameter and have the correct api\nversion of 1.0.0 to pass.\n\n:param id: An int parameter. Put in 1 to pass.\n:type id: int\n:keyword callable cls: A custom type or function that will be passed the direct response\n:return: None, or the result of cls(response)\n:rtype: None\n:raises: ~azure.core.exceptions.HttpResponseError\n\"\"\"" }, - "call": "id, message" + "call": "id" } }, "sync_imports": "{\"regular\": {\"azurecore\": {\"azure.core.exceptions\": [\"HttpResponseError\", \"ResourceExistsError\", \"ResourceNotFoundError\", \"map_error\"], \"azure.core.pipeline\": [\"PipelineResponse\"], \"azure.core.pipeline.transport\": [\"HttpRequest\", \"HttpResponse\"]}, \"stdlib\": {\"warnings\": [null]}}, \"conditional\": {\"stdlib\": {\"typing\": [\"Any\", \"Callable\", \"Dict\", \"Generic\", \"Optional\", \"TypeVar\"]}}}", diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/_multiapi_service_client.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/_multiapi_service_client.py index 3fe8a4d0e8d..448535c1d09 100644 --- a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/_multiapi_service_client.py +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/_multiapi_service_client.py @@ -39,7 +39,7 @@ def __init__( **kwargs # type: Any ): # type: (...) -> None - base_url = '{Endpoint}/multiapi/custom/base/url/v1' + base_url = '{Endpoint}/multiapiCustomBaseUrl/v1' self._config = MultiapiServiceClientConfiguration(credential, endpoint, **kwargs) self._client = PipelineClient(base_url=base_url, config=self._config, **kwargs) diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/_multiapi_service_client_async.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/_multiapi_service_client_async.py index 0b83b3adee9..dd18a101efb 100644 --- a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/_multiapi_service_client_async.py +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/_multiapi_service_client_async.py @@ -36,7 +36,7 @@ def __init__( endpoint: str, **kwargs: Any ) -> None: - base_url = '{Endpoint}/multiapi/custom/base/url/v1' + base_url = '{Endpoint}/multiapiCustomBaseUrl/v1' self._config = MultiapiServiceClientConfiguration(credential, endpoint, **kwargs) self._client = AsyncPipelineClient(base_url=base_url, config=self._config, **kwargs) diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/operations_async/_multiapi_service_client_operations_async.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/operations_async/_multiapi_service_client_operations_async.py index 5abc64705d0..bf7e122cad0 100644 --- a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/operations_async/_multiapi_service_client_operations_async.py +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/operations_async/_multiapi_service_client_operations_async.py @@ -19,18 +19,16 @@ class MultiapiServiceClientOperationsMixin: - async def test_one( + async def test( self, id: int, - message: Optional[str] = None, **kwargs ) -> None: - """TestOne should be in an FirstVersionOperationsMixin. + """Should be a mixin operation. Put in 1 for the required parameter and have the correct api + version of 1.0.0 to pass. - :param id: An int parameter. + :param id: An int parameter. Put in 1 to pass. :type id: int - :param message: An optional string parameter. - :type message: str :keyword callable cls: A custom type or function that will be passed the direct response :return: None, or the result of cls(response) :rtype: None @@ -42,7 +40,7 @@ async def test_one( api_version = "1.0.0" # Construct URL - url = self.test_one.metadata['url'] # type: ignore + url = self.test.metadata['url'] # type: ignore path_format_arguments = { 'Endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), } @@ -51,14 +49,12 @@ async def test_one( # Construct parameters query_parameters = {} # type: Dict[str, Any] query_parameters['id'] = self._serialize.query("id", id, 'int') - if message is not None: - query_parameters['message'] = self._serialize.query("message", message, 'str') query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') # Construct headers header_parameters = {} # type: Dict[str, Any] - request = self._client.put(url, query_parameters, header_parameters) + request = self._client.get(url, query_parameters, header_parameters) pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) response = pipeline_response.http_response @@ -70,4 +66,4 @@ async def test_one( if cls: return cls(pipeline_response, None, {}) - test_one.metadata = {'url': '/testOneEndpoint'} # type: ignore + test.metadata = {'url': '/test'} # type: ignore diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/operations/_multiapi_service_client_operations.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/operations/_multiapi_service_client_operations.py index 10debd86957..8383e4d3d9a 100644 --- a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/operations/_multiapi_service_client_operations.py +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/operations/_multiapi_service_client_operations.py @@ -23,19 +23,17 @@ class MultiapiServiceClientOperationsMixin(object): - def test_one( + def test( self, id, # type: int - message=None, # type: Optional[str] **kwargs # type: Any ): # type: (...) -> None - """TestOne should be in an FirstVersionOperationsMixin. + """Should be a mixin operation. Put in 1 for the required parameter and have the correct api + version of 1.0.0 to pass. - :param id: An int parameter. + :param id: An int parameter. Put in 1 to pass. :type id: int - :param message: An optional string parameter. - :type message: str :keyword callable cls: A custom type or function that will be passed the direct response :return: None, or the result of cls(response) :rtype: None @@ -47,7 +45,7 @@ def test_one( api_version = "1.0.0" # Construct URL - url = self.test_one.metadata['url'] # type: ignore + url = self.test.metadata['url'] # type: ignore path_format_arguments = { 'Endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), } @@ -56,14 +54,12 @@ def test_one( # Construct parameters query_parameters = {} # type: Dict[str, Any] query_parameters['id'] = self._serialize.query("id", id, 'int') - if message is not None: - query_parameters['message'] = self._serialize.query("message", message, 'str') query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') # Construct headers header_parameters = {} # type: Dict[str, Any] - request = self._client.put(url, query_parameters, header_parameters) + request = self._client.get(url, query_parameters, header_parameters) pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) response = pipeline_response.http_response @@ -75,4 +71,4 @@ def test_one( if cls: return cls(pipeline_response, None, {}) - test_one.metadata = {'url': '/testOneEndpoint'} # type: ignore + test.metadata = {'url': '/test'} # type: ignore diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/_metadata.json b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/_metadata.json index 90a64c4376a..53366533d29 100644 --- a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/_metadata.json +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/_metadata.json @@ -6,7 +6,7 @@ "filename": "_multiapi_service_client", "description": "Service client for multiapi client testing.", "base_url": null, - "custom_base_url": "\u0027{Endpoint}/multiapi/custom/base/url/v2\u0027", + "custom_base_url": "\u0027{Endpoint}/multiapiCustomBaseUrl/v2\u0027", "azure_arm": false }, "global_parameters": { @@ -51,17 +51,17 @@ "operation_groups": { }, "operation_mixins": { - "test_one" : { + "test" : { "sync": { - "signature": "def test_one(\n self,\n id, # type: int\n message=None, # type: Optional[str]\n **kwargs # type: Any\n):\n", - "doc": "\"\"\"TestOne should be in an SecondVersionOperationsMixin. Returns ModelTwo.\n\n:param id: An int parameter.\n:type id: int\n:param message: An optional string parameter.\n:type message: str\n:keyword callable cls: A custom type or function that will be passed the direct response\n:return: None, or the result of cls(response)\n:rtype: None\n:raises: ~azure.core.exceptions.HttpResponseError\n\"\"\"" + "signature": "def test(\n self,\n id, # type: int\n **kwargs # type: Any\n):\n", + "doc": "\"\"\"Should be a mixin operation. Put in 2 for the required parameter and have the correct api\nversion of 2.0.0 to pass.\n\n:param id: An int parameter. Put in 2 to pass.\n:type id: int\n:keyword callable cls: A custom type or function that will be passed the direct response\n:return: None, or the result of cls(response)\n:rtype: None\n:raises: ~azure.core.exceptions.HttpResponseError\n\"\"\"" }, "async": { "coroutine": true, - "signature": "async def test_one(\n self,\n id: int,\n message: Optional[str] = None,\n **kwargs\n) -\u003e None:\n", - "doc": "\"\"\"TestOne should be in an SecondVersionOperationsMixin. Returns ModelTwo.\n\n:param id: An int parameter.\n:type id: int\n:param message: An optional string parameter.\n:type message: str\n:keyword callable cls: A custom type or function that will be passed the direct response\n:return: None, or the result of cls(response)\n:rtype: None\n:raises: ~azure.core.exceptions.HttpResponseError\n\"\"\"" + "signature": "async def test(\n self,\n id: int,\n **kwargs\n) -\u003e None:\n", + "doc": "\"\"\"Should be a mixin operation. Put in 2 for the required parameter and have the correct api\nversion of 2.0.0 to pass.\n\n:param id: An int parameter. Put in 2 to pass.\n:type id: int\n:keyword callable cls: A custom type or function that will be passed the direct response\n:return: None, or the result of cls(response)\n:rtype: None\n:raises: ~azure.core.exceptions.HttpResponseError\n\"\"\"" }, - "call": "id, message" + "call": "id" } }, "sync_imports": "{\"regular\": {\"azurecore\": {\"azure.core.exceptions\": [\"HttpResponseError\", \"ResourceExistsError\", \"ResourceNotFoundError\", \"map_error\"], \"azure.core.pipeline\": [\"PipelineResponse\"], \"azure.core.pipeline.transport\": [\"HttpRequest\", \"HttpResponse\"]}, \"stdlib\": {\"warnings\": [null]}}, \"conditional\": {\"stdlib\": {\"typing\": [\"Any\", \"Callable\", \"Dict\", \"Generic\", \"Optional\", \"TypeVar\"]}}}", diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/_multiapi_service_client.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/_multiapi_service_client.py index 2a223824d60..5acfb50c4d4 100644 --- a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/_multiapi_service_client.py +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/_multiapi_service_client.py @@ -39,7 +39,7 @@ def __init__( **kwargs # type: Any ): # type: (...) -> None - base_url = '{Endpoint}/multiapi/custom/base/url/v2' + base_url = '{Endpoint}/multiapiCustomBaseUrl/v2' self._config = MultiapiServiceClientConfiguration(credential, endpoint, **kwargs) self._client = PipelineClient(base_url=base_url, config=self._config, **kwargs) diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/aio/_multiapi_service_client_async.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/aio/_multiapi_service_client_async.py index 4da5cb964b3..c5cc4fe1391 100644 --- a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/aio/_multiapi_service_client_async.py +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/aio/_multiapi_service_client_async.py @@ -36,7 +36,7 @@ def __init__( endpoint: str, **kwargs: Any ) -> None: - base_url = '{Endpoint}/multiapi/custom/base/url/v2' + base_url = '{Endpoint}/multiapiCustomBaseUrl/v2' self._config = MultiapiServiceClientConfiguration(credential, endpoint, **kwargs) self._client = AsyncPipelineClient(base_url=base_url, config=self._config, **kwargs) diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/aio/operations_async/_multiapi_service_client_operations_async.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/aio/operations_async/_multiapi_service_client_operations_async.py index 7030fc89a25..f97696a9598 100644 --- a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/aio/operations_async/_multiapi_service_client_operations_async.py +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/aio/operations_async/_multiapi_service_client_operations_async.py @@ -19,18 +19,16 @@ class MultiapiServiceClientOperationsMixin: - async def test_one( + async def test( self, id: int, - message: Optional[str] = None, **kwargs ) -> None: - """TestOne should be in an SecondVersionOperationsMixin. Returns ModelTwo. + """Should be a mixin operation. Put in 2 for the required parameter and have the correct api + version of 2.0.0 to pass. - :param id: An int parameter. + :param id: An int parameter. Put in 2 to pass. :type id: int - :param message: An optional string parameter. - :type message: str :keyword callable cls: A custom type or function that will be passed the direct response :return: None, or the result of cls(response) :rtype: None @@ -42,7 +40,7 @@ async def test_one( api_version = "2.0.0" # Construct URL - url = self.test_one.metadata['url'] # type: ignore + url = self.test.metadata['url'] # type: ignore path_format_arguments = { 'Endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), } @@ -51,8 +49,6 @@ async def test_one( # Construct parameters query_parameters = {} # type: Dict[str, Any] query_parameters['id'] = self._serialize.query("id", id, 'int') - if message is not None: - query_parameters['message'] = self._serialize.query("message", message, 'str') query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') # Construct headers @@ -70,4 +66,4 @@ async def test_one( if cls: return cls(pipeline_response, None, {}) - test_one.metadata = {'url': '/testOneEndpoint'} # type: ignore + test.metadata = {'url': '/test'} # type: ignore diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/operations/_multiapi_service_client_operations.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/operations/_multiapi_service_client_operations.py index c37d2aead91..dbaba4f7bab 100644 --- a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/operations/_multiapi_service_client_operations.py +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/operations/_multiapi_service_client_operations.py @@ -23,19 +23,17 @@ class MultiapiServiceClientOperationsMixin(object): - def test_one( + def test( self, id, # type: int - message=None, # type: Optional[str] **kwargs # type: Any ): # type: (...) -> None - """TestOne should be in an SecondVersionOperationsMixin. Returns ModelTwo. + """Should be a mixin operation. Put in 2 for the required parameter and have the correct api + version of 2.0.0 to pass. - :param id: An int parameter. + :param id: An int parameter. Put in 2 to pass. :type id: int - :param message: An optional string parameter. - :type message: str :keyword callable cls: A custom type or function that will be passed the direct response :return: None, or the result of cls(response) :rtype: None @@ -47,7 +45,7 @@ def test_one( api_version = "2.0.0" # Construct URL - url = self.test_one.metadata['url'] # type: ignore + url = self.test.metadata['url'] # type: ignore path_format_arguments = { 'Endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), } @@ -56,8 +54,6 @@ def test_one( # Construct parameters query_parameters = {} # type: Dict[str, Any] query_parameters['id'] = self._serialize.query("id", id, 'int') - if message is not None: - query_parameters['message'] = self._serialize.query("message", message, 'str') query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') # Construct headers @@ -75,4 +71,4 @@ def test_one( if cls: return cls(pipeline_response, None, {}) - test_one.metadata = {'url': '/testOneEndpoint'} # type: ignore + test.metadata = {'url': '/test'} # type: ignore From 1efb11ef4d547dc4e0512ed7f71cd877eab177d7 Mon Sep 17 00:00:00 2001 From: iscai-msft Date: Thu, 16 Jul 2020 17:31:32 -0400 Subject: [PATCH 05/10] rename service client to MultiapiCustomBaseUrlServiceClient --- .../multiapicustombaseurl/__init__.py | 4 ++-- .../multiapicustombaseurl/_configuration.py | 6 +++--- ...=> _multiapi_custom_base_url_service_client.py} | 14 +++++++------- .../multiapicustombaseurl/_operations_mixin.py | 6 +++--- .../multiapicustombaseurl/aio/__init__.py | 4 ++-- .../aio/_configuration_async.py | 6 +++--- ...ltiapi_custom_base_url_service_client_async.py} | 14 +++++++------- .../aio/_operations_mixin_async.py | 6 +++--- .../multiapicustombaseurl/v1/__init__.py | 4 ++-- .../multiapicustombaseurl/v1/_configuration.py | 6 +++--- .../multiapicustombaseurl/v1/_metadata.json | 6 +++--- ...=> _multiapi_custom_base_url_service_client.py} | 12 ++++++------ .../multiapicustombaseurl/v1/aio/__init__.py | 4 ++-- .../v1/aio/_configuration_async.py | 6 +++--- ...ltiapi_custom_base_url_service_client_async.py} | 12 ++++++------ .../v1/aio/operations_async/__init__.py | 4 ++-- ...om_base_url_service_client_operations_async.py} | 2 +- .../v1/operations/__init__.py | 4 ++-- ...i_custom_base_url_service_client_operations.py} | 2 +- .../multiapicustombaseurl/v2/__init__.py | 4 ++-- .../multiapicustombaseurl/v2/_configuration.py | 6 +++--- .../multiapicustombaseurl/v2/_metadata.json | 6 +++--- ...=> _multiapi_custom_base_url_service_client.py} | 12 ++++++------ .../multiapicustombaseurl/v2/aio/__init__.py | 4 ++-- .../v2/aio/_configuration_async.py | 6 +++--- ...ltiapi_custom_base_url_service_client_async.py} | 12 ++++++------ .../v2/aio/operations_async/__init__.py | 4 ++-- ...om_base_url_service_client_operations_async.py} | 2 +- .../v2/operations/__init__.py | 4 ++-- ...i_custom_base_url_service_client_operations.py} | 2 +- 30 files changed, 92 insertions(+), 92 deletions(-) rename test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/{_multiapi_service_client.py => _multiapi_custom_base_url_service_client.py} (86%) rename test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/aio/{_multiapi_service_client_async.py => _multiapi_custom_base_url_service_client_async.py} (86%) rename test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/{_multiapi_service_client.py => _multiapi_custom_base_url_service_client.py} (80%) rename test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/{_multiapi_service_client_async.py => _multiapi_custom_base_url_service_client_async.py} (79%) rename test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/operations_async/{_multiapi_service_client_operations_async.py => _multiapi_custom_base_url_service_client_operations_async.py} (98%) rename test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/operations/{_multiapi_service_client_operations.py => _multiapi_custom_base_url_service_client_operations.py} (97%) rename test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/{_multiapi_service_client.py => _multiapi_custom_base_url_service_client.py} (80%) rename test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/aio/{_multiapi_service_client_async.py => _multiapi_custom_base_url_service_client_async.py} (79%) rename test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/aio/operations_async/{_multiapi_service_client_operations_async.py => _multiapi_custom_base_url_service_client_operations_async.py} (98%) rename test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/operations/{_multiapi_service_client_operations.py => _multiapi_custom_base_url_service_client_operations.py} (97%) diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/__init__.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/__init__.py index 8c8f1f92954..aa22c30dc28 100644 --- a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/__init__.py +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/__init__.py @@ -6,8 +6,8 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from ._multiapi_service_client import MultiapiServiceClient -__all__ = ['MultiapiServiceClient'] +from ._multiapi_custom_base_url_service_client import MultiapiCustomBaseUrlServiceClient +__all__ = ['MultiapiCustomBaseUrlServiceClient'] try: from ._patch import patch_sdk # type: ignore diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/_configuration.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/_configuration.py index a50bddef5a6..675cc461134 100644 --- a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/_configuration.py +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/_configuration.py @@ -16,8 +16,8 @@ from ._version import VERSION -class MultiapiServiceClientConfiguration(Configuration): - """Configuration for MultiapiServiceClient. +class MultiapiCustomBaseUrlServiceClientConfiguration(Configuration): + """Configuration for MultiapiCustomBaseUrlServiceClient. Note that all parameters used to create this instance are saved as instance attributes. @@ -39,7 +39,7 @@ def __init__( raise ValueError("Parameter 'credential' must not be None.") if endpoint is None: raise ValueError("Parameter 'endpoint' must not be None.") - super(MultiapiServiceClientConfiguration, self).__init__(**kwargs) + super(MultiapiCustomBaseUrlServiceClientConfiguration, self).__init__(**kwargs) self.credential = credential self.endpoint = endpoint diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/_multiapi_service_client.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/_multiapi_custom_base_url_service_client.py similarity index 86% rename from test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/_multiapi_service_client.py rename to test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/_multiapi_custom_base_url_service_client.py index ae7cada9eaa..1181412f046 100644 --- a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/_multiapi_service_client.py +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/_multiapi_custom_base_url_service_client.py @@ -14,8 +14,8 @@ from azure.profiles import KnownProfiles, ProfileDefinition from azure.profiles.multiapiclient import MultiApiClientMixin -from ._configuration import MultiapiServiceClientConfiguration -from ._operations_mixin import MultiapiServiceClientOperationsMixin +from ._configuration import MultiapiCustomBaseUrlServiceClientConfiguration +from ._operations_mixin import MultiapiCustomBaseUrlServiceClientOperationsMixin class _SDKClient(object): def __init__(self, *args, **kwargs): """This is a fake class to support current implemetation of MultiApiClientMixin." @@ -23,8 +23,8 @@ def __init__(self, *args, **kwargs): """ pass -class MultiapiServiceClient(MultiapiServiceClientOperationsMixin, MultiApiClientMixin, _SDKClient): - """Service client for multiapi client testing. +class MultiapiCustomBaseUrlServiceClient(MultiapiCustomBaseUrlServiceClientOperationsMixin, MultiApiClientMixin, _SDKClient): + """Service client for multiapi custom base url testing. This ready contains multiple API versions, to help you deal with all of the Azure clouds (Azure Stack, Azure Government, Azure China, etc.). @@ -46,7 +46,7 @@ class MultiapiServiceClient(MultiapiServiceClientOperationsMixin, MultiApiClient """ DEFAULT_API_VERSION = '2.0.0' - _PROFILE_TAG = "multiapicustombaseurl.MultiapiServiceClient" + _PROFILE_TAG = "multiapicustombaseurl.MultiapiCustomBaseUrlServiceClient" LATEST_PROFILE = ProfileDefinition({ _PROFILE_TAG: { None: DEFAULT_API_VERSION, @@ -68,9 +68,9 @@ def __init__( base_url = '{Endpoint}/multiapiCustomBaseUrl/v2' else: raise NotImplementedError("APIVersion {} is not available".format(api_version)) - self._config = MultiapiServiceClientConfiguration(credential, endpoint, **kwargs) + self._config = MultiapiCustomBaseUrlServiceClientConfiguration(credential, endpoint, **kwargs) self._client = PipelineClient(base_url=base_url, config=self._config, **kwargs) - super(MultiapiServiceClient, self).__init__( + super(MultiapiCustomBaseUrlServiceClient, self).__init__( api_version=api_version, profile=profile ) diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/_operations_mixin.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/_operations_mixin.py index acf2cad22cd..b5e74ba1935 100644 --- a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/_operations_mixin.py +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/_operations_mixin.py @@ -21,7 +21,7 @@ from typing import Any, Callable, Dict, Generic, Optional, TypeVar -class MultiapiServiceClientOperationsMixin(object): +class MultiapiCustomBaseUrlServiceClientOperationsMixin(object): def test( self, @@ -40,9 +40,9 @@ def test( """ api_version = self._get_api_version('test') if api_version == '1.0.0': - from .v1.operations import MultiapiServiceClientOperationsMixin as OperationClass + from .v1.operations import MultiapiCustomBaseUrlServiceClientOperationsMixin as OperationClass elif api_version == '2.0.0': - from .v2.operations import MultiapiServiceClientOperationsMixin as OperationClass + from .v2.operations import MultiapiCustomBaseUrlServiceClientOperationsMixin as OperationClass else: raise NotImplementedError("APIVersion {} is not available".format(api_version)) mixin_instance = OperationClass() diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/aio/__init__.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/aio/__init__.py index ec341e1dd7e..f92dbe9db9a 100644 --- a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/aio/__init__.py +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/aio/__init__.py @@ -6,5 +6,5 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from ._multiapi_service_client_async import MultiapiServiceClient -__all__ = ['MultiapiServiceClient'] +from ._multiapi_custom_base_url_service_client_async import MultiapiCustomBaseUrlServiceClient +__all__ = ['MultiapiCustomBaseUrlServiceClient'] diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/aio/_configuration_async.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/aio/_configuration_async.py index 8671da9198c..5bd32a0ba62 100644 --- a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/aio/_configuration_async.py +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/aio/_configuration_async.py @@ -16,8 +16,8 @@ from .._version import VERSION -class MultiapiServiceClientConfiguration(Configuration): - """Configuration for MultiapiServiceClient. +class MultiapiCustomBaseUrlServiceClientConfiguration(Configuration): + """Configuration for MultiapiCustomBaseUrlServiceClient. Note that all parameters used to create this instance are saved as instance attributes. @@ -39,7 +39,7 @@ def __init__( raise ValueError("Parameter 'credential' must not be None.") if endpoint is None: raise ValueError("Parameter 'endpoint' must not be None.") - super(MultiapiServiceClientConfiguration, self).__init__(**kwargs) + super(MultiapiCustomBaseUrlServiceClientConfiguration, self).__init__(**kwargs) self.credential = credential self.endpoint = endpoint diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/aio/_multiapi_service_client_async.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/aio/_multiapi_custom_base_url_service_client_async.py similarity index 86% rename from test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/aio/_multiapi_service_client_async.py rename to test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/aio/_multiapi_custom_base_url_service_client_async.py index 0b47c3fa26b..0b05e72a003 100644 --- a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/aio/_multiapi_service_client_async.py +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/aio/_multiapi_custom_base_url_service_client_async.py @@ -14,8 +14,8 @@ from azure.profiles import KnownProfiles, ProfileDefinition from azure.profiles.multiapiclient import MultiApiClientMixin -from ._configuration_async import MultiapiServiceClientConfiguration -from ._operations_mixin_async import MultiapiServiceClientOperationsMixin +from ._configuration_async import MultiapiCustomBaseUrlServiceClientConfiguration +from ._operations_mixin_async import MultiapiCustomBaseUrlServiceClientOperationsMixin class _SDKClient(object): def __init__(self, *args, **kwargs): """This is a fake class to support current implemetation of MultiApiClientMixin." @@ -23,8 +23,8 @@ def __init__(self, *args, **kwargs): """ pass -class MultiapiServiceClient(MultiapiServiceClientOperationsMixin, MultiApiClientMixin, _SDKClient): - """Service client for multiapi client testing. +class MultiapiCustomBaseUrlServiceClient(MultiapiCustomBaseUrlServiceClientOperationsMixin, MultiApiClientMixin, _SDKClient): + """Service client for multiapi custom base url testing. This ready contains multiple API versions, to help you deal with all of the Azure clouds (Azure Stack, Azure Government, Azure China, etc.). @@ -46,7 +46,7 @@ class MultiapiServiceClient(MultiapiServiceClientOperationsMixin, MultiApiClient """ DEFAULT_API_VERSION = '2.0.0' - _PROFILE_TAG = "multiapicustombaseurl.MultiapiServiceClient" + _PROFILE_TAG = "multiapicustombaseurl.MultiapiCustomBaseUrlServiceClient" LATEST_PROFILE = ProfileDefinition({ _PROFILE_TAG: { None: DEFAULT_API_VERSION, @@ -68,9 +68,9 @@ def __init__( base_url = '{Endpoint}/multiapiCustomBaseUrl/v2' else: raise NotImplementedError("APIVersion {} is not available".format(api_version)) - self._config = MultiapiServiceClientConfiguration(credential, endpoint, **kwargs) + self._config = MultiapiCustomBaseUrlServiceClientConfiguration(credential, endpoint, **kwargs) self._client = AsyncPipelineClient(base_url=base_url, config=self._config, **kwargs) - super(MultiapiServiceClient, self).__init__( + super(MultiapiCustomBaseUrlServiceClient, self).__init__( api_version=api_version, profile=profile ) diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/aio/_operations_mixin_async.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/aio/_operations_mixin_async.py index 3431a6560fa..e1209a3f0cc 100644 --- a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/aio/_operations_mixin_async.py +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/aio/_operations_mixin_async.py @@ -17,7 +17,7 @@ from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest -class MultiapiServiceClientOperationsMixin(object): +class MultiapiCustomBaseUrlServiceClientOperationsMixin(object): async def test( self, @@ -36,9 +36,9 @@ async def test( """ api_version = self._get_api_version('test') if api_version == '1.0.0': - from ..v1.aio.operations_async import MultiapiServiceClientOperationsMixin as OperationClass + from ..v1.aio.operations_async import MultiapiCustomBaseUrlServiceClientOperationsMixin as OperationClass elif api_version == '2.0.0': - from ..v2.aio.operations_async import MultiapiServiceClientOperationsMixin as OperationClass + from ..v2.aio.operations_async import MultiapiCustomBaseUrlServiceClientOperationsMixin as OperationClass else: raise NotImplementedError("APIVersion {} is not available".format(api_version)) mixin_instance = OperationClass() diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/__init__.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/__init__.py index 8c8f1f92954..aa22c30dc28 100644 --- a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/__init__.py +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/__init__.py @@ -6,8 +6,8 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from ._multiapi_service_client import MultiapiServiceClient -__all__ = ['MultiapiServiceClient'] +from ._multiapi_custom_base_url_service_client import MultiapiCustomBaseUrlServiceClient +__all__ = ['MultiapiCustomBaseUrlServiceClient'] try: from ._patch import patch_sdk # type: ignore diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/_configuration.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/_configuration.py index 3f409c04038..8a55eba0919 100644 --- a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/_configuration.py +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/_configuration.py @@ -19,8 +19,8 @@ VERSION = "unknown" -class MultiapiServiceClientConfiguration(Configuration): - """Configuration for MultiapiServiceClient. +class MultiapiCustomBaseUrlServiceClientConfiguration(Configuration): + """Configuration for MultiapiCustomBaseUrlServiceClient. Note that all parameters used to create this instance are saved as instance attributes. @@ -42,7 +42,7 @@ def __init__( raise ValueError("Parameter 'credential' must not be None.") if endpoint is None: raise ValueError("Parameter 'endpoint' must not be None.") - super(MultiapiServiceClientConfiguration, self).__init__(**kwargs) + super(MultiapiCustomBaseUrlServiceClientConfiguration, self).__init__(**kwargs) self.credential = credential self.endpoint = endpoint diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/_metadata.json b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/_metadata.json index 68a48a83b6f..2e1dfbd2617 100644 --- a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/_metadata.json +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/_metadata.json @@ -2,9 +2,9 @@ "chosen_version": "1.0.0", "total_api_version_list": ["1.0.0"], "client": { - "name": "MultiapiServiceClient", - "filename": "_multiapi_service_client", - "description": "Service client for multiapi client testing.", + "name": "MultiapiCustomBaseUrlServiceClient", + "filename": "_multiapi_custom_base_url_service_client", + "description": "Service client for multiapi custom base url testing.", "base_url": null, "custom_base_url": "\u0027{Endpoint}/multiapiCustomBaseUrl/v1\u0027", "azure_arm": false diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/_multiapi_service_client.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/_multiapi_custom_base_url_service_client.py similarity index 80% rename from test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/_multiapi_service_client.py rename to test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/_multiapi_custom_base_url_service_client.py index 448535c1d09..409a5677b5c 100644 --- a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/_multiapi_service_client.py +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/_multiapi_custom_base_url_service_client.py @@ -17,13 +17,13 @@ from azure.core.credentials import TokenCredential -from ._configuration import MultiapiServiceClientConfiguration -from .operations import MultiapiServiceClientOperationsMixin +from ._configuration import MultiapiCustomBaseUrlServiceClientConfiguration +from .operations import MultiapiCustomBaseUrlServiceClientOperationsMixin from . import models -class MultiapiServiceClient(MultiapiServiceClientOperationsMixin): - """Service client for multiapi client testing. +class MultiapiCustomBaseUrlServiceClient(MultiapiCustomBaseUrlServiceClientOperationsMixin): + """Service client for multiapi custom base url testing. :param credential: Credential needed for the client to connect to Azure. :type credential: ~azure.core.credentials.TokenCredential @@ -40,7 +40,7 @@ def __init__( ): # type: (...) -> None base_url = '{Endpoint}/multiapiCustomBaseUrl/v1' - self._config = MultiapiServiceClientConfiguration(credential, endpoint, **kwargs) + self._config = MultiapiCustomBaseUrlServiceClientConfiguration(credential, endpoint, **kwargs) self._client = PipelineClient(base_url=base_url, config=self._config, **kwargs) client_models = {k: v for k, v in models.__dict__.items() if isinstance(v, type)} @@ -53,7 +53,7 @@ def close(self): self._client.close() def __enter__(self): - # type: () -> MultiapiServiceClient + # type: () -> MultiapiCustomBaseUrlServiceClient self._client.__enter__() return self diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/__init__.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/__init__.py index ec341e1dd7e..f92dbe9db9a 100644 --- a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/__init__.py +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/__init__.py @@ -6,5 +6,5 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from ._multiapi_service_client_async import MultiapiServiceClient -__all__ = ['MultiapiServiceClient'] +from ._multiapi_custom_base_url_service_client_async import MultiapiCustomBaseUrlServiceClient +__all__ = ['MultiapiCustomBaseUrlServiceClient'] diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/_configuration_async.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/_configuration_async.py index a221197c7b0..dc3b74d4864 100644 --- a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/_configuration_async.py +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/_configuration_async.py @@ -17,8 +17,8 @@ VERSION = "unknown" -class MultiapiServiceClientConfiguration(Configuration): - """Configuration for MultiapiServiceClient. +class MultiapiCustomBaseUrlServiceClientConfiguration(Configuration): + """Configuration for MultiapiCustomBaseUrlServiceClient. Note that all parameters used to create this instance are saved as instance attributes. @@ -39,7 +39,7 @@ def __init__( raise ValueError("Parameter 'credential' must not be None.") if endpoint is None: raise ValueError("Parameter 'endpoint' must not be None.") - super(MultiapiServiceClientConfiguration, self).__init__(**kwargs) + super(MultiapiCustomBaseUrlServiceClientConfiguration, self).__init__(**kwargs) self.credential = credential self.endpoint = endpoint diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/_multiapi_service_client_async.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/_multiapi_custom_base_url_service_client_async.py similarity index 79% rename from test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/_multiapi_service_client_async.py rename to test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/_multiapi_custom_base_url_service_client_async.py index dd18a101efb..8907f79da98 100644 --- a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/_multiapi_service_client_async.py +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/_multiapi_custom_base_url_service_client_async.py @@ -15,13 +15,13 @@ # pylint: disable=unused-import,ungrouped-imports from azure.core.credentials_async import AsyncTokenCredential -from ._configuration_async import MultiapiServiceClientConfiguration -from .operations_async import MultiapiServiceClientOperationsMixin +from ._configuration_async import MultiapiCustomBaseUrlServiceClientConfiguration +from .operations_async import MultiapiCustomBaseUrlServiceClientOperationsMixin from .. import models -class MultiapiServiceClient(MultiapiServiceClientOperationsMixin): - """Service client for multiapi client testing. +class MultiapiCustomBaseUrlServiceClient(MultiapiCustomBaseUrlServiceClientOperationsMixin): + """Service client for multiapi custom base url testing. :param credential: Credential needed for the client to connect to Azure. :type credential: ~azure.core.credentials_async.AsyncTokenCredential @@ -37,7 +37,7 @@ def __init__( **kwargs: Any ) -> None: base_url = '{Endpoint}/multiapiCustomBaseUrl/v1' - self._config = MultiapiServiceClientConfiguration(credential, endpoint, **kwargs) + self._config = MultiapiCustomBaseUrlServiceClientConfiguration(credential, endpoint, **kwargs) self._client = AsyncPipelineClient(base_url=base_url, config=self._config, **kwargs) client_models = {k: v for k, v in models.__dict__.items() if isinstance(v, type)} @@ -48,7 +48,7 @@ def __init__( async def close(self) -> None: await self._client.close() - async def __aenter__(self) -> "MultiapiServiceClient": + async def __aenter__(self) -> "MultiapiCustomBaseUrlServiceClient": await self._client.__aenter__() return self diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/operations_async/__init__.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/operations_async/__init__.py index 9f738e6a2ba..7a556025aa0 100644 --- a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/operations_async/__init__.py +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/operations_async/__init__.py @@ -6,8 +6,8 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from ._multiapi_service_client_operations_async import MultiapiServiceClientOperationsMixin +from ._multiapi_custom_base_url_service_client_operations_async import MultiapiCustomBaseUrlServiceClientOperationsMixin __all__ = [ - 'MultiapiServiceClientOperationsMixin', + 'MultiapiCustomBaseUrlServiceClientOperationsMixin', ] diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/operations_async/_multiapi_service_client_operations_async.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/operations_async/_multiapi_custom_base_url_service_client_operations_async.py similarity index 98% rename from test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/operations_async/_multiapi_service_client_operations_async.py rename to test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/operations_async/_multiapi_custom_base_url_service_client_operations_async.py index bf7e122cad0..10b0b2dd3f6 100644 --- a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/operations_async/_multiapi_service_client_operations_async.py +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/operations_async/_multiapi_custom_base_url_service_client_operations_async.py @@ -17,7 +17,7 @@ T = TypeVar('T') ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] -class MultiapiServiceClientOperationsMixin: +class MultiapiCustomBaseUrlServiceClientOperationsMixin: async def test( self, diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/operations/__init__.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/operations/__init__.py index aaf8cf3bb71..5e6c6df7afb 100644 --- a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/operations/__init__.py +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/operations/__init__.py @@ -6,8 +6,8 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from ._multiapi_service_client_operations import MultiapiServiceClientOperationsMixin +from ._multiapi_custom_base_url_service_client_operations import MultiapiCustomBaseUrlServiceClientOperationsMixin __all__ = [ - 'MultiapiServiceClientOperationsMixin', + 'MultiapiCustomBaseUrlServiceClientOperationsMixin', ] diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/operations/_multiapi_service_client_operations.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/operations/_multiapi_custom_base_url_service_client_operations.py similarity index 97% rename from test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/operations/_multiapi_service_client_operations.py rename to test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/operations/_multiapi_custom_base_url_service_client_operations.py index 8383e4d3d9a..cba6ef799ba 100644 --- a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/operations/_multiapi_service_client_operations.py +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/operations/_multiapi_custom_base_url_service_client_operations.py @@ -21,7 +21,7 @@ T = TypeVar('T') ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] -class MultiapiServiceClientOperationsMixin(object): +class MultiapiCustomBaseUrlServiceClientOperationsMixin(object): def test( self, diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/__init__.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/__init__.py index 8c8f1f92954..aa22c30dc28 100644 --- a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/__init__.py +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/__init__.py @@ -6,8 +6,8 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from ._multiapi_service_client import MultiapiServiceClient -__all__ = ['MultiapiServiceClient'] +from ._multiapi_custom_base_url_service_client import MultiapiCustomBaseUrlServiceClient +__all__ = ['MultiapiCustomBaseUrlServiceClient'] try: from ._patch import patch_sdk # type: ignore diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/_configuration.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/_configuration.py index 7a1c291ac65..f57620c77c8 100644 --- a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/_configuration.py +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/_configuration.py @@ -19,8 +19,8 @@ VERSION = "unknown" -class MultiapiServiceClientConfiguration(Configuration): - """Configuration for MultiapiServiceClient. +class MultiapiCustomBaseUrlServiceClientConfiguration(Configuration): + """Configuration for MultiapiCustomBaseUrlServiceClient. Note that all parameters used to create this instance are saved as instance attributes. @@ -42,7 +42,7 @@ def __init__( raise ValueError("Parameter 'credential' must not be None.") if endpoint is None: raise ValueError("Parameter 'endpoint' must not be None.") - super(MultiapiServiceClientConfiguration, self).__init__(**kwargs) + super(MultiapiCustomBaseUrlServiceClientConfiguration, self).__init__(**kwargs) self.credential = credential self.endpoint = endpoint diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/_metadata.json b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/_metadata.json index 53366533d29..1875d1f1511 100644 --- a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/_metadata.json +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/_metadata.json @@ -2,9 +2,9 @@ "chosen_version": "2.0.0", "total_api_version_list": ["2.0.0"], "client": { - "name": "MultiapiServiceClient", - "filename": "_multiapi_service_client", - "description": "Service client for multiapi client testing.", + "name": "MultiapiCustomBaseUrlServiceClient", + "filename": "_multiapi_custom_base_url_service_client", + "description": "Service client for multiapi custom base url testing.", "base_url": null, "custom_base_url": "\u0027{Endpoint}/multiapiCustomBaseUrl/v2\u0027", "azure_arm": false diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/_multiapi_service_client.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/_multiapi_custom_base_url_service_client.py similarity index 80% rename from test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/_multiapi_service_client.py rename to test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/_multiapi_custom_base_url_service_client.py index 5acfb50c4d4..d4fa01eea2c 100644 --- a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/_multiapi_service_client.py +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/_multiapi_custom_base_url_service_client.py @@ -17,13 +17,13 @@ from azure.core.credentials import TokenCredential -from ._configuration import MultiapiServiceClientConfiguration -from .operations import MultiapiServiceClientOperationsMixin +from ._configuration import MultiapiCustomBaseUrlServiceClientConfiguration +from .operations import MultiapiCustomBaseUrlServiceClientOperationsMixin from . import models -class MultiapiServiceClient(MultiapiServiceClientOperationsMixin): - """Service client for multiapi client testing. +class MultiapiCustomBaseUrlServiceClient(MultiapiCustomBaseUrlServiceClientOperationsMixin): + """Service client for multiapi custom base url testing. :param credential: Credential needed for the client to connect to Azure. :type credential: ~azure.core.credentials.TokenCredential @@ -40,7 +40,7 @@ def __init__( ): # type: (...) -> None base_url = '{Endpoint}/multiapiCustomBaseUrl/v2' - self._config = MultiapiServiceClientConfiguration(credential, endpoint, **kwargs) + self._config = MultiapiCustomBaseUrlServiceClientConfiguration(credential, endpoint, **kwargs) self._client = PipelineClient(base_url=base_url, config=self._config, **kwargs) client_models = {k: v for k, v in models.__dict__.items() if isinstance(v, type)} @@ -53,7 +53,7 @@ def close(self): self._client.close() def __enter__(self): - # type: () -> MultiapiServiceClient + # type: () -> MultiapiCustomBaseUrlServiceClient self._client.__enter__() return self diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/aio/__init__.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/aio/__init__.py index ec341e1dd7e..f92dbe9db9a 100644 --- a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/aio/__init__.py +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/aio/__init__.py @@ -6,5 +6,5 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from ._multiapi_service_client_async import MultiapiServiceClient -__all__ = ['MultiapiServiceClient'] +from ._multiapi_custom_base_url_service_client_async import MultiapiCustomBaseUrlServiceClient +__all__ = ['MultiapiCustomBaseUrlServiceClient'] diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/aio/_configuration_async.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/aio/_configuration_async.py index 28c20c03a06..5b570f95a30 100644 --- a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/aio/_configuration_async.py +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/aio/_configuration_async.py @@ -17,8 +17,8 @@ VERSION = "unknown" -class MultiapiServiceClientConfiguration(Configuration): - """Configuration for MultiapiServiceClient. +class MultiapiCustomBaseUrlServiceClientConfiguration(Configuration): + """Configuration for MultiapiCustomBaseUrlServiceClient. Note that all parameters used to create this instance are saved as instance attributes. @@ -39,7 +39,7 @@ def __init__( raise ValueError("Parameter 'credential' must not be None.") if endpoint is None: raise ValueError("Parameter 'endpoint' must not be None.") - super(MultiapiServiceClientConfiguration, self).__init__(**kwargs) + super(MultiapiCustomBaseUrlServiceClientConfiguration, self).__init__(**kwargs) self.credential = credential self.endpoint = endpoint diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/aio/_multiapi_service_client_async.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/aio/_multiapi_custom_base_url_service_client_async.py similarity index 79% rename from test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/aio/_multiapi_service_client_async.py rename to test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/aio/_multiapi_custom_base_url_service_client_async.py index c5cc4fe1391..60dc92b9092 100644 --- a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/aio/_multiapi_service_client_async.py +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/aio/_multiapi_custom_base_url_service_client_async.py @@ -15,13 +15,13 @@ # pylint: disable=unused-import,ungrouped-imports from azure.core.credentials_async import AsyncTokenCredential -from ._configuration_async import MultiapiServiceClientConfiguration -from .operations_async import MultiapiServiceClientOperationsMixin +from ._configuration_async import MultiapiCustomBaseUrlServiceClientConfiguration +from .operations_async import MultiapiCustomBaseUrlServiceClientOperationsMixin from .. import models -class MultiapiServiceClient(MultiapiServiceClientOperationsMixin): - """Service client for multiapi client testing. +class MultiapiCustomBaseUrlServiceClient(MultiapiCustomBaseUrlServiceClientOperationsMixin): + """Service client for multiapi custom base url testing. :param credential: Credential needed for the client to connect to Azure. :type credential: ~azure.core.credentials_async.AsyncTokenCredential @@ -37,7 +37,7 @@ def __init__( **kwargs: Any ) -> None: base_url = '{Endpoint}/multiapiCustomBaseUrl/v2' - self._config = MultiapiServiceClientConfiguration(credential, endpoint, **kwargs) + self._config = MultiapiCustomBaseUrlServiceClientConfiguration(credential, endpoint, **kwargs) self._client = AsyncPipelineClient(base_url=base_url, config=self._config, **kwargs) client_models = {k: v for k, v in models.__dict__.items() if isinstance(v, type)} @@ -48,7 +48,7 @@ def __init__( async def close(self) -> None: await self._client.close() - async def __aenter__(self) -> "MultiapiServiceClient": + async def __aenter__(self) -> "MultiapiCustomBaseUrlServiceClient": await self._client.__aenter__() return self diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/aio/operations_async/__init__.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/aio/operations_async/__init__.py index 9f738e6a2ba..7a556025aa0 100644 --- a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/aio/operations_async/__init__.py +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/aio/operations_async/__init__.py @@ -6,8 +6,8 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from ._multiapi_service_client_operations_async import MultiapiServiceClientOperationsMixin +from ._multiapi_custom_base_url_service_client_operations_async import MultiapiCustomBaseUrlServiceClientOperationsMixin __all__ = [ - 'MultiapiServiceClientOperationsMixin', + 'MultiapiCustomBaseUrlServiceClientOperationsMixin', ] diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/aio/operations_async/_multiapi_service_client_operations_async.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/aio/operations_async/_multiapi_custom_base_url_service_client_operations_async.py similarity index 98% rename from test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/aio/operations_async/_multiapi_service_client_operations_async.py rename to test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/aio/operations_async/_multiapi_custom_base_url_service_client_operations_async.py index f97696a9598..03e199016e7 100644 --- a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/aio/operations_async/_multiapi_service_client_operations_async.py +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/aio/operations_async/_multiapi_custom_base_url_service_client_operations_async.py @@ -17,7 +17,7 @@ T = TypeVar('T') ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] -class MultiapiServiceClientOperationsMixin: +class MultiapiCustomBaseUrlServiceClientOperationsMixin: async def test( self, diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/operations/__init__.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/operations/__init__.py index aaf8cf3bb71..5e6c6df7afb 100644 --- a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/operations/__init__.py +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/operations/__init__.py @@ -6,8 +6,8 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from ._multiapi_service_client_operations import MultiapiServiceClientOperationsMixin +from ._multiapi_custom_base_url_service_client_operations import MultiapiCustomBaseUrlServiceClientOperationsMixin __all__ = [ - 'MultiapiServiceClientOperationsMixin', + 'MultiapiCustomBaseUrlServiceClientOperationsMixin', ] diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/operations/_multiapi_service_client_operations.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/operations/_multiapi_custom_base_url_service_client_operations.py similarity index 97% rename from test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/operations/_multiapi_service_client_operations.py rename to test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/operations/_multiapi_custom_base_url_service_client_operations.py index dbaba4f7bab..a061f78462a 100644 --- a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/operations/_multiapi_service_client_operations.py +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v2/operations/_multiapi_custom_base_url_service_client_operations.py @@ -21,7 +21,7 @@ T = TypeVar('T') ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] -class MultiapiServiceClientOperationsMixin(object): +class MultiapiCustomBaseUrlServiceClientOperationsMixin(object): def test( self, From 7d8592f8e18791b1a66038d25a7bedc99d70abae Mon Sep 17 00:00:00 2001 From: iscai-msft Date: Thu, 16 Jul 2020 17:59:33 -0400 Subject: [PATCH 06/10] switch v1 test to put --- .../_multiapi_custom_base_url_service_client.py | 4 ++-- .../aio/_multiapi_custom_base_url_service_client_async.py | 4 ++-- ...ultiapi_custom_base_url_service_client_operations_async.py | 2 +- .../_multiapi_custom_base_url_service_client_operations.py | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/_multiapi_custom_base_url_service_client.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/_multiapi_custom_base_url_service_client.py index 1181412f046..64d39218088 100644 --- a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/_multiapi_custom_base_url_service_client.py +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/_multiapi_custom_base_url_service_client.py @@ -62,9 +62,9 @@ def __init__( profile=KnownProfiles.default, **kwargs # type: Any ): - if api_version == 'v1': + if api_version == '1.0.0': base_url = '{Endpoint}/multiapiCustomBaseUrl/v1' - elif api_version == 'v2': + elif api_version == '2.0.0': base_url = '{Endpoint}/multiapiCustomBaseUrl/v2' else: raise NotImplementedError("APIVersion {} is not available".format(api_version)) diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/aio/_multiapi_custom_base_url_service_client_async.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/aio/_multiapi_custom_base_url_service_client_async.py index 0b05e72a003..8c8a732560f 100644 --- a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/aio/_multiapi_custom_base_url_service_client_async.py +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/aio/_multiapi_custom_base_url_service_client_async.py @@ -62,9 +62,9 @@ def __init__( profile=KnownProfiles.default, **kwargs # type: Any ) -> None: - if api_version == 'v1': + if api_version == '1.0.0': base_url = '{Endpoint}/multiapiCustomBaseUrl/v1' - elif api_version == 'v2': + elif api_version == '2.0.0': base_url = '{Endpoint}/multiapiCustomBaseUrl/v2' else: raise NotImplementedError("APIVersion {} is not available".format(api_version)) diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/operations_async/_multiapi_custom_base_url_service_client_operations_async.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/operations_async/_multiapi_custom_base_url_service_client_operations_async.py index 10b0b2dd3f6..88d652743c4 100644 --- a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/operations_async/_multiapi_custom_base_url_service_client_operations_async.py +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/aio/operations_async/_multiapi_custom_base_url_service_client_operations_async.py @@ -54,7 +54,7 @@ async def test( # Construct headers header_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) + request = self._client.put(url, query_parameters, header_parameters) pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) response = pipeline_response.http_response diff --git a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/operations/_multiapi_custom_base_url_service_client_operations.py b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/operations/_multiapi_custom_base_url_service_client_operations.py index cba6ef799ba..afcb308968e 100644 --- a/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/operations/_multiapi_custom_base_url_service_client_operations.py +++ b/test/multiapi/Expected/AcceptanceTests/MultiapiCustomBaseUrl/multiapicustombaseurl/v1/operations/_multiapi_custom_base_url_service_client_operations.py @@ -59,7 +59,7 @@ def test( # Construct headers header_parameters = {} # type: Dict[str, Any] - request = self._client.get(url, query_parameters, header_parameters) + request = self._client.put(url, query_parameters, header_parameters) pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) response = pipeline_response.http_response From cc1d9be3ebbc9536b4cb407e4376f6414518216b Mon Sep 17 00:00:00 2001 From: iscai-msft Date: Thu, 16 Jul 2020 18:09:34 -0400 Subject: [PATCH 07/10] fix version checking for custom base url --- autorest/multiapi/__init__.py | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/autorest/multiapi/__init__.py b/autorest/multiapi/__init__.py index 28c03283da0..d687acfbe22 100644 --- a/autorest/multiapi/__init__.py +++ b/autorest/multiapi/__init__.py @@ -124,6 +124,20 @@ def there_is_a_rt_that_contains_api_version(rt_dict, api_version): last_rt_list[operation] = local_last_api_version return last_rt_list +def _extract_version(metadata_json: Dict[str, Any], version_path: Path) -> str: + version = metadata_json['chosen_version'] + total_api_version_list = metadata_json['total_api_version_list'] + if not version: + if total_api_version_list: + sys.exit( + f"Unable to match {total_api_version_list} to label {version_path.stem}" + ) + else: + sys.exit( + f"Unable to extract api version of {version_path.stem}" + ) + return version + class MultiAPI: def __init__( self, @@ -208,7 +222,8 @@ def _build_custom_base_url_to_api_version( for version_path in paths_to_versions: metadata_json = json.loads(self._autorestapi.read_file(version_path / "_metadata.json")) custom_base_url = metadata_json["client"]["custom_base_url"] - custom_base_url_to_api_version.setdefault(custom_base_url, []).append(version_path.name) + version = _extract_version(metadata_json, version_path) + custom_base_url_to_api_version.setdefault(custom_base_url, []).append(version) return custom_base_url_to_api_version def _build_operation_meta( @@ -228,17 +243,7 @@ def _build_operation_meta( for version_path in paths_to_versions: metadata_json = json.loads(self._autorestapi.read_file(version_path / "_metadata.json")) operation_groups = metadata_json['operation_groups'] - version = metadata_json['chosen_version'] - total_api_version_list = metadata_json['total_api_version_list'] - if not version: - if total_api_version_list: - sys.exit( - f"Unable to match {total_api_version_list} to label {version_path.stem}" - ) - else: - sys.exit( - f"Unable to extract api version of {version_path.stem}" - ) + version = _extract_version(metadata_json, version_path) mod_to_api_version[version_path.name] = version for operation_group, operation_group_class_name in operation_groups.items(): versioned_operations_dict[operation_group].append((version_path.name, operation_group_class_name)) From 2a90f4b35e72b71d76f89c273515ed0edec9441c Mon Sep 17 00:00:00 2001 From: iscai-msft Date: Thu, 16 Jul 2020 18:09:42 -0400 Subject: [PATCH 08/10] add tests --- .../test_multiapi_custom_base_url.py | 52 +++++++++++++++++++ .../test_multiapi_custom_base_url.py | 48 +++++++++++++++++ test/multiapi/requirements.txt | 3 +- 3 files changed, 102 insertions(+), 1 deletion(-) create mode 100644 test/multiapi/AcceptanceTests/asynctests/test_multiapi_custom_base_url.py create mode 100644 test/multiapi/AcceptanceTests/test_multiapi_custom_base_url.py diff --git a/test/multiapi/AcceptanceTests/asynctests/test_multiapi_custom_base_url.py b/test/multiapi/AcceptanceTests/asynctests/test_multiapi_custom_base_url.py new file mode 100644 index 00000000000..bb18ecae002 --- /dev/null +++ b/test/multiapi/AcceptanceTests/asynctests/test_multiapi_custom_base_url.py @@ -0,0 +1,52 @@ +# -------------------------------------------------------------------------- +# +# Copyright (c) Microsoft Corporation. All rights reserved. +# +# The MIT License (MIT) +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the ""Software""), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +# IN THE SOFTWARE. +# +# -------------------------------------------------------------------------- +import pytest +from async_generator import yield_, async_generator +from multiapicustombaseurl.aio import MultiapiCustomBaseUrlServiceClient + +@pytest.fixture +@async_generator +async def client(credential, authentication_policy, api_version): + + async with MultiapiCustomBaseUrlServiceClient( + endpoint="http://localhost:3000", + api_version=api_version, + credential=credential, + authentication_policy=authentication_policy + ) as client: + await yield_(client) + +class TestMultiapiCustomBaseUrl(object): + + @pytest.mark.parametrize('api_version', ["1.0.0"]) + @pytest.mark.asyncio + async def test_custom_base_url_version_one(self, client): + await client.test(id=1) + + @pytest.mark.parametrize('api_version', ["2.0.0"]) + @pytest.mark.asyncio + async def test_custom_base_url_version_two(self, client): + await client.test(id=2) \ No newline at end of file diff --git a/test/multiapi/AcceptanceTests/test_multiapi_custom_base_url.py b/test/multiapi/AcceptanceTests/test_multiapi_custom_base_url.py new file mode 100644 index 00000000000..02e7f5c40fa --- /dev/null +++ b/test/multiapi/AcceptanceTests/test_multiapi_custom_base_url.py @@ -0,0 +1,48 @@ +# -------------------------------------------------------------------------- +# +# Copyright (c) Microsoft Corporation. All rights reserved. +# +# The MIT License (MIT) +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the ""Software""), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +# IN THE SOFTWARE. +# +# -------------------------------------------------------------------------- +import pytest +from multiapicustombaseurl import MultiapiCustomBaseUrlServiceClient + +@pytest.fixture +def client(credential, authentication_policy, api_version): + + with MultiapiCustomBaseUrlServiceClient( + endpoint="http://localhost:3000", + api_version=api_version, + credential=credential, + authentication_policy=authentication_policy + ) as client: + yield client + +class TestMultiapiCustomBaseUrl(object): + + @pytest.mark.parametrize('api_version', ["1.0.0"]) + def test_custom_base_url_version_one(self, client): + client.test(id=1) + + @pytest.mark.parametrize('api_version', ["2.0.0"]) + def test_custom_base_url_version_two(self, client): + client.test(id=2) \ No newline at end of file diff --git a/test/multiapi/requirements.txt b/test/multiapi/requirements.txt index ee7b6c0d229..03d461b86cf 100644 --- a/test/multiapi/requirements.txt +++ b/test/multiapi/requirements.txt @@ -10,4 +10,5 @@ aiohttp>=3.0; python_full_version >= '3.5.2' -e ./Expected/AcceptanceTests/MultiapiWithSubmodule -e ./Expected/AcceptanceTests/MultiapiNoAsync -e ./Expected/AcceptanceTests/MultiapiCredentialDefaultPolicy --e ./Expected/AcceptanceTests/MultiapiDataPlane \ No newline at end of file +-e ./Expected/AcceptanceTests/MultiapiDataPlane +-e ./Expected/AcceptanceTests/MultiapiCustomBaseUrl \ No newline at end of file From 6569442c21be6eac56c2b095cb6b884cb4c02627 Mon Sep 17 00:00:00 2001 From: iscai-msft Date: Wed, 22 Jul 2020 14:29:37 -0400 Subject: [PATCH 09/10] update testserver dependency --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 19c6c4a5170..94fb023d55a 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ }, "devDependencies": { "@autorest/autorest": "^3.0.0", - "@microsoft.azure/autorest.testserver": "^2.10.48" + "@microsoft.azure/autorest.testserver": "^2.10.52" }, "files": [ "autorest/**/*.py", From 3fb4e8ab3ebaba4678245ecab32e145a6767ed65 Mon Sep 17 00:00:00 2001 From: iscai-msft Date: Wed, 22 Jul 2020 15:29:24 -0400 Subject: [PATCH 10/10] update testserver dependency again --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 94fb023d55a..a44bebda9db 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ }, "devDependencies": { "@autorest/autorest": "^3.0.0", - "@microsoft.azure/autorest.testserver": "^2.10.52" + "@microsoft.azure/autorest.testserver": "^2.10.53" }, "files": [ "autorest/**/*.py",