@azure-tools/typespec-python 0.26.0 → 0.27.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.
- package/dist/src/utils.js +1 -1
- package/dist/src/utils.js.map +1 -1
- package/generator/pygen/__init__.py +1 -1
- package/generator/pygen/black.py +7 -8
- package/generator/pygen/codegen/models/model_type.py +5 -1
- package/generator/pygen/codegen/serializers/builder_serializer.py +39 -3
- package/generator/pygen/codegen/templates/model_base.py.jinja2 +1 -0
- package/package.json +1 -1
- package/scripts/__pycache__/venvtools.cpython-310.pyc +0 -0
- package/scripts/__pycache__/venvtools.cpython-38.pyc +0 -0
package/dist/src/utils.js
CHANGED
|
@@ -20,7 +20,7 @@ export function getImplementation(context, parameter) {
|
|
|
20
20
|
}
|
|
21
21
|
export function isAbstract(method) {
|
|
22
22
|
var _a, _b;
|
|
23
|
-
return ((_b = (_a = method.operation.bodyParam) === null || _a === void 0 ? void 0 : _a.contentTypes.length) !== null && _b !== void 0 ? _b : 0) > 1;
|
|
23
|
+
return ((_b = (_a = method.operation.bodyParam) === null || _a === void 0 ? void 0 : _a.contentTypes.length) !== null && _b !== void 0 ? _b : 0) > 1 && method.access !== "internal";
|
|
24
24
|
}
|
|
25
25
|
export function getDelimeterAndExplode(parameter) {
|
|
26
26
|
if (parameter.type.kind !== "array")
|
package/dist/src/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAG1D,MAAM,UAAU,gBAAgB,CAAC,IAAY;IACzC,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,MAAM,kBAAkB,GAAG,CAAC,GAAW,EAAE,EAAE,CACvC,GAAG;SACE,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC;SAC7B,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC;SACzD,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAE7B,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,IAAa;IACxD,sCAAsC;IACtC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC7B,OAA4C,EAC5C,SAA0C;IAE1C,IAAI,SAAS,CAAC,QAAQ;QAAE,OAAO,QAAQ,CAAC;IACxC,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,UAAU,CACtB,MAA2C;;IAE3C,OAAO,CAAC,MAAA,MAAA,MAAM,CAAC,SAAS,CAAC,SAAS,0CAAE,YAAY,CAAC,MAAM,mCAAI,CAAC,CAAC,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -54,7 +54,7 @@ class ReaderAndWriter:
|
|
|
54
54
|
fd.write(file_content)
|
|
55
55
|
|
|
56
56
|
def list_file(self) -> List[str]:
|
|
57
|
-
return [str(f) for f in self.output_folder.glob("**/*") if f.is_file()]
|
|
57
|
+
return [str(f.relative_to(self.output_folder)) for f in self.output_folder.glob("**/*") if f.is_file()]
|
|
58
58
|
|
|
59
59
|
|
|
60
60
|
class Plugin(ReaderAndWriter, ABC):
|
package/generator/pygen/black.py
CHANGED
|
@@ -37,15 +37,14 @@ class BlackScriptPlugin(Plugin): # pylint: disable=abstract-method
|
|
|
37
37
|
[
|
|
38
38
|
Path(f)
|
|
39
39
|
for f in self.list_file()
|
|
40
|
-
if
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
".mypy_cache",
|
|
47
|
-
)
|
|
40
|
+
if Path(f).parts[0]
|
|
41
|
+
not in (
|
|
42
|
+
"__pycache__",
|
|
43
|
+
"node_modules",
|
|
44
|
+
"venv",
|
|
45
|
+
"env",
|
|
48
46
|
)
|
|
47
|
+
and not Path(f).parts[0].startswith(".")
|
|
49
48
|
and Path(f).suffix == ".py"
|
|
50
49
|
],
|
|
51
50
|
)
|
|
@@ -32,6 +32,10 @@ class UsageFlags(Enum):
|
|
|
32
32
|
ApiVersionEnum = 8
|
|
33
33
|
JsonMergePatch = 16
|
|
34
34
|
MultipartFormData = 32
|
|
35
|
+
Spread = 64
|
|
36
|
+
Error = 128
|
|
37
|
+
Json = 256
|
|
38
|
+
Xml = 512
|
|
35
39
|
|
|
36
40
|
|
|
37
41
|
def _get_properties(type: "ModelType", properties: List[Property]) -> List[Property]:
|
|
@@ -86,7 +90,7 @@ class ModelType( # pylint: disable=abstract-method
|
|
|
86
90
|
|
|
87
91
|
@property
|
|
88
92
|
def is_usage_output(self) -> bool:
|
|
89
|
-
return self.usage
|
|
93
|
+
return self.usage & UsageFlags.Output.value
|
|
90
94
|
|
|
91
95
|
@property
|
|
92
96
|
def flattened_property(self) -> Optional[Property]:
|
|
@@ -58,6 +58,10 @@ OperationType = TypeVar(
|
|
|
58
58
|
)
|
|
59
59
|
|
|
60
60
|
|
|
61
|
+
def _all_same(data: List[List[str]]) -> bool:
|
|
62
|
+
return len(data) > 1 and all(sorted(data[0]) == sorted(data[i]) for i in range(1, len(data)))
|
|
63
|
+
|
|
64
|
+
|
|
61
65
|
def _json_serializable(content_type: str) -> bool:
|
|
62
66
|
return bool(JSON_REGEXP.match(content_type.split(";")[0].strip().lower()))
|
|
63
67
|
|
|
@@ -905,6 +909,9 @@ class _OperationSerializer(_BuilderBaseSerializer[OperationType]): # pylint: di
|
|
|
905
909
|
builder: OperationType,
|
|
906
910
|
response: Response,
|
|
907
911
|
) -> List[str]:
|
|
912
|
+
return self.response_headers(response) + self.response_deserialization(builder, response)
|
|
913
|
+
|
|
914
|
+
def response_headers(self, response: Response) -> List[str]:
|
|
908
915
|
retval: List[str] = [
|
|
909
916
|
(
|
|
910
917
|
f"response_headers['{response_header.wire_name}']=self._deserialize("
|
|
@@ -914,6 +921,14 @@ class _OperationSerializer(_BuilderBaseSerializer[OperationType]): # pylint: di
|
|
|
914
921
|
]
|
|
915
922
|
if response.headers:
|
|
916
923
|
retval.append("")
|
|
924
|
+
return retval
|
|
925
|
+
|
|
926
|
+
def response_deserialization(
|
|
927
|
+
self,
|
|
928
|
+
builder: OperationType,
|
|
929
|
+
response: Response,
|
|
930
|
+
) -> List[str]:
|
|
931
|
+
retval: List[str] = []
|
|
917
932
|
deserialize_code: List[str] = []
|
|
918
933
|
stream_logic = True
|
|
919
934
|
if builder.has_stream_response:
|
|
@@ -1018,13 +1033,34 @@ class _OperationSerializer(_BuilderBaseSerializer[OperationType]): # pylint: di
|
|
|
1018
1033
|
retval.append("response_headers = {}")
|
|
1019
1034
|
if builder.has_response_body or builder.any_response_has_headers:
|
|
1020
1035
|
if len(builder.responses) > 1:
|
|
1036
|
+
status_codes, res_headers, res_deserialization = [], [], []
|
|
1021
1037
|
for status_code in builder.success_status_codes:
|
|
1022
1038
|
response = builder.get_response_from_status(status_code)
|
|
1023
1039
|
if response.headers or response.type:
|
|
1040
|
+
status_codes.append(status_code)
|
|
1041
|
+
res_headers.append(self.response_headers(response))
|
|
1042
|
+
res_deserialization.append(self.response_deserialization(builder, response))
|
|
1043
|
+
|
|
1044
|
+
is_headers_same = _all_same(res_headers)
|
|
1045
|
+
is_deserialization_same = _all_same(res_deserialization)
|
|
1046
|
+
if is_deserialization_same:
|
|
1047
|
+
if is_headers_same:
|
|
1048
|
+
retval.extend(res_headers[0])
|
|
1049
|
+
retval.extend(res_deserialization[0])
|
|
1050
|
+
retval.append("")
|
|
1051
|
+
else:
|
|
1052
|
+
for status_code, headers in zip(status_codes, res_headers):
|
|
1053
|
+
if headers:
|
|
1054
|
+
retval.append(f"if response.status_code == {status_code}:")
|
|
1055
|
+
retval.extend([f" {line}" for line in headers])
|
|
1056
|
+
retval.append("")
|
|
1057
|
+
retval.extend(res_deserialization[0])
|
|
1058
|
+
retval.append("")
|
|
1059
|
+
else:
|
|
1060
|
+
for status_code, headers, deserialization in zip(status_codes, res_headers, res_deserialization):
|
|
1024
1061
|
retval.append(f"if response.status_code == {status_code}:")
|
|
1025
|
-
retval.extend(
|
|
1026
|
-
|
|
1027
|
-
)
|
|
1062
|
+
retval.extend([f" {line}" for line in headers])
|
|
1063
|
+
retval.extend([f" {line}" for line in deserialization])
|
|
1028
1064
|
retval.append("")
|
|
1029
1065
|
else:
|
|
1030
1066
|
retval.extend(self.response_headers_and_deserialization(builder, builder.responses[0]))
|
package/package.json
CHANGED
|
Binary file
|
|
Binary file
|