start of auto type detection

This commit is contained in:
Kenneth Reitz
2011-04-10 17:09:17 -04:00
parent 329067ed83
commit 2a26c047cd
+24 -9
View File
@@ -10,17 +10,15 @@ This module contains extra stuff.
from . import config
from .utils import is_collection
from . import models
from .utils import is_collection, compress_key
def expand_key(key):
"""Expands tupled keys."""
if is_collection(key):
key = config.namespace_delimiter.join(key)
return key
TYPE_MAP = {
'value': models.RedisListString,
'string': models.RedisListString,
'list': models.RedisList
}
def auto_type(key, redis=None, default=None):
@@ -29,3 +27,20 @@ def auto_type(key, redis=None, default=None):
if redis is None:
redis = config.redis
key = compress_key(key)
if redis.exists(key):
datatype = redis.type(key)
return TYPE_MAP.get(datatype)(key, redis=redis)
else:
if default:
try:
return TYPE_MAP.get(default)(key, redis=redis)
except KeyError:
raise ValueError('Provide a valid default redis type.')
return None