27"""This module defines the ReadProxy class."""
29from .persistence
import ReadProxyBase
33 """ReadProxy provides a lazy-loading object that is initialized by a
34 callback function set in ReadProxy
's constructor. Adapted from
35 peak.util.proxies.LazyProxy, which was written by Phillip J. Eby
36 (peak@eby-sarna.com).
"""
38 __slots__ = ('__cache__',
'__callback__')
41 ReadProxyBase.__init__(self)
45 getattr(self.__subject__, attr)
48 setattr(self.__subject__, attr, val)
51 delattr(self.__subject__, attr)
54 return bool(self.__subject__)
57 return self.__subject__[arg]
60 self.__subject__[arg] = val
63 del self.__subject__[arg]
66 return self.__subject__[i:j]
69 self.__subject__[i:j] = val
72 del self.__subject__[i:j]
75 return ob
in self.__subject__
77 for name
in 'repr str hash len abs complex int long float iter oct hex'.split():
78 exec(
"def __%s__(self): return %s(self.__subject__)" % (name, name))
80 for name
in 'cmp',
'coerce',
'divmod':
81 exec(
"def __%s__(self, ob): return %s(self.__subject__, ob)" % (name,
85 (
'lt',
'<'), (
'gt',
'>'), (
'le',
'<='), (
'ge',
'>='),
86 (
'eq',
'=='), (
'ne',
'!=')
88 exec(
"def __%s__(self, ob): return self.__subject__ %s ob" % (name, op))
90 for name, op
in [(
'neg',
'-'), (
'pos',
'+'), (
'invert',
'~')]:
91 exec(
"def __%s__(self): return %s self.__subject__" % (name, op))
94 (
'or',
'|'), (
'and',
'&'), (
'xor',
'^'),
95 (
'lshift',
'<<'), (
'rshift',
'>>'),
96 (
'add',
'+'), (
'sub',
'-'), (
'mul',
'*'), (
'div',
'/'),
97 (
'mod',
'%'), (
'truediv',
'/'), (
'floordiv',
'//')
100 "def __%(name)s__(self,ob):\n"
101 " return self.__subject__ %(op)s ob\n"
103 "def __r%(name)s__(self,ob):\n"
104 " return ob %(op)s self.__subject__\n"
106 "def __i%(name)s__(self,ob):\n"
107 " self.__subject__ %(op)s=ob\n"
116 return divmod(ob, self.__subject__)
119 return pow(self.__subject__, *args)
122 self.__subject__ **= ob
126 return pow(ob, self.__subject__)
129get_callback = ReadProxy.__callback__.__get__
130set_callback = ReadProxy.__callback__.__set__
131get_cache = ReadProxy.__cache__.__get__
132set_cache = ReadProxy.__cache__.__set__
135def _subject(self, get_cache=get_cache, set_cache=set_cache):
138 except AttributeError:
143ReadProxy.__subject__ = property(_subject, set_cache)
def __delslice__(self, i, j)
def __setattr__(self, attr, val)
def __contains__(self, ob)
def __getslice__(self, i, j)
def __delitem__(self, arg)
def __rdivmod__(self, ob)
def __delattr__(self, attr)
def __setslice__(self, i, j, val)
def __getattr__(self, attr)
def __setitem__(self, arg, val)
def __getitem__(self, arg)