From 06f80173d0134bb6f495a8f484ce64bb3a84915c Mon Sep 17 00:00:00 2001 From: Sean Reifschneider Date: Thu, 2 Apr 2009 13:35:25 -0600 Subject: Providing better error messages (patch provided by Johan Euphrosine). --- memcache.py | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) (limited to 'memcache.py') diff --git a/memcache.py b/memcache.py index a96023a..3e0a789 100644 --- a/memcache.py +++ b/memcache.py @@ -129,6 +129,10 @@ class Client(local): pass class MemcachedKeyCharacterError(MemcachedKeyError): pass + class MemcachedKeyNoneError(MemcachedKeyError): + pass + class MemcachedKeyTypeError(MemcachedKeyError): + pass class MemcachedStringEncodingError(Exception): pass @@ -946,20 +950,27 @@ def check_key(key, key_extra_len=0): Key length is > SERVER_MAX_KEY_LENGTH (Raises MemcachedKeyLength). Contains control characters (Raises MemcachedKeyCharacterError). Is not a string (Raises MemcachedStringEncodingError) + Is an unicode string (Raises MemcachedStringEncodingError) + Is not a string (Raises MemcachedKeyError) + Is None (Raises MemcachedKeyError) """ if type(key) == types.TupleType: key = key[1] - if not isinstance(key, str): - raise Client.MemcachedStringEncodingError, ("Keys must be str()'s, not" + if not key: + raise Client.MemcachedKeyNoneError, ("Key is None") + if isinstance(key, unicode): + raise Client.MemcachedStringEncodingError, ("Keys must be str()'s, not " "unicode. Convert your unicode strings using " "mystring.encode(charset)!") + if not isinstance(key, str): + raise Client.MemcachedKeyTypeError, ("Key must be str()'s") if isinstance(key, basestring): if len(key) + key_extra_len > SERVER_MAX_KEY_LENGTH: raise Client.MemcachedKeyLengthError, ("Key length is > %s" % SERVER_MAX_KEY_LENGTH) for char in key: - if ord(char) < 32 or ord(char) == 127: - raise Client.MemcachedKeyCharacterError, "Control characters not allowed" + if ord(char) < 32 or ord(char) == 127: + raise Client.MemcachedKeyCharacterError, "Control characters not allowed" def _doctest(): import doctest, memcache -- cgit v1.2.1