@typespec/http-client-python 0.1.0
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/README.md +118 -0
- package/dist/emitter/code-model.d.ts +4 -0
- package/dist/emitter/code-model.d.ts.map +1 -0
- package/dist/emitter/code-model.js +195 -0
- package/dist/emitter/code-model.js.map +1 -0
- package/dist/emitter/emitter.d.ts +6 -0
- package/dist/emitter/emitter.d.ts.map +1 -0
- package/dist/emitter/emitter.js +104 -0
- package/dist/emitter/emitter.js.map +1 -0
- package/dist/emitter/external-process.d.ts +20 -0
- package/dist/emitter/external-process.d.ts.map +1 -0
- package/dist/emitter/external-process.js +44 -0
- package/dist/emitter/external-process.js.map +1 -0
- package/dist/emitter/http.d.ts +7 -0
- package/dist/emitter/http.d.ts.map +1 -0
- package/dist/emitter/http.js +268 -0
- package/dist/emitter/http.js.map +1 -0
- package/dist/emitter/index.d.ts +3 -0
- package/dist/emitter/index.d.ts.map +1 -0
- package/dist/emitter/index.js +3 -0
- package/dist/emitter/index.js.map +1 -0
- package/dist/emitter/lib.d.ts +30 -0
- package/dist/emitter/lib.d.ts.map +1 -0
- package/dist/emitter/lib.js +33 -0
- package/dist/emitter/lib.js.map +1 -0
- package/dist/emitter/types.d.ts +36 -0
- package/dist/emitter/types.d.ts.map +1 -0
- package/dist/emitter/types.js +491 -0
- package/dist/emitter/types.js.map +1 -0
- package/dist/emitter/utils.d.ts +26 -0
- package/dist/emitter/utils.d.ts.map +1 -0
- package/dist/emitter/utils.js +155 -0
- package/dist/emitter/utils.js.map +1 -0
- package/emitter/src/code-model.ts +272 -0
- package/emitter/src/emitter.ts +127 -0
- package/emitter/src/external-process.ts +52 -0
- package/emitter/src/http.ts +382 -0
- package/emitter/src/index.ts +2 -0
- package/emitter/src/lib.ts +59 -0
- package/emitter/src/types.ts +573 -0
- package/emitter/src/utils.ts +215 -0
- package/emitter/temp/tsconfig.tsbuildinfo +1 -0
- package/emitter/test/utils.test.ts +22 -0
- package/emitter/tsconfig.build.json +11 -0
- package/emitter/tsconfig.json +7 -0
- package/emitter/vitest.config.ts +4 -0
- package/eng/scripts/Build-Packages.ps1 +86 -0
- package/eng/scripts/Check-GitChanges.ps1 +22 -0
- package/eng/scripts/Functions.ps1 +26 -0
- package/eng/scripts/Generate.ps1 +11 -0
- package/eng/scripts/Generation.psm1 +22 -0
- package/eng/scripts/Initialize-Repository.ps1 +40 -0
- package/eng/scripts/Test-Packages.ps1 +65 -0
- package/eng/scripts/ci/format.ts +3 -0
- package/eng/scripts/ci/lint.ts +39 -0
- package/eng/scripts/ci/mypy.ini +38 -0
- package/eng/scripts/ci/pylintrc +59 -0
- package/eng/scripts/ci/pyproject.toml +18 -0
- package/eng/scripts/ci/pyrightconfig.json +6 -0
- package/eng/scripts/ci/regenerate.ts +299 -0
- package/eng/scripts/ci/run-ci.ts +88 -0
- package/eng/scripts/ci/run_apiview.py +40 -0
- package/eng/scripts/ci/run_mypy.py +49 -0
- package/eng/scripts/ci/run_pylint.py +50 -0
- package/eng/scripts/ci/run_pyright.py +58 -0
- package/eng/scripts/ci/util.py +72 -0
- package/eng/scripts/ci/utils.ts +48 -0
- package/eng/scripts/setup/__pycache__/venvtools.cpython-38.pyc +0 -0
- package/eng/scripts/setup/install.py +53 -0
- package/eng/scripts/setup/prepare.py +42 -0
- package/eng/scripts/setup/run-python3.ts +25 -0
- package/eng/scripts/setup/run_tsp.py +42 -0
- package/eng/scripts/setup/system-requirements.ts +261 -0
- package/eng/scripts/setup/venvtools.py +87 -0
- package/generator/LICENSE +21 -0
- package/generator/README.md +1 -0
- package/generator/dev_requirements.txt +13 -0
- package/generator/pygen/__init__.py +107 -0
- package/generator/pygen/_version.py +7 -0
- package/generator/pygen/black.py +71 -0
- package/generator/pygen/codegen/__init__.py +338 -0
- package/generator/pygen/codegen/_utils.py +17 -0
- package/generator/pygen/codegen/models/__init__.py +204 -0
- package/generator/pygen/codegen/models/base.py +186 -0
- package/generator/pygen/codegen/models/base_builder.py +118 -0
- package/generator/pygen/codegen/models/client.py +433 -0
- package/generator/pygen/codegen/models/code_model.py +237 -0
- package/generator/pygen/codegen/models/combined_type.py +149 -0
- package/generator/pygen/codegen/models/constant_type.py +129 -0
- package/generator/pygen/codegen/models/credential_types.py +214 -0
- package/generator/pygen/codegen/models/dictionary_type.py +127 -0
- package/generator/pygen/codegen/models/enum_type.py +238 -0
- package/generator/pygen/codegen/models/imports.py +291 -0
- package/generator/pygen/codegen/models/list_type.py +143 -0
- package/generator/pygen/codegen/models/lro_operation.py +142 -0
- package/generator/pygen/codegen/models/lro_paging_operation.py +32 -0
- package/generator/pygen/codegen/models/model_type.py +359 -0
- package/generator/pygen/codegen/models/operation.py +530 -0
- package/generator/pygen/codegen/models/operation_group.py +184 -0
- package/generator/pygen/codegen/models/paging_operation.py +155 -0
- package/generator/pygen/codegen/models/parameter.py +412 -0
- package/generator/pygen/codegen/models/parameter_list.py +387 -0
- package/generator/pygen/codegen/models/primitive_types.py +659 -0
- package/generator/pygen/codegen/models/property.py +170 -0
- package/generator/pygen/codegen/models/request_builder.py +189 -0
- package/generator/pygen/codegen/models/request_builder_parameter.py +115 -0
- package/generator/pygen/codegen/models/response.py +348 -0
- package/generator/pygen/codegen/models/utils.py +21 -0
- package/generator/pygen/codegen/serializers/__init__.py +574 -0
- package/generator/pygen/codegen/serializers/base_serializer.py +21 -0
- package/generator/pygen/codegen/serializers/builder_serializer.py +1507 -0
- package/generator/pygen/codegen/serializers/client_serializer.py +294 -0
- package/generator/pygen/codegen/serializers/enum_serializer.py +15 -0
- package/generator/pygen/codegen/serializers/general_serializer.py +213 -0
- package/generator/pygen/codegen/serializers/import_serializer.py +126 -0
- package/generator/pygen/codegen/serializers/metadata_serializer.py +198 -0
- package/generator/pygen/codegen/serializers/model_init_serializer.py +33 -0
- package/generator/pygen/codegen/serializers/model_serializer.py +317 -0
- package/generator/pygen/codegen/serializers/operation_groups_serializer.py +89 -0
- package/generator/pygen/codegen/serializers/operations_init_serializer.py +44 -0
- package/generator/pygen/codegen/serializers/parameter_serializer.py +221 -0
- package/generator/pygen/codegen/serializers/patch_serializer.py +19 -0
- package/generator/pygen/codegen/serializers/request_builders_serializer.py +52 -0
- package/generator/pygen/codegen/serializers/sample_serializer.py +168 -0
- package/generator/pygen/codegen/serializers/test_serializer.py +292 -0
- package/generator/pygen/codegen/serializers/types_serializer.py +31 -0
- package/generator/pygen/codegen/serializers/utils.py +68 -0
- package/generator/pygen/codegen/templates/client.py.jinja2 +37 -0
- package/generator/pygen/codegen/templates/client_container.py.jinja2 +12 -0
- package/generator/pygen/codegen/templates/config.py.jinja2 +73 -0
- package/generator/pygen/codegen/templates/config_container.py.jinja2 +16 -0
- package/generator/pygen/codegen/templates/conftest.py.jinja2 +28 -0
- package/generator/pygen/codegen/templates/enum.py.jinja2 +13 -0
- package/generator/pygen/codegen/templates/enum_container.py.jinja2 +10 -0
- package/generator/pygen/codegen/templates/init.py.jinja2 +24 -0
- package/generator/pygen/codegen/templates/keywords.jinja2 +19 -0
- package/generator/pygen/codegen/templates/lro_operation.py.jinja2 +16 -0
- package/generator/pygen/codegen/templates/lro_paging_operation.py.jinja2 +18 -0
- package/generator/pygen/codegen/templates/macros.jinja2 +12 -0
- package/generator/pygen/codegen/templates/metadata.json.jinja2 +167 -0
- package/generator/pygen/codegen/templates/model_base.py.jinja2 +1157 -0
- package/generator/pygen/codegen/templates/model_container.py.jinja2 +12 -0
- package/generator/pygen/codegen/templates/model_dpg.py.jinja2 +97 -0
- package/generator/pygen/codegen/templates/model_init.py.jinja2 +28 -0
- package/generator/pygen/codegen/templates/model_msrest.py.jinja2 +92 -0
- package/generator/pygen/codegen/templates/operation.py.jinja2 +21 -0
- package/generator/pygen/codegen/templates/operation_group.py.jinja2 +75 -0
- package/generator/pygen/codegen/templates/operation_groups_container.py.jinja2 +19 -0
- package/generator/pygen/codegen/templates/operation_tools.jinja2 +81 -0
- package/generator/pygen/codegen/templates/operations_folder_init.py.jinja2 +17 -0
- package/generator/pygen/codegen/templates/packaging_templates/CHANGELOG.md.jinja2 +6 -0
- package/generator/pygen/codegen/templates/packaging_templates/LICENSE.jinja2 +21 -0
- package/generator/pygen/codegen/templates/packaging_templates/MANIFEST.in.jinja2 +8 -0
- package/generator/pygen/codegen/templates/packaging_templates/README.md.jinja2 +107 -0
- package/generator/pygen/codegen/templates/packaging_templates/dev_requirements.txt.jinja2 +9 -0
- package/generator/pygen/codegen/templates/packaging_templates/setup.py.jinja2 +108 -0
- package/generator/pygen/codegen/templates/paging_operation.py.jinja2 +21 -0
- package/generator/pygen/codegen/templates/patch.py.jinja2 +19 -0
- package/generator/pygen/codegen/templates/pkgutil_init.py.jinja2 +1 -0
- package/generator/pygen/codegen/templates/request_builder.py.jinja2 +28 -0
- package/generator/pygen/codegen/templates/request_builders.py.jinja2 +10 -0
- package/generator/pygen/codegen/templates/rest_init.py.jinja2 +12 -0
- package/generator/pygen/codegen/templates/sample.py.jinja2 +44 -0
- package/generator/pygen/codegen/templates/serialization.py.jinja2 +2114 -0
- package/generator/pygen/codegen/templates/test.py.jinja2 +50 -0
- package/generator/pygen/codegen/templates/testpreparer.py.jinja2 +26 -0
- package/generator/pygen/codegen/templates/types.py.jinja2 +7 -0
- package/generator/pygen/codegen/templates/validation.py.jinja2 +38 -0
- package/generator/pygen/codegen/templates/vendor.py.jinja2 +95 -0
- package/generator/pygen/codegen/templates/version.py.jinja2 +4 -0
- package/generator/pygen/m2r.py +65 -0
- package/generator/pygen/postprocess/__init__.py +183 -0
- package/generator/pygen/postprocess/get_all.py +19 -0
- package/generator/pygen/postprocess/venvtools.py +75 -0
- package/generator/pygen/preprocess/__init__.py +515 -0
- package/generator/pygen/preprocess/helpers.py +27 -0
- package/generator/pygen/preprocess/python_mappings.py +224 -0
- package/generator/pygen/utils.py +163 -0
- package/generator/pygen.egg-info/PKG-INFO +25 -0
- package/generator/pygen.egg-info/SOURCES.txt +66 -0
- package/generator/pygen.egg-info/dependency_links.txt +1 -0
- package/generator/pygen.egg-info/requires.txt +4 -0
- package/generator/pygen.egg-info/top_level.txt +1 -0
- package/generator/requirements.txt +12 -0
- package/generator/setup.py +55 -0
- package/generator/test/azure/mock_api_tests/asynctests/test_azure_arm_models_common_types_managed_identity_async.py +63 -0
- package/generator/test/azure/mock_api_tests/asynctests/test_azure_arm_models_resource_async.py +284 -0
- package/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_access_async.py +101 -0
- package/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_flatten_async.py +93 -0
- package/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_usage_async.py +31 -0
- package/generator/test/azure/mock_api_tests/asynctests/test_azure_core_basic_async.py +76 -0
- package/generator/test/azure/mock_api_tests/asynctests/test_azure_core_lro_rpc_async.py +22 -0
- package/generator/test/azure/mock_api_tests/asynctests/test_azure_core_lro_standard_async.py +39 -0
- package/generator/test/azure/mock_api_tests/asynctests/test_azure_core_model_async.py +33 -0
- package/generator/test/azure/mock_api_tests/asynctests/test_azure_core_page_async.py +58 -0
- package/generator/test/azure/mock_api_tests/asynctests/test_azure_core_scalar_async.py +41 -0
- package/generator/test/azure/mock_api_tests/asynctests/test_azure_core_traits_async.py +87 -0
- package/generator/test/azure/mock_api_tests/asynctests/test_azure_example_basic_async.py +30 -0
- package/generator/test/azure/mock_api_tests/asynctests/test_azure_special_headers_client_request_id_async.py +30 -0
- package/generator/test/azure/mock_api_tests/conftest.py +150 -0
- package/generator/test/azure/mock_api_tests/test_azure_arm_models_common_types_managed_identity.py +60 -0
- package/generator/test/azure/mock_api_tests/test_azure_arm_models_resource.py +254 -0
- package/generator/test/azure/mock_api_tests/test_azure_client_generator_core_access.py +92 -0
- package/generator/test/azure/mock_api_tests/test_azure_client_generator_core_flatten.py +84 -0
- package/generator/test/azure/mock_api_tests/test_azure_client_generator_core_usage.py +28 -0
- package/generator/test/azure/mock_api_tests/test_azure_core_basic.py +70 -0
- package/generator/test/azure/mock_api_tests/test_azure_core_lro_rpc.py +20 -0
- package/generator/test/azure/mock_api_tests/test_azure_core_lro_standard.py +32 -0
- package/generator/test/azure/mock_api_tests/test_azure_core_model.py +30 -0
- package/generator/test/azure/mock_api_tests/test_azure_core_page.py +51 -0
- package/generator/test/azure/mock_api_tests/test_azure_core_scalar.py +35 -0
- package/generator/test/azure/mock_api_tests/test_azure_core_traits.py +85 -0
- package/generator/test/azure/mock_api_tests/test_azure_example_basic.py +29 -0
- package/generator/test/azure/mock_api_tests/test_azure_special_headers_client_request_id.py +29 -0
- package/generator/test/azure/requirements.txt +89 -0
- package/generator/test/azure/tox.ini +56 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_authentication_async.py +121 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_client_naming_async.py +69 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_client_structure_async.py +62 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_encode_bytes_async.py +133 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_encode_datetime_async.py +127 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_encode_duration_async.py +63 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_encode_numeric_async.py +35 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_headasboolean_async.py +35 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_parameters_basic_async.py +24 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_parameters_body_optionality_async.py +30 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_parameters_collection_format_async.py +44 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_parameters_spread_async.py +76 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_payload_content_negotiation_async.py +37 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_payload_json_merge_patch_async.py +98 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_payload_media_type_async.py +27 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_payload_multipart_async.py +153 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_payload_pageable_async.py +19 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_payload_xml_async.py +103 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_resiliency_srv_driven_async.py +128 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_routes_async.py +331 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_serialization_encoded_name_json_async.py +24 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_server_endpoint_not_defined_async.py +18 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_server_path_multiple_async.py +25 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_server_path_single_async.py +18 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_server_versions_not_versioned_async.py +28 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_server_versions_versioned_async.py +34 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_special_headers_conditional_request_async.py +38 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_special_headers_repeatability_async.py +19 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_special_words_async.py +42 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_typetest_array_async.py +118 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_typetest_dictionary_async.py +98 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_typetest_enum_extensible_async.py +25 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_typetest_enum_fixed_async.py +27 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_empty_async.py +32 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_inheritance_enum_discriminator_async.py +70 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_inheritance_nested_discriminator_async.py +85 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_inheritance_not_discriminated_async.py +34 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_inheritance_recursive_async.py +34 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_inheritance_single_discriminator_async.py +67 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_usage_async.py +32 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_visibility_async.py +47 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_typetest_property_additionalproperties_async.py +352 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_typetest_property_nullable_async.py +110 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_typetest_property_optional_async.py +197 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_typetest_property_valuetypes_async.py +315 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_typetest_scalar_async.py +60 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_typetest_union_async.py +90 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_versioning_added_async.py +36 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_versioning_made_optional_async.py +21 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_versioning_removed_async.py +21 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_versioning_renamed_from_async.py +29 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_versioning_return_type_changed_from_async.py +18 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_versioning_type_changed_from_async.py +22 -0
- package/generator/test/generic_mock_api_tests/conftest.py +113 -0
- package/generator/test/generic_mock_api_tests/data/image.jpg +0 -0
- package/generator/test/generic_mock_api_tests/data/image.png +0 -0
- package/generator/test/generic_mock_api_tests/test_authentication.py +113 -0
- package/generator/test/generic_mock_api_tests/test_client_naming.py +57 -0
- package/generator/test/generic_mock_api_tests/test_client_structure.py +57 -0
- package/generator/test/generic_mock_api_tests/test_encode_bytes.py +128 -0
- package/generator/test/generic_mock_api_tests/test_encode_datetime.py +123 -0
- package/generator/test/generic_mock_api_tests/test_encode_duration.py +60 -0
- package/generator/test/generic_mock_api_tests/test_encode_numeric.py +31 -0
- package/generator/test/generic_mock_api_tests/test_headasboolean.py +33 -0
- package/generator/test/generic_mock_api_tests/test_parameters_basic.py +22 -0
- package/generator/test/generic_mock_api_tests/test_parameters_body_optionality.py +27 -0
- package/generator/test/generic_mock_api_tests/test_parameters_collection_format.py +37 -0
- package/generator/test/generic_mock_api_tests/test_parameters_spread.py +66 -0
- package/generator/test/generic_mock_api_tests/test_payload_content_negotiation.py +33 -0
- package/generator/test/generic_mock_api_tests/test_payload_json_merge_patch.py +93 -0
- package/generator/test/generic_mock_api_tests/test_payload_media_type.py +25 -0
- package/generator/test/generic_mock_api_tests/test_payload_multipart.py +140 -0
- package/generator/test/generic_mock_api_tests/test_payload_pageable.py +18 -0
- package/generator/test/generic_mock_api_tests/test_payload_xml.py +93 -0
- package/generator/test/generic_mock_api_tests/test_resiliency_srv_driven.py +122 -0
- package/generator/test/generic_mock_api_tests/test_routes.py +285 -0
- package/generator/test/generic_mock_api_tests/test_serialization_encoded_name_json.py +21 -0
- package/generator/test/generic_mock_api_tests/test_server_endpoint_not_defined.py +17 -0
- package/generator/test/generic_mock_api_tests/test_server_path_multiple.py +21 -0
- package/generator/test/generic_mock_api_tests/test_server_path_single.py +17 -0
- package/generator/test/generic_mock_api_tests/test_server_versions_not_versioned.py +25 -0
- package/generator/test/generic_mock_api_tests/test_server_versions_versioned.py +30 -0
- package/generator/test/generic_mock_api_tests/test_special_headers_conditional_request.py +34 -0
- package/generator/test/generic_mock_api_tests/test_special_headers_repeatability.py +18 -0
- package/generator/test/generic_mock_api_tests/test_special_words.py +37 -0
- package/generator/test/generic_mock_api_tests/test_typetest_array.py +103 -0
- package/generator/test/generic_mock_api_tests/test_typetest_dictionary.py +86 -0
- package/generator/test/generic_mock_api_tests/test_typetest_enum_extensible.py +23 -0
- package/generator/test/generic_mock_api_tests/test_typetest_enum_fixed.py +25 -0
- package/generator/test/generic_mock_api_tests/test_typetest_model_empty.py +29 -0
- package/generator/test/generic_mock_api_tests/test_typetest_model_inheritance_enum_discriminator.py +58 -0
- package/generator/test/generic_mock_api_tests/test_typetest_model_inheritance_nested_discriminator.py +79 -0
- package/generator/test/generic_mock_api_tests/test_typetest_model_inheritance_not_discriminated.py +31 -0
- package/generator/test/generic_mock_api_tests/test_typetest_model_inheritance_recursive.py +32 -0
- package/generator/test/generic_mock_api_tests/test_typetest_model_inheritance_single_discriminator.py +60 -0
- package/generator/test/generic_mock_api_tests/test_typetest_model_usage.py +28 -0
- package/generator/test/generic_mock_api_tests/test_typetest_model_visibility.py +40 -0
- package/generator/test/generic_mock_api_tests/test_typetest_property_additionalproperties.py +313 -0
- package/generator/test/generic_mock_api_tests/test_typetest_property_nullable.py +102 -0
- package/generator/test/generic_mock_api_tests/test_typetest_property_optional.py +174 -0
- package/generator/test/generic_mock_api_tests/test_typetest_property_valuetypes.py +286 -0
- package/generator/test/generic_mock_api_tests/test_typetest_scalar.py +53 -0
- package/generator/test/generic_mock_api_tests/test_typetest_union.py +80 -0
- package/generator/test/generic_mock_api_tests/test_versioning_added.py +33 -0
- package/generator/test/generic_mock_api_tests/test_versioning_made_optional.py +20 -0
- package/generator/test/generic_mock_api_tests/test_versioning_removed.py +20 -0
- package/generator/test/generic_mock_api_tests/test_versioning_renamed_from.py +27 -0
- package/generator/test/generic_mock_api_tests/test_versioning_return_type_changed_from.py +17 -0
- package/generator/test/generic_mock_api_tests/test_versioning_type_changed_from.py +21 -0
- package/generator/test/generic_mock_api_tests/unittests/test_model_base_serialization.py +4067 -0
- package/generator/test/generic_mock_api_tests/unittests/test_model_base_xml_serialization.py +1001 -0
- package/generator/test/unbranded/mock_api_tests/asynctests/test_unbranded_async.py +24 -0
- package/generator/test/unbranded/mock_api_tests/cadl-ranch-config.yaml +27 -0
- package/generator/test/unbranded/mock_api_tests/conftest.py +35 -0
- package/generator/test/unbranded/mock_api_tests/test_unbranded.py +57 -0
- package/generator/test/unbranded/requirements.txt +72 -0
- package/generator/test/unbranded/tox.ini +56 -0
- package/package.json +93 -0
package/generator/test/azure/mock_api_tests/asynctests/test_azure_arm_models_resource_async.py
ADDED
|
@@ -0,0 +1,284 @@
|
|
|
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.models.resources.aio import ResourcesClient
|
|
8
|
+
from azure.resourcemanager.models.resources 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 ResourcesClient(
|
|
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_client_signature(credential, authentication_policy):
|
|
24
|
+
# make sure signautre order is correct
|
|
25
|
+
client1 = ResourcesClient(
|
|
26
|
+
credential, SUBSCRIPTION_ID, "http://localhost:3000", authentication_policy=authentication_policy
|
|
27
|
+
)
|
|
28
|
+
# make sure signautre name is correct
|
|
29
|
+
client2 = ResourcesClient(
|
|
30
|
+
credential=credential,
|
|
31
|
+
subscription_id=SUBSCRIPTION_ID,
|
|
32
|
+
base_url="http://localhost:3000",
|
|
33
|
+
authentication_policy=authentication_policy,
|
|
34
|
+
)
|
|
35
|
+
for client in [client1, client2]:
|
|
36
|
+
# make sure signautre order is correct
|
|
37
|
+
await client.top_level_tracked_resources.get(RESOURCE_GROUP_NAME, "top")
|
|
38
|
+
# make sure signautre name is correct
|
|
39
|
+
await client.top_level_tracked_resources.get(
|
|
40
|
+
resource_group_name=RESOURCE_GROUP_NAME, top_level_tracked_resource_name="top"
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
@pytest.mark.asyncio
|
|
45
|
+
async def test_top_level_tracked_resources_begin_create_or_replace(client):
|
|
46
|
+
result = await (
|
|
47
|
+
await client.top_level_tracked_resources.begin_create_or_replace(
|
|
48
|
+
resource_group_name=RESOURCE_GROUP_NAME,
|
|
49
|
+
top_level_tracked_resource_name="top",
|
|
50
|
+
resource=models.TopLevelTrackedResource(
|
|
51
|
+
location="eastus",
|
|
52
|
+
properties=models.TopLevelTrackedResourceProperties(
|
|
53
|
+
models.TopLevelTrackedResourceProperties(description="valid")
|
|
54
|
+
),
|
|
55
|
+
),
|
|
56
|
+
polling_interval=0, # set polling_interval to 0 s to make the test faster since default is 30s
|
|
57
|
+
)
|
|
58
|
+
).result()
|
|
59
|
+
assert result.location == "eastus"
|
|
60
|
+
assert result.properties.description == "valid"
|
|
61
|
+
assert result.properties.provisioning_state == "Succeeded"
|
|
62
|
+
assert result.name == "top"
|
|
63
|
+
assert result.type == "Azure.ResourceManager.Models.Resources/topLevelTrackedResources"
|
|
64
|
+
assert result.system_data.created_by == "AzureSDK"
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
@pytest.mark.asyncio
|
|
68
|
+
async def test_top_level_tracked_resources_begin_update(client):
|
|
69
|
+
result = await (
|
|
70
|
+
await client.top_level_tracked_resources.begin_update(
|
|
71
|
+
resource_group_name=RESOURCE_GROUP_NAME,
|
|
72
|
+
top_level_tracked_resource_name="top",
|
|
73
|
+
properties=models.TopLevelTrackedResource(
|
|
74
|
+
location="eastus",
|
|
75
|
+
properties=models.TopLevelTrackedResourceProperties(
|
|
76
|
+
models.TopLevelTrackedResourceProperties(description="valid2")
|
|
77
|
+
),
|
|
78
|
+
),
|
|
79
|
+
polling_interval=0, # set polling_interval to 0 s to make the test faster since default is 30s
|
|
80
|
+
)
|
|
81
|
+
).result()
|
|
82
|
+
assert result.location == "eastus"
|
|
83
|
+
assert result.properties.description == "valid2"
|
|
84
|
+
assert result.properties.provisioning_state == "Succeeded"
|
|
85
|
+
assert result.name == "top"
|
|
86
|
+
assert result.type == "Azure.ResourceManager.Models.Resources/topLevelTrackedResources"
|
|
87
|
+
assert result.system_data.created_by == "AzureSDK"
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
@pytest.mark.asyncio
|
|
91
|
+
async def test_top_level_tracked_resources_begin_delete(client):
|
|
92
|
+
await (
|
|
93
|
+
await client.top_level_tracked_resources.begin_delete(
|
|
94
|
+
resource_group_name=RESOURCE_GROUP_NAME,
|
|
95
|
+
top_level_tracked_resource_name="top",
|
|
96
|
+
polling_interval=0, # set polling_interval to 0 s to make the test faster since default is 30s
|
|
97
|
+
)
|
|
98
|
+
).result()
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
@pytest.mark.asyncio
|
|
102
|
+
async def test_top_level_tracked_resources_list_by_resource_group(client):
|
|
103
|
+
response = client.top_level_tracked_resources.list_by_resource_group(
|
|
104
|
+
resource_group_name=RESOURCE_GROUP_NAME,
|
|
105
|
+
)
|
|
106
|
+
result = [r async for r in response]
|
|
107
|
+
for result in result:
|
|
108
|
+
assert result.location == "eastus"
|
|
109
|
+
assert result.properties.description == "valid"
|
|
110
|
+
assert result.properties.provisioning_state == "Succeeded"
|
|
111
|
+
assert result.name == "top"
|
|
112
|
+
assert result.type == "Azure.ResourceManager.Models.Resources/topLevelTrackedResources"
|
|
113
|
+
assert result.system_data.created_by == "AzureSDK"
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
@pytest.mark.asyncio
|
|
117
|
+
async def test_top_level_tracked_resources_list_by_subscription(client):
|
|
118
|
+
response = client.top_level_tracked_resources.list_by_subscription()
|
|
119
|
+
result = [r async for r in response]
|
|
120
|
+
for result in result:
|
|
121
|
+
assert result.location == "eastus"
|
|
122
|
+
assert result.properties.description == "valid"
|
|
123
|
+
assert result.properties.provisioning_state == "Succeeded"
|
|
124
|
+
assert result.name == "top"
|
|
125
|
+
assert result.type == "Azure.ResourceManager.Models.Resources/topLevelTrackedResources"
|
|
126
|
+
assert result.system_data.created_by == "AzureSDK"
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
@pytest.mark.asyncio
|
|
130
|
+
async def test_nested_proxy_resources_get(client):
|
|
131
|
+
result = await client.nested_proxy_resources.get(
|
|
132
|
+
resource_group_name=RESOURCE_GROUP_NAME,
|
|
133
|
+
top_level_tracked_resource_name="top",
|
|
134
|
+
nexted_proxy_resource_name="nested",
|
|
135
|
+
)
|
|
136
|
+
assert result.properties.description == "valid"
|
|
137
|
+
assert result.properties.provisioning_state == "Succeeded"
|
|
138
|
+
assert result.name == "nested"
|
|
139
|
+
assert result.type == "Azure.ResourceManager.Models.Resources/topLevelTrackedResources/top/nestedProxyResources"
|
|
140
|
+
assert result.system_data.created_by == "AzureSDK"
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
@pytest.mark.asyncio
|
|
144
|
+
async def test_nested_proxy_resources_begin_create_or_replace(client):
|
|
145
|
+
result = await (
|
|
146
|
+
await client.nested_proxy_resources.begin_create_or_replace(
|
|
147
|
+
resource_group_name=RESOURCE_GROUP_NAME,
|
|
148
|
+
top_level_tracked_resource_name="top",
|
|
149
|
+
nexted_proxy_resource_name="nested",
|
|
150
|
+
resource=models.TopLevelTrackedResource(
|
|
151
|
+
properties=models.TopLevelTrackedResourceProperties(
|
|
152
|
+
models.TopLevelTrackedResourceProperties(description="valid")
|
|
153
|
+
),
|
|
154
|
+
),
|
|
155
|
+
polling_interval=0, # set polling_interval to 0 s to make the test faster since default is 30s
|
|
156
|
+
)
|
|
157
|
+
).result()
|
|
158
|
+
assert result.properties.description == "valid"
|
|
159
|
+
assert result.properties.provisioning_state == "Succeeded"
|
|
160
|
+
assert result.name == "nested"
|
|
161
|
+
assert result.type == "Azure.ResourceManager.Models.Resources/topLevelTrackedResources/top/nestedProxyResources"
|
|
162
|
+
assert result.system_data.created_by == "AzureSDK"
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
@pytest.mark.asyncio
|
|
166
|
+
async def test_nested_proxy_resources_begin_update(client):
|
|
167
|
+
result = await (
|
|
168
|
+
await client.nested_proxy_resources.begin_update(
|
|
169
|
+
resource_group_name=RESOURCE_GROUP_NAME,
|
|
170
|
+
top_level_tracked_resource_name="top",
|
|
171
|
+
nexted_proxy_resource_name="nested",
|
|
172
|
+
properties=models.TopLevelTrackedResource(
|
|
173
|
+
properties=models.TopLevelTrackedResourceProperties(
|
|
174
|
+
models.TopLevelTrackedResourceProperties(description="valid2")
|
|
175
|
+
),
|
|
176
|
+
),
|
|
177
|
+
polling_interval=0, # set polling_interval to 0 s to make the test faster since default is 30s
|
|
178
|
+
)
|
|
179
|
+
).result()
|
|
180
|
+
assert result.properties.description == "valid2"
|
|
181
|
+
assert result.properties.provisioning_state == "Succeeded"
|
|
182
|
+
assert result.name == "nested"
|
|
183
|
+
assert result.type == "Azure.ResourceManager.Models.Resources/topLevelTrackedResources/top/nestedProxyResources"
|
|
184
|
+
assert result.system_data.created_by == "AzureSDK"
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
@pytest.mark.asyncio
|
|
188
|
+
async def test_nested_proxy_resources_begin_delete(client):
|
|
189
|
+
await (
|
|
190
|
+
await client.nested_proxy_resources.begin_delete(
|
|
191
|
+
resource_group_name=RESOURCE_GROUP_NAME,
|
|
192
|
+
top_level_tracked_resource_name="top",
|
|
193
|
+
nexted_proxy_resource_name="nested",
|
|
194
|
+
polling_interval=0, # set polling_interval to 0 s to make the test faster since default is 30s
|
|
195
|
+
)
|
|
196
|
+
).result()
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
@pytest.mark.asyncio
|
|
200
|
+
async def test_nested_proxy_resources_list_by_top_level_tracked_resource(client):
|
|
201
|
+
response = client.nested_proxy_resources.list_by_top_level_tracked_resource(
|
|
202
|
+
resource_group_name=RESOURCE_GROUP_NAME,
|
|
203
|
+
top_level_tracked_resource_name="top",
|
|
204
|
+
)
|
|
205
|
+
result = [r async for r in response]
|
|
206
|
+
for result in result:
|
|
207
|
+
assert result.properties.description == "valid"
|
|
208
|
+
assert result.properties.provisioning_state == "Succeeded"
|
|
209
|
+
assert result.name == "nested"
|
|
210
|
+
assert result.type == "Azure.ResourceManager.Models.Resources/topLevelTrackedResources/top/nestedProxyResources"
|
|
211
|
+
assert result.system_data.created_by == "AzureSDK"
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
@pytest.mark.asyncio
|
|
215
|
+
async def test_top_level_tracked_resources_action_sync(client):
|
|
216
|
+
await client.top_level_tracked_resources.action_sync(
|
|
217
|
+
resource_group_name=RESOURCE_GROUP_NAME,
|
|
218
|
+
top_level_tracked_resource_name="top",
|
|
219
|
+
body={"message": "Resource action at top level.", "urgent": True},
|
|
220
|
+
)
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
@pytest.mark.asyncio
|
|
224
|
+
async def test_singleton_tracked_resources_get_by_resource_group(client):
|
|
225
|
+
result = await client.singleton_tracked_resources.get_by_resource_group(
|
|
226
|
+
resource_group_name=RESOURCE_GROUP_NAME,
|
|
227
|
+
)
|
|
228
|
+
assert result.properties.description == "valid"
|
|
229
|
+
assert result.properties.provisioning_state == "Succeeded"
|
|
230
|
+
assert result.name == "default"
|
|
231
|
+
assert result.type == "Azure.ResourceManager.Models.Resources/singletonTrackedResources"
|
|
232
|
+
assert result.system_data.created_by == "AzureSDK"
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
@pytest.mark.asyncio
|
|
236
|
+
async def test_singleton_tracked_resources_begin_create_or_replace(client):
|
|
237
|
+
result = await (
|
|
238
|
+
await client.singleton_tracked_resources.begin_create_or_update(
|
|
239
|
+
resource_group_name=RESOURCE_GROUP_NAME,
|
|
240
|
+
resource=models.SingletonTrackedResource(
|
|
241
|
+
location="eastus",
|
|
242
|
+
properties=models.SingletonTrackedResourceProperties(
|
|
243
|
+
models.SingletonTrackedResourceProperties(description="valid")
|
|
244
|
+
),
|
|
245
|
+
),
|
|
246
|
+
)
|
|
247
|
+
).result()
|
|
248
|
+
assert result.properties.description == "valid"
|
|
249
|
+
assert result.properties.provisioning_state == "Succeeded"
|
|
250
|
+
assert result.name == "default"
|
|
251
|
+
assert result.type == "Azure.ResourceManager.Models.Resources/singletonTrackedResources"
|
|
252
|
+
assert result.system_data.created_by == "AzureSDK"
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
@pytest.mark.asyncio
|
|
256
|
+
async def test_singleton_tracked_resources_update(client):
|
|
257
|
+
result = await client.singleton_tracked_resources.update(
|
|
258
|
+
resource_group_name=RESOURCE_GROUP_NAME,
|
|
259
|
+
properties=models.SingletonTrackedResource(
|
|
260
|
+
location="eastus2",
|
|
261
|
+
properties=models.SingletonTrackedResourceProperties(
|
|
262
|
+
models.SingletonTrackedResourceProperties(description="valid2")
|
|
263
|
+
),
|
|
264
|
+
),
|
|
265
|
+
)
|
|
266
|
+
assert result.properties.description == "valid2"
|
|
267
|
+
assert result.properties.provisioning_state == "Succeeded"
|
|
268
|
+
assert result.name == "default"
|
|
269
|
+
assert result.type == "Azure.ResourceManager.Models.Resources/singletonTrackedResources"
|
|
270
|
+
assert result.system_data.created_by == "AzureSDK"
|
|
271
|
+
|
|
272
|
+
|
|
273
|
+
@pytest.mark.asyncio
|
|
274
|
+
async def test_singleton_tracked_resources_list_by_resource_group(client):
|
|
275
|
+
response = client.singleton_tracked_resources.list_by_resource_group(
|
|
276
|
+
resource_group_name=RESOURCE_GROUP_NAME,
|
|
277
|
+
)
|
|
278
|
+
result = [r async for r in response]
|
|
279
|
+
for result in result:
|
|
280
|
+
assert result.properties.description == "valid"
|
|
281
|
+
assert result.properties.provisioning_state == "Succeeded"
|
|
282
|
+
assert result.name == "default"
|
|
283
|
+
assert result.type == "Azure.ResourceManager.Models.Resources/singletonTrackedResources"
|
|
284
|
+
assert result.system_data.created_by == "AzureSDK"
|
|
@@ -0,0 +1,101 @@
|
|
|
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.access.aio import AccessClient
|
|
8
|
+
from specs.azure.clientgenerator.core.access import models
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@pytest.fixture
|
|
12
|
+
async def client():
|
|
13
|
+
async with AccessClient() as client:
|
|
14
|
+
yield client
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@pytest.mark.asyncio
|
|
18
|
+
async def test_no_decorator_in_public(client: AccessClient):
|
|
19
|
+
result = await client.public_operation.no_decorator_in_public(name="test")
|
|
20
|
+
assert result == models.NoDecoratorModelInPublic(name="test")
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
@pytest.mark.asyncio
|
|
24
|
+
async def test_public_decorator_in_public(client: AccessClient):
|
|
25
|
+
result = await client.public_operation.public_decorator_in_public(name="test")
|
|
26
|
+
assert result == models.PublicDecoratorModelInPublic(name="test")
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
@pytest.mark.asyncio
|
|
30
|
+
async def test_no_decorator_in_internal(client: AccessClient):
|
|
31
|
+
result = await client.internal_operation._no_decorator_in_internal(name="test")
|
|
32
|
+
assert result == models._models.NoDecoratorModelInInternal(name="test")
|
|
33
|
+
|
|
34
|
+
with pytest.raises(ImportError):
|
|
35
|
+
from specs.azure.clientgenerator.core.access.models import NoDecoratorModelInInternal
|
|
36
|
+
|
|
37
|
+
with pytest.raises(AttributeError):
|
|
38
|
+
await client.internal_operation.no_decorator_in_internal(name="test")
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
@pytest.mark.asyncio
|
|
42
|
+
async def test_internal_decorator_in_internal(client: AccessClient):
|
|
43
|
+
result = await client.internal_operation._internal_decorator_in_internal(name="test")
|
|
44
|
+
assert result == models._models.InternalDecoratorModelInInternal(name="test")
|
|
45
|
+
|
|
46
|
+
with pytest.raises(ImportError):
|
|
47
|
+
from specs.azure.clientgenerator.core.access.models import InternalDecoratorModelInInternal
|
|
48
|
+
|
|
49
|
+
with pytest.raises(AttributeError):
|
|
50
|
+
await client.internal_operation.internal_decorator_in_internal(name="test")
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
@pytest.mark.asyncio
|
|
54
|
+
async def test_public_decorator_in_internal(client: AccessClient):
|
|
55
|
+
result = await client.internal_operation._public_decorator_in_internal(name="test")
|
|
56
|
+
assert result == models.PublicDecoratorModelInInternal(name="test")
|
|
57
|
+
|
|
58
|
+
with pytest.raises(AttributeError):
|
|
59
|
+
await client.internal_operation.public_decorator_in_internal(name="test")
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
@pytest.mark.asyncio
|
|
63
|
+
async def test_public(client: AccessClient):
|
|
64
|
+
result = await client.shared_model_in_operation.public(name="test")
|
|
65
|
+
assert result == models.SharedModel(name="test")
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
@pytest.mark.asyncio
|
|
69
|
+
async def test_internal(client: AccessClient):
|
|
70
|
+
result = await client.shared_model_in_operation._internal(name="test")
|
|
71
|
+
assert result == models.SharedModel(name="test")
|
|
72
|
+
|
|
73
|
+
with pytest.raises(AttributeError):
|
|
74
|
+
await client.shared_model_in_operation.internal(name="test")
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
@pytest.mark.asyncio
|
|
78
|
+
async def test_operation(client: AccessClient):
|
|
79
|
+
result = await client.relative_model_in_operation._operation(name="test")
|
|
80
|
+
assert result == models._models.OuterModel(name="Madge", inner=models._models.InnerModel(name="Madge"))
|
|
81
|
+
|
|
82
|
+
with pytest.raises(ImportError):
|
|
83
|
+
from specs.azure.clientgenerator.core.access.models import OuterModel
|
|
84
|
+
|
|
85
|
+
with pytest.raises(ImportError):
|
|
86
|
+
from specs.azure.clientgenerator.core.access.models import InnerModel
|
|
87
|
+
|
|
88
|
+
with pytest.raises(AttributeError):
|
|
89
|
+
await client.shared_model_in_operation.operation(name="test")
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
@pytest.mark.asyncio
|
|
93
|
+
async def test_discriminator(client: AccessClient):
|
|
94
|
+
result = await client.relative_model_in_operation._discriminator(kind="real")
|
|
95
|
+
assert result == models._models.RealModel(name="Madge", kind="real")
|
|
96
|
+
|
|
97
|
+
with pytest.raises(ImportError):
|
|
98
|
+
from specs.azure.clientgenerator.core.access.models import RealModel
|
|
99
|
+
|
|
100
|
+
with pytest.raises(AttributeError):
|
|
101
|
+
await client.shared_model_in_operation.discriminator(kind="real")
|
|
@@ -0,0 +1,93 @@
|
|
|
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.flattenproperty.aio import FlattenPropertyClient
|
|
8
|
+
from specs.azure.clientgenerator.core.flattenproperty.models import (
|
|
9
|
+
FlattenModel,
|
|
10
|
+
ChildModel,
|
|
11
|
+
NestedFlattenModel,
|
|
12
|
+
ChildFlattenModel,
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
@pytest.fixture
|
|
17
|
+
async def client():
|
|
18
|
+
async with FlattenPropertyClient() as client:
|
|
19
|
+
yield client
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
# ========== test for cadl-ranch ==========
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
@pytest.mark.asyncio
|
|
26
|
+
async def test_put_flatten_model(client: FlattenPropertyClient):
|
|
27
|
+
resp = FlattenModel(name="test", properties=ChildModel(age=1, description="test"))
|
|
28
|
+
assert (
|
|
29
|
+
await client.put_flatten_model(FlattenModel(name="foo", properties=ChildModel(age=10, description="bar")))
|
|
30
|
+
== resp
|
|
31
|
+
)
|
|
32
|
+
assert await client.put_flatten_model(FlattenModel(name="foo", age=10, description="bar")) == resp
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
@pytest.mark.asyncio
|
|
36
|
+
async def test_put_nested_flatten_model(client: FlattenPropertyClient):
|
|
37
|
+
# python doesn't support nested flatten model
|
|
38
|
+
assert await client.put_nested_flatten_model(
|
|
39
|
+
NestedFlattenModel(
|
|
40
|
+
name="foo",
|
|
41
|
+
properties=ChildFlattenModel(summary="bar", properties=ChildModel(age=10, description="test")),
|
|
42
|
+
)
|
|
43
|
+
) == NestedFlattenModel(
|
|
44
|
+
name="test",
|
|
45
|
+
properties=ChildFlattenModel(summary="test", properties=ChildModel(age=1, description="foo")),
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
@pytest.mark.asyncio # ============test for compatibility ============
|
|
50
|
+
async def test_dpg_model_common():
|
|
51
|
+
flatten_model = FlattenModel(name="hello", properties=ChildModel(age=0, description="test"))
|
|
52
|
+
assert flatten_model.name == "hello"
|
|
53
|
+
assert flatten_model.properties.age == 0
|
|
54
|
+
assert flatten_model.properties.description == "test"
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
@pytest.mark.asyncio
|
|
58
|
+
async def test_dpg_model_none():
|
|
59
|
+
flatten_model = FlattenModel()
|
|
60
|
+
assert flatten_model.name is None
|
|
61
|
+
assert flatten_model.properties is None
|
|
62
|
+
assert flatten_model.age is None
|
|
63
|
+
assert flatten_model.description is None
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
@pytest.mark.asyncio
|
|
67
|
+
async def test_dpg_model_compatibility():
|
|
68
|
+
flatten_model = FlattenModel(description="test", age=0)
|
|
69
|
+
assert flatten_model.description == "test"
|
|
70
|
+
assert flatten_model.age == 0
|
|
71
|
+
assert flatten_model.properties.description == "test"
|
|
72
|
+
assert flatten_model.properties.age == 0
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
@pytest.mark.asyncio
|
|
76
|
+
async def test_dpg_model_setattr():
|
|
77
|
+
flatten_model = FlattenModel()
|
|
78
|
+
|
|
79
|
+
flatten_model.age = 0
|
|
80
|
+
assert flatten_model.properties.age == 0
|
|
81
|
+
flatten_model.description = "test"
|
|
82
|
+
assert flatten_model.properties.description == "test"
|
|
83
|
+
|
|
84
|
+
flatten_model.properties.age = 1
|
|
85
|
+
assert flatten_model.age == 1
|
|
86
|
+
flatten_model.properties.description = "test2"
|
|
87
|
+
assert flatten_model.description == "test2"
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
@pytest.mark.asyncio
|
|
91
|
+
async def test_dpg_model_exception():
|
|
92
|
+
with pytest.raises(AttributeError):
|
|
93
|
+
FlattenModel().no_prop
|
|
@@ -0,0 +1,31 @@
|
|
|
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.usage.aio import UsageClient
|
|
8
|
+
from specs.azure.clientgenerator.core.usage import models
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@pytest.fixture
|
|
12
|
+
async def client():
|
|
13
|
+
async with UsageClient() as client:
|
|
14
|
+
yield client
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@pytest.mark.asyncio
|
|
18
|
+
async def test_input_to_input_output(client: UsageClient):
|
|
19
|
+
await client.model_in_operation.input_to_input_output(models.InputModel(name="Madge"))
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
@pytest.mark.asyncio
|
|
23
|
+
async def test_output_to_input_output(client: UsageClient):
|
|
24
|
+
assert models.OutputModel(name="Madge") == await client.model_in_operation.output_to_input_output()
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
@pytest.mark.asyncio
|
|
28
|
+
async def test_model_usage(client: UsageClient):
|
|
29
|
+
assert models.RoundTripModel(
|
|
30
|
+
result=models.ResultModel(name="Madge")
|
|
31
|
+
) == await client.model_in_operation.model_in_read_only_property(body=models.RoundTripModel())
|
|
@@ -0,0 +1,76 @@
|
|
|
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.core.basic import models, aio
|
|
8
|
+
|
|
9
|
+
VALID_USER = models.User(id=1, name="Madge", etag="11bdc430-65e8-45ad-81d9-8ffa60d55b59")
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@pytest.fixture
|
|
13
|
+
async def client():
|
|
14
|
+
async with aio.BasicClient() as client:
|
|
15
|
+
yield client
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
@pytest.mark.asyncio
|
|
19
|
+
async def test_create_or_update(client: aio.BasicClient):
|
|
20
|
+
result = await client.create_or_update(id=1, resource={"name": "Madge"})
|
|
21
|
+
assert result == VALID_USER
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
@pytest.mark.asyncio
|
|
25
|
+
async def test_create_or_replace(client: aio.BasicClient):
|
|
26
|
+
result = await client.create_or_replace(id=1, resource={"name": "Madge"})
|
|
27
|
+
assert result == VALID_USER
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
@pytest.mark.asyncio
|
|
31
|
+
async def test_get(client: aio.BasicClient):
|
|
32
|
+
result = await client.get(id=1)
|
|
33
|
+
assert result == VALID_USER
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
@pytest.mark.asyncio
|
|
37
|
+
async def test_list(client: aio.BasicClient):
|
|
38
|
+
result = client.list(
|
|
39
|
+
top=5,
|
|
40
|
+
skip=10,
|
|
41
|
+
orderby=["id"],
|
|
42
|
+
filter="id lt 10",
|
|
43
|
+
select=["id", "orders", "etag"],
|
|
44
|
+
expand=["orders"],
|
|
45
|
+
)
|
|
46
|
+
result = [item async for item in result]
|
|
47
|
+
assert len(result) == 2
|
|
48
|
+
assert result[0].id == 1
|
|
49
|
+
assert result[0].name == "Madge"
|
|
50
|
+
assert result[0].etag == "11bdc430-65e8-45ad-81d9-8ffa60d55b59"
|
|
51
|
+
assert result[0].orders[0].id == 1
|
|
52
|
+
assert result[0].orders[0].user_id == 1
|
|
53
|
+
assert result[0].orders[0].detail == "a recorder"
|
|
54
|
+
assert result[1].id == 2
|
|
55
|
+
assert result[1].name == "John"
|
|
56
|
+
assert result[1].etag == "11bdc430-65e8-45ad-81d9-8ffa60d55b5a"
|
|
57
|
+
assert result[1].orders[0].id == 2
|
|
58
|
+
assert result[1].orders[0].user_id == 2
|
|
59
|
+
assert result[1].orders[0].detail == "a TV"
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
@pytest.mark.asyncio
|
|
63
|
+
async def test_delete(client: aio.BasicClient):
|
|
64
|
+
await client.delete(id=1)
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
@pytest.mark.asyncio
|
|
68
|
+
async def test_export(client: aio.BasicClient):
|
|
69
|
+
result = await client.export(id=1, format="json")
|
|
70
|
+
assert result == VALID_USER
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
@pytest.mark.asyncio
|
|
74
|
+
async def test_export_all_users(client: aio.BasicClient):
|
|
75
|
+
result = await client.export_all_users(format="json")
|
|
76
|
+
assert result.users[0] == VALID_USER
|
|
@@ -0,0 +1,22 @@
|
|
|
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 azurecore.lro.rpc.aio import RpcClient
|
|
8
|
+
from azurecore.lro.rpc import models
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@pytest.fixture
|
|
12
|
+
async def client():
|
|
13
|
+
async with RpcClient() as client:
|
|
14
|
+
yield client
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@pytest.mark.asyncio
|
|
18
|
+
async def test_long_running_rpc(client: RpcClient, async_polling_method):
|
|
19
|
+
result = await client.begin_long_running_rpc(
|
|
20
|
+
models.GenerationOptions(prompt="text"), polling_interval=0, polling=async_polling_method
|
|
21
|
+
)
|
|
22
|
+
assert (await result.result()) == models.GenerationResult(data="text data")
|
|
@@ -0,0 +1,39 @@
|
|
|
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.core.lro.standard.aio import StandardClient
|
|
8
|
+
from specs.azure.core.lro.standard.models import User, ExportedUser
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@pytest.fixture
|
|
12
|
+
async def client():
|
|
13
|
+
async with StandardClient() as client:
|
|
14
|
+
yield client
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@pytest.mark.asyncio
|
|
18
|
+
async def test_lro_core_put(client, async_polling_method):
|
|
19
|
+
user = User({"name": "madge", "role": "contributor"})
|
|
20
|
+
result = await (
|
|
21
|
+
await client.begin_create_or_replace(
|
|
22
|
+
name=user.name, resource=user, polling_interval=0, polling=async_polling_method
|
|
23
|
+
)
|
|
24
|
+
).result()
|
|
25
|
+
assert result == user
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
@pytest.mark.asyncio
|
|
29
|
+
async def test_lro_core_delete(client, async_polling_method):
|
|
30
|
+
await (await client.begin_delete(name="madge", polling_interval=0, polling=async_polling_method)).result()
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
@pytest.mark.asyncio
|
|
34
|
+
async def test_lro_core_export(client, async_polling_method):
|
|
35
|
+
export_user = ExportedUser({"name": "madge", "resourceUri": "/users/madge"})
|
|
36
|
+
result = await (
|
|
37
|
+
await client.begin_export(name="madge", format="json", polling_interval=0, polling=async_polling_method)
|
|
38
|
+
).result()
|
|
39
|
+
assert result == export_user
|
|
@@ -0,0 +1,33 @@
|
|
|
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.core.model.aio import ModelClient
|
|
8
|
+
from specs.azure.core.model.models import AzureEmbeddingModel
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@pytest.fixture
|
|
12
|
+
async def client():
|
|
13
|
+
async with ModelClient() as client:
|
|
14
|
+
yield client
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@pytest.mark.asyncio
|
|
18
|
+
async def test_azure_core_embedding_vector_post(client: ModelClient):
|
|
19
|
+
embedding_model = AzureEmbeddingModel(embedding=[0, 1, 2, 3, 4])
|
|
20
|
+
result = await client.azure_core_embedding_vector.post(
|
|
21
|
+
body=embedding_model,
|
|
22
|
+
)
|
|
23
|
+
assert result == AzureEmbeddingModel(embedding=[5, 6, 7, 8, 9])
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
@pytest.mark.asyncio
|
|
27
|
+
async def test_azure_core_embedding_vector_put(client: ModelClient):
|
|
28
|
+
await client.azure_core_embedding_vector.put(body=[0, 1, 2, 3, 4])
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
@pytest.mark.asyncio
|
|
32
|
+
async def test_azure_core_embedding_vector_get(client: ModelClient):
|
|
33
|
+
assert [0, 1, 2, 3, 4] == (await client.azure_core_embedding_vector.get())
|