summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulien Danjou <julien@danjou.info>2013-08-22 14:15:14 +0200
committerJulien Danjou <julien@danjou.info>2013-08-22 14:15:14 +0200
commitbc3ed747f047a8bfadb48c6c60746c8bfa7b65bc (patch)
treec9b32b85a39dd2fb1d9754e4bf18f6b5548c2993
parent706caf96fc19255a52a3565e3a5ecc7290245ebe (diff)
downloadoslo-serialization-bc3ed747f047a8bfadb48c6c60746c8bfa7b65bc.tar.gz
jsonutils: do not require xmlrpclib
xmlrpclib isn't shipped anymore in Python 3, so let's support it optionally. Change-Id: Ic94f238a5f92f28ae1b6154fb56f00c4c9fa3283
-rw-r--r--openstack/common/jsonutils.py8
-rw-r--r--tests/unit/test_jsonutils.py7
2 files changed, 12 insertions, 3 deletions
diff --git a/openstack/common/jsonutils.py b/openstack/common/jsonutils.py
index 5a0235d..bc62618 100644
--- a/openstack/common/jsonutils.py
+++ b/openstack/common/jsonutils.py
@@ -39,7 +39,11 @@ import inspect
import itertools
import json
import types
-import xmlrpclib
+try:
+ import xmlrpclib
+except ImportError:
+ # NOTE(jd): xmlrpclib is not shipped with Python 3
+ xmlrpclib = None
import six
@@ -126,7 +130,7 @@ def to_primitive(value, convert_instances=False, convert_datetime=True,
# It's not clear why xmlrpclib created their own DateTime type, but
# for our purposes, make it a datetime type which is explicitly
# handled
- if isinstance(value, xmlrpclib.DateTime):
+ if xmlrpclib and isinstance(value, xmlrpclib.DateTime):
value = datetime.datetime(*tuple(value.timetuple())[:6])
if convert_datetime and isinstance(value, datetime.datetime):
diff --git a/tests/unit/test_jsonutils.py b/tests/unit/test_jsonutils.py
index 0d22e7e..0bf811a 100644
--- a/tests/unit/test_jsonutils.py
+++ b/tests/unit/test_jsonutils.py
@@ -16,10 +16,14 @@
# under the License.
import datetime
-import xmlrpclib
+try:
+ import xmlrpclib
+except ImportError:
+ xmlrpclib = None
import netaddr
import six
+import testtools
from openstack.common import jsonutils
from openstack.common import test
@@ -64,6 +68,7 @@ class ToPrimitiveTestCase(test.BaseTestCase):
x = datetime.datetime(1920, 2, 3, 4, 5, 6, 7)
self.assertEqual(jsonutils.to_primitive(x, convert_datetime=False), x)
+ @testtools.skipUnless(xmlrpclib, "xmlrpclib not available")
def test_DateTime(self):
x = xmlrpclib.DateTime()
x.decode("19710203T04:05:06")