code: def get_properties(self):
          
          with self.__lock:
              if self.__deleted:
                  raise ValueError("{0} has been deleted".format(self.__pid))
  
              elif not self.__updated:
                  # Fresh configuration
                  return None
  
              # Filter a copy of the properties
              props = self.__properties.copy()
  
              try:
                  del props[services.CONFIG_PROP_BUNDLE_LOCATION]
              except KeyError:
                  # Ignore
                  pass
  
              return props
docs: Return the properties of this Configuration object.
          The Dictionary object returned is a private copy for the caller and may
          be changed without influencing the stored configuration.
  
          If called just after the configuration is created and before update has
          been called, this method returns None.
  
          :return: A private copy of the properties for the caller or null.
                   These properties must not contain the "service.bundleLocation"
                   property. The value of this property may be obtained from the
                   get_bundle_location() method.