@@ -170,11 +170,11 @@ def get_all_cells(self, memo=None):
170170 """
171171 cells = {}
172172
173- if memo and self in memo :
173+ if memo is None :
174+ memo = set ()
175+ elif self in memo :
174176 return cells
175-
176- if memo is not None :
177- memo .add (self )
177+ memo .add (self )
178178
179179 unique_universes = self .get_unique_universes ()
180180
@@ -194,6 +194,9 @@ def get_all_materials(self, memo=None):
194194
195195 """
196196
197+ if memo is None :
198+ memo = set ()
199+
197200 materials = {}
198201
199202 # Append all Cells in each Cell in the Universe to the dictionary
@@ -203,7 +206,7 @@ def get_all_materials(self, memo=None):
203206
204207 return materials
205208
206- def get_all_universes (self ):
209+ def get_all_universes (self , memo = None ):
207210 """Return all universes that are contained within the lattice
208211
209212 Returns
@@ -213,11 +216,16 @@ def get_all_universes(self):
213216 :class:`Universe` instances
214217
215218 """
216-
217219 # Initialize a dictionary of all Universes contained by the Lattice
218220 # in each nested Universe level
219221 all_universes = {}
220222
223+ if memo is None :
224+ memo = set ()
225+ elif self in memo :
226+ return all_universes
227+ memo .add (self )
228+
221229 # Get all unique Universes contained in each of the lattice cells
222230 unique_universes = self .get_unique_universes ()
223231
@@ -226,7 +234,7 @@ def get_all_universes(self):
226234
227235 # Append all Universes containing each cell to the dictionary
228236 for universe in unique_universes .values ():
229- all_universes .update (universe .get_all_universes ())
237+ all_universes .update (universe .get_all_universes (memo ))
230238
231239 return all_universes
232240
@@ -846,10 +854,11 @@ def create_xml_subelement(self, xml_element, memo=None):
846854
847855 """
848856 # If the element already contains the Lattice subelement, then return
849- if memo and self in memo :
857+ if memo is None :
858+ memo = set ()
859+ elif self in memo :
850860 return
851- if memo is not None :
852- memo .add (self )
861+ memo .add (self )
853862
854863 # Make sure universes have been assigned
855864 if self .universes is None :
@@ -1417,10 +1426,11 @@ def is_valid_index(self, idx):
14171426
14181427 def create_xml_subelement (self , xml_element , memo = None ):
14191428 # If this subelement has already been written, return
1420- if memo and self in memo :
1429+ if memo is None :
1430+ memo = set ()
1431+ elif self in memo :
14211432 return
1422- if memo is not None :
1423- memo .add (self )
1433+ memo .add (self )
14241434
14251435 lattice_subelement = ET .Element ("hex_lattice" )
14261436 lattice_subelement .set ("id" , str (self ._id ))
0 commit comments