@typespec/http-client-python 0.9.1 → 0.9.2
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.
- package/dist/emitter/emitter.d.ts.map +1 -1
- package/dist/emitter/emitter.js +1 -2
- package/dist/emitter/emitter.js.map +1 -1
- package/dist/emitter/run-python3.js +1 -1
- package/dist/emitter/utils.d.ts +0 -1
- package/dist/emitter/utils.d.ts.map +1 -1
- package/dist/emitter/utils.js +2 -6
- package/dist/emitter/utils.js.map +1 -1
- package/emitter/src/emitter.ts +1 -4
- package/emitter/src/run-python3.ts +1 -1
- package/emitter/src/utils.ts +2 -7
- package/emitter/temp/tsconfig.tsbuildinfo +1 -1
- package/eng/scripts/Build-Packages.ps1 +7 -5
- package/eng/scripts/ci/format.ts +1 -1
- package/eng/scripts/ci/mypy.ini +1 -1
- package/eng/scripts/ci/pylintrc +1 -1
- package/eng/scripts/ci/pyrightconfig.json +1 -1
- package/eng/scripts/ci/regenerate.ts +39 -3
- package/eng/scripts/ci/run-ci.ts +1 -0
- package/eng/scripts/ci/run_pylint.py +1 -1
- package/eng/scripts/ci/utils.ts +5 -3
- package/eng/scripts/setup/__pycache__/{venvtools.cpython-38.pyc → venvtools.cpython-39.pyc} +0 -0
- package/eng/scripts/setup/build_pygen_wheel.py +3 -3
- package/eng/scripts/setup/install.py +2 -2
- package/eng/scripts/setup/prepare.py +2 -2
- package/generator/build/lib/pygen/codegen/__init__.py +0 -1
- package/generator/build/lib/pygen/codegen/_utils.py +1 -1
- package/generator/build/lib/pygen/codegen/models/imports.py +2 -13
- package/generator/build/lib/pygen/codegen/serializers/builder_serializer.py +1 -3
- package/generator/build/lib/pygen/codegen/templates/model_base.py.jinja2 +9 -13
- package/generator/build/lib/pygen/codegen/templates/packaging_templates/README.md.jinja2 +2 -2
- package/generator/build/lib/pygen/codegen/templates/packaging_templates/setup.py.jinja2 +1 -2
- package/generator/component-detection-pip-report.json +70 -71
- package/generator/dist/pygen-0.1.0-py3-none-any.whl +0 -0
- package/generator/pygen/codegen/__init__.py +0 -1
- package/generator/pygen/codegen/_utils.py +1 -1
- package/generator/pygen/codegen/models/imports.py +2 -13
- package/generator/pygen/codegen/serializers/builder_serializer.py +1 -3
- package/generator/pygen/codegen/templates/model_base.py.jinja2 +9 -13
- package/generator/pygen/codegen/templates/packaging_templates/README.md.jinja2 +2 -2
- package/generator/pygen/codegen/templates/packaging_templates/setup.py.jinja2 +1 -2
- package/generator/pygen.egg-info/PKG-INFO +11 -2
- package/generator/setup.py +0 -1
- package/generator/test/generic_mock_api_tests/asynctests/test_encode_bytes_async.py +0 -7
- package/generator/test/generic_mock_api_tests/conftest.py +3 -3
- package/generator/test/generic_mock_api_tests/test_encode_bytes.py +0 -7
- package/generator/test/unittests/conftest.py +14 -0
- package/generator/test/unittests/requirements.txt +3 -0
- package/generator/test/unittests/test_enums.py +52 -0
- package/generator/test/unittests/test_name_converter.py +43 -0
- package/generator/test/unittests/test_optional_return_type.py +268 -0
- package/generator/test/unittests/test_parameter_ordering.py +104 -0
- package/generator/test/unittests/test_sort_schema.py +93 -0
- package/generator/test/unittests/tox.ini +5 -0
- package/package.json +1 -1
- /package/generator/test/{generic_mock_api_tests/data → data}/image.jpg +0 -0
- /package/generator/test/{generic_mock_api_tests/data → data}/image.png +0 -0
- /package/generator/test/{generic_mock_api_tests/unittests → unittests}/test_model_base_serialization.py +0 -0
- /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,93 @@
|
|
|
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
|
+
|
|
7
|
+
from pygen.codegen.models import CodeModel, DPGModelType
|
|
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
|
+
},
|
|
31
|
+
)
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def get_object_schema(name, base_models):
|
|
35
|
+
return DPGModelType(
|
|
36
|
+
yaml_data={"name": name, "type": "model", "snakeCaseName": name},
|
|
37
|
+
code_model=get_code_model(),
|
|
38
|
+
parents=base_models,
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def test_pet_cat_kitten_horse_wood():
|
|
43
|
+
"""Horse -> Pet <- Cat <- Kitten, Wood"""
|
|
44
|
+
code_model = get_code_model()
|
|
45
|
+
pet = get_object_schema("Pet", None)
|
|
46
|
+
horse = get_object_schema("Horse", [pet])
|
|
47
|
+
cat = get_object_schema("Cat", [pet])
|
|
48
|
+
kitten = get_object_schema("Kitten", [cat])
|
|
49
|
+
wood = get_object_schema("Wood", None)
|
|
50
|
+
code_model.model_types = [wood, horse, cat, pet, kitten]
|
|
51
|
+
code_model.sort_model_types()
|
|
52
|
+
sorted_model_types = code_model.model_types
|
|
53
|
+
# assert pet is before cat
|
|
54
|
+
assert sorted_model_types.index(pet) < sorted_model_types.index(cat)
|
|
55
|
+
# assert pet is before horse
|
|
56
|
+
assert sorted_model_types.index(pet) < sorted_model_types.index(horse)
|
|
57
|
+
# assert cat is before kitten
|
|
58
|
+
assert sorted_model_types.index(cat) < sorted_model_types.index(kitten)
|
|
59
|
+
# assert wood in list
|
|
60
|
+
assert wood in sorted_model_types
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
def test_multiple_inheritance():
|
|
64
|
+
"""CarbonObject <- Person <- Teacher -> Employee, Person <- Kid
|
|
65
|
+
|
|
|
66
|
+
ObjectOnEarth
|
|
67
|
+
"""
|
|
68
|
+
code_model = get_code_model()
|
|
69
|
+
carbon_object = get_object_schema("CarbonObject", [])
|
|
70
|
+
object_on_earth = get_object_schema("ObjectOnEarth", [])
|
|
71
|
+
person = get_object_schema("Person", [carbon_object, object_on_earth])
|
|
72
|
+
employee = get_object_schema("Employee", [])
|
|
73
|
+
teacher = get_object_schema("Teacher", [person, employee])
|
|
74
|
+
kid = get_object_schema("Kid", [person])
|
|
75
|
+
|
|
76
|
+
code_model.model_types = [
|
|
77
|
+
kid,
|
|
78
|
+
person,
|
|
79
|
+
teacher,
|
|
80
|
+
carbon_object,
|
|
81
|
+
employee,
|
|
82
|
+
object_on_earth,
|
|
83
|
+
]
|
|
84
|
+
code_model.sort_model_types()
|
|
85
|
+
sorted_model_types = code_model.model_types
|
|
86
|
+
# assert carbon object and object on earth is in front of person
|
|
87
|
+
assert sorted_model_types.index(carbon_object) < sorted_model_types.index(person)
|
|
88
|
+
assert sorted_model_types.index(object_on_earth) < sorted_model_types.index(person)
|
|
89
|
+
# assert person and employee are in front of teacher
|
|
90
|
+
assert sorted_model_types.index(person) < sorted_model_types.index(teacher)
|
|
91
|
+
assert sorted_model_types.index(employee) < sorted_model_types.index(teacher)
|
|
92
|
+
# assert person is before kid
|
|
93
|
+
assert sorted_model_types.index(person) < sorted_model_types.index(kid)
|
package/package.json
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|