Forwarded: https://github.com/toastdriven/restless/pull/138

--- a/requirements.txt
+++ b/requirements.txt
@@ -1 +0,0 @@
-six>=1.4.0
--- a/restless/dj.py
+++ b/restless/dj.py
@@ -1,4 +1,3 @@
-import six
 
 from django.conf import settings
 from django.urls import path
@@ -82,7 +81,7 @@
     def build_error(self, err):
         # A bit nicer behavior surrounding things that don't exist.
         if isinstance(err, (ObjectDoesNotExist, Http404)):
-            err = NotFound(msg=six.text_type(err))
+            err = NotFound(msg=str(err))
 
         return super(DjangoResource, self).build_error(err)
 
--- a/setup.py
+++ b/setup.py
@@ -17,10 +17,8 @@
         'restless',
     ],
     requires=[
-        'six(>=1.4.0)',
     ],
     install_requires=[
-        'six>=1.4.0',
     ],
     tests_require=[
         'mock',
--- a/tests/fakes.py
+++ b/tests/fakes.py
@@ -1,12 +1,10 @@
-import six
 
 
 class FakeHttpRequest(object):
     def __init__(self, method='GET', body='', **kwargs):
         self.method = method.upper()
         self.body = body
-        if six.PY3:
-            self.body = body.encode('utf-8')
+        self.body = body.encode('utf-8')
         if self.method == 'GET':
             self.GET = kwargs.get('get_request', {})
 
--- a/tests/test_resources.py
+++ b/tests/test_resources.py
@@ -1,4 +1,3 @@
-import six
 import unittest
 
 from restless.exceptions import HttpError, NotFound, MethodNotImplemented
@@ -54,28 +53,16 @@
         self.assertEqual(self.res.request_method(), 'DELETE')
 
     def test_request_body(self):
-        if six.PY3:
-            self.assertEqual(self.res.request_body(), b'')
-        else:
-            self.assertEqual(self.res.request_body(), '')
+        self.assertEqual(self.res.request_body(), b'')
 
         self.res.request = FakeHttpRequest('POST', '{"hello": "world"}')
-        if six.PY3:
-            self.assertEqual(self.res.request_body(), b'{"hello": "world"}')
-        else:
-            self.assertEqual(self.res.request_body(), '{"hello": "world"}')
+        self.assertEqual(self.res.request_body(), b'{"hello": "world"}')
 
         self.res.request = FakeHttpRequest('PUT', '{"hello": "world"}')
-        if six.PY3:
-            self.assertEqual(self.res.request_body(), b'{"hello": "world"}')
-        else:
-            self.assertEqual(self.res.request_body(), '{"hello": "world"}')
+        self.assertEqual(self.res.request_body(), b'{"hello": "world"}')
 
         self.res.request = FakeHttpRequest('DELETE', '{}')
-        if six.PY3:
-            self.assertEqual(self.res.request_body(), b'{}')
-        else:
-            self.assertEqual(self.res.request_body(), '{}')
+        self.assertEqual(self.res.request_body(), b'{}')
 
     def test_build_response(self):
         resp = self.res.build_response('Hello, world!')
--- a/tests/test_tnd.py
+++ b/tests/test_tnd.py
@@ -1,13 +1,12 @@
 import unittest
 import socket
-import six
 
 from restless.utils import json
 from restless.constants import UNAUTHORIZED
 
 
 def _newer_or_equal_(v):
-    for i in six.moves.xrange(min(len(v), len(version_info))):
+    for i in range(min(len(v), len(version_info))):
         expected, tnd = v[i], version_info[i]
         if tnd > expected:
             return True
@@ -19,7 +18,7 @@
 
 
 def _equal_(v):
-    for i in six.moves.xrange(min(len(v), len(version_info))):
+    for i in range(min(len(v), len(version_info))):
         if v[i] != version_info[i]:
             return False
     return True
