@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,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"