diff options
author | Jan Cholasta <jcholast@redhat.com> | 2012-02-07 08:22:14 -0500 |
---|---|---|
committer | Rob Crittenden <rcritten@redhat.com> | 2012-02-13 22:22:49 -0500 |
commit | 64883787645cc972e1b6f905a235e0f4df8fcf2a (patch) | |
tree | 6b196d45983a54e9eb8fab8bc6c20a36acd0a628 /ipapython | |
parent | e5c07508060bdafb315c25cd712ceb23508ab20a (diff) | |
download | freeipa-64883787645cc972e1b6f905a235e0f4df8fcf2a.tar.gz freeipa-64883787645cc972e1b6f905a235e0f4df8fcf2a.tar.xz freeipa-64883787645cc972e1b6f905a235e0f4df8fcf2a.zip |
Move the compat module from ipalib to ipapython.
Fixes import problems trying to import just ipalib/compat.py.
https://fedorahosted.org/freeipa/ticket/754
Diffstat (limited to 'ipapython')
-rw-r--r-- | ipapython/certdb.py | 2 | ||||
-rw-r--r-- | ipapython/compat.py | 81 |
2 files changed, 82 insertions, 1 deletions
diff --git a/ipapython/certdb.py b/ipapython/certdb.py index c501b61a7..2c0529b98 100644 --- a/ipapython/certdb.py +++ b/ipapython/certdb.py @@ -21,7 +21,7 @@ from ipapython import ipautil from ipapython import nsslib from ipalib import pkcs10 import tempfile -from ipalib.compat import sha1 +from ipapython.compat import sha1 import shutil import os diff --git a/ipapython/compat.py b/ipapython/compat.py new file mode 100644 index 000000000..36d038444 --- /dev/null +++ b/ipapython/compat.py @@ -0,0 +1,81 @@ +# Authors: +# Jason Gerard DeRose <jderose@redhat.com> +# +# Copyright (C) 2009 Red Hat +# see file 'COPYING' for use and warranty information +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +""" +Abstracts some compatibility issues for Python 2.4 - Python 2.6. + +Python 2.6 +========== + +The ``json`` module was added in Python 2.6, which previously was in an external +package and called ``simplejson``. The `compat` module abstracts the difference +so you can use the ``json`` module generically like this: + +>>> from compat import json +>>> json.dumps({'hello': 'world'}) +'{"hello": "world"}' + +In Python 2.6 the ``parse_qs()`` function was moved from the ``cgi`` module to +the ``urlparse`` module. Although ``cgi.parse_qs()`` is still available and +only raises a ``PendingDeprecationWarning``, we still provide some +future-proofing here so you can import ``parse_qs()`` generically like this: + +>>> from compat import parse_qs +>>> parse_qs('hello=world&how=are+you%3F') +{'how': ['are you?'], 'hello': ['world']} + +For more information, see *What's New in Python 2.6*: + + http://docs.python.org/whatsnew/2.6.html + + +Python 2.5 +========== + +The ``hashlib`` module was added in Python2.5, after which use of the ``sha`` +and ``md5`` modules is deprecated. You can generically import a ``sha1`` class +from the `compat` module like this: + +>>> from compat import sha1 +>>> sha1('hello world').hexdigest() +'2aae6c35c94fcfb415dbe95f408b9ce91ee846ed' + +And generically import an ``md5`` class like this: + +>>> from compat import md5 +>>> md5('hello world').hexdigest() +'5eb63bbbe01eeed093cb22bb8f5acdc3' + +For more information, see *What's New in Python 2.5*: + + http://python.org/doc/2.5/whatsnew/whatsnew25.html +""" + +import sys +if sys.version_info[:2] >= (2, 6): + import json + from urlparse import parse_qs +else: + import simplejson as json + from cgi import parse_qs +try: + from hashlib import sha1, md5 #pylint: disable=E0611 +except ImportError: + from sha import new as sha1 + from md5 import new as md5 |