From fa751d543ea2d72526295fdd3e918a765c82555c Mon Sep 17 00:00:00 2001 From: Garrett-R Date: Sat, 27 Feb 2016 23:32:06 -0800 Subject: More informative message for missing backend dependencies Currently, if you don't have the Python package `redis` intalled then you get the same message if you type: requests_cache.install_cache(backend='redis') as if you type: requests_cache.install_cache(backend='nonsense!!!!') --- requests_cache/backends/__init__.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'requests_cache') diff --git a/requests_cache/backends/__init__.py b/requests_cache/backends/__init__.py index 29da672..433d405 100644 --- a/requests_cache/backends/__init__.py +++ b/requests_cache/backends/__init__.py @@ -14,6 +14,12 @@ registry = { 'memory': BaseCache, } +_backend_dependencies = { + 'sqlite': 'sqlite3', + 'mongo': 'pymongo', + 'redis': 'redis' +} + try: # Heroku doesn't allow the SQLite3 module to be installed from .sqlite import DbCache @@ -40,11 +46,16 @@ def create_backend(backend_name, cache_name, options): try: return registry[backend_name](cache_name, **options) except KeyError: - raise ValueError('Unsupported backend "%s" try one of: %s' % - (backend_name, ', '.join(registry.keys()))) + if backend_name in _backend_dependencies: + raise ImportError('You must install the python package: %s' % + _backend_dependencies[backend_name]) + else: + raise ValueError('Unsupported backend "%s" try one of: %s' % + (backend_name, ', '.join(registry.keys()))) def _get_default_backend_name(): if 'sqlite' in registry: return 'sqlite' - return 'memory' \ No newline at end of file + return 'memory' + -- cgit v1.2.1