summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2012-04-15 17:05:32 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2012-04-15 17:05:32 -0400
commit7454ac7f0e3a4fcfbc989d14c2a4acacf49cbe4b (patch)
tree2b72a613737b073a57aa20e503d44c2da50fdfd1
parente4568cf1f7a819c508fb6b43afb7eaf3f433d210 (diff)
downloaddogpile-cache-7454ac7f0e3a4fcfbc989d14c2a4acacf49cbe4b.tar.gz
- move tests into tests.cache namespace
- implement py3k cross-compatibility
-rw-r--r--dogpile/cache/__init__.py2
-rw-r--r--dogpile/cache/api.py9
-rw-r--r--dogpile/cache/backends/file.py12
-rw-r--r--dogpile/cache/region.py6
-rw-r--r--dogpile/cache/util.py11
-rw-r--r--setup.py7
-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):
diff --git a/setup.py b/setup.py
index d8f496d..fcae32c 100644
--- a/setup.py
+++ b/setup.py
@@ -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