@typespec/http-client-python 0.23.0 → 0.24.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 (77) hide show
  1. package/dist/emitter/code-model.d.ts.map +1 -1
  2. package/dist/emitter/code-model.js +35 -25
  3. package/dist/emitter/code-model.js.map +1 -1
  4. package/dist/emitter/http.d.ts +4 -4
  5. package/dist/emitter/http.d.ts.map +1 -1
  6. package/dist/emitter/http.js +41 -35
  7. package/dist/emitter/http.js.map +1 -1
  8. package/dist/emitter/types.d.ts +1 -1
  9. package/dist/emitter/types.d.ts.map +1 -1
  10. package/dist/emitter/types.js +2 -2
  11. package/dist/emitter/types.js.map +1 -1
  12. package/dist/emitter/utils.d.ts +2 -2
  13. package/dist/emitter/utils.d.ts.map +1 -1
  14. package/dist/emitter/utils.js +7 -6
  15. package/dist/emitter/utils.js.map +1 -1
  16. package/emitter/src/code-model.ts +61 -18
  17. package/emitter/src/http.ts +107 -22
  18. package/emitter/src/types.ts +2 -1
  19. package/emitter/src/utils.ts +14 -12
  20. package/emitter/temp/tsconfig.tsbuildinfo +1 -1
  21. package/eng/scripts/ci/dev_requirements.txt +3 -3
  22. package/eng/scripts/ci/pylintrc +1 -1
  23. package/eng/scripts/ci/regenerate.ts +8 -1
  24. package/eng/scripts/setup/__pycache__/package_manager.cpython-311.pyc +0 -0
  25. package/eng/scripts/setup/__pycache__/venvtools.cpython-311.pyc +0 -0
  26. package/generator/build/lib/pygen/codegen/models/code_model.py +4 -0
  27. package/generator/build/lib/pygen/codegen/models/enum_type.py +8 -1
  28. package/generator/build/lib/pygen/codegen/models/list_type.py +6 -2
  29. package/generator/build/lib/pygen/codegen/models/model_type.py +2 -2
  30. package/generator/build/lib/pygen/codegen/models/operation.py +10 -1
  31. package/generator/build/lib/pygen/codegen/models/operation_group.py +3 -1
  32. package/generator/build/lib/pygen/codegen/models/request_builder.py +20 -3
  33. package/generator/build/lib/pygen/codegen/models/response.py +2 -2
  34. package/generator/build/lib/pygen/codegen/models/utils.py +7 -0
  35. package/generator/build/lib/pygen/codegen/serializers/builder_serializer.py +26 -12
  36. package/generator/build/lib/pygen/codegen/serializers/client_serializer.py +1 -2
  37. package/generator/build/lib/pygen/codegen/serializers/general_serializer.py +1 -1
  38. package/generator/build/lib/pygen/codegen/serializers/model_serializer.py +3 -0
  39. package/generator/build/lib/pygen/codegen/templates/enum.py.jinja2 +3 -1
  40. package/generator/build/lib/pygen/codegen/templates/model_base.py.jinja2 +65 -9
  41. package/generator/build/lib/pygen/codegen/templates/serialization.py.jinja2 +14 -3
  42. package/generator/dist/pygen-0.1.0-py3-none-any.whl +0 -0
  43. package/generator/pygen/codegen/models/code_model.py +4 -0
  44. package/generator/pygen/codegen/models/enum_type.py +8 -1
  45. package/generator/pygen/codegen/models/list_type.py +6 -2
  46. package/generator/pygen/codegen/models/model_type.py +2 -2
  47. package/generator/pygen/codegen/models/operation.py +10 -1
  48. package/generator/pygen/codegen/models/operation_group.py +3 -1
  49. package/generator/pygen/codegen/models/request_builder.py +20 -3
  50. package/generator/pygen/codegen/models/response.py +2 -2
  51. package/generator/pygen/codegen/models/utils.py +7 -0
  52. package/generator/pygen/codegen/serializers/builder_serializer.py +26 -12
  53. package/generator/pygen/codegen/serializers/client_serializer.py +1 -2
  54. package/generator/pygen/codegen/serializers/general_serializer.py +1 -1
  55. package/generator/pygen/codegen/serializers/model_serializer.py +3 -0
  56. package/generator/pygen/codegen/templates/enum.py.jinja2 +3 -1
  57. package/generator/pygen/codegen/templates/model_base.py.jinja2 +65 -9
  58. package/generator/pygen/codegen/templates/serialization.py.jinja2 +14 -3
  59. package/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_client_default_value_async.py +46 -0
  60. package/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_client_location_async.py +48 -21
  61. package/generator/test/azure/mock_api_tests/asynctests/test_azure_resource_manager_multi_service_async.py +110 -0
  62. package/generator/test/azure/mock_api_tests/asynctests/test_service_multi_service_async.py +31 -0
  63. package/generator/test/azure/mock_api_tests/asynctests/test_special_words_async.py +18 -0
  64. package/generator/test/azure/mock_api_tests/test_azure_arm_operationtemplates.py +16 -0
  65. package/generator/test/azure/mock_api_tests/test_azure_client_generator_core_client_default_value.py +42 -0
  66. package/generator/test/azure/mock_api_tests/test_azure_client_generator_core_client_location.py +44 -19
  67. package/generator/test/azure/mock_api_tests/test_azure_resource_manager_multi_service.py +104 -0
  68. package/generator/test/azure/mock_api_tests/test_service_multi_service.py +29 -0
  69. package/generator/test/azure/mock_api_tests/test_special_words.py +17 -0
  70. package/generator/test/azure/requirements.txt +9 -1
  71. package/generator/test/generic_mock_api_tests/asynctests/test_parameters_query_async.py +18 -0
  72. package/generator/test/generic_mock_api_tests/test_parameters_query.py +17 -0
  73. package/generator/test/generic_mock_api_tests/test_typetest_scalar.py +0 -5
  74. package/generator/test/generic_mock_api_tests/test_typetest_union_discriminated.py +290 -0
  75. package/generator/test/unbranded/requirements.txt +2 -0
  76. package/generator/test/unittests/test_model_base_serialization.py +323 -5
  77. package/package.json +5 -5
@@ -162,16 +162,17 @@ export function getAddedOn<TServiceOperation extends SdkServiceOperation>(
162
162
  | SdkMethodParameter
163
163
  | SdkHttpParameter
164
164
  | SdkMethod<TServiceOperation>,
165
+ serviceApiVersions: string[] = [],
165
166
  ): string | undefined {
166
- // since we do not support multi-service for now, we can just check the root client's api version
167
167
  // if type is added in the first version of the client, we do not need to add the versioning info
168
- if (
169
- type.apiVersions[0] ===
170
- context.sdkPackage.clients.find(
171
- (c) => c.clientInitialization.initializedBy | InitializedByFlags.Individually,
172
- )?.apiVersions[0]
173
- )
174
- return undefined;
168
+ const apiVersions =
169
+ serviceApiVersions.length > 0
170
+ ? serviceApiVersions
171
+ : (context.sdkPackage.clients.find(
172
+ (c) => c.clientInitialization.initializedBy | InitializedByFlags.Individually,
173
+ )?.apiVersions ?? []);
174
+
175
+ if (type.apiVersions[0] === apiVersions[0]) return undefined;
175
176
  return type.apiVersions[0];
176
177
  }
177
178
 
@@ -192,9 +193,9 @@ export function isContinuationToken<TServiceOperation extends SdkServiceOperatio
192
193
  if (input) {
193
194
  return Boolean(
194
195
  parameterSegments &&
195
- parameterSegments.length > 0 &&
196
- (parameter.kind === "header" || parameter.kind === "query" || parameter.kind === "body") &&
197
- parameterSegments.at(-1) === parameter.correspondingMethodParams.at(-1),
196
+ parameterSegments.length > 0 &&
197
+ (parameter.kind === "header" || parameter.kind === "query" || parameter.kind === "body") &&
198
+ parameterSegments.at(-1) === parameter.correspondingMethodParams.at(-1),
198
199
  );
199
200
  }
200
201
 
@@ -207,6 +208,7 @@ export function emitParamBase<TServiceOperation extends SdkServiceOperation>(
207
208
  context: PythonSdkContext,
208
209
  parameter: SdkEndpointParameter | SdkCredentialParameter | SdkMethodParameter | SdkHttpParameter,
209
210
  method?: SdkServiceMethod<TServiceOperation>,
211
+ serviceApiVersions: string[] = [],
210
212
  ): ParamBase {
211
213
  let type = getType(context, parameter.type);
212
214
  if (parameter.isApiVersionParam) {
@@ -231,7 +233,7 @@ export function emitParamBase<TServiceOperation extends SdkServiceOperation>(
231
233
  return {
232
234
  optional: parameter.optional,
233
235
  description: (parameter.summary ? parameter.summary : parameter.doc) ?? "",
234
- addedOn: getAddedOn(context, parameter),
236
+ addedOn: getAddedOn(context, parameter, serviceApiVersions),
235
237
  clientName,
236
238
  inOverload: false,
237
239
  isApiVersion: parameter.isApiVersionParam,