# This file is part of the django-environ. # # Copyright (c) 2021-2022, Serghei Iakovlev # Copyright (c) 2013-2021, Daniele Faraglia # # For the full copyright and license information, please view # the LICENSE.txt file that was distributed with this source code. """This module handles import compatibility issues.""" from pkgutil import find_loader if find_loader('simplejson'): import simplejson as json else: import json if find_loader('django'): from django import VERSION as DJANGO_VERSION from django.core.exceptions import ImproperlyConfigured else: DJANGO_VERSION = None class ImproperlyConfigured(Exception): pass # back compatibility with django postgresql package if DJANGO_VERSION is not None and DJANGO_VERSION < (2, 0): DJANGO_POSTGRES = 'django.db.backends.postgresql_psycopg2' else: # https://docs.djangoproject.com/en/2.0/releases/2.0/#id1 DJANGO_POSTGRES = 'django.db.backends.postgresql' # back compatibility with redis_cache package if find_loader('redis_cache'): REDIS_DRIVER = 'redis_cache.RedisCache' else: REDIS_DRIVER = 'django_redis.cache.RedisCache' def choose_pymemcache_driver(): """Backward compatibility for pymemcache.""" old_django = DJANGO_VERSION is not None and DJANGO_VERSION < (3, 2) if old_django or not find_loader('pymemcache'): # The original backend choice for the 'pymemcache' scheme is # unfortunately 'pylibmc'. return 'django.core.cache.backends.memcached.PyLibMCCache' return 'django.core.cache.backends.memcached.PyMemcacheCache' PYMEMCACHE_DRIVER = choose_pymemcache_driver()