Index: xdmf-3.0+git20160803/CMake/setup_install_paths.py
===================================================================
--- xdmf-3.0+git20160803.orig/CMake/setup_install_paths.py
+++ xdmf-3.0+git20160803/CMake/setup_install_paths.py
@@ -12,7 +12,7 @@ of binary modules (.so or .dll).
 Written by David Gobbi, Feb 25, 2006.
 """
 
-
+from __future__ import print_function
 import string
 import sys
 import os
@@ -134,5 +134,5 @@ def get_install_path(command, *args):
 
 
 if __name__ == "__main__":
-    print apply(get_install_path, sys.argv[1:])
+    print (apply(get_install_path, sys.argv[1:]))
     
Index: xdmf-3.0+git20160803/Examples/Python/PipeView.py
===================================================================
--- xdmf-3.0+git20160803.orig/Examples/Python/PipeView.py
+++ xdmf-3.0+git20160803/Examples/Python/PipeView.py
@@ -24,19 +24,24 @@
 #/*                                                                 */
 #/*******************************************************************/
 
+from __future__ import print_function
 import getopt
 import sys
 import string
 
 
-print 'Loading Xdmf'
+print ('Loading Xdmf')
 import Xdmf
-print 'Loading vtk'
+print ('Loading vtk')
 from vtk import *
 from libvtkXdmfPython import *
 import vtkRenderWidget
 
-import Tkinter
+try:
+        import tkinter
+except:
+        #python2
+        import Tkinter as tkinter
 # from vtkPipeline import *
 import vtkPipeline.vtkPipeline
 
@@ -57,7 +62,7 @@ class ViewAll:
 		sys.exit()
 
 	def SetUpPipeline( self, Ren ) :
-		root = Tkinter.Tk()
+		root = tkinter.Tk()
 		root.title("XDMF Viewer")
 		wid = vtkRenderWidget.vtkTkRenderWidget (root, width=500, height=500)
 		wid.pack (expand='true', fill='both')
@@ -73,7 +78,7 @@ class ViewAll:
 		root.mainloop ()
 
 	def View ( self, FileName ):
-		print 'Parsing ' + FileName
+		print ('Parsing ' + FileName)
 
 		if( self.EndGrid <= 0 ) :
 			self.FindGrids( FileName )
@@ -96,7 +101,7 @@ class ViewAll:
 			Index = GridIndex - self.StartGrid
 			if Index < len( self.Attributes ) :
 				AttrIndex = self.Attributes[ Index ]
-				print 'Setting Attribute %d On' % AttrIndex
+				print ('Setting Attribute %d On' % AttrIndex)
 				Reader.SetAttributeStatusOn( AttrIndex )
 			
 	
@@ -111,25 +116,25 @@ class ViewAll:
 			# if necessary
 			Gridptr = Reader.GetXdmfGridHandle()
 			Grid = Xdmf.HandleToXdmfGrid( Gridptr )
-			print 'Grid %d has %d ' % (GridIndex, Grid.GetNumberOfElements()) + \
-				Grid.GetTopologyTypeAsString()
+			print ('Grid %d has %d ' % (GridIndex, Grid.GetNumberOfElements()) + \
+				Grid.GetTopologyTypeAsString())
 			Nattr = Grid.GetNumberOfAttributes()
-			print '<XdmfGrid> has %d Attributes' % Nattr
+			print ('<XdmfGrid> has %d Attributes' % Nattr)
 			for i in range( Nattr ) :
 				Attribute = Grid.GetAttribute( i )
-				print '\tAttribute #%d' % i
-				print '\t\tName: ' + Attribute.GetName()
-				print '\t\tCenter: ' + Attribute.GetAttributeCenterAsString()
-				print '\t\tType: ' + Attribute.GetAttributeTypeAsString()
+				print ('\tAttribute #%d' % i)
+				print ('\t\tName: ' + Attribute.GetName())
+				print ('\t\tCenter: ' + Attribute.GetAttributeCenterAsString())
+				print ('\t\tType: ' + Attribute.GetAttributeTypeAsString())
 	
 			# List All of the Available Arrays
 			PointData = Reader.GetOutput().GetPointData()
 			for i in range( PointData.GetNumberOfArrays() ) :
 				Array = PointData.GetArray( i )
-				print '\tArray #%d ' % i
-				print '\t\tName: ' + Array.GetName()
+				print ('\tArray #%d ' % i)
+				print ('\t\tName: ' + Array.GetName())
 				Min, Max = Array.GetRange()
-				print '\t\tRange: %f -> %f' % (Min, Max)
+				print ('\t\tRange: %f -> %f' % (Min, Max))
 	
 	
 	
@@ -166,12 +171,12 @@ class ViewAll:
 		# iRen.Start()
 
 	def usage (self) :
-		print 'Options : --start=Grid# --end=Grid# --attribute=Index --attribute=Index ... File.xmf'
+		print ('Options : --start=Grid# --end=Grid# --attribute=Index --attribute=Index ... File.xmf')
 		sys.exit(0)
 
 	def Options( self, opts ) :
 		argc = len( opts )
-		print '%d Args = ' % argc + str( opts )
+		print ('%d Args = ' % argc + str( opts ))
 		try :
 			opts, args = getopt.getopt(opts,
 					"aseh:",
@@ -180,8 +185,8 @@ class ViewAll:
 		except getopt.GetoptError:
 			self.usage()
 			sys.exit(2)
-		print 'opts = ' + str( opts )
-		print 'args = ' + str( args )
+		print ('opts = ' + str( opts ))
+		print ('args = ' + str( args ))
 		output = None
 		for o, a in opts:
 			if o in ("-h", "--help"):
@@ -192,11 +197,11 @@ class ViewAll:
 			if o in ("-e", "--end"):
 				self.EndGrid = int(a)
 			if o in ("-a", "--attribute"):
-				print 'Appending ' + a
+				print ('Appending ' + a)
 				self.Attributes.append( int(a) )
-		print 'StartGrid %d' % self.StartGrid
-		print 'EndGrid %d' % self.EndGrid
-		print 'Attributes = ' + str( self.Attributes )
+		print ('StartGrid %d' % self.StartGrid)
+		print ('EndGrid %d' % self.EndGrid)
+		print ('Attributes = ' + str( self.Attributes ))
 if __name__ == '__main__' :
 	argc = len( sys.argv )
 	viewer = ViewAll()
Index: xdmf-3.0+git20160803/Examples/Python/XVis.py
===================================================================
--- xdmf-3.0+git20160803.orig/Examples/Python/XVis.py
+++ xdmf-3.0+git20160803/Examples/Python/XVis.py
@@ -2,6 +2,7 @@
 
 """XVis for Python"""
 
+from __future__ import print_function
 import sys
 import getopt
 import Xdmf
@@ -31,7 +32,7 @@ class XVis :
 		PickMeasure = self.PickMeasure
 		PickViewFile = self.PickViewFile
 		if Picker.GetCellId < 0 :
-			print 'No Cell Picked'
+			print ('No Cell Picked')
 			return
 		else :
 			SelectionPoint = Picker.GetSelectionPoint()
@@ -39,30 +40,30 @@ class XVis :
 			x = PickPosition[0]
 			y = PickPosition[1]
 			z = PickPosition[2]
-			print 'X Y Z : %f %f %f' % ( x, y, z )
+			print ('X Y Z : %f %f %f' % ( x, y, z ))
 			dx = x - self.LastX
 			dy = y - self.LastY
 			dz = z - self.LastZ
 			Length = math.sqrt( ( dx * dx ) + ( dy * dy ) + ( dz * dz))
-			print 'Dx Dy Dz : %f %f %f' % ( dx, dy, dz)
-			print 'Length : %f'  % Length
+			print ('Dx Dy Dz : %f %f %f' % ( dx, dy, dz))
+			print ('Length : %f'  % Length)
 			self.LastX = x
 			self.LastY = y
 			self.LastZ = z
 		if PickViewFile :
-			print 'Writing View in ' + PickViewFile
+			print ('Writing View in ' + PickViewFile)
 			Window = Picker.GetRenderer().GetRenderWindow()
 			WindowSize = Window.GetSize()
-			# print 'Window Size = ' + str( WindowSize )
+			# print ('Window Size = ' + str( WindowSize ))
 			WindowPosition = Window.GetPosition()
-			# print 'Window Position = ' + str( WindowPosition )
+			# print ('Window Position = ' + str( WindowPosition ))
 			Camera = Picker.GetRenderer().GetActiveCamera()
 			Position = Camera.GetPosition()
-			# print 'Camera Position = ' + str( Position )
+			# print ('Camera Position = ' + str( Position ))
 			FocalPoint = Camera.GetFocalPoint()
-			# print 'Camera FocalPoint = ' + str( FocalPoint )
+			# print ('Camera FocalPoint = ' + str( FocalPoint ))
 			ViewUp = Camera.GetViewUp()
-			# print 'Camera ViewUp = ' + str( ViewUp )
+			# print ('Camera ViewUp = ' + str( ViewUp ))
 			ViewFd = open( PickViewFile, "w" )
 			ViewFd.write('<!--\n')	
 			ViewFd.write('<Reference Target="RenWin" Method="SetPosition" Args="%d, %d"/>\n' % ( WindowPosition[0], WindowPosition[1]))
@@ -107,7 +108,7 @@ class XVis :
 		DOM = self.DOM
 		Reflector = self.Reflector
 		Type = DOM.Get( Node, "NodeType" )
-		# print 'Visit ' + Type
+		# print ('Visit ' + Type)
 		if Type == "Xvis" :
 			return( 1 )
 		elif Type == "Ndgm" :
@@ -116,7 +117,7 @@ class XVis :
 				self.NdgmCheck.SetModeToClient()
 				Status = self.NdgmCheck.Open()
 				if Status <= 0 :
-					print "Can't Connect to Ndgm"
+					print ("Can't Connect to Ndgm")
 					return None
 			Ndgm = self.NdgmCheck
 			BarrierNumber = DOM.Get( Node, "Barrier" )
@@ -131,9 +132,9 @@ class XVis :
 				DOM.Set(Node, "Value", str( CurrentValue )  )
 			else :
 				BarrierValue = int( BarrierValue )
-			# print 'NDGM Current Value od %d = %d' % ( BarrierNumber, CurrentValue)
+			# print ('NDGM Current Value od %d = %d' % ( BarrierNumber, CurrentValue))
 			if CurrentValue != BarrierValue :
-				print 'Barrier Update #%d' % CurrentValue
+				print ('Barrier Update #%d' % CurrentValue)
 				for i in range( DOM.GetNumberOfChildren( Node )) :
 					ChildNode = DOM.GetChild( i, Node )
 					ChildType = DOM.Get( ChildNode, "NodeType" )
@@ -165,16 +166,16 @@ class XVis :
 			TargetObject = Reflector.NameToObject( TargetName )
 			if (NewLine != None ) and (string.upper( NewLine ) == "FALSE") :
 				if TargetObject != None :
-					print str( TargetObject ) ,
+					print (str( TargetObject ) ,)
 				else :
 					# print "Target == None"
-					print TargetName ,
+					print (TargetName ,)
 			else :
 				if TargetObject != None :
-					print str( TargetObject )
+					print (str( TargetObject ))
 				else :
-					# print "Target == None"
-					print TargetName
+					# print ("Target == None")
+					print (TargetName)
 			return( TargetObject )
 		elif (Type == "Reference") or (Type == "Invoke") :
 			Name = DOM.Get( Node, "Name" )
@@ -188,7 +189,7 @@ class XVis :
 			if Method == None :
 				NewObject = TargetObject
 			else :
-				# print 'Calling Method ' + Method + ' on ' + str( TargetObject )
+				# print ('Calling Method ' + Method + ' on ' + str( TargetObject ))
 				NewObject = Reflector.CallMethod( TargetObject, Method, Args )
 			# Name == None is OK
 			Reflector.RegisterObject( NewObject, Name )
@@ -209,12 +210,12 @@ class XVis :
 					Type = 'MesaRenderer'
 				if Type == 'RenderWindow' :
 					Type = 'XMesaRenderWindow'
-			# print 'Creating a ' + Type
+			# print ('Creating a ' + Type)
 			NewObject = Reflector.CreateObject( 'vtk' + Type, Name)
 			if NewObject == None :
 				NewObject = Reflector.CreateObject( Type, Name)
 				if NewObject == None :
-					# print "Can't Create " + Type
+					# print ("Can't Create " + Type)
 					return(None)
 			if (Type == 'XdmfRenderWindowInteractor') or (Type == 'RenderWindowInteractor') :
 				# Create a Picker
@@ -229,7 +230,7 @@ class XVis :
 				pass
 			else :
 				Value = DOM.Get( Node, Attribute )
-				# print 'Try ' + Attribute + ' = ' + Value
+				# print ('Try ' + Attribute + ' = ' + Value)
 				Status = Reflector.CallMethod( NewObject, Attribute, Value)
 				if Status == None :
 					Status = Reflector.CallMethod( NewObject, 'Set' + Attribute, Value)
@@ -251,22 +252,22 @@ class XVis :
 				ChildType = 'Mapper'
 			self.ParentObject = Parent
 			Child = self.Traverse( ChildNode )
-			# print 'Child = '  + str( Child )
+			# print ('Child = '  + str( Child ))
 			if ( Child != None ) and (ChildType != 'Reference')  :
 				# Try Add
-				# print '... ChildType = ' + str( ChildType )
-				# print '.. Child = ' + str( Child )
-				# print '... try ' + 'Add' + ChildType
+				# print ('... ChildType = ' + str( ChildType ))
+				# print ('.. Child = ' + str( Child ))
+				# print ('... try ' + 'Add' + ChildType)
 				Attach = DOM.Get( ChildNode, "AttachAs" )
 				if Attach == None :
 					if hasattr( Parent, 'Add' + ChildType ) :
-						# print 'Calling Add' + ChildType
+						# print ('Calling Add' + ChildType)
 						eval('Parent.Add' + ChildType + '( Child )')
 					elif hasattr( Parent, 'Set' + ChildType ) :
-						# print 'Calling Set' + ChildType
+						# print ('Calling Set' + ChildType)
 						eval('Parent.Set' + ChildType + '( Child )')
 					elif hasattr( Child, 'GetOutput' ) :
-						# print 'Calling SetInput'
+						# print ('Calling SetInput')
 						if hasattr( Parent, 'SetInput') :
 							Parent.SetInput( Child.GetOutput())
 				else :
@@ -281,8 +282,8 @@ class XVis :
 		return( Parent )
 
 	def usage ( self, argv ) :
-		print 'Usage ' + argv[0] + ' ' + \
-			str( self.XVisOptions )
+		print ('Usage ' + argv[0] + ' ' + \
+			str( self.XVisOptions ))
 
 	XVisOptions = ["help", "loop", "mesa", "replace=", "xml=", "input=" ]
 
@@ -296,8 +297,8 @@ class XVis :
 		except getopt.GetoptError:
 			self.usage(argv)
 			return(-1)
-		# print 'opts = ' + str( opts )
-		# print 'args = ' + str( args )
+		# print ('opts = ' + str( opts ))
+		# print ('args = ' + str( args ))
 
 		if len(args) != 0 :
 			self.usage(argv)
@@ -328,13 +329,13 @@ class XVis :
 				self.defines[ Key ] = Value
 				
 		# self.DOM.SetInputFileName( a )
-		for key in self.defines.keys() :
+		for key in list(self.defines.keys()) :
 			self.txt = string.replace( self.txt, key, self.defines[ key ] )
-		# print 'txt = ' + self.txt
+		# print ('txt = ' + self.txt)
 		self.DOM.Parse( self.txt )
 		Node = self.DOM.FindElement( 'Xvis' )
 		if Node == None :
-			print "Can't Find XVis Node"
+			print ("Can't Find XVis Node")
 			return( -1 )
 		self.Traverse( Node )
 		return(0)
Index: xdmf-3.0+git20160803/Examples/Python/XReflector.py
===================================================================
--- xdmf-3.0+git20160803.orig/Examples/Python/XReflector.py
+++ xdmf-3.0+git20160803/Examples/Python/XReflector.py
@@ -70,12 +70,12 @@ class XReflector :
 
 	def NameToObject( self, Name ) :
 
-		if self.Lookup.has_key( Name ) :
+		if Name in self.Lookup :
 			return( self.Lookup[ Name ] )
 		return( None )
 
 	def ObjectToName ( self, Object ) :
-		for Name in self.Lookup.keys() :
+		for Name in list(self.Lookup.keys()) :
 			if self.Lookup[ Name ] == Object :
 				return( Name )
 		return( None )
Index: xdmf-3.0+git20160803/Examples/Python/SetsMaps2.py
===================================================================
--- xdmf-3.0+git20160803.orig/Examples/Python/SetsMaps2.py
+++ xdmf-3.0+git20160803/Examples/Python/SetsMaps2.py
@@ -1,5 +1,6 @@
 #!/bin/env python
 
+from __future__ import print_function
 from Xdmf import *
 
 txt = """<?xml version="1.0" ?>
@@ -135,42 +136,42 @@ g.UpdateInformation()
 g.Update()
 
 
-print 'Grid Sets :', g.GetNumberOfSets()
+print ('Grid Sets :', g.GetNumberOfSets())
 for i in range(g.GetNumberOfSets()) :
     s = g.GetSets(i)
-    print 'Set #', i
-    print '     Type: ', s.GetSetTypeAsString()
-    print '     Size: ', s.GetSize()
+    print ('Set #', i)
+    print ('     Type: ', s.GetSetTypeAsString())
+    print ('     Size: ', s.GetSize())
     s.Update()
     ids = s.GetIds()
-    print '     # Ids : ', ids.GetNumberOfElements()
-    print '     Ids : ', ids.GetValues()
+    print ('     # Ids : ', ids.GetNumberOfElements())
+    print ('     Ids : ', ids.GetValues())
     cellids = s.GetCellIds()
-    print '     # Cell Ids : ', cellids.GetNumberOfElements()
-    print '     Cell Ids : ', cellids.GetValues()
+    print ('     # Cell Ids : ', cellids.GetNumberOfElements())
+    print ('     Cell Ids : ', cellids.GetValues())
     faceids = s.GetFaceIds()
-    print '     # Face Ids : ', faceids.GetNumberOfElements()
-    print '     Face Ids : ', faceids.GetValues()
-    print '     #Attributes: ', s.GetNumberOfAttributes()
+    print ('     # Face Ids : ', faceids.GetNumberOfElements())
+    print ('     Face Ids : ', faceids.GetValues())
+    print ('     #Attributes: ', s.GetNumberOfAttributes())
     for j in range(s.GetNumberOfAttributes()) :
         a = s.GetAttribute(j)
-        print '         Attribute #', j
-        print '         Attribute values: ', a.GetAttributeTypeAsString()
+        print ('         Attribute #', j)
+        print ('         Attribute values: ', a.GetAttributeTypeAsString())
         a.Update()
         v = a.GetValues()
-        print '         Attribute type: ', v.GetValues()
-    print '     #Maps: ', s.GetNumberOfMaps()
+        print ('         Attribute type: ', v.GetValues())
+    print ('     #Maps: ', s.GetNumberOfMaps())
     for j in range(s.GetNumberOfMaps()) :
         m = s.GetMap(j)
-        print '         Map #', j
-        print '         Map Type : ', m.GetMapTypeAsString()
-        print '         Item Length :', m.GetItemLength()
-        print '         Map Length :', m.GetMapLength()
+        print ('         Map #', j)
+        print ('         Map Type : ', m.GetMapTypeAsString())
+        print ('         Item Length :', m.GetItemLength())
+        print ('         Map Length :', m.GetMapLength())
         m.Update()
         ival  = m.GetMapIndex()
-        print '         Map Index: ', ival.GetValues()
+        print ('         Map Index: ', ival.GetValues())
         v = m.GetMapData()
-        print '         all Map Values : ', v.GetValues()
+        print ('         all Map Values : ', v.GetValues())
         l = m.GetMapLength()
         il = m.GetItemLength()
         for k in range(l) :
@@ -180,7 +181,7 @@ for i in range(g.GetNumberOfSets()) :
             imapvals = tuple(int(x) for x in mapvals.split())
             for ii in range(len(imapvals) / il) :
                 index = ii * il
-                print '              Map Vals[', k, '] = ', imapvals[index:index+il]
+                print ('              Map Vals[', k, '] = ', imapvals[index:index+il])
 
 
 ns = XdmfSet()
Index: xdmf-3.0+git20160803/Examples/Python/SetsMaps.py
===================================================================
--- xdmf-3.0+git20160803.orig/Examples/Python/SetsMaps.py
+++ xdmf-3.0+git20160803/Examples/Python/SetsMaps.py
@@ -1,5 +1,7 @@
 #!/bin/env python
 
+
+from __future__ import print_function
 from Xdmf import *
 
 txt = """<?xml version="1.0" ?>
@@ -113,30 +115,30 @@ g.UpdateInformation()
 g.Update()
 
 
-print 'Grid Sets :', g.GetNumberOfSets()
+print ('Grid Sets :', g.GetNumberOfSets())
 for i in range(g.GetNumberOfSets()) :
     s = g.GetSets(i)
-    print 'Set #', i
-    print '     Type: ', s.GetSetTypeAsString()
-    print '     Size: ', s.GetSize()
+    print ('Set #', i)
+    print ('     Type: ', s.GetSetTypeAsString())
+    print ('     Size: ', s.GetSize())
     s.Update()
     ids = s.GetIds()
-    print '     # Ids : ', ids.GetNumberOfElements()
-    print '     Ids : ', ids.GetValues()
+    print ('     # Ids : ', ids.GetNumberOfElements())
+    print ('     Ids : ', ids.GetValues())
     cellids = s.GetCellIds()
-    print '     # Cell Ids : ', cellids.GetNumberOfElements()
-    print '     Cell Ids : ', cellids.GetValues()
+    print ('     # Cell Ids : ', cellids.GetNumberOfElements())
+    print ('     Cell Ids : ', cellids.GetValues())
     faceids = s.GetFaceIds()
-    print '     # Face Ids : ', faceids.GetNumberOfElements()
-    print '     Face Ids : ', faceids.GetValues()
-    print '     #Attributes: ', s.GetNumberOfAttributes()
+    print ('     # Face Ids : ', faceids.GetNumberOfElements())
+    print ('     Face Ids : ', faceids.GetValues())
+    print ('     #Attributes: ', s.GetNumberOfAttributes())
     for j in range(s.GetNumberOfAttributes()) :
         a = s.GetAttribute(j)
-        print '         Attribute #', j
-        print '         Attribute values: ', a.GetAttributeTypeAsString()
+        print ('         Attribute #', j)
+        print ('         Attribute values: ', a.GetAttributeTypeAsString())
         a.Update()
         v = a.GetValues()
-        print '         Attribute type: ', v.GetValues()
+        print ('         Attribute type: ', v.GetValues())
 
 
 ns = XdmfSet()
@@ -149,5 +151,5 @@ a.SetValues(0, "100 200 300 400")
 ns.SetIds(a)
 g.Insert(ns)
 ns.Build()
-print d.Serialize()
+print (d.Serialize())
 
Index: xdmf-3.0+git20160803/Examples/Python/ViewAll.py
===================================================================
--- xdmf-3.0+git20160803.orig/Examples/Python/ViewAll.py
+++ xdmf-3.0+git20160803/Examples/Python/ViewAll.py
@@ -24,13 +24,14 @@
 #/*                                                                 */
 #/*******************************************************************/
 
+from __future__ import print_function
 import getopt
 import sys
 import string
 
-print 'Loading Xdmf'
+print ('Loading Xdmf')
 import Xdmf
-print 'Loading vtk'
+print ('Loading vtk')
 from vtk import *
 from libvtkXdmfPython import *
 
@@ -48,7 +49,7 @@ class ViewAll:
 		self.NumberOfGrids = DOM.FindNumberOfElements( 'Grid' )
 
 	def View ( self, FileName ):
-		print 'Parsing ' + FileName
+		print ('Parsing ' + FileName)
 
 		if( self.EndGrid <= 0 ) :
 			self.FindGrids( FileName )
@@ -71,7 +72,7 @@ class ViewAll:
 			Index = GridIndex - self.StartGrid
 			if Index < len( self.Attributes ) :
 				AttrIndex = self.Attributes[ Index ]
-				print 'Setting Attribute %d On' % AttrIndex
+				print ('Setting Attribute %d On' % AttrIndex)
 				Reader.SetAttributeStatusOn( AttrIndex )
 			
 	
@@ -86,25 +87,25 @@ class ViewAll:
 			# if necessary
 			Gridptr = Reader.GetXdmfGridHandle()
 			Grid = Xdmf.HandleToXdmfGrid( Gridptr )
-			print 'Grid %d has %d ' % (GridIndex, Grid.GetNumberOfElements()) + \
-				Grid.GetTopologyTypeAsString()
+			print ('Grid %d has %d ' % (GridIndex, Grid.GetNumberOfElements()) + \
+				Grid.GetTopologyTypeAsString())
 			Nattr = Grid.GetNumberOfAttributes()
-			print '<XdmfGrid> has %d Attributes' % Nattr
+			print ('<XdmfGrid> has %d Attributes' % Nattr)
 			for i in range( Nattr ) :
 				Attribute = Grid.GetAttribute( i )
-				print '\tAttribute #%d' % i
-				print '\t\tName: ' + Attribute.GetName()
-				print '\t\tCenter: ' + Attribute.GetAttributeCenterAsString()
-				print '\t\tType: ' + Attribute.GetAttributeTypeAsString()
+				print ('\tAttribute #%d' % i)
+				print ('\t\tName: ' + Attribute.GetName())
+				print ('\t\tCenter: ' + Attribute.GetAttributeCenterAsString())
+				print ('\t\tType: ' + Attribute.GetAttributeTypeAsString())
 	
 			# List All of the Available Arrays
 			PointData = Reader.GetOutput().GetPointData()
 			for i in range( PointData.GetNumberOfArrays() ) :
 				Array = PointData.GetArray( i )
-				print '\tArray #%d ' % i
-				print '\t\tName: ' + Array.GetName()
+				print ('\tArray #%d ' % i)
+				print ('\t\tName: ' + Array.GetName())
 				Min, Max = Array.GetRange()
-				print '\t\tRange: %f -> %f' % (Min, Max)
+				print ('\t\tRange: %f -> %f' % (Min, Max))
 	
 	
 	
@@ -140,12 +141,12 @@ class ViewAll:
 		iRen.Start()
 
 	def usage (self) :
-		print 'Options : --start=Grid# --end=Grid# --attribute=Index --attribute=Index ... File.xmf'
+		print ('Options : --start=Grid# --end=Grid# --attribute=Index --attribute=Index ... File.xmf')
 		sys.exit(0)
 
 	def Options( self, opts ) :
 		argc = len( opts )
-		print '%d Args = ' % argc + str( opts )
+		print ('%d Args = ' % argc + str( opts ))
 		try :
 			opts, args = getopt.getopt(opts,
 					"aseh:",
@@ -154,8 +155,8 @@ class ViewAll:
 		except getopt.GetoptError:
 			self.usage()
 			sys.exit(2)
-		print 'opts = ' + str( opts )
-		print 'args = ' + str( args )
+		print ('opts = ' + str( opts ))
+		print ('args = ' + str( args ))
 		output = None
 		for o, a in opts:
 			if o in ("-h", "--help"):
@@ -166,11 +167,11 @@ class ViewAll:
 			if o in ("-e", "--end"):
 				self.EndGrid = int(a)
 			if o in ("-a", "--attribute"):
-				print 'Appending ' + a
+				print ('Appending ' + a)
 				self.Attributes.append( int(a) )
-		print 'StartGrid %d' % self.StartGrid
-		print 'EndGrid %d' % self.EndGrid
-		print 'Attributes = ' + str( self.Attributes )
+		print ('StartGrid %d' % self.StartGrid)
+		print ('EndGrid %d' % self.EndGrid)
+		print ('Attributes = ' + str( self.Attributes ))
 if __name__ == '__main__' :
 	argc = len( sys.argv )
 	viewer = ViewAll()
Index: xdmf-3.0+git20160803/Examples/Python/NdgmCp.py
===================================================================
--- xdmf-3.0+git20160803.orig/Examples/Python/NdgmCp.py
+++ xdmf-3.0+git20160803/Examples/Python/NdgmCp.py
@@ -24,6 +24,7 @@
 #/*                                                                 */
 #/*******************************************************************/
 
+from __future__ import print_function
 import os
 import sys
 import string
@@ -72,18 +73,18 @@ class NdgmCp :
 					self.FromStart = int( entry[1] )
 					self.FromEnd = int( entry[2] )
 					self.FromLength = self.FromEnd - self.FromStart
-		print 'Source Data is %d bytes' % self.FromLength
+		print ('Source Data is %d bytes' % self.FromLength)
 
 	def Put( self ) :
 		if self.ToIsFile :
 			if self.FromIsFile :
 				Cmd = 'cp ' + self.From + ' ' + self.To
-				print Cmd
+				print (Cmd)
 				os.system( Cmd )
 			else :
 				From = str(self.FromStart) + ':' + str(self.FromEnd)
 				Cmd = 'ice ndgm_cat ' + From + ' ' + self.To
-				print Cmd
+				print (Cmd)
 				os.system( Cmd )
 		else :
 			Found = 0
@@ -114,7 +115,7 @@ class NdgmCp :
 			else :
 				From = str(self.FromStart) + ':' + str(self.FromEnd)
 			Cmd = 'ice ndgm_cat ' + From + ' ' + str( self.ToStart )
-			print Cmd
+			print (Cmd)
 			os.system( Cmd )
 
 if __name__ == '__main__' :
Index: xdmf-3.0+git20160803/Examples/Python/NdgmLs.py
===================================================================
--- xdmf-3.0+git20160803.orig/Examples/Python/NdgmLs.py
+++ xdmf-3.0+git20160803/Examples/Python/NdgmLs.py
@@ -24,7 +24,7 @@
 #/*                                                                 */
 #/*******************************************************************/
 
-
+from __future__ import print_function
 import sys
 import string
 import Xdmf
@@ -41,11 +41,11 @@ class NdgmLs :
 	def Ls( self ) :
 		status = self.Ndgm.Open()
 		if status <= 0 :
-			print "Can't Connect to NDGM Server on " + self.Ndgm.GetNdgmHost()
+			print ("Can't Connect to NDGM Server on " + self.Ndgm.GetNdgmHost())
 			return None
 		# Get the Length
 		Length = self.Ndgm.GetTotalLength()
-		# print 'NDGM on %s is %d bytes' % ( self.Ndgm.GetNdgmHost(), Length )
+		# print ('NDGM on %s is %d bytes' % ( self.Ndgm.GetNdgmHost(), Length ))
 		self.RawString = string.split( Xdmf.XdmfGetNdgmEntries() )
 		return self.RawString
 
@@ -82,7 +82,7 @@ if __name__ == '__main__' :
 	e = n.Format()
 	NumberOfEntries = len( e )
 	if NumberOfEntries < 1 :
-		print '-1 : No Entries in NDGM'
+		print ('-1 : No Entries in NDGM')
 	else :
 		for i in range( NumberOfEntries ) :
 			print '%2d : %s' % ( i, e[ i ])
Index: xdmf-3.0+git20160803/Examples/Python/FromOBJ.py
===================================================================
--- xdmf-3.0+git20160803.orig/Examples/Python/FromOBJ.py
+++ xdmf-3.0+git20160803/Examples/Python/FromOBJ.py
@@ -23,11 +23,12 @@
 #/*     for more information.                                       */
 #/*                                                                 */
 #/*******************************************************************/
+from __future__ import print_function
 import sys
 import string
 
 
-print 'Loading vtk'
+print ('Loading vtk')
 from libVTKCommonPython import *
 from libVTKGraphicsPython import *
 from libVTKImagingPython import *
@@ -35,7 +36,7 @@ from libVTKPatentedPython import *
 from libVTKContribPython import *
 from libVTKLocalPython import *
 
-print 'Loading Xdmf'
+print ('Loading Xdmf')
 import Xdmf
 
 
@@ -51,14 +52,14 @@ class FromOBJ :
 	def CreateXdmf( self ) :
 		ObjReader = vtkOBJReader()
 		ObjReader.SetFileName( self.FileName )
-		print 'Reading ' + self.FileName
+		print ('Reading ' + self.FileName)
 		ObjReader.Update()
 		TriFilter = vtkTriangleFilter()
 		TriFilter.SetInput( ObjReader.GetOutput() )
 		TriFilter.Update()
 		if self.Convert == 1 :
 			Points = TriFilter.GetOutput().GetPoints()
-			print 'Converting %d Points' % Points.GetNumberOfPoints()
+			print ('Converting %d Points' % Points.GetNumberOfPoints())
 			for i in range ( Points.GetNumberOfPoints() ) :
 				x, y, z = Points.GetPoint( i )
 				x = x * .0254
@@ -99,6 +100,6 @@ if __name__ == '__main__' :
 	FileName = sys.argv[ argc - 1 ]
 	fobj = FromOBJ( FileName )
 	if argc > 2 :
-		print 'Converting From inches'
+		print ('Converting From inches')
 		fobj.Convert = 1
 	fobj.CreateXdmf()
Index: xdmf-3.0+git20160803/Examples/Python/WriteCompressed.py
===================================================================
--- xdmf-3.0+git20160803.orig/Examples/Python/WriteCompressed.py
+++ xdmf-3.0+git20160803/Examples/Python/WriteCompressed.py
@@ -9,6 +9,7 @@
 # uses Compression for connectivity, geometry and attributes.
 #
 
+from __future__ import print_function
 from Xdmf import *
 
 BaseName = 'test20'
@@ -151,7 +152,7 @@ g.Insert(attr)
 
 # Update XML and Write Values to DataItems
 root.Build() # DataItems > 100 values are heavy
-print d.Serialize() # prints to stdout
+print (d.Serialize()) # prints to stdout
 
 d.Write( BaseName + r'.xmf') # write to file
 
Index: xdmf-3.0+git20160803/Examples/Python/WriteXdmf1.py
===================================================================
--- xdmf-3.0+git20160803.orig/Examples/Python/WriteXdmf1.py
+++ xdmf-3.0+git20160803/Examples/Python/WriteXdmf1.py
@@ -1,5 +1,6 @@
 #!/usr/bin/env python
 
+from __future__ import print_function
 from Xdmf import *
 
 # Example of How to Generate Xdmf
@@ -45,6 +46,6 @@ p.Generate(0.0, 1.0, 0, p.GetNumberOfEle
 g.Insert(attr)
 # Update XML and Write Values to DataItems
 root.Build() # DataItems > 100 values are heavy
-print d.Serialize() # prints to stdout 
+print (d.Serialize()) # prints to stdout 
 
 d.Write('SMesh.xmf') # write to file
Index: xdmf-3.0+git20160803/Examples/Python/XdmfArrays.py
===================================================================
--- xdmf-3.0+git20160803.orig/Examples/Python/XdmfArrays.py
+++ xdmf-3.0+git20160803/Examples/Python/XdmfArrays.py
@@ -1,5 +1,6 @@
 #!/bin/env python
 
+from __future__ import print_function
 from Xdmf import *
 
 def Expression(*args) :
@@ -21,18 +22,18 @@ if __name__ == '__main__' :
     a2.SetNumberType(XDMF_INT32_TYPE)
     a2.SetNumberOfElements(5)
     a2.Generate(2, 10)
-    print 'a1 Values = ', a1.GetValues()
-    print 'a1[2:10] = ' + Expression(a1 , '[ 2:10 ]').GetValues()
-    print 'a2 Values = ', a2.GetValues()
-    print 'a1[a2] = ' + Expression(a1 , '[', a2, ']').GetValues()
-    print 'a1 + a2 = ' + Expression(a1 , ' + ', a2).GetValues()
-    print 'a1 * a2 = ' + Expression(a1 , ' * ', a2).GetValues()
+    print ('a1 Values = ', a1.GetValues())
+    print ('a1[2:10] = ' + Expression(a1 , '[ 2:10 ]').GetValues())
+    print ('a2 Values = ', a2.GetValues())
+    print ('a1[a2] = ' + Expression(a1 , '[', a2, ']').GetValues())
+    print ('a1 + a2 = ' + Expression(a1 , ' + ', a2).GetValues())
+    print ('a1 * a2 = ' + Expression(a1 , ' * ', a2).GetValues())
     a2.SetNumberType(XDMF_FLOAT32_TYPE)
     a2.SetNumberOfElements(20)
     a2.Generate(21, 40)
-    print 'a2 Values = ', a2.GetValues()
-    print 'a1 , a2 (Interlace) = ' + Expression(a1 , ' , ', a2).GetValues()
-    print 'a1 , a2, a1 (Interlace) = ' + Expression(a1 , ' , ', a2, ' , ', a1).GetValues()
-    print 'a1 ; a2 (Concat) = ' + Expression(a1 , ' ; ', a2).GetValues()
-    print 'where(a1 > 10) = ' + Expression('Where( ', a1 , ' > 10)').GetValues()
-    print 'a2[where(a1 > 10)] = ' + Expression(a2, '[Where( ', a1 , ' > 10)]').GetValues()
+    print ('a2 Values = ', a2.GetValues())
+    print ('a1 , a2 (Interlace) = ' + Expression(a1 , ' , ', a2).GetValues())
+    print ('a1 , a2, a1 (Interlace) = ' + Expression(a1 , ' , ', a2, ' , ', a1).GetValues())
+    print ('a1 ; a2 (Concat) = ' + Expression(a1 , ' ; ', a2).GetValues())
+    print ('where(a1 > 10) = ' + Expression('Where( ', a1 , ' > 10)').GetValues())
+    print ('a2[where(a1 > 10)] = ' + Expression(a2, '[Where( ', a1 , ' > 10)]').GetValues())
Index: xdmf-3.0+git20160803/Examples/Python/XdmfDOMTest1.py
===================================================================
--- xdmf-3.0+git20160803.orig/Examples/Python/XdmfDOMTest1.py
+++ xdmf-3.0+git20160803/Examples/Python/XdmfDOMTest1.py
@@ -1,5 +1,6 @@
 #!/bin/env python
 
+from __future__ import print_function
 from Xdmf import *
 import time
 
@@ -22,64 +23,64 @@ XML += """</Domain>
 dom = XdmfDOM()
 dom.Parse(XML)
 dm = dom.FindElement('Domain')
-print 'dm = ', dm
-print 'Domain has %d Children' % dom.GetNumberOfChildren(dm)
-# print dom.Serialize(dm)
+print ('dm = ', dm)
+print ('Domain has %d Children' % dom.GetNumberOfChildren(dm))
+# print (dom.Serialize(dm))
 ng = dom.FindNumberOfElements('Grid', dm)
-print 'DOM has %d Grids' % ng
-print 'Timing Access'
+print ('DOM has %d Grids' % ng)
+print ('Timing Access')
 start = now = time.time()
 for i in range(ng) :
     g = dom.FindElement('Grid', i, dm)
     # Name = dom.GetAttribute(g, 'Name')
     Name = dom.GetAttribute(g, 'Name')
     if (Name != "GridNumber%04d" % (i + 1)) :
-        print 'Error in Name'
+        print ('Error in Name')
 now = time.time()
-print 'Accessed %d Grid Attributes in %g Seconds' % (ng, now - start)
+print ('Accessed %d Grid Attributes in %g Seconds' % (ng, now - start))
 g = dom.GetChild(ng / 2, dm)
-print 'Middle Node = ', dom.GetAttribute(g, 'Name')
+print ('Middle Node = ', dom.GetAttribute(g, 'Name'))
 g = dom.FindElement('Grid', ng / 2, dm)
-print 'Middle Grid = ', dom.GetAttribute(g, 'Name')
+print ('Middle Grid = ', dom.GetAttribute(g, 'Name'))
 dom.DeleteNode(g)
 ng = dom.FindNumberOfElements('Grid', dm)
-print 'After Deletion DOM has %d Grids' % ng
+print ('After Deletion DOM has %d Grids' % ng)
 g = dom.FindElement('Grid', ng / 2, dm)
-print 'Test Serialize'
+print ('Test Serialize')
 print dom.Serialize(g)
-print 'Test Add'
+print ('Test Add')
 dom.InsertFromString(g, '<Information Name="Last3"> XXYYZZ </Information>')
-print dom.Serialize(g)
-# print 'Test Serialize'
-# print dom.Serialize()
-print 'Test Set Attribute an CDATA'
+print (dom.Serialize(g))
+# print ('Test Serialize')
+# print (dom.Serialize())
+print ('Test Set Attribute an CDATA')
 info = dom.FindElement('Information', 1, g)
 dom.Set(info, 'CDATA', 'AABBCC')
 dom.Set(info, 'NewTag', 'NewValue')
-print dom.Serialize(g)
-print 'Testing Information'
+print (dom.Serialize(g))
+print ('Testing Information')
 i = XdmfInformation()
-print 'Setting DOM'
+print ('Setting DOM')
 i.SetDOM(dom)
-print 'Setting Element'
+print ('Setting Element')
 i.SetElement(info)
-print 'Update Information'
+print ('Update Information')
 i.UpdateInformation()
-print 'Ready'
-print 'info.Get("NewTag") = ', i.Get('NewTag')
+print ('Ready')
+print ('info.Get("NewTag") = ', i.Get('NewTag'))
 i.Set('NewTag', 'BrandNewValue')
 i.Set('CData', 'DDEEFF')
-print dom.Serialize(g)
-print 'Name = ',i.GetName()
-print 'Value = ',i.GetValue()
+print (dom.Serialize(g))
+print ('Name = ',i.GetName())
+print ('Value = ',i.GetValue())
 i.Set('Value', 'New Value')
-print dom.Serialize(g)
-print 'Value = ',i.GetValue()
-print dom.Serialize(g)
+print (dom.Serialize(g))
+print ('Value = ',i.GetValue())
+print (dom.Serialize(g))
 i.SetName('Jerry')
-print dom.Serialize(g)
-print 'element Type = ', i.GetElementType()
+print (dom.Serialize(g))
+print ('element Type = ', i.GetElementType())
 i.SetValue('Last Value of the Day')
-print dom.Serialize(g)
+print (dom.Serialize(g))
 i.Build()
 dom.Write('Jerry.xmf')
Index: xdmf-3.0+git20160803/Examples/Python/XdmfDataFunction.py
===================================================================
--- xdmf-3.0+git20160803.orig/Examples/Python/XdmfDataFunction.py
+++ xdmf-3.0+git20160803/Examples/Python/XdmfDataFunction.py
@@ -1,5 +1,6 @@
 #!/bin/env python
 
+from __future__ import print_function
 from Xdmf import *
 
 PointsTxt = """<?xml version="1.0" ?>
@@ -61,5 +62,5 @@ di.SetDOM(dom)
 di.SetElement(die)
 di.UpdateInformation()
 di.Update()
-print 'Dims = ', di.GetArray().GetShapeAsString()
-print 'Values = ', di.GetDataValues()
+print ('Dims = ', di.GetArray().GetShapeAsString())
+print ('Values = ', di.GetDataValues())
Index: xdmf-3.0+git20160803/Examples/Python/XdmfDataItem.py
===================================================================
--- xdmf-3.0+git20160803.orig/Examples/Python/XdmfDataItem.py
+++ xdmf-3.0+git20160803/Examples/Python/XdmfDataItem.py
@@ -1,5 +1,6 @@
 #!/bin/env python
 
+from __future__ import print_function
 from Xdmf import *
 
 PointsTxt = """<?xml version="1.0" ?>
@@ -85,7 +86,7 @@ ds.SetDOM(dom)
 ds.SetElement(dse)
 ds.UpdateInformation()
 ds.Update()
-print 'Values = ', ds.GetDataValues()
+print ('Values = ', ds.GetDataValues())
 
 dsre = dom.FindElement('DataItem', 1, geo)
 dsr = XdmfDataItem()
@@ -96,10 +97,10 @@ dsr.SetElement(dsre)
 dsr.UpdateInformation()
 dsr.Update()
 if(dsr.GetIsReference()) :
-    print 'Getting Values'
-    print 'Values = ', dsr.GetDataValues()
+    print ('Getting Values')
+    print ('Values = ', dsr.GetDataValues())
 else :
-    print 'This is not a reference'
+    print ('This is not a reference')
 
 dsre = dom.FindElement('DataItem', 3, geo)
 dsr = XdmfDataItem()
@@ -109,16 +110,16 @@ dsr.DebugOn()
 dsr.SetElement(dsre)
 # Cause an potential dangling reference
 # dsr.SetCopyReferenceData(0)
-print "UI"
+print ("UI")
 dsr.UpdateInformation()
-print "U"
+print ("U")
 dsr.Update()
 # Cause an dangling reference by deleting refernced object
 # ds = 0
 if(dsr.GetIsReference()) :
-    print 'Getting Values'
-    print 'Values = ', dsr.GetDataValues()
+    print ('Getting Values')
+    print ('Values = ', dsr.GetDataValues())
 else :
-    print 'This is not a reference'
+    print ('This is not a reference')
 
 
Index: xdmf-3.0+git20160803/Examples/Python/XdmfDataStructureTest.py
===================================================================
--- xdmf-3.0+git20160803.orig/Examples/Python/XdmfDataStructureTest.py
+++ xdmf-3.0+git20160803/Examples/Python/XdmfDataStructureTest.py
@@ -1,5 +1,6 @@
 #!/bin/env python
 
+from __future__ import print_function
 from Xdmf import *
 
 PointsTxt = """<?xml version="1.0" ?>
@@ -78,28 +79,28 @@ ds = XdmfDataStructure()
 ds.SetDOM(dom)
 ds.SetElement(dse)
 ds.UpdateInformation()
-print 'Rank ', ds.GetRank()
-print 'Dimensions ', ds.GetDimensions()
+print ('Rank ', ds.GetRank())
+print ('Dimensions ', ds.GetDimensions())
 dd = ds.GetDataDesc()
-print "Number Type ", dd.GetNumberTypeAsString()
-print "Number of Elements ", dd.GetNumberOfElements()
-print "Name = ", ds.GetName()
+print ("Number Type ", dd.GetNumberTypeAsString())
+print ("Number of Elements ", dd.GetNumberOfElements())
+print ("Name = ", ds.GetName())
 # ds.DebugOn()
 ds.Update()
 ds.Build()
-print ds.Serialize()
-print 'Values = ', ds.GetDataValues()
+print (ds.Serialize())
+print ('Values = ', ds.GetDataValues())
 a = ds.GetArray()
 a.SetNumberType(XDMF_FLOAT32_TYPE)
 a.SetNumberOfElements(27)
 # a.SetShapeFromString("5 5")
-print "Shape = ", a.GetShapeAsString()
+print ("Shape = ", a.GetShapeAsString())
 a.Generate(1, 10)
 ds.DebugOn()
 ds.SetFormat(XDMF_FORMAT_HDF)
 ds.SetHeavyDataSetName('Jerry.h5:/NewData')
 ds.Build()
-print ds.Serialize()
+print (ds.Serialize())
 dom.Write('NewPoints.xmf')
 
 dsr = XdmfDataStructure()
@@ -109,8 +110,8 @@ dsr.SetElement(ds.GetElement())
 dsr.SetDOM(dom)
 dsr.Reference(ds.GetElement())
 if(dsr.GetIsReference()) :
-    print 'Values = ', dsr.GetDataValues()
+    print ('Values = ', dsr.GetDataValues())
 else :
-    print 'This is not a reference'
+    print ('This is not a reference')
 
 
Index: xdmf-3.0+git20160803/Examples/Python/XdmfDataStructureTest2.py
===================================================================
--- xdmf-3.0+git20160803.orig/Examples/Python/XdmfDataStructureTest2.py
+++ xdmf-3.0+git20160803/Examples/Python/XdmfDataStructureTest2.py
@@ -1,5 +1,6 @@
 #!/bin/env python
 
+from __future__ import print_function
 from Xdmf import *
 
 PointsTxt = """<?xml version="1.0" ?>
@@ -85,7 +86,7 @@ ds.SetDOM(dom)
 ds.SetElement(dse)
 ds.UpdateInformation()
 ds.Update()
-print 'Values = ', ds.GetDataValues()
+print ('Values = ', ds.GetDataValues())
 
 dsre = dom.FindElement('DataStructure', 1, geo)
 dsr = XdmfDataStructure()
@@ -96,10 +97,10 @@ dsr.SetElement(dsre)
 dsr.UpdateInformation()
 dsr.Update()
 if(dsr.GetIsReference()) :
-    print 'Getting Values'
-    print 'Values = ', dsr.GetDataValues()
+    print ('Getting Values')
+    print ('Values = ', dsr.GetDataValues())
 else :
-    print 'This is not a reference'
+    print ('This is not a reference')
 
 dsre = dom.FindElement('DataStructure', 3, geo)
 dsr = XdmfDataStructure()
@@ -109,16 +110,16 @@ dsr.DebugOn()
 dsr.SetElement(dsre)
 # Cause an potential dangling reference
 # dsr.SetCopyReferenceData(0)
-print "UI"
+print ("UI")
 dsr.UpdateInformation()
-print "U"
+print ("U")
 dsr.Update()
 # Cause an dangling reference by deleting refernced object
 # ds = 0
 if(dsr.GetIsReference()) :
-    print 'Getting Values'
-    print 'Values = ', dsr.GetDataValues()
+    print ('Getting Values')
+    print ('Values = ', dsr.GetDataValues())
 else :
-    print 'This is not a reference'
+    print ('This is not a reference')
 
 
Index: xdmf-3.0+git20160803/Examples/Python/WriteXdmf2.py
===================================================================
--- xdmf-3.0+git20160803.orig/Examples/Python/WriteXdmf2.py
+++ xdmf-3.0+git20160803/Examples/Python/WriteXdmf2.py
@@ -1,5 +1,6 @@
 #!/usr/bin/env python
 
+from __future__ import print_function
 from Xdmf import *
 
 # Example of How to Generate Xdmf
@@ -58,6 +59,6 @@ attr.SetDataXml(DataXml)
 g.Insert(attr)
 # Update XML and Write Values to DataItems
 root.Build() # DataItems > 100 values are heavy
-print d.Serialize() # prints to stdout 
+print (d.Serialize()) # prints to stdout 
 
 d.Write('SMesh.xmf') # write to file
Index: xdmf-3.0+git20160803/Examples/Python/XdmfDOMTest2.py
===================================================================
--- xdmf-3.0+git20160803.orig/Examples/Python/XdmfDOMTest2.py
+++ xdmf-3.0+git20160803/Examples/Python/XdmfDOMTest2.py
@@ -1,8 +1,9 @@
 #!/bin/env python
 
+from __future__ import print_function
 from Xdmf import *
 
 dom = XdmfDOM()
 # dom.SetInputFileName('Example2.xmf')
 dom.Parse('Example2.xmf')
-print dom.Serialize()
+print (dom.Serialize())
Index: xdmf-3.0+git20160803/Examples/Python/XdmfDOMTest4.py
===================================================================
--- xdmf-3.0+git20160803.orig/Examples/Python/XdmfDOMTest4.py
+++ xdmf-3.0+git20160803/Examples/Python/XdmfDOMTest4.py
@@ -1,5 +1,6 @@
 #!/bin/env python
 
+from __future__ import print_function
 from Xdmf import *
 import time
 
@@ -22,26 +23,26 @@ XML += """</Domain>
 dom = XdmfDOM()
 dom.Parse(XML)
 dm = dom.FindElement('Domain')
-print 'dm = ', dm
-print 'Domain has %d Children' % dom.GetNumberOfChildren(dm)
+print ('dm = ', dm)
+print ('Domain has %d Children' % dom.GetNumberOfChildren(dm))
 # Test XPath
 node = dom.FindElementByPath('/Xdmf/Domain/Grid[10]')
-print node
+print (node)
 if(node) :
-    print dom.Serialize(node)
+    print (dom.Serialize(node))
 node = dom.FindElementByPath('/Xdmf/Domain/Grid[11]')
-print node
+print (node)
 if(node) :
-    print dom.Serialize(node)
+    print (dom.Serialize(node))
 node = dom.FindElementByPath('/Xdmf/Domain/Grid[Information]')
-print node
+print (node)
 if(node) :
-    print dom.Serialize(node)
+    print (dom.Serialize(node))
 node = dom.FindElementByPath('/Xdmf/Domain/Grid[@Name = "GridNumber0020"]')
-print node
+print (node)
 if(node) :
-    print dom.Serialize(node)
+    print (dom.Serialize(node))
 node = dom.FindElementByPath('/Xdmf/Domain/Grid[@Name = "GridNumber0020"]')
-print node
+print (node)
 if(node) :
-    print dom.Serialize(node)
+    print (dom.Serialize(node))
Index: xdmf-3.0+git20160803/Examples/Python/XdmfDOMTest3.py
===================================================================
--- xdmf-3.0+git20160803.orig/Examples/Python/XdmfDOMTest3.py
+++ xdmf-3.0+git20160803/Examples/Python/XdmfDOMTest3.py
@@ -1,5 +1,6 @@
 #!/bin/env python
 
+from __future__ import print_function
 from Xdmf import *
 
 d = XdmfDOM()
@@ -8,6 +9,6 @@ dm = d.InsertNew(root, 'Domain')
 g = d.InsertNew(dm, 'Grid')
 geo = d.InsertNew(g, 'Geometry')
 ds  = d.InsertNew(geo, 'DataStructure')
-print d.Serialize(root)
+print (d.Serialize(root))
 
 d.Write('junk.xmf')
Index: xdmf-3.0+git20160803/Examples/Python/XdmfGridTest.py
===================================================================
--- xdmf-3.0+git20160803.orig/Examples/Python/XdmfGridTest.py
+++ xdmf-3.0+git20160803/Examples/Python/XdmfGridTest.py
@@ -1,5 +1,6 @@
 #!/bin/env python
 
+from __future__ import print_function
 from Xdmf import *
 
 PointsTxt = """<?xml version="1.0" ?>
@@ -87,7 +88,7 @@ top.SetDOM(dom)
 top.SetElement(te)
 top.Update()
 conn = top.GetConnectivity()
-print 'Values = ', conn.GetValues()
+print ('Values = ', conn.GetValues())
 
 ge = dom.FindElementByPath('/Xdmf/Domain/Grid/Geometry')
 geo = XdmfGeometry()
@@ -95,6 +96,6 @@ geo.SetDOM(dom)
 geo.SetElement(ge)
 geo.Update()
 points = geo.GetPoints()
-print 'Geo Type = ', geo.GetGeometryTypeAsString(), ' # Points = ', geo.GetNumberOfPoints()
-print 'Points = ', points.GetValues(0, 6)
+print ('Geo Type = ', geo.GetGeometryTypeAsString(), ' # Points = ', geo.GetNumberOfPoints())
+print ('Points = ', points.GetValues(0, 6))
 
Index: xdmf-3.0+git20160803/Examples/Python/XdmfGridTest2.py
===================================================================
--- xdmf-3.0+git20160803.orig/Examples/Python/XdmfGridTest2.py
+++ xdmf-3.0+git20160803/Examples/Python/XdmfGridTest2.py
@@ -1,5 +1,6 @@
 #!/bin/env python
 
+from __future__ import print_function
 from Xdmf import *
 
 PointsTxt = """<?xml version="1.0" ?>
@@ -90,10 +91,10 @@ grid.Update()
 top = grid.GetTopology()
 top.DebugOn()
 conn = top.GetConnectivity()
-print 'Values = ', conn.GetValues()
+print ('Values = ', conn.GetValues())
 
 geo = grid.GetGeometry()
 points = geo.GetPoints()
-print 'Geo Type = ', geo.GetGeometryTypeAsString(), ' # Points = ', geo.GetNumberOfPoints()
-print 'Points = ', points.GetValues(0, 6)
+print ('Geo Type = ', geo.GetGeometryTypeAsString(), ' # Points = ', geo.GetNumberOfPoints())
+print ('Points = ', points.GetValues(0, 6))
 
Index: xdmf-3.0+git20160803/Examples/Python/XdmfGridTest3.py
===================================================================
--- xdmf-3.0+git20160803.orig/Examples/Python/XdmfGridTest3.py
+++ xdmf-3.0+git20160803/Examples/Python/XdmfGridTest3.py
@@ -1,5 +1,6 @@
 #!/bin/env python
 
+from __future__ import print_function
 from Xdmf import *
 
 PointsTxt = """<?xml version="1.0" ?>
@@ -164,17 +165,17 @@ PointsTxt = """<?xml version="1.0" ?>
 """
 
 def PrintGrid(grid) :
-    print 'Grid ', grid.GetName(), ' Type = ', grid.GetGridTypeAsString()
+    print ('Grid ', grid.GetName(), ' Type = ', grid.GetGridTypeAsString())
     if(grid.IsUniform()) :
         top = grid.GetTopology()
         top.DebugOn()
         conn = top.GetConnectivity()
-        print 'Connectivity = ', conn.GetValues()
+        print ('Connectivity = ', conn.GetValues())
 
         geo = grid.GetGeometry()
         points = geo.GetPoints()
-        print 'Geo Type = ', geo.GetGeometryTypeAsString(), ' # Points = ', geo.GetNumberOfPoints()
-        print 'Points = ', points.GetValues()
+        print ('Geo Type = ', geo.GetGeometryTypeAsString(), ' # Points = ', geo.GetNumberOfPoints())
+        print ('Points = ', points.GetValues())
     else :
         nc = grid.GetNumberOfChildren()
         for i in range(nc) :
Index: xdmf-3.0+git20160803/Examples/Python/XdmfReader.py
===================================================================
--- xdmf-3.0+git20160803.orig/Examples/Python/XdmfReader.py
+++ xdmf-3.0+git20160803/Examples/Python/XdmfReader.py
@@ -2,6 +2,7 @@
 
 """Reader for XDMF Grids"""
 
+from __future__ import print_function
 from Xdmf import *
 from vtk import *
 from libvtkXdmfPython import *
@@ -28,9 +29,9 @@ class XdmfReader :
 		if FileName == None :
 			FileName = DOM.Get( Node, "File" )
 		if FileName == None :
-			print 'No FileName set'
+			print ('No FileName set')
 			return
-		print 'SetInputFileName(' + FileName + ')'
+		print ('SetInputFileName(' + FileName + ')')
 		self.Reader.SetInputFileName( FileName )
 		# Which Grid ?
 		GridName = DOM.Get( Node, "Grid" )
@@ -43,7 +44,7 @@ class XdmfReader :
 		# Set Up Attributes
 		Nparam = DOM.FindNumberOfElements( 'Parameter', Node )
 		if Nparam > 0 :
-#			print 'Setting %d Parameters' % Nparam
+#			print ('Setting %d Parameters' % Nparam)
 			DOMHandle = self.Reader.GetXdmfDOMHandle()
 			RDOM = HandleToXdmfDOM(DOMHandle)
 			for i in range( Nparam) :
@@ -64,7 +65,7 @@ class XdmfReader :
 						pnode = RDOM.FindElement('Parameter', j, None)
 		# Set Up Attributes
 		Nattr = DOM.FindNumberOfElements( 'Attribute', Node )
-		print 'Reading %d Attributes' % Nattr
+		print ('Reading %d Attributes' % Nattr)
 		if Nattr > 0 :
 			self.Reader.SetAllAttributeStatusOff()
 			for i in range( Nattr ) :
@@ -73,7 +74,7 @@ class XdmfReader :
 				self.Reader.SetAttributeStatusOn( Name )
 
 	def Update(self) :
-		print 'Updating Grid'
+		print ('Updating Grid')
 		self.Reader.Update()
 		return( self.Reader )
 
Index: xdmf-3.0+git20160803/Examples/Python/XdmfTimeTest1.py
===================================================================
--- xdmf-3.0+git20160803.orig/Examples/Python/XdmfTimeTest1.py
+++ xdmf-3.0+git20160803/Examples/Python/XdmfTimeTest1.py
@@ -1,5 +1,6 @@
 #!/bin/env python
 
+from __future__ import print_function
 from Xdmf import *
 
 TimeTestTxt = """<?xml version="1.0" ?>
@@ -287,7 +288,7 @@ dom.Parse('TimeTest.xmf')
 
 ### Loop thru the Four Collection Grids
 for GridIndex in range(1, 5) :
-    print 'Reading /Xdmf/Domain/Grid[%d]' % GridIndex
+    print ('Reading /Xdmf/Domain/Grid[%d]' % GridIndex)
     ge = dom.FindElementByPath('/Xdmf/Domain/Grid[%d]' % GridIndex)
     g = XdmfGrid()
     g.SetDOM(dom)
@@ -296,34 +297,34 @@ for GridIndex in range(1, 5) :
     # Time is available after Light Data is Read
     t = g.GetTime()
     tt = t.GetTimeType()
-    print 'Time Type = ', tt, ' : ', t.GetTimeTypeAsString()
+    print ('Time Type = ', tt, ' : ', t.GetTimeTypeAsString())
     if(tt == XDMF_TIME_SINGLE) :
-        print "Value = ", t.GetValue()
+        print ("Value = ", t.GetValue())
     elif (tt == XDMF_TIME_LIST) :
-        print "List of Times = ", t.GetArray().GetValues()
+        print ("List of Times = ", t.GetArray().GetValues())
     elif (tt == XDMF_TIME_RANGE) :
-        print "Min/Max = ", t.GetArray().GetValues()
+        print ("Min/Max = ", t.GetArray().GetValues())
     elif (tt == XDMF_TIME_HYPERSLAB) :
-        print "Start/Stride/Count = ", t.GetArray().GetValues()
+        print ("Start/Stride/Count = ", t.GetArray().GetValues())
     # Evaluate will populate the array with the indecies of the
     # XdmfGrids that are entirely in the range
     a = XdmfArray()
     if (t.Evaluate(g, a) == XDMF_SUCCESS) :
-        print "Valid times = ", a.GetValues()
-        print "MinMax = ", a.GetMinAsFloat64(), ',' , a.GetMaxAsFloat64()
+        print ("Valid times = ", a.GetValues())
+        print ("MinMax = ", a.GetMinAsFloat64(), ',' , a.GetMaxAsFloat64())
     else :
-        print 'No Valid Times ... checking all children'
+        print ('No Valid Times ... checking all children')
         # The "Descend" Parameter will recursively check the children
         if (t.Evaluate(g, a, 1) == XDMF_SUCCESS) :
-            print "Valid times = ", a.GetValues()
-            print "MinMax = ", a.GetMinAsFloat64(), ',' , a.GetMaxAsFloat64()
+            print ("Valid times = ", a.GetValues())
+            print ("MinMax = ", a.GetMinAsFloat64(), ',' , a.GetMaxAsFloat64())
     a = XdmfArray()
     # By default XdmfTime::Epsilon is 1e-7. Use XdmfTime::SetEpsilon()
     # to change it
     if(g.FindGridsInTimeRange(0.05, 0.1, a) == XDMF_SUCCESS) :
-        print 'Grids in Range(0.05, 0.1) = ', a.GetValues()
+        print ('Grids in Range(0.05, 0.1) = ', a.GetValues())
     else :
-        print "No times are in Range(0.05, 0.1)"
+        print ("No times are in Range(0.05, 0.1)")
     # Read Heavy Data to See the DataItems
     g.Update()
     # print g.Serialize()
Index: xdmf-3.0+git20160803/Examples/Python/XdmfVtkTest1.py
===================================================================
--- xdmf-3.0+git20160803.orig/Examples/Python/XdmfVtkTest1.py
+++ xdmf-3.0+git20160803/Examples/Python/XdmfVtkTest1.py
@@ -1,5 +1,6 @@
 #!/bin/env python
 
+from __future__ import print_function
 from Xdmf import *
 from vtk import *
 from libvtkXdmfPython import *
@@ -10,7 +11,7 @@ Controller = vtkMPIController()
 Reader.SetController(Controller)
 ProcId = Reader.GetController().GetLocalProcessId()
 NumProcs = Reader.GetController().GetNumberOfProcesses()
-print 'Hello from %d of %d' % (ProcId, NumProcs)
+print ('Hello from %d of %d' % (ProcId, NumProcs))
 Reader.SetFileName('Points1.xmf')
 # Reader.DebugOn()
 Reader.UpdateInformation()
@@ -18,21 +19,21 @@ Reader.DisableAllGrids()
 Reader.EnableGrid(2)
 Reader.EnableAllArrays()
 Reader.Update()
-print 'Output = ', Reader.GetOutput()
+print ('Output = ', Reader.GetOutput())
 Append = vtkAppendFilter()
-print ProcId," : Ports = ", Reader.GetNumberOfOutputPorts()
+print (ProcId," : Ports = ", Reader.GetNumberOfOutputPorts())
 for on in range(Reader.GetNumberOfOutputPorts()) :
         Output = Reader.GetOutput(on)
-        print ProcId, '  Number of Levels ',Output.GetNumberOfLevels()
-        print ProcId, '  Number of Groups ',Output.GetNumberOfGroups()
-        print ProcId, '  Number of DataSets in Group 0 ',Output.GetNumberOfDataSets(0)
+        print (ProcId, '  Number of Levels ',Output.GetNumberOfLevels())
+        print (ProcId, '  Number of Groups ',Output.GetNumberOfGroups())
+        print (ProcId, '  Number of DataSets in Group 0 ',Output.GetNumberOfDataSets(0))
         for i in range(Output.GetNumberOfDataSets(0)) :
             ds = Output.GetDataSet(0,i)
             if ds :
-                print '%d : Output %d = %d Cells' % (ProcId, i, ds.GetNumberOfCells())
+                print ('%d : Output %d = %d Cells' % (ProcId, i, ds.GetNumberOfCells()))
                 Append.AddInput(ds)
             else :
-                print '%d : Output %d = NONE' % (ProcId, i)
+                print ('%d : Output %d = NONE' % (ProcId, i))
 Append.Update()
-print Append.GetOutput()
+print (Append.GetOutput())
 
Index: xdmf-3.0+git20160803/Examples/Python/XdmfVtkTest2.py
===================================================================
--- xdmf-3.0+git20160803.orig/Examples/Python/XdmfVtkTest2.py
+++ xdmf-3.0+git20160803/Examples/Python/XdmfVtkTest2.py
@@ -1,5 +1,6 @@
 #!/bin/env python
 
+from __future__ import print_function
 from Xdmf import *
 from vtk import *
 from libvtkXdmfPython import *
@@ -10,16 +11,16 @@ Controller = vtkMPIController()
 Reader.SetController(Controller)
 ProcId = Reader.GetController().GetLocalProcessId()
 NumProcs = Reader.GetController().GetNumberOfProcesses()
-print 'Hello from %d of %d' % (ProcId, NumProcs)
+print ('Hello from %d of %d' % (ProcId, NumProcs))
 Reader.SetFileName('Mixed.xmf')
 # Reader.DebugOn()
 Reader.UpdateInformation()
 Reader.EnableAllGrids()
 Reader.EnableAllArrays()
 Reader.Update()
-print 'Output = ', Reader.GetOutput()
+print ('Output = ', Reader.GetOutput())
 Append = vtkAppendFilter()
-print ProcId," : Ports = ", Reader.GetNumberOfOutputPorts()
+print (ProcId," : Ports = ", Reader.GetNumberOfOutputPorts())
 RenderWindow = vtkRenderWindow()
 Renderer = vtkRenderer()
 RenderWindow.AddRenderer(Renderer)
@@ -31,10 +32,10 @@ RenderWindowInteractor.SetRenderWindow(R
 RenderWindowInteractor.Initialize()
 for on in range(Reader.GetNumberOfOutputPorts()) :
         ds = Output = Reader.GetOutput(on)
-        print 'Output has %d Cells', Output.GetNumberOfCells()
+        print ('Output has %d Cells', Output.GetNumberOfCells())
 #        for i in range(Output.GetNumberOfCells()) :
 #            cell = Output.GetCell(i)
-#            print 'Cell = ', cell
+#            print ('Cell = ', cell)
         Geometry = vtkGeometryFilter()
         Geometry.SetInput(Output)
         Mapper = vtkPolyDataMapper()
@@ -46,11 +47,11 @@ for on in range(Reader.GetNumberOfOutput
         Renderer.AddActor(Actor)
         i = 0
 #        if ds :
-#            print '%d : Output %d = %d Cells' % (ProcId, i, ds.GetNumberOfCells())
+#            print ('%d : Output %d = %d Cells' % (ProcId, i, ds.GetNumberOfCells()))
 #            Append.AddInput(ds)
 #        else :
-#            print '%d : Output %d = NONE' % (ProcId, i)
+#            print ('%d : Output %d = NONE' % (ProcId, i))
 #Append.Update()
-#print Append.GetOutput()
+#print (Append.GetOutput())
 RenderWindowInteractor.Start(1)
 
Index: xdmf-3.0+git20160803/Examples/Python/XdmfWriter.py
===================================================================
--- xdmf-3.0+git20160803.orig/Examples/Python/XdmfWriter.py
+++ xdmf-3.0+git20160803/Examples/Python/XdmfWriter.py
@@ -1,5 +1,6 @@
 #!/bin/env python
 
+from __future__ import print_function
 from Xdmf import *
 from vtk import *
 from libvtkXdmfPython import *
@@ -41,22 +42,22 @@ class DataParser :
 
     def ParseUGrid(self, UGrid) :
         if UGrid.IsHomogeneous() :
-            print 'Homogeneous UGrid ', UGrid
+            print ('Homogeneous UGrid ', UGrid)
             Fd = UGrid.GetFieldData()
             if Fd :
                 NameArray = Fd.GetArray('Name')
-                print 'NameArray = ', NameArray
-                print 'name = ', NameArray.GetValue(0)
+                print ('NameArray = ', NameArray)
+                print ('name = ', NameArray.GetValue(0))
             CellArray = UGrid.GetCells()
             Conns = CellArray.GetData()
-            print '%d Cells' % UGrid.GetNumberOfCells()
+            print ('%d Cells' % UGrid.GetNumberOfCells())
             for i in range(UGrid.GetNumberOfCells()) :
-                print '(%d) %d = %s' % (i, UGrid.GetCellType(i), self.CellTypes[UGrid.GetCellType(i)])
-            print '%d Points' % UGrid.GetNumberOfPoints()
+                print ('(%d) %d = %s' % (i, UGrid.GetCellType(i), self.CellTypes[UGrid.GetCellType(i)]))
+            print ('%d Points' % UGrid.GetNumberOfPoints())
             for i in range(UGrid.GetNumberOfPoints()) :
                 x, y, z = UGrid.GetPoint(i)
-                print '(%d) %f %f %f' % (i, x, y, z)
-            print '%d Connections' % CellArray.GetNumberOfConnectivityEntries()
+                print ('(%d) %f %f %f' % (i, x, y, z))
+            print ('%d Connections' % CellArray.GetNumberOfConnectivityEntries())
             i = 0
             while i < Conns.GetNumberOfTuples() :
                 n = Conns.GetValue(i)
@@ -64,61 +65,61 @@ class DataParser :
                 for j in range(n) :
                     p = Conns.GetValue(i)
                     i += 1
-                    print '%d ' % p
+                    print ('%d ' % p)
             Pd = UGrid.GetPointData()
-            print '# of Point Attributes = %d' %  Pd.GetNumberOfArrays()
+            print ('# of Point Attributes = %d' %  Pd.GetNumberOfArrays())
             for i in range(Pd.GetNumberOfArrays()) :
                 Pa = Pd.GetArray(i)
-                print Pd.GetArrayName(i), ' = ',Pa
+                print (Pd.GetArrayName(i), ' = ',Pa)
                 for j in range(Pa.GetNumberOfTuples()) :
-                    print '(%d) %f' % (j, Pa.GetValue(j))
+                    print ('(%d) %f' % (j, Pa.GetValue(j)))
             Cd = UGrid.GetCellData()
-            print '# of Cell Attributes = %d' %  Cd.GetNumberOfArrays()
-            # print UGrid
+            print ('# of Cell Attributes = %d' %  Cd.GetNumberOfArrays())
+            # print (UGrid)
         else :
-            print 'Heterogeneous UGrid'
+            print ('Heterogeneous UGrid')
 
     def DataArrayToXdmfArray(self, da) :
-        # print 'Converting ', da
-        print 'Data Type', da.GetDataType(), ' = ', da.GetDataTypeAsString()
+        # print ('Converting ', da)
+        print ('Data Type', da.GetDataType(), ' = ', da.GetDataTypeAsString())
         Xda = XdmfArray()
         Xda.SetNumberOfElements(da.GetNumberOfTuples() * da.GetNumberOfComponents())
         Type = da.GetDataTypeAsString()
         pntr = da.GetVoidPointer(0)
         Xpntr = VoidPointerHandleToXdmfPointer(pntr)
         if Type.upper() == 'FLOAT' :
-            # print 'Array is Float32'
+            # print ('Array is Float32')
             Xda.SetNumberType(XDMF_FLOAT32_TYPE)
         elif Type.upper() == 'INT' :
-            # print 'Array is Int32'
+            # print ('Array is Int32')
             Xda.SetNumberType(XDMF_INT32_TYPE)
         elif Type.upper() == 'DOUBLE' :
-            # print 'Array is Float64'
+            # print ('Array is Float64')
             Xda.SetNumberType(XDMF_FLOAT64_TYPE)
         elif Type.upper() == 'LONG' :
-            # print 'Array is Int64'
+            # print ('Array is Int64')
             Xda.SetNumberType(XDMF_INT64_TYPE)
         elif Type.upper() == 'IDTYPE' :
-            # print 'Array is Int64'
+            # print ('Array is Int64')
             Xda.SetNumberType(XDMF_INT64_TYPE)
         else :
-            print 'Illegal NumberType : ', Type
+            print ('Illegal NumberType : ', Type)
             return None
         Xda.SetDataPointer(Xpntr)
-        print 'Values ',Xda.GetValues(0, 10)
+        print ('Values ',Xda.GetValues(0, 10))
         return Xda
 
     def WriteIGrid(self, IGrid, Group, Index) :
-        print 'Homogeneous Image UGrid ', IGrid.GetDimensions()
+        print ('Homogeneous Image UGrid ', IGrid.GetDimensions())
 
     def WriteUGrid(self, UGrid, Group, Index) :
         if UGrid.IsHomogeneous() :
-            print 'Homogeneous UGrid '
+            print ('Homogeneous UGrid ')
             Fd = UGrid.GetFieldData()
             if Fd :
                 NameArray = Fd.GetArray('Name')
-                print 'NameArray = ', NameArray
-                print 'name = ', NameArray.GetValue(0)
+                print ('NameArray = ', NameArray)
+                print ('name = ', NameArray.GetValue(0))
             Xgrid = XdmfGrid()
             Xgrid.SetName('Group %05d Index %05d' % (Group, Index))
             self.MainGrid.Insert(Xgrid)
@@ -126,11 +127,11 @@ class DataParser :
             CellArray = UGrid.GetCells()
             Conns = CellArray.GetData()
             XConns = self.DataArrayToXdmfArray(Conns)
-            print '%d Cells' % UGrid.GetNumberOfCells()
+            print ('%d Cells' % UGrid.GetNumberOfCells())
             NodesPerElement = XConns.GetValueAsInt64(0)
-            print '%d NodesPerElement' % NodesPerElement
+            print ('%d NodesPerElement' % NodesPerElement)
             XConns.SetShapeFromString("%d %d" % (UGrid.GetNumberOfCells(), NodesPerElement + 1))
-            print 'Shape ', XConns.GetShapeAsString()
+            print ('Shape ', XConns.GetShapeAsString())
             Start = '0 1'
             Stride = '1 1'
             Count = '%d %d' % (UGrid.GetNumberOfCells(), NodesPerElement)
@@ -152,10 +153,10 @@ class DataParser :
             self.Arrays.append(JustConns)
             
             # for i in range(UGrid.GetNumberOfCells()) :
-            #     print '(%d) %d = %s' % (i, UGrid.GetCellType(i), self.CellTypes[UGrid.GetCellType(i)])
-            print '%d Points' % UGrid.GetNumberOfPoints()
+            #     print ('(%d) %d = %s' % (i, UGrid.GetCellType(i), self.CellTypes[UGrid.GetCellType(i)]))
+            print ('%d Points' % UGrid.GetNumberOfPoints())
             pnts =  UGrid.GetPoints().GetData()
-            # print "Points = ", pnts
+            # print ("Points = ", pnts)
             Xpnts = self.DataArrayToXdmfArray(pnts)
             Xgeo = Xgrid.GetGeometry()
             Xgeo.SetGeometryType(XDMF_GEOMETRY_XYZ)
@@ -169,8 +170,8 @@ class DataParser :
             # H5.Close()
             # for i in range(UGrid.GetNumberOfPoints()) :
             #     x, y, z = UGrid.GetPoint(i)
-            #     print '(%d) %f %f %f' % (i, x, y, z)
-            # print '%d Connections' % CellArray.GetNumberOfConnectivityEntries()
+            #     print ('(%d) %f %f %f' % (i, x, y, z))
+            # print ('%d Connections' % CellArray.GetNumberOfConnectivityEntries())
             # i = 0
             # while i < Conns.GetNumberOfTuples() :
             #     n = Conns.GetValue(i)
@@ -178,9 +179,9 @@ class DataParser :
             #     for j in range(n) :
             #         p = Conns.GetValue(i)
             #         i += 1
-            #         print '%d ' % p
+            #         print ('%d ' % p)
             Pd = UGrid.GetPointData()
-            print '# of Point Attributes = %d' %  Pd.GetNumberOfArrays()
+            print ('# of Point Attributes = %d' %  Pd.GetNumberOfArrays())
             for i in range(Pd.GetNumberOfArrays()) :
                 Pa = Pd.GetArray(i)
                 Xpa = self.DataArrayToXdmfArray(Pa)
@@ -193,11 +194,11 @@ class DataParser :
                 self.Arrays.append(Xpa)
                 self.Arrays.append(Xattr)
                 # self.Arrays.append(Xpa)
-                # print Pd.GetArrayName(i), ' = ',Pa
+                # print (Pd.GetArrayName(i), ' = ',Pa)
                 # for j in range(Pa.GetNumberOfTuples()) :
-                   #  print '(%d) %f' % (j, Pa.GetValue(j))
+                   #  print ('(%d) %f' % (j, Pa.GetValue(j)))
             Cd = UGrid.GetCellData()
-            print '# of Cell Attributes = %d' %  Cd.GetNumberOfArrays()
+            print ('# of Cell Attributes = %d' %  Cd.GetNumberOfArrays())
             for i in range(Cd.GetNumberOfArrays()) :
                 Ca = Cd.GetArray(i)
                 Xca = self.DataArrayToXdmfArray(Ca)
@@ -209,33 +210,33 @@ class DataParser :
                 Xgrid.Insert(Xattr)
                 self.Arrays.append(Xca)
                 self.Arrays.append(Xattr)
-            # print UGrid
+            # print (UGrid)
         else :
-            print 'Heterogeneous UGrid'
+            print ('Heterogeneous UGrid')
 
     def ParseMultiGroup(self, Output) :
-        print 'Parsing a vtkMultiGroupDataSet '
+        print ('Parsing a vtkMultiGroupDataSet ')
         NGroups = Output.GetNumberOfGroups()
-        print 'Output has %d Groups' % NGroups
+        print ('Output has %d Groups' % NGroups)
         for g in range(NGroups) :
             NDataSets = Output.GetNumberOfDataSets(g)
-            print 'Group %d has %d DataSets' % (g + 1, NDataSets)
+            print ('Group %d has %d DataSets' % (g + 1, NDataSets))
             for i in range(NDataSets) :
                 ds = Output.GetDataSet(g,i)
-                print 'Output Group %d Index %d (%s) has %d Cells' %  (g + 1, i + 1, ds.GetClassName(), ds.GetNumberOfCells())
+                print ('Output Group %d Index %d (%s) has %d Cells' %  (g + 1, i + 1, ds.GetClassName(), ds.GetNumberOfCells()))
                 if ds.IsA('vtkUnstructuredGrid') :
                     self.ParseUGrid(ds)
                     self.WriteUGrid(ds, g, i)
                 if ds.IsA('vtkImageData') :
                     self.WriteIGrid(ds, g, i)
                 else :
-                    print 'Can not handle vtk class = ', ds.GetClassName()
+                    print ('Can not handle vtk class = ', ds.GetClassName())
 
     def Parse(self, Output) :
         if Output.IsA('vtkMultiGroupDataSet') :
             self.ParseMultiGroup(Output)
         else :
-            print 'Can not handle vtk class = ', Output.GetClassName()
+            print ('Can not handle vtk class = ', Output.GetClassName())
 
 
 
@@ -247,7 +248,7 @@ if __name__ == '__main__' :
 #    Reader.SetController(Controller)
 #    ProcId = Reader.GetController().GetLocalProcessId()
 #    NumProcs = Reader.GetController().GetNumberOfProcesses()
-#    print 'Hello from %d of %d' % (ProcId, NumProcs)
+#    print ('Hello from %d of %d' % (ProcId, NumProcs))
     # Reader.SetFileName('Points1.xmf')
     # Reader.SetFileName('VtkTest.pvd')
     Reader.SetFileName('VtkMulti.vtm')
@@ -262,12 +263,12 @@ if __name__ == '__main__' :
     Reader.Update()
 
     p = DataParser()
-    print 'Reader has %d outputs' % Reader.GetNumberOfOutputPorts()
+    print ('Reader has %d outputs' % Reader.GetNumberOfOutputPorts())
     for on in range(Reader.GetNumberOfOutputPorts()) :
-        print 'Reading Output ', on
+        print ('Reading Output ', on)
         Output = Reader.GetOutput(on)
         p.Parse(Output)
     p.Root.Build()
-    print p.DOM.Serialize()
+    print (p.DOM.Serialize())
     p.DOM.Write('junk.xmf')
 
