Skip to content

Commit c15fe42

Browse files
authored
Use correct default type for str (#8623)
* [Python] Use correct type for str with None Otherwise mypy will correctly flag code like this def __init__(self): self.fooBar = None # type: Optional[str] error: Incompatible types in assignment (expression has type "None", variable has type "str") * [Python] Make list type optional as they can contain None
1 parent 6b251aa commit c15fe42

File tree

9 files changed

+61
-61
lines changed

9 files changed

+61
-61
lines changed

src/idl_gen_python.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1628,7 +1628,7 @@ class PythonGenerator : public BaseGenerator {
16281628
} else if (IsInteger(base_type)) {
16291629
return "int";
16301630
} else if (base_type == BASE_TYPE_STRING) {
1631-
return "str";
1631+
return "Optional[str]";
16321632
} else {
16331633
FLATBUFFERS_ASSERT(false && "base_type is not a scalar or string type.");
16341634
return "";
@@ -1726,10 +1726,10 @@ class PythonGenerator : public BaseGenerator {
17261726
field_type = package_reference + "." + object_type + "]";
17271727
import_list->insert("import " + package_reference);
17281728
}
1729-
field_type = "List[" + field_type;
1729+
field_type = "Optional[List[" + field_type + "]";
17301730
} else {
17311731
field_type =
1732-
"List[" + GetBasePythonTypeForScalarAndString(base_type) + "]";
1732+
"Optional[List[" + GetBasePythonTypeForScalarAndString(base_type) + "]]";
17331733
}
17341734
}
17351735

@@ -1769,7 +1769,7 @@ class PythonGenerator : public BaseGenerator {
17691769
}
17701770

17711771
const auto default_value = GetDefaultValue(field);
1772-
// Wrties the init statement.
1772+
// Writes the init statement.
17731773
const auto field_field = namer_.Field(field);
17741774
code += GenIndents(2) + "self." + field_field + " = " + default_value +
17751775
" # type: " + field_type;

tests/MyGame/Example/ArrayStruct.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -116,11 +116,11 @@ class ArrayStructT(object):
116116
# ArrayStructT
117117
def __init__(self):
118118
self.a = 0.0 # type: float
119-
self.b = None # type: List[int]
119+
self.b = None # type: Optional[List[int]]
120120
self.c = 0 # type: int
121-
self.d = None # type: List[MyGame.Example.NestedStruct.NestedStructT]
121+
self.d = None # type: Optional[List[MyGame.Example.NestedStruct.NestedStructT]]
122122
self.e = 0 # type: int
123-
self.f = None # type: List[int]
123+
self.f = None # type: Optional[List[int]]
124124

125125
@classmethod
126126
def InitFromBuf(cls, buf, pos):

tests/MyGame/Example/Monster.py

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1407,16 +1407,16 @@ def __init__(self):
14071407
self.pos = None # type: Optional[MyGame.Example.Vec3.Vec3T]
14081408
self.mana = 150 # type: int
14091409
self.hp = 100 # type: int
1410-
self.name = None # type: str
1411-
self.inventory = None # type: List[int]
1410+
self.name = None # type: Optional[str]
1411+
self.inventory = None # type: Optional[List[int]]
14121412
self.color = 8 # type: int
14131413
self.testType = 0 # type: int
14141414
self.test = None # type: Union[None, MyGame.Example.Monster.MonsterT, MyGame.Example.TestSimpleTableWithEnum.TestSimpleTableWithEnumT, MyGame.Example2.Monster.MonsterT]
1415-
self.test4 = None # type: List[MyGame.Example.Test.TestT]
1416-
self.testarrayofstring = None # type: List[str]
1417-
self.testarrayoftables = None # type: List[MyGame.Example.Monster.MonsterT]
1415+
self.test4 = None # type: Optional[List[MyGame.Example.Test.TestT]]
1416+
self.testarrayofstring = None # type: Optional[List[Optional[str]]]
1417+
self.testarrayoftables = None # type: Optional[List[MyGame.Example.Monster.MonsterT]]
14181418
self.enemy = None # type: Optional[MyGame.Example.Monster.MonsterT]
1419-
self.testnestedflatbuffer = None # type: List[int]
1419+
self.testnestedflatbuffer = None # type: Optional[List[int]]
14201420
self.testempty = None # type: Optional[MyGame.Example.Stat.StatT]
14211421
self.testbool = False # type: bool
14221422
self.testhashs32Fnv1 = 0 # type: int
@@ -1427,33 +1427,33 @@ def __init__(self):
14271427
self.testhashu32Fnv1a = 0 # type: int
14281428
self.testhashs64Fnv1a = 0 # type: int
14291429
self.testhashu64Fnv1a = 0 # type: int
1430-
self.testarrayofbools = None # type: List[bool]
1430+
self.testarrayofbools = None # type: Optional[List[bool]]
14311431
self.testf = 3.14159 # type: float
14321432
self.testf2 = 3.0 # type: float
14331433
self.testf3 = 0.0 # type: float
1434-
self.testarrayofstring2 = None # type: List[str]
1435-
self.testarrayofsortedstruct = None # type: List[MyGame.Example.Ability.AbilityT]
1436-
self.flex = None # type: List[int]
1437-
self.test5 = None # type: List[MyGame.Example.Test.TestT]
1438-
self.vectorOfLongs = None # type: List[int]
1439-
self.vectorOfDoubles = None # type: List[float]
1434+
self.testarrayofstring2 = None # type: Optional[List[Optional[str]]]
1435+
self.testarrayofsortedstruct = None # type: Optional[List[MyGame.Example.Ability.AbilityT]]
1436+
self.flex = None # type: Optional[List[int]]
1437+
self.test5 = None # type: Optional[List[MyGame.Example.Test.TestT]]
1438+
self.vectorOfLongs = None # type: Optional[List[int]]
1439+
self.vectorOfDoubles = None # type: Optional[List[float]]
14401440
self.parentNamespaceTest = None # type: Optional[MyGame.InParentNamespace.InParentNamespaceT]
1441-
self.vectorOfReferrables = None # type: List[MyGame.Example.Referrable.ReferrableT]
1441+
self.vectorOfReferrables = None # type: Optional[List[MyGame.Example.Referrable.ReferrableT]]
14421442
self.singleWeakReference = 0 # type: int
1443-
self.vectorOfWeakReferences = None # type: List[int]
1444-
self.vectorOfStrongReferrables = None # type: List[MyGame.Example.Referrable.ReferrableT]
1443+
self.vectorOfWeakReferences = None # type: Optional[List[int]]
1444+
self.vectorOfStrongReferrables = None # type: Optional[List[MyGame.Example.Referrable.ReferrableT]]
14451445
self.coOwningReference = 0 # type: int
1446-
self.vectorOfCoOwningReferences = None # type: List[int]
1446+
self.vectorOfCoOwningReferences = None # type: Optional[List[int]]
14471447
self.nonOwningReference = 0 # type: int
1448-
self.vectorOfNonOwningReferences = None # type: List[int]
1448+
self.vectorOfNonOwningReferences = None # type: Optional[List[int]]
14491449
self.anyUniqueType = 0 # type: int
14501450
self.anyUnique = None # type: Union[None, MyGame.Example.Monster.MonsterT, MyGame.Example.TestSimpleTableWithEnum.TestSimpleTableWithEnumT, MyGame.Example2.Monster.MonsterT]
14511451
self.anyAmbiguousType = 0 # type: int
14521452
self.anyAmbiguous = None # type: Union[None, MyGame.Example.Monster.MonsterT, MyGame.Example.Monster.MonsterT, MyGame.Example.Monster.MonsterT]
1453-
self.vectorOfEnums = None # type: List[int]
1453+
self.vectorOfEnums = None # type: Optional[List[int]]
14541454
self.signedEnum = -1 # type: int
1455-
self.testrequirednestedflatbuffer = None # type: List[int]
1456-
self.scalarKeySortedTables = None # type: List[MyGame.Example.Stat.StatT]
1455+
self.testrequirednestedflatbuffer = None # type: Optional[List[int]]
1456+
self.scalarKeySortedTables = None # type: Optional[List[MyGame.Example.Stat.StatT]]
14571457
self.nativeInline = None # type: Optional[MyGame.Example.Test.TestT]
14581458
self.longEnumNonEnumDefault = 0 # type: int
14591459
self.longEnumNormalDefault = 2 # type: int

tests/MyGame/Example/NestedStruct.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,10 +105,10 @@ class NestedStructT(object):
105105

106106
# NestedStructT
107107
def __init__(self):
108-
self.a = None # type: List[int]
108+
self.a = None # type: Optional[List[int]]
109109
self.b = 0 # type: int
110-
self.c = None # type: List[int]
111-
self.d = None # type: List[int]
110+
self.c = None # type: Optional[List[int]]
111+
self.d = None # type: Optional[List[int]]
112112

113113
@classmethod
114114
def InitFromBuf(cls, buf, pos):

tests/MyGame/Example/NestedUnion/NestedUnionTest.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ class NestedUnionTestT(object):
105105

106106
# NestedUnionTestT
107107
def __init__(self):
108-
self.name = None # type: str
108+
self.name = None # type: Optional[str]
109109
self.dataType = 0 # type: int
110110
self.data = None # type: Union[None, MyGame.Example.NestedUnion.Vec3.Vec3T, MyGame.Example.NestedUnion.TestSimpleTableWithEnum.TestSimpleTableWithEnumT]
111111
self.id = 0 # type: int

tests/MyGame/Example/Stat.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ class StatT(object):
8484

8585
# StatT
8686
def __init__(self):
87-
self.id = None # type: str
87+
self.id = None # type: Optional[str]
8888
self.val = 0 # type: int
8989
self.count = 0 # type: int
9090

tests/MyGame/Example/TypeAliases.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -267,8 +267,8 @@ def __init__(self):
267267
self.u64 = 0 # type: int
268268
self.f32 = 0.0 # type: float
269269
self.f64 = 0.0 # type: float
270-
self.v8 = None # type: List[int]
271-
self.vf64 = None # type: List[float]
270+
self.v8 = None # type: Optional[List[int]]
271+
self.vf64 = None # type: Optional[List[float]]
272272

273273
@classmethod
274274
def InitFromBuf(cls, buf, pos):

tests/MyGame/MonsterExtra.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -240,8 +240,8 @@ def __init__(self):
240240
self.f1 = float('nan') # type: float
241241
self.f2 = float('inf') # type: float
242242
self.f3 = float('-inf') # type: float
243-
self.dvec = None # type: List[float]
244-
self.fvec = None # type: List[float]
243+
self.dvec = None # type: Optional[List[float]]
244+
self.fvec = None # type: Optional[List[float]]
245245

246246
@classmethod
247247
def InitFromBuf(cls, buf, pos):

tests/monster_test_generated.py

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -728,7 +728,7 @@ class StatT(object):
728728

729729
# StatT
730730
def __init__(self):
731-
self.id = None # type: str
731+
self.id = None # type: Optional[str]
732732
self.val = 0 # type: int
733733
self.count = 0 # type: int
734734

@@ -1973,16 +1973,16 @@ def __init__(self):
19731973
self.pos = None # type: Optional[Vec3T]
19741974
self.mana = 150 # type: int
19751975
self.hp = 100 # type: int
1976-
self.name = None # type: str
1977-
self.inventory = None # type: List[int]
1976+
self.name = None # type: Optional[str]
1977+
self.inventory = None # type: Optional[List[int]]
19781978
self.color = 8 # type: int
19791979
self.testType = 0 # type: int
19801980
self.test = None # type: Union[None, MonsterT, TestSimpleTableWithEnumT, MonsterT]
1981-
self.test4 = None # type: List[TestT]
1982-
self.testarrayofstring = None # type: List[str]
1983-
self.testarrayoftables = None # type: List[MonsterT]
1981+
self.test4 = None # type: Optional[List[TestT]]
1982+
self.testarrayofstring = None # type: Optional[List[Optional[str]]]
1983+
self.testarrayoftables = None # type: Optional[List[MonsterT]]
19841984
self.enemy = None # type: Optional[MonsterT]
1985-
self.testnestedflatbuffer = None # type: List[int]
1985+
self.testnestedflatbuffer = None # type: Optional[List[int]]
19861986
self.testempty = None # type: Optional[StatT]
19871987
self.testbool = False # type: bool
19881988
self.testhashs32Fnv1 = 0 # type: int
@@ -1993,33 +1993,33 @@ def __init__(self):
19931993
self.testhashu32Fnv1a = 0 # type: int
19941994
self.testhashs64Fnv1a = 0 # type: int
19951995
self.testhashu64Fnv1a = 0 # type: int
1996-
self.testarrayofbools = None # type: List[bool]
1996+
self.testarrayofbools = None # type: Optional[List[bool]]
19971997
self.testf = 3.14159 # type: float
19981998
self.testf2 = 3.0 # type: float
19991999
self.testf3 = 0.0 # type: float
2000-
self.testarrayofstring2 = None # type: List[str]
2001-
self.testarrayofsortedstruct = None # type: List[AbilityT]
2002-
self.flex = None # type: List[int]
2003-
self.test5 = None # type: List[TestT]
2004-
self.vectorOfLongs = None # type: List[int]
2005-
self.vectorOfDoubles = None # type: List[float]
2000+
self.testarrayofstring2 = None # type: Optional[List[Optional[str]]]
2001+
self.testarrayofsortedstruct = None # type: Optional[List[AbilityT]]
2002+
self.flex = None # type: Optional[List[int]]
2003+
self.test5 = None # type: Optional[List[TestT]]
2004+
self.vectorOfLongs = None # type: Optional[List[int]]
2005+
self.vectorOfDoubles = None # type: Optional[List[float]]
20062006
self.parentNamespaceTest = None # type: Optional[InParentNamespaceT]
2007-
self.vectorOfReferrables = None # type: List[ReferrableT]
2007+
self.vectorOfReferrables = None # type: Optional[List[ReferrableT]]
20082008
self.singleWeakReference = 0 # type: int
2009-
self.vectorOfWeakReferences = None # type: List[int]
2010-
self.vectorOfStrongReferrables = None # type: List[ReferrableT]
2009+
self.vectorOfWeakReferences = None # type: Optional[List[int]]
2010+
self.vectorOfStrongReferrables = None # type: Optional[List[ReferrableT]]
20112011
self.coOwningReference = 0 # type: int
2012-
self.vectorOfCoOwningReferences = None # type: List[int]
2012+
self.vectorOfCoOwningReferences = None # type: Optional[List[int]]
20132013
self.nonOwningReference = 0 # type: int
2014-
self.vectorOfNonOwningReferences = None # type: List[int]
2014+
self.vectorOfNonOwningReferences = None # type: Optional[List[int]]
20152015
self.anyUniqueType = 0 # type: int
20162016
self.anyUnique = None # type: Union[None, MonsterT, TestSimpleTableWithEnumT, MonsterT]
20172017
self.anyAmbiguousType = 0 # type: int
20182018
self.anyAmbiguous = None # type: Union[None, MonsterT, MonsterT, MonsterT]
2019-
self.vectorOfEnums = None # type: List[int]
2019+
self.vectorOfEnums = None # type: Optional[List[int]]
20202020
self.signedEnum = -1 # type: int
2021-
self.testrequirednestedflatbuffer = None # type: List[int]
2022-
self.scalarKeySortedTables = None # type: List[StatT]
2021+
self.testrequirednestedflatbuffer = None # type: Optional[List[int]]
2022+
self.scalarKeySortedTables = None # type: Optional[List[StatT]]
20232023
self.nativeInline = None # type: Optional[TestT]
20242024
self.longEnumNonEnumDefault = 0 # type: int
20252025
self.longEnumNormalDefault = 2 # type: int
@@ -2719,8 +2719,8 @@ def __init__(self):
27192719
self.u64 = 0 # type: int
27202720
self.f32 = 0.0 # type: float
27212721
self.f64 = 0.0 # type: float
2722-
self.v8 = None # type: List[int]
2723-
self.vf64 = None # type: List[float]
2722+
self.v8 = None # type: Optional[List[int]]
2723+
self.vf64 = None # type: Optional[List[float]]
27242724

27252725
@classmethod
27262726
def InitFromBuf(cls, buf, pos):

0 commit comments

Comments
 (0)