@typespec/http-client-python 0.8.1 → 0.8.3-dev.1

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 (114) hide show
  1. package/README.md +86 -84
  2. package/dist/emitter/code-model.d.ts +1 -2
  3. package/dist/emitter/code-model.d.ts.map +1 -1
  4. package/dist/emitter/code-model.js +5 -2
  5. package/dist/emitter/code-model.js.map +1 -1
  6. package/dist/emitter/emitter.d.ts +0 -2
  7. package/dist/emitter/emitter.d.ts.map +1 -1
  8. package/dist/emitter/emitter.js +21 -32
  9. package/dist/emitter/emitter.js.map +1 -1
  10. package/dist/emitter/http.d.ts +4 -4
  11. package/dist/emitter/http.d.ts.map +1 -1
  12. package/dist/emitter/http.js.map +1 -1
  13. package/dist/emitter/index.d.ts +1 -1
  14. package/dist/emitter/index.d.ts.map +1 -1
  15. package/dist/emitter/index.js +1 -1
  16. package/dist/emitter/index.js.map +1 -1
  17. package/dist/emitter/lib.d.ts +65 -22
  18. package/dist/emitter/lib.d.ts.map +1 -1
  19. package/dist/emitter/lib.js +51 -26
  20. package/dist/emitter/lib.js.map +1 -1
  21. package/dist/emitter/types.d.ts +3 -3
  22. package/dist/emitter/types.d.ts.map +1 -1
  23. package/dist/emitter/types.js.map +1 -1
  24. package/dist/emitter/utils.d.ts +5 -4
  25. package/dist/emitter/utils.d.ts.map +1 -1
  26. package/dist/emitter/utils.js +31 -16
  27. package/dist/emitter/utils.js.map +1 -1
  28. package/emitter/src/code-model.ts +16 -25
  29. package/emitter/src/emitter.ts +35 -51
  30. package/emitter/src/http.ts +18 -21
  31. package/emitter/src/index.ts +1 -1
  32. package/emitter/src/lib.ts +62 -41
  33. package/emitter/src/types.ts +13 -23
  34. package/emitter/src/utils.ts +36 -25
  35. package/emitter/temp/tsconfig.tsbuildinfo +1 -1
  36. package/eng/scripts/Generate.ps1 +3 -0
  37. package/eng/scripts/ci/pylintrc +1 -1
  38. package/eng/scripts/ci/regenerate.ts +92 -44
  39. package/eng/scripts/setup/__pycache__/venvtools.cpython-38.pyc +0 -0
  40. package/generator/build/lib/pygen/codegen/__init__.py +7 -23
  41. package/generator/build/lib/pygen/codegen/_utils.py +26 -2
  42. package/generator/build/lib/pygen/codegen/models/code_model.py +38 -5
  43. package/generator/build/lib/pygen/codegen/serializers/__init__.py +21 -15
  44. package/generator/build/lib/pygen/codegen/serializers/general_serializer.py +5 -2
  45. package/generator/build/lib/pygen/codegen/serializers/test_serializer.py +1 -1
  46. package/generator/build/lib/pygen/codegen/templates/client_container.py.jinja2 +3 -1
  47. package/generator/build/lib/pygen/codegen/templates/config_container.py.jinja2 +3 -1
  48. package/generator/build/lib/pygen/codegen/templates/conftest.py.jinja2 +3 -1
  49. package/generator/build/lib/pygen/codegen/templates/enum_container.py.jinja2 +3 -1
  50. package/generator/build/lib/pygen/codegen/templates/init.py.jinja2 +3 -1
  51. package/generator/build/lib/pygen/codegen/templates/model_base.py.jinja2 +3 -5
  52. package/generator/build/lib/pygen/codegen/templates/model_container.py.jinja2 +3 -1
  53. package/generator/build/lib/pygen/codegen/templates/model_init.py.jinja2 +3 -1
  54. package/generator/build/lib/pygen/codegen/templates/operation_groups_container.py.jinja2 +3 -1
  55. package/generator/build/lib/pygen/codegen/templates/operations_folder_init.py.jinja2 +3 -1
  56. package/generator/build/lib/pygen/codegen/templates/packaging_templates/LICENSE.jinja2 +1 -21
  57. package/generator/build/lib/pygen/codegen/templates/packaging_templates/MANIFEST.in.jinja2 +6 -2
  58. package/generator/build/lib/pygen/codegen/templates/packaging_templates/README.md.jinja2 +5 -5
  59. package/generator/build/lib/pygen/codegen/templates/packaging_templates/dev_requirements.txt.jinja2 +3 -3
  60. package/generator/build/lib/pygen/codegen/templates/packaging_templates/setup.py.jinja2 +20 -9
  61. package/generator/build/lib/pygen/codegen/templates/patch.py.jinja2 +9 -4
  62. package/generator/build/lib/pygen/codegen/templates/request_builders.py.jinja2 +3 -1
  63. package/generator/build/lib/pygen/codegen/templates/rest_init.py.jinja2 +3 -1
  64. package/generator/build/lib/pygen/codegen/templates/sample.py.jinja2 +3 -1
  65. package/generator/build/lib/pygen/codegen/templates/serialization.py.jinja2 +4 -25
  66. package/generator/build/lib/pygen/codegen/templates/test.py.jinja2 +3 -1
  67. package/generator/build/lib/pygen/codegen/templates/testpreparer.py.jinja2 +3 -1
  68. package/generator/build/lib/pygen/codegen/templates/types.py.jinja2 +3 -1
  69. package/generator/build/lib/pygen/codegen/templates/validation.py.jinja2 +3 -1
  70. package/generator/build/lib/pygen/codegen/templates/vendor.py.jinja2 +3 -1
  71. package/generator/build/lib/pygen/codegen/templates/version.py.jinja2 +3 -1
  72. package/generator/dist/pygen-0.1.0-py3-none-any.whl +0 -0
  73. package/generator/pygen/codegen/__init__.py +7 -23
  74. package/generator/pygen/codegen/_utils.py +26 -2
  75. package/generator/pygen/codegen/models/code_model.py +38 -5
  76. package/generator/pygen/codegen/serializers/__init__.py +21 -15
  77. package/generator/pygen/codegen/serializers/general_serializer.py +5 -2
  78. package/generator/pygen/codegen/serializers/test_serializer.py +1 -1
  79. package/generator/pygen/codegen/templates/client_container.py.jinja2 +3 -1
  80. package/generator/pygen/codegen/templates/config_container.py.jinja2 +3 -1
  81. package/generator/pygen/codegen/templates/conftest.py.jinja2 +3 -1
  82. package/generator/pygen/codegen/templates/enum_container.py.jinja2 +3 -1
  83. package/generator/pygen/codegen/templates/init.py.jinja2 +3 -1
  84. package/generator/pygen/codegen/templates/model_base.py.jinja2 +3 -5
  85. package/generator/pygen/codegen/templates/model_container.py.jinja2 +3 -1
  86. package/generator/pygen/codegen/templates/model_init.py.jinja2 +3 -1
  87. package/generator/pygen/codegen/templates/operation_groups_container.py.jinja2 +3 -1
  88. package/generator/pygen/codegen/templates/operations_folder_init.py.jinja2 +3 -1
  89. package/generator/pygen/codegen/templates/packaging_templates/LICENSE.jinja2 +1 -21
  90. package/generator/pygen/codegen/templates/packaging_templates/MANIFEST.in.jinja2 +6 -2
  91. package/generator/pygen/codegen/templates/packaging_templates/README.md.jinja2 +5 -5
  92. package/generator/pygen/codegen/templates/packaging_templates/dev_requirements.txt.jinja2 +3 -3
  93. package/generator/pygen/codegen/templates/packaging_templates/setup.py.jinja2 +20 -9
  94. package/generator/pygen/codegen/templates/patch.py.jinja2 +9 -4
  95. package/generator/pygen/codegen/templates/request_builders.py.jinja2 +3 -1
  96. package/generator/pygen/codegen/templates/rest_init.py.jinja2 +3 -1
  97. package/generator/pygen/codegen/templates/sample.py.jinja2 +3 -1
  98. package/generator/pygen/codegen/templates/serialization.py.jinja2 +4 -25
  99. package/generator/pygen/codegen/templates/test.py.jinja2 +3 -1
  100. package/generator/pygen/codegen/templates/testpreparer.py.jinja2 +3 -1
  101. package/generator/pygen/codegen/templates/types.py.jinja2 +3 -1
  102. package/generator/pygen/codegen/templates/validation.py.jinja2 +3 -1
  103. package/generator/pygen/codegen/templates/vendor.py.jinja2 +3 -1
  104. package/generator/pygen/codegen/templates/version.py.jinja2 +3 -1
  105. package/generator/pygen.egg-info/PKG-INFO +2 -2
  106. package/generator/pygen.egg-info/requires.txt +2 -2
  107. package/generator/setup.py +2 -2
  108. package/generator/test/azure/mock_api_tests/asynctests/test_azure_core_lro_rpc_async.py +2 -2
  109. package/generator/test/azure/mock_api_tests/test_azure_core_lro_rpc.py +1 -1
  110. package/generator/test/azure/requirements.txt +2 -1
  111. package/generator/test/generic_mock_api_tests/asynctests/test_streaming_jsonl_async.py +27 -0
  112. package/generator/test/generic_mock_api_tests/test_streaming_jsonl.py +25 -0
  113. package/generator/test/unbranded/requirements.txt +1 -0
  114. package/package.json +13 -6
@@ -110,8 +110,8 @@ export function removeUnderscoresFromNamespace(name?: string): string {
110
110
  return (name || "").replace(/_/g, "");
111
111
  }
112
112
 
113
- export function getImplementation<TServiceOperation extends SdkServiceOperation>(
114
- context: PythonSdkContext<TServiceOperation>,
113
+ export function getImplementation(
114
+ context: PythonSdkContext,
115
115
  parameter: SdkParameter | SdkHttpParameter,
116
116
  ): "Client" | "Method" {
117
117
  if (parameter.onClient) return "Client";
@@ -156,7 +156,7 @@ type ParamBase = {
156
156
  };
157
157
 
158
158
  export function getAddedOn<TServiceOperation extends SdkServiceOperation>(
159
- context: PythonSdkContext<TServiceOperation>,
159
+ context: PythonSdkContext,
160
160
  type: SdkModelPropertyType | SdkMethod<TServiceOperation>,
161
161
  ): string | undefined {
162
162
  // since we do not support multi-service for now, we can just check the root client's api version
@@ -200,7 +200,7 @@ export function isContinuationToken<TServiceOperation extends SdkServiceOperatio
200
200
  }
201
201
 
202
202
  export function emitParamBase<TServiceOperation extends SdkServiceOperation>(
203
- context: PythonSdkContext<TServiceOperation>,
203
+ context: PythonSdkContext,
204
204
  parameter: SdkParameter | SdkHttpParameter,
205
205
  method?: SdkServiceMethod<TServiceOperation>,
206
206
  ): ParamBase {
@@ -242,31 +242,42 @@ export function capitalize(name: string): string {
242
242
  return name[0].toUpperCase() + name.slice(1);
243
243
  }
244
244
 
245
- export function getClientNamespace<TServiceOperation extends SdkServiceOperation>(
246
- context: PythonSdkContext<TServiceOperation>,
247
- clientNamespace: string,
248
- ) {
249
- const rootNamespace = removeUnderscoresFromNamespace(
250
- context.sdkPackage.rootNamespace,
251
- ).toLowerCase();
252
- if (!context.emitContext.options["enable-typespec-namespace"]) {
253
- return rootNamespace;
245
+ const LIB_NAMESPACE = [
246
+ "azure.core",
247
+ "azure.resourcemanager",
248
+ "azure.clientgenerator.core",
249
+ "typespec.rest",
250
+ "typespec.http",
251
+ "typespec.versioning",
252
+ ];
253
+
254
+ export function getRootNamespace(context: PythonSdkContext): string {
255
+ let rootNamespace = "";
256
+ if (context.sdkPackage.clients.length > 0) {
257
+ rootNamespace = context.sdkPackage.clients[0].namespace;
258
+ } else if (context.sdkPackage.models.length > 0) {
259
+ const result = context.sdkPackage.models
260
+ .map((model) => model.namespace)
261
+ .filter((namespace) => !LIB_NAMESPACE.includes(namespace));
262
+ if (result.length > 0) {
263
+ result.sort();
264
+ rootNamespace = result[0];
265
+ }
266
+ } else if (context.sdkPackage.namespaces.length > 0) {
267
+ rootNamespace = context.sdkPackage.namespaces[0].fullName;
254
268
  }
269
+
270
+ return removeUnderscoresFromNamespace(rootNamespace).toLowerCase();
271
+ }
272
+
273
+ export function getClientNamespace(context: PythonSdkContext, clientNamespace: string) {
255
274
  if (
256
- [
257
- "azure.core",
258
- "azure.resourcemanager",
259
- "azure.clientgenerator.core",
260
- "typespec.rest",
261
- "typespec.http",
262
- "typespec.versioning",
263
- ].some((item) => clientNamespace.toLowerCase().startsWith(item))
275
+ clientNamespace === "" ||
276
+ LIB_NAMESPACE.some((item) => clientNamespace.toLowerCase().startsWith(item))
264
277
  ) {
265
- return rootNamespace;
278
+ return getRootNamespace(context);
266
279
  }
267
- return clientNamespace === ""
268
- ? rootNamespace
269
- : removeUnderscoresFromNamespace(clientNamespace).toLowerCase();
280
+ return removeUnderscoresFromNamespace(clientNamespace).toLowerCase();
270
281
  }
271
282
 
272
283
  function parseToken(token: Token): string {