diff --git a/eng/swagger_to_sdk_config_v4.json b/eng/swagger_to_sdk_config_v4.json index eeb46999ae52..0dc83ee18df0 100644 --- a/eng/swagger_to_sdk_config_v4.json +++ b/eng/swagger_to_sdk_config_v4.json @@ -7,7 +7,6 @@ "python": "", "python-mode": "update", "sdkrel:python-sdks-folder": "./sdk/.", - "multiapi": "", "keep-version-file" :"", "no-async": "" }, diff --git a/eng/tools/azure-sdk-tools/changelog_generics.md b/eng/tools/azure-sdk-tools/changelog_generics.md index 84ce9c781d15..f206a2b38c14 100644 --- a/eng/tools/azure-sdk-tools/changelog_generics.md +++ b/eng/tools/azure-sdk-tools/changelog_generics.md @@ -41,10 +41,7 @@ In summary, some modules were incorrectly visible/importable and have been renam Last but not least, HTTP connection pooling is now enabled by default. You should always use a client as a context manager, or call close(), or use no more than one client per process. -# Autorest v3 to v4, if the package is multiapi - - -## General Breaking changes +# Breaking changes in generated packages This version uses a next-generation code generator that *might* introduce breaking changes if you were importing from the v20xx_yy_zz API folders. In summary, some modules were incorrectly visible/importable and have been renamed. This fixed several issues caused by usage of classes that were not supposed to be used in the first place. diff --git a/eng/tools/azure-sdk-tools/packaging_tools/package_utils.py b/eng/tools/azure-sdk-tools/packaging_tools/package_utils.py index 589760fa7093..133e141bdb0d 100644 --- a/eng/tools/azure-sdk-tools/packaging_tools/package_utils.py +++ b/eng/tools/azure-sdk-tools/packaging_tools/package_utils.py @@ -77,13 +77,12 @@ def change_log_generate( *, last_stable_release: Optional[str] = None, prefolder: Optional[str] = None, - is_multiapi: bool = False, ): if not last_version: return "### Other Changes\n\n - Initial version" # try new changelog tool - if prefolder and not is_multiapi: + if prefolder: try: tox_cache_path = Path(prefolder, package_name, ".tox") if tox_cache_path.exists(): diff --git a/eng/tools/azure-sdk-tools/packaging_tools/templates/multiapi_combiner/client.py.jinja2 b/eng/tools/azure-sdk-tools/packaging_tools/templates/multiapi_combiner/client.py.jinja2 deleted file mode 100644 index 3400663ef6ef..000000000000 --- a/eng/tools/azure-sdk-tools/packaging_tools/templates/multiapi_combiner/client.py.jinja2 +++ /dev/null @@ -1,42 +0,0 @@ -{% set def = "async def" if async_mode else "def" %} -{% set a_prefix = "a" if async_mode else "" %} -{% set await = "await " if async_mode else "" %} -{% set generated_client = code_model.client.generated_class(async_mode) %} -{{ imports }} -from .operations import ( - {% for operation_group in code_model.operation_groups %} - {{ operation_group.name }}, - {% endfor %} -) -from {{ ".." if async_mode else "." }}_validation import api_version_validation -from {{ ".." if async_mode else "." }} import models -{{ client_initialization }} - - @classmethod - def _models_dict(cls): - return {k: v for k, v in models.__dict__.items() if isinstance(v, type)} - -{% for operation_group in operation_group_properties %} - - @property - {% if operation_group.need_decorator %} - {{ operation_group.decorator | indent }} - {% endif %} - def {{ operation_group.property_name }}(self): - api_version = self._get_api_version("{{ operation_group.property_name }}") - return {{ operation_group.name }}( - self._client, - self._config, - Serializer(self._models_dict()), - Deserializer(self._models_dict()), - api_version=api_version, - ) - {% endfor %} - - {{ def }} close(self): - {{ await }}self._client.close() - {{ def }} __{{ a_prefix }}enter__(self): - {{ await }}self._client.__{{ a_prefix }}enter__() - return self - {{ def }} __{{ a_prefix }}exit__(self, *exc_details): - {{ await }}self._client.__{{ a_prefix }}exit__(*exc_details) diff --git a/eng/tools/azure-sdk-tools/packaging_tools/templates/multiapi_combiner/enums.py.jinja2 b/eng/tools/azure-sdk-tools/packaging_tools/templates/multiapi_combiner/enums.py.jinja2 deleted file mode 100644 index dbc6be4320dd..000000000000 --- a/eng/tools/azure-sdk-tools/packaging_tools/templates/multiapi_combiner/enums.py.jinja2 +++ /dev/null @@ -1,5 +0,0 @@ -{{ imports }} - -{% for enum in code_model.enums %} -{{ enum.source_code }} -{% endfor %} diff --git a/eng/tools/azure-sdk-tools/packaging_tools/templates/multiapi_combiner/models.py.jinja2 b/eng/tools/azure-sdk-tools/packaging_tools/templates/multiapi_combiner/models.py.jinja2 deleted file mode 100644 index 1b7278bd9727..000000000000 --- a/eng/tools/azure-sdk-tools/packaging_tools/templates/multiapi_combiner/models.py.jinja2 +++ /dev/null @@ -1,5 +0,0 @@ -{{ imports }} - -{% for model in code_model.models.values() %} -{{ model.source_code }} -{% endfor %} diff --git a/eng/tools/azure-sdk-tools/packaging_tools/templates/multiapi_combiner/models_init.py.jinja2 b/eng/tools/azure-sdk-tools/packaging_tools/templates/multiapi_combiner/models_init.py.jinja2 deleted file mode 100644 index 4134aadcdabb..000000000000 --- a/eng/tools/azure-sdk-tools/packaging_tools/templates/multiapi_combiner/models_init.py.jinja2 +++ /dev/null @@ -1,37 +0,0 @@ -# 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. -# -------------------------------------------------------------------------- -{% if code_model.models %} -from ._models import ( - {% for model in code_model.models.keys() %} - {{ model }}, - {% endfor %} -) -{% endif %} - -{% if code_model.enums %} -from ._enums import ( - {% for enum in code_model.enums %} - {{ enum.name }}, - {% endfor %} -) -{% endif %} - -from ._patch import __all__ as _patch_all -from ._patch import * # pylint: disable=unused-wildcard-import -from ._patch import patch_sdk as _patch_sdk - -__all__ = [ -{% for model in code_model.models.keys() %} - "{{ model }}", -{% endfor %} -{% for enum in code_model.enums %} - "{{ enum.name }}", -{% endfor %} -] -__all__.extend([p for p in _patch_all if p not in __all__]) -_patch_sdk() diff --git a/eng/tools/azure-sdk-tools/packaging_tools/templates/multiapi_combiner/operation.py.jinja2 b/eng/tools/azure-sdk-tools/packaging_tools/templates/multiapi_combiner/operation.py.jinja2 deleted file mode 100644 index 1e43caaf3993..000000000000 --- a/eng/tools/azure-sdk-tools/packaging_tools/templates/multiapi_combiner/operation.py.jinja2 +++ /dev/null @@ -1,7 +0,0 @@ -{% if operation.need_decorator %} -{{ operation.decorator }} -{% endif %} -{{ operation.source_code(async_mode) }} -{% if operation.metadata %} - {{ operation.name }}.metadata = {{ operation.metadata }} -{% endif %} \ No newline at end of file diff --git a/eng/tools/azure-sdk-tools/packaging_tools/templates/multiapi_combiner/operation_group.py.jinja2 b/eng/tools/azure-sdk-tools/packaging_tools/templates/multiapi_combiner/operation_group.py.jinja2 deleted file mode 100644 index d0b87e5db471..000000000000 --- a/eng/tools/azure-sdk-tools/packaging_tools/templates/multiapi_combiner/operation_group.py.jinja2 +++ /dev/null @@ -1,28 +0,0 @@ -{% for operation in operation_group.operations %} - {% if operation.request_builder and not async_mode %} -{{ operation.request_builder }} - {% endif %} -{% endfor %} -class {{ operation_group.name }}{{ "(" + operation_group.name.replace("Operations", "") + "ABC)" if operation_group.is_mixin else "" }}: -{% if not operation_group.is_mixin %} - """ - {{ operation_group.doc(async_mode) }} - """ - models = _models - - def __init__(self, *args, **kwargs): - input_args = list(args) - self._client = input_args.pop(0) if input_args else kwargs.pop("client") - self._config = input_args.pop(0) if input_args else kwargs.pop("config") - self._serialize = input_args.pop(0) if input_args else kwargs.pop("serializer") - self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer") - self._api_version = input_args.pop(0) if input_args else kwargs.pop("api_version") -{% else %} - def _api_version(self, op_name: str) -> str: - return self._get_api_version(op_name) - -{% endif %} - {% for operation in operation_group.operations %} - {% include "operation.py.jinja2" %} - - {% endfor %} diff --git a/eng/tools/azure-sdk-tools/packaging_tools/templates/multiapi_combiner/operation_groups.py.jinja2 b/eng/tools/azure-sdk-tools/packaging_tools/templates/multiapi_combiner/operation_groups.py.jinja2 deleted file mode 100644 index 223a941be24a..000000000000 --- a/eng/tools/azure-sdk-tools/packaging_tools/templates/multiapi_combiner/operation_groups.py.jinja2 +++ /dev/null @@ -1,13 +0,0 @@ -{{ imports }} -{% if async_mode %} -{% for operation_group in code_model.operation_groups %} - {% for operation in operation_group.operations %} - {% if operation.api_versions[-1] != code_model.sorted_api_versions[-1] and operation.request_builder_name %} -from ...operations._operations import {{ operation.request_builder_name }} - {% endif %} - {% endfor %} -{% endfor %} -{% endif %} -{% for operation_group in code_model.operation_groups %} -{% include "operation_group.py.jinja2" %} -{% endfor %} \ No newline at end of file diff --git a/eng/tools/azure-sdk-tools/packaging_tools/templates/multiapi_combiner/operations_init.py.jinja2 b/eng/tools/azure-sdk-tools/packaging_tools/templates/multiapi_combiner/operations_init.py.jinja2 deleted file mode 100644 index 177ea232c0f8..000000000000 --- a/eng/tools/azure-sdk-tools/packaging_tools/templates/multiapi_combiner/operations_init.py.jinja2 +++ /dev/null @@ -1,24 +0,0 @@ -# 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 ._operations import ( -{% for operation_group in code_model.operation_groups %} - {{ operation_group.name }}, -{% endfor %} -) - -from ._patch import __all__ as _patch_all -from ._patch import * # pylint: disable=unused-wildcard-import -from ._patch import patch_sdk as _patch_sdk - -__all__ = [ -{% for operation_group in code_model.operation_groups %} - "{{ operation_group.name }}", -{% endfor %} -] -__all__.extend([p for p in _patch_all if p not in __all__]) -_patch_sdk() diff --git a/eng/tools/azure-sdk-tools/packaging_tools/templates/multiapi_combiner/validation.py.jinja2 b/eng/tools/azure-sdk-tools/packaging_tools/templates/multiapi_combiner/validation.py.jinja2 deleted file mode 100644 index e5cf60c89148..000000000000 --- a/eng/tools/azure-sdk-tools/packaging_tools/templates/multiapi_combiner/validation.py.jinja2 +++ /dev/null @@ -1,49 +0,0 @@ -# -------------------------------------------------------------------------- -# 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) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -import functools - - -def api_version_validation(**kwargs): - params_valid_on = kwargs.pop("params_valid_on", {}) - method_valid_on = kwargs.pop("method_valid_on", {}) - - def decorator(func): - @functools.wraps(func) - def wrapper(*args, **kwargs): - func_name = func.__name__ - try: - client = args[0] - client_api_version = client._get_api_version(func_name) # pylint: disable=protected-access - except AttributeError: - client_api_version = client._api_version # pylint: disable=protected-access - - if method_valid_on and client_api_version not in method_valid_on: - raise ValueError( - f"'{func_name}' is not available in API version " - f"{client_api_version}. All valid API version are {', '.join(method_valid_on)}." - ) - - unsupported = { - parameter: ", ".join(api_versions) - for parameter, api_versions in params_valid_on.items() - if parameter in kwargs and client_api_version not in api_versions - } - if unsupported: - raise ValueError( - "".join( - [ - f"'{param}' is not available in API version {client_api_version}. " - f"All valid API version are {versions} \n" - for param, versions in unsupported.items() - ] - ) - ) - return func(*args, **kwargs) - - return wrapper - - return decorator diff --git a/eng/tools/azure-sdk-tools/pyproject.toml b/eng/tools/azure-sdk-tools/pyproject.toml index 1dca97acbae4..600a4772b562 100644 --- a/eng/tools/azure-sdk-tools/pyproject.toml +++ b/eng/tools/azure-sdk-tools/pyproject.toml @@ -33,7 +33,7 @@ dependencies = [ generate_package = "packaging_tools.generate_package:generate_main" generate_sdk = "packaging_tools.generate_sdk:generate_main" generate_client = "packaging_tools.generate_client:generate_main" -multiapi_combiner = "packaging_tools.multiapi_combiner:combine" + perfstress = "devtools_testutils.perfstress_tests:run_perfstress_cmd" perfstressdebug = "devtools_testutils.perfstress_tests:run_perfstress_debug_cmd" sdk_generator = "packaging_tools.sdk_generator:generate_main" diff --git a/eng/tools/azure-sdk-tools/tests/test_servicemetadata.py b/eng/tools/azure-sdk-tools/tests/test_servicemetadata.py index cf61fcef4bbb..11d1edbdecec 100644 --- a/eng/tools/azure-sdk-tools/tests/test_servicemetadata.py +++ b/eng/tools/azure-sdk-tools/tests/test_servicemetadata.py @@ -42,7 +42,6 @@ def setUp(self): "python": "", "python-mode": "update", "sdkrel:python-sdks-folder": "./sdk/.", - "multiapi": "", "track2": "", }, "advanced_options": {