code: def _create_config_signature(config):
          
          m = hashlib.sha1()
          m.update(config.working_directory.encode("utf-8"))
          for p in config.include_paths:
              m.update(p.encode("utf-8"))
          for p in config.define_symbols:
              m.update(p.encode("utf-8"))
          for p in config.undefine_symbols:
              m.update(p.encode("utf-8"))
          for p in config.cflags:
              m.update(p.encode("utf-8"))
          return m.digest()
docs: return the signature for a config object.
  
          The signature is computed as sha1 digest of the contents of
          working_directory, include_paths, define_symbols and
          undefine_symbols.
  
          :param config: Configuration object
          :type config: :class:`parser.xml_generator_configuration_t`
          :rtype: str