@typespec/http-client-python 0.28.2 → 0.29.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 (368) hide show
  1. package/dist/emitter/code-model.d.ts.map +1 -1
  2. package/dist/emitter/code-model.js +7 -6
  3. package/dist/emitter/code-model.js.map +1 -1
  4. package/dist/emitter/constants.d.ts +6 -0
  5. package/dist/emitter/constants.d.ts.map +1 -0
  6. package/dist/emitter/constants.js +27 -0
  7. package/dist/emitter/constants.js.map +1 -0
  8. package/dist/emitter/emitter.d.ts.map +1 -1
  9. package/dist/emitter/emitter.js +193 -119
  10. package/dist/emitter/emitter.js.map +1 -1
  11. package/dist/emitter/http.d.ts.map +1 -1
  12. package/dist/emitter/http.js +33 -1
  13. package/dist/emitter/http.js.map +1 -1
  14. package/dist/emitter/lib.d.ts +37 -3
  15. package/dist/emitter/lib.d.ts.map +1 -1
  16. package/dist/emitter/lib.js +17 -0
  17. package/dist/emitter/lib.js.map +1 -1
  18. package/dist/emitter/run-python3.js +1 -1
  19. package/dist/emitter/run-python3.js.map +1 -1
  20. package/dist/emitter/system-requirements.js +6 -4
  21. package/dist/emitter/system-requirements.js.map +1 -1
  22. package/dist/emitter/types.d.ts +2 -5
  23. package/dist/emitter/types.d.ts.map +1 -1
  24. package/dist/emitter/types.js +86 -63
  25. package/dist/emitter/types.js.map +1 -1
  26. package/dist/emitter/utils.d.ts.map +1 -1
  27. package/dist/emitter/utils.js +16 -17
  28. package/dist/emitter/utils.js.map +1 -1
  29. package/emitter/src/code-model.ts +7 -13
  30. package/emitter/src/constants.ts +27 -0
  31. package/emitter/src/emitter.ts +241 -123
  32. package/emitter/src/http.ts +29 -1
  33. package/emitter/src/lib.ts +24 -0
  34. package/emitter/src/run-python3.ts +1 -1
  35. package/emitter/src/system-requirements.ts +4 -4
  36. package/emitter/src/types.ts +102 -62
  37. package/emitter/src/utils.ts +16 -18
  38. package/emitter/temp/tsconfig.tsbuildinfo +1 -1
  39. package/emitter/test/utils.test.ts +3 -0
  40. package/emitter/tsconfig.build.json +2 -1
  41. package/emitter/tsconfig.json +2 -1
  42. package/eng/scripts/Build-Packages.ps1 +62 -37
  43. package/eng/scripts/Check-GitChanges.ps1 +30 -3
  44. package/eng/scripts/Functions.ps1 +54 -15
  45. package/eng/scripts/Generate.ps1 +42 -8
  46. package/eng/scripts/Generation.psm1 +44 -15
  47. package/eng/scripts/Initialize-Repository.ps1 +29 -11
  48. package/eng/scripts/Test-Packages.ps1 +47 -31
  49. package/eng/scripts/ci/config/eslint-ci.config.mjs +64 -0
  50. package/eng/scripts/ci/{mypy.ini → config/mypy.ini} +1 -1
  51. package/eng/scripts/ci/{pylintrc → config/pylintrc} +1 -1
  52. package/eng/scripts/ci/{pyrightconfig.json → config/pyrightconfig.json} +1 -1
  53. package/eng/scripts/ci/dev_requirements.txt +2 -1
  54. package/eng/scripts/ci/format.ts +232 -2
  55. package/eng/scripts/ci/lint.ts +223 -20
  56. package/eng/scripts/ci/regenerate-common.ts +411 -136
  57. package/eng/scripts/ci/regenerate.ts +247 -101
  58. package/eng/scripts/ci/run-tests.ts +507 -0
  59. package/eng/scripts/ci/run_apiview.py +22 -16
  60. package/eng/scripts/ci/run_mypy.py +34 -23
  61. package/eng/scripts/ci/run_pylint.py +27 -19
  62. package/eng/scripts/ci/run_pyright.py +9 -5
  63. package/eng/scripts/ci/run_sphinx_build.py +24 -9
  64. package/eng/scripts/ci/typecheck.ts +225 -0
  65. package/eng/scripts/ci/util.py +61 -25
  66. package/eng/scripts/ci/utils.ts +5 -5
  67. package/eng/scripts/setup/__pycache__/package_manager.cpython-311.pyc +0 -0
  68. package/eng/scripts/setup/__pycache__/venvtools.cpython-311.pyc +0 -0
  69. package/eng/scripts/setup/build.ts +1 -1
  70. package/eng/scripts/setup/build_pygen_wheel.py +4 -3
  71. package/eng/scripts/setup/install.py +4 -3
  72. package/eng/scripts/setup/install.ts +1 -1
  73. package/eng/scripts/setup/prepare.py +3 -2
  74. package/eng/scripts/setup/prepare.ts +1 -1
  75. package/eng/scripts/setup/run-python3.ts +1 -1
  76. package/eng/scripts/setup/run_batch.py +197 -0
  77. package/eng/scripts/setup/run_tsp.py +3 -3
  78. package/eng/scripts/setup/system-requirements.ts +8 -4
  79. package/eng/scripts/setup/venvtools.py +1 -1
  80. package/generator/build/lib/pygen/__init__.py +1 -3
  81. package/generator/build/lib/pygen/codegen/__init__.py +0 -1
  82. package/generator/build/lib/pygen/codegen/models/base.py +0 -1
  83. package/generator/build/lib/pygen/codegen/models/client.py +2 -1
  84. package/generator/build/lib/pygen/codegen/models/code_model.py +1 -0
  85. package/generator/build/lib/pygen/codegen/models/enum_type.py +0 -1
  86. package/generator/build/lib/pygen/codegen/models/model_type.py +1 -7
  87. package/generator/build/lib/pygen/codegen/models/parameter.py +16 -14
  88. package/generator/build/lib/pygen/codegen/serializers/__init__.py +27 -12
  89. package/generator/build/lib/pygen/codegen/serializers/builder_serializer.py +12 -3
  90. package/generator/build/lib/pygen/codegen/serializers/general_serializer.py +6 -2
  91. package/generator/build/lib/pygen/codegen/serializers/import_serializer.py +17 -4
  92. package/generator/build/lib/pygen/codegen/serializers/parameter_serializer.py +17 -11
  93. package/generator/build/lib/pygen/codegen/templates/model_base.py.jinja2 +176 -71
  94. package/generator/build/lib/pygen/codegen/templates/packaging_templates/README.md.jinja2 +11 -3
  95. package/generator/build/lib/pygen/codegen/templates/packaging_templates/pyproject.toml.jinja2 +1 -1
  96. package/generator/build/lib/pygen/codegen/templates/serialization.py.jinja2 +5 -1
  97. package/generator/build/lib/pygen/preprocess/__init__.py +37 -30
  98. package/generator/component-detection-pip-report.json +7 -7
  99. package/generator/dist/pygen-0.1.0-py3-none-any.whl +0 -0
  100. package/generator/pygen/__init__.py +1 -3
  101. package/generator/pygen/codegen/__init__.py +0 -1
  102. package/generator/pygen/codegen/models/base.py +0 -1
  103. package/generator/pygen/codegen/models/client.py +2 -1
  104. package/generator/pygen/codegen/models/code_model.py +1 -0
  105. package/generator/pygen/codegen/models/enum_type.py +0 -1
  106. package/generator/pygen/codegen/models/model_type.py +1 -7
  107. package/generator/pygen/codegen/models/parameter.py +16 -14
  108. package/generator/pygen/codegen/serializers/__init__.py +27 -12
  109. package/generator/pygen/codegen/serializers/builder_serializer.py +12 -3
  110. package/generator/pygen/codegen/serializers/general_serializer.py +6 -2
  111. package/generator/pygen/codegen/serializers/import_serializer.py +17 -4
  112. package/generator/pygen/codegen/serializers/parameter_serializer.py +17 -11
  113. package/generator/pygen/codegen/templates/model_base.py.jinja2 +176 -71
  114. package/generator/pygen/codegen/templates/packaging_templates/README.md.jinja2 +11 -3
  115. package/generator/pygen/codegen/templates/packaging_templates/pyproject.toml.jinja2 +1 -1
  116. package/generator/pygen/codegen/templates/serialization.py.jinja2 +5 -1
  117. package/generator/pygen/preprocess/__init__.py +37 -30
  118. package/generator/pygen.egg-info/PKG-INFO +1 -2
  119. package/generator/pygen.egg-info/requires.txt +1 -1
  120. package/generator/setup.py +1 -2
  121. package/package.json +63 -42
  122. package/eng/scripts/ci/run-ci.ts +0 -89
  123. package/generator/test/azure/mock_api_tests/asynctests/test_azure_arm_commonproperties_async.py +0 -94
  124. package/generator/test/azure/mock_api_tests/asynctests/test_azure_arm_largeheader_async.py +0 -30
  125. package/generator/test/azure/mock_api_tests/asynctests/test_azure_arm_nonresource_async.py +0 -36
  126. package/generator/test/azure/mock_api_tests/asynctests/test_azure_arm_operationtemplates_async.py +0 -205
  127. package/generator/test/azure/mock_api_tests/asynctests/test_azure_arm_resource_async.py +0 -478
  128. package/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_access_async.py +0 -101
  129. package/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_api_version_header_async.py +0 -18
  130. package/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_api_version_path_async.py +0 -18
  131. package/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_api_version_query_async.py +0 -18
  132. package/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_client_default_value_async.py +0 -46
  133. package/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_client_initialization_async.py +0 -58
  134. package/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_client_location_async.py +0 -82
  135. package/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_deserialize_empty_string_as_null_async.py +0 -20
  136. package/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_flatten_async.py +0 -115
  137. package/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_hierrarchy_building_async.py +0 -53
  138. package/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_next_link_verb_async.py +0 -28
  139. package/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_override_async.py +0 -106
  140. package/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_usage_async.py +0 -38
  141. package/generator/test/azure/mock_api_tests/asynctests/test_azure_core_basic_async.py +0 -76
  142. package/generator/test/azure/mock_api_tests/asynctests/test_azure_core_lro_rpc_async.py +0 -22
  143. package/generator/test/azure/mock_api_tests/asynctests/test_azure_core_lro_standard_async.py +0 -39
  144. package/generator/test/azure/mock_api_tests/asynctests/test_azure_core_model_async.py +0 -33
  145. package/generator/test/azure/mock_api_tests/asynctests/test_azure_core_page_async.py +0 -80
  146. package/generator/test/azure/mock_api_tests/asynctests/test_azure_core_scalar_async.py +0 -41
  147. package/generator/test/azure/mock_api_tests/asynctests/test_azure_core_traits_async.py +0 -87
  148. package/generator/test/azure/mock_api_tests/asynctests/test_azure_encode_duration_async.py +0 -19
  149. package/generator/test/azure/mock_api_tests/asynctests/test_azure_example_basic_async.py +0 -30
  150. package/generator/test/azure/mock_api_tests/asynctests/test_azure_payload_pageable_async.py +0 -19
  151. package/generator/test/azure/mock_api_tests/asynctests/test_azure_resource_manager_method_subscription_id_async.py +0 -248
  152. package/generator/test/azure/mock_api_tests/asynctests/test_azure_resource_manager_multi_service_async.py +0 -110
  153. package/generator/test/azure/mock_api_tests/asynctests/test_azure_resource_manager_multi_service_shared_models_async.py +0 -132
  154. package/generator/test/azure/mock_api_tests/asynctests/test_azure_special_headers_client_request_id_async.py +0 -30
  155. package/generator/test/azure/mock_api_tests/asynctests/test_azure_versioning_previewversion_async.py +0 -53
  156. package/generator/test/azure/mock_api_tests/asynctests/test_client_namespace_async.py +0 -34
  157. package/generator/test/azure/mock_api_tests/asynctests/test_client_naming_async.py +0 -69
  158. package/generator/test/azure/mock_api_tests/asynctests/test_client_naming_enum_conflict_async.py +0 -37
  159. package/generator/test/azure/mock_api_tests/asynctests/test_client_overload_async.py +0 -27
  160. package/generator/test/azure/mock_api_tests/asynctests/test_client_structure_async.py +0 -64
  161. package/generator/test/azure/mock_api_tests/asynctests/test_client_structure_clientoperationgroup_async.py +0 -31
  162. package/generator/test/azure/mock_api_tests/asynctests/test_encode_duration_async.py +0 -63
  163. package/generator/test/azure/mock_api_tests/asynctests/test_encode_numeric_async.py +0 -35
  164. package/generator/test/azure/mock_api_tests/asynctests/test_parameters_basic_async.py +0 -24
  165. package/generator/test/azure/mock_api_tests/asynctests/test_parameters_spread_async.py +0 -76
  166. package/generator/test/azure/mock_api_tests/asynctests/test_payload_content_negotiation_async.py +0 -37
  167. package/generator/test/azure/mock_api_tests/asynctests/test_payload_multipart_async.py +0 -216
  168. package/generator/test/azure/mock_api_tests/asynctests/test_resiliency_srv_driven_async.py +0 -130
  169. package/generator/test/azure/mock_api_tests/asynctests/test_serialization_encoded_name_json_async.py +0 -24
  170. package/generator/test/azure/mock_api_tests/asynctests/test_service_multi_service_async.py +0 -31
  171. package/generator/test/azure/mock_api_tests/asynctests/test_special_words_async.py +0 -71
  172. package/generator/test/azure/mock_api_tests/conftest.py +0 -207
  173. package/generator/test/azure/mock_api_tests/data/image.jpg +0 -0
  174. package/generator/test/azure/mock_api_tests/data/image.png +0 -0
  175. package/generator/test/azure/mock_api_tests/test_azure_arm_commonproperties.py +0 -89
  176. package/generator/test/azure/mock_api_tests/test_azure_arm_largeheader.py +0 -27
  177. package/generator/test/azure/mock_api_tests/test_azure_arm_nonresource.py +0 -34
  178. package/generator/test/azure/mock_api_tests/test_azure_arm_operationtemplates.py +0 -180
  179. package/generator/test/azure/mock_api_tests/test_azure_arm_resource.py +0 -436
  180. package/generator/test/azure/mock_api_tests/test_azure_client_generator_core_access.py +0 -92
  181. package/generator/test/azure/mock_api_tests/test_azure_client_generator_core_api_version_header.py +0 -17
  182. package/generator/test/azure/mock_api_tests/test_azure_client_generator_core_api_version_path.py +0 -17
  183. package/generator/test/azure/mock_api_tests/test_azure_client_generator_core_api_version_query.py +0 -17
  184. package/generator/test/azure/mock_api_tests/test_azure_client_generator_core_client_default_value.py +0 -42
  185. package/generator/test/azure/mock_api_tests/test_azure_client_generator_core_client_initialization.py +0 -51
  186. package/generator/test/azure/mock_api_tests/test_azure_client_generator_core_client_location.py +0 -70
  187. package/generator/test/azure/mock_api_tests/test_azure_client_generator_core_deserialize_empty_string_as_null.py +0 -19
  188. package/generator/test/azure/mock_api_tests/test_azure_client_generator_core_flatten.py +0 -104
  189. package/generator/test/azure/mock_api_tests/test_azure_client_generator_core_hierrarchy_building.py +0 -45
  190. package/generator/test/azure/mock_api_tests/test_azure_client_generator_core_next_link_verb.py +0 -27
  191. package/generator/test/azure/mock_api_tests/test_azure_client_generator_core_override.py +0 -102
  192. package/generator/test/azure/mock_api_tests/test_azure_client_generator_core_usage.py +0 -32
  193. package/generator/test/azure/mock_api_tests/test_azure_core_basic.py +0 -70
  194. package/generator/test/azure/mock_api_tests/test_azure_core_lro_rpc.py +0 -20
  195. package/generator/test/azure/mock_api_tests/test_azure_core_lro_standard.py +0 -32
  196. package/generator/test/azure/mock_api_tests/test_azure_core_model.py +0 -30
  197. package/generator/test/azure/mock_api_tests/test_azure_core_page.py +0 -71
  198. package/generator/test/azure/mock_api_tests/test_azure_core_scalar.py +0 -35
  199. package/generator/test/azure/mock_api_tests/test_azure_core_traits.py +0 -85
  200. package/generator/test/azure/mock_api_tests/test_azure_encode_duration.py +0 -18
  201. package/generator/test/azure/mock_api_tests/test_azure_example_basic.py +0 -29
  202. package/generator/test/azure/mock_api_tests/test_azure_payload_pageable.py +0 -18
  203. package/generator/test/azure/mock_api_tests/test_azure_resource_manager_method_subscription_id.py +0 -235
  204. package/generator/test/azure/mock_api_tests/test_azure_resource_manager_multi_service.py +0 -104
  205. package/generator/test/azure/mock_api_tests/test_azure_resource_manager_multi_service_shared_models.py +0 -128
  206. package/generator/test/azure/mock_api_tests/test_azure_special_headers_client_request_id.py +0 -29
  207. package/generator/test/azure/mock_api_tests/test_azure_versioning_previewversion.py +0 -50
  208. package/generator/test/azure/mock_api_tests/test_clear_output_folder.py +0 -23
  209. package/generator/test/azure/mock_api_tests/test_client_namespace.py +0 -32
  210. package/generator/test/azure/mock_api_tests/test_client_naming.py +0 -57
  211. package/generator/test/azure/mock_api_tests/test_client_naming_enum_conflict.py +0 -35
  212. package/generator/test/azure/mock_api_tests/test_client_overload.py +0 -25
  213. package/generator/test/azure/mock_api_tests/test_client_structure.py +0 -60
  214. package/generator/test/azure/mock_api_tests/test_client_structure_clientoperationgroup.py +0 -29
  215. package/generator/test/azure/mock_api_tests/test_encode_duration.py +0 -60
  216. package/generator/test/azure/mock_api_tests/test_encode_numeric.py +0 -31
  217. package/generator/test/azure/mock_api_tests/test_model_base_flatten_compatibility.py +0 -251
  218. package/generator/test/azure/mock_api_tests/test_parameters_basic.py +0 -22
  219. package/generator/test/azure/mock_api_tests/test_parameters_spread.py +0 -66
  220. package/generator/test/azure/mock_api_tests/test_payload_content_negotiation.py +0 -33
  221. package/generator/test/azure/mock_api_tests/test_payload_multipart.py +0 -198
  222. package/generator/test/azure/mock_api_tests/test_resiliency_srv_driven.py +0 -124
  223. package/generator/test/azure/mock_api_tests/test_serialization_encoded_name_json.py +0 -21
  224. package/generator/test/azure/mock_api_tests/test_service_multi_service.py +0 -29
  225. package/generator/test/azure/mock_api_tests/test_special_words.py +0 -63
  226. package/generator/test/azure/requirements.txt +0 -125
  227. package/generator/test/azure/tox.ini +0 -64
  228. package/generator/test/data/image.jpg +0 -0
  229. package/generator/test/data/image.png +0 -0
  230. package/generator/test/dev_requirements.txt +0 -8
  231. package/generator/test/generic_mock_api_tests/asynctests/test_authentication_async.py +0 -140
  232. package/generator/test/generic_mock_api_tests/asynctests/test_encode_array_async.py +0 -139
  233. package/generator/test/generic_mock_api_tests/asynctests/test_encode_bytes_async.py +0 -132
  234. package/generator/test/generic_mock_api_tests/asynctests/test_encode_datetime_async.py +0 -127
  235. package/generator/test/generic_mock_api_tests/asynctests/test_headasboolean_async.py +0 -35
  236. package/generator/test/generic_mock_api_tests/asynctests/test_parameters_body_optionality_async.py +0 -30
  237. package/generator/test/generic_mock_api_tests/asynctests/test_parameters_collection_format_async.py +0 -38
  238. package/generator/test/generic_mock_api_tests/asynctests/test_parameters_path_async.py +0 -24
  239. package/generator/test/generic_mock_api_tests/asynctests/test_parameters_query_async.py +0 -18
  240. package/generator/test/generic_mock_api_tests/asynctests/test_payload_json_merge_patch_async.py +0 -98
  241. package/generator/test/generic_mock_api_tests/asynctests/test_payload_media_type_async.py +0 -27
  242. package/generator/test/generic_mock_api_tests/asynctests/test_payload_pageable_async.py +0 -134
  243. package/generator/test/generic_mock_api_tests/asynctests/test_payload_xml_async.py +0 -150
  244. package/generator/test/generic_mock_api_tests/asynctests/test_response_status_code_range_async.py +0 -38
  245. package/generator/test/generic_mock_api_tests/asynctests/test_routes_async.py +0 -331
  246. package/generator/test/generic_mock_api_tests/asynctests/test_server_endpoint_not_defined_async.py +0 -18
  247. package/generator/test/generic_mock_api_tests/asynctests/test_server_path_multiple_async.py +0 -25
  248. package/generator/test/generic_mock_api_tests/asynctests/test_server_path_single_async.py +0 -18
  249. package/generator/test/generic_mock_api_tests/asynctests/test_server_versions_not_versioned_async.py +0 -28
  250. package/generator/test/generic_mock_api_tests/asynctests/test_server_versions_versioned_async.py +0 -34
  251. package/generator/test/generic_mock_api_tests/asynctests/test_special_headers_conditional_request_async.py +0 -38
  252. package/generator/test/generic_mock_api_tests/asynctests/test_special_headers_repeatability_async.py +0 -19
  253. package/generator/test/generic_mock_api_tests/asynctests/test_specs_documentation_async.py +0 -59
  254. package/generator/test/generic_mock_api_tests/asynctests/test_streaming_jsonl_async.py +0 -27
  255. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_array_async.py +0 -127
  256. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_dictionary_async.py +0 -98
  257. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_enum_extensible_async.py +0 -25
  258. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_enum_fixed_async.py +0 -27
  259. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_file_async.py +0 -59
  260. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_empty_async.py +0 -32
  261. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_inheritance_enum_discriminator_async.py +0 -70
  262. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_inheritance_nested_discriminator_async.py +0 -85
  263. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_inheritance_not_discriminated_async.py +0 -34
  264. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_inheritance_recursive_async.py +0 -34
  265. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_inheritance_single_discriminator_async.py +0 -67
  266. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_usage_async.py +0 -32
  267. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_visibility_async.py +0 -47
  268. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_property_additionalproperties_async.py +0 -353
  269. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_property_nullable_async.py +0 -110
  270. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_property_optional_async.py +0 -197
  271. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_property_valuetypes_async.py +0 -315
  272. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_scalar_async.py +0 -60
  273. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_union_async.py +0 -90
  274. package/generator/test/generic_mock_api_tests/asynctests/test_versioning_added_async.py +0 -36
  275. package/generator/test/generic_mock_api_tests/asynctests/test_versioning_made_optional_async.py +0 -21
  276. package/generator/test/generic_mock_api_tests/asynctests/test_versioning_removed_async.py +0 -39
  277. package/generator/test/generic_mock_api_tests/asynctests/test_versioning_renamed_from_async.py +0 -29
  278. package/generator/test/generic_mock_api_tests/asynctests/test_versioning_return_type_changed_from_async.py +0 -18
  279. package/generator/test/generic_mock_api_tests/asynctests/test_versioning_type_changed_from_async.py +0 -22
  280. package/generator/test/generic_mock_api_tests/conftest.py +0 -75
  281. package/generator/test/generic_mock_api_tests/data/image.jpg +0 -0
  282. package/generator/test/generic_mock_api_tests/data/image.png +0 -0
  283. package/generator/test/generic_mock_api_tests/test_authentication.py +0 -130
  284. package/generator/test/generic_mock_api_tests/test_encode_array.py +0 -126
  285. package/generator/test/generic_mock_api_tests/test_encode_bytes.py +0 -128
  286. package/generator/test/generic_mock_api_tests/test_encode_datetime.py +0 -123
  287. package/generator/test/generic_mock_api_tests/test_headasboolean.py +0 -33
  288. package/generator/test/generic_mock_api_tests/test_parameters_body_optionality.py +0 -27
  289. package/generator/test/generic_mock_api_tests/test_parameters_collection_format.py +0 -33
  290. package/generator/test/generic_mock_api_tests/test_parameters_path.py +0 -22
  291. package/generator/test/generic_mock_api_tests/test_parameters_query.py +0 -17
  292. package/generator/test/generic_mock_api_tests/test_payload_json_merge_patch.py +0 -93
  293. package/generator/test/generic_mock_api_tests/test_payload_media_type.py +0 -25
  294. package/generator/test/generic_mock_api_tests/test_payload_pageable.py +0 -99
  295. package/generator/test/generic_mock_api_tests/test_payload_xml.py +0 -135
  296. package/generator/test/generic_mock_api_tests/test_response_status_code_range.py +0 -36
  297. package/generator/test/generic_mock_api_tests/test_routes.py +0 -285
  298. package/generator/test/generic_mock_api_tests/test_server_endpoint_not_defined.py +0 -17
  299. package/generator/test/generic_mock_api_tests/test_server_path_multiple.py +0 -21
  300. package/generator/test/generic_mock_api_tests/test_server_path_single.py +0 -17
  301. package/generator/test/generic_mock_api_tests/test_server_versions_not_versioned.py +0 -25
  302. package/generator/test/generic_mock_api_tests/test_server_versions_versioned.py +0 -30
  303. package/generator/test/generic_mock_api_tests/test_special_headers_conditional_request.py +0 -34
  304. package/generator/test/generic_mock_api_tests/test_special_headers_repeatability.py +0 -18
  305. package/generator/test/generic_mock_api_tests/test_specs_documentation.py +0 -51
  306. package/generator/test/generic_mock_api_tests/test_streaming_jsonl.py +0 -25
  307. package/generator/test/generic_mock_api_tests/test_typetest_array.py +0 -111
  308. package/generator/test/generic_mock_api_tests/test_typetest_dictionary.py +0 -86
  309. package/generator/test/generic_mock_api_tests/test_typetest_enum_extensible.py +0 -23
  310. package/generator/test/generic_mock_api_tests/test_typetest_enum_fixed.py +0 -25
  311. package/generator/test/generic_mock_api_tests/test_typetest_file.py +0 -52
  312. package/generator/test/generic_mock_api_tests/test_typetest_model_empty.py +0 -29
  313. package/generator/test/generic_mock_api_tests/test_typetest_model_inheritance_enum_discriminator.py +0 -58
  314. package/generator/test/generic_mock_api_tests/test_typetest_model_inheritance_nested_discriminator.py +0 -79
  315. package/generator/test/generic_mock_api_tests/test_typetest_model_inheritance_not_discriminated.py +0 -31
  316. package/generator/test/generic_mock_api_tests/test_typetest_model_inheritance_recursive.py +0 -32
  317. package/generator/test/generic_mock_api_tests/test_typetest_model_inheritance_single_discriminator.py +0 -60
  318. package/generator/test/generic_mock_api_tests/test_typetest_model_usage.py +0 -28
  319. package/generator/test/generic_mock_api_tests/test_typetest_model_visibility.py +0 -40
  320. package/generator/test/generic_mock_api_tests/test_typetest_property_additionalproperties.py +0 -314
  321. package/generator/test/generic_mock_api_tests/test_typetest_property_nullable.py +0 -102
  322. package/generator/test/generic_mock_api_tests/test_typetest_property_optional.py +0 -174
  323. package/generator/test/generic_mock_api_tests/test_typetest_property_valuetypes.py +0 -286
  324. package/generator/test/generic_mock_api_tests/test_typetest_scalar.py +0 -53
  325. package/generator/test/generic_mock_api_tests/test_typetest_union.py +0 -80
  326. package/generator/test/generic_mock_api_tests/test_typetest_union_discriminated.py +0 -290
  327. package/generator/test/generic_mock_api_tests/test_versioning_added.py +0 -33
  328. package/generator/test/generic_mock_api_tests/test_versioning_made_optional.py +0 -20
  329. package/generator/test/generic_mock_api_tests/test_versioning_removed.py +0 -37
  330. package/generator/test/generic_mock_api_tests/test_versioning_renamed_from.py +0 -27
  331. package/generator/test/generic_mock_api_tests/test_versioning_return_type_changed_from.py +0 -17
  332. package/generator/test/generic_mock_api_tests/test_versioning_type_changed_from.py +0 -21
  333. package/generator/test/unbranded/mock_api_tests/asynctests/test_auth_flow_async.py +0 -19
  334. package/generator/test/unbranded/mock_api_tests/asynctests/test_encode_duration_async.py +0 -63
  335. package/generator/test/unbranded/mock_api_tests/asynctests/test_encode_numeric_async.py +0 -35
  336. package/generator/test/unbranded/mock_api_tests/asynctests/test_parameters_basic_async.py +0 -24
  337. package/generator/test/unbranded/mock_api_tests/asynctests/test_parameters_spread_async.py +0 -76
  338. package/generator/test/unbranded/mock_api_tests/asynctests/test_payload_content_negotiation_async.py +0 -37
  339. package/generator/test/unbranded/mock_api_tests/asynctests/test_payload_multipart_async.py +0 -218
  340. package/generator/test/unbranded/mock_api_tests/asynctests/test_serialization_encoded_name_json_async.py +0 -24
  341. package/generator/test/unbranded/mock_api_tests/asynctests/test_special_words_async.py +0 -73
  342. package/generator/test/unbranded/mock_api_tests/asynctests/test_unbranded_async.py +0 -24
  343. package/generator/test/unbranded/mock_api_tests/conftest.py +0 -91
  344. package/generator/test/unbranded/mock_api_tests/data/image.jpg +0 -0
  345. package/generator/test/unbranded/mock_api_tests/data/image.png +0 -0
  346. package/generator/test/unbranded/mock_api_tests/test_auth_flow.py +0 -17
  347. package/generator/test/unbranded/mock_api_tests/test_encode_duration.py +0 -60
  348. package/generator/test/unbranded/mock_api_tests/test_encode_numeric.py +0 -32
  349. package/generator/test/unbranded/mock_api_tests/test_parameters_basic.py +0 -22
  350. package/generator/test/unbranded/mock_api_tests/test_parameters_spread.py +0 -66
  351. package/generator/test/unbranded/mock_api_tests/test_payload_content_negotiation.py +0 -33
  352. package/generator/test/unbranded/mock_api_tests/test_payload_multipart.py +0 -200
  353. package/generator/test/unbranded/mock_api_tests/test_serialization_encoded_name_json.py +0 -22
  354. package/generator/test/unbranded/mock_api_tests/test_special_words.py +0 -66
  355. package/generator/test/unbranded/mock_api_tests/test_unbranded.py +0 -65
  356. package/generator/test/unbranded/requirements.txt +0 -69
  357. package/generator/test/unbranded/tox.ini +0 -64
  358. package/generator/test/unittests/conftest.py +0 -15
  359. package/generator/test/unittests/requirements.txt +0 -3
  360. package/generator/test/unittests/test_enums.py +0 -89
  361. package/generator/test/unittests/test_model_base_serialization.py +0 -4906
  362. package/generator/test/unittests/test_model_base_xml_serialization.py +0 -1239
  363. package/generator/test/unittests/test_name_converter.py +0 -35
  364. package/generator/test/unittests/test_optional_return_type.py +0 -268
  365. package/generator/test/unittests/test_parameter_ordering.py +0 -104
  366. package/generator/test/unittests/test_sort_schema.py +0 -93
  367. package/generator/test/unittests/tox.ini +0 -5
  368. /package/eng/scripts/ci/{pyproject.toml → config/pyproject.toml} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@typespec/http-client-python",
3
- "version": "0.28.2",
3
+ "version": "0.29.0",
4
4
  "author": "Microsoft Corporation",
5
5
  "description": "TypeSpec emitter for Python SDKs",
6
6
  "homepage": "https://typespec.io",
@@ -29,19 +29,25 @@
29
29
  "node": ">=20.0.0"
30
30
  },
31
31
  "scripts": {
32
- "clean": "rimraf ./dist ./temp ./emitter/temp ./generator/test/azure/generated ./generator/test/unbranded/generated ./venv",
32
+ "clean": "rimraf ./dist ./temp ./venv ./tests/generated",
33
33
  "build": "tsc -p ./emitter/tsconfig.build.json && tsx ./eng/scripts/setup/build.ts",
34
34
  "watch": "tsc -p ./emitter/tsconfig.build.json --watch",
35
- "lint": "eslint emitter/ --max-warnings=0",
36
- "lint:py": "tsx ./eng/scripts/ci/lint.ts --folderName generator/pygen",
37
- "format": "pnpm -w format:dir packages/http-client-python && tsx ./eng/scripts/ci/format.ts",
38
35
  "install": "tsx ./eng/scripts/setup/install.ts",
39
36
  "prepare": "tsx ./eng/scripts/setup/prepare.ts",
37
+ "setup": "npm run build && npm run install",
38
+ "test": "tsx ./eng/scripts/ci/run-tests.ts",
39
+ "test:emitter": "tsx ./eng/scripts/ci/run-tests.ts --emitter",
40
+ "test:generator": "tsx ./eng/scripts/ci/run-tests.ts --generator",
41
+ "lint": "tsx ./eng/scripts/ci/lint.ts",
42
+ "lint:generated": "tsx ./eng/scripts/ci/lint.ts --generated",
43
+ "format": "tsx ./eng/scripts/ci/format.ts",
44
+ "format:check": "tsx ./eng/scripts/ci/format.ts --check",
45
+ "format:generated": "tsx ./eng/scripts/ci/format.ts --generated",
46
+ "typecheck": "tsx ./eng/scripts/ci/typecheck.ts",
47
+ "typecheck:generated": "tsx ./eng/scripts/ci/typecheck.ts --generated",
40
48
  "regenerate": "tsx ./eng/scripts/ci/regenerate.ts",
41
- "ci": "npm run test:emitter && npm run ci:generator --",
42
- "ci:generator": "tsx ./eng/scripts/ci/run-ci.ts",
43
- "test:generator": "tsx ./eng/scripts/ci/run-ci.ts --command=test",
44
- "test:emitter": "vitest run -c ./emitter/vitest.config.ts",
49
+ "ci": "npm run test:emitter && npm run ci:generated",
50
+ "ci:generated": "tsx ./eng/scripts/ci/run-tests.ts --generator --env=ci",
45
51
  "change:version": "pnpm chronus version --ignore-policies --only @typespec/http-client-python",
46
52
  "change:add": "pnpm chronus add",
47
53
  "regen-docs": "node ../../packages/tspd/cmd/tspd.js doc . --enable-experimental --output-dir ../../website/src/content/docs/docs/emitters/clients/http-client-python/reference --skip-js"
@@ -54,20 +60,35 @@
54
60
  "emitter"
55
61
  ],
56
62
  "peerDependencies": {
57
- "@azure-tools/typespec-autorest": ">=0.66.1 <1.0.0",
58
- "@azure-tools/typespec-azure-core": ">=0.66.1 <1.0.0",
59
- "@azure-tools/typespec-azure-resource-manager": ">=0.66.0 <1.0.0",
60
- "@azure-tools/typespec-azure-rulesets": ">=0.66.0 <1.0.0",
61
- "@azure-tools/typespec-client-generator-core": ">=0.66.4 <1.0.0",
62
- "@typespec/compiler": "^1.10.0",
63
- "@typespec/http": "^1.10.0",
64
- "@typespec/openapi": "^1.10.0",
65
- "@typespec/rest": ">=0.80.0 <1.0.0",
66
- "@typespec/versioning": ">=0.80.0 <1.0.0",
67
- "@typespec/events": ">=0.80.0 <1.0.0",
68
- "@typespec/sse": ">=0.80.0 <1.0.0",
69
- "@typespec/streams": ">=0.80.0 <1.0.0",
70
- "@typespec/xml": ">=0.80.0 <1.0.0"
63
+ "@azure-tools/typespec-autorest": ">=0.67.0 <1.0.0",
64
+ "@azure-tools/typespec-azure-core": ">=0.67.1 <1.0.0",
65
+ "@azure-tools/typespec-azure-resource-manager": ">=0.67.1 <1.0.0",
66
+ "@azure-tools/typespec-azure-rulesets": ">=0.67.0 <1.0.0",
67
+ "@azure-tools/typespec-client-generator-core": ">=0.67.4 <1.0.0",
68
+ "@typespec/compiler": "^1.11.0",
69
+ "@typespec/http": "^1.11.0",
70
+ "@typespec/openapi": "^1.11.0",
71
+ "@typespec/rest": ">=0.81.0 <1.0.0",
72
+ "@typespec/versioning": ">=0.81.0 <1.0.0",
73
+ "@typespec/events": ">=0.81.0 <1.0.0",
74
+ "@typespec/sse": ">=0.81.0 <1.0.0",
75
+ "@typespec/streams": ">=0.81.0 <1.0.0",
76
+ "@typespec/xml": ">=0.81.0 <1.0.0"
77
+ },
78
+ "playgroundConfig": {
79
+ "assets": [
80
+ {
81
+ "path": "generator/dist/pygen-*.whl",
82
+ "contentType": "application/zip"
83
+ }
84
+ ],
85
+ "bundlePeerDependencies": [
86
+ "@azure-tools/typespec-client-generator-core",
87
+ "@azure-tools/typespec-azure-core",
88
+ "@azure-tools/typespec-autorest",
89
+ "@azure-tools/typespec-azure-resource-manager",
90
+ "@azure-tools/typespec-azure-rulesets"
91
+ ]
71
92
  },
72
93
  "dependencies": {
73
94
  "js-yaml": "~4.1.0",
@@ -77,29 +98,29 @@
77
98
  "tsx": "^4.21.0"
78
99
  },
79
100
  "devDependencies": {
80
- "@azure-tools/typespec-autorest": "~0.66.1",
81
- "@azure-tools/typespec-azure-core": "~0.66.1",
82
- "@azure-tools/typespec-azure-resource-manager": "~0.66.0",
83
- "@azure-tools/typespec-azure-rulesets": "~0.66.0",
84
- "@azure-tools/typespec-client-generator-core": "~0.66.4",
85
- "@azure-tools/azure-http-specs": "0.1.0-alpha.39-dev.4",
86
- "@typespec/compiler": "^1.10.0",
87
- "@typespec/http": "^1.10.0",
88
- "@typespec/openapi": "^1.10.0",
89
- "@typespec/rest": "~0.80.0",
90
- "@typespec/versioning": "~0.80.0",
91
- "@typespec/events": "~0.80.0",
92
- "@typespec/spector": "0.1.0-alpha.24",
93
- "@typespec/spec-api": "0.1.0-alpha.14-dev.1",
94
- "@typespec/sse": "~0.80.0",
95
- "@typespec/streams": "~0.80.0",
96
- "@typespec/xml": "~0.80.0",
97
- "@typespec/http-specs": "0.1.0-alpha.35",
101
+ "@azure-tools/typespec-autorest": "~0.67.0",
102
+ "@azure-tools/typespec-azure-core": "~0.67.1",
103
+ "@azure-tools/typespec-azure-resource-manager": "~0.67.1",
104
+ "@azure-tools/typespec-azure-rulesets": "~0.67.0",
105
+ "@azure-tools/typespec-client-generator-core": "~0.67.4",
106
+ "@azure-tools/azure-http-specs": "0.1.0-alpha.40-dev.12",
107
+ "@typespec/compiler": "^1.11.0",
108
+ "@typespec/http": "^1.11.0",
109
+ "@typespec/openapi": "^1.11.0",
110
+ "@typespec/rest": "~0.81.0",
111
+ "@typespec/versioning": "~0.81.0",
112
+ "@typespec/events": "~0.81.0",
113
+ "@typespec/spector": "0.1.0-alpha.25",
114
+ "@typespec/spec-api": "0.1.0-alpha.14",
115
+ "@typespec/sse": "~0.81.0",
116
+ "@typespec/streams": "~0.81.0",
117
+ "@typespec/xml": "~0.81.0",
118
+ "@typespec/http-specs": "0.1.0-alpha.36",
98
119
  "@types/js-yaml": "~4.0.5",
99
120
  "@types/node": "~25.0.2",
100
121
  "@types/semver": "7.5.8",
101
122
  "c8": "^10.1.3",
102
- "chalk": "5.3.0",
123
+ "picocolors": "~1.1.1",
103
124
  "rimraf": "~6.1.2",
104
125
  "typescript": "~5.9.2",
105
126
  "typescript-eslint": "^8.49.0",
@@ -1,89 +0,0 @@
1
- /* eslint-disable no-console */
2
- import { execSync } from "child_process";
3
- import fs, { readFileSync } from "fs";
4
- import { platform } from "os";
5
- import { dirname, join } from "path";
6
- import { fileURLToPath } from "url";
7
- import { parseArgs } from "util";
8
-
9
- const root = join(dirname(fileURLToPath(import.meta.url)), "../../../");
10
-
11
- const argv = parseArgs({
12
- args: process.argv.slice(2),
13
- options: {
14
- validFolders: { type: "string", required: true, multiple: true },
15
- flavor: { type: "string" },
16
- command: { type: "string" },
17
- name: { type: "string" },
18
- testFolder: { type: "string" },
19
- },
20
- });
21
-
22
- const foldersToProcess = argv.values.flavor
23
- ? [argv.values.flavor]
24
- : argv.values.validFolders || ["azure", "unbranded"];
25
-
26
- const commandToRun = argv.values.command || "ci";
27
- const TEST_FOLDER = argv.values.testFolder || "generator/test";
28
-
29
- function getCommand(command: string, flavor: string, name?: string): string {
30
- let retval: string;
31
- if (platform() === "win32") {
32
- retval = `set FOLDER=${flavor} && ${venvPath} -m tox -c ./${TEST_FOLDER}/${flavor}/tox.ini -e ${command}`;
33
- } else {
34
- // Linux and macOS
35
- retval = `FOLDER=${flavor} ${venvPath} -m tox -c ./${TEST_FOLDER}/${flavor}/tox.ini -e ${command}`;
36
- }
37
- if (name) {
38
- return `${retval} -- -f ${name}`;
39
- }
40
- return retval;
41
- }
42
-
43
- function sectionExistsInToxIni(command: string, flavor: string): boolean {
44
- const toxIniPath = join(root, `${TEST_FOLDER}/${flavor}/tox.ini`);
45
- const toxIniContent = readFileSync(toxIniPath, "utf-8");
46
- return command
47
- .split(",")
48
- .map((c) => `[testenv:${c}]`)
49
- .every((section) => toxIniContent.includes(section));
50
- }
51
-
52
- function myExecSync(command: string, flavor: string, name?: string): void {
53
- if (!sectionExistsInToxIni(command, flavor)) {
54
- console.log(`No section for ${command} in tox.ini for flavor ${flavor}. Skipping...`);
55
- return;
56
- }
57
- execSync(getCommand(command, flavor, name), { stdio: "inherit" });
58
- execSync(getCommand(command, "unittests", name), { stdio: "inherit" });
59
- }
60
-
61
- let venvPath = join(root, "venv");
62
- if (fs.existsSync(join(venvPath, "bin"))) {
63
- venvPath = join(venvPath, "bin", "python");
64
- } else if (fs.existsSync(join(venvPath, "Scripts"))) {
65
- venvPath = join(venvPath, "Scripts", "python.exe");
66
- } else {
67
- throw new Error("Virtual environment doesn't exist.");
68
- }
69
-
70
- foldersToProcess.forEach((flavor) => {
71
- try {
72
- if (getCommand(commandToRun, flavor, argv.values.name)) {
73
- console.log(`Running ${commandToRun} for flavor ${flavor}...`);
74
- myExecSync(commandToRun, flavor, argv.values.name);
75
- } else {
76
- console.error(`Error: Unknown command '${commandToRun}'.`);
77
- process.exit(1);
78
- }
79
- } catch (error) {
80
- const message = (error as Error).message;
81
- if (message.includes("pyright") || message.includes("mypy") || message.includes("lint")) {
82
- // fixing linting issues that come from upgrading python version in separate pr
83
- process.exit(0);
84
- }
85
- console.error(message);
86
- console.error(`Error executing command for flavor ${flavor}: ${message}`);
87
- process.exit(1);
88
- }
89
- });
@@ -1,94 +0,0 @@
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.commonproperties.aio import CommonPropertiesClient
8
- from azure.resourcemanager.commonproperties import models
9
- from azure.core import exceptions
10
-
11
- SUBSCRIPTION_ID = "00000000-0000-0000-0000-000000000000"
12
- RESOURCE_GROUP_NAME = "test-rg"
13
-
14
-
15
- @pytest.fixture
16
- async def client(credential, authentication_policy):
17
- async with CommonPropertiesClient(
18
- credential, SUBSCRIPTION_ID, "http://localhost:3000", authentication_policy=authentication_policy
19
- ) as client:
20
- yield client
21
-
22
-
23
- @pytest.mark.asyncio
24
- async def test_managed_identity_get(client):
25
- result = await client.managed_identity.get(
26
- resource_group_name=RESOURCE_GROUP_NAME, managed_identity_tracked_resource_name="identity"
27
- )
28
- assert result.location == "eastus"
29
- assert result.identity.type == "SystemAssigned"
30
- assert result.properties.provisioning_state == "Succeeded"
31
-
32
-
33
- @pytest.mark.asyncio
34
- async def test_managed_identity_create_with_system_assigned(client):
35
- result = await client.managed_identity.create_with_system_assigned(
36
- resource_group_name=RESOURCE_GROUP_NAME,
37
- managed_identity_tracked_resource_name="identity",
38
- resource=models.ManagedIdentityTrackedResource(
39
- location="eastus", identity=models.ManagedServiceIdentity(type="SystemAssigned")
40
- ),
41
- )
42
- assert result.location == "eastus"
43
- assert result.identity.type == "SystemAssigned"
44
- assert result.properties.provisioning_state == "Succeeded"
45
-
46
-
47
- @pytest.mark.asyncio
48
- async def test_managed_identity_update_with_user_assigned_and_system_assigned(client):
49
- result = await client.managed_identity.update_with_user_assigned_and_system_assigned(
50
- resource_group_name=RESOURCE_GROUP_NAME,
51
- managed_identity_tracked_resource_name="identity",
52
- properties=models.ManagedIdentityTrackedResource(
53
- location="eastus",
54
- identity=models.ManagedServiceIdentity(
55
- type="SystemAssigned,UserAssigned",
56
- user_assigned_identities={
57
- "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/id1": models.UserAssignedIdentity()
58
- },
59
- ),
60
- ),
61
- )
62
- assert result.location == "eastus"
63
- assert result.identity.type == "SystemAssigned,UserAssigned"
64
- assert result.properties.provisioning_state == "Succeeded"
65
-
66
-
67
- @pytest.mark.asyncio
68
- async def test_error_get_for_predefined_error(client):
69
- try:
70
- await client.error.get_for_predefined_error(
71
- resource_group_name=RESOURCE_GROUP_NAME,
72
- confidential_resource_name="confidential",
73
- )
74
- except exceptions.ResourceNotFoundError as e:
75
- assert e.status_code == 404
76
- assert (
77
- e.error.message
78
- == "The Resource 'Azure.ResourceManager.CommonProperties/confidentialResources/confidential' under resource group 'test-rg' was not found."
79
- )
80
-
81
-
82
- @pytest.mark.asyncio
83
- async def test_error_create_for_user_defined_error(client):
84
- try:
85
- await client.error.create_for_user_defined_error(
86
- resource_group_name=RESOURCE_GROUP_NAME,
87
- confidential_resource_name="confidential",
88
- resource=models.ConfidentialResource(
89
- location="eastus", properties=models.ConfidentialResourceProperties(username="00")
90
- ),
91
- )
92
- except exceptions.HttpResponseError as e:
93
- assert e.status_code == 400
94
- assert e.error.message == "Username should not contain only numbers."
@@ -1,30 +0,0 @@
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.largeheader.aio import LargeHeaderClient
8
- from azure.resourcemanager.largeheader import models
9
-
10
- SUBSCRIPTION_ID = "00000000-0000-0000-0000-000000000000"
11
- RESOURCE_GROUP_NAME = "test-rg"
12
-
13
-
14
- @pytest.fixture
15
- async def client(credential, authentication_policy):
16
- async with LargeHeaderClient(
17
- credential, SUBSCRIPTION_ID, "http://localhost:3000", authentication_policy=authentication_policy
18
- ) as client:
19
- yield client
20
-
21
-
22
- @pytest.mark.asyncio
23
- async def test_large_headers_begin_two6_k(client: LargeHeaderClient):
24
- result = await (
25
- await client.large_headers.begin_two6_k(
26
- resource_group_name=RESOURCE_GROUP_NAME,
27
- large_header_name="header1",
28
- )
29
- ).result()
30
- assert result == models.CancelResult(succeeded=True)
@@ -1,36 +0,0 @@
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.nonresource.aio import NonResourceClient
8
- from azure.resourcemanager.nonresource import models
9
-
10
- SUBSCRIPTION_ID = "00000000-0000-0000-0000-000000000000"
11
- RESOURCE_GROUP_NAME = "test-rg"
12
-
13
-
14
- @pytest.fixture
15
- async def client(credential, authentication_policy):
16
- async with NonResourceClient(
17
- credential, SUBSCRIPTION_ID, "http://localhost:3000", authentication_policy=authentication_policy
18
- ) as client:
19
- yield client
20
-
21
-
22
- @pytest.mark.asyncio
23
- async def test_non_resource_create(client: NonResourceClient):
24
- result = await client.non_resource_operations.create(
25
- location="eastus", parameter="hello", body=models.NonResource(id="id", name="hello", type="nonResource")
26
- )
27
- assert result == models.NonResource(id="id", name="hello", type="nonResource")
28
-
29
-
30
- @pytest.mark.asyncio
31
- async def test_non_resource_get(client: NonResourceClient):
32
- result = await client.non_resource_operations.get(
33
- location="eastus",
34
- parameter="hello",
35
- )
36
- assert result == models.NonResource(id="id", name="hello", type="nonResource")
@@ -1,205 +0,0 @@
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.operationtemplates.aio import OperationTemplatesClient
8
- from azure.resourcemanager.operationtemplates import models
9
-
10
- SUBSCRIPTION_ID = "00000000-0000-0000-0000-000000000000"
11
- RESOURCE_GROUP_NAME = "test-rg"
12
-
13
-
14
- @pytest.fixture
15
- async def client(credential, authentication_policy):
16
- async with OperationTemplatesClient(
17
- credential,
18
- SUBSCRIPTION_ID,
19
- "http://localhost:3000",
20
- authentication_policy=authentication_policy,
21
- polling_interval=0,
22
- ) as client:
23
- yield client
24
-
25
-
26
- @pytest.mark.asyncio
27
- async def test_check_name_availability_check_global(client):
28
- result = await client.check_name_availability.check_global(
29
- body=models.CheckNameAvailabilityRequest(name="checkName", type="Microsoft.Web/site")
30
- )
31
- assert result.name_available == False
32
- assert result.reason == models.CheckNameAvailabilityReason.ALREADY_EXISTS
33
- assert result.message == "Hostname 'checkName' already exists. Please select a different name."
34
-
35
-
36
- @pytest.mark.asyncio
37
- async def test_check_name_availability_check_local(client):
38
- result = await client.check_name_availability.check_local(
39
- location="westus",
40
- body=models.CheckNameAvailabilityRequest(name="checkName", type="Microsoft.Web/site"),
41
- )
42
- assert result.name_available == False
43
- assert result.reason == models.CheckNameAvailabilityReason.ALREADY_EXISTS
44
- assert result.message == "Hostname 'checkName' already exists. Please select a different name."
45
-
46
-
47
- @pytest.mark.asyncio
48
- async def test_operations_list(client):
49
- result = client.operations.list()
50
- async for operation in result:
51
- assert operation.name == "Microsoft.Compute/virtualMachines/write"
52
- assert operation.display.operation == "Create or Update Virtual Machine."
53
- assert operation.origin == "user,system"
54
- assert operation.action_type == "Internal"
55
-
56
-
57
- @pytest.mark.asyncio
58
- async def test_lro_begin_create_or_replace(client):
59
- result = await (
60
- await client.lro.begin_create_or_replace(
61
- resource_group_name=RESOURCE_GROUP_NAME,
62
- order_name="order1",
63
- resource=models.Order(
64
- location="eastus",
65
- properties=models.OrderProperties(product_id="product1", amount=1),
66
- ),
67
- )
68
- ).result()
69
- assert result.name == "order1"
70
- assert (
71
- result.id
72
- == "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test-rg/providers/Azure.ResourceManager.OperationTemplates/orders/order1"
73
- )
74
- assert result.type == "Azure.ResourceManager.Resources/orders"
75
- assert result.location == "eastus"
76
- assert result.system_data.created_by == "AzureSDK"
77
-
78
-
79
- @pytest.mark.asyncio
80
- async def test_lro_begin_export(client):
81
- await (
82
- await client.lro.begin_export(
83
- resource_group_name=RESOURCE_GROUP_NAME,
84
- order_name="order1",
85
- body=models.ExportRequest(format="csv"),
86
- )
87
- ).result()
88
-
89
-
90
- @pytest.mark.asyncio
91
- async def test_lro_begin_delete(client):
92
- await (
93
- await client.lro.begin_delete(
94
- resource_group_name=RESOURCE_GROUP_NAME,
95
- order_name="order1",
96
- )
97
- ).result()
98
-
99
-
100
- @pytest.mark.asyncio
101
- async def test_optional_body_get(client):
102
- result = await client.optional_body.get(
103
- resource_group_name=RESOURCE_GROUP_NAME,
104
- widget_name="widget1",
105
- )
106
- assert result.name == "widget1"
107
- assert (
108
- result.id
109
- == "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test-rg/providers/Azure.ResourceManager.OperationTemplates/widgets/widget1"
110
- )
111
- assert result.type == "Azure.ResourceManager.OperationTemplates/widgets"
112
- assert result.location == "eastus"
113
- assert result.properties.name == "widget1"
114
- assert result.properties.description == "A test widget"
115
- assert result.properties.provisioning_state == "Succeeded"
116
-
117
-
118
- @pytest.mark.asyncio
119
- async def test_optional_body_patch_without_body(client):
120
- result = await client.optional_body.patch(
121
- resource_group_name=RESOURCE_GROUP_NAME,
122
- widget_name="widget1",
123
- )
124
- assert result.name == "widget1"
125
- assert result.properties.name == "widget1"
126
- assert result.properties.description == "A test widget"
127
-
128
-
129
- @pytest.mark.asyncio
130
- async def test_optional_body_patch_with_body(client):
131
- result = await client.optional_body.patch(
132
- resource_group_name=RESOURCE_GROUP_NAME,
133
- widget_name="widget1",
134
- properties=models.Widget(
135
- location="eastus",
136
- properties=models.WidgetProperties(name="updated-widget", description="Updated description"),
137
- ),
138
- )
139
- assert result.name == "widget1"
140
- assert result.properties.name == "updated-widget"
141
- assert result.properties.description == "Updated description"
142
-
143
-
144
- @pytest.mark.asyncio
145
- async def test_optional_body_post_without_body(client):
146
- result = await client.optional_body.post(
147
- resource_group_name=RESOURCE_GROUP_NAME,
148
- widget_name="widget1",
149
- )
150
- assert result.result == "Action completed successfully"
151
-
152
-
153
- @pytest.mark.asyncio
154
- async def test_optional_body_post_with_body(client):
155
- result = await client.optional_body.post(
156
- resource_group_name=RESOURCE_GROUP_NAME,
157
- widget_name="widget1",
158
- body=models.ActionRequest(action_type="perform", parameters="test-parameters"),
159
- )
160
- assert result.result == "Action completed successfully with parameters"
161
-
162
-
163
- @pytest.mark.asyncio
164
- async def test_optional_body_provider_post_without_body(client):
165
- result = await client.optional_body.provider_post()
166
- assert result.total_allowed == 50
167
- assert result.status == "Changed to default allowance"
168
-
169
-
170
- @pytest.mark.asyncio
171
- async def test_optional_body_provider_post_with_body(client):
172
- result = await client.optional_body.provider_post(
173
- body=models.ChangeAllowanceRequest(total_allowed=100, reason="Increased demand"),
174
- )
175
- assert result.total_allowed == 100
176
- assert result.status == "Changed to requested allowance"
177
-
178
-
179
- @pytest.mark.asyncio
180
- async def test_lro_begin_export_array(client):
181
- result = await (
182
- await client.lro.begin_export_array(
183
- body=models.ExportRequest(format="csv"),
184
- )
185
- ).result()
186
- assert len(result) == 2
187
- assert result[0].content == "order1,product1,1"
188
- assert result[1].content == "order2,product2,2"
189
-
190
-
191
- @pytest.mark.asyncio
192
- async def test_lro_paging_begin_post_paging_lro(client):
193
- poller = await client.lro_paging.begin_post_paging_lro(
194
- resource_group_name=RESOURCE_GROUP_NAME,
195
- product_name="default",
196
- )
197
- result = await poller.result()
198
- items = [item async for item in result]
199
- assert len(items) == 2
200
- assert items[0].name == "product1"
201
- assert items[0].properties.product_id == "product1"
202
- assert items[0].properties.provisioning_state == "Succeeded"
203
- assert items[1].name == "product2"
204
- assert items[1].properties.product_id == "product2"
205
- assert items[1].properties.provisioning_state == "Succeeded"