diff options
| author | Rafal Stozek <say4ne@gmail.com> | 2013-03-20 22:20:23 +0100 |
|---|---|---|
| committer | Rafal Stozek <say4ne@gmail.com> | 2013-03-20 22:20:23 +0100 |
| commit | 9b50a803d22f06c2574c48fff0c8fed9dbacd63b (patch) | |
| tree | a307257726b0e77ab1f55429ae29a5d9fa45f971 /compressor/utils | |
| parent | 3fcddb4d31920b48ec084ba51b9806191254671e (diff) | |
| download | django-compressor-9b50a803d22f06c2574c48fff0c8fed9dbacd63b.tar.gz | |
Initial python 3 compatibility
Diffstat (limited to 'compressor/utils')
| -rw-r--r-- | compressor/utils/__init__.py | 8 | ||||
| -rw-r--r-- | compressor/utils/compat.py | 28 | ||||
| -rw-r--r-- | compressor/utils/staticfiles.py | 2 |
3 files changed, 34 insertions, 4 deletions
diff --git a/compressor/utils/__init__.py b/compressor/utils/__init__.py index c842b73..c1d3b02 100644 --- a/compressor/utils/__init__.py +++ b/compressor/utils/__init__.py @@ -1,6 +1,8 @@ # -*- coding: utf-8 -*- +from __future__ import unicode_literals import os +import six from compressor.exceptions import FilterError @@ -10,10 +12,10 @@ def get_class(class_string, exception=FilterError): """ if not hasattr(class_string, '__bases__'): try: - class_string = class_string.encode('ascii') + class_string = str(class_string) mod_name, class_name = get_mod_func(class_string) if class_name: - return getattr(__import__(mod_name, {}, {}, ['']), class_name) + return getattr(__import__(mod_name, {}, {}, [str('')]), class_name) except (ImportError, AttributeError): raise exception('Failed to import %s' % class_string) @@ -47,7 +49,7 @@ def find_command(cmd, paths=None, pathext=None): """ if paths is None: paths = os.environ.get('PATH', '').split(os.pathsep) - if isinstance(paths, basestring): + if isinstance(paths, six.string_types): paths = [paths] # check if there are funny path extensions for executables, e.g. Windows if pathext is None: diff --git a/compressor/utils/compat.py b/compressor/utils/compat.py new file mode 100644 index 0000000..91428ab --- /dev/null +++ b/compressor/utils/compat.py @@ -0,0 +1,28 @@ +import six + +try: + from django.utils.encoding import force_text, force_bytes + from django.utils.encoding import smart_text, smart_bytes +except ImportError: + # django < 1.4.2 + from django.utils.encoding import force_unicode as force_text + from django.utils.encoding import force_str as force_bytes + from django.utils.encoding import smart_unicode as smart_text + from django.utils.encoding import smart_str as smart_bytes + + +try: + from django.utils import unittest +except ImportError: + import unittest2 as unittest + + +if six.PY3: + # there is an 'io' module in python 2.6+, but io.StringIO does not + # accept regular strings, just unicode objects + from io import StringIO +else: + try: + from cStringIO import StringIO + except ImportError: + from StringIO import StringIO diff --git a/compressor/utils/staticfiles.py b/compressor/utils/staticfiles.py index 169d427..28026f2 100644 --- a/compressor/utils/staticfiles.py +++ b/compressor/utils/staticfiles.py @@ -1,4 +1,4 @@ -from __future__ import absolute_import +from __future__ import absolute_import, unicode_literals from django.core.exceptions import ImproperlyConfigured |
