@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.
Files changed (334) hide show
  1. package/README.md +118 -0
  2. package/dist/emitter/code-model.d.ts +4 -0
  3. package/dist/emitter/code-model.d.ts.map +1 -0
  4. package/dist/emitter/code-model.js +195 -0
  5. package/dist/emitter/code-model.js.map +1 -0
  6. package/dist/emitter/emitter.d.ts +6 -0
  7. package/dist/emitter/emitter.d.ts.map +1 -0
  8. package/dist/emitter/emitter.js +104 -0
  9. package/dist/emitter/emitter.js.map +1 -0
  10. package/dist/emitter/external-process.d.ts +20 -0
  11. package/dist/emitter/external-process.d.ts.map +1 -0
  12. package/dist/emitter/external-process.js +44 -0
  13. package/dist/emitter/external-process.js.map +1 -0
  14. package/dist/emitter/http.d.ts +7 -0
  15. package/dist/emitter/http.d.ts.map +1 -0
  16. package/dist/emitter/http.js +268 -0
  17. package/dist/emitter/http.js.map +1 -0
  18. package/dist/emitter/index.d.ts +3 -0
  19. package/dist/emitter/index.d.ts.map +1 -0
  20. package/dist/emitter/index.js +3 -0
  21. package/dist/emitter/index.js.map +1 -0
  22. package/dist/emitter/lib.d.ts +30 -0
  23. package/dist/emitter/lib.d.ts.map +1 -0
  24. package/dist/emitter/lib.js +33 -0
  25. package/dist/emitter/lib.js.map +1 -0
  26. package/dist/emitter/types.d.ts +36 -0
  27. package/dist/emitter/types.d.ts.map +1 -0
  28. package/dist/emitter/types.js +491 -0
  29. package/dist/emitter/types.js.map +1 -0
  30. package/dist/emitter/utils.d.ts +26 -0
  31. package/dist/emitter/utils.d.ts.map +1 -0
  32. package/dist/emitter/utils.js +155 -0
  33. package/dist/emitter/utils.js.map +1 -0
  34. package/emitter/src/code-model.ts +272 -0
  35. package/emitter/src/emitter.ts +127 -0
  36. package/emitter/src/external-process.ts +52 -0
  37. package/emitter/src/http.ts +382 -0
  38. package/emitter/src/index.ts +2 -0
  39. package/emitter/src/lib.ts +59 -0
  40. package/emitter/src/types.ts +573 -0
  41. package/emitter/src/utils.ts +215 -0
  42. package/emitter/temp/tsconfig.tsbuildinfo +1 -0
  43. package/emitter/test/utils.test.ts +22 -0
  44. package/emitter/tsconfig.build.json +11 -0
  45. package/emitter/tsconfig.json +7 -0
  46. package/emitter/vitest.config.ts +4 -0
  47. package/eng/scripts/Build-Packages.ps1 +86 -0
  48. package/eng/scripts/Check-GitChanges.ps1 +22 -0
  49. package/eng/scripts/Functions.ps1 +26 -0
  50. package/eng/scripts/Generate.ps1 +11 -0
  51. package/eng/scripts/Generation.psm1 +22 -0
  52. package/eng/scripts/Initialize-Repository.ps1 +40 -0
  53. package/eng/scripts/Test-Packages.ps1 +65 -0
  54. package/eng/scripts/ci/format.ts +3 -0
  55. package/eng/scripts/ci/lint.ts +39 -0
  56. package/eng/scripts/ci/mypy.ini +38 -0
  57. package/eng/scripts/ci/pylintrc +59 -0
  58. package/eng/scripts/ci/pyproject.toml +18 -0
  59. package/eng/scripts/ci/pyrightconfig.json +6 -0
  60. package/eng/scripts/ci/regenerate.ts +299 -0
  61. package/eng/scripts/ci/run-ci.ts +88 -0
  62. package/eng/scripts/ci/run_apiview.py +40 -0
  63. package/eng/scripts/ci/run_mypy.py +49 -0
  64. package/eng/scripts/ci/run_pylint.py +50 -0
  65. package/eng/scripts/ci/run_pyright.py +58 -0
  66. package/eng/scripts/ci/util.py +72 -0
  67. package/eng/scripts/ci/utils.ts +48 -0
  68. package/eng/scripts/setup/__pycache__/venvtools.cpython-38.pyc +0 -0
  69. package/eng/scripts/setup/install.py +53 -0
  70. package/eng/scripts/setup/prepare.py +42 -0
  71. package/eng/scripts/setup/run-python3.ts +25 -0
  72. package/eng/scripts/setup/run_tsp.py +42 -0
  73. package/eng/scripts/setup/system-requirements.ts +261 -0
  74. package/eng/scripts/setup/venvtools.py +87 -0
  75. package/generator/LICENSE +21 -0
  76. package/generator/README.md +1 -0
  77. package/generator/dev_requirements.txt +13 -0
  78. package/generator/pygen/__init__.py +107 -0
  79. package/generator/pygen/_version.py +7 -0
  80. package/generator/pygen/black.py +71 -0
  81. package/generator/pygen/codegen/__init__.py +338 -0
  82. package/generator/pygen/codegen/_utils.py +17 -0
  83. package/generator/pygen/codegen/models/__init__.py +204 -0
  84. package/generator/pygen/codegen/models/base.py +186 -0
  85. package/generator/pygen/codegen/models/base_builder.py +118 -0
  86. package/generator/pygen/codegen/models/client.py +433 -0
  87. package/generator/pygen/codegen/models/code_model.py +237 -0
  88. package/generator/pygen/codegen/models/combined_type.py +149 -0
  89. package/generator/pygen/codegen/models/constant_type.py +129 -0
  90. package/generator/pygen/codegen/models/credential_types.py +214 -0
  91. package/generator/pygen/codegen/models/dictionary_type.py +127 -0
  92. package/generator/pygen/codegen/models/enum_type.py +238 -0
  93. package/generator/pygen/codegen/models/imports.py +291 -0
  94. package/generator/pygen/codegen/models/list_type.py +143 -0
  95. package/generator/pygen/codegen/models/lro_operation.py +142 -0
  96. package/generator/pygen/codegen/models/lro_paging_operation.py +32 -0
  97. package/generator/pygen/codegen/models/model_type.py +359 -0
  98. package/generator/pygen/codegen/models/operation.py +530 -0
  99. package/generator/pygen/codegen/models/operation_group.py +184 -0
  100. package/generator/pygen/codegen/models/paging_operation.py +155 -0
  101. package/generator/pygen/codegen/models/parameter.py +412 -0
  102. package/generator/pygen/codegen/models/parameter_list.py +387 -0
  103. package/generator/pygen/codegen/models/primitive_types.py +659 -0
  104. package/generator/pygen/codegen/models/property.py +170 -0
  105. package/generator/pygen/codegen/models/request_builder.py +189 -0
  106. package/generator/pygen/codegen/models/request_builder_parameter.py +115 -0
  107. package/generator/pygen/codegen/models/response.py +348 -0
  108. package/generator/pygen/codegen/models/utils.py +21 -0
  109. package/generator/pygen/codegen/serializers/__init__.py +574 -0
  110. package/generator/pygen/codegen/serializers/base_serializer.py +21 -0
  111. package/generator/pygen/codegen/serializers/builder_serializer.py +1507 -0
  112. package/generator/pygen/codegen/serializers/client_serializer.py +294 -0
  113. package/generator/pygen/codegen/serializers/enum_serializer.py +15 -0
  114. package/generator/pygen/codegen/serializers/general_serializer.py +213 -0
  115. package/generator/pygen/codegen/serializers/import_serializer.py +126 -0
  116. package/generator/pygen/codegen/serializers/metadata_serializer.py +198 -0
  117. package/generator/pygen/codegen/serializers/model_init_serializer.py +33 -0
  118. package/generator/pygen/codegen/serializers/model_serializer.py +317 -0
  119. package/generator/pygen/codegen/serializers/operation_groups_serializer.py +89 -0
  120. package/generator/pygen/codegen/serializers/operations_init_serializer.py +44 -0
  121. package/generator/pygen/codegen/serializers/parameter_serializer.py +221 -0
  122. package/generator/pygen/codegen/serializers/patch_serializer.py +19 -0
  123. package/generator/pygen/codegen/serializers/request_builders_serializer.py +52 -0
  124. package/generator/pygen/codegen/serializers/sample_serializer.py +168 -0
  125. package/generator/pygen/codegen/serializers/test_serializer.py +292 -0
  126. package/generator/pygen/codegen/serializers/types_serializer.py +31 -0
  127. package/generator/pygen/codegen/serializers/utils.py +68 -0
  128. package/generator/pygen/codegen/templates/client.py.jinja2 +37 -0
  129. package/generator/pygen/codegen/templates/client_container.py.jinja2 +12 -0
  130. package/generator/pygen/codegen/templates/config.py.jinja2 +73 -0
  131. package/generator/pygen/codegen/templates/config_container.py.jinja2 +16 -0
  132. package/generator/pygen/codegen/templates/conftest.py.jinja2 +28 -0
  133. package/generator/pygen/codegen/templates/enum.py.jinja2 +13 -0
  134. package/generator/pygen/codegen/templates/enum_container.py.jinja2 +10 -0
  135. package/generator/pygen/codegen/templates/init.py.jinja2 +24 -0
  136. package/generator/pygen/codegen/templates/keywords.jinja2 +19 -0
  137. package/generator/pygen/codegen/templates/lro_operation.py.jinja2 +16 -0
  138. package/generator/pygen/codegen/templates/lro_paging_operation.py.jinja2 +18 -0
  139. package/generator/pygen/codegen/templates/macros.jinja2 +12 -0
  140. package/generator/pygen/codegen/templates/metadata.json.jinja2 +167 -0
  141. package/generator/pygen/codegen/templates/model_base.py.jinja2 +1157 -0
  142. package/generator/pygen/codegen/templates/model_container.py.jinja2 +12 -0
  143. package/generator/pygen/codegen/templates/model_dpg.py.jinja2 +97 -0
  144. package/generator/pygen/codegen/templates/model_init.py.jinja2 +28 -0
  145. package/generator/pygen/codegen/templates/model_msrest.py.jinja2 +92 -0
  146. package/generator/pygen/codegen/templates/operation.py.jinja2 +21 -0
  147. package/generator/pygen/codegen/templates/operation_group.py.jinja2 +75 -0
  148. package/generator/pygen/codegen/templates/operation_groups_container.py.jinja2 +19 -0
  149. package/generator/pygen/codegen/templates/operation_tools.jinja2 +81 -0
  150. package/generator/pygen/codegen/templates/operations_folder_init.py.jinja2 +17 -0
  151. package/generator/pygen/codegen/templates/packaging_templates/CHANGELOG.md.jinja2 +6 -0
  152. package/generator/pygen/codegen/templates/packaging_templates/LICENSE.jinja2 +21 -0
  153. package/generator/pygen/codegen/templates/packaging_templates/MANIFEST.in.jinja2 +8 -0
  154. package/generator/pygen/codegen/templates/packaging_templates/README.md.jinja2 +107 -0
  155. package/generator/pygen/codegen/templates/packaging_templates/dev_requirements.txt.jinja2 +9 -0
  156. package/generator/pygen/codegen/templates/packaging_templates/setup.py.jinja2 +108 -0
  157. package/generator/pygen/codegen/templates/paging_operation.py.jinja2 +21 -0
  158. package/generator/pygen/codegen/templates/patch.py.jinja2 +19 -0
  159. package/generator/pygen/codegen/templates/pkgutil_init.py.jinja2 +1 -0
  160. package/generator/pygen/codegen/templates/request_builder.py.jinja2 +28 -0
  161. package/generator/pygen/codegen/templates/request_builders.py.jinja2 +10 -0
  162. package/generator/pygen/codegen/templates/rest_init.py.jinja2 +12 -0
  163. package/generator/pygen/codegen/templates/sample.py.jinja2 +44 -0
  164. package/generator/pygen/codegen/templates/serialization.py.jinja2 +2114 -0
  165. package/generator/pygen/codegen/templates/test.py.jinja2 +50 -0
  166. package/generator/pygen/codegen/templates/testpreparer.py.jinja2 +26 -0
  167. package/generator/pygen/codegen/templates/types.py.jinja2 +7 -0
  168. package/generator/pygen/codegen/templates/validation.py.jinja2 +38 -0
  169. package/generator/pygen/codegen/templates/vendor.py.jinja2 +95 -0
  170. package/generator/pygen/codegen/templates/version.py.jinja2 +4 -0
  171. package/generator/pygen/m2r.py +65 -0
  172. package/generator/pygen/postprocess/__init__.py +183 -0
  173. package/generator/pygen/postprocess/get_all.py +19 -0
  174. package/generator/pygen/postprocess/venvtools.py +75 -0
  175. package/generator/pygen/preprocess/__init__.py +515 -0
  176. package/generator/pygen/preprocess/helpers.py +27 -0
  177. package/generator/pygen/preprocess/python_mappings.py +224 -0
  178. package/generator/pygen/utils.py +163 -0
  179. package/generator/pygen.egg-info/PKG-INFO +25 -0
  180. package/generator/pygen.egg-info/SOURCES.txt +66 -0
  181. package/generator/pygen.egg-info/dependency_links.txt +1 -0
  182. package/generator/pygen.egg-info/requires.txt +4 -0
  183. package/generator/pygen.egg-info/top_level.txt +1 -0
  184. package/generator/requirements.txt +12 -0
  185. package/generator/setup.py +55 -0
  186. package/generator/test/azure/mock_api_tests/asynctests/test_azure_arm_models_common_types_managed_identity_async.py +63 -0
  187. package/generator/test/azure/mock_api_tests/asynctests/test_azure_arm_models_resource_async.py +284 -0
  188. package/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_access_async.py +101 -0
  189. package/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_flatten_async.py +93 -0
  190. package/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_usage_async.py +31 -0
  191. package/generator/test/azure/mock_api_tests/asynctests/test_azure_core_basic_async.py +76 -0
  192. package/generator/test/azure/mock_api_tests/asynctests/test_azure_core_lro_rpc_async.py +22 -0
  193. package/generator/test/azure/mock_api_tests/asynctests/test_azure_core_lro_standard_async.py +39 -0
  194. package/generator/test/azure/mock_api_tests/asynctests/test_azure_core_model_async.py +33 -0
  195. package/generator/test/azure/mock_api_tests/asynctests/test_azure_core_page_async.py +58 -0
  196. package/generator/test/azure/mock_api_tests/asynctests/test_azure_core_scalar_async.py +41 -0
  197. package/generator/test/azure/mock_api_tests/asynctests/test_azure_core_traits_async.py +87 -0
  198. package/generator/test/azure/mock_api_tests/asynctests/test_azure_example_basic_async.py +30 -0
  199. package/generator/test/azure/mock_api_tests/asynctests/test_azure_special_headers_client_request_id_async.py +30 -0
  200. package/generator/test/azure/mock_api_tests/conftest.py +150 -0
  201. package/generator/test/azure/mock_api_tests/test_azure_arm_models_common_types_managed_identity.py +60 -0
  202. package/generator/test/azure/mock_api_tests/test_azure_arm_models_resource.py +254 -0
  203. package/generator/test/azure/mock_api_tests/test_azure_client_generator_core_access.py +92 -0
  204. package/generator/test/azure/mock_api_tests/test_azure_client_generator_core_flatten.py +84 -0
  205. package/generator/test/azure/mock_api_tests/test_azure_client_generator_core_usage.py +28 -0
  206. package/generator/test/azure/mock_api_tests/test_azure_core_basic.py +70 -0
  207. package/generator/test/azure/mock_api_tests/test_azure_core_lro_rpc.py +20 -0
  208. package/generator/test/azure/mock_api_tests/test_azure_core_lro_standard.py +32 -0
  209. package/generator/test/azure/mock_api_tests/test_azure_core_model.py +30 -0
  210. package/generator/test/azure/mock_api_tests/test_azure_core_page.py +51 -0
  211. package/generator/test/azure/mock_api_tests/test_azure_core_scalar.py +35 -0
  212. package/generator/test/azure/mock_api_tests/test_azure_core_traits.py +85 -0
  213. package/generator/test/azure/mock_api_tests/test_azure_example_basic.py +29 -0
  214. package/generator/test/azure/mock_api_tests/test_azure_special_headers_client_request_id.py +29 -0
  215. package/generator/test/azure/requirements.txt +89 -0
  216. package/generator/test/azure/tox.ini +56 -0
  217. package/generator/test/generic_mock_api_tests/asynctests/test_authentication_async.py +121 -0
  218. package/generator/test/generic_mock_api_tests/asynctests/test_client_naming_async.py +69 -0
  219. package/generator/test/generic_mock_api_tests/asynctests/test_client_structure_async.py +62 -0
  220. package/generator/test/generic_mock_api_tests/asynctests/test_encode_bytes_async.py +133 -0
  221. package/generator/test/generic_mock_api_tests/asynctests/test_encode_datetime_async.py +127 -0
  222. package/generator/test/generic_mock_api_tests/asynctests/test_encode_duration_async.py +63 -0
  223. package/generator/test/generic_mock_api_tests/asynctests/test_encode_numeric_async.py +35 -0
  224. package/generator/test/generic_mock_api_tests/asynctests/test_headasboolean_async.py +35 -0
  225. package/generator/test/generic_mock_api_tests/asynctests/test_parameters_basic_async.py +24 -0
  226. package/generator/test/generic_mock_api_tests/asynctests/test_parameters_body_optionality_async.py +30 -0
  227. package/generator/test/generic_mock_api_tests/asynctests/test_parameters_collection_format_async.py +44 -0
  228. package/generator/test/generic_mock_api_tests/asynctests/test_parameters_spread_async.py +76 -0
  229. package/generator/test/generic_mock_api_tests/asynctests/test_payload_content_negotiation_async.py +37 -0
  230. package/generator/test/generic_mock_api_tests/asynctests/test_payload_json_merge_patch_async.py +98 -0
  231. package/generator/test/generic_mock_api_tests/asynctests/test_payload_media_type_async.py +27 -0
  232. package/generator/test/generic_mock_api_tests/asynctests/test_payload_multipart_async.py +153 -0
  233. package/generator/test/generic_mock_api_tests/asynctests/test_payload_pageable_async.py +19 -0
  234. package/generator/test/generic_mock_api_tests/asynctests/test_payload_xml_async.py +103 -0
  235. package/generator/test/generic_mock_api_tests/asynctests/test_resiliency_srv_driven_async.py +128 -0
  236. package/generator/test/generic_mock_api_tests/asynctests/test_routes_async.py +331 -0
  237. package/generator/test/generic_mock_api_tests/asynctests/test_serialization_encoded_name_json_async.py +24 -0
  238. package/generator/test/generic_mock_api_tests/asynctests/test_server_endpoint_not_defined_async.py +18 -0
  239. package/generator/test/generic_mock_api_tests/asynctests/test_server_path_multiple_async.py +25 -0
  240. package/generator/test/generic_mock_api_tests/asynctests/test_server_path_single_async.py +18 -0
  241. package/generator/test/generic_mock_api_tests/asynctests/test_server_versions_not_versioned_async.py +28 -0
  242. package/generator/test/generic_mock_api_tests/asynctests/test_server_versions_versioned_async.py +34 -0
  243. package/generator/test/generic_mock_api_tests/asynctests/test_special_headers_conditional_request_async.py +38 -0
  244. package/generator/test/generic_mock_api_tests/asynctests/test_special_headers_repeatability_async.py +19 -0
  245. package/generator/test/generic_mock_api_tests/asynctests/test_special_words_async.py +42 -0
  246. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_array_async.py +118 -0
  247. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_dictionary_async.py +98 -0
  248. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_enum_extensible_async.py +25 -0
  249. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_enum_fixed_async.py +27 -0
  250. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_empty_async.py +32 -0
  251. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_inheritance_enum_discriminator_async.py +70 -0
  252. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_inheritance_nested_discriminator_async.py +85 -0
  253. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_inheritance_not_discriminated_async.py +34 -0
  254. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_inheritance_recursive_async.py +34 -0
  255. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_inheritance_single_discriminator_async.py +67 -0
  256. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_usage_async.py +32 -0
  257. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_visibility_async.py +47 -0
  258. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_property_additionalproperties_async.py +352 -0
  259. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_property_nullable_async.py +110 -0
  260. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_property_optional_async.py +197 -0
  261. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_property_valuetypes_async.py +315 -0
  262. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_scalar_async.py +60 -0
  263. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_union_async.py +90 -0
  264. package/generator/test/generic_mock_api_tests/asynctests/test_versioning_added_async.py +36 -0
  265. package/generator/test/generic_mock_api_tests/asynctests/test_versioning_made_optional_async.py +21 -0
  266. package/generator/test/generic_mock_api_tests/asynctests/test_versioning_removed_async.py +21 -0
  267. package/generator/test/generic_mock_api_tests/asynctests/test_versioning_renamed_from_async.py +29 -0
  268. package/generator/test/generic_mock_api_tests/asynctests/test_versioning_return_type_changed_from_async.py +18 -0
  269. package/generator/test/generic_mock_api_tests/asynctests/test_versioning_type_changed_from_async.py +22 -0
  270. package/generator/test/generic_mock_api_tests/conftest.py +113 -0
  271. package/generator/test/generic_mock_api_tests/data/image.jpg +0 -0
  272. package/generator/test/generic_mock_api_tests/data/image.png +0 -0
  273. package/generator/test/generic_mock_api_tests/test_authentication.py +113 -0
  274. package/generator/test/generic_mock_api_tests/test_client_naming.py +57 -0
  275. package/generator/test/generic_mock_api_tests/test_client_structure.py +57 -0
  276. package/generator/test/generic_mock_api_tests/test_encode_bytes.py +128 -0
  277. package/generator/test/generic_mock_api_tests/test_encode_datetime.py +123 -0
  278. package/generator/test/generic_mock_api_tests/test_encode_duration.py +60 -0
  279. package/generator/test/generic_mock_api_tests/test_encode_numeric.py +31 -0
  280. package/generator/test/generic_mock_api_tests/test_headasboolean.py +33 -0
  281. package/generator/test/generic_mock_api_tests/test_parameters_basic.py +22 -0
  282. package/generator/test/generic_mock_api_tests/test_parameters_body_optionality.py +27 -0
  283. package/generator/test/generic_mock_api_tests/test_parameters_collection_format.py +37 -0
  284. package/generator/test/generic_mock_api_tests/test_parameters_spread.py +66 -0
  285. package/generator/test/generic_mock_api_tests/test_payload_content_negotiation.py +33 -0
  286. package/generator/test/generic_mock_api_tests/test_payload_json_merge_patch.py +93 -0
  287. package/generator/test/generic_mock_api_tests/test_payload_media_type.py +25 -0
  288. package/generator/test/generic_mock_api_tests/test_payload_multipart.py +140 -0
  289. package/generator/test/generic_mock_api_tests/test_payload_pageable.py +18 -0
  290. package/generator/test/generic_mock_api_tests/test_payload_xml.py +93 -0
  291. package/generator/test/generic_mock_api_tests/test_resiliency_srv_driven.py +122 -0
  292. package/generator/test/generic_mock_api_tests/test_routes.py +285 -0
  293. package/generator/test/generic_mock_api_tests/test_serialization_encoded_name_json.py +21 -0
  294. package/generator/test/generic_mock_api_tests/test_server_endpoint_not_defined.py +17 -0
  295. package/generator/test/generic_mock_api_tests/test_server_path_multiple.py +21 -0
  296. package/generator/test/generic_mock_api_tests/test_server_path_single.py +17 -0
  297. package/generator/test/generic_mock_api_tests/test_server_versions_not_versioned.py +25 -0
  298. package/generator/test/generic_mock_api_tests/test_server_versions_versioned.py +30 -0
  299. package/generator/test/generic_mock_api_tests/test_special_headers_conditional_request.py +34 -0
  300. package/generator/test/generic_mock_api_tests/test_special_headers_repeatability.py +18 -0
  301. package/generator/test/generic_mock_api_tests/test_special_words.py +37 -0
  302. package/generator/test/generic_mock_api_tests/test_typetest_array.py +103 -0
  303. package/generator/test/generic_mock_api_tests/test_typetest_dictionary.py +86 -0
  304. package/generator/test/generic_mock_api_tests/test_typetest_enum_extensible.py +23 -0
  305. package/generator/test/generic_mock_api_tests/test_typetest_enum_fixed.py +25 -0
  306. package/generator/test/generic_mock_api_tests/test_typetest_model_empty.py +29 -0
  307. package/generator/test/generic_mock_api_tests/test_typetest_model_inheritance_enum_discriminator.py +58 -0
  308. package/generator/test/generic_mock_api_tests/test_typetest_model_inheritance_nested_discriminator.py +79 -0
  309. package/generator/test/generic_mock_api_tests/test_typetest_model_inheritance_not_discriminated.py +31 -0
  310. package/generator/test/generic_mock_api_tests/test_typetest_model_inheritance_recursive.py +32 -0
  311. package/generator/test/generic_mock_api_tests/test_typetest_model_inheritance_single_discriminator.py +60 -0
  312. package/generator/test/generic_mock_api_tests/test_typetest_model_usage.py +28 -0
  313. package/generator/test/generic_mock_api_tests/test_typetest_model_visibility.py +40 -0
  314. package/generator/test/generic_mock_api_tests/test_typetest_property_additionalproperties.py +313 -0
  315. package/generator/test/generic_mock_api_tests/test_typetest_property_nullable.py +102 -0
  316. package/generator/test/generic_mock_api_tests/test_typetest_property_optional.py +174 -0
  317. package/generator/test/generic_mock_api_tests/test_typetest_property_valuetypes.py +286 -0
  318. package/generator/test/generic_mock_api_tests/test_typetest_scalar.py +53 -0
  319. package/generator/test/generic_mock_api_tests/test_typetest_union.py +80 -0
  320. package/generator/test/generic_mock_api_tests/test_versioning_added.py +33 -0
  321. package/generator/test/generic_mock_api_tests/test_versioning_made_optional.py +20 -0
  322. package/generator/test/generic_mock_api_tests/test_versioning_removed.py +20 -0
  323. package/generator/test/generic_mock_api_tests/test_versioning_renamed_from.py +27 -0
  324. package/generator/test/generic_mock_api_tests/test_versioning_return_type_changed_from.py +17 -0
  325. package/generator/test/generic_mock_api_tests/test_versioning_type_changed_from.py +21 -0
  326. package/generator/test/generic_mock_api_tests/unittests/test_model_base_serialization.py +4067 -0
  327. package/generator/test/generic_mock_api_tests/unittests/test_model_base_xml_serialization.py +1001 -0
  328. package/generator/test/unbranded/mock_api_tests/asynctests/test_unbranded_async.py +24 -0
  329. package/generator/test/unbranded/mock_api_tests/cadl-ranch-config.yaml +27 -0
  330. package/generator/test/unbranded/mock_api_tests/conftest.py +35 -0
  331. package/generator/test/unbranded/mock_api_tests/test_unbranded.py +57 -0
  332. package/generator/test/unbranded/requirements.txt +72 -0
  333. package/generator/test/unbranded/tox.ini +56 -0
  334. package/package.json +93 -0
@@ -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())