@typespec/http-client-python 0.13.0-dev.1 → 0.13.0-dev.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/emitter/types.d.ts.map +1 -1
- package/dist/emitter/types.js +12 -5
- package/dist/emitter/types.js.map +1 -1
- package/emitter/src/types.ts +14 -7
- package/emitter/temp/tsconfig.tsbuildinfo +1 -1
- package/eng/scripts/setup/__pycache__/package_manager.cpython-39.pyc +0 -0
- package/eng/scripts/setup/__pycache__/venvtools.cpython-39.pyc +0 -0
- package/eng/scripts/setup/build_pygen_wheel.py +9 -10
- package/eng/scripts/setup/install.py +13 -17
- package/eng/scripts/setup/package_manager.py +139 -0
- package/eng/scripts/setup/prepare.py +4 -12
- package/eng/scripts/setup/venvtools.py +1 -42
- package/generator/build/lib/pygen/__init__.py +176 -2
- package/generator/build/lib/pygen/black.py +1 -1
- package/generator/build/lib/pygen/codegen/__init__.py +4 -256
- package/generator/build/lib/pygen/codegen/_utils.py +0 -3
- package/generator/build/lib/pygen/codegen/models/__init__.py +1 -1
- package/generator/build/lib/pygen/codegen/models/base_builder.py +1 -1
- package/generator/build/lib/pygen/codegen/models/client.py +12 -12
- package/generator/build/lib/pygen/codegen/models/code_model.py +10 -9
- package/generator/build/lib/pygen/codegen/models/enum_type.py +4 -4
- package/generator/build/lib/pygen/codegen/models/imports.py +1 -1
- package/generator/build/lib/pygen/codegen/models/list_type.py +6 -6
- package/generator/build/lib/pygen/codegen/models/lro_operation.py +1 -1
- package/generator/build/lib/pygen/codegen/models/operation.py +16 -16
- package/generator/build/lib/pygen/codegen/models/operation_group.py +4 -4
- package/generator/build/lib/pygen/codegen/models/paging_operation.py +4 -4
- package/generator/build/lib/pygen/codegen/models/parameter.py +8 -8
- package/generator/build/lib/pygen/codegen/models/property.py +7 -1
- package/generator/build/lib/pygen/codegen/models/request_builder.py +2 -2
- package/generator/build/lib/pygen/codegen/models/request_builder_parameter.py +2 -2
- package/generator/build/lib/pygen/codegen/models/response.py +3 -3
- package/generator/build/lib/pygen/codegen/serializers/__init__.py +27 -28
- package/generator/build/lib/pygen/codegen/serializers/builder_serializer.py +31 -31
- package/generator/build/lib/pygen/codegen/serializers/client_serializer.py +4 -4
- package/generator/build/lib/pygen/codegen/serializers/general_serializer.py +4 -4
- package/generator/build/lib/pygen/codegen/serializers/metadata_serializer.py +1 -1
- package/generator/build/lib/pygen/codegen/serializers/model_serializer.py +1 -1
- package/generator/build/lib/pygen/codegen/serializers/operations_init_serializer.py +1 -1
- package/generator/build/lib/pygen/codegen/serializers/sample_serializer.py +1 -1
- package/generator/build/lib/pygen/codegen/serializers/test_serializer.py +5 -5
- package/generator/build/lib/pygen/codegen/templates/config.py.jinja2 +1 -1
- package/generator/build/lib/pygen/codegen/templates/config_container.py.jinja2 +1 -1
- package/generator/build/lib/pygen/codegen/templates/conftest.py.jinja2 +1 -1
- package/generator/build/lib/pygen/codegen/templates/init.py.jinja2 +1 -1
- package/generator/build/lib/pygen/codegen/templates/metadata.json.jinja2 +2 -2
- package/generator/build/lib/pygen/codegen/templates/model_dpg.py.jinja2 +2 -2
- package/generator/build/lib/pygen/codegen/templates/operation_group.py.jinja2 +1 -1
- package/generator/build/lib/pygen/codegen/templates/operation_groups_container.py.jinja2 +1 -1
- package/generator/build/lib/pygen/codegen/templates/operation_tools.jinja2 +1 -1
- package/generator/build/lib/pygen/codegen/templates/packaging_templates/MANIFEST.in.jinja2 +1 -1
- package/generator/build/lib/pygen/codegen/templates/packaging_templates/README.md.jinja2 +38 -7
- package/generator/build/lib/pygen/codegen/templates/packaging_templates/dev_requirements.txt.jinja2 +1 -1
- package/generator/build/lib/pygen/codegen/templates/packaging_templates/setup.py.jinja2 +9 -9
- package/generator/build/lib/pygen/codegen/templates/request_builder.py.jinja2 +1 -1
- package/generator/build/lib/pygen/codegen/templates/sample.py.jinja2 +1 -1
- package/generator/build/lib/pygen/codegen/templates/test.py.jinja2 +6 -6
- package/generator/build/lib/pygen/codegen/templates/version.py.jinja2 +1 -1
- package/generator/build/lib/pygen/preprocess/__init__.py +1 -1
- package/generator/build/lib/pygen/utils.py +4 -0
- package/generator/dist/pygen-0.1.0-py3-none-any.whl +0 -0
- package/generator/pygen/__init__.py +176 -2
- package/generator/pygen/black.py +1 -1
- package/generator/pygen/codegen/__init__.py +4 -256
- package/generator/pygen/codegen/_utils.py +0 -3
- package/generator/pygen/codegen/models/__init__.py +1 -1
- package/generator/pygen/codegen/models/base_builder.py +1 -1
- package/generator/pygen/codegen/models/client.py +12 -12
- package/generator/pygen/codegen/models/code_model.py +10 -9
- package/generator/pygen/codegen/models/enum_type.py +4 -4
- package/generator/pygen/codegen/models/imports.py +1 -1
- package/generator/pygen/codegen/models/list_type.py +6 -6
- package/generator/pygen/codegen/models/lro_operation.py +1 -1
- package/generator/pygen/codegen/models/operation.py +16 -16
- package/generator/pygen/codegen/models/operation_group.py +4 -4
- package/generator/pygen/codegen/models/paging_operation.py +4 -4
- package/generator/pygen/codegen/models/parameter.py +8 -8
- package/generator/pygen/codegen/models/property.py +7 -1
- package/generator/pygen/codegen/models/request_builder.py +2 -2
- package/generator/pygen/codegen/models/request_builder_parameter.py +2 -2
- package/generator/pygen/codegen/models/response.py +3 -3
- package/generator/pygen/codegen/serializers/__init__.py +27 -28
- package/generator/pygen/codegen/serializers/builder_serializer.py +31 -31
- package/generator/pygen/codegen/serializers/client_serializer.py +4 -4
- package/generator/pygen/codegen/serializers/general_serializer.py +4 -4
- package/generator/pygen/codegen/serializers/metadata_serializer.py +1 -1
- package/generator/pygen/codegen/serializers/model_serializer.py +1 -1
- package/generator/pygen/codegen/serializers/operations_init_serializer.py +1 -1
- package/generator/pygen/codegen/serializers/sample_serializer.py +1 -1
- package/generator/pygen/codegen/serializers/test_serializer.py +5 -5
- package/generator/pygen/codegen/templates/config.py.jinja2 +1 -1
- package/generator/pygen/codegen/templates/config_container.py.jinja2 +1 -1
- package/generator/pygen/codegen/templates/conftest.py.jinja2 +1 -1
- package/generator/pygen/codegen/templates/init.py.jinja2 +1 -1
- package/generator/pygen/codegen/templates/metadata.json.jinja2 +2 -2
- package/generator/pygen/codegen/templates/model_dpg.py.jinja2 +2 -2
- package/generator/pygen/codegen/templates/operation_group.py.jinja2 +1 -1
- package/generator/pygen/codegen/templates/operation_groups_container.py.jinja2 +1 -1
- package/generator/pygen/codegen/templates/operation_tools.jinja2 +1 -1
- package/generator/pygen/codegen/templates/packaging_templates/MANIFEST.in.jinja2 +1 -1
- package/generator/pygen/codegen/templates/packaging_templates/README.md.jinja2 +38 -7
- package/generator/pygen/codegen/templates/packaging_templates/dev_requirements.txt.jinja2 +1 -1
- package/generator/pygen/codegen/templates/packaging_templates/setup.py.jinja2 +9 -9
- package/generator/pygen/codegen/templates/request_builder.py.jinja2 +1 -1
- package/generator/pygen/codegen/templates/sample.py.jinja2 +1 -1
- package/generator/pygen/codegen/templates/test.py.jinja2 +6 -6
- package/generator/pygen/codegen/templates/version.py.jinja2 +1 -1
- package/generator/pygen/preprocess/__init__.py +1 -1
- package/generator/pygen/utils.py +4 -0
- package/generator/test/azure/mock_api_tests/asynctests/test_azure_arm_commonproperties_async.py +31 -0
- package/generator/test/azure/mock_api_tests/asynctests/test_azure_arm_largeheader_async.py +30 -0
- package/generator/test/azure/mock_api_tests/asynctests/test_azure_arm_nonresource_async.py +36 -0
- package/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_client_initialization_async.py +9 -0
- package/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_deserialize_empty_string_as_null_async.py +20 -0
- package/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_usage_async.py +7 -0
- package/generator/test/azure/mock_api_tests/asynctests/test_azure_encode_duration_async.py +19 -0
- package/generator/test/azure/mock_api_tests/test_azure_arm_commonproperties.py +29 -0
- package/generator/test/azure/mock_api_tests/test_azure_arm_largeheader.py +27 -0
- package/generator/test/azure/mock_api_tests/test_azure_arm_nonresource.py +34 -0
- package/generator/test/azure/mock_api_tests/test_azure_client_generator_core_client_initialization.py +8 -0
- package/generator/test/azure/mock_api_tests/test_azure_client_generator_core_deserialize_empty_string_as_null.py +19 -0
- package/generator/test/azure/mock_api_tests/test_azure_client_generator_core_usage.py +4 -0
- package/generator/test/azure/mock_api_tests/test_azure_encode_duration.py +18 -0
- package/generator/test/azure/requirements.txt +4 -0
- package/generator/test/unittests/test_optional_return_type.py +5 -5
- package/generator/test/unittests/test_parameter_ordering.py +5 -5
- package/generator/test/unittests/test_sort_schema.py +4 -4
- package/package.json +1 -1
|
@@ -5,18 +5,18 @@
|
|
|
5
5
|
{{ code_model.license_header }}
|
|
6
6
|
{% endif %}
|
|
7
7
|
|
|
8
|
-
{% if
|
|
8
|
+
{% if options["package-mode"] %}
|
|
9
9
|
|
|
10
10
|
import os
|
|
11
11
|
import re
|
|
12
12
|
{% endif %}
|
|
13
13
|
from setuptools import setup, find_packages
|
|
14
14
|
|
|
15
|
-
{% set package_name =
|
|
15
|
+
{% set package_name = options["package-name"] or code_model.clients[0].name %}
|
|
16
16
|
|
|
17
17
|
PACKAGE_NAME = "{{ package_name|lower }}"
|
|
18
|
-
{% if
|
|
19
|
-
PACKAGE_PPRINT_NAME = "{{
|
|
18
|
+
{% if options["package-mode"] %}
|
|
19
|
+
PACKAGE_PPRINT_NAME = "{{ options["package-pprint-name"] }}"
|
|
20
20
|
{% if code_model.is_tsp %}
|
|
21
21
|
PACKAGE_NAMESPACE = "{{ code_model.namespace|lower }}"
|
|
22
22
|
|
|
@@ -40,7 +40,7 @@ if not version:
|
|
|
40
40
|
{% set author_email = "azpysdkhelp@microsoft.com" %}
|
|
41
41
|
{% set url = "https://github.com/Azure/azure-sdk-for-python/tree/main/sdk" %}
|
|
42
42
|
{% else %}
|
|
43
|
-
version = "{{
|
|
43
|
+
version = "{{ options.get("package-version", "unknown") }}"
|
|
44
44
|
{% set description = "\"%s\""|format(package_name) %}
|
|
45
45
|
{% set long_description = code_model.description %}
|
|
46
46
|
{% set author_email = "" %}
|
|
@@ -52,7 +52,7 @@ setup(
|
|
|
52
52
|
name=PACKAGE_NAME,
|
|
53
53
|
version=version,
|
|
54
54
|
description={{ description }},
|
|
55
|
-
{% if
|
|
55
|
+
{% if options["package-mode"] %}
|
|
56
56
|
long_description=open("README.md", "r").read(),
|
|
57
57
|
long_description_content_type="text/markdown",
|
|
58
58
|
license="MIT License",
|
|
@@ -63,7 +63,7 @@ setup(
|
|
|
63
63
|
url="{{ url }}",
|
|
64
64
|
keywords="azure, azure sdk",
|
|
65
65
|
{% endif %}
|
|
66
|
-
{% if
|
|
66
|
+
{% if options["package-mode"] %}
|
|
67
67
|
classifiers=[
|
|
68
68
|
"Development Status :: {{ dev_status }}",
|
|
69
69
|
"Programming Language :: Python",
|
|
@@ -100,7 +100,7 @@ setup(
|
|
|
100
100
|
{% else %}
|
|
101
101
|
"isodate>={{ VERSION_MAP["isodate"] }}",
|
|
102
102
|
{% endif %}
|
|
103
|
-
{% if
|
|
103
|
+
{% if code_model.options["azure-arm"] %}
|
|
104
104
|
"azure-mgmt-core>={{ VERSION_MAP["azure-mgmt-core"] }}",
|
|
105
105
|
{% elif code_model.is_azure_flavor %}
|
|
106
106
|
"azure-core>={{ VERSION_MAP["azure-core"] }}",
|
|
@@ -109,7 +109,7 @@ setup(
|
|
|
109
109
|
{% endif %}
|
|
110
110
|
"typing-extensions>={{ VERSION_MAP['typing-extensions'] }}",
|
|
111
111
|
],
|
|
112
|
-
{% if
|
|
112
|
+
{% if options["package-mode"] %}
|
|
113
113
|
python_requires=">={{ MIN_PYTHON_VERSION }}",
|
|
114
114
|
{% else %}
|
|
115
115
|
long_description="""\
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{% import 'keywords.jinja2' as keywords with context %}
|
|
2
2
|
{% import 'operation_tools.jinja2' as op_tools with context %}
|
|
3
3
|
{{ request_builder_serializer.method_signature_and_response_type_annotation(request_builder) }}
|
|
4
|
-
{% if code_model.options["
|
|
4
|
+
{% if code_model.options["builders-visibility"] == "public" %}
|
|
5
5
|
{{ op_tools.description(request_builder, request_builder_serializer) | indent }}
|
|
6
6
|
{% endif %}
|
|
7
7
|
{% if not request_builder.is_overload %}
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
{% if "credential" in client_params and aad_token in client_params["credential"] %}
|
|
12
12
|
pip install azure-identity
|
|
13
13
|
{% endif %}
|
|
14
|
-
pip install {{ (code_model.options
|
|
14
|
+
pip install {{ (code_model.options.get("package-name") or code_model.clients[0].name)|lower }}
|
|
15
15
|
# USAGE
|
|
16
16
|
python {{ file_name }}
|
|
17
17
|
{% if "credential" in client_params and aad_token in client_params["credential"] %}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{% set prefix_lower = test.prefix|lower %}
|
|
2
|
-
{% set client_var = "self.client" if code_model.options["
|
|
2
|
+
{% set client_var = "self.client" if code_model.options["azure-arm"] else "client" %}
|
|
3
3
|
{% set async = "async " if test.async_mode else "" %}
|
|
4
4
|
{% set async_suffix = "_async" if test.async_mode else "" %}
|
|
5
5
|
# coding=utf-8
|
|
@@ -9,13 +9,13 @@
|
|
|
9
9
|
import pytest
|
|
10
10
|
{{ imports }}
|
|
11
11
|
|
|
12
|
-
{% if code_model.options["
|
|
12
|
+
{% if code_model.options["azure-arm"] %}
|
|
13
13
|
AZURE_LOCATION = "eastus"
|
|
14
14
|
{% endif %}
|
|
15
15
|
|
|
16
16
|
@pytest.mark.skip("you may need to update the auto-generated test case before run it")
|
|
17
17
|
class {{ test.test_class_name }}({{ test.base_test_class_name }}):
|
|
18
|
-
{% if code_model.options["
|
|
18
|
+
{% if code_model.options["azure-arm"] %}
|
|
19
19
|
def setup_method(self, method):
|
|
20
20
|
{% if test.async_mode %}
|
|
21
21
|
self.client = self.create_mgmt_client({{ test.client_name }}, is_async=True)
|
|
@@ -24,13 +24,13 @@ class {{ test.test_class_name }}({{ test.base_test_class_name }}):
|
|
|
24
24
|
{% endif %}
|
|
25
25
|
{% endif %}
|
|
26
26
|
{% for testcase in test.testcases %}
|
|
27
|
-
{% if code_model.options["
|
|
27
|
+
{% if code_model.options["azure-arm"] %}
|
|
28
28
|
@{{ test.preparer_name }}(location=AZURE_LOCATION)
|
|
29
29
|
{% else %}
|
|
30
30
|
@{{ test.preparer_name }}()
|
|
31
31
|
{% endif %}
|
|
32
32
|
@recorded_by_proxy{{ async_suffix }}
|
|
33
|
-
{% if code_model.options["
|
|
33
|
+
{% if code_model.options["azure-arm"] %}
|
|
34
34
|
{{ async }}def test_{{ testcase.name }}(self, resource_group):
|
|
35
35
|
{% else %}
|
|
36
36
|
{{ async }}def test_{{ testcase.name }}(self, {{ prefix_lower }}_endpoint):
|
|
@@ -38,7 +38,7 @@ class {{ test.test_class_name }}({{ test.base_test_class_name }}):
|
|
|
38
38
|
{% endif %}
|
|
39
39
|
{{testcase.response }}{{ client_var }}{{ testcase.operation_group_prefix }}.{{ testcase.operation.name }}(
|
|
40
40
|
{% for key, value in testcase.params.items() %}
|
|
41
|
-
{% if code_model.options["
|
|
41
|
+
{% if code_model.options["azure-arm"] and key == "resource_group_name" %}
|
|
42
42
|
{{ key }}=resource_group.name,
|
|
43
43
|
{% else %}
|
|
44
44
|
{{ key }}={{ value|indent(12) }},
|
|
@@ -210,7 +210,7 @@ class PreProcessPlugin(YamlUpdatePlugin):
|
|
|
210
210
|
if not (self.is_tsp and has_multi_part_content_type(body_parameter)):
|
|
211
211
|
body_parameter["type"]["types"].append(KNOWN_TYPES["binary"])
|
|
212
212
|
|
|
213
|
-
if origin_type == "model" and is_dpg_model and self.
|
|
213
|
+
if origin_type == "model" and is_dpg_model and self.options["models-mode"] == "dpg":
|
|
214
214
|
body_parameter["type"]["types"].insert(1, KNOWN_TYPES["any-object"])
|
|
215
215
|
code_model["types"].append(body_parameter["type"])
|
|
216
216
|
|
package/generator/pygen/utils.py
CHANGED
|
@@ -7,6 +7,10 @@ from typing import Any, Dict, Tuple, List
|
|
|
7
7
|
import re
|
|
8
8
|
import argparse
|
|
9
9
|
|
|
10
|
+
SWAGGER_PACKAGE_MODE = ["mgmtplane", "dataplane"] # for backward compatibility
|
|
11
|
+
TYPESPEC_PACKAGE_MODE = ["azure-mgmt", "azure-dataplane", "generic"]
|
|
12
|
+
VALID_PACKAGE_MODE = SWAGGER_PACKAGE_MODE + TYPESPEC_PACKAGE_MODE
|
|
13
|
+
|
|
10
14
|
|
|
11
15
|
def update_enum_value(name: str, value: Any, description: str, enum_type: Dict[str, Any]) -> Dict[str, Any]:
|
|
12
16
|
return {
|
package/generator/test/azure/mock_api_tests/asynctests/test_azure_arm_commonproperties_async.py
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
import pytest
|
|
7
7
|
from azure.resourcemanager.commonproperties.aio import CommonPropertiesClient
|
|
8
8
|
from azure.resourcemanager.commonproperties import models
|
|
9
|
+
from azure.core import exceptions
|
|
9
10
|
|
|
10
11
|
SUBSCRIPTION_ID = "00000000-0000-0000-0000-000000000000"
|
|
11
12
|
RESOURCE_GROUP_NAME = "test-rg"
|
|
@@ -61,3 +62,33 @@ async def test_managed_identity_update_with_user_assigned_and_system_assigned(cl
|
|
|
61
62
|
assert result.location == "eastus"
|
|
62
63
|
assert result.identity.type == "SystemAssigned,UserAssigned"
|
|
63
64
|
assert result.properties.provisioning_state == "Succeeded"
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
@pytest.mark.asyncio
|
|
68
|
+
async def test_error_get_for_predefined_error(client):
|
|
69
|
+
try:
|
|
70
|
+
await client.error.get_for_predefined_error(
|
|
71
|
+
resource_group_name=RESOURCE_GROUP_NAME,
|
|
72
|
+
confidential_resource_name="confidential",
|
|
73
|
+
)
|
|
74
|
+
except exceptions.ResourceNotFoundError as e:
|
|
75
|
+
assert e.status_code == 404
|
|
76
|
+
assert (
|
|
77
|
+
e.error.message
|
|
78
|
+
== "The Resource 'Azure.ResourceManager.CommonProperties/confidentialResources/confidential' under resource group 'test-rg' was not found."
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
@pytest.mark.asyncio
|
|
83
|
+
async def test_error_create_for_user_defined_error(client):
|
|
84
|
+
try:
|
|
85
|
+
await client.error.create_for_user_defined_error(
|
|
86
|
+
resource_group_name=RESOURCE_GROUP_NAME,
|
|
87
|
+
confidential_resource_name="confidential",
|
|
88
|
+
resource=models.ConfidentialResource(
|
|
89
|
+
location="eastus", properties=models.ConfidentialResourceProperties(username="00")
|
|
90
|
+
),
|
|
91
|
+
)
|
|
92
|
+
except exceptions.HttpResponseError as e:
|
|
93
|
+
assert e.status_code == 400
|
|
94
|
+
assert e.error.message == "Username should not contain only numbers."
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# -------------------------------------------------------------------------
|
|
2
|
+
# Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
# Licensed under the MIT License. See License.txt in the project root for
|
|
4
|
+
# license information.
|
|
5
|
+
# --------------------------------------------------------------------------
|
|
6
|
+
import pytest
|
|
7
|
+
from azure.resourcemanager.largeheader.aio import LargeHeaderClient
|
|
8
|
+
from azure.resourcemanager.largeheader import models
|
|
9
|
+
|
|
10
|
+
SUBSCRIPTION_ID = "00000000-0000-0000-0000-000000000000"
|
|
11
|
+
RESOURCE_GROUP_NAME = "test-rg"
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@pytest.fixture
|
|
15
|
+
async def client(credential, authentication_policy):
|
|
16
|
+
async with LargeHeaderClient(
|
|
17
|
+
credential, SUBSCRIPTION_ID, "http://localhost:3000", authentication_policy=authentication_policy
|
|
18
|
+
) as client:
|
|
19
|
+
yield client
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
@pytest.mark.asyncio
|
|
23
|
+
async def test_large_headers_begin_two6_k(client: LargeHeaderClient):
|
|
24
|
+
result = await (
|
|
25
|
+
await client.large_headers.begin_two6_k(
|
|
26
|
+
resource_group_name=RESOURCE_GROUP_NAME,
|
|
27
|
+
large_header_name="header1",
|
|
28
|
+
)
|
|
29
|
+
).result()
|
|
30
|
+
assert result == models.CancelResult(succeeded=True)
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# -------------------------------------------------------------------------
|
|
2
|
+
# Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
# Licensed under the MIT License. See License.txt in the project root for
|
|
4
|
+
# license information.
|
|
5
|
+
# --------------------------------------------------------------------------
|
|
6
|
+
import pytest
|
|
7
|
+
from azure.resourcemanager.nonresource.aio import NonResourceClient
|
|
8
|
+
from azure.resourcemanager.nonresource import models
|
|
9
|
+
|
|
10
|
+
SUBSCRIPTION_ID = "00000000-0000-0000-0000-000000000000"
|
|
11
|
+
RESOURCE_GROUP_NAME = "test-rg"
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@pytest.fixture
|
|
15
|
+
async def client(credential, authentication_policy):
|
|
16
|
+
async with NonResourceClient(
|
|
17
|
+
credential, SUBSCRIPTION_ID, "http://localhost:3000", authentication_policy=authentication_policy
|
|
18
|
+
) as client:
|
|
19
|
+
yield client
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
@pytest.mark.asyncio
|
|
23
|
+
async def test_non_resource_create(client: NonResourceClient):
|
|
24
|
+
result = await client.non_resource_operations.create(
|
|
25
|
+
location="eastus", parameter="hello", body=models.NonResource(id="id", name="hello", type="nonResource")
|
|
26
|
+
)
|
|
27
|
+
assert result == models.NonResource(id="id", name="hello", type="nonResource")
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
@pytest.mark.asyncio
|
|
31
|
+
async def test_non_resource_get(client: NonResourceClient):
|
|
32
|
+
result = await client.non_resource_operations.get(
|
|
33
|
+
location="eastus",
|
|
34
|
+
parameter="hello",
|
|
35
|
+
)
|
|
36
|
+
assert result == models.NonResource(id="id", name="hello", type="nonResource")
|
|
@@ -10,6 +10,7 @@ from specs.azure.clientgenerator.core.clientinitialization.aio import (
|
|
|
10
10
|
MixedParamsClient,
|
|
11
11
|
PathParamClient,
|
|
12
12
|
ParamAliasClient,
|
|
13
|
+
ParentClient,
|
|
13
14
|
)
|
|
14
15
|
from specs.azure.clientgenerator.core.clientinitialization.models import Input
|
|
15
16
|
|
|
@@ -48,3 +49,11 @@ async def test_param_alias_client():
|
|
|
48
49
|
async with ParamAliasClient("sample-blob") as client:
|
|
49
50
|
await client.with_aliased_name()
|
|
50
51
|
await client.with_original_name()
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
# @pytest.mark.asyncio
|
|
55
|
+
# async def test_parent_child_client():
|
|
56
|
+
# async with ParentClient() as client:
|
|
57
|
+
# await client.child_client.with_query()
|
|
58
|
+
# await client.child_client.get_standalone()
|
|
59
|
+
# await client.child_client.delete_standalone()
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# -------------------------------------------------------------------------
|
|
2
|
+
# Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
# Licensed under the MIT License. See License.txt in the project root for
|
|
4
|
+
# license information.
|
|
5
|
+
# --------------------------------------------------------------------------
|
|
6
|
+
import pytest
|
|
7
|
+
from specs.azure.clientgenerator.core.emptystring.aio import DeserializeEmptyStringAsNullClient
|
|
8
|
+
from specs.azure.clientgenerator.core.emptystring import models
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@pytest.fixture
|
|
12
|
+
async def client():
|
|
13
|
+
async with DeserializeEmptyStringAsNullClient() as client:
|
|
14
|
+
yield client
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@pytest.mark.asyncio
|
|
18
|
+
async def test_get(client: DeserializeEmptyStringAsNullClient):
|
|
19
|
+
result = await client.get()
|
|
20
|
+
assert result == models.ResponseModel(sample_url="")
|
|
@@ -29,3 +29,10 @@ async def test_model_usage(client: UsageClient):
|
|
|
29
29
|
assert models.RoundTripModel(
|
|
30
30
|
result=models.ResultModel(name="Madge")
|
|
31
31
|
) == await client.model_in_operation.model_in_read_only_property(body=models.RoundTripModel())
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
# @pytest.mark.asyncio
|
|
35
|
+
# async def test_orphan_model_serializable(client: UsageClient):
|
|
36
|
+
# await client.model_in_operation.orphan_model_serializable(
|
|
37
|
+
# body=models.OrphanModel(model_name="name", description="desc")
|
|
38
|
+
# )
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# -------------------------------------------------------------------------
|
|
2
|
+
# Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
# Licensed under the MIT License. See License.txt in the project root for
|
|
4
|
+
# license information.
|
|
5
|
+
# --------------------------------------------------------------------------
|
|
6
|
+
import pytest
|
|
7
|
+
from specs.azure.encode.duration.aio import DurationClient
|
|
8
|
+
from specs.azure.encode.duration import models
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@pytest.fixture
|
|
12
|
+
async def client():
|
|
13
|
+
async with DurationClient() as client:
|
|
14
|
+
yield client
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@pytest.mark.asyncio
|
|
18
|
+
async def test_duration_constant(client: DurationClient):
|
|
19
|
+
await client.duration_constant(models.DurationModel(input="1.02:59:59.5000000"))
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
import pytest
|
|
7
7
|
from azure.resourcemanager.commonproperties import CommonPropertiesClient
|
|
8
8
|
from azure.resourcemanager.commonproperties import models
|
|
9
|
+
from azure.core import exceptions
|
|
9
10
|
|
|
10
11
|
SUBSCRIPTION_ID = "00000000-0000-0000-0000-000000000000"
|
|
11
12
|
RESOURCE_GROUP_NAME = "test-rg"
|
|
@@ -58,3 +59,31 @@ def test_managed_identity_update_with_user_assigned_and_system_assigned(client):
|
|
|
58
59
|
assert result.location == "eastus"
|
|
59
60
|
assert result.identity.type == "SystemAssigned,UserAssigned"
|
|
60
61
|
assert result.properties.provisioning_state == "Succeeded"
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
def test_error_get_for_predefined_error(client):
|
|
65
|
+
try:
|
|
66
|
+
client.error.get_for_predefined_error(
|
|
67
|
+
resource_group_name=RESOURCE_GROUP_NAME,
|
|
68
|
+
confidential_resource_name="confidential",
|
|
69
|
+
)
|
|
70
|
+
except exceptions.ResourceNotFoundError as e:
|
|
71
|
+
assert e.status_code == 404
|
|
72
|
+
assert (
|
|
73
|
+
e.error.message
|
|
74
|
+
== "The Resource 'Azure.ResourceManager.CommonProperties/confidentialResources/confidential' under resource group 'test-rg' was not found."
|
|
75
|
+
)
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
def test_error_create_for_user_defined_error(client):
|
|
79
|
+
try:
|
|
80
|
+
client.error.create_for_user_defined_error(
|
|
81
|
+
resource_group_name=RESOURCE_GROUP_NAME,
|
|
82
|
+
confidential_resource_name="confidential",
|
|
83
|
+
resource=models.ConfidentialResource(
|
|
84
|
+
location="eastus", properties=models.ConfidentialResourceProperties(username="00")
|
|
85
|
+
),
|
|
86
|
+
)
|
|
87
|
+
except exceptions.HttpResponseError as e:
|
|
88
|
+
assert e.status_code == 400
|
|
89
|
+
assert e.error.message == "Username should not contain only numbers."
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# -------------------------------------------------------------------------
|
|
2
|
+
# Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
# Licensed under the MIT License. See License.txt in the project root for
|
|
4
|
+
# license information.
|
|
5
|
+
# --------------------------------------------------------------------------
|
|
6
|
+
import pytest
|
|
7
|
+
from azure.resourcemanager.largeheader import LargeHeaderClient
|
|
8
|
+
from azure.resourcemanager.largeheader import models
|
|
9
|
+
|
|
10
|
+
SUBSCRIPTION_ID = "00000000-0000-0000-0000-000000000000"
|
|
11
|
+
RESOURCE_GROUP_NAME = "test-rg"
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@pytest.fixture
|
|
15
|
+
def client(credential, authentication_policy):
|
|
16
|
+
with LargeHeaderClient(
|
|
17
|
+
credential, SUBSCRIPTION_ID, "http://localhost:3000", authentication_policy=authentication_policy
|
|
18
|
+
) as client:
|
|
19
|
+
yield client
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def test_large_headers_begin_two6_k(client: LargeHeaderClient):
|
|
23
|
+
result = client.large_headers.begin_two6_k(
|
|
24
|
+
resource_group_name=RESOURCE_GROUP_NAME,
|
|
25
|
+
large_header_name="header1",
|
|
26
|
+
).result()
|
|
27
|
+
assert result == models.CancelResult(succeeded=True)
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# -------------------------------------------------------------------------
|
|
2
|
+
# Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
# Licensed under the MIT License. See License.txt in the project root for
|
|
4
|
+
# license information.
|
|
5
|
+
# --------------------------------------------------------------------------
|
|
6
|
+
import pytest
|
|
7
|
+
from azure.resourcemanager.nonresource import NonResourceClient
|
|
8
|
+
from azure.resourcemanager.nonresource import models
|
|
9
|
+
|
|
10
|
+
SUBSCRIPTION_ID = "00000000-0000-0000-0000-000000000000"
|
|
11
|
+
RESOURCE_GROUP_NAME = "test-rg"
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@pytest.fixture
|
|
15
|
+
def client(credential, authentication_policy):
|
|
16
|
+
with NonResourceClient(
|
|
17
|
+
credential, SUBSCRIPTION_ID, "http://localhost:3000", authentication_policy=authentication_policy
|
|
18
|
+
) as client:
|
|
19
|
+
yield client
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def test_non_resource_create(client: NonResourceClient):
|
|
23
|
+
result = client.non_resource_operations.create(
|
|
24
|
+
location="eastus", parameter="hello", body=models.NonResource(id="id", name="hello", type="nonResource")
|
|
25
|
+
)
|
|
26
|
+
assert result == models.NonResource(id="id", name="hello", type="nonResource")
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def test_non_resource_get(client: NonResourceClient):
|
|
30
|
+
result = client.non_resource_operations.get(
|
|
31
|
+
location="eastus",
|
|
32
|
+
parameter="hello",
|
|
33
|
+
)
|
|
34
|
+
assert result == models.NonResource(id="id", name="hello", type="nonResource")
|
|
@@ -9,6 +9,7 @@ from specs.azure.clientgenerator.core.clientinitialization import (
|
|
|
9
9
|
MixedParamsClient,
|
|
10
10
|
PathParamClient,
|
|
11
11
|
ParamAliasClient,
|
|
12
|
+
ParentClient,
|
|
12
13
|
)
|
|
13
14
|
from specs.azure.clientgenerator.core.clientinitialization.models import Input
|
|
14
15
|
|
|
@@ -42,3 +43,10 @@ def test_param_alias_client():
|
|
|
42
43
|
with ParamAliasClient("sample-blob") as client:
|
|
43
44
|
client.with_aliased_name()
|
|
44
45
|
client.with_original_name()
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
# def test_parent_child_client():
|
|
49
|
+
# with ParentClient() as client:
|
|
50
|
+
# client.child_client.with_query()
|
|
51
|
+
# client.child_client.get_standalone()
|
|
52
|
+
# client.child_client.delete_standalone()
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# -------------------------------------------------------------------------
|
|
2
|
+
# Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
# Licensed under the MIT License. See License.txt in the project root for
|
|
4
|
+
# license information.
|
|
5
|
+
# --------------------------------------------------------------------------
|
|
6
|
+
import pytest
|
|
7
|
+
from specs.azure.clientgenerator.core.emptystring import DeserializeEmptyStringAsNullClient
|
|
8
|
+
from specs.azure.clientgenerator.core.emptystring import models
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@pytest.fixture
|
|
12
|
+
def client():
|
|
13
|
+
with DeserializeEmptyStringAsNullClient() as client:
|
|
14
|
+
yield client
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def test_get(client: DeserializeEmptyStringAsNullClient):
|
|
18
|
+
result = client.get()
|
|
19
|
+
assert result == models.ResponseModel(sample_url="")
|
|
@@ -26,3 +26,7 @@ def test_model_usage(client: UsageClient):
|
|
|
26
26
|
assert models.RoundTripModel(
|
|
27
27
|
result=models.ResultModel(name="Madge")
|
|
28
28
|
) == client.model_in_operation.model_in_read_only_property(body=models.RoundTripModel())
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
# def test_orphan_model_serializable(client: UsageClient):
|
|
32
|
+
# client.model_in_operation.orphan_model_serializable(body=models.OrphanModel(model_name="name", description="desc"))
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# -------------------------------------------------------------------------
|
|
2
|
+
# Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
# Licensed under the MIT License. See License.txt in the project root for
|
|
4
|
+
# license information.
|
|
5
|
+
# --------------------------------------------------------------------------
|
|
6
|
+
import pytest
|
|
7
|
+
from specs.azure.encode.duration import DurationClient
|
|
8
|
+
from specs.azure.encode.duration import models
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@pytest.fixture
|
|
12
|
+
def client():
|
|
13
|
+
with DurationClient() as client:
|
|
14
|
+
yield client
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def test_duration_constant(client: DurationClient):
|
|
18
|
+
client.duration_constant(models.DurationModel(input="1.02:59:59.5000000"))
|
|
@@ -5,6 +5,7 @@ azure-mgmt-core==1.5.0
|
|
|
5
5
|
# only for azure
|
|
6
6
|
-e ./generated/azure-client-generator-core-access
|
|
7
7
|
-e ./generated/azure-client-generator-core-client-initialization
|
|
8
|
+
-e ./generated/azure-client-generator-core-deserialize-empty-string-as-null
|
|
8
9
|
-e ./generated/azure-client-generator-core-flatten-property
|
|
9
10
|
-e ./generated/azure-client-generator-core-usage
|
|
10
11
|
-e ./generated/azure-core-basic
|
|
@@ -14,9 +15,12 @@ azure-mgmt-core==1.5.0
|
|
|
14
15
|
-e ./generated/azure-core-model
|
|
15
16
|
-e ./generated/azure-core-traits
|
|
16
17
|
-e ./generated/azure-core-page
|
|
18
|
+
-e ./generated/azure-encode-duration
|
|
17
19
|
-e ./generated/azure-special-headers-client-request-id/
|
|
18
20
|
-e ./generated/azure-example-basic
|
|
19
21
|
-e ./generated/azure-resource-manager-common-properties
|
|
22
|
+
-e ./generated/azure-resource-manager-large-header
|
|
23
|
+
-e ./generated/azure-resource-manager-non-resource
|
|
20
24
|
-e ./generated/azure-resource-manager-operation-templates
|
|
21
25
|
-e ./generated/azure-resource-manager-resources
|
|
22
26
|
# -e ./generated/client-namespace
|
|
@@ -36,11 +36,11 @@ def code_model():
|
|
|
36
36
|
"namespace": "namespace",
|
|
37
37
|
},
|
|
38
38
|
options={
|
|
39
|
-
"
|
|
40
|
-
"
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
"
|
|
39
|
+
"show-send-request": True,
|
|
40
|
+
"builders-visibility": "public",
|
|
41
|
+
"show-operations": True,
|
|
42
|
+
"models-mode": "dpg",
|
|
43
|
+
"version-tolerant": True,
|
|
44
44
|
},
|
|
45
45
|
)
|
|
46
46
|
|
|
@@ -23,11 +23,11 @@ def get_code_model():
|
|
|
23
23
|
"namespace": "namespace",
|
|
24
24
|
},
|
|
25
25
|
options={
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"
|
|
26
|
+
"show-send-request": True,
|
|
27
|
+
"builders-visibility": "public",
|
|
28
|
+
"show-operations": True,
|
|
29
|
+
"models-mode": "dpg",
|
|
30
|
+
"only-path-and-body-params-positional": True,
|
|
31
31
|
},
|
|
32
32
|
)
|
|
33
33
|
|
|
@@ -23,10 +23,10 @@ def get_code_model():
|
|
|
23
23
|
"namespace": "namespace",
|
|
24
24
|
},
|
|
25
25
|
options={
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"
|
|
26
|
+
"show-send-request": True,
|
|
27
|
+
"builders-visibility": "public",
|
|
28
|
+
"show-operations": True,
|
|
29
|
+
"models-mode": "dpg",
|
|
30
30
|
},
|
|
31
31
|
)
|
|
32
32
|
|