code: def missing_tags(self, existing_sdists=None):
          
          if existing_sdists is None:
              existing_sdists = []
          logger.debug("Existing sdists: %s", existing_sdists)
          if self._missing_tags is None:
              missing = []
              existing_sdists = sorted_versions(set(existing_sdists))
              available = set(self.wrapper.vcs.available_tags())
              available_tags = sorted_versions(available)
              available_tags.reverse()
              for tag in available_tags:
                  if tag.is_prerelease:
                      logger.warn("Pre-release marker in tag: %s, ignoring", tag)
                      continue
                  if tag in existing_sdists:
                      logger.debug(
                          "Tag %s is already available, not looking further",
                          tag)
                      break
                  else:
                      missing.append(tag)
                      logger.debug("Tag %s is missing", tag)
              missing.reverse()
              # Convert back to proper strings:
              mapping = {}
              for tag in available:
                  mapping[parse_version(tag)] = tag
              self._missing_tags = [mapping[tag] for tag in missing]
          logger.debug("Missing sdists: %s", self._missing_tags)
          return self._missing_tags
docs: Return difference between existing sdists and available tags.