Gaudi Framework, version v24r2

Home   Generated: Wed Dec 4 2013
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Public Member Functions | Public Attributes | Properties | Private Attributes | List of all members
GaudiKernel.PropertyProxy.PropertyProxy Class Reference
Inheritance diagram for GaudiKernel.PropertyProxy.PropertyProxy:
Inheritance graph
[legend]
Collaboration diagram for GaudiKernel.PropertyProxy.PropertyProxy:
Collaboration graph
[legend]

Public Member Functions

def __init__
 
def setDefault
 
def getDefault
 
def fullPropertyName
 
def __get__
 
def __set__
 
def __delete__
 

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 
63  def __init__( self, descr, docString=None, default=None ):
64  self.history = {}
65  self.descr = descr
66  if docString:
67  self.__doc__ = docString
68  if default is not None:
69  self.default = default
70 

Member Function Documentation

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

Definition at line 144 of file PropertyProxy.py.

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

Definition at line 82 of file PropertyProxy.py.

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

Definition at line 96 of file PropertyProxy.py.

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

Definition at line 79 of file PropertyProxy.py.

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

Definition at line 74 of file PropertyProxy.py.

74 
75  def getDefault( self ):
76  return self.__default
def GaudiKernel.PropertyProxy.PropertyProxy.setDefault (   self,
  value 
)

Definition at line 71 of file PropertyProxy.py.

71 
72  def setDefault( self, value ):
73  self.__default = value

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:
Generated at Wed Dec 4 2013 14:33:22 for Gaudi Framework, version v24r2 by Doxygen version 1.8.2 written by Dimitri van Heesch, © 1997-2004