From 8f2e7163b0c52f92018939463f702c781688c7cc Mon Sep 17 00:00:00 2001 From: iscai-msft Date: Mon, 20 Jul 2020 18:16:27 -0400 Subject: [PATCH 1/3] if package name exists, use that for the setup file's name --- autorest/codegen/templates/setup.py.jinja2 | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/autorest/codegen/templates/setup.py.jinja2 b/autorest/codegen/templates/setup.py.jinja2 index 564ff4b716c..77058c0070c 100644 --- a/autorest/codegen/templates/setup.py.jinja2 +++ b/autorest/codegen/templates/setup.py.jinja2 @@ -1,10 +1,11 @@ +{% set name = code_model.options["package_name"] or code_model.class_name %} # coding=utf-8 {{ code_model.options['license_header'] }} # coding: utf-8 from setuptools import setup, find_packages -NAME = "{{ code_model.class_name|lower }}" +NAME = "{{ name|lower }}" VERSION = "{{ code_model.options.get('package_version', '0.0.0') }}" # To install the library, run the following @@ -19,7 +20,7 @@ REQUIRES = ["msrest>=0.6.0", "azure-core<2.0.0,>=1.2.0"] setup( name=NAME, version=VERSION, - description="{{ code_model.class_name }}", + description="{{ name }}", author_email="", url="", keywords=["Swagger", "{{ code_model.class_name }}"], From e475ebf895fde8219acd2a4710f2fb5b9907ea08 Mon Sep 17 00:00:00 2001 From: iscai-msft Date: Mon, 20 Jul 2020 18:16:39 -0400 Subject: [PATCH 2/3] add test --- tasks.py | 23 ++ .../bodybytewithpackagename/__init__.py | 19 ++ .../bodybytewithpackagename/_class_name.py | 61 ++++ .../bodybytewithpackagename/_configuration.py | 51 ++++ .../bodybytewithpackagename/_version.py | 9 + .../bodybytewithpackagename/aio/__init__.py | 10 + .../aio/_class_name_async.py | 53 ++++ .../aio/_configuration_async.py | 45 +++ .../aio/operations_async/__init__.py | 13 + .../_byte_operations_async.py | 261 +++++++++++++++++ .../models/__init__.py | 16 ++ .../bodybytewithpackagename/models/_models.py | 33 +++ .../models/_models_py3.py | 38 +++ .../operations/__init__.py | 13 + .../operations/_byte_operations.py | 270 ++++++++++++++++++ .../bodybytewithpackagename/py.typed | 1 + .../BodyByteWithPackageName/setup.py | 37 +++ 17 files changed, 953 insertions(+) create mode 100644 test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/__init__.py create mode 100644 test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/_class_name.py create mode 100644 test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/_configuration.py create mode 100644 test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/_version.py create mode 100644 test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/aio/__init__.py create mode 100644 test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/aio/_class_name_async.py create mode 100644 test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/aio/_configuration_async.py create mode 100644 test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/aio/operations_async/__init__.py create mode 100644 test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/aio/operations_async/_byte_operations_async.py create mode 100644 test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/models/__init__.py create mode 100644 test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/models/_models.py create mode 100644 test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/models/_models_py3.py create mode 100644 test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/operations/__init__.py create mode 100644 test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/operations/_byte_operations.py create mode 100644 test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/py.typed create mode 100644 test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/setup.py diff --git a/tasks.py b/tasks.py index 5189d973b30..975bb41258e 100644 --- a/tasks.py +++ b/tasks.py @@ -149,6 +149,10 @@ def regen_expected(c, opts, debug): args.append(f"--override-info.description={opts['override-info.description']}") if opts.get('credential-default-policy-type'): args.append(f"--credential-default-policy-type={opts['credential-default-policy-type']}") + if opts.get('package-name'): + args.append(f"--package-name={opts['package-name']}") + if opts.get('override-client-name'): + args.append(f"--override-client-name={opts['override-client-name']}") cmd_line = '{} {}'.format(_AUTOREST_CMD_LINE, " ".join(args)) print(Fore.YELLOW + f'Queuing up: {cmd_line}') @@ -262,6 +266,24 @@ def regenerate_credential_default_policy(c, debug=False): } regen_expected(c, opts, debug) +@task +def regenerate_package_name_setup_py(c, debug=False): + default_mapping = {'AcceptanceTests/BodyByteWithPackageName': 'body-byte.json'} + opts = { + 'output_base_dir': 'test/vanilla', + 'input_base_dir': swagger_dir, + 'mappings': default_mapping, + 'output_dir': 'Expected', + 'flattening_threshold': '1', + 'vanilla': True, + 'keep_version': True, + 'ns_prefix': True, + 'package-name': 'package-name', + 'override-client-name': 'class_name' + } + regen_expected(c, opts, debug) + + @task def regenerate(c, swagger_name=None, debug=False): # regenerate expected code for tests @@ -272,6 +294,7 @@ def regenerate(c, swagger_name=None, debug=False): regenerate_namespace_folders_test(c, debug) regenerate_multiapi(c, debug) regenerate_credential_default_policy(c, debug) + regenerate_package_name_setup_py(c, debug) @task diff --git a/test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/__init__.py b/test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/__init__.py new file mode 100644 index 00000000000..f03c2670846 --- /dev/null +++ b/test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/__init__.py @@ -0,0 +1,19 @@ +# 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 ._class_name import ClassName +from ._version import VERSION + +__version__ = VERSION +__all__ = ['ClassName'] + +try: + from ._patch import patch_sdk # type: ignore + patch_sdk() +except ImportError: + pass diff --git a/test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/_class_name.py b/test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/_class_name.py new file mode 100644 index 00000000000..85cc8c41e92 --- /dev/null +++ b/test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/_class_name.py @@ -0,0 +1,61 @@ +# 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, Optional + +from ._configuration import ClassNameConfiguration +from .operations import ByteOperations +from . import models + + +class ClassName(object): + """Test Infrastructure for AutoRest Swagger BAT. + + :ivar byte: ByteOperations operations + :vartype byte: bodybytewithpackagename.operations.ByteOperations + :param str base_url: Service URL + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + """ + + def __init__( + self, + base_url=None, # type: Optional[str] + **kwargs # type: Any + ): + # type: (...) -> None + if not base_url: + base_url = 'http://localhost:3000' + self._config = ClassNameConfiguration(**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) + + self.byte = ByteOperations( + self._client, self._config, self._serialize, self._deserialize) + + def close(self): + # type: () -> None + self._client.close() + + def __enter__(self): + # type: () -> ClassName + self._client.__enter__() + return self + + def __exit__(self, *exc_details): + # type: (Any) -> None + self._client.__exit__(*exc_details) diff --git a/test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/_configuration.py b/test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/_configuration.py new file mode 100644 index 00000000000..70d4e612562 --- /dev/null +++ b/test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/_configuration.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 typing import TYPE_CHECKING + +from azure.core.configuration import Configuration +from azure.core.pipeline import policies + +from ._version import VERSION + +if TYPE_CHECKING: + # pylint: disable=unused-import,ungrouped-imports + from typing import Any + + +class ClassNameConfiguration(Configuration): + """Configuration for ClassName. + + Note that all parameters used to create this instance are saved as instance + attributes. + """ + + def __init__( + self, + **kwargs # type: Any + ): + # type: (...) -> None + super(ClassNameConfiguration, self).__init__(**kwargs) + + kwargs.setdefault('sdk_moniker', 'package-name/{}'.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') diff --git a/test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/_version.py b/test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/_version.py new file mode 100644 index 00000000000..eae7c95b6fb --- /dev/null +++ b/test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/_version.py @@ -0,0 +1,9 @@ +# 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. +# -------------------------------------------------------------------------- + +VERSION = "0.1.0" diff --git a/test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/aio/__init__.py b/test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/aio/__init__.py new file mode 100644 index 00000000000..179f11a5c9c --- /dev/null +++ b/test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/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 ._class_name_async import ClassName +__all__ = ['ClassName'] diff --git a/test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/aio/_class_name_async.py b/test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/aio/_class_name_async.py new file mode 100644 index 00000000000..070805d75cf --- /dev/null +++ b/test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/aio/_class_name_async.py @@ -0,0 +1,53 @@ +# 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, Optional + +from azure.core import AsyncPipelineClient +from msrest import Deserializer, Serializer + +from ._configuration_async import ClassNameConfiguration +from .operations_async import ByteOperations +from .. import models + + +class ClassName(object): + """Test Infrastructure for AutoRest Swagger BAT. + + :ivar byte: ByteOperations operations + :vartype byte: bodybytewithpackagename.aio.operations_async.ByteOperations + :param str base_url: Service URL + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + """ + + def __init__( + self, + base_url: Optional[str] = None, + **kwargs: Any + ) -> None: + if not base_url: + base_url = 'http://localhost:3000' + self._config = ClassNameConfiguration(**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) + + self.byte = ByteOperations( + self._client, self._config, self._serialize, self._deserialize) + + async def close(self) -> None: + await self._client.close() + + async def __aenter__(self) -> "ClassName": + await self._client.__aenter__() + return self + + async def __aexit__(self, *exc_details) -> None: + await self._client.__aexit__(*exc_details) diff --git a/test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/aio/_configuration_async.py b/test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/aio/_configuration_async.py new file mode 100644 index 00000000000..4b1010f8df8 --- /dev/null +++ b/test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/aio/_configuration_async.py @@ -0,0 +1,45 @@ +# 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 ClassNameConfiguration(Configuration): + """Configuration for ClassName. + + Note that all parameters used to create this instance are saved as instance + attributes. + """ + + def __init__( + self, + **kwargs: Any + ) -> None: + super(ClassNameConfiguration, self).__init__(**kwargs) + + kwargs.setdefault('sdk_moniker', 'package-name/{}'.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') diff --git a/test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/aio/operations_async/__init__.py b/test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/aio/operations_async/__init__.py new file mode 100644 index 00000000000..47b0dddb1c2 --- /dev/null +++ b/test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/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 ._byte_operations_async import ByteOperations + +__all__ = [ + 'ByteOperations', +] diff --git a/test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/aio/operations_async/_byte_operations_async.py b/test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/aio/operations_async/_byte_operations_async.py new file mode 100644 index 00000000000..2a4ffe58d07 --- /dev/null +++ b/test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/aio/operations_async/_byte_operations_async.py @@ -0,0 +1,261 @@ +# 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 azure.core.tracing.decorator_async import distributed_trace_async + +from ... import models + +T = TypeVar('T') +ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] + +class ByteOperations: + """ByteOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~bodybytewithpackagename.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace_async + async def get_null( + self, + **kwargs + ) -> bytearray: + """Get null byte value. + + :keyword callable cls: A custom type or function that will be passed the direct response + :return: bytearray, or the result of cls(response) + :rtype: bytearray + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[bytearray] + error_map = {404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop('error_map', {})) + + # Construct URL + url = self.get_null.metadata['url'] # type: ignore + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = 'application/json' + + 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 + + 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) + + deserialized = self._deserialize('bytearray', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + get_null.metadata = {'url': '/byte/null'} # type: ignore + + @distributed_trace_async + async def get_empty( + self, + **kwargs + ) -> bytearray: + """Get empty byte value ''. + + :keyword callable cls: A custom type or function that will be passed the direct response + :return: bytearray, or the result of cls(response) + :rtype: bytearray + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[bytearray] + error_map = {404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop('error_map', {})) + + # Construct URL + url = self.get_empty.metadata['url'] # type: ignore + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = 'application/json' + + 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 + + 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) + + deserialized = self._deserialize('bytearray', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + get_empty.metadata = {'url': '/byte/empty'} # type: ignore + + @distributed_trace_async + async def get_non_ascii( + self, + **kwargs + ) -> bytearray: + """Get non-ascii byte string hex(FF FE FD FC FB FA F9 F8 F7 F6). + + :keyword callable cls: A custom type or function that will be passed the direct response + :return: bytearray, or the result of cls(response) + :rtype: bytearray + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[bytearray] + error_map = {404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop('error_map', {})) + + # Construct URL + url = self.get_non_ascii.metadata['url'] # type: ignore + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = 'application/json' + + 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 + + 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) + + deserialized = self._deserialize('bytearray', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + get_non_ascii.metadata = {'url': '/byte/nonAscii'} # type: ignore + + @distributed_trace_async + async def put_non_ascii( + self, + byte_body: bytearray, + **kwargs + ) -> None: + """Put non-ascii byte string hex(FF FE FD FC FB FA F9 F8 F7 F6). + + :param byte_body: Base64-encoded non-ascii byte string hex(FF FE FD FC FB FA F9 F8 F7 F6). + :type byte_body: bytearray + :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', {})) + content_type = kwargs.pop("content_type", "application/json") + + # Construct URL + url = self.put_non_ascii.metadata['url'] # type: ignore + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(byte_body, 'bytearray') + body_content_kwargs['content'] = body_content + request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) + + 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, {}) + + put_non_ascii.metadata = {'url': '/byte/nonAscii'} # type: ignore + + @distributed_trace_async + async def get_invalid( + self, + **kwargs + ) -> bytearray: + """Get invalid byte value ':::SWAGGER::::'. + + :keyword callable cls: A custom type or function that will be passed the direct response + :return: bytearray, or the result of cls(response) + :rtype: bytearray + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[bytearray] + error_map = {404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop('error_map', {})) + + # Construct URL + url = self.get_invalid.metadata['url'] # type: ignore + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = 'application/json' + + 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 + + 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) + + deserialized = self._deserialize('bytearray', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + get_invalid.metadata = {'url': '/byte/invalid'} # type: ignore diff --git a/test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/models/__init__.py b/test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/models/__init__.py new file mode 100644 index 00000000000..9c7dad4f9d3 --- /dev/null +++ b/test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/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/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/models/_models.py b/test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/models/_models.py new file mode 100644 index 00000000000..ae542355b88 --- /dev/null +++ b/test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/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/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/models/_models_py3.py b/test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/models/_models_py3.py new file mode 100644 index 00000000000..443ed73ab7e --- /dev/null +++ b/test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/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/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/operations/__init__.py b/test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/operations/__init__.py new file mode 100644 index 00000000000..749f4f28fc2 --- /dev/null +++ b/test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/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 ._byte_operations import ByteOperations + +__all__ = [ + 'ByteOperations', +] diff --git a/test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/operations/_byte_operations.py b/test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/operations/_byte_operations.py new file mode 100644 index 00000000000..072dbd4faad --- /dev/null +++ b/test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/operations/_byte_operations.py @@ -0,0 +1,270 @@ +# 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 azure.core.tracing.decorator import distributed_trace + +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 ByteOperations(object): + """ByteOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~bodybytewithpackagename.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + @distributed_trace + def get_null( + self, + **kwargs # type: Any + ): + # type: (...) -> bytearray + """Get null byte value. + + :keyword callable cls: A custom type or function that will be passed the direct response + :return: bytearray, or the result of cls(response) + :rtype: bytearray + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[bytearray] + error_map = {404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop('error_map', {})) + + # Construct URL + url = self.get_null.metadata['url'] # type: ignore + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = 'application/json' + + request = self._client.get(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) + + deserialized = self._deserialize('bytearray', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + get_null.metadata = {'url': '/byte/null'} # type: ignore + + @distributed_trace + def get_empty( + self, + **kwargs # type: Any + ): + # type: (...) -> bytearray + """Get empty byte value ''. + + :keyword callable cls: A custom type or function that will be passed the direct response + :return: bytearray, or the result of cls(response) + :rtype: bytearray + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[bytearray] + error_map = {404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop('error_map', {})) + + # Construct URL + url = self.get_empty.metadata['url'] # type: ignore + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = 'application/json' + + request = self._client.get(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) + + deserialized = self._deserialize('bytearray', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + get_empty.metadata = {'url': '/byte/empty'} # type: ignore + + @distributed_trace + def get_non_ascii( + self, + **kwargs # type: Any + ): + # type: (...) -> bytearray + """Get non-ascii byte string hex(FF FE FD FC FB FA F9 F8 F7 F6). + + :keyword callable cls: A custom type or function that will be passed the direct response + :return: bytearray, or the result of cls(response) + :rtype: bytearray + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[bytearray] + error_map = {404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop('error_map', {})) + + # Construct URL + url = self.get_non_ascii.metadata['url'] # type: ignore + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = 'application/json' + + request = self._client.get(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) + + deserialized = self._deserialize('bytearray', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + get_non_ascii.metadata = {'url': '/byte/nonAscii'} # type: ignore + + @distributed_trace + def put_non_ascii( + self, + byte_body, # type: bytearray + **kwargs # type: Any + ): + # type: (...) -> None + """Put non-ascii byte string hex(FF FE FD FC FB FA F9 F8 F7 F6). + + :param byte_body: Base64-encoded non-ascii byte string hex(FF FE FD FC FB FA F9 F8 F7 F6). + :type byte_body: bytearray + :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', {})) + content_type = kwargs.pop("content_type", "application/json") + + # Construct URL + url = self.put_non_ascii.metadata['url'] # type: ignore + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(byte_body, 'bytearray') + body_content_kwargs['content'] = body_content + request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) + + 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, {}) + + put_non_ascii.metadata = {'url': '/byte/nonAscii'} # type: ignore + + @distributed_trace + def get_invalid( + self, + **kwargs # type: Any + ): + # type: (...) -> bytearray + """Get invalid byte value ':::SWAGGER::::'. + + :keyword callable cls: A custom type or function that will be passed the direct response + :return: bytearray, or the result of cls(response) + :rtype: bytearray + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[bytearray] + error_map = {404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop('error_map', {})) + + # Construct URL + url = self.get_invalid.metadata['url'] # type: ignore + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = 'application/json' + + request = self._client.get(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) + + deserialized = self._deserialize('bytearray', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + get_invalid.metadata = {'url': '/byte/invalid'} # type: ignore diff --git a/test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/py.typed b/test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/py.typed new file mode 100644 index 00000000000..e5aff4f83af --- /dev/null +++ b/test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/bodybytewithpackagename/py.typed @@ -0,0 +1 @@ +# Marker file for PEP 561. \ No newline at end of file diff --git a/test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/setup.py b/test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/setup.py new file mode 100644 index 00000000000..3e0e54efe52 --- /dev/null +++ b/test/vanilla/Expected/AcceptanceTests/BodyByteWithPackageName/setup.py @@ -0,0 +1,37 @@ +# 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. +# -------------------------------------------------------------------------- +# coding: utf-8 + +from setuptools import setup, find_packages + +NAME = "package-name" +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="package-name", + author_email="", + url="", + keywords=["Swagger", "ClassName"], + install_requires=REQUIRES, + packages=find_packages(), + include_package_data=True, + long_description="""\ + Test Infrastructure for AutoRest Swagger BAT. + """ +) From 217ce108e90f3dbc192f478f50b4b09dc08bf206 Mon Sep 17 00:00:00 2001 From: iscai-msft Date: Mon, 20 Jul 2020 18:22:00 -0400 Subject: [PATCH 3/3] update changelog --- ChangeLog.md | 1 + 1 file changed, 1 insertion(+) diff --git a/ChangeLog.md b/ChangeLog.md index 64243819970..5f8dfb65c0a 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -9,6 +9,7 @@ Modelerfour version: 4.15.378 - Correctly have default behavior of csv for array query parameters when collection format is not specified in the swagger (taken from m4 update - perks PR #118) - Fix bug when generating parameters with client default value and constant schema #707 +- Fix name in setup.py to default to `package-name` if set #721 ### 2020-07-07 - 5.1.0-preview.4 Modelerfour version: 4.15.378