docs: def sort_versions(versions=(), reverse=False, sep=u'.'):
      """Sort a list of version number strings.
  
      This function ensures that the package sorting based on number name is
      performed correctly when including alpha, dev rc1 etc...
      """
      if versions == []:
          return []
  
      digits = u'0123456789'
  
      def toint(x):
          try:
              n = int(x)
          except:
              n = x
          return n
      versions = list(versions)
      new_versions, alpha, sizes = [], set(), set()
  
      for item in versions:
          it = item.split(sep)
          temp = []
          for i in it:
              x = toint(i)
              if not isinstance(x, int):
                  x = u(x)
                  middle = x.lstrip(digits).rstrip(digits)
                  tail = toint(x.lstrip(digits).replace(middle, u''))
                  head = toint(x.rstrip(digits).replace(middle, u''))
                  middle = toint(middle)
                  res = [head, middle, tail]
                  while u'' in res:
                      res.remove(u'')
                  for r in res:
                      if is_unicode(r):
                          alpha.add(r)
              else:
                  res = [x]
              temp += res
          sizes.add(len(temp))
          new_versions.append(temp)
  
      # replace letters found by a negative number
      replace_dic = {}
      alpha = sorted(alpha, reverse=True)
      if len(alpha):
          replace_dic = dict(zip(alpha, list(range(-1, -(len(alpha)+1), -1))))
  
      # Complete with zeros based on longest item and replace alphas with number
      nmax = max(sizes)
      for i in range(len(new_versions)):
          item = []
          for z in new_versions[i]:
              if z in replace_dic:
                  item.append(replace_dic[z])
              else:
                  item.append(z)
  
          nzeros = nmax - len(item)
          item += [0]*nzeros
          item += [versions[i]]
          new_versions[i] = item
  
      new_versions = sorted(new_versions, reverse=reverse)
      return [n[-1] for n in new_versions]