docs: def getid(self, language=None, version=None):
          """
          Return an identification string which uniquely names a manifest.
  
          This string is a combination of the manifest's processorArchitecture, 
          name, publicKeyToken, version and language.
          
          Arguments:
          version (tuple or list of integers) - If version is given, use it 
                                                instead of the manifest's 
                                                version.
          
          """
          if not self.name:
              logger.warn("Assembly metadata incomplete")
              return ""
          id = []
          if self.processorArchitecture:
              id.append(self.processorArchitecture)
          id.append(self.name)
          if self.publicKeyToken:
              id.append(self.publicKeyToken)
          if version or self.version:
              id.append(".".join([str(i) for i in version or self.version]))
          if not language:
              language = self.getlanguage()
          if language:
              id.append(language)
          return "_".join(id)