Skip to content

Commit f3710d3

Browse files
authored
Merge pull request #930 from atlassian-forks/python-object
Fixed #10129 for swagger-codegen where python was getting the type "O…
2 parents a36fd69 + d0d1b55 commit f3710d3

File tree

2 files changed

+45
-0
lines changed

2 files changed

+45
-0
lines changed

src/main/java/io/swagger/codegen/v3/generators/python/PythonClientCodegen.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -469,6 +469,10 @@ public String toParamName(String name) {
469469

470470
@Override
471471
public String toModelName(String name) {
472+
if (name == null) {
473+
// sanitizeName will return "Object" for null, but this is called "object" in python
474+
return "object";
475+
}
472476
name = sanitizeName(name); // FIXME: a parameter should not be assigned. Also declare the methods parameters as 'final'.
473477
// remove dollar sign
474478
name = name.replaceAll("$", "");
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package io.swagger.codegen.v3.generators.python;
2+
3+
import io.swagger.codegen.v3.generators.AbstractCodegenTest;
4+
import org.testng.Assert;
5+
import org.testng.annotations.Test;
6+
7+
public class PythonClientCodegenTest extends AbstractCodegenTest {
8+
@Test
9+
public void testToModelName() {
10+
PythonClientCodegen pythonClientCodegen = new PythonClientCodegen();
11+
12+
// no type - this is 'object' in Python
13+
Assert.assertEquals(pythonClientCodegen.toModelName(null), "object");
14+
// assume this is a model type - "null" is not special in Python
15+
Assert.assertEquals(pythonClientCodegen.toModelName("null"), "Null");
16+
// reserved word
17+
Assert.assertEquals(pythonClientCodegen.toModelName("return"), "ModelReturn");
18+
Assert.assertEquals(pythonClientCodegen.toModelName("None"), "ModelNone");
19+
// $
20+
Assert.assertEquals(pythonClientCodegen.toModelName("my$result"), "Myresult");
21+
// Starts with number
22+
Assert.assertEquals(pythonClientCodegen.toModelName("999Bad"), "Model999Bad");
23+
// Camel Case
24+
Assert.assertEquals(pythonClientCodegen.toModelName("camel_case"), "CamelCase");
25+
}
26+
27+
@Test
28+
public void testToModelNamePrefixSuffix() {
29+
PythonClientCodegen pythonClientCodegen = new PythonClientCodegen();
30+
pythonClientCodegen.setModelNamePrefix("xprefixx");
31+
32+
// Camel Case
33+
Assert.assertEquals(pythonClientCodegen.toModelName("camel_case"), "XprefixxCamelCase");
34+
35+
pythonClientCodegen.setModelNamePrefix(null);
36+
pythonClientCodegen.setModelNameSuffix("xsuffixx");
37+
38+
// Camel Case
39+
Assert.assertEquals(pythonClientCodegen.toModelName("camel_case"), "CamelCaseXsuffixx");
40+
}
41+
}

0 commit comments

Comments
 (0)