@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
|
@@ -0,0 +1,254 @@
|
|
|
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 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
|
+
def client(credential, authentication_policy):
|
|
16
|
+
with ResourcesClient(
|
|
17
|
+
credential, SUBSCRIPTION_ID, "http://localhost:3000", authentication_policy=authentication_policy
|
|
18
|
+
) as client:
|
|
19
|
+
yield client
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def test_client_signature(credential, authentication_policy):
|
|
23
|
+
# make sure signautre order is correct
|
|
24
|
+
client1 = ResourcesClient(
|
|
25
|
+
credential, SUBSCRIPTION_ID, "http://localhost:3000", authentication_policy=authentication_policy
|
|
26
|
+
)
|
|
27
|
+
# make sure signautre name is correct
|
|
28
|
+
client2 = ResourcesClient(
|
|
29
|
+
credential=credential,
|
|
30
|
+
subscription_id=SUBSCRIPTION_ID,
|
|
31
|
+
base_url="http://localhost:3000",
|
|
32
|
+
authentication_policy=authentication_policy,
|
|
33
|
+
)
|
|
34
|
+
for client in [client1, client2]:
|
|
35
|
+
# make sure signautre order is correct
|
|
36
|
+
client.top_level_tracked_resources.get(RESOURCE_GROUP_NAME, "top")
|
|
37
|
+
# make sure signautre name is correct
|
|
38
|
+
client.top_level_tracked_resources.get(
|
|
39
|
+
resource_group_name=RESOURCE_GROUP_NAME, top_level_tracked_resource_name="top"
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def test_top_level_tracked_resources_begin_create_or_replace(client):
|
|
44
|
+
result = client.top_level_tracked_resources.begin_create_or_replace(
|
|
45
|
+
resource_group_name=RESOURCE_GROUP_NAME,
|
|
46
|
+
top_level_tracked_resource_name="top",
|
|
47
|
+
resource=models.TopLevelTrackedResource(
|
|
48
|
+
location="eastus",
|
|
49
|
+
properties=models.TopLevelTrackedResourceProperties(
|
|
50
|
+
models.TopLevelTrackedResourceProperties(description="valid")
|
|
51
|
+
),
|
|
52
|
+
),
|
|
53
|
+
polling_interval=0, # set polling_interval to 0 s to make the test faster since default is 30s
|
|
54
|
+
).result()
|
|
55
|
+
assert result.location == "eastus"
|
|
56
|
+
assert result.properties.description == "valid"
|
|
57
|
+
assert result.properties.provisioning_state == "Succeeded"
|
|
58
|
+
assert result.name == "top"
|
|
59
|
+
assert result.type == "Azure.ResourceManager.Models.Resources/topLevelTrackedResources"
|
|
60
|
+
assert result.system_data.created_by == "AzureSDK"
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
def test_top_level_tracked_resources_begin_update(client):
|
|
64
|
+
result = client.top_level_tracked_resources.begin_update(
|
|
65
|
+
resource_group_name=RESOURCE_GROUP_NAME,
|
|
66
|
+
top_level_tracked_resource_name="top",
|
|
67
|
+
properties=models.TopLevelTrackedResource(
|
|
68
|
+
location="eastus",
|
|
69
|
+
properties=models.TopLevelTrackedResourceProperties(
|
|
70
|
+
models.TopLevelTrackedResourceProperties(description="valid2")
|
|
71
|
+
),
|
|
72
|
+
),
|
|
73
|
+
polling_interval=0, # set polling_interval to 0 s to make the test faster since default is 30s
|
|
74
|
+
).result()
|
|
75
|
+
assert result.location == "eastus"
|
|
76
|
+
assert result.properties.description == "valid2"
|
|
77
|
+
assert result.properties.provisioning_state == "Succeeded"
|
|
78
|
+
assert result.name == "top"
|
|
79
|
+
assert result.type == "Azure.ResourceManager.Models.Resources/topLevelTrackedResources"
|
|
80
|
+
assert result.system_data.created_by == "AzureSDK"
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
def test_top_level_tracked_resources_begin_delete(client):
|
|
84
|
+
client.top_level_tracked_resources.begin_delete(
|
|
85
|
+
resource_group_name=RESOURCE_GROUP_NAME,
|
|
86
|
+
top_level_tracked_resource_name="top",
|
|
87
|
+
polling_interval=0, # set polling_interval to 0 s to make the test faster since default is 30s
|
|
88
|
+
).result()
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
def test_top_level_tracked_resources_list_by_resource_group(client):
|
|
92
|
+
response = client.top_level_tracked_resources.list_by_resource_group(
|
|
93
|
+
resource_group_name=RESOURCE_GROUP_NAME,
|
|
94
|
+
)
|
|
95
|
+
result = [r for r in response]
|
|
96
|
+
for result in result:
|
|
97
|
+
assert result.location == "eastus"
|
|
98
|
+
assert result.properties.description == "valid"
|
|
99
|
+
assert result.properties.provisioning_state == "Succeeded"
|
|
100
|
+
assert result.name == "top"
|
|
101
|
+
assert result.type == "Azure.ResourceManager.Models.Resources/topLevelTrackedResources"
|
|
102
|
+
assert result.system_data.created_by == "AzureSDK"
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
def test_top_level_tracked_resources_list_by_subscription(client):
|
|
106
|
+
response = client.top_level_tracked_resources.list_by_subscription()
|
|
107
|
+
result = [r for r in response]
|
|
108
|
+
for result in result:
|
|
109
|
+
assert result.location == "eastus"
|
|
110
|
+
assert result.properties.description == "valid"
|
|
111
|
+
assert result.properties.provisioning_state == "Succeeded"
|
|
112
|
+
assert result.name == "top"
|
|
113
|
+
assert result.type == "Azure.ResourceManager.Models.Resources/topLevelTrackedResources"
|
|
114
|
+
assert result.system_data.created_by == "AzureSDK"
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
def test_nested_proxy_resources_get(client):
|
|
118
|
+
result = client.nested_proxy_resources.get(
|
|
119
|
+
resource_group_name=RESOURCE_GROUP_NAME,
|
|
120
|
+
top_level_tracked_resource_name="top",
|
|
121
|
+
nexted_proxy_resource_name="nested",
|
|
122
|
+
)
|
|
123
|
+
assert result.properties.description == "valid"
|
|
124
|
+
assert result.properties.provisioning_state == "Succeeded"
|
|
125
|
+
assert result.name == "nested"
|
|
126
|
+
assert result.type == "Azure.ResourceManager.Models.Resources/topLevelTrackedResources/top/nestedProxyResources"
|
|
127
|
+
assert result.system_data.created_by == "AzureSDK"
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
def test_nested_proxy_resources_begin_create_or_replace(client):
|
|
131
|
+
result = client.nested_proxy_resources.begin_create_or_replace(
|
|
132
|
+
resource_group_name=RESOURCE_GROUP_NAME,
|
|
133
|
+
top_level_tracked_resource_name="top",
|
|
134
|
+
nexted_proxy_resource_name="nested",
|
|
135
|
+
resource=models.TopLevelTrackedResource(
|
|
136
|
+
properties=models.TopLevelTrackedResourceProperties(
|
|
137
|
+
models.TopLevelTrackedResourceProperties(description="valid")
|
|
138
|
+
),
|
|
139
|
+
),
|
|
140
|
+
polling_interval=0, # set polling_interval to 0 s to make the test faster since default is 30s
|
|
141
|
+
).result()
|
|
142
|
+
assert result.properties.description == "valid"
|
|
143
|
+
assert result.properties.provisioning_state == "Succeeded"
|
|
144
|
+
assert result.name == "nested"
|
|
145
|
+
assert result.type == "Azure.ResourceManager.Models.Resources/topLevelTrackedResources/top/nestedProxyResources"
|
|
146
|
+
assert result.system_data.created_by == "AzureSDK"
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
def test_nested_proxy_resources_begin_update(client):
|
|
150
|
+
result = client.nested_proxy_resources.begin_update(
|
|
151
|
+
resource_group_name=RESOURCE_GROUP_NAME,
|
|
152
|
+
top_level_tracked_resource_name="top",
|
|
153
|
+
nexted_proxy_resource_name="nested",
|
|
154
|
+
properties=models.TopLevelTrackedResource(
|
|
155
|
+
properties=models.TopLevelTrackedResourceProperties(
|
|
156
|
+
models.TopLevelTrackedResourceProperties(description="valid2")
|
|
157
|
+
),
|
|
158
|
+
),
|
|
159
|
+
polling_interval=0, # set polling_interval to 0 s to make the test faster since default is 30s
|
|
160
|
+
).result()
|
|
161
|
+
assert result.properties.description == "valid2"
|
|
162
|
+
assert result.properties.provisioning_state == "Succeeded"
|
|
163
|
+
assert result.name == "nested"
|
|
164
|
+
assert result.type == "Azure.ResourceManager.Models.Resources/topLevelTrackedResources/top/nestedProxyResources"
|
|
165
|
+
assert result.system_data.created_by == "AzureSDK"
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
def test_nested_proxy_resources_begin_delete(client):
|
|
169
|
+
client.nested_proxy_resources.begin_delete(
|
|
170
|
+
resource_group_name=RESOURCE_GROUP_NAME,
|
|
171
|
+
top_level_tracked_resource_name="top",
|
|
172
|
+
nexted_proxy_resource_name="nested",
|
|
173
|
+
polling_interval=0, # set polling_interval to 0 s to make the test faster since default is 30s
|
|
174
|
+
).result()
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
def test_nested_proxy_resources_list_by_top_level_tracked_resource(client):
|
|
178
|
+
response = client.nested_proxy_resources.list_by_top_level_tracked_resource(
|
|
179
|
+
resource_group_name=RESOURCE_GROUP_NAME,
|
|
180
|
+
top_level_tracked_resource_name="top",
|
|
181
|
+
)
|
|
182
|
+
result = [r for r in response]
|
|
183
|
+
for result in result:
|
|
184
|
+
assert result.properties.description == "valid"
|
|
185
|
+
assert result.properties.provisioning_state == "Succeeded"
|
|
186
|
+
assert result.name == "nested"
|
|
187
|
+
assert result.type == "Azure.ResourceManager.Models.Resources/topLevelTrackedResources/top/nestedProxyResources"
|
|
188
|
+
assert result.system_data.created_by == "AzureSDK"
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
def test_top_level_tracked_resources_action_sync(client):
|
|
192
|
+
client.top_level_tracked_resources.action_sync(
|
|
193
|
+
resource_group_name=RESOURCE_GROUP_NAME,
|
|
194
|
+
top_level_tracked_resource_name="top",
|
|
195
|
+
body={"message": "Resource action at top level.", "urgent": True},
|
|
196
|
+
)
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
def test_singleton_tracked_resources_get_by_resource_group(client):
|
|
200
|
+
result = client.singleton_tracked_resources.get_by_resource_group(
|
|
201
|
+
resource_group_name=RESOURCE_GROUP_NAME,
|
|
202
|
+
)
|
|
203
|
+
assert result.properties.description == "valid"
|
|
204
|
+
assert result.properties.provisioning_state == "Succeeded"
|
|
205
|
+
assert result.name == "default"
|
|
206
|
+
assert result.type == "Azure.ResourceManager.Models.Resources/singletonTrackedResources"
|
|
207
|
+
assert result.system_data.created_by == "AzureSDK"
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
def test_singleton_tracked_resources_begin_create_or_replace(client):
|
|
211
|
+
result = client.singleton_tracked_resources.begin_create_or_update(
|
|
212
|
+
resource_group_name=RESOURCE_GROUP_NAME,
|
|
213
|
+
resource=models.SingletonTrackedResource(
|
|
214
|
+
location="eastus",
|
|
215
|
+
properties=models.SingletonTrackedResourceProperties(
|
|
216
|
+
models.SingletonTrackedResourceProperties(description="valid")
|
|
217
|
+
),
|
|
218
|
+
),
|
|
219
|
+
).result()
|
|
220
|
+
assert result.properties.description == "valid"
|
|
221
|
+
assert result.properties.provisioning_state == "Succeeded"
|
|
222
|
+
assert result.name == "default"
|
|
223
|
+
assert result.type == "Azure.ResourceManager.Models.Resources/singletonTrackedResources"
|
|
224
|
+
assert result.system_data.created_by == "AzureSDK"
|
|
225
|
+
|
|
226
|
+
|
|
227
|
+
def test_singleton_tracked_resources_update(client):
|
|
228
|
+
result = client.singleton_tracked_resources.update(
|
|
229
|
+
resource_group_name=RESOURCE_GROUP_NAME,
|
|
230
|
+
properties=models.SingletonTrackedResource(
|
|
231
|
+
location="eastus2",
|
|
232
|
+
properties=models.SingletonTrackedResourceProperties(
|
|
233
|
+
models.SingletonTrackedResourceProperties(description="valid2")
|
|
234
|
+
),
|
|
235
|
+
),
|
|
236
|
+
)
|
|
237
|
+
assert result.properties.description == "valid2"
|
|
238
|
+
assert result.properties.provisioning_state == "Succeeded"
|
|
239
|
+
assert result.name == "default"
|
|
240
|
+
assert result.type == "Azure.ResourceManager.Models.Resources/singletonTrackedResources"
|
|
241
|
+
assert result.system_data.created_by == "AzureSDK"
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
def test_singleton_tracked_resources_list_by_resource_group(client):
|
|
245
|
+
response = client.singleton_tracked_resources.list_by_resource_group(
|
|
246
|
+
resource_group_name=RESOURCE_GROUP_NAME,
|
|
247
|
+
)
|
|
248
|
+
result = [r for r in response]
|
|
249
|
+
for result in result:
|
|
250
|
+
assert result.properties.description == "valid"
|
|
251
|
+
assert result.properties.provisioning_state == "Succeeded"
|
|
252
|
+
assert result.name == "default"
|
|
253
|
+
assert result.type == "Azure.ResourceManager.Models.Resources/singletonTrackedResources"
|
|
254
|
+
assert result.system_data.created_by == "AzureSDK"
|
|
@@ -0,0 +1,92 @@
|
|
|
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 import AccessClient
|
|
8
|
+
from specs.azure.clientgenerator.core.access import models
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@pytest.fixture
|
|
12
|
+
def client():
|
|
13
|
+
with AccessClient() as client:
|
|
14
|
+
yield client
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def test_no_decorator_in_public(client: AccessClient):
|
|
18
|
+
result = client.public_operation.no_decorator_in_public(name="test")
|
|
19
|
+
assert result == models.NoDecoratorModelInPublic(name="test")
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def test_public_decorator_in_public(client: AccessClient):
|
|
23
|
+
result = client.public_operation.public_decorator_in_public(name="test")
|
|
24
|
+
assert result == models.PublicDecoratorModelInPublic(name="test")
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def test_no_decorator_in_internal(client: AccessClient):
|
|
28
|
+
result = client.internal_operation._no_decorator_in_internal(name="test")
|
|
29
|
+
assert result == models._models.NoDecoratorModelInInternal(name="test")
|
|
30
|
+
|
|
31
|
+
with pytest.raises(ImportError):
|
|
32
|
+
from specs.azure.clientgenerator.core.access.models import NoDecoratorModelInInternal
|
|
33
|
+
|
|
34
|
+
with pytest.raises(AttributeError):
|
|
35
|
+
client.internal_operation.no_decorator_in_internal(name="test")
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def test_internal_decorator_in_internal(client: AccessClient):
|
|
39
|
+
result = client.internal_operation._internal_decorator_in_internal(name="test")
|
|
40
|
+
assert result == models._models.InternalDecoratorModelInInternal(name="test")
|
|
41
|
+
|
|
42
|
+
with pytest.raises(ImportError):
|
|
43
|
+
from specs.azure.clientgenerator.core.access.models import InternalDecoratorModelInInternal
|
|
44
|
+
|
|
45
|
+
with pytest.raises(AttributeError):
|
|
46
|
+
client.internal_operation.internal_decorator_in_internal(name="test")
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def test_public_decorator_in_internal(client: AccessClient):
|
|
50
|
+
result = client.internal_operation._public_decorator_in_internal(name="test")
|
|
51
|
+
assert result == models.PublicDecoratorModelInInternal(name="test")
|
|
52
|
+
|
|
53
|
+
with pytest.raises(AttributeError):
|
|
54
|
+
client.internal_operation.public_decorator_in_internal(name="test")
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def test_public(client: AccessClient):
|
|
58
|
+
result = client.shared_model_in_operation.public(name="test")
|
|
59
|
+
assert result == models.SharedModel(name="test")
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
def test_internal(client: AccessClient):
|
|
63
|
+
result = client.shared_model_in_operation._internal(name="test")
|
|
64
|
+
assert result == models.SharedModel(name="test")
|
|
65
|
+
|
|
66
|
+
with pytest.raises(AttributeError):
|
|
67
|
+
client.shared_model_in_operation.internal(name="test")
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
def test_operation(client: AccessClient):
|
|
71
|
+
result = client.relative_model_in_operation._operation(name="test")
|
|
72
|
+
assert result == models._models.OuterModel(name="Madge", inner=models._models.InnerModel(name="Madge"))
|
|
73
|
+
|
|
74
|
+
with pytest.raises(ImportError):
|
|
75
|
+
from specs.azure.clientgenerator.core.access.models import OuterModel
|
|
76
|
+
|
|
77
|
+
with pytest.raises(ImportError):
|
|
78
|
+
from specs.azure.clientgenerator.core.access.models import InnerModel
|
|
79
|
+
|
|
80
|
+
with pytest.raises(AttributeError):
|
|
81
|
+
client.shared_model_in_operation.operation(name="test")
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
def test_discriminator(client: AccessClient):
|
|
85
|
+
result = client.relative_model_in_operation._discriminator(kind="real")
|
|
86
|
+
assert result == models._models.RealModel(name="Madge", kind="real")
|
|
87
|
+
|
|
88
|
+
with pytest.raises(ImportError):
|
|
89
|
+
from specs.azure.clientgenerator.core.access.models import RealModel
|
|
90
|
+
|
|
91
|
+
with pytest.raises(AttributeError):
|
|
92
|
+
client.shared_model_in_operation.discriminator(kind="real")
|
|
@@ -0,0 +1,84 @@
|
|
|
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 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
|
+
def client():
|
|
18
|
+
with FlattenPropertyClient() as client:
|
|
19
|
+
yield client
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
# ========== test for cadl-ranch ==========
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def test_put_flatten_model(client: FlattenPropertyClient):
|
|
26
|
+
resp = FlattenModel(name="test", properties=ChildModel(age=1, description="test"))
|
|
27
|
+
assert client.put_flatten_model(FlattenModel(name="foo", properties=ChildModel(age=10, description="bar"))) == resp
|
|
28
|
+
assert client.put_flatten_model(FlattenModel(name="foo", age=10, description="bar")) == resp
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def test_put_nested_flatten_model(client: FlattenPropertyClient):
|
|
32
|
+
# python doesn't support nested flatten model
|
|
33
|
+
assert client.put_nested_flatten_model(
|
|
34
|
+
NestedFlattenModel(
|
|
35
|
+
name="foo",
|
|
36
|
+
properties=ChildFlattenModel(summary="bar", properties=ChildModel(age=10, description="test")),
|
|
37
|
+
)
|
|
38
|
+
) == NestedFlattenModel(
|
|
39
|
+
name="test",
|
|
40
|
+
properties=ChildFlattenModel(summary="test", properties=ChildModel(age=1, description="foo")),
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
# ============test for compatibility ============
|
|
45
|
+
def test_dpg_model_common():
|
|
46
|
+
flatten_model = FlattenModel(name="hello", properties=ChildModel(age=0, description="test"))
|
|
47
|
+
assert flatten_model.name == "hello"
|
|
48
|
+
assert flatten_model.properties.age == 0
|
|
49
|
+
assert flatten_model.properties.description == "test"
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def test_dpg_model_none():
|
|
53
|
+
flatten_model = FlattenModel()
|
|
54
|
+
assert flatten_model.name is None
|
|
55
|
+
assert flatten_model.properties is None
|
|
56
|
+
assert flatten_model.age is None
|
|
57
|
+
assert flatten_model.description is None
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
def test_dpg_model_compatibility():
|
|
61
|
+
flatten_model = FlattenModel(description="test", age=0)
|
|
62
|
+
assert flatten_model.description == "test"
|
|
63
|
+
assert flatten_model.age == 0
|
|
64
|
+
assert flatten_model.properties.description == "test"
|
|
65
|
+
assert flatten_model.properties.age == 0
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
def test_dpg_model_setattr():
|
|
69
|
+
flatten_model = FlattenModel()
|
|
70
|
+
|
|
71
|
+
flatten_model.age = 0
|
|
72
|
+
assert flatten_model.properties.age == 0
|
|
73
|
+
flatten_model.description = "test"
|
|
74
|
+
assert flatten_model.properties.description == "test"
|
|
75
|
+
|
|
76
|
+
flatten_model.properties.age = 1
|
|
77
|
+
assert flatten_model.age == 1
|
|
78
|
+
flatten_model.properties.description = "test2"
|
|
79
|
+
assert flatten_model.description == "test2"
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
def test_dpg_model_exception():
|
|
83
|
+
with pytest.raises(AttributeError):
|
|
84
|
+
FlattenModel().no_prop
|
|
@@ -0,0 +1,28 @@
|
|
|
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 import UsageClient
|
|
8
|
+
from specs.azure.clientgenerator.core.usage import models
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@pytest.fixture
|
|
12
|
+
def client():
|
|
13
|
+
with UsageClient() as client:
|
|
14
|
+
yield client
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def test_input_to_input_output(client: UsageClient):
|
|
18
|
+
client.model_in_operation.input_to_input_output(models.InputModel(name="Madge"))
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def test_output_to_input_output(client: UsageClient):
|
|
22
|
+
assert models.OutputModel(name="Madge") == client.model_in_operation.output_to_input_output()
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def test_model_usage(client: UsageClient):
|
|
26
|
+
assert models.RoundTripModel(
|
|
27
|
+
result=models.ResultModel(name="Madge")
|
|
28
|
+
) == client.model_in_operation.model_in_read_only_property(body=models.RoundTripModel())
|
|
@@ -0,0 +1,70 @@
|
|
|
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 BasicClient, models
|
|
8
|
+
|
|
9
|
+
VALID_USER = models.User(id=1, name="Madge", etag="11bdc430-65e8-45ad-81d9-8ffa60d55b59")
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@pytest.fixture
|
|
13
|
+
def client():
|
|
14
|
+
with BasicClient() as client:
|
|
15
|
+
yield client
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def test_create_or_update(client: BasicClient):
|
|
19
|
+
result = client.create_or_update(id=1, resource={"name": "Madge"})
|
|
20
|
+
assert result == VALID_USER
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def test_create_or_replace(client: BasicClient):
|
|
24
|
+
result = client.create_or_replace(id=1, resource={"name": "Madge"})
|
|
25
|
+
assert result == VALID_USER
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def test_get(client: BasicClient):
|
|
29
|
+
result = client.get(id=1)
|
|
30
|
+
assert result == VALID_USER
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def test_list(client: BasicClient):
|
|
34
|
+
result = list(
|
|
35
|
+
client.list(
|
|
36
|
+
top=5,
|
|
37
|
+
skip=10,
|
|
38
|
+
orderby=["id"],
|
|
39
|
+
filter="id lt 10",
|
|
40
|
+
select=["id", "orders", "etag"],
|
|
41
|
+
expand=["orders"],
|
|
42
|
+
)
|
|
43
|
+
)
|
|
44
|
+
assert len(result) == 2
|
|
45
|
+
assert result[0].id == 1
|
|
46
|
+
assert result[0].name == "Madge"
|
|
47
|
+
assert result[0].etag == "11bdc430-65e8-45ad-81d9-8ffa60d55b59"
|
|
48
|
+
assert result[0].orders[0].id == 1
|
|
49
|
+
assert result[0].orders[0].user_id == 1
|
|
50
|
+
assert result[0].orders[0].detail == "a recorder"
|
|
51
|
+
assert result[1].id == 2
|
|
52
|
+
assert result[1].name == "John"
|
|
53
|
+
assert result[1].etag == "11bdc430-65e8-45ad-81d9-8ffa60d55b5a"
|
|
54
|
+
assert result[1].orders[0].id == 2
|
|
55
|
+
assert result[1].orders[0].user_id == 2
|
|
56
|
+
assert result[1].orders[0].detail == "a TV"
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
def test_delete(client: BasicClient):
|
|
60
|
+
client.delete(id=1)
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
def test_export(client: BasicClient):
|
|
64
|
+
result = client.export(id=1, format="json")
|
|
65
|
+
assert result == VALID_USER
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
def test_export_all_users(client: BasicClient):
|
|
69
|
+
result = client.export_all_users(format="json")
|
|
70
|
+
assert result.users[0] == VALID_USER
|
|
@@ -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 azurecore.lro.rpc import RpcClient, models
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@pytest.fixture
|
|
11
|
+
def client():
|
|
12
|
+
with RpcClient() as client:
|
|
13
|
+
yield client
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def test_long_running_rpc(client: RpcClient, polling_method):
|
|
17
|
+
result = client.begin_long_running_rpc(
|
|
18
|
+
models.GenerationOptions(prompt="text"), polling_interval=0, polling=polling_method
|
|
19
|
+
).result()
|
|
20
|
+
assert result == models.GenerationResult(data="text data")
|
|
@@ -0,0 +1,32 @@
|
|
|
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 import StandardClient
|
|
8
|
+
from specs.azure.core.lro.standard.models import User, ExportedUser
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@pytest.fixture
|
|
12
|
+
def client():
|
|
13
|
+
with StandardClient() as client:
|
|
14
|
+
yield client
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def test_lro_core_put(client, polling_method):
|
|
18
|
+
user = User({"name": "madge", "role": "contributor"})
|
|
19
|
+
result = client.begin_create_or_replace(
|
|
20
|
+
name=user.name, resource=user, polling_interval=0, polling=polling_method
|
|
21
|
+
).result()
|
|
22
|
+
assert result == user
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def test_lro_core_delete(client, polling_method):
|
|
26
|
+
client.begin_delete(name="madge", polling_interval=0, polling=polling_method).result()
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def test_lro_core_export(client, polling_method):
|
|
30
|
+
export_user = ExportedUser({"name": "madge", "resourceUri": "/users/madge"})
|
|
31
|
+
result = client.begin_export(name="madge", format="json", polling_interval=0, polling=polling_method).result()
|
|
32
|
+
assert result == export_user
|
|
@@ -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 specs.azure.core.model import ModelClient
|
|
8
|
+
from specs.azure.core.model.models import AzureEmbeddingModel
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@pytest.fixture
|
|
12
|
+
def client():
|
|
13
|
+
with ModelClient() as client:
|
|
14
|
+
yield client
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def test_azure_core_embedding_vector_post(client: ModelClient):
|
|
18
|
+
embedding_model = AzureEmbeddingModel(embedding=[0, 1, 2, 3, 4])
|
|
19
|
+
result = client.azure_core_embedding_vector.post(
|
|
20
|
+
body=embedding_model,
|
|
21
|
+
)
|
|
22
|
+
assert result == AzureEmbeddingModel(embedding=[5, 6, 7, 8, 9])
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def test_azure_core_embedding_vector_put(client: ModelClient):
|
|
26
|
+
client.azure_core_embedding_vector.put(body=[0, 1, 2, 3, 4])
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def test_azure_core_embedding_vector_get(client: ModelClient):
|
|
30
|
+
assert [0, 1, 2, 3, 4] == client.azure_core_embedding_vector.get()
|
|
@@ -0,0 +1,51 @@
|
|
|
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 typing import Iterable
|
|
8
|
+
from specs.azure.core.page import PageClient, models
|
|
9
|
+
|
|
10
|
+
VALID_USER = models.User(id=1, name="Madge", etag="11bdc430-65e8-45ad-81d9-8ffa60d55b59")
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@pytest.fixture
|
|
14
|
+
def client():
|
|
15
|
+
with PageClient() as client:
|
|
16
|
+
yield client
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def _list_with_page_tests(pager: Iterable[models.User]):
|
|
20
|
+
result = list(pager)
|
|
21
|
+
assert len(result) == 1
|
|
22
|
+
assert result[0].id == 1
|
|
23
|
+
assert result[0].name == "Madge"
|
|
24
|
+
assert result[0].etag == "11bdc430-65e8-45ad-81d9-8ffa60d55b59"
|
|
25
|
+
assert result[0].orders is None
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def test_list_with_page(client: PageClient):
|
|
29
|
+
_list_with_page_tests(client.list_with_page())
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def test_list_with_custom_page_model(client: PageClient):
|
|
33
|
+
_list_with_page_tests(client.list_with_custom_page_model())
|
|
34
|
+
with pytest.raises(AttributeError):
|
|
35
|
+
models.CustomPageModel
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def test_list_with_parameters(client: PageClient):
|
|
39
|
+
result = list(client.list_with_parameters(models.ListItemInputBody(input_name="Madge"), another="Second"))
|
|
40
|
+
assert len(result) == 1
|
|
41
|
+
assert result[0] == VALID_USER
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def test_two_models_as_page_item(client: PageClient):
|
|
45
|
+
result = list(client.two_models_as_page_item.list_first_item())
|
|
46
|
+
assert len(result) == 1
|
|
47
|
+
assert result[0].id == 1
|
|
48
|
+
|
|
49
|
+
result = list(client.two_models_as_page_item.list_second_item())
|
|
50
|
+
assert len(result) == 1
|
|
51
|
+
assert result[0].name == "Madge"
|