          # < 1.6 used module_name instead of model_name
          return model_cls._meta.module_name
  
  
  def get_concrete_model(model_cls):
      try:
          return model_cls._meta.concrete_model
      except AttributeError:
          # 1.3 does not include concrete model
          return model_cls
  
  
  # View._allowed_methods only present from 1.5 onwards
  if django.VERSION >= (1, 5):
      from django.views.generic import View
  else:
      from django.views.generic import View as DjangoView
 
</s> remove except:
 </s> add except ImportError: </s> remove # Handle django.utils.encoding rename in 1.5 onwards.
# smart_unicode -> smart_text
# force_unicode -> force_text
try:
    from django.utils.encoding import smart_text
except ImportError:
    from django.utils.encoding import smart_unicode as smart_text
try:
    from django.utils.encoding import force_text
except ImportError:
    from django.utils.encoding import force_unicode as force_text


 </s> add  </s> remove # cStringIO only if it's available, otherwise StringIO
try:
    import cStringIO.StringIO as StringIO
except ImportError:
    StringIO = six.StringIO

BytesIO = six.BytesIO


 </s> add  </s> remove from rest_framework.compat import force_text
 </s> add  </s> remove from django.utils.encoding import python_2_unicode_compatible
from rest_framework.compat import apply_markdown, smart_text
 </s> add from django.utils.encoding import python_2_unicode_compatible, smart_text
from rest_framework.compat import apply_markdown
          # < 1.6 used module_name instead of model_name
          return model_cls._meta.module_name
  
  








  # View._allowed_methods only present from 1.5 onwards
  if django.VERSION >= (1, 5):
      from django.views.generic import View
  else:
      from django.views.generic import View as DjangoView
keep keep keep keep replace replace replace replace replace replace replace replace keep keep keep keep keep
 Removed custom StringIO, force_text, smart_text compat 
rest_framework/compat.py