diff options
author | Jason Gerard DeRose <jderose@redhat.com> | 2008-08-07 00:21:50 +0000 |
---|---|---|
committer | Jason Gerard DeRose <jderose@redhat.com> | 2008-08-07 00:21:50 +0000 |
commit | 19dbd5714167cca0cd48cfd73052a6d896ebc5a1 (patch) | |
tree | 5238f0101bcab663e93fc735e905ef5df766a91d /ipalib/plugable.py | |
parent | 7335af8a9eb4b5ab6a0884f686a51a050464320b (diff) | |
download | freeipa.git-19dbd5714167cca0cd48cfd73052a6d896ebc5a1.tar.gz freeipa.git-19dbd5714167cca0cd48cfd73052a6d896ebc5a1.tar.xz freeipa.git-19dbd5714167cca0cd48cfd73052a6d896ebc5a1.zip |
69: Made Proxy.base a private attribute; updated unit tests
Diffstat (limited to 'ipalib/plugable.py')
-rw-r--r-- | ipalib/plugable.py | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/ipalib/plugable.py b/ipalib/plugable.py index 91a9143d..9cf313fa 100644 --- a/ipalib/plugable.py +++ b/ipalib/plugable.py @@ -124,38 +124,41 @@ class ReadOnly(object): class Proxy(ReadOnly): __slots__ = ( - 'base', - 'name', + '__base', '__target', '__name_attr', + '__public', + 'name', ) + def __init__(self, base, target, name_attr='name'): if not inspect.isclass(base): raise TypeError('arg1 must be a class, got %r' % base) if not isinstance(target, base): raise ValueError('arg2 must be instance of arg1, got %r' % target) - object.__setattr__(self, 'base', base) + object.__setattr__(self, '_Proxy__base', base) object.__setattr__(self, '_Proxy__target', target) object.__setattr__(self, '_Proxy__name_attr', name_attr) + object.__setattr__(self, '_Proxy__public', base.public) + object.__setattr__(self, 'name', getattr(target, name_attr)) - # Check base.public - assert type(self.base.public) is frozenset + # Check __public + assert type(self.__public) is frozenset # Check name - object.__setattr__(self, 'name', getattr(target, name_attr)) check_identifier(self.name) def __iter__(self): - for name in sorted(self.base.public): + for name in sorted(self.__public): yield name def __getitem__(self, key): - if key in self.base.public: + if key in self.__public: return getattr(self.__target, key) raise KeyError('no proxy attribute %r' % key) def __getattr__(self, name): - if name in self.base.public: + if name in self.__public: return getattr(self.__target, name) raise AttributeError('no proxy attribute %r' % name) @@ -163,12 +166,12 @@ class Proxy(ReadOnly): return self['__call__'](*args, **kw) def _clone(self, name_attr): - return self.__class__(self.base, self.__target, name_attr) + return self.__class__(self.__base, self.__target, name_attr) def __repr__(self): return '%s(%s, %r, %r)' % ( self.__class__.__name__, - self.base.__name__, + self.__base.__name__, self.__target, self.__name_attr, ) |