# HG changeset patch # User Matthew Turk # Date 1247680284 14400 # Branch trunk # Node ID db428cad7fb72268daeed2a89e28ef1f4d1642aa # Parent f157b1a713d1f6fd5e2fd6781ed133f248f5ffab [svn r1373] 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. diff -r f157b1a713d1f6fd5e2fd6781ed133f248f5ffab -r db428cad7fb72268daeed2a89e28ef1f4d1642aa yt/lagos/HierarchyType.py --- a/yt/lagos/HierarchyType.py Tue Jul 14 20:48:50 2009 -0400 +++ b/yt/lagos/HierarchyType.py Wed Jul 15 13:51:24 2009 -0400 @@ -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 diff -r f157b1a713d1f6fd5e2fd6781ed133f248f5ffab -r db428cad7fb72268daeed2a89e28ef1f4d1642aa yt/lagos/OutputTypes.py --- a/yt/lagos/OutputTypes.py Tue Jul 14 20:48:50 2009 -0400 +++ b/yt/lagos/OutputTypes.py Wed Jul 15 13:51:24 2009 -0400 @@ -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):