LSSTApplications
10.0+286,10.0+36,10.0+46,10.0-2-g4f67435,10.1+152,10.1+37,11.0,11.0+1,11.0-1-g47edd16,11.0-1-g60db491,11.0-1-g7418c06,11.0-2-g04d2804,11.0-2-g68503cd,11.0-2-g818369d,11.0-2-gb8b8ce7
LSSTDataManagementBasePackage
Main Page
Related Pages
Modules
Namespaces
Classes
Files
Examples
File List
File Members
home
lsstsw
stack
Linux64
daf_persistence
11.0-1-g7418c06
python
lsst
daf
persistence
readProxy.py
Go to the documentation of this file.
1
#!/usr/bin/env python
2
3
#
4
# LSST Data Management System
5
# Copyright 2008, 2009, 2010 LSST Corporation.
6
#
7
# This product includes software developed by the
8
# LSST Project (http://www.lsst.org/).
9
#
10
# This program is free software: you can redistribute it and/or modify
11
# it under the terms of the GNU General Public License as published by
12
# the Free Software Foundation, either version 3 of the License, or
13
# (at your option) any later version.
14
#
15
# This program is distributed in the hope that it will be useful,
16
# but WITHOUT ANY WARRANTY; without even the implied warranty of
17
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
# GNU General Public License for more details.
19
#
20
# You should have received a copy of the LSST License Statement and
21
# the GNU General Public License along with this program. If not,
22
# see <http://www.lsstcorp.org/LegalNotices/>.
23
#
24
25
# -*- python -*-
26
27
"""This module defines the ReadProxy class."""
28
29
class
ReadProxy
(object):
30
"""ReadProxy provides a lazy-loading object that is initialized by a
31
callback function set in ReadProxy's constructor. Adapted from
32
peak.util.proxies.LazyProxy, which was written by Phillip J. Eby
33
(peak@eby-sarna.com)."""
34
35
__slots__ = (
'__cache__'
,
'__callback__'
,
'__subject__'
)
36
37
def
__init__
(self, func):
38
set_callback
(self, func)
39
40
def
__getattribute__
(self, attr, oga=object.__getattribute__):
41
subject = oga(self,
'__subject__'
)
42
if
attr ==
'__subject__'
:
43
return
subject
44
return
getattr(subject, attr)
45
46
def
__setattr__
(self, attr, val):
47
setattr(self.__subject__, attr, val)
48
49
def
__delattr__
(self, attr):
50
delattr(self.__subject__, attr)
51
52
def
__nonzero__
(self):
53
return
bool(self.__subject__)
54
55
def
__getitem__
(self, arg):
56
return
self.__subject__[arg]
57
58
def
__setitem__
(self, arg, val):
59
self.__subject__[arg] = val
60
61
def
__delitem__
(self, arg):
62
del self.__subject__[arg]
63
64
def
__getslice__
(self, i, j):
65
return
self.__subject__[i:j]
66
67
def
__setslice__
(self, i, j, val):
68
self.__subject__[i:j] = val
69
70
def
__delslice__
(self, i, j):
71
del self.__subject__[i:j]
72
73
def
__contains__
(self, ob):
74
return
ob
in
self.__subject__
75
76
for
name
in
'repr str hash len abs complex int long float iter oct hex'
.split():
77
exec
"def __%s__(self): return %s(self.__subject__)"
% (name, name)
78
79
for
name
in
'cmp'
,
'coerce'
,
'divmod'
:
80
exec
"def __%s__(self, ob): return %s(self.__subject__, ob)"
% (name,
81
name)
82
83
for
name, op
in
[
84
(
'lt'
,
'<'
), (
'gt'
,
'>'
), (
'le'
,
'<='
), (
'ge'
,
'>='
),
85
(
'eq'
,
'=='
), (
'ne'
,
'!='
)
86
]:
87
exec
"def __%s__(self, ob): return self.__subject__ %s ob"
% (name, op)
88
89
for
name, op
in
[(
'neg'
,
'-'
), (
'pos'
,
'+'
), (
'invert'
,
'~'
)]:
90
exec
"def __%s__(self): return %s self.__subject__"
% (name, op)
91
92
for
name, op
in
[
93
(
'or'
,
'|'
), (
'and'
,
'&'
), (
'xor'
,
'^'
),
94
(
'lshift'
,
'<<'
), (
'rshift'
,
'>>'
),
95
(
'add'
,
'+'
), (
'sub'
,
'-'
), (
'mul'
,
'*'
), (
'div'
,
'/'
),
96
(
'mod'
,
'%'
), (
'truediv'
,
'/'
), (
'floordiv'
,
'//'
)
97
]:
98
exec (
99
"def __%(name)s__(self,ob):\n"
100
" return self.__subject__ %(op)s ob\n"
101
"\n"
102
"def __r%(name)s__(self,ob):\n"
103
" return ob %(op)s self.__subject__\n"
104
"\n"
105
"def __i%(name)s__(self,ob):\n"
106
" self.__subject__ %(op)s=ob\n"
107
" return self\n"
108
) % locals()
109
110
del name, op
111
112
# Oddball signatures
113
114
def
__rdivmod__
(self, ob):
115
return
divmod(ob, self.__subject__)
116
117
def
__pow__
(self, *args):
118
return
pow(self.__subject__, *args)
119
120
def
__ipow__
(self,ob):
121
self.__subject__ **= ob
122
return
self
123
124
def
__rpow__
(self,ob):
125
return
pow(ob, self.__subject__)
126
127
get_callback = ReadProxy.__callback__.__get__
128
set_callback = ReadProxy.__callback__.__set__
129
get_cache = ReadProxy.__cache__.__get__
130
set_cache = ReadProxy.__cache__.__set__
131
132
def
__subject__
(self, get_cache=get_cache, set_cache=set_cache):
133
try
:
134
return
get_cache
(self)
135
except
AttributeError:
136
set_cache
(self,
get_callback
(self)())
137
return
get_cache
(self)
138
139
ReadProxy.__subject__ = property(__subject__, set_cache)
140
del __subject__
lsst::daf::persistence.readProxy.ReadProxy.__nonzero__
def __nonzero__
Definition:
readProxy.py:52
lsst::daf::persistence.readProxy.ReadProxy.__getattribute__
def __getattribute__
Definition:
readProxy.py:40
lsst::daf::persistence.readProxy.ReadProxy.__rpow__
def __rpow__
Definition:
readProxy.py:124
lsst::daf::persistence.readProxy.__subject__
def __subject__
Definition:
readProxy.py:132
lsst::daf::persistence.readProxy.ReadProxy.__rdivmod__
def __rdivmod__
Definition:
readProxy.py:114
lsst::daf::persistence.readProxy.get_cache
get_cache
Definition:
readProxy.py:129
lsst::daf::persistence.readProxy.set_callback
set_callback
Definition:
readProxy.py:128
lsst::daf::persistence.readProxy.ReadProxy.__delitem__
def __delitem__
Definition:
readProxy.py:61
lsst::daf::persistence.readProxy.get_callback
get_callback
Definition:
readProxy.py:127
lsst::daf::persistence.readProxy.ReadProxy.__delattr__
def __delattr__
Definition:
readProxy.py:49
lsst::daf::persistence.readProxy.ReadProxy.__getslice__
def __getslice__
Definition:
readProxy.py:64
lsst::daf::persistence.readProxy.ReadProxy.__contains__
def __contains__
Definition:
readProxy.py:73
lsst::daf::persistence.readProxy.ReadProxy.__init__
def __init__
Definition:
readProxy.py:37
lsst::daf::persistence.readProxy.ReadProxy.__setattr__
def __setattr__
Definition:
readProxy.py:46
lsst::daf::persistence.readProxy.ReadProxy.__setitem__
def __setitem__
Definition:
readProxy.py:58
lsst::daf::persistence.readProxy.set_cache
set_cache
Definition:
readProxy.py:130
lsst::daf::persistence.readProxy.ReadProxy.__pow__
def __pow__
Definition:
readProxy.py:117
lsst::daf::persistence.readProxy.ReadProxy.__ipow__
def __ipow__
Definition:
readProxy.py:120
lsst::daf::persistence.readProxy.ReadProxy.__getitem__
def __getitem__
Definition:
readProxy.py:55
lsst::daf::persistence.readProxy.ReadProxy.__setslice__
def __setslice__
Definition:
readProxy.py:67
lsst::daf::persistence.readProxy.ReadProxy.__delslice__
def __delslice__
Definition:
readProxy.py:70
lsst::daf::persistence.readProxy.ReadProxy
Definition:
readProxy.py:29
Generated on Thu Sep 24 2015 02:29:19 for LSSTApplications by
1.8.5