@@ -1565,6 +1565,14 @@ def __init__(self, name: str, item_type: Union[Type, Sequence[Type]], descriptio
1565
1565
self .separator : Optional [str ] = separator
1566
1566
self ._convertor : Convertor = get_convertor (item_type ) if isinstance (item_type , type ) else None
1567
1567
super ().__init__ (name , list , description , required , default )
1568
+ def _check_value (self , value : List ) -> None :
1569
+ super ()._check_value (value )
1570
+ if value is not None :
1571
+ i = 0
1572
+ for item in value :
1573
+ if item .__class__ not in self .item_types :
1574
+ raise ValueError (f"List item[{ i } ] has wrong type" )
1575
+ i += 1
1568
1576
def _get_as_typed_str (self , value : Any ) -> str :
1569
1577
result = convert_to_str (value )
1570
1578
if len (self .item_types ) > 1 :
@@ -1641,13 +1649,7 @@ def set_value(self, value: List) -> None:
1641
1649
ValueError: When the argument is not a valid option value.
1642
1650
"""
1643
1651
self ._check_value (value )
1644
- if value is not None :
1645
- i = 0
1646
- for item in value :
1647
- if item .__class__ not in self .item_types :
1648
- raise ValueError (f"List item[{ i } ] has wrong type" )
1649
- i += 1
1650
- self ._value = value
1652
+ self ._value = None if value is None else [i for i in value ]
1651
1653
def load_proto (self , proto : ConfigProto ) -> None :
1652
1654
"""Deserialize value from `.ConfigProto` message.
1653
1655
@@ -2149,13 +2151,21 @@ def __init__(self, name: st
10000
r, description: str, item_type: Type[Config], *,
2149
2151
#: break as separator, otherwise it uses comma as separator.
2150
2152
self .separator : Optional [str ] = separator
2151
2153
super ().__init__ (name , list , description , required , [])
2154
+ def _check_value (self , value : List ) -> None :
2155
+ super ()._check_value (value )
2156
+ if value is not None :
2157
+ i = 0
2158
+ for item in value :
2159
+ if item .__class__ is not self .item_type :
2160
+ raise ValueError (f"List item[{ i } ] has wrong type" )
2161
+ i += 1
2152
2162
def clear (self , * , to_default : bool = True ) -> None :
2153
2163
"""Clears the option value.
2154
2164
2155
2165
Arguments:
2156
2166
to_default: If True, sets the option value to default value, else to None.
2157
2167
"""
2158
- self ._value = []
2168
+ self ._value . clear ()
2159
2169
def get_formatted (self ) -> str :
2160
2170
"""Returns value formatted for use in config file.
2161
2171
"""
@@ -2207,13 +2217,10 @@ def set_value(self, value: List) -> None:
2207
2217
ValueError: When the argument is not a valid option value.
2208
2218
"""
2209
2219
self ._check_value (value )
2210
- if value is not None :
2211
- i = 0
2212
- for item in value :
2213
- if item .__class__ is not self .item_type :
2214
- raise ValueError (f"List item[{ i } ] has wrong type" )
2215
- i += 1
2216
- self ._value = value
2220
+ if value is None :
2221
+ self .clear ()
2222
+ else :
2223
+ self ._value = [i for i in value ]
2217
2224
def load_proto (self , proto : ConfigProto ) -> None :
2218
2225
"""Deserialize value from `.ConfigProto` message.
2219
2226
0 commit comments