[svn] commit: r2081 - in /experiments/python-binding/src/lib/dns/python: name_python.cc tests/name_python_test.py

BIND 10 source code commits bind10-changes at lists.isc.org
Mon Jun 7 08:02:36 UTC 2010


Author: jelte
Date: Mon Jun  7 08:02:36 2010
New Revision: 2081

Log:
moved exceptions and constants from top-level to the class they are relevant for

Modified:
    experiments/python-binding/src/lib/dns/python/name_python.cc
    experiments/python-binding/src/lib/dns/python/tests/name_python_test.py

Modified: experiments/python-binding/src/lib/dns/python/name_python.cc
==============================================================================
--- experiments/python-binding/src/lib/dns/python/name_python.cc (original)
+++ experiments/python-binding/src/lib/dns/python/name_python.cc Mon Jun  7 08:02:36 2010
@@ -44,6 +44,7 @@
 // Initialization and addition of these go in the module init at the
 // end
 //
+/*
 static PyObject* po_MAX_WIRE;
 static PyObject* po_MAX_LABELS;
 static PyObject* po_MAX_LABELLEN;
@@ -51,7 +52,7 @@
 static PyObject* po_COMPRESS_POINTER_MARK8;
 static PyObject* po_COMPRESS_POINTER_MARK16;
 static PyObject* po_ROOT_NAME;
-
+*/
 
 
 //
@@ -565,42 +566,15 @@
 bool
 initModulePart_Name(PyObject* mod)
 {
-    // Add the exceptions to the module
-    po_EmptyLabel = PyErr_NewException("libdns_python.EmptyLabel", NULL, NULL);
-    Py_INCREF(po_EmptyLabel);
-    PyModule_AddObject(mod, "EmptyLabel", po_EmptyLabel);
-
-    po_TooLongName = PyErr_NewException("libdns_python.TooLongName", NULL, NULL);
-    Py_INCREF(po_TooLongName);
-    PyModule_AddObject(mod, "TooLongName", po_TooLongName);
-
-    po_TooLongLabel = PyErr_NewException("libdns_python.TooLongLabel", NULL, NULL);
-    Py_INCREF(po_TooLongLabel);
-    PyModule_AddObject(mod, "TooLongLabel", po_TooLongLabel);
-
-    po_BadLabelType = PyErr_NewException("libdns_python.BadLabelType", NULL, NULL);
-    Py_INCREF(po_BadLabelType);
-    PyModule_AddObject(mod, "BadLabelType", po_BadLabelType);
-
-    po_BadEscape = PyErr_NewException("libdns_python.BadEscape", NULL, NULL);
-    Py_INCREF(po_BadEscape);
-    PyModule_AddObject(mod, "BadEscape", po_BadEscape);
-
-    po_IncompleteName = PyErr_NewException("libdns_python.IncompleteName", NULL, NULL);
-    Py_INCREF(po_IncompleteName);
-    PyModule_AddObject(mod, "IncompleteName", po_IncompleteName);
-
-    po_InvalidBufferPosition = PyErr_NewException("libdns_python.InvalidBufferPosition", NULL, NULL);
-    Py_INCREF(po_InvalidBufferPosition);
-    PyModule_AddObject(mod, "InvalidBufferPosition", po_InvalidBufferPosition);
-
-    po_DNSMessageFORMERR = PyErr_NewException("libdns_python.DNSMessageFORMERR", NULL, NULL);
-    Py_INCREF(po_DNSMessageFORMERR);
-    PyModule_AddObject(mod, "DNSMessageFORMERR", po_DNSMessageFORMERR);
-
-    po_IscException = PyErr_NewException("libdns_python.IscException", NULL, NULL);
-    Py_INCREF(po_IncompleteName);
-    PyModule_AddObject(mod, "IscException", po_IscException);
+    // Add the classes to the module
+    // We initialize the static description object with PyType_Ready(),
+    // then add it to the module
+
+    // NameComparisonResult
+    if (PyType_Ready(&name_comparison_result_type) < 0) {
+        return false;
+    }
+    Py_INCREF(&name_comparison_result_type);
 
     // Add the enums to the module
     po_NameRelation = Py_BuildValue("{i:s,i:s,i:s,i:s}",
@@ -608,43 +582,8 @@
                                     1, "SUBDOMAIN",
                                     2, "EQUAL",
                                     3, "COMMONANCESTOR");
-    Py_INCREF(po_NameRelation);
-    PyModule_AddObject(mod, "NameRelation", po_NameRelation);
-
-    // Add the constants to the module
-    po_MAX_WIRE = Py_BuildValue("I", 255U);
-    Py_INCREF(po_MAX_WIRE);
-    PyModule_AddObject(mod, "MAX_WIRE", po_MAX_WIRE);
-    po_MAX_LABELS = Py_BuildValue("I", 128U);
-    Py_INCREF(po_MAX_LABELS);
-    PyModule_AddObject(mod, "MAX_LABELS", po_MAX_LABELS);
-    po_MAX_LABELLEN = Py_BuildValue("I", 63U);
-    Py_INCREF(po_MAX_LABELLEN);
-    PyModule_AddObject(mod, "MAX_LABELLEN", po_MAX_LABELLEN);
-    po_MAX_COMPRESS_POINTER = Py_BuildValue("I", 0x3fffU);
-    Py_INCREF(po_MAX_COMPRESS_POINTER);
-    PyModule_AddObject(mod, "MAX_COMPRESS_POINTER", po_MAX_COMPRESS_POINTER);
-    po_COMPRESS_POINTER_MARK8 = Py_BuildValue("I", 0xc0U);
-    Py_INCREF(po_COMPRESS_POINTER_MARK8);
-    PyModule_AddObject(mod, "COMPRESS_POINTER_MARK8", po_COMPRESS_POINTER_MARK8);
-    po_COMPRESS_POINTER_MARK16 = Py_BuildValue("I", 0xc000U);
-    Py_INCREF(po_COMPRESS_POINTER_MARK16);
-    PyModule_AddObject(mod, "COMPRESS_POINTER_MARK16", po_COMPRESS_POINTER_MARK16);
-    s_Name* root_name = PyObject_New(s_Name, &name_type);
-    root_name->name = new Name(".");
-    po_ROOT_NAME = (PyObject*) root_name;
-    Py_INCREF(po_ROOT_NAME);
-    PyModule_AddObject(mod, "ROOT_NAME", po_ROOT_NAME);
-
-    // Add the classes to the module
-    // We initialize the static description object with PyType_Ready(),
-    // then add it to the module
-
-    // NameComparisonResult
-    if (PyType_Ready(&name_comparison_result_type) < 0) {
-        return false;
-    }
-    Py_INCREF(&name_comparison_result_type);
+    addClassVariable(name_comparison_result_type, "NameRelation", po_NameRelation);
+
     PyModule_AddObject(mod, "NameComparisonResult",
                        (PyObject*) &name_comparison_result_type);
     
@@ -652,6 +591,53 @@
         return false;
     }
     Py_INCREF(&name_type);
+
+    // Add the constants to the module
+    addClassVariable(name_type, "MAX_WIRE", Py_BuildValue("I", 255U));
+    addClassVariable(name_type, "MAX_LABELS", Py_BuildValue("I", 128U));
+    addClassVariable(name_type, "MAX_LABELLEN", Py_BuildValue("I", 63U));
+    addClassVariable(name_type, "MAX_COMPRESS_POINTER", Py_BuildValue("I", 0x3fffU));
+    addClassVariable(name_type, "COMPRESS_POINTER_MARK8", Py_BuildValue("I", 0xc0U));
+    addClassVariable(name_type, "COMPRESS_POINTER_MARK16", Py_BuildValue("I", 0xc000U));
+
+    s_Name* root_name = PyObject_New(s_Name, &name_type);
+    root_name->name = new Name(".");
+    PyObject* po_ROOT_NAME = (PyObject*) root_name;
+    Py_INCREF(po_ROOT_NAME);
+    addClassVariable(name_type, "ROOT_NAME", po_ROOT_NAME);
+
+    // Add the exceptions to the module
+    po_EmptyLabel = PyErr_NewException("libdns_python.Name.EmptyLabel", NULL, NULL);
+    addClassVariable(name_type, "EmptyLabel", po_EmptyLabel);
+
+    po_TooLongName = PyErr_NewException("libdns_python.Name.TooLongName", NULL, NULL);
+    addClassVariable(name_type, "TooLongName", po_TooLongName);
+
+    po_TooLongLabel = PyErr_NewException("libdns_python.Name.TooLongLabel", NULL, NULL);
+    addClassVariable(name_type, "TooLongLabel", po_TooLongLabel);
+
+    po_BadLabelType = PyErr_NewException("libdns_python.Name.BadLabelType", NULL, NULL);
+    addClassVariable(name_type, "BadLabelType", po_BadLabelType);
+
+    po_BadEscape = PyErr_NewException("libdns_python.Name.BadEscape", NULL, NULL);
+    addClassVariable(name_type, "BadEscape", po_BadEscape);
+
+    po_IncompleteName = PyErr_NewException("libdns_python.Name.IncompleteName", NULL, NULL);
+    addClassVariable(name_type, "IncompleteName", po_IncompleteName);
+
+    po_InvalidBufferPosition = PyErr_NewException("libdns_python.Name.InvalidBufferPosition", NULL, NULL);
+    addClassVariable(name_type, "InvalidBufferPosition", po_InvalidBufferPosition);
+
+    /* TODO; this one is a message-specific one, move to message? */
+    po_DNSMessageFORMERR = PyErr_NewException("libdns_python.DNSMessageFORMERR", NULL, NULL);
+    Py_INCREF(po_DNSMessageFORMERR);
+    PyModule_AddObject(mod, "DNSMessageFORMERR", po_DNSMessageFORMERR);
+
+    /* TODO: this one is module-level, move to libdns_python.cc */
+    po_IscException = PyErr_NewException("libdns_python.IscException", NULL, NULL);
+    Py_INCREF(po_IncompleteName);
+    PyModule_AddObject(mod, "IscException", po_IscException);
+
     PyModule_AddObject(mod, "Name",
                        (PyObject*) &name_type);
     

Modified: experiments/python-binding/src/lib/dns/python/tests/name_python_test.py
==============================================================================
--- experiments/python-binding/src/lib/dns/python/tests/name_python_test.py (original)
+++ experiments/python-binding/src/lib/dns/python/tests/name_python_test.py Mon Jun  7 08:02:36 2010
@@ -55,8 +55,8 @@
         self.assertEqual(1, self.ncr15.get_common_labels())
 
     def test_get_relation(self):
-        self.assertEqual("COMMONANCESTOR", NameRelation[self.ncr12.get_relation()])
-        self.assertEqual("COMMONANCESTOR", NameRelation[self.ncr15.get_relation()])
+        self.assertEqual("COMMONANCESTOR", NameComparisonResult.NameRelation[self.ncr12.get_relation()])
+        self.assertEqual("COMMONANCESTOR", NameComparisonResult.NameRelation[self.ncr15.get_relation()])
 
 class NameTest(unittest.TestCase):
     def setUp(self):
@@ -67,19 +67,19 @@
         self.name5 = Name("*.example.com")
 
     def test_init(self):
-        self.assertRaises(EmptyLabel, Name, "example..com")
-        self.assertRaises(TooLongLabel, Name, "a"*64 + ".example.com")
-        self.assertRaises(BadLabelType, Name, "\[asdf.example.com")
-        self.assertRaises(BadEscape, Name, "\\999")
-        self.assertRaises(TooLongName, Name, "example."*32 + "com")
-        self.assertRaises(IncompleteName, Name, "\\")
+        self.assertRaises(Name.EmptyLabel, Name, "example..com")
+        self.assertRaises(Name.TooLongLabel, Name, "a"*64 + ".example.com")
+        self.assertRaises(Name.BadLabelType, Name, "\[asdf.example.com")
+        self.assertRaises(Name.BadEscape, Name, "\\999")
+        self.assertRaises(Name.TooLongName, Name, "example."*32 + "com")
+        self.assertRaises(Name.IncompleteName, Name, "\\")
         self.assertRaises(TypeError, Name, 1)
 
         b = bytearray()
         self.name1.to_wire(b)
         self.assertEqual(self.name1, Name(b))
         self.assertEqual(self.name1, Name(b, 0))
-        self.assertRaises(InvalidBufferPosition, Name, b, 100)
+        self.assertRaises(Name.InvalidBufferPosition, Name, b, 100)
         b = bytearray()
         b += b'\x07example'*32 + b'\x03com\x00'
         # no TooLong for from wire?
@@ -154,7 +154,7 @@
         self.assertEqual("example.com.", self.name1.concatenate(self.name2).to_text())
         self.assertEqual("example.com.example.com.", self.name1.concatenate(self.name1).to_text())
         self.assertRaises(TypeError, self.name1.concatenate, "wrong")
-        self.assertRaises(TooLongName, self.name1.concatenate, Name("example."*31))
+        self.assertRaises(Name.TooLongName, self.name1.concatenate, Name("example."*31))
         
 
     def test_downcase(self):




More information about the bind10-changes mailing list