Index: src/sas/sascalc/realspace/VolumeCanvas.py
===================================================================
--- src/sas/sascalc/realspace/VolumeCanvas.py	(revision d85c194ea2f78cb2b9b3de9c969e1b8ebea6b6d2)
+++ src/sas/sascalc/realspace/VolumeCanvas.py	(revision 6435594be830f5ce39be39bad902924f08910a97)
@@ -303,5 +303,5 @@
         self.shapecount += 1
 
-        #model changed, need to recalculate P(r)
+        # model changed, need to recalculate P(r)
         self._model_changed()
 
@@ -328,5 +328,5 @@
             id = "shape"+str(self.shapecount)
  
-        #shapeDesc = ShapeDescriptor(shape.lower())
+        # shapeDesc = ShapeDescriptor(shape.lower())
         if shape.lower() in shape_dict:
             shapeDesc = shape_dict[shape.lower()]()
@@ -335,5 +335,5 @@
             shapeDesc = PDBDescriptor(shape)
         else:
-            raise ValueError, "VolumeCanvas.add: Unknown shape %s" % shape
+            raise ValueError("VolumeCanvas.add: Unknown shape %s" % shape)
         
         return self.addObject(shapeDesc, id)
@@ -345,10 +345,10 @@
         """
 
-        if self.shapes.has_key(id):
+        if id in self.shapes:
             del self.shapes[id]
         else:
-            raise KeyError, "VolumeCanvas.delete: could not find shape ID"
-
-        #model changed, need to recalculate P(r)
+            raise KeyError("VolumeCanvas.delete: could not find shape ID")
+
+        # model changed, need to recalculate P(r)
         self._model_changed()
 
@@ -379,6 +379,6 @@
         # If a shape identifier was given, look the shape up
         # in the dictionary
-        if len(toks)>1:
-            if toks[0] in self.shapes.keys():
+        if len(toks):
+            if toks[0] in self.shapes:
                 # The shape was found, now look for the parameter
                 if toks[1] in self.shapes[toks[0]].params:
@@ -387,7 +387,7 @@
                     self._model_changed()
                 else:
-                    raise ValueError, "Could not find parameter %s" % name
+                    raise ValueError("Could not find parameter %s" % name)
             else:
-                raise ValueError, "Could not find shape %s" % toks[0]
+                raise ValueError("Could not find shape %s" % toks[0])
         
         else:
@@ -410,13 +410,11 @@
         if len(toks) == 1:
             try:
-                self.params.has_key(toks[0])
+                value = self.params[toks[0]]
             except KeyError:
-                raise ValueError, \
-                    "VolumeCanvas.getParam: Could not find %s" % name
-
-            value = self.params[toks[0]]
+                raise ValueError("VolumeCanvas.getParam: Could not find"
+                                 " %s" % name)
             if isinstance(value, ShapeDescriptor):
-                raise ValueError, \
-                    "VolumeCanvas.getParam: Cannot get parameter value." 
+                raise ValueError("VolumeCanvas.getParam: Cannot get parameter"
+                                 " value.")
             else:
                 return value
@@ -424,24 +422,19 @@
         elif len(toks) == 2:
             try:
-                self.shapes.has_key(toks[0])
+                shapeinstance = self.shapes[toks[0]]
             except KeyError:
-                raise ValueError, \
-                    "VolumeCanvas.getParam: Could not find %s" % name
-
-            shapeinstance = self.shapes[toks[0]]
-
-            try:
-                shapeinstance.params.has_key(toks[1])
-            except KeyError:
-                raise ValueError, \
-                    "VolumeCanvas.getParam: Could not find %s" % name
+                raise ValueError("VolumeCanvas.getParam: Could not find "
+                                 "%s" % name)
+
+            if not toks[1] in shapeinstance.params:
+                raise ValueError("VolumeCanvas.getParam: Could not find "
+                                 "%s" % name)
 
             return shapeinstance.params[toks[1]]
 
         else:
-            raise ValueError, \
-                "VolumeCanvas.getParam: Could not find %s" % name
-            
-    def getParamList(self, shapeid = None):
+            raise ValueError("VolumeCanvas.getParam: Could not find %s" % name)
+            
+    def getParamList(self, shapeid=None):
         """
 	       return a full list of all available parameters from 
@@ -455,26 +448,22 @@
 
         param_list = []
-        if shapeid == None:        
-            for key1 in self.params.keys():
+        if shapeid is None:
+            for key1 in self.params:
                 #value1 = self.params[key1]
                 param_list.append(key1)
-            for key2 in self.shapes.keys():
+            for key2 in self.shapes:
                 value2 = self.shapes[key2]
                 header = key2 + '.'
-                for key3 in value2.params.keys():   
+                for key3 in value2.params:
                     fullname = header + key3                 
                     param_list.append(fullname)
      
         else:
-            try:
-                self.shapes.has_key(shapeid)
-            except KeyError:
-                raise ValueError, \
-                    "VolumeCanvas: getParamList: Could not find %s" % shapeid
+            if not shapeid in self.shapes:
+                raise ValueError("VolumeCanvas: getParamList: Could not find "
+                                 "%s" % shapeid)
+
             header = shapeid + '.'
-            param_list = self.shapes[shapeid].params.keys()  
-            for i in range(len(param_list)):
-                param_list[i] = header + param_list[i]
-
+            param_list = [header + param for param in self.shapes[shapeid].params]
         return param_list
 
@@ -490,5 +479,5 @@
             @param shapeDesc: shape description
         """
-        #Create the object model
+        # Create the object model
         shapeDesc.create()
                     
@@ -605,5 +594,5 @@
         # type we recognize
         else:
-            raise ValueError, "run(q): bad type for q"
+            raise ValueError("run(q): bad type for q")
     
     def runXY(self, q = 0):
@@ -625,5 +614,5 @@
         # type we recognize
         else:
-            raise ValueError, "runXY(q): bad type for q"
+            raise ValueError("runXY(q): bad type for q")
     
     def _create_modelObject(self):
Index: src/sas/sasgui/perspectives/pr/explore_dialog.py
===================================================================
--- src/sas/sasgui/perspectives/pr/explore_dialog.py	(revision 463e7ffce130ae386f93cd18b87a1120743e88b5)
+++ src/sas/sasgui/perspectives/pr/explore_dialog.py	(revision f3bf622b821c651bb6e946100b07e15cd59331fe)
@@ -269,5 +269,5 @@
         # Note: by design, the output type should always be part of the
         #       results object.
-        if self.results.outputs.has_key(output_type):
+        if output_type in self.results.outputs:
             self.plotpanel.plot.x = self.results.d_max
             self.plotpanel.plot.y = self.results.outputs[output_type][2]
Index: src/sas/sasgui/perspectives/pr/pr.py
===================================================================
--- src/sas/sasgui/perspectives/pr/pr.py	(revision c1d5aeab1ee75d2bf50cd73195f34c011918657d)
+++ src/sas/sasgui/perspectives/pr/pr.py	(revision c1d5aeab1ee75d2bf50cd73195f34c011918657d)
@@ -329,5 +329,5 @@
 
         # If we have a group ID, use it
-        if pr.info.has_key("plot_group_id"):
+        if 'plot_group_id' in pr.info:
             new_plot.group_id = pr.info["plot_group_id"]
         new_plot.id = IQ_FIT_LABEL
@@ -348,5 +348,5 @@
                 except:
                     err[i] = 1.0
-                    print "Error getting error", value, x[i]
+                    print("Error getting error", value, x[i])
 
             new_plot = Data1D(x, y)
@@ -356,5 +356,5 @@
             new_plot.yaxis("\\rm{Intensity} ", "cm^{-1}")
             # If we have a group ID, use it
-            if pr.info.has_key("plot_group_id"):
+            if 'plot_group_id' in pr.info:
                 new_plot.group_id = pr.info["plot_group_id"]
             new_plot.id = IQ_SMEARED_LABEL
