77from datetime import date , datetime , time , timedelta
88
99import csp
10- from csp .impl .struct import defineStruct
10+ from csp .impl .struct import define_nested_struct , define_struct , defineNestedStruct , defineStruct
1111from csp .impl .types .typing_utils import FastList
1212
1313
@@ -761,9 +761,7 @@ def test_update(self):
761761 self .assertEqual (dest , DerivedPartialNative (l = [2 , 3 , 4 ], f = 3.14 , b = False , i = 5 , s = "bar" ))
762762
763763 def test_multibyte_mask (self ):
764- from csp .impl .struct import defineStruct
765-
766- BigStruct = defineStruct ("BigStruct" , {k : float for k in "abcdefghijklmnopqrdtuvwxyz" })
764+ BigStruct = define_struct ("BigStruct" , {k : float for k in "abcdefghijklmnopqrdtuvwxyz" })
767765
768766 s = BigStruct ()
769767 for key in BigStruct .metadata ().keys ():
@@ -1062,9 +1060,18 @@ def graph2():
10621060 for _ in range (100 ):
10631061 csp .run (graph2 , starttime = datetime (2020 , 1 , 1 ), endtime = timedelta (seconds = 1000 ))
10641062
1065- def test_defineNestedStruct (self ):
1066- from csp .impl .struct import defineNestedStruct
1063+ def test_deprecated_defineStruct (self ):
1064+ metadata = {
1065+ "a" : float ,
1066+ "b" : int ,
1067+ }
1068+ defaults = {"a" : 0.0 , "b" : 1 }
1069+ TestStruct = define_struct ("TestStruct" , metadata , defaults )
1070+ TestStruct2 = defineStruct ("TestStruct" , metadata , defaults )
1071+ self .assertEqual (TestStruct .metadata (), TestStruct2 .metadata ())
1072+ self .assertEqual (TestStruct .__defaults__ , TestStruct2 .__defaults__ )
10671073
1074+ def test_define_nested_struct (self ):
10681075 metadata = {
10691076 "a" : float ,
10701077 "b" : int ,
@@ -1084,7 +1091,7 @@ def test_defineNestedStruct(self):
10841091 },
10851092 "d" : {"s" : object , "t" : [object , True ]},
10861093 }
1087- TestStruct = defineNestedStruct ("TestStruct" , metadata )
1094+ TestStruct = define_nested_struct ("TestStruct" , metadata )
10881095 self .assertEqual (TestStruct .__name__ , "TestStruct" )
10891096 self .assertEqual (list (TestStruct .metadata ().keys ()), list (normalized_metadata .keys ()))
10901097 self .assertEqual (TestStruct .metadata ()["a" ], normalized_metadata ["a" ])
@@ -1099,20 +1106,26 @@ def test_defineNestedStruct(self):
10991106 self .assertEqual (d .metadata (), normalized_metadata ["d" ])
11001107
11011108 defaults = {"a" : 0.0 , "c" : {"y" : []}, "d" : {}}
1102- TestStruct2 = defineNestedStruct ("TestStruct2" , metadata , defaults )
1109+ TestStruct2 = define_nested_struct ("TestStruct2" , metadata , defaults )
11031110 s = TestStruct2 ()
11041111 self .assertEqual (s .a , 0.0 )
11051112 self .assertEqual (s .c , s .metadata ()["c" ]())
11061113 self .assertEqual (s .c .y , [])
11071114 self .assertEqual (s .d , s .metadata ()["d" ]())
11081115
1109- def test_all_fields_set (self ):
1110- from csp .impl .struct import defineStruct
1116+ # Make sure deprecated function still works without raising
1117+ TestStruct3 = defineNestedStruct ("TestStruct3" , metadata , defaults )
1118+ s = TestStruct3 ()
1119+ self .assertEqual (s .a , 0.0 )
1120+ self .assertEqual (s .c , s .metadata ()["c" ]())
1121+ self .assertEqual (s .c .y , [])
1122+ self .assertEqual (s .d , s .metadata ()["d" ]())
11111123
1124+ def test_all_fields_set (self ):
11121125 types = [int , bool , list , str ]
11131126 for num_fields in range (1 , 25 ):
11141127 meta = {chr (ord ("a" ) + x ): types [x % len (types )] for x in range (num_fields )}
1115- stype = defineStruct ("foo" , meta )
1128+ stype = define_struct ("foo" , meta )
11161129 s = stype ()
11171130 self .assertFalse (s .all_fields_set ())
11181131 keys = list (meta .keys ())
@@ -1125,7 +1138,7 @@ def test_all_fields_set(self):
11251138
11261139 # Test derived structs
11271140 meta2 = {k + "2" : t for k , t in meta .items ()}
1128- stype2 = defineStruct ("foo" , meta2 , base = stype )
1141+ stype2 = define_struct ("foo" , meta2 , base = stype )
11291142 s2 = stype2 ()
11301143 self .assertFalse (s2 .all_fields_set ())
11311144 keys = list (stype2 .metadata ().keys ())
@@ -1160,12 +1173,10 @@ def test_struct_pickle(self):
11601173 self .assertNotEqual (id (foo ), id (foo_unpickled ))
11611174
11621175 def test_struct_type_alloc (self ):
1163- from csp .impl .struct import defineStruct
1164-
11651176 for i in range (1000 ):
11661177 name = f"struct_{ i } "
11671178 fieldname = f"field{ i } "
1168- S = defineStruct (name , {fieldname : int })
1179+ S = define_struct (name , {fieldname : int })
11691180 s = S ()
11701181 setattr (s , fieldname , i )
11711182 ts = getattr (csp .const (s ), fieldname )
@@ -1352,7 +1363,7 @@ class Outer(csp.Struct):
13521363
13531364 all = []
13541365 for i in range (10000 ):
1355- sType = defineStruct ("foo" , {"a" : dict })
1366+ sType = define_struct ("foo" , {"a" : dict })
13561367 all .append (Outer (s = sType (a = {"foo" : "bar" })))
13571368 repr (all )
13581369 all = all [:100 ]
0 commit comments