parameters: (self,name0,val)
docstring: Overloaded generic set method, disallowing non-existing properties being set.
  
             It also provides common checks for generic properties groups
             and records all properties changed
docstring_summary: Overloaded generic set method, disallowing non-existing properties being set.
docstring_tokens: Overloaded generic set method disallowing non - existing properties being set .
function: def __setattr__(self,name0,val):
          """ Overloaded generic set method, disallowing non-existing properties being set.
  
             It also provides common checks for generic properties groups
             and records all properties changed
          """
  
          # Let's set private properties directly. Normally, nobody should try
          # to set them through PropertyManager interface
          #if name0[:2]=='_P':
          #    self.__dict__[name0] = val
          #    return
          ##end
          if name0 in self.__subst_dict:
              name = self.__subst_dict[name0]
          else:
              name =name0
          #end
  
          # replace common substitutions for string value
          if isinstance(val, str):
              val1 = val.lower()
              if val1 == 'none' or len(val1) == 0:
                  val = None
              if val1 == 'default':
                  val = self.getDefaultParameterValue(name0)
             # boolean property?
              if val1 in ['true','yes']:
                  val = True
              if val1 in ['false','no']:
                  val = False
  
          if isinstance(val, list) and len(val) == 0:
              val = None
  
          # set property value:
          if name in self.__descriptors:
              super(PropertyManager,self).__setattr__(name,val)
          else:
              prop_helpers.gen_setter(self.__dict__,name,val)
  
          # record the fact that the property have changed
          self.__changed_properties.add(name)
function_tokens: def __setattr__ ( self , name0 , val ) : # Let's set private properties directly. Normally, nobody should try # to set them through PropertyManager interface #if name0[:2]=='_P': #    self.__dict__[name0] = val #    return ##end if name0 in self . __subst_dict : name = self . __subst_dict [ name0 ] else : name = name0 #end # replace common substitutions for string value if isinstance ( val , str ) : val1 = val . lower ( ) if val1 == 'none' or len ( val1 ) == 0 : val = None if val1 == 'default' : val = self . getDefaultParameterValue ( name0 ) # boolean property? if val1 in [ 'true' , 'yes' ] : val = True if val1 in [ 'false' , 'no' ] : val = False if isinstance ( val , list ) and len ( val ) == 0 : val = None # set property value: if name in self . __descriptors : super ( PropertyManager , self ) . __setattr__ ( name , val ) else : prop_helpers . gen_setter ( self . __dict__ , name , val ) # record the fact that the property have changed self . __changed_properties . add ( name )