@@ -129,6 +129,7 @@ export class PythonTargetLanguage extends TargetLanguage {
129
129
mapping . set ( "date" , dateTimeType ) ;
130
130
mapping . set ( "time" , dateTimeType ) ;
131
131
mapping . set ( "date-time" , dateTimeType ) ;
132
+ mapping . set ( "uuid" , "uuid" ) ;
132
133
mapping . set ( "integer-string" , "integer-string" ) ;
133
134
mapping . set ( "bool-string" , "bool-string" ) ;
134
135
return mapping ;
@@ -345,6 +346,9 @@ export class PythonRenderer extends ConvenienceRenderer {
345
346
if ( transformedStringType . kind === "date-time" ) {
346
347
return this . withImport ( "datetime" , "datetime" ) ;
347
348
}
349
+ if ( transformedStringType . kind === "uuid" ) {
350
+ return this . withImport ( "uuid" , "UUID" ) ;
351
+ }
348
352
return panic ( `Transformed type ${ transformedStringType . kind } not supported` ) ;
349
353
}
350
354
) ;
@@ -868,6 +872,9 @@ export class JSONPythonRenderer extends PythonRenderer {
868
872
if ( transformedStringType . kind === "date-time" ) {
869
873
return this . withImport ( "datetime" , "datetime" ) ;
870
874
}
875
+ if ( transformedStringType . kind === "uuid" ) {
876
+ return this . withImport ( "uuid" , "UUID" ) ;
877
+ }
871
878
return undefined ;
872
879
}
873
880
) ;
@@ -930,6 +937,12 @@ export class JSONPythonRenderer extends PythonRenderer {
930
937
case "date-time" :
931
938
vol = this . convFn ( "from-datetime" , inputTransformer ) ;
932
939
break ;
940
+ case "uuid" :
941
+ vol = compose (
942
+ inputTransformer ,
943
+ v => [ this . withImport ( "uuid" , "UUID" ) , "(" , v , ")" ]
944
+ ) ;
945
+ break ;
933
946
default :
934
947
return panic ( `Parsing of ${ immediateTargetType . kind } in a transformer is not supported` ) ;
935
948
}
@@ -959,6 +972,12 @@ export class JSONPythonRenderer extends PythonRenderer {
959
972
v => [ v , ".isoformat()" ]
960
973
) ;
961
974
break ;
975
+ case "uuid" :
976
+ vol = compose (
977
+ inputTransformer ,
978
+ v => [ "str(" , v , ")" ]
979
+ ) ;
980
+ break ;
962
981
default :
963
982
return panic ( `Parsing of ${ xfer . sourceType . kind } in a transformer is not supported` ) ;
964
983
}
@@ -1030,6 +1049,12 @@ export class JSONPythonRenderer extends PythonRenderer {
1030
1049
if ( transformedStringType . kind === "date-time" ) {
1031
1050
return this . convFn ( "from-datetime" , value ) ;
1032
1051
}
1052
+ if ( transformedStringType . kind === "uuid" ) {
1053
+ return compose (
1054
+ value ,
1055
+ v => [ this . withImport ( "uuid" , "UUID" ) , "(" , v , ")" ]
1056
+ ) ;
1057
+ }
1033
1058
return panic ( `Transformed type ${ transformedStringType . kind } not supported` ) ;
1034
1059
}
1035
1060
) ;
@@ -1099,6 +1124,12 @@ export class JSONPythonRenderer extends PythonRenderer {
1099
1124
v => [ v , ".isoformat()" ]
1100
1125
) ;
1101
1126
}
1127
+ if ( transformedStringType . kind === "uuid" ) {
1128
+ return compose (
1129
+ value ,
1130
+ v => [ "str(" , v , ")" ]
1131
+ ) ;
1132
+ }
1102
1133
return panic ( `Transformed type ${ transformedStringType . kind } not supported` ) ;
1103
1134
}
1104
1135
) ;
0 commit comments