Skip to content

Commit 7f6a3d3

Browse files
committed
UUID in Python
1 parent 22f0f61 commit 7f6a3d3

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed

src/quicktype-core/language/Python.ts

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ export class PythonTargetLanguage extends TargetLanguage {
129129
mapping.set("date", dateTimeType);
130130
mapping.set("time", dateTimeType);
131131
mapping.set("date-time", dateTimeType);
132+
mapping.set("uuid", "uuid");
132133
mapping.set("integer-string", "integer-string");
133134
mapping.set("bool-string", "bool-string");
134135
return mapping;
@@ -345,6 +346,9 @@ export class PythonRenderer extends ConvenienceRenderer {
345346
if (transformedStringType.kind === "date-time") {
346347
return this.withImport("datetime", "datetime");
347348
}
349+
if (transformedStringType.kind === "uuid") {
350+
return this.withImport("uuid", "UUID");
351+
}
348352
return panic(`Transformed type ${transformedStringType.kind} not supported`);
349353
}
350354
);
@@ -868,6 +872,9 @@ export class JSONPythonRenderer extends PythonRenderer {
868872
if (transformedStringType.kind === "date-time") {
869873
return this.withImport("datetime", "datetime");
870874
}
875+
if (transformedStringType.kind === "uuid") {
876+
return this.withImport("uuid", "UUID");
877+
}
871878
return undefined;
872879
}
873880
);
@@ -930,6 +937,12 @@ export class JSONPythonRenderer extends PythonRenderer {
930937
case "date-time":
931938
vol = this.convFn("from-datetime", inputTransformer);
932939
break;
940+
case "uuid":
941+
vol = compose(
942+
inputTransformer,
943+
v => [this.withImport("uuid", "UUID"), "(", v, ")"]
944+
);
945+
break;
933946
default:
934947
return panic(`Parsing of ${immediateTargetType.kind} in a transformer is not supported`);
935948
}
@@ -959,6 +972,12 @@ export class JSONPythonRenderer extends PythonRenderer {
959972
v => [v, ".isoformat()"]
960973
);
961974
break;
975+
case "uuid":
976+
vol = compose(
977+
inputTransformer,
978+
v => ["str(", v, ")"]
979+
);
980+
break;
962981
default:
963982
return panic(`Parsing of ${xfer.sourceType.kind} in a transformer is not supported`);
964983
}
@@ -1030,6 +1049,12 @@ export class JSONPythonRenderer extends PythonRenderer {
10301049
if (transformedStringType.kind === "date-time") {
10311050
return this.convFn("from-datetime", value);
10321051
}
1052+
if (transformedStringType.kind === "uuid") {
1053+
return compose(
1054+
value,
1055+
v => [this.withImport("uuid", "UUID"), "(", v, ")"]
1056+
);
1057+
}
10331058
return panic(`Transformed type ${transformedStringType.kind} not supported`);
10341059
}
10351060
);
@@ -1099,6 +1124,12 @@ export class JSONPythonRenderer extends PythonRenderer {
10991124
v => [v, ".isoformat()"]
11001125
);
11011126
}
1127+
if (transformedStringType.kind === "uuid") {
1128+
return compose(
1129+
value,
1130+
v => ["str(", v, ")"]
1131+
);
1132+
}
11021133
return panic(`Transformed type ${transformedStringType.kind} not supported`);
11031134
}
11041135
);

0 commit comments

Comments
 (0)