@typespec/http-client-python 0.9.0-dev.1 → 0.9.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 +17 -21
  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 +15 -28
  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 +63 -21
  18. package/dist/emitter/lib.d.ts.map +1 -1
  19. package/dist/emitter/lib.js +47 -27
  20. package/dist/emitter/lib.js.map +1 -1
  21. package/dist/emitter/system-requirements.d.ts.map +1 -1
  22. package/dist/emitter/types.d.ts +3 -3
  23. package/dist/emitter/types.d.ts.map +1 -1
  24. package/dist/emitter/types.js +4 -3
  25. package/dist/emitter/types.js.map +1 -1
  26. package/dist/emitter/utils.d.ts +5 -5
  27. package/dist/emitter/utils.d.ts.map +1 -1
  28. package/dist/emitter/utils.js.map +1 -1
  29. package/emitter/src/code-model.ts +26 -30
  30. package/emitter/src/emitter.ts +29 -46
  31. package/emitter/src/http.ts +18 -21
  32. package/emitter/src/index.ts +1 -1
  33. package/emitter/src/lib.ts +66 -39
  34. package/emitter/src/types.ts +20 -26
  35. package/emitter/src/utils.ts +6 -9
  36. package/emitter/temp/tsconfig.tsbuildinfo +1 -1
  37. package/eng/scripts/Generate.ps1 +3 -0
  38. package/eng/scripts/ci/lint.ts +3 -6
  39. package/eng/scripts/ci/pylintrc +1 -1
  40. package/eng/scripts/ci/regenerate.ts +21 -26
  41. package/eng/scripts/ci/utils.ts +13 -18
  42. package/eng/scripts/setup/__pycache__/venvtools.cpython-38.pyc +0 -0
  43. package/generator/build/lib/pygen/codegen/__init__.py +7 -21
  44. package/generator/build/lib/pygen/codegen/_utils.py +26 -2
  45. package/generator/build/lib/pygen/codegen/models/code_model.py +33 -0
  46. package/generator/build/lib/pygen/codegen/models/credential_types.py +5 -2
  47. package/generator/build/lib/pygen/codegen/serializers/__init__.py +3 -1
  48. package/generator/build/lib/pygen/codegen/templates/client_container.py.jinja2 +3 -1
  49. package/generator/build/lib/pygen/codegen/templates/config_container.py.jinja2 +3 -1
  50. package/generator/build/lib/pygen/codegen/templates/conftest.py.jinja2 +3 -1
  51. package/generator/build/lib/pygen/codegen/templates/enum_container.py.jinja2 +3 -1
  52. package/generator/build/lib/pygen/codegen/templates/init.py.jinja2 +3 -1
  53. package/generator/build/lib/pygen/codegen/templates/model_base.py.jinja2 +3 -5
  54. package/generator/build/lib/pygen/codegen/templates/model_container.py.jinja2 +3 -1
  55. package/generator/build/lib/pygen/codegen/templates/model_init.py.jinja2 +3 -1
  56. package/generator/build/lib/pygen/codegen/templates/operation_groups_container.py.jinja2 +3 -1
  57. package/generator/build/lib/pygen/codegen/templates/operations_folder_init.py.jinja2 +3 -1
  58. package/generator/build/lib/pygen/codegen/templates/packaging_templates/LICENSE.jinja2 +1 -21
  59. package/generator/build/lib/pygen/codegen/templates/packaging_templates/setup.py.jinja2 +6 -4
  60. package/generator/build/lib/pygen/codegen/templates/patch.py.jinja2 +9 -4
  61. package/generator/build/lib/pygen/codegen/templates/request_builders.py.jinja2 +3 -1
  62. package/generator/build/lib/pygen/codegen/templates/rest_init.py.jinja2 +3 -1
  63. package/generator/build/lib/pygen/codegen/templates/sample.py.jinja2 +3 -1
  64. package/generator/build/lib/pygen/codegen/templates/serialization.py.jinja2 +4 -25
  65. package/generator/build/lib/pygen/codegen/templates/test.py.jinja2 +3 -1
  66. package/generator/build/lib/pygen/codegen/templates/testpreparer.py.jinja2 +3 -1
  67. package/generator/build/lib/pygen/codegen/templates/types.py.jinja2 +3 -1
  68. package/generator/build/lib/pygen/codegen/templates/validation.py.jinja2 +3 -1
  69. package/generator/build/lib/pygen/codegen/templates/vendor.py.jinja2 +3 -1
  70. package/generator/build/lib/pygen/codegen/templates/version.py.jinja2 +3 -1
  71. package/generator/dist/pygen-0.1.0-py3-none-any.whl +0 -0
  72. package/generator/pygen/codegen/__init__.py +7 -21
  73. package/generator/pygen/codegen/_utils.py +26 -2
  74. package/generator/pygen/codegen/models/code_model.py +33 -0
  75. package/generator/pygen/codegen/models/credential_types.py +5 -2
  76. package/generator/pygen/codegen/serializers/__init__.py +3 -1
  77. package/generator/pygen/codegen/templates/client_container.py.jinja2 +3 -1
  78. package/generator/pygen/codegen/templates/config_container.py.jinja2 +3 -1
  79. package/generator/pygen/codegen/templates/conftest.py.jinja2 +3 -1
  80. package/generator/pygen/codegen/templates/enum_container.py.jinja2 +3 -1
  81. package/generator/pygen/codegen/templates/init.py.jinja2 +3 -1
  82. package/generator/pygen/codegen/templates/model_base.py.jinja2 +3 -5
  83. package/generator/pygen/codegen/templates/model_container.py.jinja2 +3 -1
  84. package/generator/pygen/codegen/templates/model_init.py.jinja2 +3 -1
  85. package/generator/pygen/codegen/templates/operation_groups_container.py.jinja2 +3 -1
  86. package/generator/pygen/codegen/templates/operations_folder_init.py.jinja2 +3 -1
  87. package/generator/pygen/codegen/templates/packaging_templates/LICENSE.jinja2 +1 -21
  88. package/generator/pygen/codegen/templates/packaging_templates/setup.py.jinja2 +6 -4
  89. package/generator/pygen/codegen/templates/patch.py.jinja2 +9 -4
  90. package/generator/pygen/codegen/templates/request_builders.py.jinja2 +3 -1
  91. package/generator/pygen/codegen/templates/rest_init.py.jinja2 +3 -1
  92. package/generator/pygen/codegen/templates/sample.py.jinja2 +3 -1
  93. package/generator/pygen/codegen/templates/serialization.py.jinja2 +4 -25
  94. package/generator/pygen/codegen/templates/test.py.jinja2 +3 -1
  95. package/generator/pygen/codegen/templates/testpreparer.py.jinja2 +3 -1
  96. package/generator/pygen/codegen/templates/types.py.jinja2 +3 -1
  97. package/generator/pygen/codegen/templates/validation.py.jinja2 +3 -1
  98. package/generator/pygen/codegen/templates/vendor.py.jinja2 +3 -1
  99. package/generator/pygen/codegen/templates/version.py.jinja2 +3 -1
  100. package/generator/test/azure/mock_api_tests/asynctests/test_azure_core_lro_rpc_async.py +2 -2
  101. package/generator/test/azure/mock_api_tests/test_azure_core_lro_rpc.py +1 -1
  102. package/generator/test/azure/requirements.txt +2 -1
  103. package/generator/test/generic_mock_api_tests/asynctests/test_authentication_async.py +4 -0
  104. package/generator/test/generic_mock_api_tests/asynctests/test_headasboolean_async.py +4 -4
  105. package/generator/test/generic_mock_api_tests/asynctests/test_streaming_jsonl_async.py +27 -0
  106. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_visibility_async.py +1 -1
  107. package/generator/test/generic_mock_api_tests/test_authentication.py +4 -0
  108. package/generator/test/generic_mock_api_tests/test_headasboolean.py +4 -4
  109. package/generator/test/generic_mock_api_tests/test_streaming_jsonl.py +25 -0
  110. package/generator/test/generic_mock_api_tests/test_typetest_model_visibility.py +1 -1
  111. package/generator/test/unbranded/mock_api_tests/asynctests/test_auth_flow_async.py +19 -0
  112. package/generator/test/unbranded/mock_api_tests/test_auth_flow.py +17 -0
  113. package/generator/test/unbranded/requirements.txt +1 -0
  114. package/package.json +35 -26
@@ -33,6 +33,10 @@ def token_credential(core_library):
33
33
  def get_token(*scopes):
34
34
  return core_library.credentials.AccessToken(token="".join(scopes), expires_on=1800)
35
35
 
36
+ @staticmethod
37
+ def get_token_info(*scopes, **kwargs):
38
+ return core_library.credentials.AccessTokenInfo(token="".join(scopes), expires_on=1800)
39
+
36
40
  return FakeCredential()
37
41
 
38
42
 
@@ -24,10 +24,10 @@ def client_false():
24
24
 
25
25
 
26
26
  def test_head_true(client_true):
27
- body = models_true.VisibilityModel(query_prop=123)
28
- assert client_true.head_model(body) == True
27
+ body = models_true.VisibilityModel()
28
+ assert client_true.head_model(body, query_prop=123) == True
29
29
 
30
30
 
31
31
  def test_head_false(client_false):
32
- body = models_false.VisibilityModel(query_prop=123)
33
- assert client_false.head_model(body) is None
32
+ body = models_false.VisibilityModel()
33
+ assert client_false.head_model(body, query_prop=123) is None
@@ -0,0 +1,25 @@
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
+
8
+ from streaming.jsonl import JsonlClient
9
+
10
+
11
+ @pytest.fixture
12
+ def client():
13
+ with JsonlClient(endpoint="http://localhost:3000") as client:
14
+ yield client
15
+
16
+
17
+ JSONL = b'{"desc": "one"}\n{"desc": "two"}\n{"desc": "three"}'
18
+
19
+
20
+ def test_basic_send(client: JsonlClient):
21
+ client.basic.send(JSONL)
22
+
23
+
24
+ def test_basic_recv(client: JsonlClient):
25
+ assert b"".join(client.basic.receive()) == JSONL
@@ -14,7 +14,7 @@ def client():
14
14
 
15
15
 
16
16
  def test_get_model(client):
17
- result = client.get_model(models.VisibilityModel(query_prop=123))
17
+ result = client.get_model(models.VisibilityModel(), query_prop=123)
18
18
  assert result == models.VisibilityModel(read_prop="abc")
19
19
 
20
20
 
@@ -0,0 +1,19 @@
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 authentication.oauth2.aio import OAuth2Client
8
+
9
+
10
+ @pytest.mark.asyncio
11
+ async def test_oauth2_auth_flows():
12
+ oauth2_client = OAuth2Client("fake_credential")
13
+ assert oauth2_client._config.authentication_policy._auth_flows == [
14
+ {
15
+ "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize",
16
+ "scopes": [{"value": "https://security.microsoft.com/.default"}],
17
+ "type": "implicit",
18
+ }
19
+ ]
@@ -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
+ from authentication.oauth2 import OAuth2Client
7
+
8
+
9
+ def test_oauth2_auth_flows():
10
+ oauth2_client = OAuth2Client("fake_credential")
11
+ assert oauth2_client._config.authentication_policy._auth_flows == [
12
+ {
13
+ "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize",
14
+ "scopes": [{"value": "https://security.microsoft.com/.default"}],
15
+ "type": "implicit",
16
+ }
17
+ ]
@@ -18,6 +18,7 @@
18
18
  -e ./generated/server-versions-versioned
19
19
  -e ./generated/server-versions-not-versioned
20
20
  -e ./generated/special-words
21
+ -e ./generated/streaming-jsonl
21
22
  -e ./generated/typetest-array
22
23
  -e ./generated/typetest-dictionary
23
24
  -e ./generated/typetest-enum-extensible
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@typespec/http-client-python",
3
- "version": "0.9.0-dev.1",
3
+ "version": "0.9.1",
4
4
  "author": "Microsoft Corporation",
5
5
  "description": "TypeSpec emitter for Python SDKs",
6
6
  "homepage": "https://typespec.io",
@@ -43,7 +43,8 @@
43
43
  "test:generator": "tsx ./eng/scripts/ci/run-ci.ts --command=test",
44
44
  "test:emitter": "vitest run -c ./emitter/vitest.config.ts",
45
45
  "change:version": "pnpm chronus version --ignore-policies --only @typespec/http-client-python",
46
- "change:add": "pnpm chronus add"
46
+ "change:add": "pnpm chronus add",
47
+ "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"
47
48
  },
48
49
  "files": [
49
50
  "dist/**",
@@ -53,16 +54,20 @@
53
54
  "emitter"
54
55
  ],
55
56
  "peerDependencies": {
56
- "@azure-tools/typespec-autorest": ">=0.53.0 <1.0.0",
57
- "@azure-tools/typespec-azure-core": ">=0.53.0 <1.0.0",
58
- "@azure-tools/typespec-azure-resource-manager": ">=0.53.0 <1.0.0",
59
- "@azure-tools/typespec-azure-rulesets": ">=0.53.0 <3.0.0",
60
- "@azure-tools/typespec-client-generator-core": ">=0.53.1 <1.0.0",
61
- "@typespec/compiler": ">=0.67.0 <1.0.0",
62
- "@typespec/http": ">=0.67.0 <1.0.0",
63
- "@typespec/openapi": ">=0.67.0 <1.0.0",
64
- "@typespec/rest": ">=0.67.0 <1.0.0",
65
- "@typespec/versioning": ">=0.67.0 <1.0.0"
57
+ "@azure-tools/typespec-autorest": ">=0.54.0 <1.0.0",
58
+ "@azure-tools/typespec-azure-core": ">=0.54.0 <1.0.0",
59
+ "@azure-tools/typespec-azure-resource-manager": ">=0.54.0 <1.0.0",
60
+ "@azure-tools/typespec-azure-rulesets": ">=0.54.0 <1.0.0",
61
+ "@azure-tools/typespec-client-generator-core": ">=0.54.0 <1.0.0",
62
+ "@typespec/compiler": "^1.0.0-0",
63
+ "@typespec/http": "^1.0.0-0",
64
+ "@typespec/openapi": "^1.0.0-0",
65
+ "@typespec/rest": ">=0.68.0 <1.0.0",
66
+ "@typespec/versioning": ">=0.68.0 <1.0.0",
67
+ "@typespec/events": ">=0.68.0 <1.0.0",
68
+ "@typespec/sse": ">=0.68.0 <1.0.0",
69
+ "@typespec/streams": ">=0.68.0 <1.0.0",
70
+ "@typespec/xml": ">=0.68.0 <1.0.0"
66
71
  },
67
72
  "dependencies": {
68
73
  "js-yaml": "~4.1.0",
@@ -72,25 +77,29 @@
72
77
  "tsx": "~4.19.1"
73
78
  },
74
79
  "devDependencies": {
75
- "@azure-tools/azure-http-specs": "0.1.0-alpha.10",
76
- "@azure-tools/typespec-autorest": "~0.53.0",
77
- "@azure-tools/typespec-azure-core": "~0.53.0",
78
- "@azure-tools/typespec-azure-resource-manager": "~0.53.0",
79
- "@azure-tools/typespec-azure-rulesets": "~0.53.0",
80
- "@azure-tools/typespec-client-generator-core": "~0.53.1",
80
+ "@azure-tools/typespec-autorest": "~0.54.0",
81
+ "@azure-tools/typespec-azure-core": "~0.54.0",
82
+ "@azure-tools/typespec-azure-resource-manager": "~0.54.0",
83
+ "@azure-tools/typespec-azure-rulesets": "~0.54.0",
84
+ "@azure-tools/typespec-client-generator-core": "~0.54.0",
85
+ "@azure-tools/azure-http-specs": "0.1.0-alpha.13",
86
+ "@typespec/compiler": "^1.0.0-0",
87
+ "@typespec/http": "^1.0.0-0",
88
+ "@typespec/openapi": "^1.0.0-0",
89
+ "@typespec/rest": "~0.68.0",
90
+ "@typespec/versioning": "~0.68.0",
91
+ "@typespec/events": "~0.68.0",
92
+ "@typespec/sse": "~0.68.0",
93
+ "@typespec/streams": "~0.68.0",
94
+ "@typespec/xml": "~0.68.0",
95
+ "@typespec/http-specs": "0.1.0-alpha.17",
81
96
  "@types/js-yaml": "~4.0.5",
82
- "@types/node": "~22.5.4",
97
+ "@types/node": "~22.13.14",
83
98
  "@types/semver": "7.5.8",
84
- "@typespec/compiler": "~0.67.0",
85
- "@typespec/http": "~0.67.0",
86
- "@typespec/http-specs": "0.1.0-alpha.15-dev.3",
87
- "@typespec/openapi": "~0.67.0",
88
- "@typespec/rest": "~0.67.0",
89
- "@typespec/versioning": "~0.67.0",
90
99
  "c8": "^10.1.3",
91
100
  "chalk": "5.3.0",
92
101
  "rimraf": "~6.0.1",
93
- "typescript": "~5.7.3",
102
+ "typescript": "~5.8.2",
94
103
  "typescript-eslint": "^8.21.0",
95
104
  "vitest": "^3.0.5"
96
105
  }