summaryrefslogtreecommitdiff
path: root/compressor/utils
diff options
context:
space:
mode:
authorRafal Stozek <say4ne@gmail.com>2013-03-20 22:20:23 +0100
committerRafal Stozek <say4ne@gmail.com>2013-03-20 22:20:23 +0100
commit9b50a803d22f06c2574c48fff0c8fed9dbacd63b (patch)
treea307257726b0e77ab1f55429ae29a5d9fa45f971 /compressor/utils
parent3fcddb4d31920b48ec084ba51b9806191254671e (diff)
downloaddjango-compressor-9b50a803d22f06c2574c48fff0c8fed9dbacd63b.tar.gz
Initial python 3 compatibility
Diffstat (limited to 'compressor/utils')
-rw-r--r--compressor/utils/__init__.py8
-rw-r--r--compressor/utils/compat.py28
-rw-r--r--compressor/utils/staticfiles.py2
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