From 400f2e7b608d76807abe7948419ea96a4bb7a4bc Mon Sep 17 00:00:00 2001 From: Eric Guo Date: Sat, 11 Jan 2014 11:01:35 +0800 Subject: [PATCH] Use Oslo module py3kcompat Module py3kcompat can be used to make libraries urllib urllib2 urlparse Python3 compatible. This patch aslo add file openstack-common.conf to track files from Olso-incubator as we did in other projects. Change-Id: I8973672c469ffd264e01fe26a4d265f89f7d1755 --- openstack-common.conf | 10 +++ .../openstack/common/py3kcompat/__init__.py | 0 .../openstack/common/py3kcompat/urlutils.py | 67 +++++++++++++++++++ 3 files changed, 77 insertions(+) create mode 100644 openstack-common.conf create mode 100644 stackalytics/openstack/common/py3kcompat/__init__.py create mode 100644 stackalytics/openstack/common/py3kcompat/urlutils.py diff --git a/openstack-common.conf b/openstack-common.conf new file mode 100644 index 000000000..1c1cdd4f1 --- /dev/null +++ b/openstack-common.conf @@ -0,0 +1,10 @@ +[DEFAULT] + +module=importutils +module=jsonutils +module=log +module=py3kcompat +module=timeutils + +# The base module to hold the copy of oslo-incubator +base=stackalytics diff --git a/stackalytics/openstack/common/py3kcompat/__init__.py b/stackalytics/openstack/common/py3kcompat/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/stackalytics/openstack/common/py3kcompat/urlutils.py b/stackalytics/openstack/common/py3kcompat/urlutils.py new file mode 100644 index 000000000..84e457a44 --- /dev/null +++ b/stackalytics/openstack/common/py3kcompat/urlutils.py @@ -0,0 +1,67 @@ +# +# Copyright 2013 Canonical Ltd. +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# + +""" +Python2/Python3 compatibility layer for OpenStack +""" + +import six + +if six.PY3: + # python3 + import urllib.error + import urllib.parse + import urllib.request + + urlencode = urllib.parse.urlencode + urljoin = urllib.parse.urljoin + quote = urllib.parse.quote + quote_plus = urllib.parse.quote_plus + parse_qsl = urllib.parse.parse_qsl + unquote = urllib.parse.unquote + unquote_plus = urllib.parse.unquote_plus + urlparse = urllib.parse.urlparse + urlsplit = urllib.parse.urlsplit + urlunsplit = urllib.parse.urlunsplit + SplitResult = urllib.parse.SplitResult + + urlopen = urllib.request.urlopen + URLError = urllib.error.URLError + pathname2url = urllib.request.pathname2url +else: + # python2 + import urllib + import urllib2 + import urlparse + + urlencode = urllib.urlencode + quote = urllib.quote + quote_plus = urllib.quote_plus + unquote = urllib.unquote + unquote_plus = urllib.unquote_plus + + parse = urlparse + parse_qsl = parse.parse_qsl + urljoin = parse.urljoin + urlparse = parse.urlparse + urlsplit = parse.urlsplit + urlunsplit = parse.urlunsplit + SplitResult = parse.SplitResult + + urlopen = urllib2.urlopen + URLError = urllib2.URLError + pathname2url = urllib.pathname2url