@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,286 @@
1
+ # cspell: ignore Hdvcmxk
2
+ # -------------------------------------------------------------------------
3
+ # Copyright (c) Microsoft Corporation. All rights reserved.
4
+ # Licensed under the MIT License. See License.txt in the project root for
5
+ # license information.
6
+ # --------------------------------------------------------------------------
7
+ from calendar import c
8
+ import decimal
9
+
10
+ import pytest
11
+ import datetime
12
+ from typetest.property.valuetypes import ValueTypesClient, models
13
+
14
+
15
+ @pytest.fixture
16
+ def client():
17
+ with ValueTypesClient() as client:
18
+ yield client
19
+
20
+
21
+ def test_boolean(client: ValueTypesClient):
22
+ body = models.BooleanProperty(property=True)
23
+ assert body.property == body["property"]
24
+ client.boolean.put(body)
25
+
26
+ resp = client.boolean.get()
27
+ assert resp.property == resp["property"] == True
28
+
29
+
30
+ def test_boolean_literal(client: ValueTypesClient):
31
+ body = models.BooleanLiteralProperty(property=True)
32
+ assert body.property == body["property"]
33
+ client.boolean_literal.put(body)
34
+
35
+ resp = client.boolean_literal.get()
36
+ assert resp.property == resp["property"] == True
37
+
38
+
39
+ def test_bytes(client: ValueTypesClient):
40
+ body = models.BytesProperty(property=b"hello, world!")
41
+ assert body.property == b"hello, world!"
42
+ assert body["property"] == "aGVsbG8sIHdvcmxkIQ=="
43
+ client.bytes.put(body)
44
+
45
+ resp = client.bytes.get()
46
+ assert resp.property == b"hello, world!"
47
+ assert resp["property"] == "aGVsbG8sIHdvcmxkIQ=="
48
+
49
+
50
+ def test_collections_int(client: ValueTypesClient):
51
+ body = models.CollectionsIntProperty(property=[1, 2])
52
+ assert body.property == body["property"]
53
+ client.collections_int.put(body)
54
+
55
+ resp = client.collections_int.get()
56
+ assert resp.property == resp["property"] == [1, 2]
57
+
58
+
59
+ def test_collections_model(client: ValueTypesClient):
60
+ body = models.CollectionsModelProperty(property=[{"property": "hello"}, {"property": "world"}])
61
+ assert body.property[0].property == body["property"][0]["property"]
62
+ client.collections_model.put(body)
63
+
64
+ resp = client.collections_model.get()
65
+ assert resp.property[1].property == resp["property"][1]["property"]
66
+
67
+
68
+ def test_collections_string(client: ValueTypesClient):
69
+ body = models.CollectionsStringProperty(property=["hello", "world"])
70
+ assert body.property == body["property"]
71
+ client.collections_string.put(body)
72
+
73
+ resp = client.collections_string.get()
74
+ assert resp.property == resp["property"] == ["hello", "world"]
75
+
76
+
77
+ def test_datetime(client):
78
+ received_body = client.datetime.get()
79
+ assert received_body == {"property": "2022-08-26T18:38:00Z"}
80
+ assert received_body.property.year == 2022
81
+ assert received_body.property.month == 8
82
+ assert received_body.property.day == 26
83
+ assert received_body.property.hour == 18
84
+ assert received_body.property.minute == 38
85
+
86
+ client.datetime.put(models.DatetimeProperty(property=datetime.datetime(2022, 8, 26, hour=18, minute=38)))
87
+
88
+
89
+ def test_decimal(client: ValueTypesClient):
90
+ body = models.DecimalProperty(property=decimal.Decimal("0.33333"))
91
+ assert body.property == decimal.Decimal("0.33333")
92
+ assert body["property"] == 0.33333
93
+ client.decimal.put(body)
94
+
95
+ resp = client.decimal.get()
96
+ assert resp.property == decimal.Decimal("0.33333")
97
+ assert resp["property"] == 0.33333
98
+
99
+
100
+ def test_decimal128(client: ValueTypesClient):
101
+ body = models.Decimal128Property(property=decimal.Decimal("0.33333"))
102
+ assert body.property == decimal.Decimal("0.33333")
103
+ assert body["property"] == 0.33333
104
+ client.decimal128.put(body)
105
+
106
+ resp = client.decimal128.get()
107
+ assert resp.property == decimal.Decimal("0.33333")
108
+ assert resp["property"] == 0.33333
109
+
110
+
111
+ def test_dictionary_string(client: ValueTypesClient):
112
+ body = models.DictionaryStringProperty(property={"k1": "hello", "k2": "world"})
113
+ assert body.property == body["property"]
114
+ client.dictionary_string.put(body)
115
+
116
+ resp = client.dictionary_string.get()
117
+ assert resp.property == resp["property"] == {"k1": "hello", "k2": "world"}
118
+
119
+
120
+ def test_duration(client: ValueTypesClient):
121
+ body = models.DurationProperty(property="P123DT22H14M12.011S")
122
+ assert body.property == datetime.timedelta(days=123, seconds=80052, microseconds=11000)
123
+ assert body["property"] == "P123DT22H14M12.011S"
124
+ client.duration.put(body)
125
+
126
+ resp = client.duration.get()
127
+ assert resp.property == datetime.timedelta(days=123, seconds=80052, microseconds=11000)
128
+ assert resp["property"] == "P123DT22H14M12.011S"
129
+
130
+
131
+ def test_enum(client: ValueTypesClient):
132
+ body = models.EnumProperty(property=models.InnerEnum.VALUE_ONE)
133
+ assert body.property == body["property"]
134
+ client.enum.put(body)
135
+
136
+ resp = client.enum.get()
137
+ assert resp.property == resp["property"] == "ValueOne"
138
+
139
+
140
+ def test_extensible_enum(client: ValueTypesClient):
141
+ body = models.ExtensibleEnumProperty(property="UnknownValue")
142
+ assert body.property == body["property"]
143
+ client.extensible_enum.put(body)
144
+
145
+ resp = client.extensible_enum.get()
146
+ assert resp.property == resp["property"] == "UnknownValue"
147
+
148
+
149
+ def test_float(client: ValueTypesClient):
150
+ body = models.FloatProperty(property=43.125)
151
+ assert body.property == body["property"]
152
+ client.float.put(body)
153
+
154
+ resp = client.float.get()
155
+ assert resp.property == resp["property"] == 43.125
156
+
157
+
158
+ def test_float_literal(client: ValueTypesClient):
159
+ body = models.FloatLiteralProperty(property=43.125)
160
+ assert body.property == body["property"]
161
+ client.float_literal.put(body)
162
+
163
+ resp = client.float_literal.get()
164
+ assert resp.property == resp["property"] == 43.125
165
+
166
+
167
+ def test_int(client: ValueTypesClient):
168
+ body = models.IntProperty(property=42)
169
+ assert body.property == body["property"]
170
+ client.int_operations.put(body)
171
+
172
+ resp = client.int_operations.get()
173
+ assert resp.property == resp["property"] == 42
174
+
175
+
176
+ def test_int_literal(client: ValueTypesClient):
177
+ body = models.IntLiteralProperty(property=42)
178
+ assert body.property == body["property"]
179
+ client.int_literal.put(body)
180
+
181
+ resp = client.int_literal.get()
182
+ assert resp.property == resp["property"] == 42
183
+
184
+
185
+ def test_model(client: ValueTypesClient):
186
+ body = models.ModelProperty(property={"property": "hello"})
187
+ assert body.property.property == body["property"]["property"]
188
+ client.model.put(body)
189
+
190
+ resp = client.model.get()
191
+ assert resp.property.property == resp["property"]["property"]
192
+
193
+
194
+ def test_never(client: ValueTypesClient):
195
+ assert client.never.get() == models.NeverProperty()
196
+ client.never.put(models.NeverProperty())
197
+
198
+
199
+ def test_string(client: ValueTypesClient):
200
+ body = models.StringProperty(property="hello")
201
+ assert body.property == body["property"]
202
+ client.string.put(body)
203
+
204
+ resp = client.string.get()
205
+ assert resp.property == resp["property"] == "hello"
206
+
207
+
208
+ def test_string_literal(client: ValueTypesClient):
209
+ body = models.StringLiteralProperty(property="hello")
210
+ assert body.property == body["property"]
211
+ client.string_literal.put(body)
212
+
213
+ resp = client.string_literal.get()
214
+ assert resp.property == resp["property"] == "hello"
215
+
216
+
217
+ def test_union_enum_value(client: ValueTypesClient):
218
+ body = models.UnionEnumValueProperty(property=models.ExtendedEnum.ENUM_VALUE2)
219
+ assert body.property == body["property"]
220
+ client.union_enum_value.put(body)
221
+
222
+ resp = client.union_enum_value.get()
223
+ assert resp.property == resp["property"] == "value2"
224
+
225
+
226
+ def test_union_float_literal(client: ValueTypesClient):
227
+ body = models.UnionFloatLiteralProperty(property=46.875)
228
+ assert body.property == body["property"]
229
+ client.union_float_literal.put(body)
230
+
231
+ resp = client.union_float_literal.get()
232
+ assert resp.property == resp["property"] == 46.875
233
+
234
+
235
+ def test_union_int_literal(client: ValueTypesClient):
236
+ body = models.UnionIntLiteralProperty(property=42)
237
+ assert body.property == body["property"]
238
+ client.union_int_literal.put(body)
239
+
240
+ resp = client.union_int_literal.get()
241
+ assert resp.property == resp["property"] == 42
242
+
243
+
244
+ def test_union_string_literal(client: ValueTypesClient):
245
+ body = models.UnionStringLiteralProperty(property="world")
246
+ assert body.property == body["property"]
247
+ client.union_string_literal.put(body)
248
+
249
+ resp = client.union_string_literal.get()
250
+ assert resp.property == resp["property"] == "world"
251
+
252
+
253
+ def test_unknown_array(client: ValueTypesClient):
254
+ body = models.UnknownArrayProperty(property=["hello", "world"])
255
+ assert body.property == body["property"]
256
+ client.unknown_array.put(body)
257
+
258
+ resp = client.unknown_array.get()
259
+ assert resp.property == resp["property"] == ["hello", "world"]
260
+
261
+
262
+ def test_unknown_dict(client: ValueTypesClient):
263
+ body = models.UnknownDictProperty(property={"k1": "hello", "k2": 42})
264
+ assert body.property == body["property"]
265
+ client.unknown_dict.put(body)
266
+
267
+ resp = client.unknown_dict.get()
268
+ assert resp.property == resp["property"] == {"k1": "hello", "k2": 42}
269
+
270
+
271
+ def test_unknown_int(client: ValueTypesClient):
272
+ body = models.UnknownIntProperty(property=42)
273
+ assert body.property == body["property"]
274
+ client.unknown_int.put(body)
275
+
276
+ resp = client.unknown_int.get()
277
+ assert resp.property == resp["property"] == 42
278
+
279
+
280
+ def test_unknown_string(client: ValueTypesClient):
281
+ body = models.UnknownStringProperty(property="hello")
282
+ assert body.property == body["property"]
283
+ client.unknown_string.put(body)
284
+
285
+ resp = client.unknown_string.get()
286
+ assert resp.property == resp["property"] == "hello"
@@ -0,0 +1,53 @@
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 decimal
7
+ from functools import reduce
8
+
9
+ import pytest
10
+ from typetest.scalar import ScalarClient
11
+
12
+
13
+ @pytest.fixture
14
+ def client():
15
+ with ScalarClient() as client:
16
+ yield client
17
+
18
+
19
+ def test_scalar_string(client: ScalarClient):
20
+ assert client.string.get() == "test"
21
+ client.string.put("test")
22
+
23
+
24
+ def test_scalar_boolean(client: ScalarClient):
25
+ assert client.boolean.get() == True
26
+ client.boolean.put(True)
27
+
28
+
29
+ def test_scalar_unknown(client: ScalarClient):
30
+ assert client.unknown.get() == "test"
31
+ client.unknown.put("test")
32
+
33
+
34
+ def test_decimal128_type(client: ScalarClient):
35
+ assert client.decimal128_type.response_body() == decimal.Decimal("0.33333")
36
+ client.decimal128_type.request_body(decimal.Decimal("0.33333"))
37
+ client.decimal128_type.request_parameter(value=decimal.Decimal("0.33333"))
38
+
39
+
40
+ def test_decimal_type(client: ScalarClient):
41
+ assert client.decimal_type.response_body() == decimal.Decimal("0.33333")
42
+ client.decimal_type.request_body(decimal.Decimal("0.33333"))
43
+ client.decimal_type.request_parameter(value=decimal.Decimal("0.33333"))
44
+
45
+
46
+ def test_decimal128_verify(client: ScalarClient):
47
+ prepare = client.decimal128_verify.prepare_verify()
48
+ client.decimal128_verify.verify(reduce(lambda x, y: x + y, prepare))
49
+
50
+
51
+ def test_decimal_verify(client: ScalarClient):
52
+ prepare = client.decimal_verify.prepare_verify()
53
+ client.decimal_verify.verify(reduce(lambda x, y: x + y, prepare))
@@ -0,0 +1,80 @@
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 typetest.union import UnionClient
8
+ from typetest.union import models
9
+
10
+
11
+ @pytest.fixture
12
+ def client():
13
+ with UnionClient() as client:
14
+ yield client
15
+
16
+
17
+ def test_enums_only(client: UnionClient):
18
+ value = models.EnumsOnlyCases(lr="right", ud="up")
19
+ assert client.enums_only.get() == {"prop": value}
20
+ client.enums_only.send(prop=value)
21
+
22
+
23
+ def test_floats_only(client: UnionClient):
24
+ value = 2.2
25
+ assert client.floats_only.get() == {"prop": value}
26
+ client.floats_only.send(prop=value)
27
+
28
+
29
+ def test_ints_only(client: UnionClient):
30
+ value = 2
31
+ assert client.ints_only.get() == {"prop": value}
32
+ client.ints_only.send(prop=value)
33
+
34
+
35
+ def test_mixed_literals(client: UnionClient):
36
+ value = models.MixedLiteralsCases(string_literal="a", int_literal=2, float_literal=3.3, boolean_literal=True)
37
+ assert client.mixed_literals.get() == {"prop": value}
38
+ client.mixed_literals.send(prop=value)
39
+
40
+
41
+ def test_mixed_types(client: UnionClient):
42
+ value = models.MixedTypesCases(
43
+ model=models.Cat(name="test"),
44
+ literal="a",
45
+ int_property=2,
46
+ boolean=True,
47
+ array=[models.Cat(name="test"), "a", 2, True],
48
+ )
49
+ assert client.mixed_types.get() == {"prop": value}
50
+ client.mixed_types.send(prop=value)
51
+
52
+
53
+ def test_models_only(client: UnionClient):
54
+ value = models.Cat(name="test")
55
+ assert client.models_only.get() == {"prop": value}
56
+ client.models_only.send(prop=value)
57
+
58
+
59
+ def test_string_and_array(client: UnionClient):
60
+ value = models.StringAndArrayCases(string="test", array=["test1", "test2"])
61
+ assert client.string_and_array.get() == {"prop": value}
62
+ client.string_and_array.send(prop=value)
63
+
64
+
65
+ def test_string_extensible(client: UnionClient):
66
+ value = "custom"
67
+ assert client.string_extensible.get() == {"prop": value}
68
+ client.string_extensible.send(prop=value)
69
+
70
+
71
+ def test_string_extensible_named(client: UnionClient):
72
+ value = "custom"
73
+ assert client.string_extensible_named.get() == {"prop": value}
74
+ client.string_extensible_named.send(prop=value)
75
+
76
+
77
+ def test_strings_only(client: UnionClient):
78
+ value = "b"
79
+ assert client.strings_only.get() == {"prop": value}
80
+ client.strings_only.send(prop=value)
@@ -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 versioning.added import AddedClient
8
+ from versioning.added.models import ModelV1, ModelV2, EnumV1, EnumV2
9
+
10
+
11
+ @pytest.fixture
12
+ def client():
13
+ with AddedClient(endpoint="http://localhost:3000", version="v2") as client:
14
+ yield client
15
+
16
+
17
+ def test_v1(client: AddedClient):
18
+ assert client.v1(
19
+ ModelV1(prop="foo", enum_prop=EnumV1.ENUM_MEMBER_V2, union_prop=10),
20
+ header_v2="bar",
21
+ ) == ModelV1(prop="foo", enum_prop=EnumV1.ENUM_MEMBER_V2, union_prop=10)
22
+
23
+
24
+ def test_v2(client: AddedClient):
25
+ assert client.v2(ModelV2(prop="foo", enum_prop=EnumV2.ENUM_MEMBER, union_prop="bar")) == ModelV2(
26
+ prop="foo", enum_prop=EnumV2.ENUM_MEMBER, union_prop="bar"
27
+ )
28
+
29
+
30
+ def test_interface_v2(client: AddedClient):
31
+ assert client.interface_v2.v2_in_interface(
32
+ ModelV2(prop="foo", enum_prop=EnumV2.ENUM_MEMBER, union_prop="bar")
33
+ ) == ModelV2(prop="foo", enum_prop=EnumV2.ENUM_MEMBER, union_prop="bar")
@@ -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 versioning.madeoptional import MadeOptionalClient
8
+ from versioning.madeoptional.models import TestModel
9
+
10
+
11
+ @pytest.fixture
12
+ def client():
13
+ with MadeOptionalClient(endpoint="http://localhost:3000", version="v2") as client:
14
+ yield client
15
+
16
+
17
+ def test(client: MadeOptionalClient):
18
+ assert client.test(
19
+ TestModel(prop="foo"),
20
+ ) == TestModel(prop="foo")
@@ -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 versioning.removed import RemovedClient
8
+ from versioning.removed.models import ModelV2, EnumV2
9
+
10
+
11
+ @pytest.fixture
12
+ def client():
13
+ with RemovedClient(endpoint="http://localhost:3000", version="v2") as client:
14
+ yield client
15
+
16
+
17
+ def test_v2(client: RemovedClient):
18
+ assert client.v2(ModelV2(prop="foo", enum_prop=EnumV2.ENUM_MEMBER_V2, union_prop="bar")) == ModelV2(
19
+ prop="foo", enum_prop=EnumV2.ENUM_MEMBER_V2, union_prop="bar"
20
+ )
@@ -0,0 +1,27 @@
1
+ # -------------------------------------------------------------------------
2
+ # Copyright (c) Microsoft Corporation. All rights reserved.
3
+ # Licensed under the MIT License. See License.txt in the project root for
4
+ # license information.
5
+ # --------------------------------------------------------------------------
6
+ import pytest
7
+ from versioning.renamedfrom import RenamedFromClient
8
+ from versioning.renamedfrom.models import NewModel, NewEnum
9
+
10
+
11
+ @pytest.fixture
12
+ def client():
13
+ with RenamedFromClient(endpoint="http://localhost:3000", version="v2") as client:
14
+ yield client
15
+
16
+
17
+ def test_new_op(client: RenamedFromClient):
18
+ assert client.new_op(
19
+ NewModel(new_prop="foo", enum_prop=NewEnum.NEW_ENUM_MEMBER, union_prop=10),
20
+ new_query="bar",
21
+ ) == NewModel(new_prop="foo", enum_prop=NewEnum.NEW_ENUM_MEMBER, union_prop=10)
22
+
23
+
24
+ def test_new_interface_test(client: RenamedFromClient):
25
+ assert client.new_interface.new_op_in_new_interface(
26
+ NewModel(new_prop="foo", enum_prop=NewEnum.NEW_ENUM_MEMBER, union_prop=10)
27
+ ) == NewModel(new_prop="foo", enum_prop=NewEnum.NEW_ENUM_MEMBER, union_prop=10)
@@ -0,0 +1,17 @@
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 versioning.returntypechangedfrom import ReturnTypeChangedFromClient
8
+
9
+
10
+ @pytest.fixture
11
+ def client():
12
+ with ReturnTypeChangedFromClient(endpoint="http://localhost:3000", version="v2") as client:
13
+ yield client
14
+
15
+
16
+ def test(client: ReturnTypeChangedFromClient):
17
+ assert client.test("test") == "test"
@@ -0,0 +1,21 @@
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 versioning.typechangedfrom import TypeChangedFromClient
8
+ from versioning.typechangedfrom.models import TestModel
9
+
10
+
11
+ @pytest.fixture
12
+ def client():
13
+ with TypeChangedFromClient(endpoint="http://localhost:3000", version="v2") as client:
14
+ yield client
15
+
16
+
17
+ def test(client: TypeChangedFromClient):
18
+ assert client.test(
19
+ TestModel(prop="foo", changed_prop="bar"),
20
+ param="baz",
21
+ ) == TestModel(prop="foo", changed_prop="bar")