This is an automated email from the ASF dual-hosted git repository.

cml pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/qpid-cpp.git

commit 0e558866e90ef3d5becbd2f6d5630a6a6dc43a5d
Author: Jiri DanÄ›k <[email protected]>
AuthorDate: Mon Mar 15 11:53:00 2021 +0100

    QPID-8413: Python 3 support in managementgen (#24)
---
 managementgen/qmf-gen            |  4 +++-
 managementgen/qmfgen/generate.py | 15 +++++++++++----
 managementgen/qmfgen/schema.py   | 39 ++++++++++++++++++++++++---------------
 3 files changed, 38 insertions(+), 20 deletions(-)

diff --git a/managementgen/qmf-gen b/managementgen/qmf-gen
index fc2f284..b7532d2 100755
--- a/managementgen/qmf-gen
+++ b/managementgen/qmf-gen
@@ -18,6 +18,8 @@
 # under the License.
 # 
 
+from __future__ import print_function
+
 import sys
 import os
 from qmfgen.schema   import SchemaPackage, SchemaClass
@@ -61,7 +63,7 @@ v2_style    = opts.v2_style
 gen         = Generator(outdir, templatedir)
 
 if len(args) == 0:
-  print "no input files"
+  print("no input files")
   parser.exit()
 
 vargs = {}
diff --git a/managementgen/qmfgen/generate.py b/managementgen/qmfgen/generate.py
index 22c53aa..e6c4672 100755
--- a/managementgen/qmfgen/generate.py
+++ b/managementgen/qmfgen/generate.py
@@ -17,8 +17,9 @@
 # under the License.
 #
 
+from __future__ import print_function
+
 from xml.dom.minidom import parse, parseString, Node
-from cStringIO       import StringIO
 from stat            import *
 from errno           import *
 import os
@@ -26,6 +27,12 @@ import os.path
 import filecmp
 import re
 
+try:
+    from cStringIO import StringIO
+except ImportError:
+    from io import StringIO
+
+
 class Template:
   """
   Expandable File Template - This class is instantiated each time a
@@ -267,8 +274,8 @@ class Generator:
     exists = True
     try:
       mode = os.stat (path)[ST_MODE]
-    except OSError, (err,text):
-      if err == ENOENT or err == ESRCH:
+    except OSError as e:
+      if e.errno == ENOENT or e.errno == ESRCH:
         exists = False
       else:
         raise
@@ -354,7 +361,7 @@ class Generator:
     os.rename (tempFile, target)
 
     if self.verbose:
-      print "Generated:", target
+      print("Generated:", target)
 
   def targetPackageFile (self, schema, templateFile):
     dot = templateFile.find(".")
diff --git a/managementgen/qmfgen/schema.py b/managementgen/qmfgen/schema.py
index 19da8ef..fe9d16f 100755
--- a/managementgen/qmfgen/schema.py
+++ b/managementgen/qmfgen/schema.py
@@ -18,8 +18,12 @@
 #
 
 from xml.dom.minidom import parse, parseString, Node
-from cStringIO       import StringIO
-#import md5
+
+try:
+    from cStringIO import StringIO
+except ImportError:
+    from io import StringIO
+
 try:
     import hashlib
     _md5Obj = hashlib.md5
@@ -38,15 +42,16 @@ class Hash:
     self.md5Sum.update(hash.getDigest())
 
   def getDigest(self):
-    return self.md5Sum.digest()
+    # type: () -> bytes
+    return bytes(self.md5Sum.digest())
 
   def _compute(self, node):
     attrs = node.attributes
-    self.md5Sum.update(node.nodeName)
+    self.md5Sum.update(node.nodeName.encode())
 
     for idx in range(attrs.length):
-      self.md5Sum.update(attrs.item(idx).nodeName)
-      self.md5Sum.update(attrs.item(idx).nodeValue)
+      self.md5Sum.update(attrs.item(idx).nodeName.encode())
+      self.md5Sum.update(attrs.item(idx).nodeValue.encode())
 
     for child in node.childNodes:
       if child.nodeType == Node.ELEMENT_NODE:
@@ -1064,10 +1069,12 @@ class SchemaEvent:
 
   def genSchemaMD5(self, stream, variables):
     sum = self.hash.getDigest()
-    for idx in range (len (sum)):
+    for idx, val in enumerate(sum):
       if idx != 0:
-        stream.write (",")
-      stream.write (hex (ord (sum[idx])))
+        stream.write(",")
+      if isinstance(val, str):
+        val = ord(val)  # Python 2
+      stream.write(hex(val))
 
 
 class SchemaClass:
@@ -1443,13 +1450,13 @@ class SchemaClass:
     if count == 0:
       stream.write("0")
     else:
-      stream.write (str(((count - 1) / 8) + 1))
+      stream.write (str(((count - 1) // 8) + 1))
 
   def genPresenceMaskConstants (self, stream, variables):
     count = 0
     for prop in self.properties:
       if prop.isOptional == 1:
-        stream.write("    static const uint8_t presenceByte_%s = %d;\n" % 
(prop.name, count / 8))
+        stream.write("    static const uint8_t presenceByte_%s = %d;\n" % 
(prop.name, count // 8))
         stream.write("    static const uint8_t presenceMask_%s = %d;\n" % 
(prop.name, 1 << (count % 8)))
         count += 1
 
@@ -1527,12 +1534,14 @@ class SchemaClass:
                       " = _parent->GetManagementObject()->getObjectId();")
         return
 
-  def genSchemaMD5 (self, stream, variables):
+  def genSchemaMD5(self, stream, variables):
     sum = self.hash.getDigest()
-    for idx in range (len (sum)):
+    for idx, val in enumerate(sum):
       if idx != 0:
-        stream.write (",")
-      stream.write (hex (ord (sum[idx])))
+        stream.write(",")
+      if isinstance(val, str):
+        val = ord(val)  # Python 2
+      stream.write(hex(val))
 
   def genAssign (self, stream, variables):
     for inst in self.statistics:

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to