summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTres Seaver <tseaver@palladion.com>2014-02-02 11:10:08 -0500
committerTres Seaver <tseaver@palladion.com>2014-02-02 11:10:08 -0500
commite2f3a4e3000ab98da9eeb929c87161b253a4fd31 (patch)
treec2331967f8536cf06e37fcda37b8fb056e5866cb
parente9bb2ae41cf95e859599f100f9e8f7731d7be40e (diff)
downloadrepoze-lru-e2f3a4e3000ab98da9eeb929c87161b253a4fd31.tar.gz
Prefer 3-arg getattr() to catching AttributeError.
-rw-r--r--repoze/lru/__init__.py15
1 files changed, 7 insertions, 8 deletions
diff --git a/repoze/lru/__init__.py b/repoze/lru/__init__.py
index c757851..83f22b3 100644
--- a/repoze/lru/__init__.py
+++ b/repoze/lru/__init__.py
@@ -287,14 +287,13 @@ class lru_cache(object):
val = f(*arg)
cache.put(arg, val)
return val
- try:
- lru_cached.__module__ = f.__module__
- lru_cached.__name__ = f.__name__
- lru_cached.__doc__ = f.__doc__
- except AttributeError:
- # functools.partial objects don't have __module__ or __name__.
- # Ignore.
- pass
+ def _maybe_copy(source, target, attr):
+ value = getattr(source, attr, source)
+ if value is not source:
+ setattr(target, attr, value)
+ _maybe_copy(f, lru_cached, '__module__')
+ _maybe_copy(f, lru_cached, '__name__')
+ _maybe_copy(f, lru_cached, '__doc__')
return lru_cached