import django
from django.utils.functional import cached_property
from jinja2 import BytecodeCache as _BytecodeCache


class BytecodeCache(_BytecodeCache):
    """
    A bytecode cache for Jinja2 that uses Django's caching framework.
    """

    def __init__(self, cache_name):
        self._cache_name = cache_name

    @cached_property
    def backend(self):
        if django.VERSION[:2] < (1, 8):
            from django.core.cache import get_cache
            return get_cache(self._cache_name)
        else:
            from django.core.cache import caches
            return caches[self._cache_name]

    def load_bytecode(self, bucket):
        key = 'jinja2_%s' % str(bucket.key)
        bytecode = self.backend.get(key)
        if bytecode:
            bucket.bytecode_from_string(bytecode)

    def dump_bytecode(self, bucket):
        key = 'jinja2_%s' % str(bucket.key)
        self.backend.set(key, bucket.bytecode_to_string())

import django
from django.utils.functional import cached_property
from jinja2 import BytecodeCache as _BytecodeCache


class BytecodeCache(_BytecodeCache):
    """
    A bytecode cache for Jinja2 that uses Django's caching framework.
    """

    def __init__(self, cache_name):
        self._cache_name = cache_name

    @cached_property
    def backend(self):
        from django.core.cache import caches
        return caches[self._cache_name]

    def load_bytecode(self, bucket):
        key = 'jinja2_%s' % str(bucket.key)
        bytecode = self.backend.get(key)
        if bytecode:
            bucket.bytecode_from_string(bytecode)

    def dump_bytecode(self, bucket):
        key = 'jinja2_%s' % str(bucket.key)
        self.backend.set(key, bucket.bytecode_to_string())

Remove unnecessary Django < 1.8 check
Remove unnecessary Django < 1.8 check

Support for old Djangos was dropped in 4f9df0f7b764eda520b2f0428da798db02f66d97

  import django
  from django.utils.functional import cached_property
  from jinja2 import BytecodeCache as _BytecodeCache
  
  
  class BytecodeCache(_BytecodeCache):
      """
      A bytecode cache for Jinja2 that uses Django's caching framework.
      """
  
      def __init__(self, cache_name):
          self._cache_name = cache_name
  
      @cached_property
      def backend(self):
-         if django.VERSION[:2] < (1, 8):
-             from django.core.cache import get_cache
-             return get_cache(self._cache_name)
-         else:
-             from django.core.cache import caches
+         from django.core.cache import caches
-             return caches[self._cache_name]
+         return caches[self._cache_name]
  
      def load_bytecode(self, bucket):
          key = 'jinja2_%s' % str(bucket.key)
          bytecode = self.backend.get(key)
          if bytecode:
              bucket.bytecode_from_string(bytecode)
  
      def dump_bytecode(self, bucket):
          key = 'jinja2_%s' % str(bucket.key)
          self.backend.set(key, bucket.bytecode_to_string())
  
Remove unnecessary Django < 1.8 check
## Code Before:
import django
from django.utils.functional import cached_property
from jinja2 import BytecodeCache as _BytecodeCache


class BytecodeCache(_BytecodeCache):
    """
    A bytecode cache for Jinja2 that uses Django's caching framework.
    """

    def __init__(self, cache_name):
        self._cache_name = cache_name

    @cached_property
    def backend(self):
        if django.VERSION[:2] < (1, 8):
            from django.core.cache import get_cache
            return get_cache(self._cache_name)
        else:
            from django.core.cache import caches
            return caches[self._cache_name]

    def load_bytecode(self, bucket):
        key = 'jinja2_%s' % str(bucket.key)
        bytecode = self.backend.get(key)
        if bytecode:
            bucket.bytecode_from_string(bytecode)

    def dump_bytecode(self, bucket):
        key = 'jinja2_%s' % str(bucket.key)
        self.backend.set(key, bucket.bytecode_to_string())

## Instruction:
Remove unnecessary Django < 1.8 check
## Code After:
import django
from django.utils.functional import cached_property
from jinja2 import BytecodeCache as _BytecodeCache


class BytecodeCache(_BytecodeCache):
    """
    A bytecode cache for Jinja2 that uses Django's caching framework.
    """

    def __init__(self, cache_name):
        self._cache_name = cache_name

    @cached_property
    def backend(self):
        from django.core.cache import caches
        return caches[self._cache_name]

    def load_bytecode(self, bucket):
        key = 'jinja2_%s' % str(bucket.key)
        bytecode = self.backend.get(key)
        if bytecode:
            bucket.bytecode_from_string(bytecode)

    def dump_bytecode(self, bucket):
        key = 'jinja2_%s' % str(bucket.key)
        self.backend.set(key, bucket.bytecode_to_string())
