@typespec/http-client-python 0.9.1 → 0.9.2-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 (48) hide show
  1. package/dist/emitter/run-python3.js +1 -1
  2. package/emitter/src/run-python3.ts +1 -1
  3. package/emitter/temp/tsconfig.tsbuildinfo +1 -1
  4. package/eng/scripts/Build-Packages.ps1 +7 -5
  5. package/eng/scripts/ci/format.ts +1 -1
  6. package/eng/scripts/ci/mypy.ini +1 -1
  7. package/eng/scripts/ci/pylintrc +1 -1
  8. package/eng/scripts/ci/pyrightconfig.json +1 -1
  9. package/eng/scripts/ci/run-ci.ts +1 -0
  10. package/eng/scripts/ci/run_pylint.py +1 -1
  11. package/eng/scripts/ci/utils.ts +5 -3
  12. package/eng/scripts/setup/__pycache__/{venvtools.cpython-38.pyc → venvtools.cpython-39.pyc} +0 -0
  13. package/eng/scripts/setup/build_pygen_wheel.py +3 -3
  14. package/eng/scripts/setup/install.py +2 -2
  15. package/eng/scripts/setup/prepare.py +2 -2
  16. package/generator/build/lib/pygen/codegen/__init__.py +0 -1
  17. package/generator/build/lib/pygen/codegen/_utils.py +1 -1
  18. package/generator/build/lib/pygen/codegen/models/imports.py +2 -13
  19. package/generator/build/lib/pygen/codegen/serializers/builder_serializer.py +1 -3
  20. package/generator/build/lib/pygen/codegen/templates/model_base.py.jinja2 +9 -13
  21. package/generator/build/lib/pygen/codegen/templates/packaging_templates/README.md.jinja2 +2 -2
  22. package/generator/build/lib/pygen/codegen/templates/packaging_templates/setup.py.jinja2 +1 -2
  23. package/generator/component-detection-pip-report.json +70 -71
  24. package/generator/dist/pygen-0.1.0-py3-none-any.whl +0 -0
  25. package/generator/pygen/codegen/__init__.py +0 -1
  26. package/generator/pygen/codegen/_utils.py +1 -1
  27. package/generator/pygen/codegen/models/imports.py +2 -13
  28. package/generator/pygen/codegen/serializers/builder_serializer.py +1 -3
  29. package/generator/pygen/codegen/templates/model_base.py.jinja2 +9 -13
  30. package/generator/pygen/codegen/templates/packaging_templates/README.md.jinja2 +2 -2
  31. package/generator/pygen/codegen/templates/packaging_templates/setup.py.jinja2 +1 -2
  32. package/generator/pygen.egg-info/PKG-INFO +11 -2
  33. package/generator/setup.py +0 -1
  34. package/generator/test/generic_mock_api_tests/asynctests/test_encode_bytes_async.py +0 -7
  35. package/generator/test/generic_mock_api_tests/conftest.py +3 -3
  36. package/generator/test/generic_mock_api_tests/test_encode_bytes.py +0 -7
  37. package/generator/test/unittests/conftest.py +14 -0
  38. package/generator/test/unittests/requirements.txt +3 -0
  39. package/generator/test/unittests/test_enums.py +52 -0
  40. package/generator/test/unittests/test_name_converter.py +43 -0
  41. package/generator/test/unittests/test_optional_return_type.py +268 -0
  42. package/generator/test/unittests/test_parameter_ordering.py +104 -0
  43. package/generator/test/unittests/tox.ini +5 -0
  44. package/package.json +1 -1
  45. /package/generator/test/{generic_mock_api_tests/data → data}/image.jpg +0 -0
  46. /package/generator/test/{generic_mock_api_tests/data → data}/image.png +0 -0
  47. /package/generator/test/{generic_mock_api_tests/unittests → unittests}/test_model_base_serialization.py +0 -0
  48. /package/generator/test/{generic_mock_api_tests/unittests → unittests}/test_model_base_xml_serialization.py +0 -0
@@ -0,0 +1,104 @@
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 pygen.codegen.models import Parameter, AnyType, CodeModel, StringType
7
+ from pygen.codegen.models.parameter_list import ParameterList
8
+
9
+
10
+ def get_code_model():
11
+ return CodeModel(
12
+ {
13
+ "clients": [
14
+ {
15
+ "name": "client",
16
+ "namespace": "blah",
17
+ "moduleName": "blah",
18
+ "parameters": [],
19
+ "url": "",
20
+ "operationGroups": [],
21
+ }
22
+ ],
23
+ "namespace": "namespace",
24
+ },
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,
31
+ },
32
+ )
33
+
34
+
35
+ def get_parameter(name, required, default_value=None, type=None):
36
+ if not type:
37
+ type = AnyType(
38
+ yaml_data={"type": "any"},
39
+ code_model=get_code_model(),
40
+ )
41
+
42
+ return Parameter(
43
+ yaml_data={
44
+ "wireName": name,
45
+ "clientName": name,
46
+ "location": "path",
47
+ "clientDefaultValue": default_value,
48
+ "optional": not required,
49
+ "implementation": "Method",
50
+ "inOverload": False,
51
+ "inOverloaded": False,
52
+ },
53
+ code_model=get_code_model(),
54
+ type=type,
55
+ )
56
+
57
+
58
+ def test_sort_parameters_with_default_value_from_schema():
59
+ type = StringType(
60
+ yaml_data={"clientDefaultValue": "this_is_the_default", "type": "str"},
61
+ code_model=get_code_model(),
62
+ )
63
+ parameter_with_default_schema_value_required = get_parameter(
64
+ name="required_param_with_schema_default", required=True, type=type
65
+ )
66
+ required_parameter = get_parameter(name="required_parameter", required=True)
67
+
68
+ parameter_list = [parameter_with_default_schema_value_required, required_parameter]
69
+
70
+ assert [
71
+ required_parameter,
72
+ parameter_with_default_schema_value_required,
73
+ ] == ParameterList({}, get_code_model(), parameter_list).method
74
+
75
+
76
+ def test_sort_required_parameters():
77
+ required_default_value_parameter = get_parameter(
78
+ name="required_default_value_parameter", required=True, default_value="hello"
79
+ )
80
+ required_parameter = get_parameter(name="required_parameter", required=True)
81
+
82
+ parameter_list = [required_parameter, required_default_value_parameter]
83
+
84
+ assert [required_parameter, required_default_value_parameter] == ParameterList(
85
+ {}, get_code_model(), parameter_list
86
+ ).method
87
+
88
+ # switch around ordering to confirm
89
+
90
+ parameter_list = [required_default_value_parameter, required_parameter]
91
+
92
+ assert [required_parameter, required_default_value_parameter] == ParameterList(
93
+ {}, get_code_model(), parameter_list
94
+ ).method
95
+
96
+
97
+ def test_sort_required_and_non_required_parameters():
98
+ required_parameter = get_parameter(name="required_parameter", required=True)
99
+
100
+ optional_parameter = get_parameter(name="optional_parameter", required=False)
101
+
102
+ parameter_list = [optional_parameter, required_parameter]
103
+
104
+ assert [required_parameter, optional_parameter] == ParameterList({}, get_code_model(), parameter_list).method
@@ -0,0 +1,5 @@
1
+ [testenv:ci]
2
+ deps=
3
+ -r requirements.txt
4
+ commands =
5
+ pytest
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@typespec/http-client-python",
3
- "version": "0.9.1",
3
+ "version": "0.9.2-dev.1",
4
4
  "author": "Microsoft Corporation",
5
5
  "description": "TypeSpec emitter for Python SDKs",
6
6
  "homepage": "https://typespec.io",