GaudiKernel.PropertyProxy.PropertyProxy Class Reference
Inheritance diagram for GaudiKernel.PropertyProxy.PropertyProxy:
Collaboration diagram for GaudiKernel.PropertyProxy.PropertyProxy:

Public Member Functions

def __init__
 
def setDefault (self, value)
 
def getDefault (self)
 
def fullPropertyName (self, obj)
 
def __get__
 
def __set__ (self, obj, value)
 
def __delete__ (self, obj)
 
def __init__
 
def setDefault (self, value)
 
def getDefault (self)
 
def fullPropertyName (self, obj)
 
def __get__
 
def __set__ (self, obj, value)
 
def __delete__ (self, obj)
 

Public Attributes

 history
 
 descr
 

Properties

 default = property( getDefault, setDefault )
 

Private Attributes

 __doc__
 
 __default
 

Detailed Description

Definition at line 61 of file PropertyProxy.py.

Constructor & Destructor Documentation

def GaudiKernel.PropertyProxy.PropertyProxy.__init__ (   self,
  descr,
  docString = None,
  default = None 
)

Definition at line 62 of file PropertyProxy.py.

62  def __init__( self, descr, docString=None, default=None ):
63  self.history = {}
64  self.descr = descr
65  if docString:
66  self.__doc__ = docString
67  if default is not None:
68  self.default = default
69 
70 
def GaudiKernel.PropertyProxy.PropertyProxy.__init__ (   self,
  descr,
  docString = None,
  default = None 
)

Definition at line 62 of file PropertyProxy.py.

62  def __init__( self, descr, docString=None, default=None ):
63  self.history = {}
64  self.descr = descr
65  if docString:
66  self.__doc__ = docString
67  if default is not None:
68  self.default = default
69 
70 

Member Function Documentation

def GaudiKernel.PropertyProxy.PropertyProxy.__delete__ (   self,
  obj 
)

Definition at line 144 of file PropertyProxy.py.

144  def __delete__( self, obj ):
145  if obj in self.history:
146  del self.history[ obj ]
147  self.descr.__delete__( obj )
148 
149 
150 
def GaudiKernel.PropertyProxy.PropertyProxy.__delete__ (   self,
  obj 
)

Definition at line 144 of file PropertyProxy.py.

144  def __delete__( self, obj ):
145  if obj in self.history:
146  del self.history[ obj ]
147  self.descr.__delete__( obj )
148 
149 
150 
def GaudiKernel.PropertyProxy.PropertyProxy.__get__ (   self,
  obj,
  type = None 
)

Definition at line 82 of file PropertyProxy.py.

82  def __get__( self, obj, type = None ):
83  try:
84  return self.descr.__get__( obj, type )
85  except AttributeError:
86  # special case for lists and dictionaries:
87  # allow default to work with on += and []
88  if self.__default.__class__ in [ list, dict ]:
89  self.descr.__set__( obj, self.__default.__class__(self.__default) )
90  return self.descr.__get__( obj, type )
91  else:
92  # for non lists (or dicts) return a reference to the default
93  #return self.__default
94  raise
95 
def GaudiKernel.PropertyProxy.PropertyProxy.__get__ (   self,
  obj,
  type = None 
)

Definition at line 82 of file PropertyProxy.py.

82  def __get__( self, obj, type = None ):
83  try:
84  return self.descr.__get__( obj, type )
85  except AttributeError:
86  # special case for lists and dictionaries:
87  # allow default to work with on += and []
88  if self.__default.__class__ in [ list, dict ]:
89  self.descr.__set__( obj, self.__default.__class__(self.__default) )
90  return self.descr.__get__( obj, type )
91  else:
92  # for non lists (or dicts) return a reference to the default
93  #return self.__default
94  raise
95 
def GaudiKernel.PropertyProxy.PropertyProxy.__set__ (   self,
  obj,
  value 
)

Definition at line 96 of file PropertyProxy.py.

96  def __set__( self, obj, value ):
97  # check value/property compatibility if possible
98  proptype, allowcompat = None, False
99  if hasattr( self, 'default' ):
100  proptype = type(self.default)
101  if self.descr.__name__ == 'OutputLevel': # old-style compat for Btag
102  allowcompat = True
103  elif obj in self.history:
104  proptype = type( self.history[ obj ][ 0 ] )
105  allowcompat = True
106 
107  # check if type known; allow special initializer for typed instances
108  # Do not perform the check for PropertyReference, should be delayed until
109  # binding (if ever done)
110  if proptype and proptype != type(None) and \
111  not derives_from(value, 'PropertyReference'):
112  try:
113  # check value itself
114  value = _isCompatible( proptype, value )
115 
116  # check element in case of list
117  if proptype == list:
118  try:
119  oldvec = self.descr.__get__( obj, type )
120  if oldvec:
121  tpo = type(oldvec[0])
122  for v in value:
123  _isCompatible( tpo, v )
124  except AttributeError:
125  # value not yet set
126  pass
127  except ValueError, e:
128  if allowcompat:
129  log.error( 'inconsistent value types for %s.%s (%s)' %\
130  (obj.getName(),self.descr.__name__,str(e)) )
131  else:
132  raise
133 
134  # allow a property to be set if we're in non-default mode, or if it
135  # simply hasn't been set before
136  if not obj._isInSetDefaults() or not obj in self.history:
137  # by convention, 'None' for default is used to designate objects setting
138  if hasattr( self, 'default' ) and self.default == None:
139  obj.__iadd__( value, self.descr ) # to establish hierarchy
140  else:
141  self.descr.__set__( obj, value )
142  self.history.setdefault( obj, [] ).append( value )
143 
def _isCompatible(tp, value)
def derives_from(derived, base)
string type
Definition: gaudirun.py:151
def GaudiKernel.PropertyProxy.PropertyProxy.__set__ (   self,
  obj,
  value 
)

Definition at line 96 of file PropertyProxy.py.

96  def __set__( self, obj, value ):
97  # check value/property compatibility if possible
98  proptype, allowcompat = None, False
99  if hasattr( self, 'default' ):
100  proptype = type(self.default)
101  if self.descr.__name__ == 'OutputLevel': # old-style compat for Btag
102  allowcompat = True
103  elif obj in self.history:
104  proptype = type( self.history[ obj ][ 0 ] )
105  allowcompat = True
106 
107  # check if type known; allow special initializer for typed instances
108  # Do not perform the check for PropertyReference, should be delayed until
109  # binding (if ever done)
110  if proptype and proptype != type(None) and \
111  not derives_from(value, 'PropertyReference'):
112  try:
113  # check value itself
114  value = _isCompatible( proptype, value )
115 
116  # check element in case of list
117  if proptype == list:
118  try:
119  oldvec = self.descr.__get__( obj, type )
120  if oldvec:
121  tpo = type(oldvec[0])
122  for v in value:
123  _isCompatible( tpo, v )
124  except AttributeError:
125  # value not yet set
126  pass
127  except ValueError, e:
128  if allowcompat:
129  log.error( 'inconsistent value types for %s.%s (%s)' %\
130  (obj.getName(),self.descr.__name__,str(e)) )
131  else:
132  raise
133 
134  # allow a property to be set if we're in non-default mode, or if it
135  # simply hasn't been set before
136  if not obj._isInSetDefaults() or not obj in self.history:
137  # by convention, 'None' for default is used to designate objects setting
138  if hasattr( self, 'default' ) and self.default == None:
139  obj.__iadd__( value, self.descr ) # to establish hierarchy
140  else:
141  self.descr.__set__( obj, value )
142  self.history.setdefault( obj, [] ).append( value )
143 
def _isCompatible(tp, value)
def derives_from(derived, base)
string type
Definition: gaudirun.py:151
def GaudiKernel.PropertyProxy.PropertyProxy.fullPropertyName (   self,
  obj 
)

Definition at line 79 of file PropertyProxy.py.

79  def fullPropertyName( self, obj ):
80  return (obj.getJobOptName() or obj.getName()) + '.' + self.descr.__name__
81 
def GaudiKernel.PropertyProxy.PropertyProxy.fullPropertyName (   self,
  obj 
)

Definition at line 79 of file PropertyProxy.py.

79  def fullPropertyName( self, obj ):
80  return (obj.getJobOptName() or obj.getName()) + '.' + self.descr.__name__
81 
def GaudiKernel.PropertyProxy.PropertyProxy.getDefault (   self)

Definition at line 74 of file PropertyProxy.py.

def GaudiKernel.PropertyProxy.PropertyProxy.getDefault (   self)

Definition at line 74 of file PropertyProxy.py.

def GaudiKernel.PropertyProxy.PropertyProxy.setDefault (   self,
  value 
)

Definition at line 71 of file PropertyProxy.py.

def GaudiKernel.PropertyProxy.PropertyProxy.setDefault (   self,
  value 
)

Definition at line 71 of file PropertyProxy.py.

Member Data Documentation

GaudiKernel.PropertyProxy.PropertyProxy.__default
private

Definition at line 72 of file PropertyProxy.py.

GaudiKernel.PropertyProxy.PropertyProxy.__doc__
private

Definition at line 66 of file PropertyProxy.py.

GaudiKernel.PropertyProxy.PropertyProxy.descr

Definition at line 64 of file PropertyProxy.py.

GaudiKernel.PropertyProxy.PropertyProxy.history

Definition at line 63 of file PropertyProxy.py.

Property Documentation

GaudiKernel.PropertyProxy.PropertyProxy.default = property( getDefault, setDefault )
static

Definition at line 77 of file PropertyProxy.py.


The documentation for this class was generated from the following file: