@typespec/http-client-python 0.13.0-dev.2 → 0.13.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 (110) hide show
  1. package/eng/scripts/setup/__pycache__/package_manager.cpython-39.pyc +0 -0
  2. package/eng/scripts/setup/__pycache__/venvtools.cpython-39.pyc +0 -0
  3. package/eng/scripts/setup/build_pygen_wheel.py +1 -0
  4. package/eng/scripts/setup/install.py +4 -2
  5. package/eng/scripts/setup/package_manager.py +24 -22
  6. package/eng/scripts/setup/prepare.py +1 -1
  7. package/eng/scripts/setup/venvtools.py +1 -3
  8. package/generator/build/lib/pygen/__init__.py +176 -2
  9. package/generator/build/lib/pygen/black.py +1 -1
  10. package/generator/build/lib/pygen/codegen/__init__.py +4 -256
  11. package/generator/build/lib/pygen/codegen/_utils.py +0 -3
  12. package/generator/build/lib/pygen/codegen/models/__init__.py +1 -1
  13. package/generator/build/lib/pygen/codegen/models/base_builder.py +1 -1
  14. package/generator/build/lib/pygen/codegen/models/client.py +15 -13
  15. package/generator/build/lib/pygen/codegen/models/code_model.py +10 -9
  16. package/generator/build/lib/pygen/codegen/models/enum_type.py +4 -4
  17. package/generator/build/lib/pygen/codegen/models/imports.py +1 -1
  18. package/generator/build/lib/pygen/codegen/models/list_type.py +6 -6
  19. package/generator/build/lib/pygen/codegen/models/lro_operation.py +1 -1
  20. package/generator/build/lib/pygen/codegen/models/operation.py +16 -16
  21. package/generator/build/lib/pygen/codegen/models/operation_group.py +12 -6
  22. package/generator/build/lib/pygen/codegen/models/paging_operation.py +4 -4
  23. package/generator/build/lib/pygen/codegen/models/parameter.py +8 -8
  24. package/generator/build/lib/pygen/codegen/models/property.py +1 -1
  25. package/generator/build/lib/pygen/codegen/models/request_builder.py +2 -2
  26. package/generator/build/lib/pygen/codegen/models/request_builder_parameter.py +2 -2
  27. package/generator/build/lib/pygen/codegen/models/response.py +3 -3
  28. package/generator/build/lib/pygen/codegen/serializers/__init__.py +27 -28
  29. package/generator/build/lib/pygen/codegen/serializers/builder_serializer.py +31 -31
  30. package/generator/build/lib/pygen/codegen/serializers/client_serializer.py +6 -5
  31. package/generator/build/lib/pygen/codegen/serializers/general_serializer.py +4 -4
  32. package/generator/build/lib/pygen/codegen/serializers/metadata_serializer.py +1 -1
  33. package/generator/build/lib/pygen/codegen/serializers/model_serializer.py +1 -1
  34. package/generator/build/lib/pygen/codegen/serializers/operations_init_serializer.py +6 -2
  35. package/generator/build/lib/pygen/codegen/serializers/sample_serializer.py +1 -1
  36. package/generator/build/lib/pygen/codegen/serializers/test_serializer.py +5 -5
  37. package/generator/build/lib/pygen/codegen/templates/config.py.jinja2 +1 -1
  38. package/generator/build/lib/pygen/codegen/templates/config_container.py.jinja2 +1 -1
  39. package/generator/build/lib/pygen/codegen/templates/conftest.py.jinja2 +1 -1
  40. package/generator/build/lib/pygen/codegen/templates/init.py.jinja2 +1 -1
  41. package/generator/build/lib/pygen/codegen/templates/metadata.json.jinja2 +2 -2
  42. package/generator/build/lib/pygen/codegen/templates/model_dpg.py.jinja2 +2 -2
  43. package/generator/build/lib/pygen/codegen/templates/operation_group.py.jinja2 +1 -1
  44. package/generator/build/lib/pygen/codegen/templates/operation_groups_container.py.jinja2 +1 -1
  45. package/generator/build/lib/pygen/codegen/templates/operation_tools.jinja2 +1 -1
  46. package/generator/build/lib/pygen/codegen/templates/operations_folder_init.py.jinja2 +2 -0
  47. package/generator/build/lib/pygen/codegen/templates/packaging_templates/MANIFEST.in.jinja2 +1 -1
  48. package/generator/build/lib/pygen/codegen/templates/packaging_templates/README.md.jinja2 +38 -7
  49. package/generator/build/lib/pygen/codegen/templates/packaging_templates/dev_requirements.txt.jinja2 +1 -1
  50. package/generator/build/lib/pygen/codegen/templates/packaging_templates/setup.py.jinja2 +9 -9
  51. package/generator/build/lib/pygen/codegen/templates/request_builder.py.jinja2 +1 -1
  52. package/generator/build/lib/pygen/codegen/templates/sample.py.jinja2 +1 -1
  53. package/generator/build/lib/pygen/codegen/templates/test.py.jinja2 +6 -6
  54. package/generator/build/lib/pygen/codegen/templates/version.py.jinja2 +1 -1
  55. package/generator/build/lib/pygen/preprocess/__init__.py +1 -1
  56. package/generator/build/lib/pygen/utils.py +4 -0
  57. package/generator/dist/pygen-0.1.0-py3-none-any.whl +0 -0
  58. package/generator/pygen/__init__.py +176 -2
  59. package/generator/pygen/black.py +1 -1
  60. package/generator/pygen/codegen/__init__.py +4 -256
  61. package/generator/pygen/codegen/_utils.py +0 -3
  62. package/generator/pygen/codegen/models/__init__.py +1 -1
  63. package/generator/pygen/codegen/models/base_builder.py +1 -1
  64. package/generator/pygen/codegen/models/client.py +15 -13
  65. package/generator/pygen/codegen/models/code_model.py +10 -9
  66. package/generator/pygen/codegen/models/enum_type.py +4 -4
  67. package/generator/pygen/codegen/models/imports.py +1 -1
  68. package/generator/pygen/codegen/models/list_type.py +6 -6
  69. package/generator/pygen/codegen/models/lro_operation.py +1 -1
  70. package/generator/pygen/codegen/models/operation.py +16 -16
  71. package/generator/pygen/codegen/models/operation_group.py +12 -6
  72. package/generator/pygen/codegen/models/paging_operation.py +4 -4
  73. package/generator/pygen/codegen/models/parameter.py +8 -8
  74. package/generator/pygen/codegen/models/property.py +1 -1
  75. package/generator/pygen/codegen/models/request_builder.py +2 -2
  76. package/generator/pygen/codegen/models/request_builder_parameter.py +2 -2
  77. package/generator/pygen/codegen/models/response.py +3 -3
  78. package/generator/pygen/codegen/serializers/__init__.py +27 -28
  79. package/generator/pygen/codegen/serializers/builder_serializer.py +31 -31
  80. package/generator/pygen/codegen/serializers/client_serializer.py +6 -5
  81. package/generator/pygen/codegen/serializers/general_serializer.py +4 -4
  82. package/generator/pygen/codegen/serializers/metadata_serializer.py +1 -1
  83. package/generator/pygen/codegen/serializers/model_serializer.py +1 -1
  84. package/generator/pygen/codegen/serializers/operations_init_serializer.py +6 -2
  85. package/generator/pygen/codegen/serializers/sample_serializer.py +1 -1
  86. package/generator/pygen/codegen/serializers/test_serializer.py +5 -5
  87. package/generator/pygen/codegen/templates/config.py.jinja2 +1 -1
  88. package/generator/pygen/codegen/templates/config_container.py.jinja2 +1 -1
  89. package/generator/pygen/codegen/templates/conftest.py.jinja2 +1 -1
  90. package/generator/pygen/codegen/templates/init.py.jinja2 +1 -1
  91. package/generator/pygen/codegen/templates/metadata.json.jinja2 +2 -2
  92. package/generator/pygen/codegen/templates/model_dpg.py.jinja2 +2 -2
  93. package/generator/pygen/codegen/templates/operation_group.py.jinja2 +1 -1
  94. package/generator/pygen/codegen/templates/operation_groups_container.py.jinja2 +1 -1
  95. package/generator/pygen/codegen/templates/operation_tools.jinja2 +1 -1
  96. package/generator/pygen/codegen/templates/operations_folder_init.py.jinja2 +2 -0
  97. package/generator/pygen/codegen/templates/packaging_templates/MANIFEST.in.jinja2 +1 -1
  98. package/generator/pygen/codegen/templates/packaging_templates/README.md.jinja2 +38 -7
  99. package/generator/pygen/codegen/templates/packaging_templates/dev_requirements.txt.jinja2 +1 -1
  100. package/generator/pygen/codegen/templates/packaging_templates/setup.py.jinja2 +9 -9
  101. package/generator/pygen/codegen/templates/request_builder.py.jinja2 +1 -1
  102. package/generator/pygen/codegen/templates/sample.py.jinja2 +1 -1
  103. package/generator/pygen/codegen/templates/test.py.jinja2 +6 -6
  104. package/generator/pygen/codegen/templates/version.py.jinja2 +1 -1
  105. package/generator/pygen/preprocess/__init__.py +1 -1
  106. package/generator/pygen/utils.py +4 -0
  107. package/generator/test/unittests/test_optional_return_type.py +5 -5
  108. package/generator/test/unittests/test_parameter_ordering.py +5 -5
  109. package/generator/test/unittests/test_sort_schema.py +4 -4
  110. package/package.json +1 -1
@@ -5,18 +5,18 @@
5
5
  {{ code_model.license_header }}
6
6
  {% endif %}
7
7
 
8
- {% if package_mode %}
8
+ {% if options["package-mode"] %}
9
9
 
10
10
  import os
11
11
  import re
12
12
  {% endif %}
13
13
  from setuptools import setup, find_packages
14
14
 
15
- {% set package_name = package_name or code_model.clients[0].name %}
15
+ {% set package_name = options["package-name"] or code_model.clients[0].name %}
16
16
 
17
17
  PACKAGE_NAME = "{{ package_name|lower }}"
18
- {% if package_mode %}
19
- PACKAGE_PPRINT_NAME = "{{ package_pprint_name }}"
18
+ {% if options["package-mode"] %}
19
+ PACKAGE_PPRINT_NAME = "{{ options["package-pprint-name"] }}"
20
20
  {% if code_model.is_tsp %}
21
21
  PACKAGE_NAMESPACE = "{{ code_model.namespace|lower }}"
22
22
 
@@ -40,7 +40,7 @@ if not version:
40
40
  {% set author_email = "azpysdkhelp@microsoft.com" %}
41
41
  {% set url = "https://github.com/Azure/azure-sdk-for-python/tree/main/sdk" %}
42
42
  {% else %}
43
- version = "{{ package_version }}"
43
+ version = "{{ options.get("package-version", "unknown") }}"
44
44
  {% set description = "\"%s\""|format(package_name) %}
45
45
  {% set long_description = code_model.description %}
46
46
  {% set author_email = "" %}
@@ -52,7 +52,7 @@ setup(
52
52
  name=PACKAGE_NAME,
53
53
  version=version,
54
54
  description={{ description }},
55
- {% if package_mode %}
55
+ {% if options["package-mode"] %}
56
56
  long_description=open("README.md", "r").read(),
57
57
  long_description_content_type="text/markdown",
58
58
  license="MIT License",
@@ -63,7 +63,7 @@ setup(
63
63
  url="{{ url }}",
64
64
  keywords="azure, azure sdk",
65
65
  {% endif %}
66
- {% if package_mode %}
66
+ {% if options["package-mode"] %}
67
67
  classifiers=[
68
68
  "Development Status :: {{ dev_status }}",
69
69
  "Programming Language :: Python",
@@ -100,7 +100,7 @@ setup(
100
100
  {% else %}
101
101
  "isodate>={{ VERSION_MAP["isodate"] }}",
102
102
  {% endif %}
103
- {% if azure_arm %}
103
+ {% if code_model.options["azure-arm"] %}
104
104
  "azure-mgmt-core>={{ VERSION_MAP["azure-mgmt-core"] }}",
105
105
  {% elif code_model.is_azure_flavor %}
106
106
  "azure-core>={{ VERSION_MAP["azure-core"] }}",
@@ -109,7 +109,7 @@ setup(
109
109
  {% endif %}
110
110
  "typing-extensions>={{ VERSION_MAP['typing-extensions'] }}",
111
111
  ],
112
- {% if package_mode %}
112
+ {% if options["package-mode"] %}
113
113
  python_requires=">={{ MIN_PYTHON_VERSION }}",
114
114
  {% else %}
115
115
  long_description="""\
@@ -1,7 +1,7 @@
1
1
  {% import 'keywords.jinja2' as keywords with context %}
2
2
  {% import 'operation_tools.jinja2' as op_tools with context %}
3
3
  {{ request_builder_serializer.method_signature_and_response_type_annotation(request_builder) }}
4
- {% if code_model.options["builders_visibility"] == "public" %}
4
+ {% if code_model.options["builders-visibility"] == "public" %}
5
5
  {{ op_tools.description(request_builder, request_builder_serializer) | indent }}
6
6
  {% endif %}
7
7
  {% if not request_builder.is_overload %}
@@ -11,7 +11,7 @@
11
11
  {% if "credential" in client_params and aad_token in client_params["credential"] %}
12
12
  pip install azure-identity
13
13
  {% endif %}
14
- pip install {{ (code_model.options["package_name"] or code_model.clients[0].name)|lower }}
14
+ pip install {{ (code_model.options.get("package-name") or code_model.clients[0].name)|lower }}
15
15
  # USAGE
16
16
  python {{ file_name }}
17
17
  {% if "credential" in client_params and aad_token in client_params["credential"] %}
@@ -1,5 +1,5 @@
1
1
  {% set prefix_lower = test.prefix|lower %}
2
- {% set client_var = "self.client" if code_model.options["azure_arm"] else "client" %}
2
+ {% set client_var = "self.client" if code_model.options["azure-arm"] else "client" %}
3
3
  {% set async = "async " if test.async_mode else "" %}
4
4
  {% set async_suffix = "_async" if test.async_mode else "" %}
5
5
  # coding=utf-8
@@ -9,13 +9,13 @@
9
9
  import pytest
10
10
  {{ imports }}
11
11
 
12
- {% if code_model.options["azure_arm"] %}
12
+ {% if code_model.options["azure-arm"] %}
13
13
  AZURE_LOCATION = "eastus"
14
14
  {% endif %}
15
15
 
16
16
  @pytest.mark.skip("you may need to update the auto-generated test case before run it")
17
17
  class {{ test.test_class_name }}({{ test.base_test_class_name }}):
18
- {% if code_model.options["azure_arm"] %}
18
+ {% if code_model.options["azure-arm"] %}
19
19
  def setup_method(self, method):
20
20
  {% if test.async_mode %}
21
21
  self.client = self.create_mgmt_client({{ test.client_name }}, is_async=True)
@@ -24,13 +24,13 @@ class {{ test.test_class_name }}({{ test.base_test_class_name }}):
24
24
  {% endif %}
25
25
  {% endif %}
26
26
  {% for testcase in test.testcases %}
27
- {% if code_model.options["azure_arm"] %}
27
+ {% if code_model.options["azure-arm"] %}
28
28
  @{{ test.preparer_name }}(location=AZURE_LOCATION)
29
29
  {% else %}
30
30
  @{{ test.preparer_name }}()
31
31
  {% endif %}
32
32
  @recorded_by_proxy{{ async_suffix }}
33
- {% if code_model.options["azure_arm"] %}
33
+ {% if code_model.options["azure-arm"] %}
34
34
  {{ async }}def test_{{ testcase.name }}(self, resource_group):
35
35
  {% else %}
36
36
  {{ async }}def test_{{ testcase.name }}(self, {{ prefix_lower }}_endpoint):
@@ -38,7 +38,7 @@ class {{ test.test_class_name }}({{ test.base_test_class_name }}):
38
38
  {% endif %}
39
39
  {{testcase.response }}{{ client_var }}{{ testcase.operation_group_prefix }}.{{ testcase.operation.name }}(
40
40
  {% for key, value in testcase.params.items() %}
41
- {% if code_model.options["azure_arm"] and key == "resource_group_name" %}
41
+ {% if code_model.options["azure-arm"] and key == "resource_group_name" %}
42
42
  {{ key }}=resource_group.name,
43
43
  {% else %}
44
44
  {{ key }}={{ value|indent(12) }},
@@ -3,4 +3,4 @@
3
3
  {{ code_model.license_header }}
4
4
  {% endif %}
5
5
 
6
- VERSION = "{{ code_model.options['package_version'] }}"
6
+ VERSION = "{{ code_model.options.get("package-version") }}"
@@ -210,7 +210,7 @@ class PreProcessPlugin(YamlUpdatePlugin):
210
210
  if not (self.is_tsp and has_multi_part_content_type(body_parameter)):
211
211
  body_parameter["type"]["types"].append(KNOWN_TYPES["binary"])
212
212
 
213
- if origin_type == "model" and is_dpg_model and self.models_mode == "dpg":
213
+ if origin_type == "model" and is_dpg_model and self.options["models-mode"] == "dpg":
214
214
  body_parameter["type"]["types"].insert(1, KNOWN_TYPES["any-object"])
215
215
  code_model["types"].append(body_parameter["type"])
216
216
 
@@ -7,6 +7,10 @@ from typing import Any, Dict, Tuple, List
7
7
  import re
8
8
  import argparse
9
9
 
10
+ SWAGGER_PACKAGE_MODE = ["mgmtplane", "dataplane"] # for backward compatibility
11
+ TYPESPEC_PACKAGE_MODE = ["azure-mgmt", "azure-dataplane", "generic"]
12
+ VALID_PACKAGE_MODE = SWAGGER_PACKAGE_MODE + TYPESPEC_PACKAGE_MODE
13
+
10
14
 
11
15
  def update_enum_value(name: str, value: Any, description: str, enum_type: Dict[str, Any]) -> Dict[str, Any]:
12
16
  return {
@@ -36,11 +36,11 @@ def code_model():
36
36
  "namespace": "namespace",
37
37
  },
38
38
  options={
39
- "show_send_request": True,
40
- "builders_visibility": "public",
41
- "show_operations": True,
42
- "models_mode": "dpg",
43
- "version_tolerant": True,
39
+ "show-send-request": True,
40
+ "builders-visibility": "public",
41
+ "show-operations": True,
42
+ "models-mode": "dpg",
43
+ "version-tolerant": True,
44
44
  },
45
45
  )
46
46
 
@@ -23,11 +23,11 @@ def get_code_model():
23
23
  "namespace": "namespace",
24
24
  },
25
25
  options={
26
- "show_send_request": True,
27
- "builders_visibility": "public",
28
- "show_operations": True,
29
- "models_mode": "dpg",
30
- "only_path_and_body_params_positional": True,
26
+ "show-send-request": True,
27
+ "builders-visibility": "public",
28
+ "show-operations": True,
29
+ "models-mode": "dpg",
30
+ "only-path-and-body-params-positional": True,
31
31
  },
32
32
  )
33
33
 
@@ -23,10 +23,10 @@ def get_code_model():
23
23
  "namespace": "namespace",
24
24
  },
25
25
  options={
26
- "show_send_request": True,
27
- "builders_visibility": "public",
28
- "show_operations": True,
29
- "models_mode": "dpg",
26
+ "show-send-request": True,
27
+ "builders-visibility": "public",
28
+ "show-operations": True,
29
+ "models-mode": "dpg",
30
30
  },
31
31
  )
32
32
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@typespec/http-client-python",
3
- "version": "0.13.0-dev.2",
3
+ "version": "0.13.0",
4
4
  "author": "Microsoft Corporation",
5
5
  "description": "TypeSpec emitter for Python SDKs",
6
6
  "homepage": "https://typespec.io",