Removed Env.__getattr__(); Env no longer accepts callables for values (no more dynamic/lazy values)

This commit is contained in:
Jason Gerard DeRose 2008-12-22 15:51:54 -07:00
parent 5b637f6a18
commit c070d390e9
2 changed files with 17 additions and 40 deletions

View File

@ -176,16 +176,6 @@ class Env(object):
def __islocked__(self):
return self.__locked
def __getattr__(self, name):
"""
Return the attribute named ``name``.
"""
if name in self.__d:
return self[name]
raise AttributeError('%s.%s' %
(self.__class__.__name__, name)
)
def __setattr__(self, name, value):
"""
Set the attribute named ``name`` to ``value``.
@ -204,12 +194,7 @@ class Env(object):
"""
Return the value corresponding to ``key``.
"""
if key not in self.__d:
raise KeyError(key)
value = self.__d[key]
if callable(value):
return value()
return value
return self.__d[key]
def __setitem__(self, key, value):
"""
@ -224,17 +209,16 @@ class Env(object):
raise AttributeError('cannot overwrite %s.%s with %r' %
(self.__class__.__name__, key, value)
)
if not callable(value):
if isinstance(value, basestring):
value = str(value.strip())
if value.lower() == 'true':
value = True
elif value.lower() == 'false':
value = False
elif value.isdigit():
value = int(value)
assert type(value) in (str, int, bool)
object.__setattr__(self, key, value)
if isinstance(value, basestring):
value = str(value.strip())
if value.lower() == 'true':
value = True
elif value.lower() == 'false':
value = False
elif value.isdigit():
value = int(value)
assert type(value) in (str, int, bool)
object.__setattr__(self, key, value)
self.__d[key] = value
def __contains__(self, key):

View File

@ -374,23 +374,16 @@ class test_Env(ClassChecker):
e = raises(StandardError, o.__lock__)
assert str(e) == 'Env.__lock__() already called'
def test_getattr(self):
def test_getitem(self):
"""
Test the `ipalib.config.Env.__getattr__` method.
Also tests the `ipalib.config.Env.__getitem__` method.
Test the `ipalib.config.Env.__getitem__` method.
"""
o = self.cls()
value = 'some value'
o.key = value
assert o.key is value
assert o['key'] is value
o.call = lambda: 'whatever'
assert o.call == 'whatever'
assert o['call'] == 'whatever'
for name in ('one', 'two'):
e = raises(AttributeError, getattr, o, name)
assert str(e) == 'Env.%s' % name
e = raises(KeyError, getitem, o, name)
assert str(e) == repr(name)
@ -402,9 +395,9 @@ class test_Env(ClassChecker):
"""
items = [
('one', 1),
('two', lambda: 2),
('two', 2),
('three', 3),
('four', lambda: 4),
('four', 4),
]
for setvar in (setattr, setitem):
o = self.cls()
@ -457,9 +450,9 @@ class test_Env(ClassChecker):
o = self.cls()
items = [
('one', 1),
('two', lambda: 2),
('two', 2),
('three', 3),
('four', lambda: 4),
('four', 4),
]
for (key, value) in items:
assert key not in o