Skip to content

Commit

Permalink
shortpath the most common environ_getter case
Browse files Browse the repository at this point in the history
  • Loading branch information
maluke committed Jul 31, 2010
1 parent 842e1e1 commit e06fdc8
Showing 1 changed file with 8 additions and 6 deletions.
14 changes: 8 additions & 6 deletions webob/descriptors.py
Expand Up @@ -37,22 +37,24 @@ def __init__(self, key, default='', default_factory=None,
def __get__(self, obj, type=None):
if obj is None:
return self
if self.key not in obj.environ:
try:
return obj.environ[self.key]
except KeyError:
if self.default_factory:
val = obj.environ[self.key] = self.default_factory()
return val
else:
return self.default
return obj.environ[self.key]


def __set__(self, obj, value):
if not self.settable:
raise AttributeError("Read-only attribute (key %r)" % self.key)
if value is None:
if self.key in obj.environ:
del obj.environ[self.key]
else:
if value is not None:
obj.environ[self.key] = value
elif self.key in obj.environ:
del obj.environ[self.key]


def __delete__(self, obj):
if not self.deletable:
Expand Down

0 comments on commit e06fdc8

Please sign in to comment.