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

View File

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