From eca8716c6f2751bf49d8376f4896d17d93e92627 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Piotr=20Ma=C5=9Blanka?= <piotr.maslanka@henrietta.com.pl>
Date: Sat, 4 Jan 2020 19:05:53 +0100
Subject: [PATCH] move much of utilies to compile_definitions package

---
 compile_definitions/__main__.py           |   5 +-
 compile_definitions/utilities.py          | 111 +++++++++++++++++++++
 coolamqp/framing/compilation/utilities.py | 115 ----------------------
 3 files changed, 114 insertions(+), 117 deletions(-)
 create mode 100644 compile_definitions/utilities.py

diff --git a/compile_definitions/__main__.py b/compile_definitions/__main__.py
index 0326730..5cd9166 100644
--- a/compile_definitions/__main__.py
+++ b/compile_definitions/__main__.py
@@ -8,8 +8,9 @@ from xml.etree import ElementTree
 import math
 import six
 
-from coolamqp.framing.compilation.utilities import name_class, format_method_class_name, \
-    format_field_name, ffmt, to_docstring, pythonify_name, to_code_binary, frepr, get_size
+from compile_definitions.utilities import ffmt, to_docstring, pythonify_name, to_code_binary, frepr, \
+    format_method_class_name, name_class, get_size
+from coolamqp.framing.compilation.utilities import format_field_name
 from .xml_tags import Constant, Class, Domain
 
 TYPE_TRANSLATOR = {
diff --git a/compile_definitions/utilities.py b/compile_definitions/utilities.py
new file mode 100644
index 0000000..4e9891d
--- /dev/null
+++ b/compile_definitions/utilities.py
@@ -0,0 +1,111 @@
+# coding=UTF-8
+from __future__ import division, absolute_import, print_function
+
+import math
+import six
+
+from coolamqp.framing.base import BASIC_TYPES
+from coolamqp.framing.compilation.utilities import as_unicode
+
+
+def ffmt(data, *args, **kwargs):
+    for arg in args:
+        op = str if kwargs.get('sane', True) else frepr
+        data = data.replace('%s', op(arg), 1)
+    data = data.replace('%S', '%s')
+    return data
+
+
+def to_docstring(label, doc, prefix=4,
+                 blank=True):  # output a full docstring section
+    label = [] if label is None else [label]
+    doc = [] if doc is None else [q.strip() for q in doc.split(u'\n') if
+                                  len(q.strip()) > 0]
+    pre = u' ' * prefix
+
+    doc = label + doc
+
+    if len(doc) == 0:
+        return u''
+
+    doc[0] = doc[0].capitalize()
+
+    if len(doc) == 1:
+        return doc[0]
+
+    doc = [p for p in doc if len(p.strip()) > 0]
+
+    if blank:
+        doc = [doc[0], u''] + doc[1:]
+
+    f = (u'\n'.join(pre + lin for lin in doc))[prefix:]
+    return f
+
+
+def pythonify_name(p):
+    return p.strip().replace('-', '_').upper()
+
+
+def to_code_binary(p):
+    body = []
+    for q in p:
+        if isinstance(q, int):
+            q = six.int2byte(q)
+        z = (hex(ord(q))[2:].upper())
+        if len(z) == 1:
+            z = u'0' + z
+        body.append(u'\\x' + z)
+    return u"b'" + (u''.join(body)) + u"'"
+
+
+def frepr(p, sop=six.text_type):
+    if isinstance(p, (six.binary_type, six.text_type)):
+        p = sop(p)
+    s = repr(p)
+
+    if isinstance(p, (six.binary_type, six.text_type)) and not s.startswith(
+            'u'):
+        return ('u' if sop == six.text_type else 'b') + s
+    else:
+        return s
+
+
+@as_unicode
+def format_method_class_name(methodname):
+    if '-' in methodname:
+        i = methodname.find('-')
+        return methodname[0:i].capitalize() + methodname[
+            i + 1].upper() + methodname[i + 2:]
+    else:
+        return methodname.capitalize()
+
+
+@as_unicode
+def name_class(classname):
+    """Change AMQP class name to Python class name"""
+    return classname.capitalize()
+
+
+def get_size(fields):  # assume all fields have static length
+    """Assuming all fields have static length, return their length together. Supports bits"""
+    size = 0
+    bits = 0
+    for field in fields:
+
+        if (bits > 0) and (field.basic_type != 'bit'):  # sync bits
+            size += int(math.ceil(bits / 8))
+            bits = 0
+
+        if BASIC_TYPES[field.basic_type][0] is None:
+            if field.basic_type == 'bit':
+                bits += 1
+            else:
+                size += len(
+                    BASIC_TYPES[field.basic_type][2])  # default minimum entry
+        else:
+            size += BASIC_TYPES[field.basic_type][0]
+
+    if bits > 0:  # sync bits
+        size += int(math.ceil(bits / 8))
+
+    return size
diff --git a/coolamqp/framing/compilation/utilities.py b/coolamqp/framing/compilation/utilities.py
index a941ff7..c77e277 100644
--- a/coolamqp/framing/compilation/utilities.py
+++ b/coolamqp/framing/compilation/utilities.py
@@ -1,38 +1,11 @@
 # coding=UTF-8
 from __future__ import absolute_import, division, print_function
 
-import math
 import six
 
-from coolamqp.framing.base import BASIC_TYPES
-
 
 # docs may be None
 
-def get_size(fields):  # assume all fields have static length
-    """Assuming all fields have static length, return their length together. Supports bits"""
-    size = 0
-    bits = 0
-    for field in fields:
-
-        if (bits > 0) and (field.basic_type != 'bit'):  # sync bits
-            size += int(math.ceil(bits / 8))
-            bits = 0
-
-        if BASIC_TYPES[field.basic_type][0] is None:
-            if field.basic_type == 'bit':
-                bits += 1
-            else:
-                size += len(
-                    BASIC_TYPES[field.basic_type][2])  # default minimum entry
-        else:
-            size += BASIC_TYPES[field.basic_type][0]
-
-    if bits > 0:  # sync bits
-        size += int(math.ceil(bits / 8))
-
-    return size
-
 
 def as_unicode(callable):
     def roll(*args, **kwargs):
@@ -40,27 +13,6 @@ def as_unicode(callable):
 
     return roll
 
-
-def to_dict_by_name(list_of_things):
-    return dict((a.name, a) for a in list_of_things)
-
-
-@as_unicode
-def name_class(classname):
-    """Change AMQP class name to Python class name"""
-    return classname.capitalize()
-
-
-@as_unicode
-def format_method_class_name(methodname):
-    if '-' in methodname:
-        i = methodname.find('-')
-        return methodname[0:i].capitalize() + methodname[
-            i + 1].upper() + methodname[i + 2:]
-    else:
-        return methodname.capitalize()
-
-
 @as_unicode
 def format_field_name(field):
     if field in (u'global', u'type'):
@@ -68,70 +20,3 @@ def format_field_name(field):
     return field.replace('-', '_')
 
 
-def frepr(p, sop=six.text_type):
-    if isinstance(p, (six.binary_type, six.text_type)):
-        p = sop(p)
-    s = repr(p)
-
-    if isinstance(p, (six.binary_type, six.text_type)) and not s.startswith(
-            'u'):
-        return ('u' if sop == six.text_type else 'b') + s
-    else:
-        return s
-
-
-def to_code_binary(p):
-    body = []
-    for q in p:
-        if isinstance(q, int):
-            q = six.int2byte(q)
-        z = (hex(ord(q))[2:].upper())
-        if len(z) == 1:
-            z = u'0' + z
-        body.append(u'\\x' + z)
-    return u"b'" + (u''.join(body)) + u"'"
-
-
-def pythonify_name(p):
-    return p.strip().replace('-', '_').upper()
-
-
-def try_to_int(p):
-    try:
-        return int(p)
-    except ValueError:
-        return p
-
-
-def to_docstring(label, doc, prefix=4,
-                 blank=True):  # output a full docstring section
-    label = [] if label is None else [label]
-    doc = [] if doc is None else [q.strip() for q in doc.split(u'\n') if
-                                  len(q.strip()) > 0]
-    pre = u' ' * prefix
-
-    doc = label + doc
-
-    if len(doc) == 0:
-        return u''
-
-    doc[0] = doc[0].capitalize()
-
-    if len(doc) == 1:
-        return doc[0]
-
-    doc = [p for p in doc if len(p.strip()) > 0]
-
-    if blank:
-        doc = [doc[0], u''] + doc[1:]
-
-    f = (u'\n'.join(pre + lin for lin in doc))[prefix:]
-    return f
-
-
-def ffmt(data, *args, **kwargs):
-    for arg in args:
-        op = str if kwargs.get('sane', True) else frepr
-        data = data.replace('%s', op(arg), 1)
-    data = data.replace('%S', '%s')
-    return data
-- 
GitLab