From bc3ed747f047a8bfadb48c6c60746c8bfa7b65bc Mon Sep 17 00:00:00 2001 From: Julien Danjou Date: Thu, 22 Aug 2013 14:15:14 +0200 Subject: jsonutils: do not require xmlrpclib xmlrpclib isn't shipped anymore in Python 3, so let's support it optionally. Change-Id: Ic94f238a5f92f28ae1b6154fb56f00c4c9fa3283 --- openstack/common/jsonutils.py | 8 ++++++-- tests/unit/test_jsonutils.py | 7 ++++++- 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") -- cgit v1.2.1