code: def filename(self):
          '''Returns the filename to be used for saving the repo file.
  
          The filename is derived from the repo url by injecting a suffix
          after the name and before the file extension. This suffix is a
          partial md5 checksum of the full repourl. This avoids multiple
          repos from being written to the same file.
          '''
          urlpath = unquote(urlsplit(self.repourl, allow_fragments=False).path)
          basename = os.path.basename(urlpath)
          if not basename.endswith(REPO_SUFFIX):
              basename += REPO_SUFFIX
          if self.add_hash:
              suffix = '-' + md5(self.repourl.encode('utf-8')).hexdigest()[:5]
          else:
              suffix = ''
          final_name = suffix.join(os.path.splitext(basename))
          return final_namf filename(self):
          '''Returns the filename to be used for saving the repo file.
  
          The filename is derived from the repo url by injecting a suffix
          after the name and before the file extension. This suffix is a
          partial md5 checksum of the full repourl. This avoids multiple
          repos from being written to the same file.
          '''
          urlpath = unquote(urlsplit(self.repourl, allow_fragments=False).path)
          basename = os.path.basename(urlpath)
          if not basename.endswith(REPO_SUFFIX):
              basename += REPO_SUFFIX
          if self.add_hash:
              suffix = '-' + md5(self.repourl.encode('utf-8')).hexdigest()[:5]
          else:
              suffix = ''
          final_name = suffix.join(os.path.splitext(basename))
          return final_name
docs: Returns the filename to be used for saving the repo file.
  
          The filename is derived from the repo url by injecting a suffix
          after the name and before the file extension. This suffix is a
          partial md5 checksum of the full repourl. This avoids multiple
          repos from being written to the same file.