[Yt-svn] yt-commit r1373 - trunk/yt/lagos

mturk at wrangler.dreamhost.com mturk at wrangler.dreamhost.com
Wed Jul 15 10:51:25 PDT 2009


Author: mturk
Date: Wed Jul 15 10:51:24 2009
New Revision: 1373
URL: http://yt.spacepope.org/changeset/1373

Log:
Updates to h5py interface -- if you were having trouble with h5py-1.2.0 this
should fix it, and it should also help with some old .yt files being considered
'corrupt' by automatically wiping some components.

Also, if you don't have hashlib, it will use a different hash than md5 for
parameter files.



Modified:
   trunk/yt/lagos/HierarchyType.py
   trunk/yt/lagos/OutputTypes.py

Modified: trunk/yt/lagos/HierarchyType.py
==============================================================================
--- trunk/yt/lagos/HierarchyType.py	(original)
+++ trunk/yt/lagos/HierarchyType.py	Wed Jul 15 10:51:24 2009
@@ -157,14 +157,18 @@
         """
 
         if self._data_mode != 'a': return
+        if "ArgsError" in dir(h5py.h5):
+            exception = h5py.h5.ArgsError
+        else:
+            exception = h5py.h5.H5Error
         try:
             node_loc = self._data_file[node]
             if name in node_loc.listnames() and force:
                 mylog.info("Overwriting node %s/%s", node, name)
                 del self._data_file[node][name]
             elif name in node_loc.listnames() and passthrough:
-                return        
-        except h5py.h5.ArgsError:
+                return
+        except exception:
             pass
         myGroup = self._data_file['/']
         for q in node.split('/'):
@@ -855,9 +859,9 @@
                 self.gridLevels[secondGrid] = self.gridLevels[firstGrid]
         pTree = [ [ grid.id - 1 for grid in self.gridTree[i] ] for i in range(self.num_grids) ]
         self.gridReverseTree[0] = -1
-        self.save_data(cPickle.dumps(pTree, protocol=-1), "/", "Tree")
-        self.save_data(na.array(self.gridReverseTree), "/", "ReverseTree")
-        self.save_data(self.gridLevels, "/", "Levels")
+        self.save_data(cPickle.dumps(pTree, protocol=-1), "/", "Tree", force=True)
+        self.save_data(na.array(self.gridReverseTree), "/", "ReverseTree", force=True)
+        self.save_data(self.gridLevels, "/", "Levels", force=True)
 
     @parallel_blocking_call
     def _populate_hierarchy(self):
@@ -881,12 +885,15 @@
             self.__setup_grid_tree()
         else:
             mylog.debug("Grabbing serialized tree data")
-            pTree = cPickle.loads(treeArray.value)
-            self.gridReverseTree = list(self.get_data("/","ReverseTree"))
-            self.gridTree = [ [ weakref.proxy(self.grids[i]) for i in pTree[j] ]
-                for j in range(self.num_grids) ]
-            self.gridLevels = self.get_data("/","Levels")[:]
-            mylog.debug("Grabbed")
+            try:
+                pTree = cPickle.loads(treeArray.value)
+                self.gridReverseTree = list(self.get_data("/","ReverseTree"))
+                self.gridTree = [ [ weakref.proxy(self.grids[i]) for i in pTree[j] ]
+                    for j in range(self.num_grids) ]
+                self.gridLevels = self.get_data("/","Levels")[:]
+                mylog.debug("Grabbed")
+            except EOFError:
+                self.__setup_grid_tree()
         for i,v in enumerate(self.gridReverseTree):
             # For multiple grids on the root level
             if v == -1: self.gridReverseTree[i] = None

Modified: trunk/yt/lagos/OutputTypes.py
==============================================================================
--- trunk/yt/lagos/OutputTypes.py	(original)
+++ trunk/yt/lagos/OutputTypes.py	Wed Jul 15 10:51:24 2009
@@ -84,10 +84,13 @@
         return self.basename
 
     def _hash(self):
-        import hashlib
         s = "%s;%s;%s" % (self.basename,
             self["InitialTime"], self["CurrentTimeIdentifier"])
-        return hashlib.md5(s).hexdigest()
+        try:
+            import hashlib
+            return hashlib.md5(s).hexdigest()
+        except ImportError:
+            return s.replace(";", "*")
 
     @classmethod
     def _is_valid(cls, *args, **kwargs):



More information about the yt-svn mailing list