summaryrefslogtreecommitdiff
path: root/compressor/utils
diff options
context:
space:
mode:
authorJannis Leidel <jannis@leidel.info>2011-04-16 19:42:04 +0200
committerJannis Leidel <jannis@leidel.info>2011-04-16 19:43:36 +0200
commit536e5af00424ababc4b937be84389a2abc522c1f (patch)
treee93214687f3b2ef0a147047d69e072bb38404b95 /compressor/utils
parent5f6e5aec3bddc8f5d0c0073f4fd3bbaf1100bed0 (diff)
downloaddjango-compressor-536e5af00424ababc4b937be84389a2abc522c1f.tar.gz
Moved cached_property to compressor.utils.cache.
Diffstat (limited to 'compressor/utils')
-rw-r--r--compressor/utils/__init__.py66
-rw-r--r--compressor/utils/cache.py66
2 files changed, 66 insertions, 66 deletions
diff --git a/compressor/utils/__init__.py b/compressor/utils/__init__.py
index 5489f1c..bf419ae 100644
--- a/compressor/utils/__init__.py
+++ b/compressor/utils/__init__.py
@@ -60,72 +60,6 @@ def walk(root, topdown=True, onerror=None, followlinks=False):
for link_dirpath, link_dirnames, link_filenames in walk(p):
yield (link_dirpath, link_dirnames, link_filenames)
-class cached_property(object):
- """Property descriptor that caches the return value
- of the get function.
-
- *Examples*
-
- .. code-block:: python
-
- @cached_property
- def connection(self):
- return Connection()
-
- @connection.setter # Prepares stored value
- def connection(self, value):
- if value is None:
- raise TypeError("Connection must be a connection")
- return value
-
- @connection.deleter
- def connection(self, value):
- # Additional action to do at del(self.attr)
- if value is not None:
- print("Connection %r deleted" % (value, ))
- """
- def __init__(self, fget=None, fset=None, fdel=None, doc=None):
- self.__get = fget
- self.__set = fset
- self.__del = fdel
- self.__doc__ = doc or fget.__doc__
- self.__name__ = fget.__name__
- self.__module__ = fget.__module__
-
- def __get__(self, obj, type=None):
- if obj is None:
- return self
- try:
- return obj.__dict__[self.__name__]
- except KeyError:
- value = obj.__dict__[self.__name__] = self.__get(obj)
- return value
-
- def __set__(self, obj, value):
- if obj is None:
- return self
- if self.__set is not None:
- value = self.__set(obj, value)
- obj.__dict__[self.__name__] = value
-
- def __delete__(self, obj):
- if obj is None:
- return self
- try:
- value = obj.__dict__.pop(self.__name__)
- except KeyError:
- pass
- else:
- if self.__del is not None:
- self.__del(obj, value)
-
- def setter(self, fset):
- return self.__class__(self.__get, fset, self.__del)
-
- def deleter(self, fdel):
- return self.__class__(self.__get, self.__set, fdel)
-
-
"""Advanced string formatting for Python >= 2.4.
An implementation of the advanced string formatting (PEP 3101).
diff --git a/compressor/utils/cache.py b/compressor/utils/cache.py
new file mode 100644
index 0000000..daa2262
--- /dev/null
+++ b/compressor/utils/cache.py
@@ -0,0 +1,66 @@
+
+
+class cached_property(object):
+ """Property descriptor that caches the return value
+ of the get function.
+
+ *Examples*
+
+ .. code-block:: python
+
+ @cached_property
+ def connection(self):
+ return Connection()
+
+ @connection.setter # Prepares stored value
+ def connection(self, value):
+ if value is None:
+ raise TypeError("Connection must be a connection")
+ return value
+
+ @connection.deleter
+ def connection(self, value):
+ # Additional action to do at del(self.attr)
+ if value is not None:
+ print("Connection %r deleted" % (value, ))
+ """
+ def __init__(self, fget=None, fset=None, fdel=None, doc=None):
+ self.__get = fget
+ self.__set = fset
+ self.__del = fdel
+ self.__doc__ = doc or fget.__doc__
+ self.__name__ = fget.__name__
+ self.__module__ = fget.__module__
+
+ def __get__(self, obj, type=None):
+ if obj is None:
+ return self
+ try:
+ return obj.__dict__[self.__name__]
+ except KeyError:
+ value = obj.__dict__[self.__name__] = self.__get(obj)
+ return value
+
+ def __set__(self, obj, value):
+ if obj is None:
+ return self
+ if self.__set is not None:
+ value = self.__set(obj, value)
+ obj.__dict__[self.__name__] = value
+
+ def __delete__(self, obj):
+ if obj is None:
+ return self
+ try:
+ value = obj.__dict__.pop(self.__name__)
+ except KeyError:
+ pass
+ else:
+ if self.__del is not None:
+ self.__del(obj, value)
+
+ def setter(self, fset):
+ return self.__class__(self.__get, fset, self.__del)
+
+ def deleter(self, fdel):
+ return self.__class__(self.__get, self.__set, fdel)