summaryrefslogtreecommitdiff
path: root/psutil/_compat.py
diff options
context:
space:
mode:
authorGiampaolo Rodola' <g.rodola@gmail.com>2011-03-23 16:36:27 +0000
committerGiampaolo Rodola' <g.rodola@gmail.com>2011-03-23 16:36:27 +0000
commitb40c16e9904cf443d83515e2f2ad0046b4d221fa (patch)
treeac109d9dc2f76d8b1ddb895bd14a7a33ffbcfdf5 /psutil/_compat.py
parente85b92c0a5d777fc6242d4dad6f9eaa6e2692d06 (diff)
downloadpsutil-b40c16e9904cf443d83515e2f2ad0046b4d221fa.tar.gz
- linux: close fd
- linux: when parsing /proc files and the desired line is not found raise RuntimeError instead of returning None - rewrite _compat.property to support deleters and docstrings
Diffstat (limited to 'psutil/_compat.py')
-rw-r--r--psutil/_compat.py33
1 files changed, 27 insertions, 6 deletions
diff --git a/psutil/_compat.py b/psutil/_compat.py
index 6469552b..1c746aee 100644
--- a/psutil/_compat.py
+++ b/psutil/_compat.py
@@ -10,6 +10,7 @@ __all__ = ["namedtuple", "property"]
from operator import itemgetter as _itemgetter
from keyword import iskeyword as _iskeyword
import sys as _sys
+import __builtin__
try:
from collections import namedtuple
@@ -114,17 +115,37 @@ except ImportError:
return result
+
# dirty hack to support property.setter on python < 2.6
property = property
if not hasattr(property, "setter"):
+
class property(property):
- def setter(self, value):
+
+ def __init__(self, fget, *args, **kwargs):
+ self.__doc__ = fget.__doc__
+ super(property, self).__init__(fget, *args, **kwargs)
+
+ def setter(self, fset):
cls_ns = _sys._getframe(1).f_locals
for k, v in cls_ns.iteritems():
- if v == self:
- name = k
- break
- cls_ns[name] = property(self.fget, value, self.fdel, self.__doc__)
- return cls_ns[name]
+ if v == self:
+ propname = k
+ break
+ cls_ns[propname] = property(self.fget, fset,
+ self.fdel, self.__doc__)
+ return cls_ns[propname]
+
+ def deleter(self, fdel):
+ cls_ns = _sys._getframe(1).f_locals
+ for k, v in cls_ns.iteritems():
+ if v == self:
+ propname = k
+ break
+ cls_ns[propname] = property(self.fget, self.fset,
+ fdel, self.__doc__)
+ return cls_ns[propname]
+
+ __builtin__.property = property