diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2012-04-15 17:05:32 -0400 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2012-04-15 17:05:32 -0400 |
commit | 7454ac7f0e3a4fcfbc989d14c2a4acacf49cbe4b (patch) | |
tree | 2b72a613737b073a57aa20e503d44c2da50fdfd1 | |
parent | e4568cf1f7a819c508fb6b43afb7eaf3f433d210 (diff) | |
download | dogpile-cache-7454ac7f0e3a4fcfbc989d14c2a4acacf49cbe4b.tar.gz |
- move tests into tests.cache namespace
- implement py3k cross-compatibility
-rw-r--r-- | dogpile/cache/__init__.py | 2 | ||||
-rw-r--r-- | dogpile/cache/api.py | 9 | ||||
-rw-r--r-- | dogpile/cache/backends/file.py | 12 | ||||
-rw-r--r-- | dogpile/cache/region.py | 6 | ||||
-rw-r--r-- | dogpile/cache/util.py | 11 | ||||
-rw-r--r-- | setup.py | 7 | ||||
-rw-r--r-- | tests/cache/__init__.py (renamed from tests/__init__.py) | 3 | ||||
-rw-r--r-- | tests/cache/_fixtures.py (renamed from tests/_fixtures.py) | 12 | ||||
-rw-r--r-- | tests/cache/test_dbm_backend.py (renamed from tests/test_dbm_backend.py) | 4 | ||||
-rw-r--r-- | tests/cache/test_decorator.py (renamed from tests/test_decorator.py) | 12 | ||||
-rw-r--r-- | tests/cache/test_memcached_backend.py (renamed from tests/test_memcached_backend.py) | 8 | ||||
-rw-r--r-- | tests/cache/test_memory_backend.py (renamed from tests/test_memory_backend.py) | 2 | ||||
-rw-r--r-- | tests/cache/test_region.py (renamed from tests/test_region.py) | 2 |
13 files changed, 49 insertions, 41 deletions
diff --git a/dogpile/cache/__init__.py b/dogpile/cache/__init__.py index fef748c..2e1ce0e 100644 --- a/dogpile/cache/__init__.py +++ b/dogpile/cache/__init__.py @@ -1,3 +1,3 @@ __version__ = '0.2.0' -from region import CacheRegion, register_backend, make_region +from .region import CacheRegion, register_backend, make_region diff --git a/dogpile/cache/api.py b/dogpile/cache/api.py index 6e3610a..10b4f21 100644 --- a/dogpile/cache/api.py +++ b/dogpile/cache/api.py @@ -1,4 +1,5 @@ import operator +from . import util class NoValue(object): """Describe a missing cache value. @@ -11,8 +12,12 @@ class NoValue(object): def payload(self): return self - def __nonzero__(self): - return False + if util.py3k: + def __bool__(self): + return False + else: + def __nonzero__(self): + return False NO_VALUE = NoValue() """Value returned from ``get()`` that describes diff --git a/dogpile/cache/backends/file.py b/dogpile/cache/backends/file.py index 0bf783a..253198a 100644 --- a/dogpile/cache/backends/file.py +++ b/dogpile/cache/backends/file.py @@ -96,8 +96,11 @@ class DBMBackend(CacheBackend): dir_, filename) # TODO: make this configurable - import anydbm - self.dbmmodule = anydbm + if util.py3k: + import dbm + else: + import anydbm as dbm + self.dbmmodule = dbm self._init_dbm_file() def _init_lock(self, argument, suffix, basedir, basefile): @@ -164,7 +167,10 @@ class DBMBackend(CacheBackend): def delete(self, key): with self._dbm_file('w') as dbm: - dbm.pop(key, None) + try: + del dbm[key] + except KeyError: + pass class FileLock(object): """Use lockfiles to coordinate read/write access to a file.""" diff --git a/dogpile/cache/region.py b/dogpile/cache/region.py index b8b1074..c6a3e84 100644 --- a/dogpile/cache/region.py +++ b/dogpile/cache/region.py @@ -1,15 +1,15 @@ from dogpile.core import Dogpile, NeedRegenerationException from dogpile.core.nameregistry import NameRegistry -from dogpile.cache.util import function_key_generator, PluginLoader, \ +from .util import function_key_generator, PluginLoader, \ memoized_property -from dogpile.cache.api import NO_VALUE, CachedValue +from .api import NO_VALUE, CachedValue import time from functools import wraps _backend_loader = PluginLoader("dogpile.cache") register_backend = _backend_loader.register -import backends +from . import backends value_version = 1 """An integer placed in the :class:`.CachedValue` diff --git a/dogpile/cache/util.py b/dogpile/cache/util.py index 81829c9..c5a6f28 100644 --- a/dogpile/cache/util.py +++ b/dogpile/cache/util.py @@ -4,12 +4,10 @@ import sys try: import threading - import thread except ImportError: import dummy_threading as threading - import dummy_thread as thread -py3k = getattr(sys, 'py3kwarning', False) or sys.version_info >= (3, 0) +py3k = sys.version_info >= (3, 0) jython = sys.platform.startswith('java') if py3k or jython: @@ -17,6 +15,11 @@ if py3k or jython: else: import cPickle as pickle +if py3k: + tounicode = str +else: + tounicode = unicode + class PluginLoader(object): def __init__(self, group): self.group = group @@ -73,7 +76,7 @@ def function_key_generator(namespace, fn): "function does not accept keyword arguments.") if has_self: args = args[1:] - return namespace + "|" + " ".join(map(unicode, args)) + return namespace + "|" + " ".join(map(tounicode, args)) return generate_key def sha1_mangle_key(key): @@ -4,12 +4,6 @@ import re from setuptools import setup, find_packages -extra = {} -if sys.version_info >= (3, 0): - extra.update( - use_2to3=True, - ) - v = open(os.path.join(os.path.dirname(__file__), 'dogpile', 'cache', '__init__.py')) VERSION = re.compile(r".*__version__ = '(.*?)'", re.S).match(v.read()).group(1) v.close() @@ -42,5 +36,4 @@ setup(name='dogpile.cache', install_requires=['dogpile.core>=0.3.0'], test_suite='nose.collector', tests_require=['nose'], - **extra ) diff --git a/tests/__init__.py b/tests/cache/__init__.py index c171f1e..1c4cae4 100644 --- a/tests/__init__.py +++ b/tests/cache/__init__.py @@ -12,5 +12,6 @@ def assert_raises_message(except_cls, msg, callable_, *args, **kwargs): try: callable_(*args, **kwargs) assert False, "Callable did not raise an exception" - except except_cls, e: + except except_cls as e: assert re.search(msg, str(e)), "%r !~ %s" % (msg, e) + diff --git a/tests/_fixtures.py b/tests/cache/_fixtures.py index 4caa1ad..93d53d1 100644 --- a/tests/_fixtures.py +++ b/tests/cache/_fixtures.py @@ -1,7 +1,7 @@ from dogpile.cache.api import CacheBackend, CachedValue, NO_VALUE from dogpile.cache import register_backend, CacheRegion, util from dogpile.cache.region import _backend_loader -from tests import eq_, assert_raises_message +from . import eq_, assert_raises_message import itertools import time from nose import SkipTest @@ -100,11 +100,11 @@ class _GenericBackendTest(_GenericBackendFixture, TestCase): lock.release() return "some value" def f(): - for x in xrange(5): + for x in range(5): reg.get_or_create("some key", creator) time.sleep(.5) - threads = [Thread(target=f) for i in xrange(5)] + threads = [Thread(target=f) for i in range(5)] for t in threads: t.start() for t in threads: @@ -151,10 +151,10 @@ class _GenericMutexTest(_GenericBackendFixture, TestCase): lock = Lock() canary = [] def f(): - for x in xrange(5): + for x in range(5): mutex = backend.get_mutex("foo") mutex.acquire() - for y in xrange(5): + for y in range(5): ack = lock.acquire(False) canary.append(ack) time.sleep(.002) @@ -163,7 +163,7 @@ class _GenericMutexTest(_GenericBackendFixture, TestCase): mutex.release() time.sleep(.02) - threads = [Thread(target=f) for i in xrange(5)] + threads = [Thread(target=f) for i in range(5)] for t in threads: t.start() for t in threads: diff --git a/tests/test_dbm_backend.py b/tests/cache/test_dbm_backend.py index 78860fe..37ec588 100644 --- a/tests/test_dbm_backend.py +++ b/tests/cache/test_dbm_backend.py @@ -1,5 +1,5 @@ -from tests._fixtures import _GenericBackendTest, _GenericMutexTest -from tests import eq_ +from ._fixtures import _GenericBackendTest, _GenericMutexTest +from . import eq_ from unittest import TestCase from threading import Thread import time diff --git a/tests/test_decorator.py b/tests/cache/test_decorator.py index 347d885..6402871 100644 --- a/tests/test_decorator.py +++ b/tests/cache/test_decorator.py @@ -1,5 +1,5 @@ -from tests._fixtures import _GenericBackendFixture -from tests import eq_ +from ._fixtures import _GenericBackendFixture +from . import eq_ from unittest import TestCase import time from dogpile.cache import util @@ -71,8 +71,8 @@ class KeyGenerationTest(TestCase): pass gen = canary[0] - eq_(gen(1, 2), "tests.test_decorator:one|1 2") - eq_(gen(None, 5), "tests.test_decorator:one|None 5") + eq_(gen(1, 2), "tests.cache.test_decorator:one|1 2") + eq_(gen(None, 5), "tests.cache.test_decorator:one|None 5") def test_keygen_fn_namespace(self): decorate, canary = self._keygen_decorator("mynamespace") @@ -82,7 +82,7 @@ class KeyGenerationTest(TestCase): pass gen = canary[0] - eq_(gen(1, 2), "tests.test_decorator:one|mynamespace|1 2") - eq_(gen(None, 5), "tests.test_decorator:one|mynamespace|None 5") + eq_(gen(1, 2), "tests.cache.test_decorator:one|mynamespace|1 2") + eq_(gen(None, 5), "tests.cache.test_decorator:one|mynamespace|None 5") diff --git a/tests/test_memcached_backend.py b/tests/cache/test_memcached_backend.py index fa5b07f..d81fb8c 100644 --- a/tests/test_memcached_backend.py +++ b/tests/cache/test_memcached_backend.py @@ -1,5 +1,5 @@ -from tests._fixtures import _GenericBackendTest, _GenericMutexTest -from tests import eq_ +from ._fixtures import _GenericBackendTest, _GenericMutexTest +from . import eq_ from unittest import TestCase from threading import Thread import time @@ -172,12 +172,12 @@ class LocalThreadTest(TestCase): canary.append(MockClient.number_of_clients) time.sleep(.05) - threads = [Thread(target=f) for i in xrange(count)] + threads = [Thread(target=f) for i in range(count)] for t in threads: t.start() for t in threads: t.join() - eq_(canary, [i + 1 for i in xrange(count)]) + eq_(canary, [i + 1 for i in range(count)]) eq_(MockClient.number_of_clients, 0) diff --git a/tests/test_memory_backend.py b/tests/cache/test_memory_backend.py index c0ade55..1746c7a 100644 --- a/tests/test_memory_backend.py +++ b/tests/cache/test_memory_backend.py @@ -1,4 +1,4 @@ -from tests._fixtures import _GenericBackendTest +from ._fixtures import _GenericBackendTest class MemoryBackendTest(_GenericBackendTest): backend = "dogpile.cache.memory" diff --git a/tests/test_region.py b/tests/cache/test_region.py index 85fefd5..2b91eae 100644 --- a/tests/test_region.py +++ b/tests/cache/test_region.py @@ -1,7 +1,7 @@ from unittest import TestCase from dogpile.cache.api import CacheBackend, CachedValue, NO_VALUE from dogpile.cache import make_region, register_backend, CacheRegion -from tests import eq_, assert_raises_message +from . import eq_, assert_raises_message import time import itertools |