diff options
author | Tres Seaver <tseaver@palladion.com> | 2014-02-02 11:10:08 -0500 |
---|---|---|
committer | Tres Seaver <tseaver@palladion.com> | 2014-02-02 11:10:08 -0500 |
commit | e2f3a4e3000ab98da9eeb929c87161b253a4fd31 (patch) | |
tree | c2331967f8536cf06e37fcda37b8fb056e5866cb | |
parent | e9bb2ae41cf95e859599f100f9e8f7731d7be40e (diff) | |
download | repoze-lru-e2f3a4e3000ab98da9eeb929c87161b253a4fd31.tar.gz |
Prefer 3-arg getattr() to catching AttributeError.
-rw-r--r-- | repoze/lru/__init__.py | 15 |
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 |