diff --git a/modules/openapi-generator-core/pom.xml b/modules/openapi-generator-core/pom.xml
index dc45dda9eea..986e9859b47 100644
--- a/modules/openapi-generator-core/pom.xml
+++ b/modules/openapi-generator-core/pom.xml
@@ -72,7 +72,7 @@
- 1.7.12
+ 1.7.29
26.0-jre
diff --git a/modules/openapi-generator/pom.xml b/modules/openapi-generator/pom.xml
index 0262582d884..ecb1f58bb66 100644
--- a/modules/openapi-generator/pom.xml
+++ b/modules/openapi-generator/pom.xml
@@ -258,6 +258,7 @@
1.3.0
26.0-jre
1.0.2
+ 1.1
2.10.1
2.10.0
1.3.60
@@ -373,6 +374,11 @@
generex
${generex-version}
+
+ com.github.curious-odd-man
+ rgxgen
+ ${rxgen-version}
+
com.fasterxml.jackson.datatype
jackson-datatype-jsr310
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java
index 92a3f76b760..2d7c4f2a2e2 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java
@@ -6191,7 +6191,7 @@ public class DefaultCodegen implements CodegenConfig {
return codegenServerVariables;
}
- private void setParameterNullable(CodegenParameter parameter, CodegenProperty property) {
+ protected void setParameterNullable(CodegenParameter parameter, CodegenProperty property) {
if (parameter == null || property == null) {
return;
}
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientExperimentalCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientExperimentalCodegen.java
index afe00619c0c..941c5d11d87 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientExperimentalCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientExperimentalCodegen.java
@@ -16,8 +16,8 @@
package org.openapitools.codegen.languages;
+import io.swagger.v3.core.util.Json;
import io.swagger.v3.oas.models.Operation;
-import io.swagger.v3.oas.models.examples.Example;
import io.swagger.v3.oas.models.media.*;
import io.swagger.v3.oas.models.media.ArraySchema;
import io.swagger.v3.oas.models.media.MediaType;
@@ -26,9 +26,9 @@ import io.swagger.v3.oas.models.parameters.Parameter;
import io.swagger.v3.oas.models.parameters.RequestBody;
import io.swagger.v3.oas.models.responses.ApiResponse;
import io.swagger.v3.oas.models.security.SecurityScheme;
-import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*;
+import org.openapitools.codegen.CodegenDiscriminator.MappedModel;
import org.openapitools.codegen.examples.ExampleGenerator;
import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.utils.ModelUtils;
@@ -37,6 +37,7 @@ import org.openapitools.codegen.meta.GeneratorMetadata;
import org.openapitools.codegen.meta.Stability;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.github.curiousoddman.rgxgen.RgxGen;
import java.time.OffsetDateTime;
import java.time.ZoneOffset;
@@ -44,12 +45,16 @@ import java.time.format.DateTimeFormatter;
import java.io.File;
import java.util.*;
import java.util.regex.Pattern;
+import java.util.regex.Matcher;
-import static org.openapitools.codegen.utils.StringUtils.camelize;
-import static org.openapitools.codegen.utils.StringUtils.underscore;
+import static org.openapitools.codegen.utils.OnceLogger.once;
public class PythonClientExperimentalCodegen extends PythonClientCodegen {
private static final Logger LOGGER = LoggerFactory.getLogger(PythonClientExperimentalCodegen.class);
+ // A cache to efficiently lookup a Schema instance based on the return value of `toModelName()`.
+ private Map modelNameToSchemaCache;
+ private DateTimeFormatter iso8601Date = DateTimeFormatter.ISO_DATE;
+ private DateTimeFormatter iso8601DateTime = DateTimeFormatter.ISO_DATE_TIME;
public PythonClientExperimentalCodegen() {
super();
@@ -220,15 +225,38 @@ public class PythonClientExperimentalCodegen extends PythonClientCodegen {
return "python-experimental";
}
- public String dateToString(Schema p, OffsetDateTime date, DateTimeFormatter dateFormatter, DateTimeFormatter dateTimeFormatter) {
- // converts a date into a date or date-time python string
- if (!(ModelUtils.isDateSchema(p) || ModelUtils.isDateTimeSchema(p))) {
- throw new RuntimeException("passed schema must be of type Date or DateTime");
+ public String pythonDate(Object dateValue) {
+ String strValue = null;
+ if (dateValue instanceof OffsetDateTime) {
+ OffsetDateTime date = null;
+ try {
+ date = (OffsetDateTime) dateValue;
+ } catch (ClassCastException e) {
+ LOGGER.warn("Invalid `date` format for value {}", dateValue.toString());
+ date = ((Date) dateValue).toInstant().atOffset(ZoneOffset.UTC);
+ }
+ strValue = date.format(iso8601Date);
+ } else {
+ strValue = dateValue.toString();
}
- if (ModelUtils.isDateSchema(p)) {
- return "dateutil_parser('" + date.format(dateFormatter) + "').date()";
+ return "dateutil_parser('" + strValue + "').date()";
+ }
+
+ public String pythonDateTime(Object dateTimeValue) {
+ String strValue = null;
+ if (dateTimeValue instanceof OffsetDateTime) {
+ OffsetDateTime dateTime = null;
+ try {
+ dateTime = (OffsetDateTime) dateTimeValue;
+ } catch (ClassCastException e) {
+ LOGGER.warn("Invalid `date-time` format for value {}", dateTimeValue.toString());
+ dateTime = ((Date) dateTimeValue).toInstant().atOffset(ZoneOffset.UTC);
+ }
+ strValue = dateTime.format(iso8601DateTime);
+ } else {
+ strValue = dateTimeValue.toString();
}
- return "dateutil_parser('" + date.format(dateTimeFormatter) + "')";
+ return "dateutil_parser('" + strValue + "')";
}
/**
@@ -251,80 +279,25 @@ public class PythonClientExperimentalCodegen extends PythonClientCodegen {
defaultObject = p.getEnum().get(0);
}
- // convert datetime and date enums if they exist
- DateTimeFormatter iso8601Date = DateTimeFormatter.ISO_DATE;
- DateTimeFormatter iso8601DateTime = DateTimeFormatter.ISO_DATE_TIME;
-
- if (ModelUtils.isDateSchema(p) || ModelUtils.isDateTimeSchema(p)) {
- List