diff options
| author | Jannis Leidel <jannis@leidel.info> | 2011-04-16 19:42:04 +0200 |
|---|---|---|
| committer | Jannis Leidel <jannis@leidel.info> | 2011-04-16 19:43:36 +0200 |
| commit | 536e5af00424ababc4b937be84389a2abc522c1f (patch) | |
| tree | e93214687f3b2ef0a147047d69e072bb38404b95 /compressor/utils | |
| parent | 5f6e5aec3bddc8f5d0c0073f4fd3bbaf1100bed0 (diff) | |
| download | django-compressor-536e5af00424ababc4b937be84389a2abc522c1f.tar.gz | |
Moved cached_property to compressor.utils.cache.
Diffstat (limited to 'compressor/utils')
| -rw-r--r-- | compressor/utils/__init__.py | 66 | ||||
| -rw-r--r-- | compressor/utils/cache.py | 66 |
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) |
