@@ -1128,12 +1128,18 @@ def list_hook(
11281128 return lambda vals : [cls .from_primitive (v ) for v in vals ]
11291129
11301130
1131- class OrderedSet (list , Generic [T ], CBORSerializable ):
1132- def __init__ (self , iterable : Optional [List [T ]] = None , use_tag : bool = True ):
1131+ class OrderedSet (list , IndefiniteList , Generic [T ], CBORSerializable ): # type: ignore
1132+ def __init__ (
1133+ self ,
1134+ iterable : Optional [Union [List [T ], IndefiniteList ]] = None ,
1135+ use_tag : bool = True ,
1136+ ):
11331137 super ().__init__ ()
11341138 self ._set : Set [str ] = set ()
11351139 self ._use_tag = use_tag
1140+ self ._is_indefinite_list = False
11361141 if iterable :
1142+ self ._is_indefinite_list = isinstance (iterable , IndefiniteList )
11371143 self .extend (iterable )
11381144
11391145 def append (self , item : T ) -> None :
@@ -1143,6 +1149,7 @@ def append(self, item: T) -> None:
11431149 self ._set .add (item_key )
11441150
11451151 def extend (self , items : Iterable [T ]) -> None :
1152+ self ._is_indefinite_list = isinstance (items , IndefiniteList )
11461153 for item in items :
11471154 self .append (item )
11481155
@@ -1159,10 +1166,13 @@ def __eq__(self, other: object) -> bool:
11591166 def __repr__ (self ) -> str :
11601167 return f"{ self .__class__ .__name__ } ({ list (self )} )"
11611168
1162- def to_shallow_primitive (self ) -> Union [CBORTag , List [T ]]:
1169+ def to_shallow_primitive (self ) -> Union [CBORTag , Union [ List [T ], IndefiniteList ]]:
11631170 if self ._use_tag :
1164- return CBORTag (258 , list (self ))
1165- return list (self )
1171+ return CBORTag (
1172+ 258 ,
1173+ IndefiniteList (list (self )) if self ._is_indefinite_list else list (self ),
1174+ )
1175+ return IndefiniteList (list (self )) if self ._is_indefinite_list else list (self )
11661176
11671177 @classmethod
11681178 def from_primitive (
@@ -1195,7 +1205,11 @@ def __deepcopy__(self, memo):
11951205
11961206
11971207class NonEmptyOrderedSet (OrderedSet [T ]):
1198- def __init__ (self , iterable : Optional [List [T ]] = None , use_tag : bool = True ):
1208+ def __init__ (
1209+ self ,
1210+ iterable : Optional [Union [List [T ], IndefiniteList ]] = None ,
1211+ use_tag : bool = True ,
1212+ ):
11991213 super ().__init__ (iterable , use_tag )
12001214
12011215 def validate (self ):
0 commit comments